@equinor/fusion-framework-vite-plugin-spa 5.1.0 → 5.2.0
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 +9 -0
- package/dist/TelemetryAdapter-B6JH_RXA.js +91 -0
- package/dist/TelemetryAdapter-B6JH_RXA.js.map +1 -0
- package/dist/create-legacy-browser-delegate-B4z_676L.js +2862 -0
- package/dist/create-legacy-browser-delegate-B4z_676L.js.map +1 -0
- package/dist/enable-dev-server-tracing-DaQc5M9V.js +8137 -0
- package/dist/enable-dev-server-tracing-DaQc5M9V.js.map +1 -0
- package/dist/esm/html/bootstrap.js +17 -0
- package/dist/esm/html/bootstrap.js.map +1 -1
- package/dist/esm/html/enable-dev-server-tracing.js +94 -0
- package/dist/esm/html/enable-dev-server-tracing.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/html/bootstrap.js +115 -98
- package/dist/html/bootstrap.js.map +1 -1
- package/dist/index-BO_d5C6N.js +1570 -0
- package/dist/index-BO_d5C6N.js.map +1 -0
- package/dist/{index-Df9EZ6lh.js → index-CDpTfyge.js} +2 -2
- package/dist/index-CDpTfyge.js.map +1 -0
- package/dist/{module-DzjJ4gjy.js → module-Xg35JJRU.js} +16 -23
- package/dist/module-Xg35JJRU.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/html/enable-dev-server-tracing.d.ts +17 -0
- package/dist/types/html/html.d.ts +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +17 -6
- package/dist/index-Df9EZ6lh.js.map +0 -1
- package/dist/module-DzjJ4gjy.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BO_d5C6N.js","sources":["../../../../node_modules/.pnpm/@opentelemetry+core@2.11.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/core/build/esm/utils/timeout.js","../../../../node_modules/.pnpm/@opentelemetry+otlp-transformer@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/otlp-transformer/build/esm/logs/index.js","../../../../node_modules/.pnpm/@opentelemetry+api-logs@0.222.0/node_modules/@opentelemetry/api-logs/build/esm/types/LogRecord.js","../../../../node_modules/.pnpm/@opentelemetry+otlp-transformer@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/otlp-transformer/build/esm/logs/internal.js","../../../../node_modules/.pnpm/@opentelemetry+otlp-transformer@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/otlp-transformer/build/esm/logs/json/logs.js","../../../../node_modules/.pnpm/@opentelemetry+exporter-logs-otlp-http@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/exporter-logs-otlp-http/build/esm/semconv.js","../../../../node_modules/.pnpm/@opentelemetry+exporter-logs-otlp-http@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/exporter-logs-otlp-http/build/esm/platform/browser/OTLPLogExporter.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/utils/validation.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/LogRecordImpl.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/Logger.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/export/NoopLogRecordProcessor.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/MultiLogRecordProcessor.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/internal/utils.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/semconv.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/LoggerMetrics.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/version.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/internal/LoggerProviderSharedState.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/LoggerProvider.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/export/LogRecordProcessorMetrics.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/export/BatchLogRecordProcessorBase.js","../../../../node_modules/.pnpm/@opentelemetry+sdk-logs@0.222.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sdk-logs/build/esm/platform/browser/export/BatchLogRecordProcessor.js","../../../modules/telemetry/dist/esm/adapters/otlp/OtlpAdapter.js"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message) {\n super(message);\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n * <p> NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nexport function callWithTimeout(promise, timeout) {\n let timeoutHandle;\n const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n return Promise.race([promise, timeoutPromise]).then(result => {\n clearTimeout(timeoutHandle);\n return result;\n }, reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n });\n}\n//# sourceMappingURL=timeout.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @experimental this helper may receive breaking changes in minor versions, pin this package's version when using this constant\n */\nexport const LogsExporterMetricsHelper = {\n name: 'log',\n countItems: (request) => request.length,\n};\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport var SeverityNumber;\n(function (SeverityNumber) {\n SeverityNumber[SeverityNumber[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n SeverityNumber[SeverityNumber[\"TRACE\"] = 1] = \"TRACE\";\n SeverityNumber[SeverityNumber[\"TRACE2\"] = 2] = \"TRACE2\";\n SeverityNumber[SeverityNumber[\"TRACE3\"] = 3] = \"TRACE3\";\n SeverityNumber[SeverityNumber[\"TRACE4\"] = 4] = \"TRACE4\";\n SeverityNumber[SeverityNumber[\"DEBUG\"] = 5] = \"DEBUG\";\n SeverityNumber[SeverityNumber[\"DEBUG2\"] = 6] = \"DEBUG2\";\n SeverityNumber[SeverityNumber[\"DEBUG3\"] = 7] = \"DEBUG3\";\n SeverityNumber[SeverityNumber[\"DEBUG4\"] = 8] = \"DEBUG4\";\n SeverityNumber[SeverityNumber[\"INFO\"] = 9] = \"INFO\";\n SeverityNumber[SeverityNumber[\"INFO2\"] = 10] = \"INFO2\";\n SeverityNumber[SeverityNumber[\"INFO3\"] = 11] = \"INFO3\";\n SeverityNumber[SeverityNumber[\"INFO4\"] = 12] = \"INFO4\";\n SeverityNumber[SeverityNumber[\"WARN\"] = 13] = \"WARN\";\n SeverityNumber[SeverityNumber[\"WARN2\"] = 14] = \"WARN2\";\n SeverityNumber[SeverityNumber[\"WARN3\"] = 15] = \"WARN3\";\n SeverityNumber[SeverityNumber[\"WARN4\"] = 16] = \"WARN4\";\n SeverityNumber[SeverityNumber[\"ERROR\"] = 17] = \"ERROR\";\n SeverityNumber[SeverityNumber[\"ERROR2\"] = 18] = \"ERROR2\";\n SeverityNumber[SeverityNumber[\"ERROR3\"] = 19] = \"ERROR3\";\n SeverityNumber[SeverityNumber[\"ERROR4\"] = 20] = \"ERROR4\";\n SeverityNumber[SeverityNumber[\"FATAL\"] = 21] = \"FATAL\";\n SeverityNumber[SeverityNumber[\"FATAL2\"] = 22] = \"FATAL2\";\n SeverityNumber[SeverityNumber[\"FATAL3\"] = 23] = \"FATAL3\";\n SeverityNumber[SeverityNumber[\"FATAL4\"] = 24] = \"FATAL4\";\n})(SeverityNumber || (SeverityNumber = {}));\n//# sourceMappingURL=LogRecord.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createInstrumentationScope, createResource, toAnyValue, toAttributes, } from '../common/internal';\nexport function createExportLogsServiceRequest(logRecords, encoder) {\n return {\n resourceLogs: logRecordsToResourceLogs(logRecords, encoder),\n };\n}\nfunction createResourceMap(logRecords) {\n const resourceMap = new Map();\n for (const record of logRecords) {\n const { resource, instrumentationScope } = record;\n let ismMap = resourceMap.get(resource);\n if (!ismMap) {\n ismMap = new Map();\n resourceMap.set(resource, ismMap);\n }\n let records = ismMap.get(instrumentationScope);\n if (!records) {\n records = [];\n ismMap.set(instrumentationScope, records);\n }\n records.push(record);\n }\n return resourceMap;\n}\nfunction logRecordsToResourceLogs(logRecords, encoder) {\n const resourceMap = createResourceMap(logRecords);\n return Array.from(resourceMap, ([resource, ismMap]) => {\n const processedResource = createResource(resource, encoder);\n return {\n resource: processedResource,\n scopeLogs: Array.from(ismMap, ([, scopeLogs]) => {\n return {\n scope: createInstrumentationScope(scopeLogs[0].instrumentationScope, encoder),\n logRecords: scopeLogs.map(log => toLogRecord(log, encoder)),\n schemaUrl: scopeLogs[0].instrumentationScope.schemaUrl,\n };\n }),\n schemaUrl: processedResource.schemaUrl,\n };\n });\n}\nfunction toLogRecord(log, encoder) {\n return {\n timeUnixNano: encoder.encodeHrTime(log.hrTime),\n observedTimeUnixNano: encoder.encodeHrTime(log.hrTimeObserved),\n severityNumber: toSeverityNumber(log.severityNumber),\n severityText: log.severityText,\n body: toAnyValue(log.body, encoder),\n eventName: log.eventName,\n attributes: toAttributes(log.attributes, encoder),\n droppedAttributesCount: log.droppedAttributesCount,\n flags: log.spanContext?.traceFlags,\n traceId: encoder.encodeOptionalSpanContext(log.spanContext?.traceId),\n spanId: encoder.encodeOptionalSpanContext(log.spanContext?.spanId),\n };\n}\nfunction toSeverityNumber(severityNumber) {\n return severityNumber;\n}\n//# sourceMappingURL=internal.js.map","import { createExportLogsServiceRequest } from '../internal';\nimport { JSON_ENCODER } from '../../common/utils';\nimport { diag } from '@opentelemetry/api';\n/**\n * @experimental this serializer may receive breaking changes in minor versions, pin this package's version when using this constant\n */\nexport const JsonLogsSerializer = {\n serializeRequest: (arg) => {\n const request = createExportLogsServiceRequest(arg, JSON_ENCODER);\n const encoder = new TextEncoder();\n return encoder.encode(JSON.stringify(request));\n },\n deserializeResponse: (arg) => {\n if (arg.length === 0) {\n return {};\n }\n const decoder = new TextDecoder();\n try {\n return JSON.parse(decoder.decode(arg));\n }\n catch (err) {\n diag.warn(`Failed to parse logs export response: ${err.message}. Returning empty response`);\n return {};\n }\n },\n};\n//# sourceMappingURL=logs.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Enum value \"otlp_http_log_exporter\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * OTLP log record exporter over HTTP with protobuf serialization\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER = 'otlp_http_log_exporter';\n//# sourceMappingURL=semconv.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { OTLPExporterBase } from '@opentelemetry/otlp-exporter-base';\nimport { JsonLogsSerializer, LogsExporterMetricsHelper, } from '@opentelemetry/otlp-transformer';\nimport { createLegacyOtlpBrowserExportDelegate } from '@opentelemetry/otlp-exporter-base/browser-http';\nimport { OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER } from '../../semconv';\n/**\n * Collector Logs Exporter for Web\n */\nexport class OTLPLogExporter extends OTLPExporterBase {\n constructor(config = {}) {\n super(createLegacyOtlpBrowserExportDelegate(config, JsonLogsSerializer, OTEL_COMPONENT_TYPE_VALUE_OTLP_HTTP_LOG_EXPORTER, LogsExporterMetricsHelper, config.selfObsMeterProvider, 'v1/logs', { 'Content-Type': 'application/json' }));\n }\n}\n//# sourceMappingURL=OTLPLogExporter.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { diag } from '@opentelemetry/api';\n/**\n * Validates if a value is a valid AnyValue for Log Attributes according to OpenTelemetry spec.\n * Log Attributes support a superset of standard Attributes and must support:\n * - Scalar values: string, boolean, signed 64-bit integer, or double precision floating point\n * - Byte arrays (Uint8Array)\n * - Arrays of any values (heterogeneous arrays allowed)\n * - Maps from string to any value (nested objects)\n * - Empty values (null/undefined)\n *\n * @param val - The value to validate\n * @returns true if the value is a valid AnyValue, false otherwise\n */\nexport function isLogAttributeValue(val) {\n return isLogAttributeValueInternal(val, new WeakSet());\n}\nfunction isLogAttributeValueInternal(val, visited) {\n // null and undefined are explicitly allowed\n if (val == null) {\n return true;\n }\n // Scalar values\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n return true;\n }\n // Byte arrays\n if (val instanceof Uint8Array) {\n return true;\n }\n // For objects and arrays, check for circular references\n if (typeof val === 'object') {\n if (visited.has(val)) {\n // Circular reference detected - reject it\n return false;\n }\n visited.add(val);\n // Arrays (can contain any AnyValue, including heterogeneous)\n if (Array.isArray(val)) {\n for (const item of val) {\n if (!isLogAttributeValueInternal(item, visited)) {\n return false;\n }\n }\n return true;\n }\n // Only accept plain objects (not built-in objects like Date, RegExp, Error, etc.)\n // Check if it's a plain object by verifying its constructor is Object or it has no constructor\n const obj = val;\n if (obj.constructor !== Object && obj.constructor !== undefined) {\n return false;\n }\n // Objects/Maps (including empty objects)\n // All object properties must be valid AnyValues\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) &&\n !isLogAttributeValueInternal(obj[key], visited)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\nexport var AddAttributeDecision;\n(function (AddAttributeDecision) {\n AddAttributeDecision[AddAttributeDecision[\"DROP_INVALID\"] = 0] = \"DROP_INVALID\";\n AddAttributeDecision[AddAttributeDecision[\"DROP_LIMIT_REACHED\"] = 1] = \"DROP_LIMIT_REACHED\";\n AddAttributeDecision[AddAttributeDecision[\"ADD_NEW\"] = 2] = \"ADD_NEW\";\n AddAttributeDecision[AddAttributeDecision[\"ADD_OVERWRITE_EXISTING\"] = 3] = \"ADD_OVERWRITE_EXISTING\";\n})(AddAttributeDecision || (AddAttributeDecision = {}));\nexport function addAttribute(attributes, limits, currentAttributesCount, key, value) {\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return AddAttributeDecision.DROP_INVALID;\n }\n if (!isLogAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return AddAttributeDecision.DROP_INVALID;\n }\n const isNewKey = !Object.prototype.hasOwnProperty.call(attributes, key);\n if (isNewKey && currentAttributesCount >= limits.attributeCountLimit) {\n return AddAttributeDecision.DROP_LIMIT_REACHED;\n }\n attributes[key] = truncateToSize(value, limits.attributeValueLengthLimit);\n if (isNewKey) {\n return AddAttributeDecision.ADD_NEW;\n }\n return AddAttributeDecision.ADD_OVERWRITE_EXISTING;\n}\nfunction truncateToSize(value, limit) {\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n // null/undefined - no truncation needed\n if (value == null) {\n return value;\n }\n // String\n if (typeof value === 'string') {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\n // Byte arrays - no truncation needed\n if (value instanceof Uint8Array) {\n return value;\n }\n // Arrays (can contain any AnyValue types)\n if (Array.isArray(value)) {\n return value.map(val => truncateToSize(val, limit));\n }\n // Objects/Maps - recursively truncate nested values\n if (typeof value === 'object') {\n const truncatedObj = {};\n for (const [k, v] of Object.entries(value)) {\n truncatedObj[k] = truncateToSize(v, limit);\n }\n return truncatedObj;\n }\n // Other types (number, boolean), no need to apply value length limit\n return value;\n}\n/**\n * Normalize attributes for use on the instrumentation scope. Drops invalid attributes and keeps track of\n * how many were dropped.\n *\n * @param limits\n * @param attributes\n */\nexport function normalizeScopeAttributes(limits, attributes) {\n if (attributes == null) {\n return {};\n }\n const normalizedAttributes = {};\n let currentAttributesCount = 0;\n let droppedAttributesCount = 0;\n for (const [key, value] of Object.entries(attributes)) {\n const decision = addAttribute(normalizedAttributes, limits, currentAttributesCount, key, value);\n if (decision === AddAttributeDecision.ADD_NEW) {\n currentAttributesCount += 1;\n }\n else if (decision === AddAttributeDecision.DROP_INVALID) {\n droppedAttributesCount += 1;\n }\n else if (decision === AddAttributeDecision.DROP_LIMIT_REACHED) {\n droppedAttributesCount += 1;\n }\n else {\n // do nothing\n }\n }\n return {\n attributes: currentAttributesCount > 0 ? normalizedAttributes : undefined,\n droppedAttributesCount,\n };\n}\n//# sourceMappingURL=validation.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as api from '@opentelemetry/api';\nimport { timeInputToHrTime } from '@opentelemetry/core';\nimport { ATTR_EXCEPTION_MESSAGE, ATTR_EXCEPTION_STACKTRACE, ATTR_EXCEPTION_TYPE, } from '@opentelemetry/semantic-conventions';\nimport { addAttribute, AddAttributeDecision } from './utils/validation';\nexport class LogRecordImpl {\n resource;\n instrumentationScope;\n attributes = {};\n _hrTime;\n _hrTimeObserved;\n _spanContext;\n _severityText;\n _severityNumber;\n _body;\n _eventName;\n _attributesCount = 0;\n _droppedAttributesCount = 0;\n _isReadonly = false;\n _logRecordLimits;\n get hrTime() {\n return this._hrTime;\n }\n set hrTime(hrTime) {\n if (this._isLogRecordReadonly()) {\n return;\n }\n this._hrTime = hrTime;\n }\n get hrTimeObserved() {\n return this._hrTimeObserved;\n }\n set hrTimeObserved(hrTimeObserved) {\n if (this._isLogRecordReadonly()) {\n return;\n }\n this._hrTimeObserved = hrTimeObserved;\n }\n get spanContext() {\n return this._spanContext;\n }\n set spanContext(spanContext) {\n if (this._isLogRecordReadonly()) {\n return;\n }\n this._spanContext = spanContext;\n }\n set severityText(severityText) {\n if (this._isLogRecordReadonly()) {\n return;\n }\n this._severityText = severityText;\n }\n get severityText() {\n return this._severityText;\n }\n set severityNumber(severityNumber) {\n if (this._isLogRecordReadonly()) {\n return;\n }\n this._severityNumber = severityNumber;\n }\n get severityNumber() {\n return this._severityNumber;\n }\n set body(body) {\n if (this._isLogRecordReadonly()) {\n return;\n }\n this._body = body;\n }\n get body() {\n return this._body;\n }\n get eventName() {\n return this._eventName;\n }\n set eventName(eventName) {\n if (this._isLogRecordReadonly()) {\n return;\n }\n this._eventName = eventName;\n }\n get droppedAttributesCount() {\n return this._droppedAttributesCount;\n }\n constructor(_sharedState, instrumentationScope, logRecord) {\n const { timestamp, observedTimestamp, eventName, severityNumber, severityText, body, attributes = {}, exception, context, } = logRecord;\n const now = Date.now();\n this._hrTime = timeInputToHrTime(timestamp ?? now);\n this._hrTimeObserved = timeInputToHrTime(observedTimestamp ?? now);\n if (context) {\n const spanContext = api.trace.getSpanContext(context);\n if (spanContext && api.isSpanContextValid(spanContext)) {\n this._spanContext = spanContext;\n }\n }\n this.severityNumber = severityNumber;\n this.severityText = severityText;\n this.body = body;\n this.resource = _sharedState.resource;\n this.instrumentationScope = instrumentationScope;\n this._logRecordLimits = _sharedState.logRecordLimits;\n this._eventName = eventName;\n this.setAttributes(attributes);\n if (exception != null) {\n this._setException(exception);\n }\n }\n setAttribute(key, value) {\n if (this._isLogRecordReadonly()) {\n return this;\n }\n const decision = addAttribute(this.attributes, this._logRecordLimits, this._attributesCount, key, value);\n if (decision === AddAttributeDecision.DROP_LIMIT_REACHED) {\n this._droppedAttributesCount++;\n if (this._droppedAttributesCount === 1) {\n // Only warn once per LogRecord to avoid log spam\n api.diag.warn('Dropping extra attributes.');\n }\n }\n else if (decision === AddAttributeDecision.ADD_NEW) {\n this._attributesCount++;\n }\n return this;\n }\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n setBody(body) {\n this.body = body;\n return this;\n }\n setEventName(eventName) {\n this.eventName = eventName;\n return this;\n }\n setSeverityNumber(severityNumber) {\n this.severityNumber = severityNumber;\n return this;\n }\n setSeverityText(severityText) {\n this.severityText = severityText;\n return this;\n }\n /**\n * @internal\n * A LogRecordProcessor may freely modify logRecord for the duration of the OnEmit call.\n * If logRecord is needed after OnEmit returns (i.e. for asynchronous processing) only reads are permitted.\n */\n _makeReadonly() {\n this._isReadonly = true;\n }\n _setException(exception) {\n let hasMinimumAttributes = false;\n if (typeof exception === 'string' || typeof exception === 'number') {\n if (!Object.hasOwn(this.attributes, ATTR_EXCEPTION_MESSAGE)) {\n this.setAttribute(ATTR_EXCEPTION_MESSAGE, String(exception));\n }\n hasMinimumAttributes = true;\n }\n else if (exception && typeof exception === 'object') {\n const exceptionObj = exception;\n if (exceptionObj.code) {\n if (!Object.hasOwn(this.attributes, ATTR_EXCEPTION_TYPE)) {\n this.setAttribute(ATTR_EXCEPTION_TYPE, exceptionObj.code.toString());\n }\n hasMinimumAttributes = true;\n }\n else if (exceptionObj.name) {\n if (!Object.hasOwn(this.attributes, ATTR_EXCEPTION_TYPE)) {\n this.setAttribute(ATTR_EXCEPTION_TYPE, exceptionObj.name);\n }\n hasMinimumAttributes = true;\n }\n if (exceptionObj.message) {\n if (!Object.hasOwn(this.attributes, ATTR_EXCEPTION_MESSAGE)) {\n this.setAttribute(ATTR_EXCEPTION_MESSAGE, exceptionObj.message);\n }\n hasMinimumAttributes = true;\n }\n if (exceptionObj.stack) {\n if (!Object.hasOwn(this.attributes, ATTR_EXCEPTION_STACKTRACE)) {\n this.setAttribute(ATTR_EXCEPTION_STACKTRACE, exceptionObj.stack);\n }\n hasMinimumAttributes = true;\n }\n }\n if (!hasMinimumAttributes) {\n api.diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n _isLogRecordReadonly() {\n if (this._isReadonly) {\n api.diag.warn('Can not execute the operation on emitted log record');\n }\n return this._isReadonly;\n }\n}\n//# sourceMappingURL=LogRecordImpl.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { context, trace, TraceFlags, isSpanContextValid, } from '@opentelemetry/api';\nimport { LogRecordImpl } from './LogRecordImpl';\nexport class Logger {\n _instrumentationScope;\n _sharedState;\n _loggerConfig;\n constructor(instrumentationScope, sharedState) {\n this._instrumentationScope = instrumentationScope;\n this._sharedState = sharedState;\n // Cache the logger configuration at construction time\n // Since we don't support re-configuration, this avoids map lookups\n // and string allocations on each emit() call\n this._loggerConfig = this._sharedState.getLoggerConfig(this._instrumentationScope);\n }\n emit(logRecord) {\n const currentContext = logRecord.context || context.active();\n if (!this.enabled(logRecord)) {\n return;\n }\n /**\n * If a Logger was obtained with include_trace_context=true,\n * the LogRecords it emits MUST automatically include the Trace Context from the active Context,\n * if Context has not been explicitly set.\n */\n const logRecordInstance = new LogRecordImpl(this._sharedState, this._instrumentationScope, {\n context: currentContext,\n ...logRecord,\n });\n this._sharedState.loggerMetrics.emitLog();\n /**\n * the explicitly passed Context,\n * the current Context, or an empty Context if the Logger was obtained with include_trace_context=false\n */\n this._sharedState.activeProcessor.onEmit(logRecordInstance, currentContext);\n /**\n * A LogRecordProcessor may freely modify logRecord for the duration of the OnEmit call.\n * If logRecord is needed after OnEmit returns (i.e. for asynchronous processing) only reads are permitted.\n */\n logRecordInstance._makeReadonly();\n }\n enabled(options) {\n if (this._sharedState.hasShutdown) {\n return false;\n }\n const loggerConfig = this._loggerConfig;\n if (loggerConfig.disabled) {\n return false;\n }\n // Severity number given and lower than the min configured\n const severityNumber = options?.severityNumber;\n if (typeof severityNumber === 'number' &&\n severityNumber !== SeverityNumber.UNSPECIFIED &&\n severityNumber < loggerConfig.minimumSeverity) {\n return false;\n }\n const currentContext = options?.context || context.active();\n // Trace based: the context (given or the active) has a unsampled Span\n if (loggerConfig.traceBased) {\n const spanContext = trace.getSpanContext(currentContext);\n if (spanContext && isSpanContextValid(spanContext)) {\n const isSampled = (spanContext.traceFlags & TraceFlags.SAMPLED) === TraceFlags.SAMPLED;\n if (!isSampled) {\n return false;\n }\n }\n }\n // Lastly check if there is any enabled processor\n const enabledOpts = {\n context: currentContext,\n instrumentationScope: this._instrumentationScope,\n severityNumber: options?.severityNumber,\n eventName: options?.eventName,\n };\n for (const processor of this._sharedState.processors) {\n if (!processor.enabled || processor.enabled(enabledOpts)) {\n return true;\n }\n }\n return false;\n }\n}\n//# sourceMappingURL=Logger.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport class NoopLogRecordProcessor {\n forceFlush() {\n return Promise.resolve();\n }\n onEmit(_logRecord, _context) { }\n shutdown() {\n return Promise.resolve();\n }\n enabled(_options) {\n return false;\n }\n}\n//# sourceMappingURL=NoopLogRecordProcessor.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { callWithTimeout } from '@opentelemetry/core';\n/**\n * Implementation of the {@link LogRecordProcessor} that simply forwards all\n * received events to a list of {@link LogRecordProcessor}s.\n */\nexport class MultiLogRecordProcessor {\n processors;\n constructor(processors) {\n this.processors = processors;\n }\n async forceFlush(options) {\n const timeout = options?.timeoutMillis ?? 30000;\n await Promise.all(this.processors.map(processor => callWithTimeout(processor.forceFlush(), timeout)));\n }\n onEmit(logRecord, context) {\n this.processors.forEach(processors => processors.onEmit(logRecord, context));\n }\n async shutdown() {\n await Promise.all(this.processors.map(processor => processor.shutdown()));\n }\n enabled(options) {\n for (const processor of this.processors) {\n if (!processor.enabled || processor.enabled(options)) {\n return true;\n }\n }\n return false;\n }\n}\n//# sourceMappingURL=MultiLogRecordProcessor.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * Normalizes an AnyValue to a JSON-serializable [typeTag, payload] tuple.\n *\n * Using a type tag as the first element guarantees that two values can only\n * produce the same tuple when they have the same type AND the same data,\n * avoiding cross-type collisions such as:\n * - null vs NaN vs Infinity (all become JSON `null` via JSON.stringify)\n * - -0 vs 0 (both become JSON `0` via JSON.stringify)\n * - string \"null\" vs the value null\n *\n * Object keys are sorted so that attribute maps with the same entries but\n * different insertion orders produce the same key.\n */\nfunction normalizeAnyValue(value) {\n if (value === undefined) {\n return ['u', null];\n }\n if (value === null) {\n return ['n', null];\n }\n const valueType = typeof value;\n if (valueType === 'string') {\n return ['s', value];\n }\n if (valueType === 'boolean') {\n return ['b', value];\n }\n if (valueType === 'number') {\n if (Number.isNaN(value))\n return ['nan', null];\n if (value === Infinity)\n return ['inf', null];\n if (value === -Infinity)\n return ['-inf', null];\n if (Object.is(value, -0))\n return ['n0', null];\n return ['d', value];\n }\n if (value instanceof Uint8Array) {\n return ['bytes', Array.from(value)];\n }\n if (Array.isArray(value)) {\n return ['arr', value.map(normalizeAnyValue)];\n }\n // AnyValueMap — sort keys for insertion-order independence\n return [\n 'map',\n Object.entries(value)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => [k, normalizeAnyValue(v)]),\n ];\n}\n/**\n * Converting the instrumentation scope object to a unique identifier string.\n * @param scope - The instrumentation scope to convert\n * @returns A unique string identifier for the scope\n */\nexport function getInstrumentationScopeKey(scope) {\n return JSON.stringify([\n scope.name,\n scope.version || '',\n scope.schemaUrl || '',\n normalizeAnyValue(scope.attributes),\n // we include the dropped attributes count to avoid collisions between scopes with the same identifying\n // characteristics, but different dropped counts. While there still can be collisions this is the best we can do if\n // we want to resolve the same logger without relying on object identity.\n scope.droppedAttributesCount ?? 0,\n ]);\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The number of logs submitted to enabled SDK Loggers.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_LOG_CREATED = 'otel.sdk.log.created';\n/**\n * The number of log records for which the processing has finished, either successful or failed.\n *\n * @note For successful processing, `error.type` **MUST NOT** be set. For failed processing, `error.type` **MUST** contain the failure cause.\n * For the SDK Simple and Batching Log Record Processor a log record is considered to be processed already when it has been submitted to the exporter,\n * not when the corresponding export call has finished.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED = 'otel.sdk.processor.log.processed';\n/**\n * The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold.\n *\n * @note Only applies to Log Record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY = 'otel.sdk.processor.log.queue.capacity';\n/**\n * The number of log records in the queue of a given instance of an SDK log processor.\n *\n * @note Only applies to log record processors which use a queue, e.g. the SDK Batching Log Record Processor.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE = 'otel.sdk.processor.log.queue.size';\n/**\n * A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance.\n *\n * @example otlp_grpc_span_exporter/0\n * @example custom-name\n *\n * @note Implementations **SHOULD** ensure a low cardinality for this attribute, even across application or SDK restarts.\n * E.g. implementations **MUST NOT** use UUIDs as values for this attribute.\n *\n * Implementations **MAY** achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.\n * Hereby `otel.component.type` refers to the corresponding attribute value of the component.\n *\n * The value of `instance-counter` **MAY** be automatically assigned by the component and uniqueness within the enclosing SDK instance **MUST** be guaranteed.\n * For example, `<instance-counter>` **MAY** be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an\n * instance of the given component type is started.\n *\n * With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`\n * as `otel.component.name`, the second one `batching_span_processor/1` and so on.\n * These values will therefore be reused in the case of an application restart.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_NAME = 'otel.component.name';\n/**\n * A name identifying the type of the OpenTelemetry component.\n *\n * @example batching_span_processor\n * @example com.example.MySpanExporter\n *\n * @note If none of the standardized values apply, implementations **SHOULD** use the language-defined name of the type.\n * E.g. for Java the fully qualified classname **SHOULD** be used in this case.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_COMPONENT_TYPE = 'otel.component.type';\n/**\n * Enum value \"batching_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK batching log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR = 'batching_log_processor';\n/**\n * Enum value \"simple_log_processor\" for attribute {@link ATTR_OTEL_COMPONENT_TYPE}.\n *\n * The builtin SDK simple log record processor\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const OTEL_COMPONENT_TYPE_VALUE_SIMPLE_LOG_PROCESSOR = 'simple_log_processor';\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes),\n * it's **RECOMMENDED** to:\n *\n * - Use a domain-specific attribute\n * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport const ATTR_ERROR_TYPE = 'error.type';\n//# sourceMappingURL=semconv.js.map","import { METRIC_OTEL_SDK_LOG_CREATED } from './semconv';\n/**\n * Generates `otel.sdk.log.*` metrics.\n * https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/#log-metrics\n */\nexport class LoggerMetrics {\n createdLogs;\n constructor(meter) {\n this.createdLogs = meter.createCounter(METRIC_OTEL_SDK_LOG_CREATED, {\n unit: '{log_record}',\n description: 'The number of logs submitted to enabled SDK Loggers.',\n });\n }\n emitLog() {\n this.createdLogs.add(1);\n }\n}\n//# sourceMappingURL=LoggerMetrics.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.222.0';\n//# sourceMappingURL=version.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { createNoopMeter } from '@opentelemetry/api';\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { NoopLogRecordProcessor } from '../export/NoopLogRecordProcessor';\nimport { MultiLogRecordProcessor } from '../MultiLogRecordProcessor';\nimport { getInstrumentationScopeKey } from './utils';\nimport { LoggerMetrics } from '../LoggerMetrics';\nimport { VERSION } from '../version';\nconst DEFAULT_LOGGER_CONFIG = {\n disabled: false,\n minimumSeverity: SeverityNumber.UNSPECIFIED,\n traceBased: false,\n};\n/**\n * Default LoggerConfigurator that returns the default config for all loggers\n */\nexport const DEFAULT_LOGGER_CONFIGURATOR = () => ({\n ...DEFAULT_LOGGER_CONFIG,\n});\nexport class LoggerProviderSharedState {\n loggers = new Map();\n activeProcessor;\n registeredLogRecordProcessors = [];\n resource;\n logRecordLimits;\n processors;\n loggerMetrics;\n hasShutdown = false;\n _loggerConfigurator;\n _loggerConfigs = new Map();\n constructor(resource, logRecordLimits, processors, loggerConfigurator, meterProvider) {\n this.resource = resource;\n this.logRecordLimits = logRecordLimits;\n this.processors = processors;\n if (processors.length > 0) {\n this.registeredLogRecordProcessors = processors;\n this.activeProcessor = new MultiLogRecordProcessor(this.registeredLogRecordProcessors);\n }\n else {\n this.activeProcessor = new NoopLogRecordProcessor();\n }\n this._loggerConfigurator =\n loggerConfigurator ?? DEFAULT_LOGGER_CONFIGURATOR;\n const meter = meterProvider\n ? meterProvider.getMeter('@opentelemetry/sdk-logs', VERSION)\n : createNoopMeter();\n this.loggerMetrics = new LoggerMetrics(meter);\n }\n /**\n * Get the LoggerConfig for a given instrumentation scope.\n * Uses the LoggerConfigurator function to compute the config on first access\n * and caches the result.\n *\n * @experimental This feature is in development as per the OpenTelemetry specification.\n */\n getLoggerConfig(instrumentationScope) {\n const key = getInstrumentationScopeKey(instrumentationScope);\n // Return cached config if available\n let config = this._loggerConfigs.get(key);\n if (config) {\n return config;\n }\n // Compute config using the configurator\n // The configurator always returns a complete config\n config = this._loggerConfigurator(instrumentationScope);\n // Cache the result\n this._loggerConfigs.set(key, config);\n return config;\n }\n}\n//# sourceMappingURL=LoggerProviderSharedState.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { diag } from '@opentelemetry/api';\nimport { createNoopLogger } from '@opentelemetry/api-logs';\nimport { defaultResource } from '@opentelemetry/resources';\nimport { BindOnceFuture } from '@opentelemetry/core';\nimport { Logger } from './Logger';\nimport { DEFAULT_LOGGER_CONFIGURATOR, LoggerProviderSharedState, } from './internal/LoggerProviderSharedState';\nimport { getInstrumentationScopeKey, } from './internal/utils';\nimport { normalizeScopeAttributes } from './utils/validation';\nexport const DEFAULT_LOGGER_NAME = 'unknown';\nexport class LoggerProvider {\n _shutdownOnce;\n _sharedState;\n constructor(config = {}) {\n const mergedConfig = {\n resource: config.resource ?? defaultResource(),\n logRecordLimits: {\n attributeCountLimit: config.logRecordLimits?.attributeCountLimit ?? 128,\n attributeValueLengthLimit: config.logRecordLimits?.attributeValueLengthLimit ?? Infinity,\n },\n loggerConfigurator: config.loggerConfigurator ?? DEFAULT_LOGGER_CONFIGURATOR,\n processors: config.processors ?? [],\n meterProvider: config.meterProvider,\n };\n this._sharedState = new LoggerProviderSharedState(mergedConfig.resource, mergedConfig.logRecordLimits, mergedConfig.processors, mergedConfig.loggerConfigurator, mergedConfig.meterProvider);\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n }\n /**\n * Get a logger with the configuration of the LoggerProvider.\n */\n getLogger(name, version, options) {\n if (this._shutdownOnce.isCalled) {\n diag.warn('A shutdown LoggerProvider cannot provide a Logger');\n return createNoopLogger();\n }\n if (!name) {\n diag.warn('Logger requested without instrumentation scope name.');\n }\n const loggerName = name || DEFAULT_LOGGER_NAME;\n const instrumentationScope = {\n name: loggerName,\n version,\n schemaUrl: options?.schemaUrl,\n ...normalizeScopeAttributes(this._sharedState.logRecordLimits, options?.attributes),\n };\n const key = getInstrumentationScopeKey(instrumentationScope);\n if (!this._sharedState.loggers.has(key)) {\n this._sharedState.loggers.set(key, new Logger(instrumentationScope, this._sharedState));\n }\n return this._sharedState.loggers.get(key);\n }\n /**\n * Notifies all registered LogRecordProcessor to flush any buffered data.\n *\n * Returns a promise which is resolved when all flushes are complete.\n */\n forceFlush(options) {\n // do not flush after shutdown\n if (this._shutdownOnce.isCalled) {\n diag.warn('invalid attempt to force flush after LoggerProvider shutdown');\n return this._shutdownOnce.promise;\n }\n return this._sharedState.activeProcessor.forceFlush(options);\n }\n /**\n * Flush all buffered data and shut down the LoggerProvider and all registered\n * LogRecordProcessor.\n *\n * Returns a promise which is resolved when all flushes are complete.\n */\n shutdown() {\n if (this._shutdownOnce.isCalled) {\n diag.warn('shutdown may only be called once per LoggerProvider');\n return this._shutdownOnce.promise;\n }\n return this._shutdownOnce.call();\n }\n _shutdown() {\n this._sharedState.hasShutdown = true;\n return this._sharedState.activeProcessor.shutdown();\n }\n}\n//# sourceMappingURL=LoggerProvider.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ATTR_ERROR_TYPE, ATTR_OTEL_COMPONENT_NAME, ATTR_OTEL_COMPONENT_TYPE, METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED, METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY, METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE, } from '../semconv';\nconst componentCounter = new Map();\nexport class LogRecordProcessorMetrics {\n processedLogs;\n queueSize;\n queueSizeCallback;\n standardAttrs;\n droppedAttrs;\n constructor(componentType, meter, queueConfig) {\n const counter = componentCounter.get(componentType) ?? 0;\n componentCounter.set(componentType, counter + 1);\n this.standardAttrs = {\n [ATTR_OTEL_COMPONENT_TYPE]: componentType,\n [ATTR_OTEL_COMPONENT_NAME]: `${componentType}/${counter}`,\n };\n this.droppedAttrs = {\n ...this.standardAttrs,\n [ATTR_ERROR_TYPE]: 'queue_full',\n };\n this.processedLogs = meter.createCounter(METRIC_OTEL_SDK_PROCESSOR_LOG_PROCESSED, {\n unit: '{log_record}',\n description: 'The number of log records for which the processing has finished, either successful or failed.',\n });\n if (queueConfig) {\n const { capacity, getQueueSize } = queueConfig;\n const queueCapacity = meter.createUpDownCounter(METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_CAPACITY, {\n unit: '{log_record}',\n description: 'The maximum number of log records the queue of a given instance of an SDK log processor can hold.',\n });\n queueCapacity.add(capacity, this.standardAttrs);\n this.queueSize = meter.createObservableUpDownCounter(METRIC_OTEL_SDK_PROCESSOR_LOG_QUEUE_SIZE, {\n unit: '{log_record}',\n description: 'The number of log records in the queue of a given instance of an SDK log processor.',\n });\n this.queueSizeCallback = result => result.observe(getQueueSize(), this.standardAttrs);\n this.queueSize.addCallback(this.queueSizeCallback);\n }\n }\n dropLogs(count) {\n this.processedLogs.add(count, this.droppedAttrs);\n }\n finishLogs(count, error) {\n if (!error) {\n this.processedLogs.add(count, this.standardAttrs);\n return;\n }\n const attrs = {\n ...this.standardAttrs,\n [ATTR_ERROR_TYPE]: error.name,\n };\n this.processedLogs.add(count, attrs);\n }\n shutdown() {\n if (this.queueSize && this.queueSizeCallback) {\n this.queueSize.removeCallback(this.queueSizeCallback);\n }\n }\n}\n//# sourceMappingURL=LogRecordProcessorMetrics.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { context, createNoopMeter, diag } from '@opentelemetry/api';\nimport { ExportResultCode, globalErrorHandler, BindOnceFuture, suppressTracing, } from '@opentelemetry/core';\nimport { LogRecordProcessorMetrics } from './LogRecordProcessorMetrics';\nimport { OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR } from '../semconv';\n/**\n * Waits for all pending async resources in the log records to be resolved.\n */\nasync function waitForResources(logRecords) {\n const pendingResources = [];\n for (let i = 0, len = logRecords.length; i < len; i++) {\n const logRecord = logRecords[i];\n if (logRecord.resource.asyncAttributesPending &&\n logRecord.resource.waitForAsyncAttributes) {\n pendingResources.push(logRecord.resource.waitForAsyncAttributes());\n }\n }\n if (pendingResources != null && pendingResources.length > 0) {\n await Promise.all(pendingResources);\n }\n}\n/**\n * Represents an export operation that handles the entire export workflow.\n */\nclass ExportOperation {\n _exportCompleted;\n _exportScheduledPromise;\n _metrics;\n _exportScheduledResolve;\n constructor(exporter, logRecords, exportTimeoutMillis, metrics) {\n this._exportScheduledPromise = new Promise(resolve => {\n this._exportScheduledResolve = resolve;\n });\n this._exportCompleted = this._executeExport(exporter, logRecords, exportTimeoutMillis);\n this._metrics = metrics;\n }\n /** Get the promise that resolves when the export completes */\n get exportCompleted() {\n return this._exportCompleted;\n }\n /** Get the promise that resolves when exporter.export() has been called */\n get exportScheduled() {\n return this._exportScheduledPromise;\n }\n async _executeExport(exporter, logRecords, exportTimeoutMillis) {\n try {\n // Wait for all pending resources before exporting\n await waitForResources(logRecords);\n // Export with timeout, wrapped in suppressTracing context\n await context.with(suppressTracing(context.active()), async () => {\n return this._exportWithTimeout(exporter, logRecords, exportTimeoutMillis);\n });\n }\n catch (e) {\n // ensure we never reject here, as we may call await after it has already resolved.\n globalErrorHandler(e);\n // resolve, as the error may have occurred before export was scheduled\n this._exportScheduledResolve();\n }\n }\n async _exportWithTimeout(exporter, logRecords, exportTimeoutMillis) {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error('Timeout'));\n }, exportTimeoutMillis);\n // Call exporter.export() and immediately resolve exportScheduled\n exporter.export(logRecords, result => {\n this._metrics.finishLogs(logRecords.length, result.error);\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n }\n else {\n reject(result.error ??\n new Error('BatchLogRecordProcessor: log record export failed'));\n }\n });\n // Resolve exportScheduled immediately after calling exporter.export()\n this._exportScheduledResolve();\n });\n }\n}\nexport class BatchLogRecordProcessorBase {\n _maxExportBatchSize;\n _maxQueueSize;\n _scheduledDelayMillis;\n _exportTimeoutMillis;\n _exporter;\n _metrics;\n _currentExport = null;\n _finishedLogRecords = [];\n _timer;\n _shutdownOnce;\n _flushing = false;\n constructor(options) {\n this._exporter = options.exporter;\n this._maxExportBatchSize = options.maxExportBatchSize ?? 512;\n this._maxQueueSize = options.maxQueueSize ?? 2048;\n this._scheduledDelayMillis = options.scheduledDelayMillis ?? 1000;\n this._exportTimeoutMillis = options.exportTimeoutMillis ?? 30000;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn('BatchLogRecordProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize');\n this._maxExportBatchSize = this._maxQueueSize;\n }\n const meter = options?.selfObsMeterProvider\n ? options.selfObsMeterProvider.getMeter('@opentelemetry/sdk-logs')\n : createNoopMeter();\n this._metrics = new LogRecordProcessorMetrics(OTEL_COMPONENT_TYPE_VALUE_BATCHING_LOG_PROCESSOR, meter, {\n capacity: this._maxQueueSize,\n getQueueSize: () => this._finishedLogRecords.length,\n });\n }\n onEmit(logRecord) {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n this._addToBuffer(logRecord);\n }\n forceFlush() {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n /** Add a LogRecord in the buffer. */\n _addToBuffer(logRecord) {\n if (this._finishedLogRecords.length >= this._maxQueueSize) {\n this._metrics.dropLogs(1);\n return;\n }\n this._finishedLogRecords.push(logRecord);\n this._maybeStartTimer();\n }\n shutdown() {\n return this._shutdownOnce.call();\n }\n async _shutdown() {\n this.onShutdown();\n await this._flushAll();\n this._metrics.shutdown();\n await this._exporter.shutdown();\n }\n /**\n * Send all LogRecords to the exporter respecting the batch size limit\n * This function is used only on forceFlush or shutdown,\n * for all other cases _exportOneBatch should be used\n * */\n async _flushAll() {\n // Guard against concurrent flushes. Concurrent .forceFlush() calls will\n // return without waiting for the in-progress flush to finish.\n if (this._flushing) {\n return;\n }\n this._flushing = true;\n // Grab the current set of finished log records, because the spec says:\n // > ... for which the LogRecordProcessor had already received events prior to the call to ForceFlush ...\n let toFlush = this._finishedLogRecords;\n this._finishedLogRecords = [];\n // Clear timer to prevent concurrent exports\n this._clearTimer();\n // Wait for any in-progress export to complete. Capture the reference\n // into a local because `_exportOneBatch` may null out `this._currentExport`\n // from its completion handler while we are awaiting below.\n const inFlight = this._currentExport;\n if (inFlight !== null) {\n // speed up execution for current export\n await this._exporter.forceFlush();\n await inFlight.exportCompleted;\n this._currentExport = null;\n }\n // Now flush all batches sequentially to avoid race conditions\n while (toFlush.length > 0) {\n let batch;\n if (toFlush.length <= this._maxExportBatchSize) {\n batch = toFlush;\n toFlush = [];\n }\n else {\n batch = toFlush.splice(0, this._maxExportBatchSize);\n }\n const exportOp = new ExportOperation(this._exporter, batch, this._exportTimeoutMillis, this._metrics);\n this._currentExport = exportOp;\n // await export scheduled, then force flush exporter to speed up export\n try {\n await exportOp.exportScheduled;\n await this._exporter.forceFlush();\n await exportOp.exportCompleted;\n }\n catch (e) {\n globalErrorHandler(e);\n }\n finally {\n this._currentExport = null;\n }\n }\n this._flushing = false;\n this._maybeStartTimer();\n }\n /**\n * Extracts one batch from the buffer.\n * Returns null if buffer is empty.\n */\n _extractBatch() {\n if (this._finishedLogRecords.length === 0) {\n return null;\n }\n if (this._finishedLogRecords.length <= this._maxExportBatchSize) {\n const batch = this._finishedLogRecords;\n this._finishedLogRecords = [];\n return batch;\n }\n else {\n return this._finishedLogRecords.splice(0, this._maxExportBatchSize);\n }\n }\n _exportOneBatch() {\n this._clearTimer();\n const logRecords = this._extractBatch();\n if (logRecords === null) {\n return;\n }\n const exportOp = new ExportOperation(this._exporter, logRecords, this._exportTimeoutMillis, this._metrics);\n this._currentExport = exportOp;\n // Handle completion asynchronously\n exportOp.exportCompleted\n .then(() => {\n this._currentExport = null;\n this._maybeStartTimer();\n })\n .catch(error => {\n this._currentExport = null;\n globalErrorHandler(error);\n this._maybeStartTimer();\n });\n }\n _maybeStartTimer() {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n if (this._flushing) {\n return;\n }\n if (this._finishedLogRecords.length === 0) {\n return;\n }\n if (this._currentExport !== null) {\n return;\n }\n // If batch is full, export immediately\n if (this._finishedLogRecords.length >= this._maxExportBatchSize) {\n this._exportOneBatch();\n return;\n }\n // If timer is already set, don't set another one\n if (this._timer !== undefined) {\n return;\n }\n // Set timer for scheduled export\n this._timer = setTimeout(() => {\n this._timer = undefined;\n this._exportOneBatch();\n }, this._scheduledDelayMillis);\n // Unref timer so it doesn't keep process alive\n if (typeof this._timer !== 'number') {\n this._timer.unref();\n }\n }\n _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n}\n//# sourceMappingURL=BatchLogRecordProcessorBase.js.map","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { BatchLogRecordProcessorBase } from '../../../export/BatchLogRecordProcessorBase';\nexport class BatchLogRecordProcessor extends BatchLogRecordProcessorBase {\n _visibilityChangeListener;\n _pageHideListener;\n constructor(options) {\n super(options);\n this._onInit(options);\n }\n onShutdown() {\n if (typeof document === 'undefined') {\n return;\n }\n if (this._visibilityChangeListener) {\n document.removeEventListener('visibilitychange', this._visibilityChangeListener);\n }\n if (this._pageHideListener) {\n document.removeEventListener('pagehide', this._pageHideListener);\n }\n }\n _onInit(options) {\n if (options.disableAutoFlushOnDocumentHide === true ||\n typeof document === 'undefined') {\n return;\n }\n this._visibilityChangeListener = () => {\n if (document.visibilityState === 'hidden') {\n void this.forceFlush();\n }\n };\n this._pageHideListener = () => {\n void this.forceFlush();\n };\n document.addEventListener('visibilitychange', this._visibilityChangeListener);\n // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769\n document.addEventListener('pagehide', this._pageHideListener);\n }\n}\n//# sourceMappingURL=BatchLogRecordProcessor.js.map","import { BaseTelemetryAdapter } from '../../TelemetryAdapter.js';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { LoggerProvider, BatchLogRecordProcessor, } from '@opentelemetry/sdk-logs';\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\n/**\n * Exports Fusion telemetry as OTLP/HTTP log records using the standard OpenTelemetry SDK.\n *\n * Records include app identity and source attributes, and automatically inherit the active\n * OpenTelemetry trace/span context. No global logger provider or console patch is installed.\n * Collector failures are reported once without blocking initialization or app execution.\n *\n * @example\n * ```ts\n * import { OtlpAdapter } from '@equinor/fusion-framework-module-telemetry/otlp-adapter';\n *\n * enableTelemetry(configurator, {\n * configure: (builder) => builder.setAdapter('otlp', new OtlpAdapter({\n * url: 'http://localhost:4318/v1/logs',\n * })),\n * });\n * ```\n */\nexport class OtlpAdapter extends BaseTelemetryAdapter {\n /** Whether explicitly configured child adapters take precedence. */\n fallback;\n #reportedFailure = false;\n #logger;\n #provider;\n /**\n * Creates an OTLP adapter without contacting the collector.\n * @param options - Logs endpoint, optional service identity, and fallback precedence.\n */\n constructor(options) {\n super();\n this.fallback = options.fallback ?? false;\n const exporter = new OTLPLogExporter({ url: options.url, timeoutMillis: 5_000 });\n const reportingExporter = {\n export: (records, callback) => {\n exporter.export(records, (result) => {\n // Report once without replacing the SDK's failure result with a success.\n if (result.code !== 0 && !this.#reportedFailure) {\n this.#reportedFailure = true;\n console.warn('OTLP log delivery failed; telemetry is best effort.', result.error);\n }\n callback(result);\n });\n },\n forceFlush: () => exporter.forceFlush(),\n shutdown: () => exporter.shutdown(),\n };\n this.#provider = new LoggerProvider({\n resource: resourceFromAttributes({\n 'service.name': options.serviceName ?? 'fusion.telemetry',\n }),\n // Bootstrap emits bursts; batching avoids the exporter's concurrent-request limit.\n processors: [\n new BatchLogRecordProcessor({\n exporter: reportingExporter,\n scheduledDelayMillis: 1_000,\n maxExportBatchSize: 128,\n maxQueueSize: 2_048,\n }),\n ],\n });\n this.#logger = this.#provider.getLogger('fusion.telemetry');\n }\n /**\n * Flushes pending records and releases the SDK exporter without affecting global telemetry.\n * @returns Resolves after pending exports finish and the SDK provider shuts down.\n */\n shutdown() {\n return this.#provider.shutdown();\n }\n /**\n * Exports buffered records immediately, for deterministic tests and explicit lifecycle boundaries.\n * @returns Resolves when the SDK finishes exporting pending records.\n * @example\n * ```ts\n * await adapter.forceFlush();\n * ```\n */\n forceFlush() {\n return this.#provider.forceFlush();\n }\n /**\n * Exports a telemetry item as an OTLP LogRecord.\n * @param item - App or framework record, including inherited Fusion metadata.\n */\n _processItem(item) {\n const fusion = item.metadata?.fusion;\n const app = fusion && typeof fusion === 'object' && 'app' in fusion ? fusion.app : undefined;\n const appKey = app && typeof app === 'object' && 'key' in app && typeof app.key === 'string'\n ? app.key\n : undefined;\n const attributes = {\n source: appKey ? 'app' : 'framework',\n 'fusion.telemetry.type': item.type,\n 'fusion.telemetry.scope': item.scope,\n ...(appKey ? { 'fusion.app.key': appKey } : {}),\n };\n // OTLP attributes accept primitive values, not arbitrary application objects.\n for (const [key, value] of Object.entries(item.properties ?? {})) {\n // Preserve supported values without serializing circular application objects.\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n attributes[`fusion.properties.${key}`] = value;\n }\n }\n // Error instances do not serialize as useful OTLP attributes automatically.\n if ('exception' in item && item.exception instanceof Error) {\n attributes['exception.type'] = item.exception.name;\n attributes['exception.message'] = item.exception.message;\n attributes['exception.stacktrace'] = item.exception.stack;\n }\n // Keep metric values when representing Fusion metrics as OTLP log records.\n if ('value' in item && typeof item.value === 'number') {\n attributes['fusion.telemetry.value'] = item.value;\n }\n this.#logger.emit({\n body: item.name,\n attributes,\n severityNumber: [\n SeverityNumber.DEBUG,\n SeverityNumber.INFO,\n SeverityNumber.WARN,\n SeverityNumber.ERROR,\n SeverityNumber.FATAL,\n ][item.level],\n });\n }\n}\n//# sourceMappingURL=OtlpAdapter.js.map"],"names":["api.trace","api.isSpanContextValid","api.diag"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,SAAS,KAAK,CAAC;AACxC,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB;AACA;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;AAC3D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE;AAClD,IAAI,IAAI,aAAa;AACrB,IAAI,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClF,QAAQ,aAAa,GAAG,UAAU,CAAC,SAAS,cAAc,GAAG;AAC7D,YAAY,MAAM,CAAC,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC;AAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;AACnB,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI;AAClE,QAAQ,YAAY,CAAC,aAAa,CAAC;AACnC,QAAQ,OAAO,MAAM;AACrB,IAAI,CAAC,EAAE,MAAM,IAAI;AACjB,QAAQ,YAAY,CAAC,aAAa,CAAC;AACnC,QAAQ,MAAM,MAAM;AACpB,IAAI,CAAC,CAAC;AACN;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAyB,GAAG;AACzC,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,UAAU,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM;AAC3C,CAAC;;ACVD;AACA;AACA;AACA;AACO,IAAI,cAAc;AACzB,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa;AACrE,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACzD,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AAC3D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AAC3D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AAC3D,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACzD,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AAC3D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AAC3D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AAC3D,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACvD,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM;AACxD,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ;AAC5D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ;AAC5D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ;AAC5D,IAAI,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;AAC1D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ;AAC5D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ;AAC5D,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ;AAC5D,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC;;AC/B3C;AACA;AACA;AACA;AAEO,SAAS,8BAA8B,CAAC,UAAU,EAAE,OAAO,EAAE;AACpE,IAAI,OAAO;AACX,QAAQ,YAAY,EAAE,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAC;AACnE,KAAK;AACL;AACA,SAAS,iBAAiB,CAAC,UAAU,EAAE;AACvC,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AACjC,IAAI,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;AACrC,QAAQ,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM;AACzD,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9C,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,GAAG,IAAI,GAAG,EAAE;AAC9B,YAAY,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC7C,QAAQ;AACR,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACtD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,EAAE;AACxB,YAAY,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC;AACrD,QAAQ;AACR,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI;AACJ,IAAI,OAAO,WAAW;AACtB;AACA,SAAS,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE;AACvD,IAAI,MAAM,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC;AACrD,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK;AAC3D,QAAQ,MAAM,iBAAiB,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;AACnE,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,iBAAiB;AACvC,YAAY,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK;AAC7D,gBAAgB,OAAO;AACvB,oBAAoB,KAAK,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC;AACjG,oBAAoB,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC/E,oBAAoB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,SAAS;AAC1E,iBAAiB;AACjB,YAAY,CAAC,CAAC;AACd,YAAY,SAAS,EAAE,iBAAiB,CAAC,SAAS;AAClD,SAAS;AACT,IAAI,CAAC,CAAC;AACN;AACA,SAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;AACnC,IAAI,OAAO;AACX,QAAQ,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AACtD,QAAQ,oBAAoB,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;AACtE,QAAQ,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5D,QAAQ,YAAY,EAAE,GAAG,CAAC,YAAY;AACtC,QAAQ,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;AAC3C,QAAQ,SAAS,EAAE,GAAG,CAAC,SAAS;AAChC,QAAQ,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;AACzD,QAAQ,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;AAC1D,QAAQ,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU;AAC1C,QAAQ,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;AAC5E,QAAQ,MAAM,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;AAC1E,KAAK;AACL;AACA,SAAS,gBAAgB,CAAC,cAAc,EAAE;AAC1C,IAAI,OAAO,cAAc;AACzB;;AC3DA;AACA;AACA;AACO,MAAM,kBAAkB,GAAG;AAClC,IAAI,gBAAgB,EAAE,CAAC,GAAG,KAAK;AAC/B,QAAQ,MAAM,OAAO,GAAG,8BAA8B,CAAC,GAAG,EAAE,YAAY,CAAC;AACzE,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACzC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACtD,IAAI,CAAC;AACL,IAAI,mBAAmB,EAAE,CAAC,GAAG,KAAK;AAClC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACzC,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClD,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,sCAAsC,EAAE,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AACvG,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI,CAAC;AACL,CAAC;;ACzBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gDAAgD,GAAG,wBAAwB;;AChBxF;AACA;AACA;AACA;AAKA;AACA;AACA;AACO,MAAM,eAAe,SAAS,gBAAgB,CAAC;AACtD,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AAC7B,QAAQ,KAAK,CAAC,qCAAqC,CAAC,MAAM,EAAE,kBAAkB,EAAE,gDAAgD,EAAE,yBAAyB,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC7O,IAAI;AACJ;;ACfA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,GAAG,EAAE;AACzC,IAAI,OAAO,2BAA2B,CAAC,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC;AAC1D;AACA,SAAS,2BAA2B,CAAC,GAAG,EAAE,OAAO,EAAE;AACnD;AACA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;AACrB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAC/B,QAAQ,OAAO,GAAG,KAAK,QAAQ;AAC/B,QAAQ,OAAO,GAAG,KAAK,SAAS,EAAE;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,YAAY,UAAU,EAAE;AACnC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC9B;AACA,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAChC,YAAY,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AACpC,gBAAgB,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACjE,oBAAoB,OAAO,KAAK;AAChC,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,GAAG;AACvB,QAAQ,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;AACzE,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR;AACA;AACA,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AAC/B,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC9D,gBAAgB,CAAC,2BAA2B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE;AACjE,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACO,IAAI,oBAAoB;AAC/B,CAAC,UAAU,oBAAoB,EAAE;AACjC,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc;AACnF,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB;AAC/F,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AACzE,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,GAAG,wBAAwB;AACvG,CAAC,EAAE,oBAAoB,KAAK,oBAAoB,GAAG,EAAE,CAAC,CAAC;AAChD,SAAS,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,EAAE,KAAK,EAAE;AACrF,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,QAAQ,OAAO,oBAAoB,CAAC,YAAY;AAChD,IAAI;AACJ,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC,CAAC;AAChE,QAAQ,OAAO,oBAAoB,CAAC,YAAY;AAChD,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;AAC3E,IAAI,IAAI,QAAQ,IAAI,sBAAsB,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAC1E,QAAQ,OAAO,oBAAoB,CAAC,kBAAkB;AACtD,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,yBAAyB,CAAC;AAC7E,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,OAAO,oBAAoB,CAAC,OAAO;AAC3C,IAAI;AACJ,IAAI,OAAO,oBAAoB,CAAC,sBAAsB;AACtD;AACA,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;AACtC;AACA,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE;AACpB;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;AACnC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;AACxC,IAAI;AACJ;AACA,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AACrC,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3D,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,YAAY,GAAG,EAAE;AAC/B,QAAQ,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACpD,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC;AACtD,QAAQ;AACR,QAAQ,OAAO,YAAY;AAC3B,IAAI;AACJ;AACA,IAAI,OAAO,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE;AAC7D,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE;AAC5B,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,MAAM,oBAAoB,GAAG,EAAE;AACnC,IAAI,IAAI,sBAAsB,GAAG,CAAC;AAClC,IAAI,IAAI,sBAAsB,GAAG,CAAC;AAClC,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC3D,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,oBAAoB,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,EAAE,KAAK,CAAC;AACvG,QAAQ,IAAI,QAAQ,KAAK,oBAAoB,CAAC,OAAO,EAAE;AACvD,YAAY,sBAAsB,IAAI,CAAC;AACvC,QAAQ;AACR,aAAa,IAAI,QAAQ,KAAK,oBAAoB,CAAC,YAAY,EAAE;AACjE,YAAY,sBAAsB,IAAI,CAAC;AACvC,QAAQ;AACR,aAAa,IAAI,QAAQ,KAAK,oBAAoB,CAAC,kBAAkB,EAAE;AACvE,YAAY,sBAAsB,IAAI,CAAC;AACvC,QAAQ;AACR,aAAa;AAGb,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,UAAU,EAAE,sBAAsB,GAAG,CAAC,GAAG,oBAAoB,GAAG,SAAS;AACjF,QAAQ,sBAAsB;AAC9B,KAAK;AACL;;ACrKA;AACA;AACA;AACA;AAKO,MAAM,aAAa,CAAC;AAC3B,IAAI,QAAQ;AACZ,IAAI,oBAAoB;AACxB,IAAI,UAAU,GAAG,EAAE;AACnB,IAAI,OAAO;AACX,IAAI,eAAe;AACnB,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,eAAe;AACnB,IAAI,KAAK;AACT,IAAI,UAAU;AACd,IAAI,gBAAgB,GAAG,CAAC;AACxB,IAAI,uBAAuB,GAAG,CAAC;AAC/B,IAAI,WAAW,GAAG,KAAK;AACvB,IAAI,gBAAgB;AACpB,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO;AAC3B,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,IAAI;AACJ,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,eAAe;AACnC,IAAI;AACJ,IAAI,IAAI,cAAc,CAAC,cAAc,EAAE;AACvC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc;AAC7C,IAAI;AACJ,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY;AAChC,IAAI;AACJ,IAAI,IAAI,WAAW,CAAC,WAAW,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW;AACvC,IAAI;AACJ,IAAI,IAAI,YAAY,CAAC,YAAY,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,aAAa,GAAG,YAAY;AACzC,IAAI;AACJ,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC,IAAI;AACJ,IAAI,IAAI,cAAc,CAAC,cAAc,EAAE;AACvC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc;AAC7C,IAAI;AACJ,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,eAAe;AACnC,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI;AACzB,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB,IAAI;AACJ,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU;AAC9B,IAAI;AACJ,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC,IAAI;AACJ,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,uBAAuB;AAC3C,IAAI;AACJ,IAAI,WAAW,CAAC,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE;AAC/D,QAAQ,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG,SAAS;AAC/I,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,SAAS,IAAI,GAAG,CAAC;AAC1D,QAAQ,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,iBAAiB,IAAI,GAAG,CAAC;AAC1E,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,MAAM,WAAW,GAAGA,KAAS,CAAC,cAAc,CAAC,OAAO,CAAC;AACjE,YAAY,IAAI,WAAW,IAAIC,kBAAsB,CAAC,WAAW,CAAC,EAAE;AACpE,gBAAgB,IAAI,CAAC,YAAY,GAAG,WAAW;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc;AAC5C,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ;AAC7C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;AACxD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,eAAe;AAC5D,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC,QAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACtC,QAAQ,IAAI,SAAS,IAAI,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AACzC,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,CAAC;AAChH,QAAQ,IAAI,QAAQ,KAAK,oBAAoB,CAAC,kBAAkB,EAAE;AAClE,YAAY,IAAI,CAAC,uBAAuB,EAAE;AAC1C,YAAY,IAAI,IAAI,CAAC,uBAAuB,KAAK,CAAC,EAAE;AACpD;AACA,gBAAgBC,IAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC;AAC3D,YAAY;AACZ,QAAQ;AACR,aAAa,IAAI,QAAQ,KAAK,oBAAoB,CAAC,OAAO,EAAE;AAC5D,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,aAAa,CAAC,UAAU,EAAE;AAC9B,QAAQ,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACzD,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;AACnC,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,YAAY,CAAC,SAAS,EAAE;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,iBAAiB,CAAC,cAAc,EAAE;AACtC,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc;AAC5C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,eAAe,CAAC,YAAY,EAAE;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,IAAI;AACJ,IAAI,aAAa,CAAC,SAAS,EAAE;AAC7B,QAAQ,IAAI,oBAAoB,GAAG,KAAK;AACxC,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AAC5E,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAAE;AACzE,gBAAgB,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5E,YAAY;AACZ,YAAY,oBAAoB,GAAG,IAAI;AACvC,QAAQ;AACR,aAAa,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AAC7D,YAAY,MAAM,YAAY,GAAG,SAAS;AAC1C,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE;AACnC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE;AAC1E,oBAAoB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxF,gBAAgB;AAChB,gBAAgB,oBAAoB,GAAG,IAAI;AAC3C,YAAY;AACZ,iBAAiB,IAAI,YAAY,CAAC,IAAI,EAAE;AACxC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE;AAC1E,oBAAoB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,YAAY,CAAC,IAAI,CAAC;AAC7E,gBAAgB;AAChB,gBAAgB,oBAAoB,GAAG,IAAI;AAC3C,YAAY;AACZ,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE;AACtC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAAE;AAC7E,oBAAoB,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,YAAY,CAAC,OAAO,CAAC;AACnF,gBAAgB;AAChB,gBAAgB,oBAAoB,GAAG,IAAI;AAC3C,YAAY;AACZ,YAAY,IAAI,YAAY,CAAC,KAAK,EAAE;AACpC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,EAAE;AAChF,oBAAoB,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,YAAY,CAAC,KAAK,CAAC;AACpF,gBAAgB;AAChB,gBAAgB,oBAAoB,GAAG,IAAI;AAC3C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,YAAYA,IAAQ,CAAC,IAAI,CAAC,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC,CAAC;AACvE,QAAQ;AACR,IAAI;AACJ,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAYA,IAAQ,CAAC,IAAI,CAAC,qDAAqD,CAAC;AAChF,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B,IAAI;AACJ;;AC5MA;AACA;AACA;AACA;AAIO,MAAM,MAAM,CAAC;AACpB,IAAI,qBAAqB;AACzB,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,WAAW,CAAC,oBAAoB,EAAE,WAAW,EAAE;AACnD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,oBAAoB;AACzD,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW;AACvC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC1F,IAAI;AACJ,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACpE,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACtC,YAAY;AACZ,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,iBAAiB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACnG,YAAY,OAAO,EAAE,cAAc;AACnC,YAAY,GAAG,SAAS;AACxB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,EAAE;AACjD;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;AACnF;AACA;AACA;AACA;AACA,QAAQ,iBAAiB,CAAC,aAAa,EAAE;AACzC,IAAI;AACJ,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC3C,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa;AAC/C,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE;AACnC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc;AACtD,QAAQ,IAAI,OAAO,cAAc,KAAK,QAAQ;AAC9C,YAAY,cAAc,KAAK,cAAc,CAAC,WAAW;AACzD,YAAY,cAAc,GAAG,YAAY,CAAC,eAAe,EAAE;AAC3D,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,cAAc,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AACnE;AACA,QAAQ,IAAI,YAAY,CAAC,UAAU,EAAE;AACrC,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;AACpE,YAAY,IAAI,WAAW,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE;AAChE,gBAAgB,MAAM,SAAS,GAAG,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,MAAM,UAAU,CAAC,OAAO;AACtG,gBAAgB,IAAI,CAAC,SAAS,EAAE;AAChC,oBAAoB,OAAO,KAAK;AAChC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,WAAW,GAAG;AAC5B,YAAY,OAAO,EAAE,cAAc;AACnC,YAAY,oBAAoB,EAAE,IAAI,CAAC,qBAAqB;AAC5D,YAAY,cAAc,EAAE,OAAO,EAAE,cAAc;AACnD,YAAY,SAAS,EAAE,OAAO,EAAE,SAAS;AACzC,SAAS;AACT,QAAQ,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9D,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACtE,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;;ACrFA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,CAAC;AACpC,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE;AACnC,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;;ACfA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACO,MAAM,uBAAuB,CAAC;AACrC,IAAI,UAAU;AACd,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,IAAI;AACJ,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,MAAM,OAAO,GAAG,OAAO,EAAE,aAAa,IAAI,KAAK;AACvD,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,eAAe,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7G,IAAI;AACJ,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACpF,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACjD,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClE,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;AAC1B,IAAI;AACJ,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AACxB,QAAQ,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;AAC1B,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,OAAO,KAAK;AAClC,IAAI,IAAI,SAAS,KAAK,QAAQ,EAAE;AAChC,QAAQ,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3B,IAAI;AACJ,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3B,IAAI;AACJ,IAAI,IAAI,SAAS,KAAK,QAAQ,EAAE;AAChC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,YAAY,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AAChC,QAAQ,IAAI,KAAK,KAAK,QAAQ;AAC9B,YAAY,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AAChC,QAAQ,IAAI,KAAK,KAAK,CAAC,QAAQ;AAC/B,YAAY,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACjC,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;AAChC,YAAY,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,QAAQ,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3B,IAAI;AACJ,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AACrC,QAAQ,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACpD,IAAI;AACJ;AACA,IAAI,OAAO;AACX,QAAQ,KAAK;AACb,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK;AAC5B,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAClD,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAClD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,QAAQ,KAAK,CAAC,IAAI;AAClB,QAAQ,KAAK,CAAC,OAAO,IAAI,EAAE;AAC3B,QAAQ,KAAK,CAAC,SAAS,IAAI,EAAE;AAC7B,QAAQ,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC;AAC3C;AACA;AACA;AACA,QAAQ,KAAK,CAAC,sBAAsB,IAAI,CAAC;AACzC,KAAK,CAAC;AACN;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAA2B,GAAG,sBAAsB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uCAAuC,GAAG,kCAAkC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4CAA4C,GAAG,uCAAuC;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wCAAwC,GAAG,mCAAmC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,GAAG,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,GAAG,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gDAAgD,GAAG,wBAAwB;AASxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,GAAG,YAAY;;ACvH3C;AACA;AACA;AACA;AACO,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW;AACf,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,2BAA2B,EAAE;AAC5E,YAAY,IAAI,EAAE,cAAc;AAChC,YAAY,WAAW,EAAE,sDAAsD;AAC/E,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,IAAI;AACJ;;AChBA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,SAAS;;ACLhC;AACA;AACA;AACA;AAQA,MAAM,qBAAqB,GAAG;AAC9B,IAAI,QAAQ,EAAE,KAAK;AACnB,IAAI,eAAe,EAAE,cAAc,CAAC,WAAW;AAC/C,IAAI,UAAU,EAAE,KAAK;AACrB,CAAC;AACD;AACA;AACA;AACO,MAAM,2BAA2B,GAAG,OAAO;AAClD,IAAI,GAAG,qBAAqB;AAC5B,CAAC,CAAC;AACK,MAAM,yBAAyB,CAAC;AACvC,IAAI,OAAO,GAAG,IAAI,GAAG,EAAE;AACvB,IAAI,eAAe;AACnB,IAAI,6BAA6B,GAAG,EAAE;AACtC,IAAI,QAAQ;AACZ,IAAI,eAAe;AACnB,IAAI,UAAU;AACd,IAAI,aAAa;AACjB,IAAI,WAAW,GAAG,KAAK;AACvB,IAAI,mBAAmB;AACvB,IAAI,cAAc,GAAG,IAAI,GAAG,EAAE;AAC9B,IAAI,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE;AAC1F,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAY,IAAI,CAAC,6BAA6B,GAAG,UAAU;AAC3D,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,6BAA6B,CAAC;AAClG,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI,sBAAsB,EAAE;AAC/D,QAAQ;AACR,QAAQ,IAAI,CAAC,mBAAmB;AAChC,YAAY,kBAAkB,IAAI,2BAA2B;AAC7D,QAAQ,MAAM,KAAK,GAAG;AACtB,cAAc,aAAa,CAAC,QAAQ,CAAC,yBAAyB,EAAE,OAAO;AACvE,cAAc,eAAe,EAAE;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,oBAAoB,EAAE;AAC1C,QAAQ,MAAM,GAAG,GAAG,0BAA0B,CAAC,oBAAoB,CAAC;AACpE;AACA,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AACjD,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR;AACA;AACA,QAAQ,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;AAC/D;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC5C,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ;;ACxEA;AACA;AACA;AACA;AASO,MAAM,mBAAmB,GAAG,SAAS;AACrC,MAAM,cAAc,CAAC;AAC5B,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AAC7B,QAAQ,MAAM,YAAY,GAAG;AAC7B,YAAY,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,eAAe,EAAE;AAC1D,YAAY,eAAe,EAAE;AAC7B,gBAAgB,mBAAmB,EAAE,MAAM,CAAC,eAAe,EAAE,mBAAmB,IAAI,GAAG;AACvF,gBAAgB,yBAAyB,EAAE,MAAM,CAAC,eAAe,EAAE,yBAAyB,IAAI,QAAQ;AACxG,aAAa;AACb,YAAY,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,2BAA2B;AACxF,YAAY,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;AAC/C,YAAY,aAAa,EAAE,MAAM,CAAC,aAAa;AAC/C,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,yBAAyB,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC,aAAa,CAAC;AACpM,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AACzC,YAAY,IAAI,CAAC,IAAI,CAAC,mDAAmD,CAAC;AAC1E,YAAY,OAAO,gBAAgB,EAAE;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAC;AAC7E,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,IAAI,IAAI,mBAAmB;AACtD,QAAQ,MAAM,oBAAoB,GAAG;AACrC,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,OAAO;AACnB,YAAY,SAAS,EAAE,OAAO,EAAE,SAAS;AACzC,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC;AAC/F,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,0BAA0B,CAAC,oBAAoB,CAAC;AACpE,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjD,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACnG,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACjD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB;AACA,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AACzC,YAAY,IAAI,CAAC,IAAI,CAAC,8DAA8D,CAAC;AACrF,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO;AAC7C,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC;AACpE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AACzC,YAAY,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC;AAC5E,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO;AAC7C,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACxC,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI;AAC5C,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC3D,IAAI;AACJ;;ACpFA;AACA;AACA;AACA;AAEA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAE;AAC3B,MAAM,yBAAyB,CAAC;AACvC,IAAI,aAAa;AACjB,IAAI,SAAS;AACb,IAAI,iBAAiB;AACrB,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,IAAI,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AACnD,QAAQ,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;AAChE,QAAQ,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,aAAa,GAAG;AAC7B,YAAY,CAAC,wBAAwB,GAAG,aAAa;AACrD,YAAY,CAAC,wBAAwB,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG;AAC5B,YAAY,GAAG,IAAI,CAAC,aAAa;AACjC,YAAY,CAAC,eAAe,GAAG,YAAY;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,uCAAuC,EAAE;AAC1F,YAAY,IAAI,EAAE,cAAc;AAChC,YAAY,WAAW,EAAE,+FAA+F;AACxH,SAAS,CAAC;AACV,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,WAAW;AAC1D,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,4CAA4C,EAAE;AAC1G,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,WAAW,EAAE,mGAAmG;AAChI,aAAa,CAAC;AACd,YAAY,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;AAC3D,YAAY,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,6BAA6B,CAAC,wCAAwC,EAAE;AAC3G,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,WAAW,EAAE,qFAAqF;AAClH,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,iBAAiB,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC;AACjG,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC9D,QAAQ;AACR,IAAI;AACJ,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;AACxD,IAAI;AACJ,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;AAC7D,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG;AACtB,YAAY,GAAG,IAAI,CAAC,aAAa;AACjC,YAAY,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI;AACzC,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5C,IAAI;AACJ,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACtD,YAAY,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACjE,QAAQ;AACR,IAAI;AACJ;;AC7DA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA,eAAe,gBAAgB,CAAC,UAAU,EAAE;AAC5C,IAAI,MAAM,gBAAgB,GAAG,EAAE;AAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC3D,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,sBAAsB;AACrD,YAAY,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE;AACvD,YAAY,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;AAC9E,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,gBAAgB,IAAI,IAAI,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC3C,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,gBAAgB;AACpB,IAAI,uBAAuB;AAC3B,IAAI,QAAQ;AACZ,IAAI,uBAAuB;AAC3B,IAAI,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE;AACpE,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI;AAC9D,YAAY,IAAI,CAAC,uBAAuB,GAAG,OAAO;AAClD,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;AAC9F,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,IAAI;AACJ;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,gBAAgB;AACpC,IAAI;AACJ;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,uBAAuB;AAC3C,IAAI;AACJ,IAAI,MAAM,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE;AACpE,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,gBAAgB,CAAC,UAAU,CAAC;AAC9C;AACA,YAAY,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY;AAC9E,gBAAgB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;AACzF,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB;AACA,YAAY,kBAAkB,CAAC,CAAC,CAAC;AACjC;AACA,YAAY,IAAI,CAAC,uBAAuB,EAAE;AAC1C,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE;AACxE,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;AAC3C,gBAAgB,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AAC5C,YAAY,CAAC,EAAE,mBAAmB,CAAC;AACnC;AACA,YAAY,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI;AAClD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;AACzE,gBAAgB,YAAY,CAAC,KAAK,CAAC;AACnC,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE;AAC9D,oBAAoB,OAAO,EAAE;AAC7B,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,MAAM,CAAC,KAAK;AACvC,wBAAwB,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACvF,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd;AACA,YAAY,IAAI,CAAC,uBAAuB,EAAE;AAC1C,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACO,MAAM,2BAA2B,CAAC;AACzC,IAAI,mBAAmB;AACvB,IAAI,aAAa;AACjB,IAAI,qBAAqB;AACzB,IAAI,oBAAoB;AACxB,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,cAAc,GAAG,IAAI;AACzB,IAAI,mBAAmB,GAAG,EAAE;AAC5B,IAAI,MAAM;AACV,IAAI,aAAa;AACjB,IAAI,SAAS,GAAG,KAAK;AACrB,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ;AACzC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,IAAI,GAAG;AACpE,QAAQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI;AACzD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,IAAI,IAAI;AACzE,QAAQ,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,IAAI,KAAK;AACxE,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACrE,QAAQ,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE;AAC3D,YAAY,IAAI,CAAC,IAAI,CAAC,wIAAwI,CAAC;AAC/J,YAAY,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa;AACzD,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,OAAO,EAAE;AAC/B,cAAc,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,yBAAyB;AAC7E,cAAc,eAAe,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAyB,CAAC,gDAAgD,EAAE,KAAK,EAAE;AAC/G,YAAY,QAAQ,EAAE,IAAI,CAAC,aAAa;AACxC,YAAY,YAAY,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM;AAC/D,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,CAAC,SAAS,EAAE;AACtB,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACpC,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AACzC,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO;AAC7C,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE;AAC/B,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,SAAS,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;AACnE,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,IAAI;AACJ,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACxC,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,MAAM,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAChC,QAAQ,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B;AACA;AACA,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB;AAC9C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE;AACrC;AACA,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B;AACA;AACA;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc;AAC5C,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC/B;AACA,YAAY,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC7C,YAAY,MAAM,QAAQ,CAAC,eAAe;AAC1C,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI;AACtC,QAAQ;AACR;AACA,QAAQ,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAY,IAAI,KAAK;AACrB,YAAY,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5D,gBAAgB,KAAK,GAAG,OAAO;AAC/B,gBAAgB,OAAO,GAAG,EAAE;AAC5B,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACnE,YAAY;AACZ,YAAY,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjH,YAAY,IAAI,CAAC,cAAc,GAAG,QAAQ;AAC1C;AACA,YAAY,IAAI;AAChB,gBAAgB,MAAM,QAAQ,CAAC,eAAe;AAC9C,gBAAgB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACjD,gBAAgB,MAAM,QAAQ,CAAC,eAAe;AAC9C,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,kBAAkB,CAAC,CAAC,CAAC;AACrC,YAAY;AACZ,oBAAoB;AACpB,gBAAgB,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;AAC9B,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACzE,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB;AAClD,YAAY,IAAI,CAAC,mBAAmB,GAAG,EAAE;AACzC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC/E,QAAQ;AACR,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAC/C,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE;AACjC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC;AAClH,QAAQ,IAAI,CAAC,cAAc,GAAG,QAAQ;AACtC;AACA,QAAQ,QAAQ,CAAC;AACjB,aAAa,IAAI,CAAC,MAAM;AACxB,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI;AACtC,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAQ,CAAC;AACT,aAAa,KAAK,CAAC,KAAK,IAAI;AAC5B,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI;AACtC,YAAY,kBAAkB,CAAC,KAAK,CAAC;AACrC,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AAC1C,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACzE,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AACvC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AACvC,YAAY,IAAI,CAAC,MAAM,GAAG,SAAS;AACnC,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC,QAAQ,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;AACtC;AACA,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC7C,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC/B,QAAQ;AACR,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AACvC,YAAY,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,YAAY,IAAI,CAAC,MAAM,GAAG,SAAS;AACnC,QAAQ;AACR,IAAI;AACJ;;ACrRA;AACA;AACA;AACA;AAEO,MAAM,uBAAuB,SAAS,2BAA2B,CAAC;AACzE,IAAI,yBAAyB;AAC7B,IAAI,iBAAiB;AACrB,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC5C,YAAY,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC;AAC5F,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAC5E,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,IAAI,OAAO,CAAC,8BAA8B,KAAK,IAAI;AAC3D,YAAY,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,yBAAyB,GAAG,MAAM;AAC/C,YAAY,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;AACvD,gBAAgB,KAAK,IAAI,CAAC,UAAU,EAAE;AACtC,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM;AACvC,YAAY,KAAK,IAAI,CAAC,UAAU,EAAE;AAClC,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC;AACrF;AACA,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACrE,IAAI;AACJ;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,SAAS,oBAAoB,CAAC;AACtD;AACA,IAAI,QAAQ;AACZ,IAAI,gBAAgB,GAAG,KAAK;AAC5B,IAAI,OAAO;AACX,IAAI,SAAS;AACb;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK;AACjD,QAAQ,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AACxF,QAAQ,MAAM,iBAAiB,GAAG;AAClC,YAAY,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC3C,gBAAgB,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK;AACrD;AACA,oBAAoB,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACrE,wBAAwB,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpD,wBAAwB,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,MAAM,CAAC,KAAK,CAAC;AACzG,oBAAoB;AACpB,oBAAoB,QAAQ,CAAC,MAAM,CAAC;AACpC,gBAAgB,CAAC,CAAC;AAClB,YAAY,CAAC;AACb,YAAY,UAAU,EAAE,MAAM,QAAQ,CAAC,UAAU,EAAE;AACnD,YAAY,QAAQ,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE;AAC/C,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC;AAC5C,YAAY,QAAQ,EAAE,sBAAsB,CAAC;AAC7C,gBAAgB,cAAc,EAAE,OAAO,CAAC,WAAW,IAAI,kBAAkB;AACzE,aAAa,CAAC;AACd;AACA,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,uBAAuB,CAAC;AAC5C,oBAAoB,QAAQ,EAAE,iBAAiB;AAC/C,oBAAoB,oBAAoB,EAAE,KAAK;AAC/C,oBAAoB,kBAAkB,EAAE,GAAG;AAC3C,oBAAoB,YAAY,EAAE,KAAK;AACvC,iBAAiB,CAAC;AAClB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACxC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC1C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM;AAC5C,QAAQ,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS;AACpG,QAAQ,MAAM,MAAM,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK;AAC5F,cAAc,GAAG,CAAC;AAClB,cAAc,SAAS;AACvB,QAAQ,MAAM,UAAU,GAAG;AAC3B,YAAY,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW;AAChD,YAAY,uBAAuB,EAAE,IAAI,CAAC,IAAI;AAC9C,YAAY,wBAAwB,EAAE,IAAI,CAAC,KAAK;AAChD,YAAY,IAAI,MAAM,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3D,SAAS;AACT;AACA,QAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE;AAC1E;AACA,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACtG,gBAAgB,UAAU,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK;AAC9D,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,YAAY,KAAK,EAAE;AACpE,YAAY,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI;AAC9D,YAAY,UAAU,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACpE,YAAY,UAAU,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AACrE,QAAQ;AACR;AACA,QAAQ,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC/D,YAAY,UAAU,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,KAAK;AAC7D,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1B,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3B,YAAY,UAAU;AACtB,YAAY,cAAc,EAAE;AAC5B,gBAAgB,cAAc,CAAC,KAAK;AACpC,gBAAgB,cAAc,CAAC,IAAI;AACnC,gBAAgB,cAAc,CAAC,IAAI;AACnC,gBAAgB,cAAc,CAAC,KAAK;AACpC,gBAAgB,cAAc,CAAC,KAAK;AACpC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,SAAS,CAAC;AACV,IAAI;AACJ;;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a5 as MsalConfigurator, a6 as module$1 } from './module-
|
|
1
|
+
import { a5 as MsalConfigurator, a6 as module$1 } from './module-Xg35JJRU.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Encodes a value as base64url without padding, as used in JWT segments.
|
|
@@ -803,4 +803,4 @@ configurator, configure) => {
|
|
|
803
803
|
};
|
|
804
804
|
|
|
805
805
|
export { MsalMockClient, MsalMockConfigurator, createMockToken, decodeJwtSegment, enableMsalMock, msalMockModule };
|
|
806
|
-
//# sourceMappingURL=index-
|
|
806
|
+
//# sourceMappingURL=index-CDpTfyge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CDpTfyge.js","sources":["../../../modules/msal/dist/esm/mock/create-mock-token.js","../../../modules/msal/dist/esm/mock/decode-jwt-segment.js","../../../modules/msal/dist/esm/mock/create-mock-user-from-token.js","../../../modules/msal/dist/esm/mock/mock-client-operations.js","../../../modules/msal/dist/esm/mock/MsalMockClient.js","../../../modules/msal/dist/esm/mock/MsalMockConfigurator.js","../../../modules/msal/dist/esm/mock/module.js"],"sourcesContent":["/**\n * Encodes a value as base64url without padding, as used in JWT segments.\n *\n * @param value - Raw string to encode.\n * @returns The base64url representation.\n */\nconst base64Url = (value) => {\n // btoa operates on latin1; encodeURIComponent round-trip keeps non-ASCII names intact\n const bytes = new TextEncoder().encode(value);\n let binary = '';\n // Iterate over encoded bytes so Unicode claims are preserved before base64url encoding.\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n};\n/**\n * Creates a structurally valid, unsigned JWT for use in tests.\n *\n * The token has three base64url segments and decodes to the supplied claims, so\n * code that splits, decodes, or inspects token claims behaves exactly as it does\n * in production. The signature segment is a fixed placeholder — the token is\n * **not** cryptographically valid and will be rejected by any real service.\n *\n * @remarks\n * Timestamps default to a fixed issue time and a one-hour lifetime so repeated\n * runs produce byte-identical tokens. A test that needs an expired token can set\n * `exp` in the past.\n *\n * @param claims - Claims to embed in the token payload.\n * @returns An unsigned JWT string in `header.payload.signature` form.\n *\n * @example\n * ```typescript\n * const token = createMockToken({ name: 'Test User', scp: 'Files.Read' });\n * const [, payload] = token.split('.');\n * JSON.parse(decodeJwtSegment(payload)).name; // 'Test User'\n * ```\n */\nexport const createMockToken = (claims = {}) => {\n const header = { alg: 'none', typ: 'JWT' };\n // Fixed default clock keeps generated tokens byte-identical between runs\n const issuedAt = claims.iat ?? 1_700_000_000;\n const payload = {\n iss: 'https://login.microsoftonline.com/fusion-test-tenant/v2.0',\n aud: 'fusion-test-client',\n tid: 'fusion-test-tenant',\n oid: 'fusion-test-user',\n iat: issuedAt,\n nbf: issuedAt,\n exp: issuedAt + 3600,\n ...claims,\n };\n return [\n base64Url(JSON.stringify(header)),\n base64Url(JSON.stringify(payload)),\n 'fusion-test-signature',\n ].join('.');\n};\n//# sourceMappingURL=create-mock-token.js.map","/**\n * Decodes a base64url segment of a {@link createMockToken} JWT back to its JSON string.\n *\n * @remarks\n * Plain `atob` alone mangles non-ASCII claims: it treats its output as latin1,\n * while segments are UTF-8 encoded. This reverses that encoding and also\n * restores the standard base64 alphabet/padding `atob` expects.\n *\n * @param segment - A base64url segment, e.g. from splitting a JWT on `.`.\n * @returns The decoded UTF-8 string.\n */\nexport function decodeJwtSegment(segment) {\n const base64 = segment\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n .padEnd(segment.length + ((4 - (segment.length % 4)) % 4), '=');\n const binary = atob(base64);\n const bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));\n return new TextDecoder().decode(bytes);\n}\nexport default decodeJwtSegment;\n//# sourceMappingURL=decode-jwt-segment.js.map","import { decodeJwtSegment } from './decode-jwt-segment.js';\n/**\n * Derives internal mock identity fields from a JWT payload.\n *\n * @remarks\n * Maps the standard Entra ID claims Fusion applications read — `name`,\n * `preferred_username`, `oid`, `tid`, `scp` — onto the matching\n * {@link MsalMockUser} fields used to synchronize the account with the acquired token.\n *\n * @param token - A JWT (e.g. from {@link createMockToken}, or issued by an\n * external mock) with a base64url-encoded payload segment.\n * @returns A mock user built from the token's claims.\n * @throws When the token has no payload segment (`header.payload.signature`).\n *\n */\nexport const createMockUserFromToken = (token) => {\n const [, payload] = token.split('.');\n // fail loudly rather than signing in an empty/garbage user from a malformed token\n if (!payload) {\n throw new Error('createMockUserFromToken: expected a JWT with a payload segment (header.payload.signature)');\n }\n const claims = JSON.parse(decodeJwtSegment(payload));\n return {\n name: claims.name,\n username: claims.preferred_username,\n userId: claims.oid,\n tenantId: claims.tid,\n scopes: claims.scp?.split(' '),\n };\n};\n//# sourceMappingURL=create-mock-user-from-token.js.map","const clientOperations = new WeakMap();\n/**\n * Bridges configurator-owned token acquisition into a mock client without exposing mutation APIs.\n */\nexport const mockClientOperations = {\n /**\n * Registers the private operations captured by a mock client.\n *\n * @param client - Mock client owning the state.\n * @param operations - Private operations captured by the client.\n */\n register(client, operations) {\n clientOperations.set(client, operations);\n },\n /**\n * Injects configurator-owned token acquisition into a registered mock client.\n *\n * @param client - Mock client receiving token acquisition.\n * @param acquireToken - Function that obtains a token for requested scopes.\n * @throws When the client has not registered its private operations.\n */\n configure(client, acquireToken) {\n const operations = clientOperations.get(client);\n // Configuration must not silently succeed when called for an unknown client.\n if (!operations) {\n throw new Error('MsalMockClient: token-acquisition operation is unavailable');\n }\n operations.setAcquireToken(acquireToken);\n },\n};\n//# sourceMappingURL=mock-client-operations.js.map","import { createMockToken } from './create-mock-token.js';\nimport { createMockUserFromToken } from './create-mock-user-from-token.js';\nimport { mockClientOperations } from './mock-client-operations.js';\n/**\n * A stand-in for the MSAL client that resolves tokens in-process.\n *\n * @remarks\n * Constructed from {@link MsalClientConfig} — the very same argument\n * {@link MsalClient} takes — so it is a drop-in substitute rather than a second\n * API to learn. `setClientConfig` therefore means the same thing whether a test\n * runs against Entra ID or against this client.\n *\n * Only the boundary that would contact Entra ID is replaced. The real\n * `MsalProvider` runs on top of it unchanged, so account handling, silent-token\n * preference, scope resolution, proxy providers and telemetry behave as they do in\n * production — the test exercises the framework rather than the mock.\n *\n * Tokens are structurally valid, unsigned JWTs and are byte-identical between runs.\n * They are **not** cryptographically valid and are rejected by any real service.\n */\nexport class MsalMockClient {\n #user;\n #cache = new Map();\n #activeAccountId = null;\n #acquireMockToken;\n #fallbackUser;\n #fallbackAccount = null;\n /**\n * The account currently signed in, or `null`.\n *\n * @remarks\n * Reads through the cache rather than holding an account of its own, so an\n * account removed by a sign-out cannot linger as the active one.\n *\n * @returns The cached active account, or `null` when none is active.\n */\n get #account() {\n return this.#activeAccountId ? (this.#cache.get(this.#activeAccountId) ?? null) : null;\n }\n /**\n * Signs an account in, adding it to the cache and making it active.\n *\n * @param account - The account to sign in.\n * @returns The signed-in account.\n */\n #signIn(account) {\n this.#cache.set(account.homeAccountId, account);\n this.#activeAccountId = account.homeAccountId;\n return account;\n }\n /**\n * Signs the active account out, as MSAL does — the account leaves the cache.\n */\n #signOut() {\n // Only clear the cache entry when a session is active; this preserves an already signed-out state.\n if (this.#activeAccountId) {\n this.#cache.delete(this.#activeAccountId);\n this.#activeAccountId = null;\n }\n }\n /**\n * Mirrors MSAL's redirect completion, which is a no-op for this in-process mock.\n * @returns Always `null`, because the mock performs no redirect.\n */\n async handleRedirectPromise() {\n return null;\n }\n /**\n * Mirrors silent SSO and returns a token for the cached mock account.\n * @param request - Silent SSO options and requested scopes.\n * @returns A mock authentication result.\n * @throws When no account is cached.\n */\n async ssoSilent(request) {\n // Silent SSO must fail without a session so providers exercise their login path.\n if (!this.#account) {\n throw new Error('MsalMockClient: no cached account for silent sign-in');\n }\n return this.#createResult(request.scopes);\n }\n /**\n * Mirrors popup login by signing in the configured mock user immediately.\n * @param request - Optional popup options and requested scopes.\n * @returns A mock authentication result.\n */\n async loginPopup(request) {\n this.#signIn(this.#createAccount());\n return this.#createResult(request?.scopes);\n }\n /**\n * Mirrors redirect login without navigating, because the mock has no browser boundary.\n * @param _request - Redirect options, accepted for interface compatibility.\n */\n async loginRedirect(_request) {\n this.#signIn(this.#createAccount());\n }\n /**\n * Mirrors the framework login entry point with an immediate mock sign-in.\n * @param options - Login options including the requested scopes.\n * @returns A mock login result.\n */\n async login(options) {\n this.#signIn(this.#createAccount());\n return this.#createResult(options.request?.scopes);\n }\n /** Mirrors logout by removing the active mock account from the cache. */\n async logout() {\n this.#signOut();\n }\n /**\n * Mirrors MSAL initialization without performing a network handshake.\n * @param _request - Initialization options, accepted for interface compatibility.\n */\n async initialize(_request) {\n // No network handshake to perform\n }\n /**\n * Mirrors popup token acquisition using the mock login flow.\n * @param request - Popup token request.\n * @returns A mock authentication result.\n */\n async acquireTokenPopup(request) {\n return this.loginPopup(request);\n }\n /**\n * Mirrors redirect token acquisition without browser navigation.\n * @param request - Redirect token request.\n */\n async acquireTokenRedirect(request) {\n return this.loginRedirect(request);\n }\n /**\n * Mirrors silent token acquisition for the cached mock account.\n * @param request - Silent token request.\n * @returns A mock authentication result.\n * @throws When no account is cached.\n */\n async acquireTokenSilent(request) {\n // Silent acquisition must fail without a session, matching the real MSAL boundary.\n if (!this.#account) {\n throw new Error('MsalMockClient: no cached account for silent sign-in');\n }\n return this.#createResult(request.scopes);\n }\n /**\n * Mirrors MSAL event registration; events are intentionally not emitted by the mock.\n * @param _callback - Event handler, accepted for interface compatibility.\n * @param _eventTypes - Event types, accepted for interface compatibility.\n * @returns Always `null`, because the mock registers no callback.\n */\n addEventCallback(_callback, _eventTypes) {\n return null;\n }\n /**\n * Mirrors event removal as a no-op because this mock registers no callbacks.\n * @param _callbackId - Callback identifier, accepted for interface compatibility.\n */\n removeEventCallback(_callbackId) {\n // No-op for mock\n }\n /**\n * Mirrors performance callback registration with a stable mock identifier.\n * @param _callback - Performance handler, accepted for interface compatibility.\n * @returns A stable mock callback identifier.\n */\n addPerformanceCallback(_callback) {\n return 'mock-performance-callback';\n }\n /**\n * Mirrors performance callback removal and reports successful mock removal.\n * @param _callbackId - Callback identifier, accepted for interface compatibility.\n * @returns Always `true` because no callback state is retained.\n */\n removePerformanceCallback(_callbackId) {\n return true;\n }\n /**\n * Mirrors MSAL account lookup against the mock cache.\n * @param accountFilter - Account fields to match.\n * @returns The first matching account, or `null`.\n */\n getAccount(accountFilter) {\n const filter = (accountFilter ?? {});\n // Filter the cache so callers observe the same account-selection semantics as MSAL.\n const matches = this.getAllAccounts().filter((account) => (filter.homeAccountId === undefined || filter.homeAccountId === account.homeAccountId) &&\n (filter.localAccountId === undefined || filter.localAccountId === account.localAccountId) &&\n (filter.username === undefined || filter.username === account.username) &&\n (filter.tenantId === undefined || filter.tenantId === account.tenantId));\n return matches[0] ?? null;\n }\n /**\n * Mirrors MSAL account enumeration using the mock cache.\n * @param _accountFilter - Account filter, accepted for interface compatibility.\n * @returns All accounts currently in the mock cache.\n */\n getAllAccounts(_accountFilter) {\n return [...this.#cache.values()];\n }\n /**\n * Mirrors redirect logout without navigating in the mock environment.\n * @param _request - Logout options, accepted for interface compatibility.\n */\n async logoutRedirect(_request) {\n this.#signOut();\n }\n /**\n * Mirrors popup logout without opening a browser window.\n * @param _request - Logout options, accepted for interface compatibility.\n */\n async logoutPopup(_request) {\n this.#signOut();\n }\n /**\n * Mirrors MSAL logger access; the mock does not retain a logger.\n * @returns An interface-compatible empty logger value.\n */\n getLogger() {\n // MSAL's Logger has a large internal surface with no mock consumers depend on; callers only pass it through\n return undefined;\n }\n /**\n * Mirrors logger configuration as a no-op for the mock.\n * @param _logger - Logger, accepted for interface compatibility.\n */\n setLogger(_logger) {\n // No-op for mock\n }\n /**\n * Mirrors wrapper metadata initialization as a no-op for the mock.\n * @param _sku - Wrapper identifier, accepted for interface compatibility.\n * @param _version - Wrapper version, accepted for interface compatibility.\n */\n initializeWrapperLibrary(_sku, _version) {\n // No-op for mock wrapper\n }\n /**\n * Mirrors navigation-client configuration as a no-op because no navigation occurs.\n * @param _navigationClient - Navigation client, accepted for interface compatibility.\n */\n setNavigationClient(_navigationClient) {\n // No-op for mock\n }\n /**\n * Mirrors configuration access and rejects it because the mock has no browser config.\n * @returns Never; this mock does not expose browser configuration.\n * @throws Always, because browser configuration is unsupported.\n */\n getConfiguration() {\n throw new Error('MsalMockClient: getConfiguration is not supported in the mock client');\n }\n /**\n * Mirrors cache hydration as a no-op because mock tokens are created in-process.\n * @param _result - Authentication result, accepted for interface compatibility.\n * @param _request - Original token request, accepted for interface compatibility.\n */\n async hydrateCache(_result, _request) {\n // No-op for mock\n }\n /**\n * Mirrors MSAL cache clearing by removing every mock account.\n * @param _request - Cache-clear options, accepted for interface compatibility.\n */\n async clearCache(_request) {\n this.#cache.clear();\n this.#activeAccountId = null;\n }\n /**\n * Mirrors the generic token acquisition entry point for the active mock account.\n * @param options - Token acquisition options.\n * @returns A mock result, or `null` without an active account.\n */\n async acquireToken(options) {\n // Generic acquisition returns no result when no account is active, matching MSAL's nullable result.\n if (!this.#account) {\n return null;\n }\n return this.#createResult(options.request?.scopes);\n }\n /**\n * Mirrors authorization-code exchange by signing in and returning a mock result.\n * @param request - Authorization-code request.\n * @returns A mock authentication result.\n */\n async acquireTokenByCode(request) {\n this.#signIn(this.#createAccount());\n return this.#createResult(request?.scopes);\n }\n /**\n * Creates a mock client for the services the given configuration points at.\n *\n * @remarks\n * Takes the same argument as {@link MsalClient}. A user named `Test User` is\n * already in the account cache, so a provider built on this client boots the\n * way one does for a returning user with a live session — no sign-in runs, and\n * the provider's start-up path sees the state it would see in production.\n *\n * @param config - The same client configuration the real client is built from.\n */\n constructor(config) {\n const tenantId = config.auth.tenantId ?? MsalMockClient.#tenantFromAuthority(config.auth);\n this.#user = {\n name: 'Test User',\n username: 'test.user@equinor.com',\n userId: 'fusion-mock-user',\n tenantId: tenantId ?? 'fusion-mock-tenant',\n scopes: ['fusion-mock-scope'],\n clientId: config.auth.clientId,\n };\n this.#fallbackUser = { ...this.#user, scopes: [...this.#user.scopes] };\n mockClientOperations.register(this, {\n setAcquireToken: (acquireToken) => this.#setAcquireToken(acquireToken),\n });\n this.#signIn(this.#createAccount());\n }\n /**\n * Reads the tenant out of an authority URL.\n *\n * @remarks\n * A configuration may carry only `authority`, in which case the tenant still\n * has to end up on the tokens this client mints for the account to look like\n * the one a real sign-in would have produced.\n *\n * @param auth - The auth section of the client configuration.\n * @returns The tenant, or `undefined` when the authority carries none.\n */\n static #tenantFromAuthority(auth) {\n // An explicit tenant takes precedence; only parse authority when configuration omitted it.\n if (!auth.authority) {\n return undefined;\n }\n try {\n // Remove empty URL path segments to identify the authority's tenant consistently.\n const segments = new URL(auth.authority).pathname.split('/').filter(Boolean);\n return segments.at(-1);\n }\n catch {\n return undefined;\n }\n }\n /**\n * Returns the client identifier used by tokens minted by this mock.\n * @returns The configured client identifier.\n */\n get clientId() {\n return this.#user.clientId;\n }\n /**\n * Returns the tenant identifier used by tokens minted by this mock.\n * @returns The configured tenant identifier.\n */\n get tenantId() {\n return this.#user.tenantId;\n }\n /**\n * Reports whether the mock currently has an active account.\n * @returns Whether an account is active.\n */\n get hasValidClaims() {\n return this.#account !== null;\n }\n /**\n * Mirrors MSAL active-account access using the mock's single active account.\n * @returns The active account, or `null`.\n */\n getActiveAccount() {\n return this.#account;\n }\n /**\n * Makes an account the active one, adding it to the cache if it is unknown.\n *\n * @remarks\n * Real MSAL requires the account to already be cached. Accepting an unknown\n * one is a deliberate concession to tests: it is the shortest way to swap the\n * signed-in user between runs, without reconstructing the framework.\n *\n * @param next - The account to make active, or `null` to sign out.\n */\n setActiveAccount(next) {\n // A null account is the MSAL sign-out signal, so clear the active mock session.\n if (!next) {\n this.#signOut();\n return;\n }\n this.#signIn(next);\n }\n /**\n * Applies identity claims derived from an acquired token.\n *\n * @param user - Identity fields decoded from the token.\n */\n #applyMockUser(user) {\n this.#cache.clear();\n this.#activeAccountId = null;\n // Missing claims must come from the immutable fallback, never the previously acquired persona.\n this.#user = {\n ...this.#fallbackUser,\n ...user,\n name: user.name ?? this.#fallbackUser.name,\n username: user.username ?? this.#fallbackUser.username,\n userId: user.userId ?? this.#fallbackUser.userId,\n tenantId: user.tenantId ?? this.#fallbackUser.tenantId,\n scopes: [...(user.scopes ?? this.#fallbackUser.scopes)],\n };\n this.#signIn(this.#createAccount());\n }\n /**\n * Injects token acquisition for the active test runtime.\n *\n * @remarks\n * An acquired token is authoritative for both bearer and account state. The\n * current in-process identity is captured as the fallback restored when the\n * function returns `null`.\n *\n * @param acquireToken - Function that obtains a token for requested scopes.\n */\n #setAcquireToken(acquireToken) {\n this.#acquireMockToken = acquireToken;\n this.#fallbackUser = { ...this.#user, scopes: [...this.#user.scopes] };\n this.#fallbackAccount = this.#account ? { ...this.#account } : null;\n }\n /**\n * Creates the one account represented by this mock's configured identity.\n * @returns An MSAL-shaped account for the configured user.\n */\n #createAccount() {\n return {\n homeAccountId: `${this.#user.userId}.${this.#user.tenantId}`,\n localAccountId: this.#user.userId,\n environment: 'login.microsoftonline.com',\n tenantId: this.#user.tenantId,\n username: this.#user.username,\n name: this.#user.name,\n };\n }\n /**\n * Creates an MSAL-shaped token result for the requested or default scopes.\n * @param scopes - Requested scopes, or the user's configured defaults.\n * @returns An MSAL-shaped mock authentication result.\n */\n async #createResult(scopes) {\n const granted = scopes?.length ? scopes : this.#user.scopes;\n const acquiredToken = await this.#acquireMockToken?.({\n scopes: granted,\n account: this.#account,\n clientId: this.#user.clientId,\n });\n // An acquired token atomically defines both the bearer value and active account.\n if (typeof acquiredToken === 'string') {\n this.#applyMockUser(createMockUserFromToken(acquiredToken));\n }\n // A null result restores the exact in-process fallback state.\n if (acquiredToken === null) {\n this.#user = { ...this.#fallbackUser, scopes: [...this.#fallbackUser.scopes] };\n this.#cache.clear();\n this.#activeAccountId = null;\n // Re-establish the original account when the client started signed in.\n if (this.#fallbackAccount) {\n this.#signIn({ ...this.#fallbackAccount });\n }\n }\n // An injected token is returned verbatim; otherwise generate one from the active account.\n const token = acquiredToken ??\n createMockToken({\n name: this.#user.name,\n preferred_username: this.#user.username,\n oid: this.#user.userId,\n tid: this.#user.tenantId,\n aud: this.#user.clientId,\n scp: granted.join(' '),\n });\n // Object shape matches AuthenticationResult's fields consumers rely on; the real\n // type also carries browser-only fields (e.g. `familyId`) this mock intentionally omits\n return {\n account: this.#account ?? this.#createAccount(),\n accessToken: token,\n idToken: token,\n scopes: granted,\n tokenType: 'Bearer',\n expiresOn: new Date('2033-11-14T22:13:20.000Z'),\n authority: `https://login.microsoftonline.com/${this.#user.tenantId}`,\n uniqueId: this.#user.userId,\n tenantId: this.#user.tenantId,\n fromCache: false,\n correlationId: 'fusion-mock-correlation',\n };\n }\n}\n//# sourceMappingURL=MsalMockClient.js.map","import { MsalConfigurator } from '../MsalConfigurator.js';\nimport { MsalMockClient } from './MsalMockClient.js';\nimport { mockClientOperations } from './mock-client-operations.js';\n/**\n * The client configuration used when a test declares none.\n *\n * @remarks\n * `MsalClientConfig.auth.clientId` is required, so a mock still needs a client\n * configuration to exist. Supplying a default is what lets an application boot\n * under test without declaring credentials it does not have.\n */\nconst defaultMockClientConfig = {\n auth: {\n clientId: 'fusion-mock-client',\n tenantId: 'fusion-mock-tenant',\n },\n};\n/**\n * The real MSAL configurator, backed by an in-process client.\n *\n * @remarks\n * Nothing else changes: the same builder API, the same validation and the same\n * `MsalProvider` are used. Only the boundary that would contact Entra ID is\n * substituted, through the same\n * {@link MsalConfigurator._createClient | _createClient} seam the real\n * configurator builds its own client from — and from the same\n * {@link MsalConfigurator._createClientConfig | _createClientConfig}, so\n * `setClientConfig` means exactly what it means in production.\n *\n * A user named `Test User` is signed in by default. Custom identities come only\n * from tokens returned by {@link setAcquireToken}.\n *\n * @example Configure the client exactly as in production\n * ```typescript\n * enableMsalMock(configurator, (builder) => {\n * builder.setClientConfig({ auth: { clientId: 'my-app', tenantId: 'my-tenant' } });\n * });\n * ```\n *\n * @example Take full control of authentication\n * ```typescript\n * enableMsalMock(configurator, (builder) => {\n * builder.setClient(new MyOwnMsalClient());\n * });\n * ```\n */\nexport class MsalMockConfigurator extends MsalConfigurator {\n #acquireToken;\n /**\n * Injects token acquisition for the active test runtime.\n *\n * @param acquireToken - Function that obtains a token for requested scopes.\n * @returns The builder, for chaining.\n */\n setAcquireToken(acquireToken) {\n this.#acquireToken = acquireToken;\n return this;\n }\n /**\n * Resolves the client the module authenticates through, wherever it was built.\n *\n * @remarks\n * Account application cannot assume the scope declaring mock state is the\n * scope that built the client,\n * which is exactly what is not true when an application is tested inside a\n * portal. The host built that client, in a scope this builder never sees, so\n * the client has to be located rather than assumed.\n *\n * @param config - The validated configuration, carrying the client when one was built.\n * @param init - The builder arguments, carrying the host reference when hoisted.\n * @param action - Describes what could not be applied, for the thrown error.\n * @returns The resolved mock client.\n * @throws When the resolved client is not a {@link MsalMockClient}.\n */\n #getClient(config, init, action) {\n const host = init?.ref?.auth;\n const client = config.client ?? host?.client;\n // Reject a real client because mock state cannot be applied to it.\n if (!(client instanceof MsalMockClient)) {\n throw new Error(`MsalMockConfigurator: cannot ${action}, because this module does not authenticate through a mock client. Declare it where that client is configured instead.`);\n }\n return client;\n }\n /**\n * Assembles the configuration, then installs custom token acquisition.\n *\n * @remarks\n * Stands a client configuration in first when this builder is the one that\n * will build a client: `MsalClientConfig.auth.clientId` is required to build\n * any client at all and a test has no real credentials to declare. It then\n * flows through the very same\n * {@link MsalConfigurator._createClientConfig | _createClientConfig}\n * enrichment the real client is built from, and anything declared through\n * {@link MsalConfigurator.setClientConfig | setClientConfig} wins — exactly as\n * in production.\n *\n * Doing that here rather than in the constructor is deliberate: a hoisted\n * module authenticates through the host and builds no client, so it must not\n * look configured either.\n *\n * @param rawConfig - The raw configuration to process.\n * @param init - The builder arguments, carrying the host reference when hoisted.\n * @returns The processed and validated configuration.\n */\n async _processConfig(rawConfig, init) {\n // Supply mock credentials only when this builder owns client construction.\n if (!this._isHoisted(init) && !this.getClientConfig()) {\n this.setClientConfig(defaultMockClientConfig);\n }\n const config = await super._processConfig(rawConfig, init);\n // Apply after client construction so acquisition owns all non-default identity state.\n if (this.#acquireToken) {\n mockClientOperations.configure(this.#getClient(config, init, 'configure token acquisition'), this.#acquireToken);\n }\n return config;\n }\n /**\n * Builds an in-process client.\n *\n * @remarks\n * Called only when no client was set, so\n * {@link MsalConfigurator.setClient | setClient} still replaces authentication\n * outright.\n *\n * Deliberately does not delegate to `super`, which would build a real\n * `MsalClient` and contact Entra ID. It is never reached when the module is\n * hoisted onto a host application's provider, because the base configurator\n * gates client creation on {@link MsalConfigurator._isHoisted | _isHoisted} —\n * a mock client built there would shadow the host's client, the exact scenario\n * an application-inside-a-portal test exists to cover.\n *\n * Knows nothing about who is signed in: acquired token claims determine\n * non-default identity state.\n *\n * @param config - The validated configuration the client is built from.\n * @returns A client resolving tokens in-process.\n */\n async _createClient(config) {\n return new MsalMockClient(this._createClientConfig(config) ?? defaultMockClientConfig);\n }\n}\n//# sourceMappingURL=MsalMockConfigurator.js.map","import { module } from '../module.js';\nimport { MsalMockConfigurator } from './MsalMockConfigurator.js';\n/**\n * The MSAL module with a mock client instead of a live connection to Entra ID.\n *\n * @remarks\n * Only `configure` differs from the real module. `initialize` is the production\n * one, untouched, so proxy providers, host-provider hoisting and provider\n * initialization all behave exactly as they do in production — and a test\n * observes the real start-up path rather than a rehearsal of it.\n */\nexport const msalMockModule = {\n ...module,\n configure: () => new MsalMockConfigurator(),\n};\n/**\n * Enables MSAL against a mock client, so a test needs no credentials and no network.\n *\n * @remarks\n * Registered last, this replaces whichever auth module the configurator already\n * carries, so it works on a `FrameworkConfigurator` that pre-registers the real one.\n *\n * @param configurator - The modules configurator to register on.\n * @param configure - Optional callback to override the default mock client.\n *\n * @example\n * ```typescript\n * enableMsalMock(configurator, (builder) => {\n * builder.setAcquireToken(({ scopes }) => issueToken(scopes));\n * });\n * ```\n */\nexport const enableMsalMock = (\n// biome-ignore lint/suspicious/noExplicitAny: must be any to support all module types\nconfigurator, configure) => {\n configurator.addConfig({ module: msalMockModule, configure });\n};\n//# sourceMappingURL=module.js.map"],"names":["module"],"mappings":"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"}
|
|
@@ -11058,13 +11058,14 @@ const ZodIssueCode = {
|
|
|
11058
11058
|
custom: "custom",
|
|
11059
11059
|
};
|
|
11060
11060
|
|
|
11061
|
-
var
|
|
11062
|
-
var
|
|
11061
|
+
var cjs;
|
|
11062
|
+
var hasRequiredCjs;
|
|
11063
11063
|
|
|
11064
|
-
function
|
|
11065
|
-
if (
|
|
11066
|
-
|
|
11067
|
-
|
|
11064
|
+
function requireCjs () {
|
|
11065
|
+
if (hasRequiredCjs) return cjs;
|
|
11066
|
+
hasRequiredCjs = 1;
|
|
11067
|
+
|
|
11068
|
+
var isMergeableObject = function isMergeableObject(value) {
|
|
11068
11069
|
return isNonNullObject(value)
|
|
11069
11070
|
&& !isSpecial(value)
|
|
11070
11071
|
};
|
|
@@ -11088,16 +11089,6 @@ function requireIsMergeableObject () {
|
|
|
11088
11089
|
function isReactElement(value) {
|
|
11089
11090
|
return value.$$typeof === REACT_ELEMENT_TYPE
|
|
11090
11091
|
}
|
|
11091
|
-
return isMergeableObject;
|
|
11092
|
-
}
|
|
11093
|
-
|
|
11094
|
-
var deepmerge_1;
|
|
11095
|
-
var hasRequiredDeepmerge;
|
|
11096
|
-
|
|
11097
|
-
function requireDeepmerge () {
|
|
11098
|
-
if (hasRequiredDeepmerge) return deepmerge_1;
|
|
11099
|
-
hasRequiredDeepmerge = 1;
|
|
11100
|
-
var defaultIsMergeableObject = requireIsMergeableObject();
|
|
11101
11092
|
|
|
11102
11093
|
function emptyTarget(val) {
|
|
11103
11094
|
return Array.isArray(val) ? [] : {}
|
|
@@ -11174,7 +11165,7 @@ function requireDeepmerge () {
|
|
|
11174
11165
|
function deepmerge(target, source, options) {
|
|
11175
11166
|
options = options || {};
|
|
11176
11167
|
options.arrayMerge = options.arrayMerge || defaultArrayMerge;
|
|
11177
|
-
options.isMergeableObject = options.isMergeableObject ||
|
|
11168
|
+
options.isMergeableObject = options.isMergeableObject || isMergeableObject;
|
|
11178
11169
|
// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()
|
|
11179
11170
|
// implementations can use it. The caller may not replace it.
|
|
11180
11171
|
options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
|
|
@@ -11202,12 +11193,14 @@ function requireDeepmerge () {
|
|
|
11202
11193
|
}, {})
|
|
11203
11194
|
};
|
|
11204
11195
|
|
|
11205
|
-
deepmerge_1 = deepmerge;
|
|
11206
|
-
|
|
11196
|
+
var deepmerge_1 = deepmerge;
|
|
11197
|
+
|
|
11198
|
+
cjs = deepmerge_1;
|
|
11199
|
+
return cjs;
|
|
11207
11200
|
}
|
|
11208
11201
|
|
|
11209
|
-
var
|
|
11210
|
-
var deepmerge = /*@__PURE__*/getDefaultExportFromCjs(
|
|
11202
|
+
var cjsExports = requireCjs();
|
|
11203
|
+
var deepmerge = /*@__PURE__*/getDefaultExportFromCjs(cjsExports);
|
|
11211
11204
|
|
|
11212
11205
|
/**
|
|
11213
11206
|
* Enum representing the severity levels of telemetry items.
|
|
@@ -30024,7 +30017,7 @@ const createClientLogCallback = (provider, metadata, scope) => {
|
|
|
30024
30017
|
};
|
|
30025
30018
|
|
|
30026
30019
|
// Generated by genversion.
|
|
30027
|
-
const version = '12.0.
|
|
30020
|
+
const version = '12.0.1';
|
|
30028
30021
|
|
|
30029
30022
|
/**
|
|
30030
30023
|
* Zod schema for telemetry configuration validation.
|
|
@@ -32015,4 +32008,4 @@ const configureMsal = (configure) => ({
|
|
|
32015
32008
|
});
|
|
32016
32009
|
|
|
32017
32010
|
export { TelemetryEventSchema as $, reduce as A, lastValueFrom as B, filter as C, BaseModuleProvider as D, EMPTY_SUBSCRIPTION as E, catchError as F, of as G, object as H, _instanceof as I, _enum as J, string as K, boolean as L, ModuleEventLevel as M, record as N, Observable as O, union as P, __rest as Q, __assign as R, Subscription as S, switchMap as T, observeOn as U, deepmerge as V, BaseConfigBuilder as W, TelemetryExceptionSchema as X, TelemetryItemNames as Y, TelemetryType as Z, __extends as _, arrRemove as a, TelemetryMetricSchema as a0, TelemetryCustomEventSchema as a1, array as a2, TelemetryLevel as a3, enableMSAL as a4, MsalConfigurator as a5, module$1 as a6, __values as b, createErrorClass as c, __spreadArray as d, errorContext as e, __read as f, SafeSubscriber as g, EmptyError as h, isFunction as i, executeSchedule as j, innerFrom as k, createOperatorSubscriber as l, map as m, mergeMap as n, operate as o, identity as p, isArrayLike as q, isScheduler as r, popScheduler as s, popNumber as t, EMPTY as u, from as v, mergeInternals as w, scanInternals as x, noop as y, popResultSelector as z };
|
|
32018
|
-
//# sourceMappingURL=module-
|
|
32011
|
+
//# sourceMappingURL=module-Xg35JJRU.js.map
|