o11y 242.2.0 → 242.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/o11y/client/client.d.ts +1 -0
- package/dist/modules/o11y/client/client.js +3 -1
- package/dist/modules/o11y/client/client.js.map +1 -1
- package/dist/modules/o11y/client/version.d.ts +1 -0
- package/dist/modules/o11y/collectors/client.d.ts +1 -0
- package/dist/modules/o11y/collectors/version.d.ts +1 -0
- package/dist/modules/o11y/core_envelope/client.d.ts +1 -0
- package/dist/modules/o11y/core_envelope/version.d.ts +1 -0
- package/dist/modules/o11y/shared/client.d.ts +1 -0
- package/dist/modules/o11y/shared/version.d.ts +1 -0
- package/dist/modules/o11y/simple_collector/client.d.ts +1 -0
- package/dist/modules/o11y/simple_collector/version.d.ts +1 -0
- package/dist/modules/o11y/web_vitals/client.d.ts +1 -0
- package/dist/modules/o11y/web_vitals/version.d.ts +1 -0
- package/package.json +2 -1
|
@@ -1978,9 +1978,11 @@ class ConsoleCollector {
|
|
|
1978
1978
|
}
|
|
1979
1979
|
}
|
|
1980
1980
|
|
|
1981
|
+
const version = '242.3.3';
|
|
1982
|
+
|
|
1981
1983
|
const idleDetector = new IdleDetectorImpl({
|
|
1982
1984
|
logThreshold: 300
|
|
1983
1985
|
});
|
|
1984
1986
|
|
|
1985
|
-
export { ConsoleCollector, getInstrumentation, idleDetector, registerInstrumentedApp, time };
|
|
1987
|
+
export { ConsoleCollector, version as _version, getInstrumentation, idleDetector, registerInstrumentedApp, time };
|
|
1986
1988
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sources":["../../../../src/library/Tracing.ts","../../../../src/library/TimerOverride.ts","../../../../src/library/ActivityImpl.ts","../../../../../../node_modules/o11y_schema/sf_instrumentation/activity.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/error.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/idle_detector_report.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/instrumented_event.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/simple.js","../../../../src/library/ActivityNoOp.ts","../../../../src/library/DomEventHelpers.ts","../../../../src/library/LogValidator.ts","../../../../src/library/BucketHistogramImpl.ts","../../../../src/library/UpCounterImpl.ts","../../../../src/library/ValueRecorderImpl.ts","../../../../src/library/SizeLimitedMap.ts","../../../../src/library/MetricsImpl.ts","../../../../src/library/MockEvent.ts","../../../../src/library/InstrumentationImpl.ts","../../../../src/library/RootActivityImpl.ts","../../../../src/library/RootActivityNoOp.ts","../../../../src/library/AppInstrumentationImpl.ts","../../../../src/library/AutomaticClickTracker.ts","../../../../src/library/NextgenImpl.ts","../../../../src/index.ts","../../../../src/library/TaskerImpl.ts","../../../../src/library/IdleDetectorImpl.ts","../../../../src/console-collector/ConsoleCollector.ts","../../../../src/client.ts"],"sourcesContent":["import {\n Instrumentation,\n TracingHeadersOptions,\n NetworkInstrumentationOptions,\n Activity\n} from '../interfaces';\nimport { utility } from 'o11y/shared';\n\ntype FetchType = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;\ntype XhrType = {\n prototype: XMLHttpRequest;\n new (): XMLHttpRequest;\n readonly DONE: number;\n readonly HEADERS_RECEIVED: number;\n readonly LOADING: number;\n readonly OPENED: number;\n readonly UNSENT: number;\n};\ntype XhrSendType = (body?: Document | XMLHttpRequestBodyInit | null) => void;\ninterface O11yXhr extends XMLHttpRequest {\n _o11yActivity: Activity;\n}\n\nconst defaultTraceIdLengthW3 = 32; // 32 Characters = 128 bits\nconst defaultTraceIdLengthB3 = 16; // 16 Characters = 64 bits\nconst defaultSpanIdLength = 16; // 16 Characters = 64 bits\n\n// Headers for W3 tracing (https://www.w3.org/TR/trace-context/#traceparent-header)\nconst headerTraceParent = 'traceparent';\n\n// Headers for B3 tracing (https://github.com/openzipkin/b3-propagation)\nconst headerB3 = 'b3';\nconst headerTraceId = 'X-B3-TraceId';\nconst headerSpanId = 'X-B3-SpanId';\nconst headerSampled = 'X-B3-Sampled';\nconst headerParentSpanId = 'X-B3-ParentSpanId';\n\nconst defaultActivityNameForFetch = 'fetch';\nconst defaultActivityNameForXhrSend = 'xhr_send';\n\nexport class Tracing {\n private static _global: typeof globalThis = utility.getGlobal();\n private static _originalFetch: FetchType;\n private static _originalXhr: XhrType;\n private static _originalXhrSend: XhrSendType;\n private static _isNetworkInstrumentationEnabled = false;\n\n constructor(private readonly instr: Instrumentation) {\n utility.requireArgument(instr, 'instr', 'object');\n }\n\n private static _getB3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n parentSpanId?: string\n ): string {\n // b3={TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}\n // Note: last two fields are optional\n\n let b3 = `${traceId}-${spanId}`;\n\n if (isSampled !== undefined || parentSpanId !== undefined) {\n b3 += isSampled ? '-1' : '-0';\n if (parentSpanId !== undefined) {\n b3 += `-${parentSpanId}`;\n }\n }\n return b3;\n }\n\n private static _getW3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled: boolean\n ): string {\n // traceparent={version}-{trace-id}-{parent-id}-{trace-flags}\n // \"in some tracing systems, parent-id is known as the span-id, where a span is the execution of a client request\"\n return `00-${traceId}-${spanId}-${isSampled ? '01' : '00'}`;\n }\n\n private static _conformTextAsId(text: string, numChars: number): string {\n // First validate\n text = text.toLowerCase();\n const len: number = text.length;\n for (let i = 0; i < len; i += 1) {\n const c = text[i];\n if (!(c >= 'a' && c <= 'f') && !(c >= '0' && c <= '9')) {\n throw new Error(`The text '${text}' has an invalid character at index #${i}`);\n }\n }\n\n if (len > numChars) {\n // Use the right-most characters per spec\n return text.substr(len - numChars);\n }\n if (len < numChars) {\n // Pad left with 0s per spec\n return text.padStart(numChars, '0');\n }\n return text;\n }\n\n public static getHeaders(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n options?: TracingHeadersOptions\n ): Record<string, string> {\n utility.requireArgument(traceId, 'traceId', 'string');\n utility.requireArgument(spanId, 'spanId', 'string');\n\n const useB3Headers: boolean = options && options.useB3Headers;\n\n traceId = this._conformTextAsId(\n traceId,\n options && options.traceIdEffectiveLength !== undefined\n ? options.traceIdEffectiveLength\n : useB3Headers\n ? defaultTraceIdLengthB3\n : defaultTraceIdLengthW3\n );\n spanId = this._conformTextAsId(spanId, defaultSpanIdLength);\n\n const parentSpanId =\n (options &&\n options.parentSpanId !== undefined &&\n this._conformTextAsId(options.parentSpanId, defaultSpanIdLength)) ||\n undefined;\n\n const headers: Record<string, string> = {};\n\n if (useB3Headers) {\n // By default, use non-compact\n const isCompact: boolean = options && options.useCompactHeader;\n if (isCompact) {\n headers[headerB3] = this._getB3CompactFormat(\n traceId,\n spanId,\n isSampled,\n parentSpanId\n );\n } else {\n headers[headerTraceId] = traceId;\n headers[headerSpanId] = spanId;\n if (parentSpanId !== undefined) {\n headers[headerParentSpanId] = parentSpanId;\n }\n if (isSampled !== undefined) {\n headers[headerSampled] = isSampled ? '1' : '0';\n }\n }\n } else {\n headers[headerTraceParent] = this._getW3CompactFormat(traceId, spanId, isSampled);\n }\n\n return headers;\n }\n\n private _disableNetworkInstrumentation(): void {\n if (Tracing._isNetworkInstrumentationEnabled) {\n if (Tracing._originalFetch) {\n Tracing._global.fetch = Tracing._originalFetch;\n Tracing._originalFetch = undefined;\n }\n if (Tracing._originalXhr) {\n Tracing._global.XMLHttpRequest = Tracing._originalXhr;\n Tracing._originalXhr = undefined;\n }\n if (Tracing._originalXhrSend) {\n Tracing._global.XMLHttpRequest.prototype.send = Tracing._originalXhrSend;\n Tracing._originalXhrSend = undefined;\n }\n Tracing._isNetworkInstrumentationEnabled = false;\n }\n }\n\n private _enableNetworkInstrumentation(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions\n ): void {\n if (typeof Tracing._global.fetch === 'function') {\n this._overrideFetch(instr, logErrors, activityName, useTracing, options);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (typeof Tracing._global.XMLHttpRequest === 'function') {\n this._overrideXhr(instr, logErrors, activityName, useTracing, options);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n }\n\n private _overrideFetch(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions\n ): void {\n Tracing._originalFetch = Tracing._global.fetch;\n const o11yFetch: FetchType = async (url, reqOptions, ...restArgs) => {\n let activity: Activity;\n try {\n activity = instr.startActivity(activityName || defaultActivityNameForFetch);\n\n if (useTracing) {\n reqOptions = reqOptions || {};\n const traceHeaders = activity.getTraceHeaders(options);\n reqOptions.headers = Object.assign(reqOptions.headers || {}, traceHeaders);\n }\n return await Tracing._originalFetch.call(\n Tracing._global,\n url,\n reqOptions,\n ...restArgs\n );\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n throw ex;\n } finally {\n if (activity) {\n activity.stop();\n }\n }\n };\n Tracing._global.fetch = o11yFetch;\n }\n\n private _overrideXhr(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions\n ): void {\n Tracing._originalXhr = Tracing._global.XMLHttpRequest;\n Tracing._originalXhrSend = Tracing._originalXhr.prototype.send;\n\n Tracing._originalXhr.prototype.send = function (this: O11yXhr, ...args) {\n let activity: Activity;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr: O11yXhr = this;\n try {\n xhr._o11yActivity = activity = instr.startActivity(\n activityName || defaultActivityNameForXhrSend\n );\n if (useTracing) {\n const headers = activity.getTraceHeaders(options);\n\n Object.entries(headers).forEach((entry) => {\n xhr.setRequestHeader(entry[0], entry[1]);\n });\n }\n Tracing._originalXhrSend.call(this, ...args);\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n if (activity) {\n activity.stop();\n }\n throw ex;\n }\n };\n\n const xhrProxy = new Proxy<XhrType>(Tracing._originalXhr, {\n construct(target: XhrType) {\n const newXhr = new target() as O11yXhr;\n\n // Be the first in the event chain\n newXhr.addEventListener('load', () => {\n const activity = newXhr._o11yActivity;\n if (activity) {\n activity.stop();\n }\n });\n newXhr.addEventListener(\n 'error',\n (__err: ProgressEvent<XMLHttpRequestEventTarget>) => {\n const error = new Error('XHR Network-Level Error');\n const activity = newXhr._o11yActivity;\n if (activity) {\n if (logErrors) {\n activity.error(error);\n }\n activity.stop();\n } else if (logErrors) {\n instr.error(error);\n }\n }\n );\n newXhr.addEventListener('abort', () => {\n const activity = newXhr._o11yActivity;\n if (activity) {\n activity.discard();\n }\n });\n return newXhr;\n }\n });\n\n Tracing._global.XMLHttpRequest = xhrProxy;\n }\n\n networkInstrumentation(options: boolean | NetworkInstrumentationOptions): void {\n utility.requireArgument(options, 'options', ['boolean', 'object']);\n\n if (options) {\n // First disable it if necessary, so we can use the new options if it was already enabled\n this._disableNetworkInstrumentation();\n\n const tracingOptions: NetworkInstrumentationOptions =\n typeof options === 'object' ? options : {};\n\n this._enableNetworkInstrumentation(\n utility.definedValueOrDefault(tracingOptions.instrumentation, this.instr),\n utility.definedValueOrDefault(tracingOptions.logErrors, true),\n tracingOptions.activityName,\n utility.definedValueOrDefault(tracingOptions.useTracing, true),\n tracingOptions.tracingHeadersOptions\n );\n } else {\n // Options is falsy, disable.\n this._disableNetworkInstrumentation();\n }\n }\n}\n","export enum TimerOverride {\n none,\n start,\n stop,\n both\n}\n","import { PublicSafety, SchematizedData, utility } from 'o11y/shared';\n\nimport {\n Activity,\n ActivityDetail,\n ActivityStopOptions,\n Schema,\n TracingHeadersOptions\n} from '../interfaces';\nimport { Tracing } from './Tracing';\nimport { TimerOverride } from './TimerOverride';\nexport const timedout = 'timedout';\nexport const terminated = 'terminated';\nexport const discarded = 'discarded';\n\nconst stopReason = {\n timedout,\n terminated,\n discarded\n};\n\nexport type onActivityStop = (detail: ActivityDetail) => void;\nexport type onActivityError = (error: unknown, detail: ActivityDetail) => void;\n\nexport class ActivityImpl implements Activity {\n protected readonly _id: string;\n private readonly _safety: PublicSafety;\n private readonly _usePerf: boolean;\n protected static _count = 0;\n private readonly _perfId: string;\n private readonly _perfName: string;\n private _startTimestamp: number;\n private _startPerfTime: number;\n private _stopPerfTime: number;\n private _stopReason: string;\n private _timer: NodeJS.Timer;\n private _errorCount = 0;\n private _timerOverridden: TimerOverride = TimerOverride.none;\n\n constructor(\n protected readonly _name: string,\n protected readonly _rootId: string,\n private readonly _onStopped: onActivityStop,\n private readonly _onError: onActivityError,\n timeout?: number,\n id?: string,\n protected readonly _isSampled?: boolean\n ) {\n const { tsNow, perfNow } = utility.time();\n\n ActivityImpl._count += 1;\n this._id = id || utility.generateUniqueId();\n\n this._usePerf =\n typeof performance !== 'undefined' &&\n typeof performance.mark === 'function' &&\n typeof performance.measure === 'function';\n if (this._usePerf) {\n this._perfName = `${this._name}__${ActivityImpl._count}`;\n this._perfId = `${this._name}__${this.id}`;\n try {\n performance.mark(this._perfId);\n } catch {\n this._usePerf = false;\n }\n }\n\n this._startTimestamp = tsNow;\n this._startPerfTime = perfNow;\n\n if (timeout > 0) {\n this._timer = setTimeout(() => {\n this._stopReason = this._stopReason || stopReason.timedout;\n this.stop();\n }, timeout);\n }\n this._safety = new PublicSafety();\n }\n\n get id(): string {\n return this._id;\n }\n\n getId(): string {\n return this.id;\n }\n\n getRootId(): string {\n return this._rootId;\n }\n\n get stopReason(): string {\n return this._stopReason;\n }\n\n error(error: unknown, userSchemaOrText?: Schema | string, userData?: SchematizedData): void {\n this._safety.tryCatch(() => {\n this._errorCount += 1;\n if (typeof error === 'string') {\n error = new Error(error);\n }\n this._onError(error, this._getDetail(userSchemaOrText, userData));\n });\n }\n\n stop(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n\n if (options) {\n const perfStart: number = options.perfStartOverride;\n const isStartTimeDefined = utility.requireArgumentIfDefined(\n perfStart,\n 'options.perfStartOverride',\n 'number'\n );\n\n const perfStop: number = options.perfStopOverride;\n const isStopTimeDefined = utility.requireArgumentIfDefined(\n perfStop,\n 'options.perfStopOverride',\n 'number'\n );\n\n if (isStartTimeDefined && perfStart < 0) {\n throw new Error('perfStartOverride, if defined, must be >= 0');\n }\n\n if (\n isStopTimeDefined &&\n (perfStop < 0 ||\n perfStop < (isStartTimeDefined ? perfStart : this._startPerfTime))\n ) {\n throw new Error('perfStopOverride, if defined, must be >= 0 and >= startTime');\n }\n }\n\n this._stopInternal(userSchemaOrText, userData, options);\n });\n }\n\n private _overrideTimer(perfStartTime?: number, perfStopTime?: number): void {\n if (perfStartTime !== undefined) {\n this._startTimestamp = Math.round(\n this._startTimestamp - (this._startPerfTime - perfStartTime)\n );\n this._startPerfTime = perfStartTime;\n this._setTimerOverride(TimerOverride.start);\n }\n\n if (perfStopTime !== undefined) {\n this._stopPerfTime = perfStopTime;\n this._setTimerOverride(TimerOverride.stop);\n }\n }\n\n private _setTimerOverride(value: TimerOverride): void {\n if (\n this._timerOverridden === TimerOverride.both ||\n this._timerOverridden === value ||\n value === TimerOverride.none\n ) {\n return;\n }\n this._timerOverridden =\n this._timerOverridden === TimerOverride.none ? value : TimerOverride.both;\n }\n\n private _stopInternal(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n // First things first.\n const stopPerfTime = utility.perfNow();\n if (this._usePerf) {\n try {\n // Use a more user-friendly name for measure.\n if (this._stopReason !== stopReason.discarded) {\n performance.measure(this._perfName, this._perfId);\n }\n performance.clearMarks(this._perfId);\n performance.clearMeasures(this._perfName);\n } catch {}\n }\n\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n if (this.isStopped) {\n // Already stopped\n return;\n }\n\n if (options) {\n this._overrideTimer(options.perfStartOverride, options.perfStopOverride);\n }\n\n // We may set this already in override so check that here\n this._stopPerfTime =\n this._timerOverridden === TimerOverride.none ||\n this._timerOverridden === TimerOverride.start\n ? stopPerfTime\n : this._stopPerfTime;\n\n const activityDetail: ActivityDetail = this._getDetail(userSchemaOrText, userData);\n this._onStopped(activityDetail);\n }\n\n get isStopped(): boolean {\n return this._stopPerfTime !== undefined;\n }\n\n discard(): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.discarded;\n this.stop();\n });\n }\n\n terminate(): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.terminated;\n this.stop();\n });\n }\n\n getIsSampled(): boolean {\n return this._isSampled || false;\n }\n\n protected _getDetail(\n userSchemaOrText: Schema | string,\n userData: SchematizedData\n ): ActivityDetail {\n return {\n id: this._id,\n rootId: this._rootId,\n name: this._name,\n userSchemaOrText: userSchemaOrText,\n userData,\n stopReason: this._stopReason,\n startTimestamp: this._startTimestamp,\n startPerfTime: this._startPerfTime,\n stopPerfTime: this._stopPerfTime,\n errorCount: this._errorCount,\n isSampled: this.getIsSampled(),\n timerOverridden: this._timerOverridden\n };\n }\n\n public getTraceHeaders(options: TracingHeadersOptions): Record<string, string> {\n // Normally, the root activity ID is the traceId.\n // If the activity is root, it's ID is (also) the traceId.\n // If the activity has no root, it's ID is (also) the traceId. i.e. It creates its own trace.\n const spanId = this.id;\n const traceId = this._rootId || spanId;\n\n return Tracing.getHeaders(traceId, spanId, this.getIsSampled(), options);\n }\n\n getStartTimestamp(): number {\n return this._startTimestamp;\n }\n\n getStartPerfTime(): number {\n return this._startPerfTime;\n }\n\n getStopPerfTime(): number {\n return this._stopPerfTime;\n }\n}\n","export const activity={namespace:\"sf.instrumentation\",name:\"Activity\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"Activity\":{\"reserved\":[[5,5],[7,7]],\"fields\":{\"duration\":{\"options\":{},\"id\":3,\"type\":\"double\"},\"stopReason\":{\"options\":{},\"id\":6,\"type\":\"string\"},\"isRoot\":{\"options\":{},\"id\":8,\"type\":\"bool\"},\"timerOverridden\":{\"options\":{},\"id\":12,\"type\":\"uint32\"},\"name\":{\"options\":{\"(meta.max_length)\":25},\"id\":2,\"type\":\"string\"},\"isSampled\":{\"options\":{},\"id\":11,\"type\":\"bool\"},\n\"preRootId\":{\"options\":{},\"id\":9,\"type\":\"string\"},\"id\":{\"options\":{},\"id\":1,\"type\":\"string\"},\"userPayload\":{\"options\":{},\"id\":4,\"type\":\"Payload\"},\"errorCount\":{\"options\":{},\"id\":10,\"type\":\"uint32\"},\"parentId\":{\"options\":{},\"id\":13,\"type\":\"string\"}}},\"Payload\":{\"fields\":{\"payload\":{\"options\":{},\"id\":2,\"type\":\"bytes\"},\"schemaName\":{\"options\":{},\"id\":1,\"type\":\"string\"}}}}}}}}}};","export const error={namespace:\"sf.instrumentation\",name:\"Error\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"Error\":{\"reserved\":[[5,5],[7,7]],\"fields\":{\"activityId\":{\"options\":{},\"id\":6,\"type\":\"string\"},\"stack\":{\"options\":{},\"id\":3,\"type\":\"string\"},\"name\":{\"options\":{},\"id\":1,\"type\":\"string\"},\"message\":{\"options\":{\"(meta.max_length)\":200},\"id\":2,\"type\":\"string\"},\"userPayload\":{\"options\":{},\"id\":4,\"type\":\"Payload\"}}},\"Payload\":{\"fields\":{\"payload\":{\"options\":{},\"id\":2,\"type\":\"bytes\"},\n\"schemaName\":{\"options\":{},\"id\":1,\"type\":\"string\"}}}}}}}}}};","export const idle_detector_report={namespace:\"sf.instrumentation\",name:\"IdleDetectorReport\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"IdleDetectorReport\":{\"options\":{\"(meta.msg.desc)\":\"This is used by the Idle Detector in o11y\"},\"fields\":{\"listenerCount\":{\"options\":{},\"id\":3,\"type\":\"uint32\"},\"busyTasks\":{\"options\":{},\"rule\":\"repeated\",\"id\":5,\"type\":\"string\"},\"busyDurations\":{\"options\":{},\"rule\":\"repeated\",\"id\":6,\"type\":\"double\"},\"pollableCount\":{\"options\":{},\"id\":4,\"type\":\"uint32\"},\n\"pollCounts\":{\"options\":{},\"rule\":\"repeated\",\"id\":8,\"type\":\"double\"},\"logThreshold\":{\"options\":{},\"id\":2,\"type\":\"double\"},\"maxDuration\":{\"options\":{},\"id\":1,\"type\":\"double\"},\"pollables\":{\"options\":{},\"rule\":\"repeated\",\"id\":7,\"type\":\"string\"}}}}}}}}}};","export const instrumented_event={namespace:\"sf.instrumentation\",name:\"InstrumentedEvent\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"MouseEvent\":{\"fields\":{\"cancelable\":{\"options\":{},\"id\":5,\"type\":\"bool\"},\"ctrlKey\":{\"options\":{},\"id\":9,\"type\":\"bool\"},\"type\":{\"options\":{},\"id\":25,\"type\":\"string\"},\"button\":{\"options\":{},\"id\":3,\"type\":\"uint32\"},\"offsetX\":{\"options\":{},\"id\":17,\"type\":\"uint32\"},\"eventPhase\":{\"options\":{},\"id\":12,\"type\":\"uint32\"},\"shiftKey\":{\"options\":{},\"id\":23,\n\"type\":\"bool\"},\"offsetY\":{\"options\":{},\"id\":18,\"type\":\"uint32\"},\"composed\":{\"options\":{},\"id\":8,\"type\":\"bool\"},\"altKey\":{\"options\":{},\"id\":1,\"type\":\"bool\"},\"isTrusted\":{\"options\":{},\"id\":13,\"type\":\"bool\"},\"buttons\":{\"options\":{},\"id\":4,\"type\":\"uint32\"},\"movementY\":{\"options\":{},\"id\":16,\"type\":\"uint32\"},\"clientY\":{\"options\":{},\"id\":7,\"type\":\"uint32\"},\"clientX\":{\"options\":{},\"id\":6,\"type\":\"uint32\"},\"movementX\":{\"options\":{},\"id\":15,\"type\":\"uint32\"},\"defaultPrevented\":{\"options\":{},\"id\":10,\"type\":\"bool\"},\n\"metaKey\":{\"options\":{},\"id\":14,\"type\":\"bool\"},\"timeStamp\":{\"options\":{},\"id\":24,\"type\":\"double\"},\"bubbles\":{\"options\":{},\"id\":2,\"type\":\"bool\"},\"detail\":{\"options\":{},\"id\":11,\"type\":\"int64\"},\"pageY\":{\"options\":{},\"id\":20,\"type\":\"uint32\"},\"pageX\":{\"options\":{},\"id\":19,\"type\":\"uint32\"},\"screenX\":{\"options\":{},\"id\":21,\"type\":\"uint32\"},\"screenY\":{\"options\":{},\"id\":22,\"type\":\"uint32\"}}},\"InstrumentedEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"mouseEvent\"]}},\"reserved\":[[4,4],\"xpath\",[6,6],[8,8]],\"fields\":{\"mouseEvent\":{\"options\":{},\n\"id\":7,\"type\":\"MouseEvent\"},\"auto\":{\"options\":{},\"id\":3,\"type\":\"bool\"},\"parentComponent\":{\"options\":{},\"id\":2,\"type\":\"string\"},\"ownerComponent\":{\"options\":{},\"id\":1,\"type\":\"string\"},\"userPayload\":{\"options\":{},\"id\":5,\"type\":\"Payload\"},\"simplePath\":{\"options\":{},\"id\":9,\"type\":\"string\"}}},\"Payload\":{\"fields\":{\"payload\":{\"options\":{},\"id\":2,\"type\":\"bytes\"},\"schemaName\":{\"options\":{},\"id\":1,\"type\":\"string\"}}}}}}}}}};","export const simple={namespace:\"sf.instrumentation\",name:\"Simple\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"Simple\":{\"options\":{\"(meta.msg.desc)\":\"This message is used internally to allow convenient logging of simple text via the API without requiring a schema.\"},\"fields\":{\"text\":{\"options\":{\"(meta.max_length)\":25},\"id\":1,\"type\":\"string\"}}}}}}}}}};","import { Activity, TracingHeadersOptions } from '../interfaces';\n\nconst id: string = new Array(16).fill(0).join('');\nclass ActivityNoOp implements Activity {\n getId(): string {\n return id;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n}\n\nexport const activityNoOp = Object.freeze(new ActivityNoOp());\n","import { SchematizedPayload } from '../interfaces';\nimport { InstrumentedEventData, MouseEventData } from '../interfaces-private';\nimport { DomEventData } from '../types/TypeDefinitions-Private';\nimport { schemaUtil, utility } from 'o11y/shared';\n\nexport class DomEventHelpers {\n getInstrumentedEventData(\n eventData: DomEventData,\n handledBy: HTMLElement,\n userPayload: SchematizedPayload\n ): InstrumentedEventData {\n const instrumentedEvent: InstrumentedEventData = {\n ownerComponent: handledBy.tagName,\n parentComponent:\n (handledBy.parentElement && handledBy.parentElement.tagName) || undefined,\n event: eventData,\n simplePath: utility.getXpath(handledBy)\n };\n\n if (userPayload) {\n instrumentedEvent.userPayload = schemaUtil.makePayload(\n userPayload.schema,\n userPayload.payload,\n true\n );\n }\n\n return instrumentedEvent;\n }\n\n getMouseEventData(e: MouseEvent): MouseEventData {\n return {\n altKey: e.altKey,\n bubbles: e.bubbles,\n button: e.button,\n buttons: e.buttons,\n cancelable: e.cancelable,\n clientX: e.clientX,\n clientY: e.clientY,\n composed: e.composed,\n defaultPrevented: e.defaultPrevented,\n detail: e.detail,\n eventPhase: e.eventPhase,\n isTrusted: e.isTrusted,\n timeStamp: e.timeStamp,\n type: e.type,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n movementX: e.movementX,\n movementY: e.movementY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n pageX: e.pageX,\n pageY: e.pageY,\n screenX: e.screenX,\n screenY: e.screenY,\n shiftKey: e.shiftKey\n };\n }\n}\n\nconst singleton = new DomEventHelpers();\nexport const domEventHelpers = singleton;\n","import { IType, Schema, SchemaTokens } from '../interfaces';\nimport {\n PbjsNestedObjectDescriptor,\n SchematizedData,\n SchematizedDataValue,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\n// These are hard-coded limits at the app-level. They may be overridden with a corresponding\n// option at the field level in the schema metadata.\nexport const maxStringLengthAppLimit = 10000; // For strings\nexport const maxItemCountAppLimit = 10000; // For arrays\n\nconst minUnsigned = 0;\nconst maxFourBytes = 2147483647;\nconst minFourBytes = -2147483648;\nconst maxFourBytesUnsigned = 4294967295;\nconst maxEightBytes = 9223372036854776000;\nconst minEightBytes = -9223372036854776001;\nconst maxEightBytesUnsigned = 18446744073709552000;\n\nexport const enum ErrorCode {\n notAnError = 0, // To ensure truthy-checks work for proper error codes.\n arrayExpected,\n incorrectType,\n infiniteNumber,\n numberOutOfRange,\n malformedBytesArray,\n stringLengthOverflowAppLimit,\n itemCountOverflowAppLimit,\n stringLengthOverflow,\n stringLengthUnderflow,\n itemCountOverflow,\n itemCountUnderflow\n}\n\nexport class ValidationEntry {\n constructor(\n public errorCode: ErrorCode,\n public fields: string[],\n public expected?: string,\n public received?: string\n ) {}\n\n asMessage(schemaId: string): string {\n const key: string =\n this.fields[0] +\n this.fields\n .slice(1)\n .reduce(\n (prev, current) =>\n Number(current) >= 0 ? `${prev}[${current}]` : `${prev}.${current}`,\n ''\n );\n let msg: string;\n\n switch (this.errorCode) {\n case ErrorCode.arrayExpected:\n msg = 'Repeated field must be an array';\n break;\n case ErrorCode.incorrectType:\n msg = `Expected type ${this.expected} but received type ${this.received}`;\n break;\n case ErrorCode.infiniteNumber:\n msg = 'Value must be finite';\n break;\n case ErrorCode.numberOutOfRange:\n msg = 'Value is out of range for its type';\n break;\n case ErrorCode.malformedBytesArray:\n msg = 'Bytes array is malformed';\n break;\n case ErrorCode.stringLengthOverflowAppLimit:\n msg = 'Exceeded app limit for maximum string length';\n break;\n case ErrorCode.itemCountOverflowAppLimit:\n msg = 'Exceeded app limit for item count';\n break;\n // TODO: The following should be used when we start validating against schema metadata\n // case ErrorCode.stringLengthOverflow:\n // msg = 'Exceeded maximum string length';\n // break;\n // case ErrorCode.stringLengthUnderflow:\n // msg = 'Failed minimum string length';\n // break;\n // case ErrorCode.itemCountOverflow:\n // msg = 'Exceeded maximum item count';\n // break;\n // case ErrorCode.itemCountUnderflow:\n // msg = 'Failed minimum item count';\n // break;\n default:\n msg = `Unknown error code: ${this.errorCode}`;\n break;\n }\n\n return `Schema ${schemaId} on field \"${key}\": ${msg}`;\n }\n}\n\nclass LogValidator {\n public validate(schema: Schema, data: SchematizedData, noThrow = false): ValidationEntry[] {\n const schemaTokens: SchemaTokens = schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n const schemaId: string = schemaUtil.getSchemaId(schema);\n\n const errorInfos = new Array<ValidationEntry>();\n\n const nestedSchema: PbjsNestedObjectDescriptor = schemaUtil.getTypes(schema);\n this.validateFields(\n errorInfos,\n [],\n data,\n nestedSchema[schemaTokens.message] as IType,\n nestedSchema,\n schemaId\n );\n\n if (errorInfos.length && !noThrow) {\n throw new Error(errorInfos[0].asMessage(schemaId));\n }\n\n return errorInfos;\n }\n\n private validateFields(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n data: SchematizedData,\n message: IType,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string\n ): void {\n const oneofs = message.oneofs || {};\n const fields = message.fields || {};\n for (const key in data) {\n const value = data[key];\n // if it's null or undefined we don't need to match\n if (!this.isNullOrUndefinedOrEmpty(value)) {\n const mft: (fieldType: string, rule?: string) => void = (fieldType, rule?) =>\n this.matchFieldTypes(\n errorInfos,\n [...fieldNames, key],\n value,\n fieldType,\n descriptor,\n schemaId,\n key,\n rule\n );\n\n if (oneofs[key]) {\n mft(fields[oneofs[key].oneof[0]].type);\n } else if (fields[key]) {\n mft(fields[key].type, fields[key].rule);\n }\n // if the field is not present in the schema then we ignore it and will drop it later\n }\n }\n }\n\n private isNullOrUndefinedOrEmpty(val: SchematizedDataValue): boolean {\n return val === undefined || val === null || val === '';\n }\n\n private matchFieldTypes(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n fieldDataValue: SchematizedDataValue,\n protobufType: string,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n key: string,\n rule?: string\n ): void {\n let errorCode: ErrorCode;\n\n if (rule === 'repeated') {\n if (Array.isArray(fieldDataValue)) {\n if (fieldDataValue.length > maxItemCountAppLimit) {\n errorCode = ErrorCode.itemCountOverflowAppLimit;\n }\n\n fieldDataValue.forEach((value, index: number) => {\n // if it's repeated they should all be the same type so we can just run it as is\n this.matchFieldTypes(\n errorInfos,\n [...fieldNames, index.toString()],\n value,\n protobufType,\n descriptor,\n schemaId,\n key\n );\n });\n } else {\n errorCode = ErrorCode.arrayExpected;\n }\n\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n\n // this means that every value in the array was validated and we can finish\n return;\n }\n\n let javaScriptType: string;\n switch (protobufType) {\n case 'string':\n javaScriptType = 'string';\n if (fieldDataValue.length > maxStringLengthAppLimit) {\n errorCode = ErrorCode.stringLengthOverflowAppLimit;\n }\n break;\n case 'bytes':\n javaScriptType = 'object';\n if (!(fieldDataValue instanceof Uint8Array)) {\n errorCode = ErrorCode.malformedBytesArray;\n }\n break;\n case 'bool':\n javaScriptType = 'boolean';\n break;\n case 'uint32':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(\n fieldDataValue,\n minUnsigned,\n maxFourBytesUnsigned\n );\n break;\n case 'int32':\n case 'sint32':\n case 'fixed32':\n case 'sfixed32':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(fieldDataValue, minFourBytes, maxFourBytes);\n break;\n case 'uint64':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(\n fieldDataValue,\n minUnsigned,\n maxEightBytesUnsigned\n );\n break;\n case 'fixed64':\n case 'sfixed64':\n case 'int64':\n case 'sint64':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(fieldDataValue, minEightBytes, maxEightBytes);\n break;\n case 'double':\n case 'float':\n javaScriptType = 'number';\n if (!Number.isFinite(fieldDataValue)) {\n errorCode = ErrorCode.infiniteNumber;\n }\n break;\n default:\n if (new Set(Object.keys(descriptor)).has(protobufType)) {\n //now we check this schema\n this.validateFields(\n errorInfos,\n fieldNames,\n fieldDataValue,\n descriptor[protobufType] as IType,\n descriptor,\n schemaId\n );\n javaScriptType = 'object';\n }\n break;\n }\n\n if (typeof fieldDataValue !== javaScriptType) {\n errorInfos.push(\n new ValidationEntry(\n ErrorCode.incorrectType,\n fieldNames,\n protobufType,\n typeof fieldDataValue\n )\n );\n }\n\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n }\n\n private checkNumberRange(value: number, min: number, max: number): ErrorCode {\n return value > max || value < min ? ErrorCode.numberOutOfRange : undefined;\n }\n}\n\nexport const logValidator = new LogValidator();\n","import { BucketHistogram } from '../interfaces/BucketHistogram';\nimport { MetricsTags, utility } from 'o11y/shared';\nimport { BucketMetric } from 'src/interfaces';\n\nexport class BucketHistogramImpl implements BucketMetric<number[]>, BucketHistogram {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n private readonly _buckets: number[]\n ) {\n this._createdOn = utility.time().tsNow;\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n getBuckets(): number[] {\n return this.buckets;\n }\n\n get buckets(): number[] {\n return this._buckets.slice(0, this._buckets.length);\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('BucketHistogram can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { UpCounter } from '../interfaces/UpCounter';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class UpCounterImpl implements Metric<number>, UpCounter {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _value = 0;\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags\n ) {\n this._createdOn = utility.time().tsNow;\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number {\n return this._value;\n }\n\n increment(value = 1): void {\n if (typeof value === 'number' && value > 0) {\n this._value += Math.round(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('UpCounter can only increment positive numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._value = 0;\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): Readonly<MetricsTags> {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { ValueRecorder } from '../interfaces/ValueRecorder';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class ValueRecorderImpl implements Metric<number[]>, ValueRecorder {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags\n ) {\n this._createdOn = utility.time().tsNow;\n // TODO: Add sampling/throttling to put a cap on the size of the array\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('ValueRecorder can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","export class SizeLimitedMap<K, V> {\n private readonly _map = new Map<K, V>();\n\n private _maxSize: number;\n constructor(maxSize: number) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get(key: K): V {\n return this._map.get(key);\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): boolean {\n if (this.has(key) || this._map.size < this.maxSize) {\n this._map.set(key, value);\n return true;\n }\n return false;\n }\n\n getElements(): V[] {\n return Array.from(this._map.values());\n }\n\n clear(): void {\n this._map.clear();\n }\n}\n","import { MetricsReporter, UpCounter, ValueRecorder } from '../interfaces';\n\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\nimport { SizeLimitedMap } from './SizeLimitedMap';\nimport { MetricsTags } from 'o11y/shared';\n\nconst maxCounters = 1000;\nconst maxValueRecorders = 500;\nconst maxBucketHistograms = 500;\n\nenum MetricType {\n Counter,\n Percentile,\n BucketHistogram\n}\n\nexport class MetricsImpl implements MetricsReporter {\n private readonly _upCounters = new SizeLimitedMap<string, UpCounterImpl>(maxCounters);\n private readonly _valueRecorders = new SizeLimitedMap<string, ValueRecorderImpl>(\n maxValueRecorders\n );\n private readonly _bucketHistograms = new SizeLimitedMap<string, BucketHistogramImpl>(\n maxBucketHistograms\n );\n\n constructor(\n private readonly _ownerName: string,\n private readonly _getOwnerAppName: () => string\n ) {}\n\n incrementCounter(\n operation: string,\n increment: number,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._upCounter(operation, tags).increment(increment);\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._tagError(tags, hasError);\n this._valueRecorder(operation, tags).record(value);\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._bucketHistogram(operation, tags, buckets).record(value);\n }\n\n private _bucketHistogram(name: string, tags: MetricsTags, buckets: number[]): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(\n name,\n tags,\n MetricType.BucketHistogram\n );\n let instrument = this._bucketHistograms.get(key);\n if (!instrument) {\n instrument = new BucketHistogramImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags,\n buckets\n );\n if (!this._bucketHistograms.set(key, instrument)) {\n throw new Error(`Max size of ${maxBucketHistograms} exceeded for BucketHistograms`);\n }\n }\n return instrument;\n }\n\n private _upCounter(name: string, tags: MetricsTags): UpCounter {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Counter);\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._upCounters.set(key, instrument)) {\n throw new Error(`Max size of ${maxCounters} exceeded for UpCounters`);\n }\n }\n return instrument;\n }\n\n private _valueRecorder(name: string, tags: MetricsTags): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Percentile);\n let instrument = this._valueRecorders.get(key);\n if (!instrument) {\n instrument = new ValueRecorderImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._valueRecorders.set(key, instrument)) {\n throw new Error(`Max size of ${maxValueRecorders} exceeded for ValueRecorders`);\n }\n }\n return instrument;\n }\n\n getUpCounters(): UpCounterImpl[] {\n return this._upCounters.getElements();\n }\n\n getValueRecorders(): ValueRecorderImpl[] {\n return this._valueRecorders.getElements();\n }\n\n getBucketHistograms(): BucketHistogramImpl[] {\n return this._bucketHistograms.getElements();\n }\n\n private _tagError(tags: MetricsTags, hasError: boolean): void {\n tags.status = hasError === true ? 'error' : 'success';\n }\n\n private _getKeyAndSortedTags(\n operation: string,\n tags: MetricsTags,\n metricType: MetricType\n ): { key: string; sortedTags: MetricsTags } {\n // This method should be called after any manipulation of tags\n const sortedTags = Object.keys(tags)\n .sort()\n .reduce((prev: MetricsTags, curr: string) => {\n prev[curr] = tags[curr];\n return prev;\n }, {});\n const key = `${MetricType[metricType]}:${operation}${JSON.stringify(sortedTags)}`;\n return {\n key,\n sortedTags\n };\n }\n}\n","export class MockEvent {\n constructor(\n public readonly type: string,\n public readonly composed: boolean,\n private readonly _composedPaths: unknown[]\n ) {}\n composedPath(): unknown[] {\n return this._composedPaths;\n }\n}\n","import {\n activitySchema,\n errorSchema,\n instrumentedEventSchema,\n simpleSchema\n} from 'o11y_schema/sf_instrumentation';\n\nimport {\n LightningElement,\n LogPromptListener,\n MetricsTags,\n PublicSafety,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\nimport {\n Activity,\n ActivityApiOptions,\n ActivityDetail,\n ApiOptions,\n BucketMetric,\n DomEventApiOptions,\n Instrumentation,\n InstrumentationContext,\n Metric,\n MetricsReporter,\n PayloadProvider,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { ActivityData, ErrorData, InstrumentedEventData } from '../interfaces-private';\n\nimport { ActivityImpl, discarded, onActivityError, onActivityStop } from './ActivityImpl';\nimport { activityNoOp } from './ActivityNoOp';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { domEventHelpers } from './DomEventHelpers';\nimport {\n ErrorCode,\n ValidationEntry,\n logValidator,\n maxItemCountAppLimit,\n maxStringLengthAppLimit\n} from './LogValidator';\nimport { MetricsImpl } from './MetricsImpl';\nimport { MockEvent } from './MockEvent';\nimport { NextgenImpl } from './NextgenImpl';\n\n// @W-10241440, disable timeouts\nconst maxActivityDurationMsecs: number = undefined;\nconst reservedMetricCharacters = ['`'];\nconst reservedMetricNames = {\n internalError: 'o11y-error'\n};\nconst denyListMetricNames = Object.freeze(Array.from(Object.values(reservedMetricNames)));\n\nexport class InstrumentationImpl implements Instrumentation, MetricsReporter {\n protected static readonly defaultAppName = 'APP_NOT_REGISTERED';\n private readonly _metrics: MetricsImpl;\n private readonly _onActivityStoppedCallback: onActivityStop =\n this._handleActivityStop.bind(this);\n protected readonly _onActivityErrorCallback: onActivityError =\n this._handleActivityError.bind(this);\n protected readonly _safety: PublicSafety;\n private readonly _simpleTextMaxLength: number;\n\n constructor(private readonly _nextGen: NextgenImpl, private readonly _name: string) {\n for (const reservedChar of reservedMetricCharacters) {\n if (this._name.indexOf(reservedChar) >= 0) {\n throw new Error(`Name cannot include the reserved character \"${reservedChar}\"`);\n }\n }\n\n this._safety = new PublicSafety({\n increment: (increment) => this._incrementError(increment)\n });\n\n this._metrics = this._initMetrics();\n\n const simpleTextOptions = schemaUtil.getOptions(simpleSchema, 'Simple', 'text');\n this._simpleTextMaxLength = simpleTextOptions\n ? simpleTextOptions['(meta.max_length)']\n : maxStringLengthAppLimit;\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(\n this.name,\n () => this._nextGen.appName || InstrumentationImpl.defaultAppName\n );\n }\n\n private _incrementError(increment = 1): void {\n this._metrics.incrementCounter(reservedMetricNames.internalError, increment, false);\n }\n\n get name(): string {\n return this._name;\n }\n\n /**\n * This function is to allow for convenience calls to our API, where a string can\n * be provided instead of an actual Schema. In that case, we wrap the text in\n * a built-in simple schema.\n * @param userSchemaOrText Schema or string.\n * @param userData\n * @param onlyIfBoth If true, then both the schema and the data must be specified.\n * @returns\n */\n protected _wrapUserPayload(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n onlyIfBoth = false\n ): SchematizedPayload {\n let userSchema: Schema;\n if (typeof userSchemaOrText === 'string') {\n userSchema = simpleSchema;\n if (userSchemaOrText) {\n userData = {\n text: userSchemaOrText.substring(0, this._simpleTextMaxLength)\n };\n } else {\n userData = undefined;\n }\n } else {\n userSchema = userSchemaOrText;\n }\n\n return schemaUtil.makePayload(userSchema, userData, onlyIfBoth);\n }\n\n private getEffectiveRootId(options?: ApiOptions): string {\n return (\n options?.instrumentationContext?.rootId ??\n this._nextGen.getDefaultInstrumentationContext().rootId\n );\n }\n\n /**\n *\n * @param userSchema The schema of the second argument. Also used as the basis for auto-generated\n * counters for log calls using the same schema.\n * @param userData Optional data that complies with the provided schema\n */\n log(userSchemaOrText: Schema | string, userData?: SchematizedData, options?: ApiOptions): void {\n this._safety.tryCatch(() => {\n const timestamp = utility.time().tsNow;\n utility.requireArgument(userSchemaOrText, 'userSchemaOrText', ['object', 'string']);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData);\n\n if (userPayload?.payload) {\n this._logInternal(\n this.name,\n userPayload.schema,\n userPayload.payload,\n timestamp,\n this.getEffectiveRootId(options)\n );\n }\n });\n }\n\n protected _logInternal(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId?: string\n ): number {\n this._checkInputs(schema, data);\n const appPayload: SchematizedPayload = this._getPayloadFromProvider(\n this._nextGen.appPayloadProvider\n );\n const pagePayload: SchematizedPayload = this._getPayloadFromProvider(\n this._nextGen.pagePayloadProvider\n );\n\n return this._nextGen.addLog(\n loggerName,\n schema,\n data,\n timestamp,\n rootId,\n pagePayload,\n appPayload\n );\n }\n\n error(\n error: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ApiOptions\n ): void {\n return this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const rootId: string = this.getEffectiveRootId(options);\n this._errorInternal(error, userSchemaOrText, userData, undefined, rootId);\n });\n }\n\n protected _errorInternal(\n err: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n activityId?: string,\n rootActivityId?: string\n ): number {\n const loggedTimestamp = utility.time().tsNow;\n\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n let msg: string;\n if (err === undefined || err === null || typeof err.toString !== 'function') {\n msg = 'UNKNOWN';\n } else {\n msg = err.toString();\n }\n error = new Error(msg);\n }\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData, true);\n\n const errorData: ErrorData = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n userPayload,\n activityId\n };\n\n return this._logInternal(\n this.name,\n errorSchema,\n errorData,\n loggedTimestamp,\n rootActivityId\n );\n }\n\n startActivity(name: string, options?: ApiOptions): Activity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n let context: InstrumentationContext;\n\n const rootId: string = options?.instrumentationContext?.rootId;\n if (rootId) {\n context = {\n rootId,\n isRootActivitySampled: options.instrumentationContext.isRootActivitySampled\n };\n } else {\n // By definition, an activity is sampled if root activity is sampled\n context = this._nextGen.getDefaultInstrumentationContext();\n }\n const activity: Activity = new ActivityImpl(\n name,\n context.rootId,\n this._onActivityStoppedCallback,\n this._onActivityErrorCallback,\n maxActivityDurationMsecs,\n undefined,\n context.isRootActivitySampled\n );\n return activity;\n }, activityNoOp);\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const userPayload = this._wrapUserPayload(detail.userSchemaOrText, detail.userData, true);\n\n return {\n id: detail.id,\n name: detail.name,\n duration: detail.stopPerfTime - detail.startPerfTime,\n stopReason: detail.stopReason,\n userPayload,\n errorCount: detail.errorCount,\n isSampled: detail.isSampled,\n timerOverridden: detail.timerOverridden\n };\n }\n\n private _handleActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp, detail.rootId);\n }\n\n protected _logActivity(\n activityData: ActivityData,\n startTimestamp: number,\n rootId?: string\n ): void {\n this._logInternal(this.name, activitySchema, activityData, startTimestamp, rootId);\n }\n\n private _handleActivityError(error: unknown, detail: ActivityDetail): void {\n this._errorInternal(\n error,\n detail.userSchemaOrText,\n detail.userData,\n detail.id,\n detail.rootId\n );\n }\n\n private _getPayloadFromProvider(provider: PayloadProvider): SchematizedPayload {\n const payload: SchematizedPayload = provider?.getPayload() || undefined;\n if (payload) {\n this._checkInputs(payload.schema, payload.payload);\n }\n return payload;\n }\n\n domEvent(\n event: Event,\n handledBy: HTMLElement | LightningElement,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: DomEventApiOptions\n ): void {\n this._safety.tryCatch(() => {\n const tsNow = utility.time().tsNow;\n\n utility.requireArgument(event, 'event', [Event, MockEvent]);\n // TODO: Using 'object' instead of 'LightningElement' for now (no imports)\n utility.requireArgument(handledBy, 'handledBy', [HTMLElement, 'object']);\n\n let htmlElement;\n if (handledBy instanceof HTMLElement) {\n htmlElement = handledBy;\n } else {\n handledBy = handledBy as LightningElement;\n // Convenience for LightningElement developers who pass \"this\" in handledBy.\n // Get the underlying HTML element\n if (handledBy.template && handledBy.template.host instanceof HTMLElement) {\n htmlElement = handledBy.template.host;\n } else {\n utility.requireArgument(undefined, 'handledBy');\n }\n }\n\n const userPayload: SchematizedPayload = this._wrapUserPayload(\n userSchemaOrText,\n userData,\n true\n );\n\n const rootId: string = this.getEffectiveRootId(options);\n\n switch (event.type) {\n case 'click': {\n const mouseEvent = event as MouseEvent;\n\n // If the user has called domEvent API on this event explicitly,\n // then we don't need to log it by default.\n const acd: AutomaticClickTracker = this._nextGen.getClickTracker();\n if (acd) {\n acd.markEventHandled(mouseEvent);\n }\n\n const mouseEventData = domEventHelpers.getMouseEventData(mouseEvent);\n\n const instrumentedEvent: InstrumentedEventData =\n domEventHelpers.getInstrumentedEventData(\n mouseEventData,\n htmlElement,\n userPayload\n );\n instrumentedEvent.auto = options && options._auto;\n\n this._logInternal(\n this.name,\n instrumentedEventSchema,\n instrumentedEvent,\n tsNow,\n rootId\n );\n break;\n }\n default:\n throw new Error(utility.notImplemented);\n }\n });\n }\n\n incrementCounter(\n operation: string,\n increment = 1,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(increment, 'increment', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n this._metrics.incrementCounter(operation, increment, hasError, tags);\n });\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.trackValue(operation, value, hasError, tags);\n });\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[] = [],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(buckets, 'buckets', Array);\n Object.entries(buckets).forEach((entry) => {\n utility.requireArgument(entry[1], `Bucket value for '${entry[0]}'`, 'number');\n });\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.bucketValue(operation, value, buckets, hasError, tags);\n });\n }\n\n private _checkInputs(schema: Schema, data: SchematizedData): void {\n schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n let vEntries: ValidationEntry[];\n let savedUserPayload: SchematizedPayload;\n if (data.userPayload !== undefined && schemaUtil.isInternal(schema)) {\n // For internal schemas where we have nested messages, we need to temporarily\n // remove userPayload, since it's not yet encoded. (If left in place, it would fail\n // validation since it's not UInt8Array). We validate it separately here.\n savedUserPayload = data.userPayload;\n vEntries = logValidator.validate(\n savedUserPayload.schema,\n savedUserPayload.payload,\n true\n );\n this._processValidationResults(\n schemaUtil.getSchemaId(savedUserPayload.schema),\n savedUserPayload.payload,\n vEntries\n );\n data.userPayload = undefined;\n }\n\n vEntries = logValidator.validate(schema, data, true);\n this._processValidationResults(schemaUtil.getSchemaId(schema), data, vEntries);\n\n if (savedUserPayload !== undefined) {\n // Restore userPayload\n data.userPayload = savedUserPayload;\n }\n }\n\n private _processValidationResults(\n schemaId: string,\n data: SchematizedData,\n ventries: ValidationEntry[]\n ): void {\n for (let i = 0; i < ventries.length; i += 1) {\n const ei = ventries[i];\n\n if (\n ei.errorCode == ErrorCode.stringLengthOverflowAppLimit ||\n ei.errorCode == ErrorCode.itemCountOverflowAppLimit\n ) {\n const lfi = ei.fields.length - 1;\n const obj = this._traverseFields(data, ei.fields.slice(0, lfi));\n const field = ei.fields[lfi];\n if (ei.errorCode == ErrorCode.stringLengthOverflowAppLimit) {\n obj[field] = obj[field].substring(0, maxStringLengthAppLimit);\n } else {\n obj[field].splice(maxItemCountAppLimit);\n }\n } else {\n throw new Error(ei.asMessage(schemaId));\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _traverseFields(data: SchematizedData, fields: string[]): any {\n if (!fields.length) {\n return data;\n }\n return this._traverseFields(data[fields[0]], fields.slice(1));\n }\n\n getUpCounters(): Metric<number>[] {\n return this._metrics.getUpCounters().filter((m) => m.getLastUpdatedOn());\n }\n\n getValueRecorders(): Metric<number[]>[] {\n return this._metrics.getValueRecorders().filter((m) => m.getLastUpdatedOn());\n }\n\n getBucketHistograms(): BucketMetric<number[]>[] {\n return this._metrics.getBucketHistograms().filter((m) => m.getLastUpdatedOn());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n utility.requireArgument(listener, 'listener', 'function');\n this._nextGen.registerForLogPrompt(listener);\n }\n\n activity<T>(name: string, execute: (act: Activity) => T, options?: ActivityApiOptions): T {\n const act = this.startActivity(name, options);\n try {\n return execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(options?.stopPayload?.schema, options?.stopPayload?.payload);\n }\n }\n\n async activityAsync<T>(\n name: string,\n execute: (act: Activity) => Promise<T>,\n options?: ActivityApiOptions\n ): Promise<T> {\n const act = this.startActivity(name, options);\n try {\n return await execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(options?.stopPayload?.schema, options?.stopPayload?.payload);\n }\n }\n}\n","import { RootActivity, Schema } from '../interfaces';\nimport { ActivityDetail } from '../interfaces/ActivityDetail';\nimport { ActivityImpl, onActivityError, onActivityStop } from './ActivityImpl';\nimport { SchematizedData, utility } from 'o11y/shared';\n\nexport class RootActivityImpl extends ActivityImpl implements RootActivity {\n constructor(\n name: string,\n onStopped: onActivityStop,\n onError: onActivityError,\n rootId?: string,\n _isSampled?: boolean\n ) {\n super(\n name,\n undefined,\n onStopped,\n onError,\n undefined,\n rootId || utility.generateUniqueId(32),\n _isSampled\n );\n }\n\n private _preRootId: string;\n get preRootId(): string {\n return this._preRootId;\n }\n set preRootId(value: string) {\n this._preRootId = value;\n }\n\n protected _getDetail(userSchema: Schema, userData: SchematizedData): ActivityDetail {\n const detail = super._getDetail(userSchema, userData);\n detail.isRoot = true;\n detail.preRootId = this.preRootId;\n return detail;\n }\n}\n","import { RootActivity, TracingHeadersOptions } from '../interfaces';\n\nconst rootId: string = new Array(32).fill(0).join('');\nclass RootActivityNoOp implements RootActivity {\n getId(): string {\n return rootId;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n}\n\nexport const rootActivityNoOp = Object.freeze(new RootActivityNoOp());\n","import { ActivityDetail, RootActivity } from '../interfaces';\nimport { ActivityData } from '../interfaces-private';\nimport { discarded, onActivityStop } from './ActivityImpl';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { RootActivityImpl } from './RootActivityImpl';\nimport { rootActivityNoOp } from './RootActivityNoOp';\nimport { utility } from 'o11y/shared';\nimport { MetricsImpl } from './MetricsImpl';\nimport { NextgenImpl } from './NextgenImpl';\n\nexport class AppInstrumentationImpl extends InstrumentationImpl {\n private _singleRootActivity: RootActivityImpl; // Not used when _allowMulti = true\n\n private readonly _onRootActivityStoppedCallback: onActivityStop =\n this.handleRootActivityStop.bind(this);\n\n constructor(_nextGen: NextgenImpl, _name: string, private readonly _allowMulti: boolean) {\n super(_nextGen, _name);\n }\n\n startRootActivity(name: string, rootId?: string, isSampled?: boolean): RootActivity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n\n const newRootActivity = new RootActivityImpl(\n name,\n this._onRootActivityStoppedCallback,\n this._onActivityErrorCallback,\n rootId,\n isSampled\n );\n\n if (!this._allowMulti) {\n if (this._singleRootActivity && !this._singleRootActivity.isStopped) {\n const preRootId = this._singleRootActivity.getId();\n this._singleRootActivity.terminate();\n newRootActivity.preRootId = preRootId;\n }\n this._singleRootActivity = newRootActivity;\n }\n\n return newRootActivity as RootActivity;\n }, rootActivityNoOp);\n }\n\n private handleRootActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp);\n this._singleRootActivity = undefined;\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const activityData: ActivityData = super._getActivityData(detail);\n activityData.isRoot = detail.isRoot;\n activityData.preRootId = detail.preRootId;\n return activityData;\n }\n\n getSingleRootActivityId(): string {\n return this._singleRootActivity?.getId();\n }\n\n isSingleRootActivitySampled(): boolean {\n return this._singleRootActivity?.getIsSampled();\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(this.name, () => this.name);\n }\n}\n","import { Instrumentation } from '../interfaces';\nimport { utility } from 'o11y/shared';\n\nconst pathLimit = 5;\n\nexport class AutomaticClickTracker {\n private instr: Instrumentation;\n private ignoredEvent: Event;\n private isActive = false;\n private document: Document;\n private readonly _boundClickListener = this.clickListener.bind(this);\n\n constructor(instrumentation: Instrumentation, document: Document) {\n utility.requireArgument(instrumentation, 'instrumentation');\n utility.requireArgument(document, 'document');\n\n this.instr = instrumentation;\n this.document = document;\n }\n\n activate(): void {\n if (!this.isActive) {\n this.document.addEventListener('click', this._boundClickListener, true);\n this.isActive = true;\n }\n }\n\n deactivate(): void {\n if (this.isActive) {\n this.document.removeEventListener('click', this._boundClickListener, true);\n this.isActive = false;\n }\n }\n\n markEventHandled(event: MouseEvent): void {\n this.ignoredEvent = event;\n }\n\n private clickListener(event: MouseEvent): void {\n let eventTargets: EventTarget[] = event.composedPath && event.composedPath();\n if (!eventTargets || !eventTargets.length) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n eventTargets = (event as any).path;\n }\n const handledBy: HTMLElement = this.getClickableElement(eventTargets);\n\n if (handledBy) {\n // Immediate\n setTimeout(() => {\n if (event !== this.ignoredEvent) {\n this.instr.domEvent(event, handledBy, undefined, undefined, {\n _auto: true\n });\n }\n });\n }\n }\n\n private getClickableElement(path: EventTarget[]): HTMLElement {\n const limit = path ? Math.min(path.length, pathLimit) : 0;\n for (let x = 0; x < limit; x += 1) {\n const currentElement = path[x] as HTMLElement;\n const tagName = currentElement.tagName && currentElement.tagName.toLowerCase();\n if (tagName === 'a' || tagName === 'button') {\n return currentElement;\n }\n if (tagName === 'input') {\n const inputElement = currentElement as HTMLInputElement;\n if (inputElement.type && inputElement.type.toLowerCase() === 'button') {\n return inputElement;\n }\n }\n }\n return undefined;\n }\n}\n","import {\n BucketMetric,\n BufferedLog,\n Instrumentation,\n InstrumentationContext,\n InstrumentedAppMethods,\n InstrumentedAppOptions,\n LogCollector,\n LogCollectorOptions,\n LogMeta,\n Metric,\n MetricsCollector,\n Nextgen,\n PayloadProvider,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { AppInstrumentationImpl } from './AppInstrumentationImpl';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { Tracing } from './Tracing';\nimport { LogPromptListener, SchematizedData, schemaUtil, utility } from 'o11y/shared';\n\nconst maxInstrumentationLength = 80;\nconst truncatedText = '_CUT';\nconst maxInstrumentationLengthBeforeTruncated = maxInstrumentationLength - truncatedText.length;\n\nexport class NextgenImpl implements Nextgen {\n private readonly _logCollectors = new Set<LogCollector>();\n private readonly _instruments = new Map<string, InstrumentationImpl | AppInstrumentationImpl>();\n private readonly _seqBySchema = new Map<string, number>();\n private _sequence = 0;\n private _appInstr: AppInstrumentationImpl;\n private _autoClickTracker: AutomaticClickTracker;\n private _metricsCollector: MetricsCollector;\n private _appPayloadProvider: PayloadProvider;\n private _pagePayloadProvider: PayloadProvider;\n private _forceDisabledLogCollectors = new Set<LogCollector>();\n private _logCollectorFailures = new Map<LogCollector, number>();\n private static _collectorFailureLimit = 5;\n private _isBufferingEnabled = false;\n private _buffer: BufferedLog[] = [];\n private readonly _logCollectionListeners = new Set<LogPromptListener>();\n\n get pagePayloadProvider(): PayloadProvider {\n return this._pagePayloadProvider;\n }\n set pagePayloadProvider(provider: PayloadProvider) {\n this._pagePayloadProvider = provider;\n }\n\n get appPayloadProvider(): PayloadProvider {\n return this._appPayloadProvider;\n }\n set appPayloadProvider(provider: PayloadProvider) {\n this._appPayloadProvider = provider;\n }\n\n registerApp(name: string, options?: InstrumentedAppOptions): InstrumentedAppMethods {\n utility.requireArgument(name, 'name', 'string');\n if (this._appInstr) {\n throw new Error('An app has already been registered with instrumentation.');\n }\n const instr = this._instruments.get(name);\n if (instr) {\n throw new Error(`The instrumentation name ${name} is already taken`);\n }\n this._appInstr = new AppInstrumentationImpl(\n this,\n name,\n options && options.allowMultipleRootActivities\n );\n this._instruments.set(name, this._appInstr);\n this._isBufferingEnabled = options && options.enableBuffering;\n\n const tracing = new Tracing(this._appInstr);\n\n return {\n log: this._appInstr.log.bind(this._appInstr),\n error: this._appInstr.error.bind(this._appInstr),\n startActivity: this._appInstr.startActivity.bind(this._appInstr),\n domEvent: this._appInstr.domEvent.bind(this._appInstr),\n incrementCounter: this._appInstr.incrementCounter.bind(this._appInstr),\n trackValue: this._appInstr.trackValue.bind(this._appInstr),\n bucketValue: this._appInstr.bucketValue.bind(this._appInstr),\n networkInstrumentation: tracing.networkInstrumentation.bind(tracing),\n registerForLogPrompt: this._appInstr.registerForLogPrompt.bind(this._appInstr),\n activity: this._appInstr.activity.bind(this._appInstr),\n activityAsync: this._appInstr.activityAsync.bind(this._appInstr),\n\n startRootActivity: this._appInstr.startRootActivity.bind(this._appInstr),\n registerLogCollector: this.registerLogCollector.bind(this),\n registerMetricsCollector: this.registerMetricsCollector.bind(this),\n activateClickTracker: this.activateClickTracker.bind(this),\n deactivateClickTracker: this.deactivateClickTracker.bind(this),\n disableBuffering: this.disableBuffering.bind(this),\n promptLogCollection: this.promptLogCollection.bind(this)\n };\n }\n\n getInstrumentation(name: string): Instrumentation {\n utility.requireArgument(name, 'name', 'string');\n if (name.length > maxInstrumentationLength) {\n // don't throw if it's too long. just add truncated suffix, but stay within max length\n name = name.substr(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;\n }\n let instr: InstrumentationImpl | AppInstrumentationImpl = this._instruments.get(name);\n if (!instr) {\n instr = new InstrumentationImpl(this, name);\n this._instruments.set(name, instr);\n } else if (instr === this._appInstr) {\n throw new Error(`The instrumentation name ${name} is being used by the app.`);\n }\n return instr;\n }\n\n get appName(): string {\n return this._appInstr && this._appInstr.name;\n }\n\n // This is an internal method that needs to be public\n addLog(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId: string,\n pagePayload: SchematizedPayload,\n appPayload: SchematizedPayload\n ): number {\n this._sequence += 1;\n\n const schemaId = schemaUtil.getSchemaId(schema);\n let schemaSequence = this._seqBySchema.get(schemaId) || 0;\n schemaSequence += 1;\n this._seqBySchema.set(schemaId, schemaSequence);\n\n const logMeta: LogMeta = {\n timestamp,\n rootId,\n sequence: this._sequence,\n schemaSequence,\n loggerName,\n pagePayload: pagePayload ? utility.clone(pagePayload) : undefined,\n appPayload: appPayload ? utility.clone(appPayload) : undefined,\n loggerAppName: this.appName,\n connectionType: utility.getConnectionType()\n };\n\n if (this._isBufferingEnabled) {\n // Always push to the buffer, even if no eligible collectors\n this._buffer.push({ schema, data: utility.clone(data), logMeta });\n }\n\n const eligibleCollectors: LogCollector[] = Array.from(this._logCollectors).filter(\n (collector: LogCollector) =>\n !this._forceDisabledLogCollectors.has(collector) &&\n !(collector.getIsCollectDisabled && collector.getIsCollectDisabled())\n );\n\n if (eligibleCollectors.length > 0) {\n for (const collector of eligibleCollectors) {\n // Make a copy of the aguments passed to the collectors lest they change them.\n const dataClone: SchematizedData = utility.clone(data);\n let failures: number = this._logCollectorFailures.get(collector) || 0;\n\n try {\n collector.collect(schema, dataClone, logMeta);\n // if it got here it means it succeeded/didn't throw so we want to decrement the failure count\n if (failures > 0) {\n this._logCollectorFailures.set(collector, failures - 1);\n }\n } catch (err) {\n failures += 1;\n // If a collector fails too much we just disable it\n if (failures >= NextgenImpl._collectorFailureLimit) {\n this._forceDisabledLogCollectors.add(collector);\n if (this._appInstr && (typeof err === 'string' || err instanceof Error)) {\n this._appInstr.error(err);\n }\n } else {\n this._logCollectorFailures.set(collector, failures);\n // We can't log an error here, or the same collector will immediately be called\n // again, likely resulting in repeat exceptions until the collector gets disabled.\n }\n }\n }\n }\n return this._sequence;\n }\n\n getBuffer(): BufferedLog[] {\n return this._buffer;\n }\n\n disableBuffering(): void {\n this._isBufferingEnabled = false;\n this._buffer = [];\n }\n\n getClickTracker(): AutomaticClickTracker {\n return this._autoClickTracker;\n }\n\n getDefaultInstrumentationContext(): InstrumentationContext {\n return {\n rootId: this._appInstr?.getSingleRootActivityId(),\n isRootActivitySampled: this._appInstr?.isSingleRootActivitySampled()\n };\n }\n\n activateClickTracker(): void {\n if (!this._autoClickTracker) {\n this._autoClickTracker = new AutomaticClickTracker(this._appInstr, window.document);\n }\n this._autoClickTracker.activate();\n }\n\n deactivateClickTracker(): void {\n if (this._autoClickTracker) {\n this._autoClickTracker.deactivate();\n // In case activateClickTracker is called later with a different instrumentation\n this._autoClickTracker = undefined;\n }\n }\n\n registerLogCollector(collector: LogCollector, options?: LogCollectorOptions): void {\n utility.requireArgument(collector, 'collector');\n if (this._logCollectors.has(collector)) {\n return;\n }\n this._logCollectors.add(collector);\n this._logCollectorFailures.set(collector, 0);\n if (\n (!collector.getIsCollectDisabled || !collector.getIsCollectDisabled()) &&\n options &&\n options.retroactive\n ) {\n for (const log of this._buffer) {\n collector.collect(log.schema, log.data, log.logMeta);\n }\n }\n }\n\n registerMetricsCollector(collector: MetricsCollector): void {\n utility.requireArgument(collector, 'collector');\n if (this._metricsCollector) {\n throw new Error('A metrics Collector is already registered.');\n }\n this._metricsCollector = collector;\n this._metricsCollector.receiveMetricsExtractors({\n getAllUpCounters: this.getAllUpCounters.bind(this),\n getAllValueRecorders: this.getAllValueRecorders.bind(this),\n getAllBucketHistograms: this.getAllBucketHistograms.bind(this)\n });\n }\n\n private getAllUpCounters(): Metric<number>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getUpCounters()\n );\n return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);\n }\n\n private getAllValueRecorders(): Metric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getValueRecorders()\n );\n return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);\n }\n\n private getAllBucketHistograms(): BucketMetric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getBucketHistograms()\n );\n return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n this._logCollectionListeners.add(listener);\n }\n\n promptLogCollection(reason: string): void {\n for (const listener of this._logCollectionListeners.keys()) {\n try {\n listener(reason);\n } catch (err) {\n if (!utility.isProduction) {\n throw err;\n }\n }\n }\n }\n}\n","import { Instrumentation, InstrumentedAppMethods, InstrumentedAppOptions } from './interfaces';\nimport { NextgenImpl } from './library/NextgenImpl';\nimport { utility } from 'o11y/shared';\n\nclass Index {\n private _nextgen: NextgenImpl;\n // We are lazily initializing the singleton to allow any options to be processed\n // before the instantiation.\n private get _lazyNextGen(): NextgenImpl {\n if (!this._nextgen) {\n this._nextgen = new NextgenImpl();\n }\n return this._nextgen;\n }\n\n public registerInstrumentedApp(\n name: string,\n options?: InstrumentedAppOptions\n ): InstrumentedAppMethods {\n if (!options || options.isProduction !== false) {\n // Do this before construction\n // Production by default\n utility.markProduction();\n }\n const retVal: InstrumentedAppMethods = this._lazyNextGen.registerApp(name, options);\n if (options) {\n this._nextgen.appPayloadProvider = options.appPayloadProvider;\n this._nextgen.pagePayloadProvider = options.pagePayloadProvider;\n }\n return retVal;\n }\n\n public getInstrumentation(name?: string): Instrumentation {\n return this._lazyNextGen.getInstrumentation(name);\n }\n}\nconst index = new Index(); // singleton\nconst registerInstrumentedApp = index.registerInstrumentedApp.bind(index);\nconst getInstrumentation = index.getInstrumentation.bind(index);\nconst time = utility.time.bind(utility);\n\nexport { registerInstrumentedApp, getInstrumentation, time };\n","import { TaskerMulti, TaskerSingle } from '../interfaces/IdleDetector';\n\nexport type TaskDoneNotifier = () => void;\n\nexport class TaskerImpl implements TaskerSingle, TaskerMulti {\n private _busyCount = 0;\n private _isOk = true; // Once an error occurs, make operations no-op\n\n get isBusy(): boolean {\n return this._isOk ? this._busyCount > 0 : undefined;\n }\n\n constructor(\n public readonly name: string,\n initialCount: number,\n private readonly _doneCallback: TaskDoneNotifier,\n private readonly _overDoneCallback: TaskDoneNotifier\n ) {\n this._busyCount = initialCount;\n }\n\n add(): void {\n if (this._isOk) {\n this._busyCount += 1;\n }\n }\n done(): void {\n if (this._isOk) {\n if (this._busyCount > 0) {\n this._busyCount -= 1;\n if (!this._busyCount) {\n this._doneCallback();\n }\n } else {\n this._isOk = false;\n this._overDoneCallback();\n }\n }\n }\n}\n","import { getInstrumentation } from '../index';\nimport {\n IdleDetector,\n IdleDetectorOptions,\n IdleDetectorReport,\n Instrumentation\n} from '../interfaces';\nimport {\n IdleDetectedListener,\n IsBusyChecker,\n TaskerMulti,\n TaskerSingle\n} from '../interfaces/IdleDetector';\nimport { TaskerImpl } from './TaskerImpl';\nimport { utility } from 'o11y/shared';\nimport { idleDetectorReportSchema } from 'o11y_schema/sf_instrumentation';\n\nconst defaultLogThreshold = 300;\n\ntype TaskReportEntry = {\n name: string;\n start: number;\n end: number;\n};\n\ntype PollableReportEntry = {\n name: string;\n count: number;\n};\n\nexport class IdleDetectorImpl implements IdleDetector {\n private readonly _instr: Instrumentation = getInstrumentation('IdleDetector');\n private readonly _taskers = new Map<TaskerImpl, TaskReportEntry>();\n private readonly _listeners = new Set<IdleDetectedListener>();\n private readonly _busyCheckers = new Map<IsBusyChecker, string>();\n private readonly _logThreshold: number = defaultLogThreshold;\n private readonly _endedTasks = new Array<TaskReportEntry>();\n private readonly _pollableReport = new Array<PollableReportEntry>();\n private _firstCallbackTime: number;\n private _timerCheckQueued = 0; // timerIds are always positive integers. 0 means nothing is queued\n\n constructor(options?: IdleDetectorOptions) {\n if (\n utility.requireArgumentIfDefined(\n options?.logThreshold,\n 'options.logThreshold',\n 'number'\n )\n ) {\n this._logThreshold = options.logThreshold;\n }\n }\n\n requestIdleDetectedCallback(callback: IdleDetectedListener): void {\n utility.requireArgument(callback, 'callback', 'function');\n if (this._listeners.size === 0) {\n this._firstCallbackTime = utility.time().perfNow;\n }\n this._listeners.add(callback);\n this.checkIfLoaded();\n }\n\n private reportTaskEnded(tasker: TaskerImpl): void {\n // Report only if we have any listeners\n if (this._listeners.size) {\n const snapshot = Object.assign({}, this._taskers.get(tasker));\n this._endedTasks.push(snapshot);\n }\n }\n\n declareNotifierTaskSingle(name: string): TaskerSingle {\n utility.requireArgument(name, 'name', 'string');\n const tasker = this.addTasker(name, 1);\n\n const retVal: TaskerSingle = {\n get isBusy() {\n return tasker.isBusy;\n },\n done: () => {\n tasker.done();\n this._taskers.delete(tasker);\n }\n };\n\n return retVal;\n }\n\n declareNotifierTaskMulti(name: string, existingBusyCount = 0): TaskerMulti {\n utility.requireArgument(name, 'name', 'string');\n if (existingBusyCount !== undefined) {\n utility.requireArgument(existingBusyCount, 'existingBusyCount', 'number');\n\n if (\n existingBusyCount < 0 ||\n parseInt(existingBusyCount.toString(), 10) !== existingBusyCount\n ) {\n // Remove decimal points to make sure it's an integer\n throw new Error('existingBusyCount accepts only non-negative integers');\n }\n }\n const tasker = this.addTasker(name, existingBusyCount);\n\n const retVal: TaskerMulti = {\n get isBusy() {\n return tasker.isBusy;\n },\n add: () => {\n if (!tasker.isBusy) {\n const meta = this._taskers.get(tasker);\n meta.start = utility.time().perfNow;\n meta.end = undefined;\n }\n tasker.add();\n },\n done: tasker.done.bind(tasker) // Note: don't delete multi tasker\n };\n return retVal;\n }\n\n declarePollableTaskMulti(name: string, isBusyChecker: IsBusyChecker): void {\n utility.requireArgument(name, 'name', 'string');\n utility.requireArgument(isBusyChecker, 'isBusyChecker', 'function');\n\n this._busyCheckers.set(isBusyChecker, name);\n }\n\n private addTasker(name: string, existingBusyCount: number): TaskerImpl {\n const tasker = new TaskerImpl(\n name,\n existingBusyCount,\n () => {\n // Done callback\n this._taskers.get(tasker).end = utility.time().perfNow;\n this.reportTaskEnded(tasker);\n this.checkIfLoaded();\n },\n () => {\n // Overdone callback\n this._instr.error(`Overdone: ${tasker.name}`);\n utility.noProdThrow(`Tasker '${tasker.name}' is done too many times.`);\n }\n );\n this._taskers.set(tasker, {\n name,\n start: existingBusyCount > 0 ? utility.time().perfNow : undefined,\n end: undefined\n });\n return tasker;\n }\n\n private areAllNotifiersIdle(): boolean {\n return !Array.from(this._taskers.keys()).some((t) => t.isBusy);\n }\n\n private getFirstBusyPollable(): string {\n const entry = Array.from(this._busyCheckers).find((entry) => {\n const isBusyChecker = entry[0];\n const name = entry[1];\n try {\n return isBusyChecker();\n } catch (e) {\n this._instr.error(e, `BusyChecker ${name}`);\n utility.noProdThrow(e);\n return false; // Not busy\n }\n });\n\n return entry ? entry[1] : undefined;\n }\n\n private checkIfLoaded(): void {\n if (!this._listeners.size) {\n // bail out early. We don't have any callbacks queued\n return;\n }\n\n // We restart the idle timer check logic whenever we get an external\n // trigger that a resource was loaded since that would imply that more\n // work could be queued up and we want to be aware of that\n if (this._timerCheckQueued) {\n window.clearTimeout(this._timerCheckQueued);\n }\n\n if (this.areAllNotifiersIdle()) {\n // Enqueue two RAF to make sure nothing got queued in this js cycle\n // note the use of double setTimeout. We want our setTimeout to queue up after\n // any set timeouts queued within micro tasks that may run after processing this\n // xhr response.\n // Here's a sample timeline\n // .....[ Single Event Loop ].....................................\n // .....[XHR callback][checkIfLoaded][microtasks]-[1st setTimeout]....[2nd setTimeout]\n // ^\n // queue settimeout at the end of event loop --->|\n this._timerCheckQueued = window.setTimeout(() => {\n this._timerCheckQueued = window.setTimeout(() => {\n this.doubleCheck();\n }, 40);\n }, 0);\n }\n }\n\n private doubleCheck(): void {\n this._timerCheckQueued = 0;\n\n if (this.areAllNotifiersIdle()) {\n const pollableName: string = this.getFirstBusyPollable();\n if (pollableName !== undefined) {\n // we'll have to keep polling until polled operations finish\n this.addToPollableReport(pollableName);\n this._timerCheckQueued = window.setTimeout(() => {\n this.doubleCheck();\n }, 15);\n } else {\n // OK!! We are certified idle.\n const maxDuration = utility.time().perfNow - this._firstCallbackTime;\n\n // Take a snapshot of internal variables so that we don't get confused\n // if tasks are created or listeners or worse, get into an infinite loop\n // if idle is requested\n const listeners = Array.from(this._listeners.values());\n this._listeners.clear();\n\n this._firstCallbackTime = undefined;\n const endedTasks = this._endedTasks.splice(0);\n const pollableReport = this._pollableReport.splice(0);\n\n this.notify(listeners, maxDuration, endedTasks, pollableReport);\n }\n }\n }\n\n private addToPollableReport(name: string): void {\n const lastEntry: PollableReportEntry = this._pollableReport.length\n ? this._pollableReport[this._pollableReport.length - 1]\n : undefined;\n\n if (lastEntry?.name === name) {\n lastEntry.count += 1;\n } else {\n this._pollableReport.push({\n name,\n count: 1\n });\n }\n }\n\n private notify(\n listeners: IdleDetectedListener[],\n maxDuration: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): void {\n if (maxDuration >= this._logThreshold) {\n const logData: IdleDetectorReport = this._getReport(\n maxDuration,\n listeners.length,\n taskReport,\n pollableReport\n );\n this._instr.log(idleDetectorReportSchema, logData);\n }\n\n const tsNow = utility.time().tsNow;\n for (const [index, listener] of listeners.entries()) {\n try {\n listener(tsNow);\n } catch (e) {\n this._instr.error(e, `Listener #${index}`);\n utility.noProdThrow(e);\n }\n }\n }\n\n getReport(): IdleDetectorReport {\n const perfNow = utility.time().perfNow;\n const maxDuration =\n this._firstCallbackTime > 0 ? perfNow - this._firstCallbackTime : undefined;\n\n const onGoingTasks: Array<TaskReportEntry> = Array.from(this._taskers.entries())\n .filter((e) => e[0].isBusy)\n .map((e) => ({\n name: e[1].name,\n start: e[1].start,\n end: perfNow\n }));\n return this._getReport(\n maxDuration,\n this._listeners.size,\n this._endedTasks.concat(onGoingTasks),\n this._pollableReport\n );\n }\n\n private _getReport(\n maxDuration: number,\n listenerCount: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): IdleDetectorReport {\n const sortedTaskers = taskReport\n .map((t) => ({\n name: t.name,\n duration: t.end - t.start\n }))\n .sort((a, b) => b.duration - a.duration);\n return {\n logThreshold: this._logThreshold,\n maxDuration,\n listenerCount,\n pollableCount: this._busyCheckers.size,\n busyTasks: sortedTaskers.map((t) => t.name),\n busyDurations: sortedTaskers.map((t) => t.duration),\n pollables: pollableReport.map((p) => p.name),\n pollCounts: pollableReport.map((p) => p.count)\n };\n }\n}\n","import { Environment, LogCollector, LogMeta, Schema } from '../interfaces';\nimport { SchematizedData, schemaUtil } from 'o11y/shared';\n\ntype ColorMap = Record<string, string>;\n\nconst bgColorMap: ColorMap = {\n Error: 'Crimson',\n Activity: 'CadetBlue',\n InstrumentedEvent: 'DarkOliveGreen',\n O11ySample: 'BlueViolet'\n};\nconst colorMap: ColorMap = {\n Error: 'white',\n Activity: 'white',\n InstrumentedEvent: 'white',\n O11ySample: 'white'\n};\nconst defaultColor = 'black';\nconst defaultBgColor = 'Gainsboro';\n\nexport class ConsoleCollector implements LogCollector {\n constructor(environment?: Environment) {\n if (environment) {\n this._log('ConsoleCollector', environment);\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n let label, color, bgColor;\n if (schema.namespace === 'sf.instrumentation') {\n label = schema.name;\n color = colorMap[schema.name] || defaultColor;\n bgColor = bgColorMap[schema.name] || defaultBgColor;\n } else {\n label = schemaUtil.getSchemaId(schema);\n }\n\n this._log(label, data, logMeta, color, bgColor);\n }\n\n private _log(\n label: string,\n first?: unknown,\n second?: unknown,\n color: string = defaultColor,\n bgColor: string = defaultBgColor\n ): void {\n const css = `color:${color};background-color:${bgColor}`;\n // eslint-disable-next-line no-console\n console.log(\n `%cO11Y%c ${label}`,\n 'color:white;background-color:#FF6600;font-weight:bold',\n css,\n first || '',\n second || ''\n );\n }\n}\n","// This is the file that exports all `o11y` module level exports.\nimport { IdleDetector } from './interfaces';\nimport { IdleDetectorImpl } from './library/IdleDetectorImpl';\n\nexport const idleDetector: IdleDetector = new IdleDetectorImpl({\n logThreshold: 300\n});\n\nexport * from './index';\nexport { ConsoleCollector } from './console-collector/ConsoleCollector';\n"],"names":["simpleSchema","error","errorSchema","activitySchema","instrumentedEventSchema","idleDetectorReportSchema"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sources":["../../../../src/library/Tracing.ts","../../../../src/library/TimerOverride.ts","../../../../src/library/ActivityImpl.ts","../../../../../../node_modules/o11y_schema/sf_instrumentation/activity.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/error.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/idle_detector_report.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/instrumented_event.js","../../../../../../node_modules/o11y_schema/sf_instrumentation/simple.js","../../../../src/library/ActivityNoOp.ts","../../../../src/library/DomEventHelpers.ts","../../../../src/library/LogValidator.ts","../../../../src/library/BucketHistogramImpl.ts","../../../../src/library/UpCounterImpl.ts","../../../../src/library/ValueRecorderImpl.ts","../../../../src/library/SizeLimitedMap.ts","../../../../src/library/MetricsImpl.ts","../../../../src/library/MockEvent.ts","../../../../src/library/InstrumentationImpl.ts","../../../../src/library/RootActivityImpl.ts","../../../../src/library/RootActivityNoOp.ts","../../../../src/library/AppInstrumentationImpl.ts","../../../../src/library/AutomaticClickTracker.ts","../../../../src/library/NextgenImpl.ts","../../../../src/index.ts","../../../../src/library/TaskerImpl.ts","../../../../src/library/IdleDetectorImpl.ts","../../../../src/console-collector/ConsoleCollector.ts","../../../../src/version.ts","../../../../src/client.ts"],"sourcesContent":["import {\n Instrumentation,\n TracingHeadersOptions,\n NetworkInstrumentationOptions,\n Activity\n} from '../interfaces';\nimport { utility } from 'o11y/shared';\n\ntype FetchType = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;\ntype XhrType = {\n prototype: XMLHttpRequest;\n new (): XMLHttpRequest;\n readonly DONE: number;\n readonly HEADERS_RECEIVED: number;\n readonly LOADING: number;\n readonly OPENED: number;\n readonly UNSENT: number;\n};\ntype XhrSendType = (body?: Document | XMLHttpRequestBodyInit | null) => void;\ninterface O11yXhr extends XMLHttpRequest {\n _o11yActivity: Activity;\n}\n\nconst defaultTraceIdLengthW3 = 32; // 32 Characters = 128 bits\nconst defaultTraceIdLengthB3 = 16; // 16 Characters = 64 bits\nconst defaultSpanIdLength = 16; // 16 Characters = 64 bits\n\n// Headers for W3 tracing (https://www.w3.org/TR/trace-context/#traceparent-header)\nconst headerTraceParent = 'traceparent';\n\n// Headers for B3 tracing (https://github.com/openzipkin/b3-propagation)\nconst headerB3 = 'b3';\nconst headerTraceId = 'X-B3-TraceId';\nconst headerSpanId = 'X-B3-SpanId';\nconst headerSampled = 'X-B3-Sampled';\nconst headerParentSpanId = 'X-B3-ParentSpanId';\n\nconst defaultActivityNameForFetch = 'fetch';\nconst defaultActivityNameForXhrSend = 'xhr_send';\n\nexport class Tracing {\n private static _global: typeof globalThis = utility.getGlobal();\n private static _originalFetch: FetchType;\n private static _originalXhr: XhrType;\n private static _originalXhrSend: XhrSendType;\n private static _isNetworkInstrumentationEnabled = false;\n\n constructor(private readonly instr: Instrumentation) {\n utility.requireArgument(instr, 'instr', 'object');\n }\n\n private static _getB3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n parentSpanId?: string\n ): string {\n // b3={TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}\n // Note: last two fields are optional\n\n let b3 = `${traceId}-${spanId}`;\n\n if (isSampled !== undefined || parentSpanId !== undefined) {\n b3 += isSampled ? '-1' : '-0';\n if (parentSpanId !== undefined) {\n b3 += `-${parentSpanId}`;\n }\n }\n return b3;\n }\n\n private static _getW3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled: boolean\n ): string {\n // traceparent={version}-{trace-id}-{parent-id}-{trace-flags}\n // \"in some tracing systems, parent-id is known as the span-id, where a span is the execution of a client request\"\n return `00-${traceId}-${spanId}-${isSampled ? '01' : '00'}`;\n }\n\n private static _conformTextAsId(text: string, numChars: number): string {\n // First validate\n text = text.toLowerCase();\n const len: number = text.length;\n for (let i = 0; i < len; i += 1) {\n const c = text[i];\n if (!(c >= 'a' && c <= 'f') && !(c >= '0' && c <= '9')) {\n throw new Error(`The text '${text}' has an invalid character at index #${i}`);\n }\n }\n\n if (len > numChars) {\n // Use the right-most characters per spec\n return text.substr(len - numChars);\n }\n if (len < numChars) {\n // Pad left with 0s per spec\n return text.padStart(numChars, '0');\n }\n return text;\n }\n\n public static getHeaders(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n options?: TracingHeadersOptions\n ): Record<string, string> {\n utility.requireArgument(traceId, 'traceId', 'string');\n utility.requireArgument(spanId, 'spanId', 'string');\n\n const useB3Headers: boolean = options && options.useB3Headers;\n\n traceId = this._conformTextAsId(\n traceId,\n options && options.traceIdEffectiveLength !== undefined\n ? options.traceIdEffectiveLength\n : useB3Headers\n ? defaultTraceIdLengthB3\n : defaultTraceIdLengthW3\n );\n spanId = this._conformTextAsId(spanId, defaultSpanIdLength);\n\n const parentSpanId =\n (options &&\n options.parentSpanId !== undefined &&\n this._conformTextAsId(options.parentSpanId, defaultSpanIdLength)) ||\n undefined;\n\n const headers: Record<string, string> = {};\n\n if (useB3Headers) {\n // By default, use non-compact\n const isCompact: boolean = options && options.useCompactHeader;\n if (isCompact) {\n headers[headerB3] = this._getB3CompactFormat(\n traceId,\n spanId,\n isSampled,\n parentSpanId\n );\n } else {\n headers[headerTraceId] = traceId;\n headers[headerSpanId] = spanId;\n if (parentSpanId !== undefined) {\n headers[headerParentSpanId] = parentSpanId;\n }\n if (isSampled !== undefined) {\n headers[headerSampled] = isSampled ? '1' : '0';\n }\n }\n } else {\n headers[headerTraceParent] = this._getW3CompactFormat(traceId, spanId, isSampled);\n }\n\n return headers;\n }\n\n private _disableNetworkInstrumentation(): void {\n if (Tracing._isNetworkInstrumentationEnabled) {\n if (Tracing._originalFetch) {\n Tracing._global.fetch = Tracing._originalFetch;\n Tracing._originalFetch = undefined;\n }\n if (Tracing._originalXhr) {\n Tracing._global.XMLHttpRequest = Tracing._originalXhr;\n Tracing._originalXhr = undefined;\n }\n if (Tracing._originalXhrSend) {\n Tracing._global.XMLHttpRequest.prototype.send = Tracing._originalXhrSend;\n Tracing._originalXhrSend = undefined;\n }\n Tracing._isNetworkInstrumentationEnabled = false;\n }\n }\n\n private _enableNetworkInstrumentation(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions\n ): void {\n if (typeof Tracing._global.fetch === 'function') {\n this._overrideFetch(instr, logErrors, activityName, useTracing, options);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (typeof Tracing._global.XMLHttpRequest === 'function') {\n this._overrideXhr(instr, logErrors, activityName, useTracing, options);\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n }\n\n private _overrideFetch(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions\n ): void {\n Tracing._originalFetch = Tracing._global.fetch;\n const o11yFetch: FetchType = async (url, reqOptions, ...restArgs) => {\n let activity: Activity;\n try {\n activity = instr.startActivity(activityName || defaultActivityNameForFetch);\n\n if (useTracing) {\n reqOptions = reqOptions || {};\n const traceHeaders = activity.getTraceHeaders(options);\n reqOptions.headers = Object.assign(reqOptions.headers || {}, traceHeaders);\n }\n return await Tracing._originalFetch.call(\n Tracing._global,\n url,\n reqOptions,\n ...restArgs\n );\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n throw ex;\n } finally {\n if (activity) {\n activity.stop();\n }\n }\n };\n Tracing._global.fetch = o11yFetch;\n }\n\n private _overrideXhr(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions\n ): void {\n Tracing._originalXhr = Tracing._global.XMLHttpRequest;\n Tracing._originalXhrSend = Tracing._originalXhr.prototype.send;\n\n Tracing._originalXhr.prototype.send = function (this: O11yXhr, ...args) {\n let activity: Activity;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr: O11yXhr = this;\n try {\n xhr._o11yActivity = activity = instr.startActivity(\n activityName || defaultActivityNameForXhrSend\n );\n if (useTracing) {\n const headers = activity.getTraceHeaders(options);\n\n Object.entries(headers).forEach((entry) => {\n xhr.setRequestHeader(entry[0], entry[1]);\n });\n }\n Tracing._originalXhrSend.call(this, ...args);\n } catch (ex) {\n if (logErrors) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n if (activity) {\n activity.stop();\n }\n throw ex;\n }\n };\n\n const xhrProxy = new Proxy<XhrType>(Tracing._originalXhr, {\n construct(target: XhrType) {\n const newXhr = new target() as O11yXhr;\n\n // Be the first in the event chain\n newXhr.addEventListener('load', () => {\n const activity = newXhr._o11yActivity;\n if (activity) {\n activity.stop();\n }\n });\n newXhr.addEventListener(\n 'error',\n (__err: ProgressEvent<XMLHttpRequestEventTarget>) => {\n const error = new Error('XHR Network-Level Error');\n const activity = newXhr._o11yActivity;\n if (activity) {\n if (logErrors) {\n activity.error(error);\n }\n activity.stop();\n } else if (logErrors) {\n instr.error(error);\n }\n }\n );\n newXhr.addEventListener('abort', () => {\n const activity = newXhr._o11yActivity;\n if (activity) {\n activity.discard();\n }\n });\n return newXhr;\n }\n });\n\n Tracing._global.XMLHttpRequest = xhrProxy;\n }\n\n networkInstrumentation(options: boolean | NetworkInstrumentationOptions): void {\n utility.requireArgument(options, 'options', ['boolean', 'object']);\n\n if (options) {\n // First disable it if necessary, so we can use the new options if it was already enabled\n this._disableNetworkInstrumentation();\n\n const tracingOptions: NetworkInstrumentationOptions =\n typeof options === 'object' ? options : {};\n\n this._enableNetworkInstrumentation(\n utility.definedValueOrDefault(tracingOptions.instrumentation, this.instr),\n utility.definedValueOrDefault(tracingOptions.logErrors, true),\n tracingOptions.activityName,\n utility.definedValueOrDefault(tracingOptions.useTracing, true),\n tracingOptions.tracingHeadersOptions\n );\n } else {\n // Options is falsy, disable.\n this._disableNetworkInstrumentation();\n }\n }\n}\n","export enum TimerOverride {\n none,\n start,\n stop,\n both\n}\n","import { PublicSafety, SchematizedData, utility } from 'o11y/shared';\n\nimport {\n Activity,\n ActivityDetail,\n ActivityStopOptions,\n Schema,\n TracingHeadersOptions\n} from '../interfaces';\nimport { Tracing } from './Tracing';\nimport { TimerOverride } from './TimerOverride';\nexport const timedout = 'timedout';\nexport const terminated = 'terminated';\nexport const discarded = 'discarded';\n\nconst stopReason = {\n timedout,\n terminated,\n discarded\n};\n\nexport type onActivityStop = (detail: ActivityDetail) => void;\nexport type onActivityError = (error: unknown, detail: ActivityDetail) => void;\n\nexport class ActivityImpl implements Activity {\n protected readonly _id: string;\n private readonly _safety: PublicSafety;\n private readonly _usePerf: boolean;\n protected static _count = 0;\n private readonly _perfId: string;\n private readonly _perfName: string;\n private _startTimestamp: number;\n private _startPerfTime: number;\n private _stopPerfTime: number;\n private _stopReason: string;\n private _timer: NodeJS.Timer;\n private _errorCount = 0;\n private _timerOverridden: TimerOverride = TimerOverride.none;\n\n constructor(\n protected readonly _name: string,\n protected readonly _rootId: string,\n private readonly _onStopped: onActivityStop,\n private readonly _onError: onActivityError,\n timeout?: number,\n id?: string,\n protected readonly _isSampled?: boolean\n ) {\n const { tsNow, perfNow } = utility.time();\n\n ActivityImpl._count += 1;\n this._id = id || utility.generateUniqueId();\n\n this._usePerf =\n typeof performance !== 'undefined' &&\n typeof performance.mark === 'function' &&\n typeof performance.measure === 'function';\n if (this._usePerf) {\n this._perfName = `${this._name}__${ActivityImpl._count}`;\n this._perfId = `${this._name}__${this.id}`;\n try {\n performance.mark(this._perfId);\n } catch {\n this._usePerf = false;\n }\n }\n\n this._startTimestamp = tsNow;\n this._startPerfTime = perfNow;\n\n if (timeout > 0) {\n this._timer = setTimeout(() => {\n this._stopReason = this._stopReason || stopReason.timedout;\n this.stop();\n }, timeout);\n }\n this._safety = new PublicSafety();\n }\n\n get id(): string {\n return this._id;\n }\n\n getId(): string {\n return this.id;\n }\n\n getRootId(): string {\n return this._rootId;\n }\n\n get stopReason(): string {\n return this._stopReason;\n }\n\n error(error: unknown, userSchemaOrText?: Schema | string, userData?: SchematizedData): void {\n this._safety.tryCatch(() => {\n this._errorCount += 1;\n if (typeof error === 'string') {\n error = new Error(error);\n }\n this._onError(error, this._getDetail(userSchemaOrText, userData));\n });\n }\n\n stop(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n\n if (options) {\n const perfStart: number = options.perfStartOverride;\n const isStartTimeDefined = utility.requireArgumentIfDefined(\n perfStart,\n 'options.perfStartOverride',\n 'number'\n );\n\n const perfStop: number = options.perfStopOverride;\n const isStopTimeDefined = utility.requireArgumentIfDefined(\n perfStop,\n 'options.perfStopOverride',\n 'number'\n );\n\n if (isStartTimeDefined && perfStart < 0) {\n throw new Error('perfStartOverride, if defined, must be >= 0');\n }\n\n if (\n isStopTimeDefined &&\n (perfStop < 0 ||\n perfStop < (isStartTimeDefined ? perfStart : this._startPerfTime))\n ) {\n throw new Error('perfStopOverride, if defined, must be >= 0 and >= startTime');\n }\n }\n\n this._stopInternal(userSchemaOrText, userData, options);\n });\n }\n\n private _overrideTimer(perfStartTime?: number, perfStopTime?: number): void {\n if (perfStartTime !== undefined) {\n this._startTimestamp = Math.round(\n this._startTimestamp - (this._startPerfTime - perfStartTime)\n );\n this._startPerfTime = perfStartTime;\n this._setTimerOverride(TimerOverride.start);\n }\n\n if (perfStopTime !== undefined) {\n this._stopPerfTime = perfStopTime;\n this._setTimerOverride(TimerOverride.stop);\n }\n }\n\n private _setTimerOverride(value: TimerOverride): void {\n if (\n this._timerOverridden === TimerOverride.both ||\n this._timerOverridden === value ||\n value === TimerOverride.none\n ) {\n return;\n }\n this._timerOverridden =\n this._timerOverridden === TimerOverride.none ? value : TimerOverride.both;\n }\n\n private _stopInternal(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n // First things first.\n const stopPerfTime = utility.perfNow();\n if (this._usePerf) {\n try {\n // Use a more user-friendly name for measure.\n if (this._stopReason !== stopReason.discarded) {\n performance.measure(this._perfName, this._perfId);\n }\n performance.clearMarks(this._perfId);\n performance.clearMeasures(this._perfName);\n } catch {}\n }\n\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n if (this.isStopped) {\n // Already stopped\n return;\n }\n\n if (options) {\n this._overrideTimer(options.perfStartOverride, options.perfStopOverride);\n }\n\n // We may set this already in override so check that here\n this._stopPerfTime =\n this._timerOverridden === TimerOverride.none ||\n this._timerOverridden === TimerOverride.start\n ? stopPerfTime\n : this._stopPerfTime;\n\n const activityDetail: ActivityDetail = this._getDetail(userSchemaOrText, userData);\n this._onStopped(activityDetail);\n }\n\n get isStopped(): boolean {\n return this._stopPerfTime !== undefined;\n }\n\n discard(): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.discarded;\n this.stop();\n });\n }\n\n terminate(): void {\n this._safety.tryCatch(() => {\n this._stopReason = this._stopReason || stopReason.terminated;\n this.stop();\n });\n }\n\n getIsSampled(): boolean {\n return this._isSampled || false;\n }\n\n protected _getDetail(\n userSchemaOrText: Schema | string,\n userData: SchematizedData\n ): ActivityDetail {\n return {\n id: this._id,\n rootId: this._rootId,\n name: this._name,\n userSchemaOrText: userSchemaOrText,\n userData,\n stopReason: this._stopReason,\n startTimestamp: this._startTimestamp,\n startPerfTime: this._startPerfTime,\n stopPerfTime: this._stopPerfTime,\n errorCount: this._errorCount,\n isSampled: this.getIsSampled(),\n timerOverridden: this._timerOverridden\n };\n }\n\n public getTraceHeaders(options: TracingHeadersOptions): Record<string, string> {\n // Normally, the root activity ID is the traceId.\n // If the activity is root, it's ID is (also) the traceId.\n // If the activity has no root, it's ID is (also) the traceId. i.e. It creates its own trace.\n const spanId = this.id;\n const traceId = this._rootId || spanId;\n\n return Tracing.getHeaders(traceId, spanId, this.getIsSampled(), options);\n }\n\n getStartTimestamp(): number {\n return this._startTimestamp;\n }\n\n getStartPerfTime(): number {\n return this._startPerfTime;\n }\n\n getStopPerfTime(): number {\n return this._stopPerfTime;\n }\n}\n","export const activity={namespace:\"sf.instrumentation\",name:\"Activity\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"Activity\":{\"reserved\":[[5,5],[7,7]],\"fields\":{\"duration\":{\"options\":{},\"id\":3,\"type\":\"double\"},\"stopReason\":{\"options\":{},\"id\":6,\"type\":\"string\"},\"isRoot\":{\"options\":{},\"id\":8,\"type\":\"bool\"},\"timerOverridden\":{\"options\":{},\"id\":12,\"type\":\"uint32\"},\"name\":{\"options\":{\"(meta.max_length)\":25},\"id\":2,\"type\":\"string\"},\"isSampled\":{\"options\":{},\"id\":11,\"type\":\"bool\"},\n\"preRootId\":{\"options\":{},\"id\":9,\"type\":\"string\"},\"id\":{\"options\":{},\"id\":1,\"type\":\"string\"},\"userPayload\":{\"options\":{},\"id\":4,\"type\":\"Payload\"},\"errorCount\":{\"options\":{},\"id\":10,\"type\":\"uint32\"},\"parentId\":{\"options\":{},\"id\":13,\"type\":\"string\"}}},\"Payload\":{\"fields\":{\"payload\":{\"options\":{},\"id\":2,\"type\":\"bytes\"},\"schemaName\":{\"options\":{},\"id\":1,\"type\":\"string\"}}}}}}}}}};","export const error={namespace:\"sf.instrumentation\",name:\"Error\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"Error\":{\"reserved\":[[5,5],[7,7]],\"fields\":{\"activityId\":{\"options\":{},\"id\":6,\"type\":\"string\"},\"stack\":{\"options\":{},\"id\":3,\"type\":\"string\"},\"name\":{\"options\":{},\"id\":1,\"type\":\"string\"},\"message\":{\"options\":{\"(meta.max_length)\":200},\"id\":2,\"type\":\"string\"},\"userPayload\":{\"options\":{},\"id\":4,\"type\":\"Payload\"}}},\"Payload\":{\"fields\":{\"payload\":{\"options\":{},\"id\":2,\"type\":\"bytes\"},\n\"schemaName\":{\"options\":{},\"id\":1,\"type\":\"string\"}}}}}}}}}};","export const idle_detector_report={namespace:\"sf.instrumentation\",name:\"IdleDetectorReport\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"IdleDetectorReport\":{\"options\":{\"(meta.msg.desc)\":\"This is used by the Idle Detector in o11y\"},\"fields\":{\"listenerCount\":{\"options\":{},\"id\":3,\"type\":\"uint32\"},\"busyTasks\":{\"options\":{},\"rule\":\"repeated\",\"id\":5,\"type\":\"string\"},\"busyDurations\":{\"options\":{},\"rule\":\"repeated\",\"id\":6,\"type\":\"double\"},\"pollableCount\":{\"options\":{},\"id\":4,\"type\":\"uint32\"},\n\"pollCounts\":{\"options\":{},\"rule\":\"repeated\",\"id\":8,\"type\":\"double\"},\"logThreshold\":{\"options\":{},\"id\":2,\"type\":\"double\"},\"maxDuration\":{\"options\":{},\"id\":1,\"type\":\"double\"},\"pollables\":{\"options\":{},\"rule\":\"repeated\",\"id\":7,\"type\":\"string\"}}}}}}}}}};","export const instrumented_event={namespace:\"sf.instrumentation\",name:\"InstrumentedEvent\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"MouseEvent\":{\"fields\":{\"cancelable\":{\"options\":{},\"id\":5,\"type\":\"bool\"},\"ctrlKey\":{\"options\":{},\"id\":9,\"type\":\"bool\"},\"type\":{\"options\":{},\"id\":25,\"type\":\"string\"},\"button\":{\"options\":{},\"id\":3,\"type\":\"uint32\"},\"offsetX\":{\"options\":{},\"id\":17,\"type\":\"uint32\"},\"eventPhase\":{\"options\":{},\"id\":12,\"type\":\"uint32\"},\"shiftKey\":{\"options\":{},\"id\":23,\n\"type\":\"bool\"},\"offsetY\":{\"options\":{},\"id\":18,\"type\":\"uint32\"},\"composed\":{\"options\":{},\"id\":8,\"type\":\"bool\"},\"altKey\":{\"options\":{},\"id\":1,\"type\":\"bool\"},\"isTrusted\":{\"options\":{},\"id\":13,\"type\":\"bool\"},\"buttons\":{\"options\":{},\"id\":4,\"type\":\"uint32\"},\"movementY\":{\"options\":{},\"id\":16,\"type\":\"uint32\"},\"clientY\":{\"options\":{},\"id\":7,\"type\":\"uint32\"},\"clientX\":{\"options\":{},\"id\":6,\"type\":\"uint32\"},\"movementX\":{\"options\":{},\"id\":15,\"type\":\"uint32\"},\"defaultPrevented\":{\"options\":{},\"id\":10,\"type\":\"bool\"},\n\"metaKey\":{\"options\":{},\"id\":14,\"type\":\"bool\"},\"timeStamp\":{\"options\":{},\"id\":24,\"type\":\"double\"},\"bubbles\":{\"options\":{},\"id\":2,\"type\":\"bool\"},\"detail\":{\"options\":{},\"id\":11,\"type\":\"int64\"},\"pageY\":{\"options\":{},\"id\":20,\"type\":\"uint32\"},\"pageX\":{\"options\":{},\"id\":19,\"type\":\"uint32\"},\"screenX\":{\"options\":{},\"id\":21,\"type\":\"uint32\"},\"screenY\":{\"options\":{},\"id\":22,\"type\":\"uint32\"}}},\"InstrumentedEvent\":{\"oneofs\":{\"event\":{\"oneof\":[\"mouseEvent\"]}},\"reserved\":[[4,4],\"xpath\",[6,6],[8,8]],\"fields\":{\"mouseEvent\":{\"options\":{},\n\"id\":7,\"type\":\"MouseEvent\"},\"auto\":{\"options\":{},\"id\":3,\"type\":\"bool\"},\"parentComponent\":{\"options\":{},\"id\":2,\"type\":\"string\"},\"ownerComponent\":{\"options\":{},\"id\":1,\"type\":\"string\"},\"userPayload\":{\"options\":{},\"id\":5,\"type\":\"Payload\"},\"simplePath\":{\"options\":{},\"id\":9,\"type\":\"string\"}}},\"Payload\":{\"fields\":{\"payload\":{\"options\":{},\"id\":2,\"type\":\"bytes\"},\"schemaName\":{\"options\":{},\"id\":1,\"type\":\"string\"}}}}}}}}}};","export const simple={namespace:\"sf.instrumentation\",name:\"Simple\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"Simple\":{\"options\":{\"(meta.msg.desc)\":\"This message is used internally to allow convenient logging of simple text via the API without requiring a schema.\"},\"fields\":{\"text\":{\"options\":{\"(meta.max_length)\":25},\"id\":1,\"type\":\"string\"}}}}}}}}}};","import { Activity, TracingHeadersOptions } from '../interfaces';\n\nconst id: string = new Array(16).fill(0).join('');\nclass ActivityNoOp implements Activity {\n getId(): string {\n return id;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n}\n\nexport const activityNoOp = Object.freeze(new ActivityNoOp());\n","import { SchematizedPayload } from '../interfaces';\nimport { InstrumentedEventData, MouseEventData } from '../interfaces-private';\nimport { DomEventData } from '../types/TypeDefinitions-Private';\nimport { schemaUtil, utility } from 'o11y/shared';\n\nexport class DomEventHelpers {\n getInstrumentedEventData(\n eventData: DomEventData,\n handledBy: HTMLElement,\n userPayload: SchematizedPayload\n ): InstrumentedEventData {\n const instrumentedEvent: InstrumentedEventData = {\n ownerComponent: handledBy.tagName,\n parentComponent:\n (handledBy.parentElement && handledBy.parentElement.tagName) || undefined,\n event: eventData,\n simplePath: utility.getXpath(handledBy)\n };\n\n if (userPayload) {\n instrumentedEvent.userPayload = schemaUtil.makePayload(\n userPayload.schema,\n userPayload.payload,\n true\n );\n }\n\n return instrumentedEvent;\n }\n\n getMouseEventData(e: MouseEvent): MouseEventData {\n return {\n altKey: e.altKey,\n bubbles: e.bubbles,\n button: e.button,\n buttons: e.buttons,\n cancelable: e.cancelable,\n clientX: e.clientX,\n clientY: e.clientY,\n composed: e.composed,\n defaultPrevented: e.defaultPrevented,\n detail: e.detail,\n eventPhase: e.eventPhase,\n isTrusted: e.isTrusted,\n timeStamp: e.timeStamp,\n type: e.type,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n movementX: e.movementX,\n movementY: e.movementY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n pageX: e.pageX,\n pageY: e.pageY,\n screenX: e.screenX,\n screenY: e.screenY,\n shiftKey: e.shiftKey\n };\n }\n}\n\nconst singleton = new DomEventHelpers();\nexport const domEventHelpers = singleton;\n","import { IType, Schema, SchemaTokens } from '../interfaces';\nimport {\n PbjsNestedObjectDescriptor,\n SchematizedData,\n SchematizedDataValue,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\n// These are hard-coded limits at the app-level. They may be overridden with a corresponding\n// option at the field level in the schema metadata.\nexport const maxStringLengthAppLimit = 10000; // For strings\nexport const maxItemCountAppLimit = 10000; // For arrays\n\nconst minUnsigned = 0;\nconst maxFourBytes = 2147483647;\nconst minFourBytes = -2147483648;\nconst maxFourBytesUnsigned = 4294967295;\nconst maxEightBytes = 9223372036854776000;\nconst minEightBytes = -9223372036854776001;\nconst maxEightBytesUnsigned = 18446744073709552000;\n\nexport const enum ErrorCode {\n notAnError = 0, // To ensure truthy-checks work for proper error codes.\n arrayExpected,\n incorrectType,\n infiniteNumber,\n numberOutOfRange,\n malformedBytesArray,\n stringLengthOverflowAppLimit,\n itemCountOverflowAppLimit,\n stringLengthOverflow,\n stringLengthUnderflow,\n itemCountOverflow,\n itemCountUnderflow\n}\n\nexport class ValidationEntry {\n constructor(\n public errorCode: ErrorCode,\n public fields: string[],\n public expected?: string,\n public received?: string\n ) {}\n\n asMessage(schemaId: string): string {\n const key: string =\n this.fields[0] +\n this.fields\n .slice(1)\n .reduce(\n (prev, current) =>\n Number(current) >= 0 ? `${prev}[${current}]` : `${prev}.${current}`,\n ''\n );\n let msg: string;\n\n switch (this.errorCode) {\n case ErrorCode.arrayExpected:\n msg = 'Repeated field must be an array';\n break;\n case ErrorCode.incorrectType:\n msg = `Expected type ${this.expected} but received type ${this.received}`;\n break;\n case ErrorCode.infiniteNumber:\n msg = 'Value must be finite';\n break;\n case ErrorCode.numberOutOfRange:\n msg = 'Value is out of range for its type';\n break;\n case ErrorCode.malformedBytesArray:\n msg = 'Bytes array is malformed';\n break;\n case ErrorCode.stringLengthOverflowAppLimit:\n msg = 'Exceeded app limit for maximum string length';\n break;\n case ErrorCode.itemCountOverflowAppLimit:\n msg = 'Exceeded app limit for item count';\n break;\n // TODO: The following should be used when we start validating against schema metadata\n // case ErrorCode.stringLengthOverflow:\n // msg = 'Exceeded maximum string length';\n // break;\n // case ErrorCode.stringLengthUnderflow:\n // msg = 'Failed minimum string length';\n // break;\n // case ErrorCode.itemCountOverflow:\n // msg = 'Exceeded maximum item count';\n // break;\n // case ErrorCode.itemCountUnderflow:\n // msg = 'Failed minimum item count';\n // break;\n default:\n msg = `Unknown error code: ${this.errorCode}`;\n break;\n }\n\n return `Schema ${schemaId} on field \"${key}\": ${msg}`;\n }\n}\n\nclass LogValidator {\n public validate(schema: Schema, data: SchematizedData, noThrow = false): ValidationEntry[] {\n const schemaTokens: SchemaTokens = schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n const schemaId: string = schemaUtil.getSchemaId(schema);\n\n const errorInfos = new Array<ValidationEntry>();\n\n const nestedSchema: PbjsNestedObjectDescriptor = schemaUtil.getTypes(schema);\n this.validateFields(\n errorInfos,\n [],\n data,\n nestedSchema[schemaTokens.message] as IType,\n nestedSchema,\n schemaId\n );\n\n if (errorInfos.length && !noThrow) {\n throw new Error(errorInfos[0].asMessage(schemaId));\n }\n\n return errorInfos;\n }\n\n private validateFields(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n data: SchematizedData,\n message: IType,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string\n ): void {\n const oneofs = message.oneofs || {};\n const fields = message.fields || {};\n for (const key in data) {\n const value = data[key];\n // if it's null or undefined we don't need to match\n if (!this.isNullOrUndefinedOrEmpty(value)) {\n const mft: (fieldType: string, rule?: string) => void = (fieldType, rule?) =>\n this.matchFieldTypes(\n errorInfos,\n [...fieldNames, key],\n value,\n fieldType,\n descriptor,\n schemaId,\n key,\n rule\n );\n\n if (oneofs[key]) {\n mft(fields[oneofs[key].oneof[0]].type);\n } else if (fields[key]) {\n mft(fields[key].type, fields[key].rule);\n }\n // if the field is not present in the schema then we ignore it and will drop it later\n }\n }\n }\n\n private isNullOrUndefinedOrEmpty(val: SchematizedDataValue): boolean {\n return val === undefined || val === null || val === '';\n }\n\n private matchFieldTypes(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n fieldDataValue: SchematizedDataValue,\n protobufType: string,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n key: string,\n rule?: string\n ): void {\n let errorCode: ErrorCode;\n\n if (rule === 'repeated') {\n if (Array.isArray(fieldDataValue)) {\n if (fieldDataValue.length > maxItemCountAppLimit) {\n errorCode = ErrorCode.itemCountOverflowAppLimit;\n }\n\n fieldDataValue.forEach((value, index: number) => {\n // if it's repeated they should all be the same type so we can just run it as is\n this.matchFieldTypes(\n errorInfos,\n [...fieldNames, index.toString()],\n value,\n protobufType,\n descriptor,\n schemaId,\n key\n );\n });\n } else {\n errorCode = ErrorCode.arrayExpected;\n }\n\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n\n // this means that every value in the array was validated and we can finish\n return;\n }\n\n let javaScriptType: string;\n switch (protobufType) {\n case 'string':\n javaScriptType = 'string';\n if (fieldDataValue.length > maxStringLengthAppLimit) {\n errorCode = ErrorCode.stringLengthOverflowAppLimit;\n }\n break;\n case 'bytes':\n javaScriptType = 'object';\n if (!(fieldDataValue instanceof Uint8Array)) {\n errorCode = ErrorCode.malformedBytesArray;\n }\n break;\n case 'bool':\n javaScriptType = 'boolean';\n break;\n case 'uint32':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(\n fieldDataValue,\n minUnsigned,\n maxFourBytesUnsigned\n );\n break;\n case 'int32':\n case 'sint32':\n case 'fixed32':\n case 'sfixed32':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(fieldDataValue, minFourBytes, maxFourBytes);\n break;\n case 'uint64':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(\n fieldDataValue,\n minUnsigned,\n maxEightBytesUnsigned\n );\n break;\n case 'fixed64':\n case 'sfixed64':\n case 'int64':\n case 'sint64':\n javaScriptType = 'number';\n errorCode = this.checkNumberRange(fieldDataValue, minEightBytes, maxEightBytes);\n break;\n case 'double':\n case 'float':\n javaScriptType = 'number';\n if (!Number.isFinite(fieldDataValue)) {\n errorCode = ErrorCode.infiniteNumber;\n }\n break;\n default:\n if (new Set(Object.keys(descriptor)).has(protobufType)) {\n //now we check this schema\n this.validateFields(\n errorInfos,\n fieldNames,\n fieldDataValue,\n descriptor[protobufType] as IType,\n descriptor,\n schemaId\n );\n javaScriptType = 'object';\n }\n break;\n }\n\n if (typeof fieldDataValue !== javaScriptType) {\n errorInfos.push(\n new ValidationEntry(\n ErrorCode.incorrectType,\n fieldNames,\n protobufType,\n typeof fieldDataValue\n )\n );\n }\n\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n }\n\n private checkNumberRange(value: number, min: number, max: number): ErrorCode {\n return value > max || value < min ? ErrorCode.numberOutOfRange : undefined;\n }\n}\n\nexport const logValidator = new LogValidator();\n","import { BucketHistogram } from '../interfaces/BucketHistogram';\nimport { MetricsTags, utility } from 'o11y/shared';\nimport { BucketMetric } from 'src/interfaces';\n\nexport class BucketHistogramImpl implements BucketMetric<number[]>, BucketHistogram {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n private readonly _buckets: number[]\n ) {\n this._createdOn = utility.time().tsNow;\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n getBuckets(): number[] {\n return this.buckets;\n }\n\n get buckets(): number[] {\n return this._buckets.slice(0, this._buckets.length);\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('BucketHistogram can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { UpCounter } from '../interfaces/UpCounter';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class UpCounterImpl implements Metric<number>, UpCounter {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _value = 0;\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags\n ) {\n this._createdOn = utility.time().tsNow;\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number {\n return this._value;\n }\n\n increment(value = 1): void {\n if (typeof value === 'number' && value > 0) {\n this._value += Math.round(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('UpCounter can only increment positive numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._value = 0;\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): Readonly<MetricsTags> {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { ValueRecorder } from '../interfaces/ValueRecorder';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class ValueRecorderImpl implements Metric<number[]>, ValueRecorder {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags\n ) {\n this._createdOn = utility.time().tsNow;\n // TODO: Add sampling/throttling to put a cap on the size of the array\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('ValueRecorder can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","export class SizeLimitedMap<K, V> {\n private readonly _map = new Map<K, V>();\n\n private _maxSize: number;\n constructor(maxSize: number) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get(key: K): V {\n return this._map.get(key);\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): boolean {\n if (this.has(key) || this._map.size < this.maxSize) {\n this._map.set(key, value);\n return true;\n }\n return false;\n }\n\n getElements(): V[] {\n return Array.from(this._map.values());\n }\n\n clear(): void {\n this._map.clear();\n }\n}\n","import { MetricsReporter, UpCounter, ValueRecorder } from '../interfaces';\n\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\nimport { SizeLimitedMap } from './SizeLimitedMap';\nimport { MetricsTags } from 'o11y/shared';\n\nconst maxCounters = 1000;\nconst maxValueRecorders = 500;\nconst maxBucketHistograms = 500;\n\nenum MetricType {\n Counter,\n Percentile,\n BucketHistogram\n}\n\nexport class MetricsImpl implements MetricsReporter {\n private readonly _upCounters = new SizeLimitedMap<string, UpCounterImpl>(maxCounters);\n private readonly _valueRecorders = new SizeLimitedMap<string, ValueRecorderImpl>(\n maxValueRecorders\n );\n private readonly _bucketHistograms = new SizeLimitedMap<string, BucketHistogramImpl>(\n maxBucketHistograms\n );\n\n constructor(\n private readonly _ownerName: string,\n private readonly _getOwnerAppName: () => string\n ) {}\n\n incrementCounter(\n operation: string,\n increment: number,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._upCounter(operation, tags).increment(increment);\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._tagError(tags, hasError);\n this._valueRecorder(operation, tags).record(value);\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._bucketHistogram(operation, tags, buckets).record(value);\n }\n\n private _bucketHistogram(name: string, tags: MetricsTags, buckets: number[]): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(\n name,\n tags,\n MetricType.BucketHistogram\n );\n let instrument = this._bucketHistograms.get(key);\n if (!instrument) {\n instrument = new BucketHistogramImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags,\n buckets\n );\n if (!this._bucketHistograms.set(key, instrument)) {\n throw new Error(`Max size of ${maxBucketHistograms} exceeded for BucketHistograms`);\n }\n }\n return instrument;\n }\n\n private _upCounter(name: string, tags: MetricsTags): UpCounter {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Counter);\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._upCounters.set(key, instrument)) {\n throw new Error(`Max size of ${maxCounters} exceeded for UpCounters`);\n }\n }\n return instrument;\n }\n\n private _valueRecorder(name: string, tags: MetricsTags): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Percentile);\n let instrument = this._valueRecorders.get(key);\n if (!instrument) {\n instrument = new ValueRecorderImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._valueRecorders.set(key, instrument)) {\n throw new Error(`Max size of ${maxValueRecorders} exceeded for ValueRecorders`);\n }\n }\n return instrument;\n }\n\n getUpCounters(): UpCounterImpl[] {\n return this._upCounters.getElements();\n }\n\n getValueRecorders(): ValueRecorderImpl[] {\n return this._valueRecorders.getElements();\n }\n\n getBucketHistograms(): BucketHistogramImpl[] {\n return this._bucketHistograms.getElements();\n }\n\n private _tagError(tags: MetricsTags, hasError: boolean): void {\n tags.status = hasError === true ? 'error' : 'success';\n }\n\n private _getKeyAndSortedTags(\n operation: string,\n tags: MetricsTags,\n metricType: MetricType\n ): { key: string; sortedTags: MetricsTags } {\n // This method should be called after any manipulation of tags\n const sortedTags = Object.keys(tags)\n .sort()\n .reduce((prev: MetricsTags, curr: string) => {\n prev[curr] = tags[curr];\n return prev;\n }, {});\n const key = `${MetricType[metricType]}:${operation}${JSON.stringify(sortedTags)}`;\n return {\n key,\n sortedTags\n };\n }\n}\n","export class MockEvent {\n constructor(\n public readonly type: string,\n public readonly composed: boolean,\n private readonly _composedPaths: unknown[]\n ) {}\n composedPath(): unknown[] {\n return this._composedPaths;\n }\n}\n","import {\n activitySchema,\n errorSchema,\n instrumentedEventSchema,\n simpleSchema\n} from 'o11y_schema/sf_instrumentation';\n\nimport {\n LightningElement,\n LogPromptListener,\n MetricsTags,\n PublicSafety,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\nimport {\n Activity,\n ActivityApiOptions,\n ActivityDetail,\n ApiOptions,\n BucketMetric,\n DomEventApiOptions,\n Instrumentation,\n InstrumentationContext,\n Metric,\n MetricsReporter,\n PayloadProvider,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { ActivityData, ErrorData, InstrumentedEventData } from '../interfaces-private';\n\nimport { ActivityImpl, discarded, onActivityError, onActivityStop } from './ActivityImpl';\nimport { activityNoOp } from './ActivityNoOp';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { domEventHelpers } from './DomEventHelpers';\nimport {\n ErrorCode,\n ValidationEntry,\n logValidator,\n maxItemCountAppLimit,\n maxStringLengthAppLimit\n} from './LogValidator';\nimport { MetricsImpl } from './MetricsImpl';\nimport { MockEvent } from './MockEvent';\nimport { NextgenImpl } from './NextgenImpl';\n\n// @W-10241440, disable timeouts\nconst maxActivityDurationMsecs: number = undefined;\nconst reservedMetricCharacters = ['`'];\nconst reservedMetricNames = {\n internalError: 'o11y-error'\n};\nconst denyListMetricNames = Object.freeze(Array.from(Object.values(reservedMetricNames)));\n\nexport class InstrumentationImpl implements Instrumentation, MetricsReporter {\n protected static readonly defaultAppName = 'APP_NOT_REGISTERED';\n private readonly _metrics: MetricsImpl;\n private readonly _onActivityStoppedCallback: onActivityStop =\n this._handleActivityStop.bind(this);\n protected readonly _onActivityErrorCallback: onActivityError =\n this._handleActivityError.bind(this);\n protected readonly _safety: PublicSafety;\n private readonly _simpleTextMaxLength: number;\n\n constructor(private readonly _nextGen: NextgenImpl, private readonly _name: string) {\n for (const reservedChar of reservedMetricCharacters) {\n if (this._name.indexOf(reservedChar) >= 0) {\n throw new Error(`Name cannot include the reserved character \"${reservedChar}\"`);\n }\n }\n\n this._safety = new PublicSafety({\n increment: (increment) => this._incrementError(increment)\n });\n\n this._metrics = this._initMetrics();\n\n const simpleTextOptions = schemaUtil.getOptions(simpleSchema, 'Simple', 'text');\n this._simpleTextMaxLength = simpleTextOptions\n ? simpleTextOptions['(meta.max_length)']\n : maxStringLengthAppLimit;\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(\n this.name,\n () => this._nextGen.appName || InstrumentationImpl.defaultAppName\n );\n }\n\n private _incrementError(increment = 1): void {\n this._metrics.incrementCounter(reservedMetricNames.internalError, increment, false);\n }\n\n get name(): string {\n return this._name;\n }\n\n /**\n * This function is to allow for convenience calls to our API, where a string can\n * be provided instead of an actual Schema. In that case, we wrap the text in\n * a built-in simple schema.\n * @param userSchemaOrText Schema or string.\n * @param userData\n * @param onlyIfBoth If true, then both the schema and the data must be specified.\n * @returns\n */\n protected _wrapUserPayload(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n onlyIfBoth = false\n ): SchematizedPayload {\n let userSchema: Schema;\n if (typeof userSchemaOrText === 'string') {\n userSchema = simpleSchema;\n if (userSchemaOrText) {\n userData = {\n text: userSchemaOrText.substring(0, this._simpleTextMaxLength)\n };\n } else {\n userData = undefined;\n }\n } else {\n userSchema = userSchemaOrText;\n }\n\n return schemaUtil.makePayload(userSchema, userData, onlyIfBoth);\n }\n\n private getEffectiveRootId(options?: ApiOptions): string {\n return (\n options?.instrumentationContext?.rootId ??\n this._nextGen.getDefaultInstrumentationContext().rootId\n );\n }\n\n /**\n *\n * @param userSchema The schema of the second argument. Also used as the basis for auto-generated\n * counters for log calls using the same schema.\n * @param userData Optional data that complies with the provided schema\n */\n log(userSchemaOrText: Schema | string, userData?: SchematizedData, options?: ApiOptions): void {\n this._safety.tryCatch(() => {\n const timestamp = utility.time().tsNow;\n utility.requireArgument(userSchemaOrText, 'userSchemaOrText', ['object', 'string']);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData);\n\n if (userPayload?.payload) {\n this._logInternal(\n this.name,\n userPayload.schema,\n userPayload.payload,\n timestamp,\n this.getEffectiveRootId(options)\n );\n }\n });\n }\n\n protected _logInternal(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId?: string\n ): number {\n this._checkInputs(schema, data);\n const appPayload: SchematizedPayload = this._getPayloadFromProvider(\n this._nextGen.appPayloadProvider\n );\n const pagePayload: SchematizedPayload = this._getPayloadFromProvider(\n this._nextGen.pagePayloadProvider\n );\n\n return this._nextGen.addLog(\n loggerName,\n schema,\n data,\n timestamp,\n rootId,\n pagePayload,\n appPayload\n );\n }\n\n error(\n error: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ApiOptions\n ): void {\n return this._safety.tryCatch(() => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const rootId: string = this.getEffectiveRootId(options);\n this._errorInternal(error, userSchemaOrText, userData, undefined, rootId);\n });\n }\n\n protected _errorInternal(\n err: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n activityId?: string,\n rootActivityId?: string\n ): number {\n const loggedTimestamp = utility.time().tsNow;\n\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n let msg: string;\n if (err === undefined || err === null || typeof err.toString !== 'function') {\n msg = 'UNKNOWN';\n } else {\n msg = err.toString();\n }\n error = new Error(msg);\n }\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData, true);\n\n const errorData: ErrorData = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n userPayload,\n activityId\n };\n\n return this._logInternal(\n this.name,\n errorSchema,\n errorData,\n loggedTimestamp,\n rootActivityId\n );\n }\n\n startActivity(name: string, options?: ApiOptions): Activity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n let context: InstrumentationContext;\n\n const rootId: string = options?.instrumentationContext?.rootId;\n if (rootId) {\n context = {\n rootId,\n isRootActivitySampled: options.instrumentationContext.isRootActivitySampled\n };\n } else {\n // By definition, an activity is sampled if root activity is sampled\n context = this._nextGen.getDefaultInstrumentationContext();\n }\n const activity: Activity = new ActivityImpl(\n name,\n context.rootId,\n this._onActivityStoppedCallback,\n this._onActivityErrorCallback,\n maxActivityDurationMsecs,\n undefined,\n context.isRootActivitySampled\n );\n return activity;\n }, activityNoOp);\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const userPayload = this._wrapUserPayload(detail.userSchemaOrText, detail.userData, true);\n\n return {\n id: detail.id,\n name: detail.name,\n duration: detail.stopPerfTime - detail.startPerfTime,\n stopReason: detail.stopReason,\n userPayload,\n errorCount: detail.errorCount,\n isSampled: detail.isSampled,\n timerOverridden: detail.timerOverridden\n };\n }\n\n private _handleActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp, detail.rootId);\n }\n\n protected _logActivity(\n activityData: ActivityData,\n startTimestamp: number,\n rootId?: string\n ): void {\n this._logInternal(this.name, activitySchema, activityData, startTimestamp, rootId);\n }\n\n private _handleActivityError(error: unknown, detail: ActivityDetail): void {\n this._errorInternal(\n error,\n detail.userSchemaOrText,\n detail.userData,\n detail.id,\n detail.rootId\n );\n }\n\n private _getPayloadFromProvider(provider: PayloadProvider): SchematizedPayload {\n const payload: SchematizedPayload = provider?.getPayload() || undefined;\n if (payload) {\n this._checkInputs(payload.schema, payload.payload);\n }\n return payload;\n }\n\n domEvent(\n event: Event,\n handledBy: HTMLElement | LightningElement,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: DomEventApiOptions\n ): void {\n this._safety.tryCatch(() => {\n const tsNow = utility.time().tsNow;\n\n utility.requireArgument(event, 'event', [Event, MockEvent]);\n // TODO: Using 'object' instead of 'LightningElement' for now (no imports)\n utility.requireArgument(handledBy, 'handledBy', [HTMLElement, 'object']);\n\n let htmlElement;\n if (handledBy instanceof HTMLElement) {\n htmlElement = handledBy;\n } else {\n handledBy = handledBy as LightningElement;\n // Convenience for LightningElement developers who pass \"this\" in handledBy.\n // Get the underlying HTML element\n if (handledBy.template && handledBy.template.host instanceof HTMLElement) {\n htmlElement = handledBy.template.host;\n } else {\n utility.requireArgument(undefined, 'handledBy');\n }\n }\n\n const userPayload: SchematizedPayload = this._wrapUserPayload(\n userSchemaOrText,\n userData,\n true\n );\n\n const rootId: string = this.getEffectiveRootId(options);\n\n switch (event.type) {\n case 'click': {\n const mouseEvent = event as MouseEvent;\n\n // If the user has called domEvent API on this event explicitly,\n // then we don't need to log it by default.\n const acd: AutomaticClickTracker = this._nextGen.getClickTracker();\n if (acd) {\n acd.markEventHandled(mouseEvent);\n }\n\n const mouseEventData = domEventHelpers.getMouseEventData(mouseEvent);\n\n const instrumentedEvent: InstrumentedEventData =\n domEventHelpers.getInstrumentedEventData(\n mouseEventData,\n htmlElement,\n userPayload\n );\n instrumentedEvent.auto = options && options._auto;\n\n this._logInternal(\n this.name,\n instrumentedEventSchema,\n instrumentedEvent,\n tsNow,\n rootId\n );\n break;\n }\n default:\n throw new Error(utility.notImplemented);\n }\n });\n }\n\n incrementCounter(\n operation: string,\n increment = 1,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(increment, 'increment', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n this._metrics.incrementCounter(operation, increment, hasError, tags);\n });\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.trackValue(operation, value, hasError, tags);\n });\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[] = [],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(() => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(operation, 'operation', reservedMetricCharacters);\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(buckets, 'buckets', Array);\n Object.entries(buckets).forEach((entry) => {\n utility.requireArgument(entry[1], `Bucket value for '${entry[0]}'`, 'number');\n });\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n Object.entries(tags).forEach((entry) => {\n utility.requireArgument(entry[1], `Tag value for '${entry[0]}'`, [\n 'string',\n 'number',\n 'boolean'\n ]);\n });\n\n this._metrics.bucketValue(operation, value, buckets, hasError, tags);\n });\n }\n\n private _checkInputs(schema: Schema, data: SchematizedData): void {\n schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n let vEntries: ValidationEntry[];\n let savedUserPayload: SchematizedPayload;\n if (data.userPayload !== undefined && schemaUtil.isInternal(schema)) {\n // For internal schemas where we have nested messages, we need to temporarily\n // remove userPayload, since it's not yet encoded. (If left in place, it would fail\n // validation since it's not UInt8Array). We validate it separately here.\n savedUserPayload = data.userPayload;\n vEntries = logValidator.validate(\n savedUserPayload.schema,\n savedUserPayload.payload,\n true\n );\n this._processValidationResults(\n schemaUtil.getSchemaId(savedUserPayload.schema),\n savedUserPayload.payload,\n vEntries\n );\n data.userPayload = undefined;\n }\n\n vEntries = logValidator.validate(schema, data, true);\n this._processValidationResults(schemaUtil.getSchemaId(schema), data, vEntries);\n\n if (savedUserPayload !== undefined) {\n // Restore userPayload\n data.userPayload = savedUserPayload;\n }\n }\n\n private _processValidationResults(\n schemaId: string,\n data: SchematizedData,\n ventries: ValidationEntry[]\n ): void {\n for (let i = 0; i < ventries.length; i += 1) {\n const ei = ventries[i];\n\n if (\n ei.errorCode == ErrorCode.stringLengthOverflowAppLimit ||\n ei.errorCode == ErrorCode.itemCountOverflowAppLimit\n ) {\n const lfi = ei.fields.length - 1;\n const obj = this._traverseFields(data, ei.fields.slice(0, lfi));\n const field = ei.fields[lfi];\n if (ei.errorCode == ErrorCode.stringLengthOverflowAppLimit) {\n obj[field] = obj[field].substring(0, maxStringLengthAppLimit);\n } else {\n obj[field].splice(maxItemCountAppLimit);\n }\n } else {\n throw new Error(ei.asMessage(schemaId));\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _traverseFields(data: SchematizedData, fields: string[]): any {\n if (!fields.length) {\n return data;\n }\n return this._traverseFields(data[fields[0]], fields.slice(1));\n }\n\n getUpCounters(): Metric<number>[] {\n return this._metrics.getUpCounters().filter((m) => m.getLastUpdatedOn());\n }\n\n getValueRecorders(): Metric<number[]>[] {\n return this._metrics.getValueRecorders().filter((m) => m.getLastUpdatedOn());\n }\n\n getBucketHistograms(): BucketMetric<number[]>[] {\n return this._metrics.getBucketHistograms().filter((m) => m.getLastUpdatedOn());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n utility.requireArgument(listener, 'listener', 'function');\n this._nextGen.registerForLogPrompt(listener);\n }\n\n activity<T>(name: string, execute: (act: Activity) => T, options?: ActivityApiOptions): T {\n const act = this.startActivity(name, options);\n try {\n return execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(options?.stopPayload?.schema, options?.stopPayload?.payload);\n }\n }\n\n async activityAsync<T>(\n name: string,\n execute: (act: Activity) => Promise<T>,\n options?: ActivityApiOptions\n ): Promise<T> {\n const act = this.startActivity(name, options);\n try {\n return await execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(options?.stopPayload?.schema, options?.stopPayload?.payload);\n }\n }\n}\n","import { RootActivity, Schema } from '../interfaces';\nimport { ActivityDetail } from '../interfaces/ActivityDetail';\nimport { ActivityImpl, onActivityError, onActivityStop } from './ActivityImpl';\nimport { SchematizedData, utility } from 'o11y/shared';\n\nexport class RootActivityImpl extends ActivityImpl implements RootActivity {\n constructor(\n name: string,\n onStopped: onActivityStop,\n onError: onActivityError,\n rootId?: string,\n _isSampled?: boolean\n ) {\n super(\n name,\n undefined,\n onStopped,\n onError,\n undefined,\n rootId || utility.generateUniqueId(32),\n _isSampled\n );\n }\n\n private _preRootId: string;\n get preRootId(): string {\n return this._preRootId;\n }\n set preRootId(value: string) {\n this._preRootId = value;\n }\n\n protected _getDetail(userSchema: Schema, userData: SchematizedData): ActivityDetail {\n const detail = super._getDetail(userSchema, userData);\n detail.isRoot = true;\n detail.preRootId = this.preRootId;\n return detail;\n }\n}\n","import { RootActivity, TracingHeadersOptions } from '../interfaces';\n\nconst rootId: string = new Array(32).fill(0).join('');\nclass RootActivityNoOp implements RootActivity {\n getId(): string {\n return rootId;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n}\n\nexport const rootActivityNoOp = Object.freeze(new RootActivityNoOp());\n","import { ActivityDetail, RootActivity } from '../interfaces';\nimport { ActivityData } from '../interfaces-private';\nimport { discarded, onActivityStop } from './ActivityImpl';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { RootActivityImpl } from './RootActivityImpl';\nimport { rootActivityNoOp } from './RootActivityNoOp';\nimport { utility } from 'o11y/shared';\nimport { MetricsImpl } from './MetricsImpl';\nimport { NextgenImpl } from './NextgenImpl';\n\nexport class AppInstrumentationImpl extends InstrumentationImpl {\n private _singleRootActivity: RootActivityImpl; // Not used when _allowMulti = true\n\n private readonly _onRootActivityStoppedCallback: onActivityStop =\n this.handleRootActivityStop.bind(this);\n\n constructor(_nextGen: NextgenImpl, _name: string, private readonly _allowMulti: boolean) {\n super(_nextGen, _name);\n }\n\n startRootActivity(name: string, rootId?: string, isSampled?: boolean): RootActivity {\n return this._safety.tryCatchReturn(() => {\n utility.requireArgument(name, 'name');\n\n const newRootActivity = new RootActivityImpl(\n name,\n this._onRootActivityStoppedCallback,\n this._onActivityErrorCallback,\n rootId,\n isSampled\n );\n\n if (!this._allowMulti) {\n if (this._singleRootActivity && !this._singleRootActivity.isStopped) {\n const preRootId = this._singleRootActivity.getId();\n this._singleRootActivity.terminate();\n newRootActivity.preRootId = preRootId;\n }\n this._singleRootActivity = newRootActivity;\n }\n\n return newRootActivity as RootActivity;\n }, rootActivityNoOp);\n }\n\n private handleRootActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp);\n this._singleRootActivity = undefined;\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const activityData: ActivityData = super._getActivityData(detail);\n activityData.isRoot = detail.isRoot;\n activityData.preRootId = detail.preRootId;\n return activityData;\n }\n\n getSingleRootActivityId(): string {\n return this._singleRootActivity?.getId();\n }\n\n isSingleRootActivitySampled(): boolean {\n return this._singleRootActivity?.getIsSampled();\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(this.name, () => this.name);\n }\n}\n","import { Instrumentation } from '../interfaces';\nimport { utility } from 'o11y/shared';\n\nconst pathLimit = 5;\n\nexport class AutomaticClickTracker {\n private instr: Instrumentation;\n private ignoredEvent: Event;\n private isActive = false;\n private document: Document;\n private readonly _boundClickListener = this.clickListener.bind(this);\n\n constructor(instrumentation: Instrumentation, document: Document) {\n utility.requireArgument(instrumentation, 'instrumentation');\n utility.requireArgument(document, 'document');\n\n this.instr = instrumentation;\n this.document = document;\n }\n\n activate(): void {\n if (!this.isActive) {\n this.document.addEventListener('click', this._boundClickListener, true);\n this.isActive = true;\n }\n }\n\n deactivate(): void {\n if (this.isActive) {\n this.document.removeEventListener('click', this._boundClickListener, true);\n this.isActive = false;\n }\n }\n\n markEventHandled(event: MouseEvent): void {\n this.ignoredEvent = event;\n }\n\n private clickListener(event: MouseEvent): void {\n let eventTargets: EventTarget[] = event.composedPath && event.composedPath();\n if (!eventTargets || !eventTargets.length) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n eventTargets = (event as any).path;\n }\n const handledBy: HTMLElement = this.getClickableElement(eventTargets);\n\n if (handledBy) {\n // Immediate\n setTimeout(() => {\n if (event !== this.ignoredEvent) {\n this.instr.domEvent(event, handledBy, undefined, undefined, {\n _auto: true\n });\n }\n });\n }\n }\n\n private getClickableElement(path: EventTarget[]): HTMLElement {\n const limit = path ? Math.min(path.length, pathLimit) : 0;\n for (let x = 0; x < limit; x += 1) {\n const currentElement = path[x] as HTMLElement;\n const tagName = currentElement.tagName && currentElement.tagName.toLowerCase();\n if (tagName === 'a' || tagName === 'button') {\n return currentElement;\n }\n if (tagName === 'input') {\n const inputElement = currentElement as HTMLInputElement;\n if (inputElement.type && inputElement.type.toLowerCase() === 'button') {\n return inputElement;\n }\n }\n }\n return undefined;\n }\n}\n","import {\n BucketMetric,\n BufferedLog,\n Instrumentation,\n InstrumentationContext,\n InstrumentedAppMethods,\n InstrumentedAppOptions,\n LogCollector,\n LogCollectorOptions,\n LogMeta,\n Metric,\n MetricsCollector,\n Nextgen,\n PayloadProvider,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { AppInstrumentationImpl } from './AppInstrumentationImpl';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { Tracing } from './Tracing';\nimport { LogPromptListener, SchematizedData, schemaUtil, utility } from 'o11y/shared';\n\nconst maxInstrumentationLength = 80;\nconst truncatedText = '_CUT';\nconst maxInstrumentationLengthBeforeTruncated = maxInstrumentationLength - truncatedText.length;\n\nexport class NextgenImpl implements Nextgen {\n private readonly _logCollectors = new Set<LogCollector>();\n private readonly _instruments = new Map<string, InstrumentationImpl | AppInstrumentationImpl>();\n private readonly _seqBySchema = new Map<string, number>();\n private _sequence = 0;\n private _appInstr: AppInstrumentationImpl;\n private _autoClickTracker: AutomaticClickTracker;\n private _metricsCollector: MetricsCollector;\n private _appPayloadProvider: PayloadProvider;\n private _pagePayloadProvider: PayloadProvider;\n private _forceDisabledLogCollectors = new Set<LogCollector>();\n private _logCollectorFailures = new Map<LogCollector, number>();\n private static _collectorFailureLimit = 5;\n private _isBufferingEnabled = false;\n private _buffer: BufferedLog[] = [];\n private readonly _logCollectionListeners = new Set<LogPromptListener>();\n\n get pagePayloadProvider(): PayloadProvider {\n return this._pagePayloadProvider;\n }\n set pagePayloadProvider(provider: PayloadProvider) {\n this._pagePayloadProvider = provider;\n }\n\n get appPayloadProvider(): PayloadProvider {\n return this._appPayloadProvider;\n }\n set appPayloadProvider(provider: PayloadProvider) {\n this._appPayloadProvider = provider;\n }\n\n registerApp(name: string, options?: InstrumentedAppOptions): InstrumentedAppMethods {\n utility.requireArgument(name, 'name', 'string');\n if (this._appInstr) {\n throw new Error('An app has already been registered with instrumentation.');\n }\n const instr = this._instruments.get(name);\n if (instr) {\n throw new Error(`The instrumentation name ${name} is already taken`);\n }\n this._appInstr = new AppInstrumentationImpl(\n this,\n name,\n options && options.allowMultipleRootActivities\n );\n this._instruments.set(name, this._appInstr);\n this._isBufferingEnabled = options && options.enableBuffering;\n\n const tracing = new Tracing(this._appInstr);\n\n return {\n log: this._appInstr.log.bind(this._appInstr),\n error: this._appInstr.error.bind(this._appInstr),\n startActivity: this._appInstr.startActivity.bind(this._appInstr),\n domEvent: this._appInstr.domEvent.bind(this._appInstr),\n incrementCounter: this._appInstr.incrementCounter.bind(this._appInstr),\n trackValue: this._appInstr.trackValue.bind(this._appInstr),\n bucketValue: this._appInstr.bucketValue.bind(this._appInstr),\n networkInstrumentation: tracing.networkInstrumentation.bind(tracing),\n registerForLogPrompt: this._appInstr.registerForLogPrompt.bind(this._appInstr),\n activity: this._appInstr.activity.bind(this._appInstr),\n activityAsync: this._appInstr.activityAsync.bind(this._appInstr),\n\n startRootActivity: this._appInstr.startRootActivity.bind(this._appInstr),\n registerLogCollector: this.registerLogCollector.bind(this),\n registerMetricsCollector: this.registerMetricsCollector.bind(this),\n activateClickTracker: this.activateClickTracker.bind(this),\n deactivateClickTracker: this.deactivateClickTracker.bind(this),\n disableBuffering: this.disableBuffering.bind(this),\n promptLogCollection: this.promptLogCollection.bind(this)\n };\n }\n\n getInstrumentation(name: string): Instrumentation {\n utility.requireArgument(name, 'name', 'string');\n if (name.length > maxInstrumentationLength) {\n // don't throw if it's too long. just add truncated suffix, but stay within max length\n name = name.substr(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;\n }\n let instr: InstrumentationImpl | AppInstrumentationImpl = this._instruments.get(name);\n if (!instr) {\n instr = new InstrumentationImpl(this, name);\n this._instruments.set(name, instr);\n } else if (instr === this._appInstr) {\n throw new Error(`The instrumentation name ${name} is being used by the app.`);\n }\n return instr;\n }\n\n get appName(): string {\n return this._appInstr && this._appInstr.name;\n }\n\n // This is an internal method that needs to be public\n addLog(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId: string,\n pagePayload: SchematizedPayload,\n appPayload: SchematizedPayload\n ): number {\n this._sequence += 1;\n\n const schemaId = schemaUtil.getSchemaId(schema);\n let schemaSequence = this._seqBySchema.get(schemaId) || 0;\n schemaSequence += 1;\n this._seqBySchema.set(schemaId, schemaSequence);\n\n const logMeta: LogMeta = {\n timestamp,\n rootId,\n sequence: this._sequence,\n schemaSequence,\n loggerName,\n pagePayload: pagePayload ? utility.clone(pagePayload) : undefined,\n appPayload: appPayload ? utility.clone(appPayload) : undefined,\n loggerAppName: this.appName,\n connectionType: utility.getConnectionType()\n };\n\n if (this._isBufferingEnabled) {\n // Always push to the buffer, even if no eligible collectors\n this._buffer.push({ schema, data: utility.clone(data), logMeta });\n }\n\n const eligibleCollectors: LogCollector[] = Array.from(this._logCollectors).filter(\n (collector: LogCollector) =>\n !this._forceDisabledLogCollectors.has(collector) &&\n !(collector.getIsCollectDisabled && collector.getIsCollectDisabled())\n );\n\n if (eligibleCollectors.length > 0) {\n for (const collector of eligibleCollectors) {\n // Make a copy of the aguments passed to the collectors lest they change them.\n const dataClone: SchematizedData = utility.clone(data);\n let failures: number = this._logCollectorFailures.get(collector) || 0;\n\n try {\n collector.collect(schema, dataClone, logMeta);\n // if it got here it means it succeeded/didn't throw so we want to decrement the failure count\n if (failures > 0) {\n this._logCollectorFailures.set(collector, failures - 1);\n }\n } catch (err) {\n failures += 1;\n // If a collector fails too much we just disable it\n if (failures >= NextgenImpl._collectorFailureLimit) {\n this._forceDisabledLogCollectors.add(collector);\n if (this._appInstr && (typeof err === 'string' || err instanceof Error)) {\n this._appInstr.error(err);\n }\n } else {\n this._logCollectorFailures.set(collector, failures);\n // We can't log an error here, or the same collector will immediately be called\n // again, likely resulting in repeat exceptions until the collector gets disabled.\n }\n }\n }\n }\n return this._sequence;\n }\n\n getBuffer(): BufferedLog[] {\n return this._buffer;\n }\n\n disableBuffering(): void {\n this._isBufferingEnabled = false;\n this._buffer = [];\n }\n\n getClickTracker(): AutomaticClickTracker {\n return this._autoClickTracker;\n }\n\n getDefaultInstrumentationContext(): InstrumentationContext {\n return {\n rootId: this._appInstr?.getSingleRootActivityId(),\n isRootActivitySampled: this._appInstr?.isSingleRootActivitySampled()\n };\n }\n\n activateClickTracker(): void {\n if (!this._autoClickTracker) {\n this._autoClickTracker = new AutomaticClickTracker(this._appInstr, window.document);\n }\n this._autoClickTracker.activate();\n }\n\n deactivateClickTracker(): void {\n if (this._autoClickTracker) {\n this._autoClickTracker.deactivate();\n // In case activateClickTracker is called later with a different instrumentation\n this._autoClickTracker = undefined;\n }\n }\n\n registerLogCollector(collector: LogCollector, options?: LogCollectorOptions): void {\n utility.requireArgument(collector, 'collector');\n if (this._logCollectors.has(collector)) {\n return;\n }\n this._logCollectors.add(collector);\n this._logCollectorFailures.set(collector, 0);\n if (\n (!collector.getIsCollectDisabled || !collector.getIsCollectDisabled()) &&\n options &&\n options.retroactive\n ) {\n for (const log of this._buffer) {\n collector.collect(log.schema, log.data, log.logMeta);\n }\n }\n }\n\n registerMetricsCollector(collector: MetricsCollector): void {\n utility.requireArgument(collector, 'collector');\n if (this._metricsCollector) {\n throw new Error('A metrics Collector is already registered.');\n }\n this._metricsCollector = collector;\n this._metricsCollector.receiveMetricsExtractors({\n getAllUpCounters: this.getAllUpCounters.bind(this),\n getAllValueRecorders: this.getAllValueRecorders.bind(this),\n getAllBucketHistograms: this.getAllBucketHistograms.bind(this)\n });\n }\n\n private getAllUpCounters(): Metric<number>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getUpCounters()\n );\n return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);\n }\n\n private getAllValueRecorders(): Metric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getValueRecorders()\n );\n return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);\n }\n\n private getAllBucketHistograms(): BucketMetric<number[]>[] {\n const arrOfArrs = Array.from(this._instruments.values()).map((instr) =>\n instr.getBucketHistograms()\n );\n return arrOfArrs.reduce((pv, cv) => pv.concat(cv), []);\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n this._logCollectionListeners.add(listener);\n }\n\n promptLogCollection(reason: string): void {\n for (const listener of this._logCollectionListeners.keys()) {\n try {\n listener(reason);\n } catch (err) {\n if (!utility.isProduction) {\n throw err;\n }\n }\n }\n }\n}\n","import { Instrumentation, InstrumentedAppMethods, InstrumentedAppOptions } from './interfaces';\nimport { NextgenImpl } from './library/NextgenImpl';\nimport { utility } from 'o11y/shared';\n\nclass Index {\n private _nextgen: NextgenImpl;\n // We are lazily initializing the singleton to allow any options to be processed\n // before the instantiation.\n private get _lazyNextGen(): NextgenImpl {\n if (!this._nextgen) {\n this._nextgen = new NextgenImpl();\n }\n return this._nextgen;\n }\n\n public registerInstrumentedApp(\n name: string,\n options?: InstrumentedAppOptions\n ): InstrumentedAppMethods {\n if (!options || options.isProduction !== false) {\n // Do this before construction\n // Production by default\n utility.markProduction();\n }\n const retVal: InstrumentedAppMethods = this._lazyNextGen.registerApp(name, options);\n if (options) {\n this._nextgen.appPayloadProvider = options.appPayloadProvider;\n this._nextgen.pagePayloadProvider = options.pagePayloadProvider;\n }\n return retVal;\n }\n\n public getInstrumentation(name?: string): Instrumentation {\n return this._lazyNextGen.getInstrumentation(name);\n }\n}\nconst index = new Index(); // singleton\nconst registerInstrumentedApp = index.registerInstrumentedApp.bind(index);\nconst getInstrumentation = index.getInstrumentation.bind(index);\nconst time = utility.time.bind(utility);\n\nexport { registerInstrumentedApp, getInstrumentation, time };\n","import { TaskerMulti, TaskerSingle } from '../interfaces/IdleDetector';\n\nexport type TaskDoneNotifier = () => void;\n\nexport class TaskerImpl implements TaskerSingle, TaskerMulti {\n private _busyCount = 0;\n private _isOk = true; // Once an error occurs, make operations no-op\n\n get isBusy(): boolean {\n return this._isOk ? this._busyCount > 0 : undefined;\n }\n\n constructor(\n public readonly name: string,\n initialCount: number,\n private readonly _doneCallback: TaskDoneNotifier,\n private readonly _overDoneCallback: TaskDoneNotifier\n ) {\n this._busyCount = initialCount;\n }\n\n add(): void {\n if (this._isOk) {\n this._busyCount += 1;\n }\n }\n done(): void {\n if (this._isOk) {\n if (this._busyCount > 0) {\n this._busyCount -= 1;\n if (!this._busyCount) {\n this._doneCallback();\n }\n } else {\n this._isOk = false;\n this._overDoneCallback();\n }\n }\n }\n}\n","import { getInstrumentation } from '../index';\nimport {\n IdleDetector,\n IdleDetectorOptions,\n IdleDetectorReport,\n Instrumentation\n} from '../interfaces';\nimport {\n IdleDetectedListener,\n IsBusyChecker,\n TaskerMulti,\n TaskerSingle\n} from '../interfaces/IdleDetector';\nimport { TaskerImpl } from './TaskerImpl';\nimport { utility } from 'o11y/shared';\nimport { idleDetectorReportSchema } from 'o11y_schema/sf_instrumentation';\n\nconst defaultLogThreshold = 300;\n\ntype TaskReportEntry = {\n name: string;\n start: number;\n end: number;\n};\n\ntype PollableReportEntry = {\n name: string;\n count: number;\n};\n\nexport class IdleDetectorImpl implements IdleDetector {\n private readonly _instr: Instrumentation = getInstrumentation('IdleDetector');\n private readonly _taskers = new Map<TaskerImpl, TaskReportEntry>();\n private readonly _listeners = new Set<IdleDetectedListener>();\n private readonly _busyCheckers = new Map<IsBusyChecker, string>();\n private readonly _logThreshold: number = defaultLogThreshold;\n private readonly _endedTasks = new Array<TaskReportEntry>();\n private readonly _pollableReport = new Array<PollableReportEntry>();\n private _firstCallbackTime: number;\n private _timerCheckQueued = 0; // timerIds are always positive integers. 0 means nothing is queued\n\n constructor(options?: IdleDetectorOptions) {\n if (\n utility.requireArgumentIfDefined(\n options?.logThreshold,\n 'options.logThreshold',\n 'number'\n )\n ) {\n this._logThreshold = options.logThreshold;\n }\n }\n\n requestIdleDetectedCallback(callback: IdleDetectedListener): void {\n utility.requireArgument(callback, 'callback', 'function');\n if (this._listeners.size === 0) {\n this._firstCallbackTime = utility.time().perfNow;\n }\n this._listeners.add(callback);\n this.checkIfLoaded();\n }\n\n private reportTaskEnded(tasker: TaskerImpl): void {\n // Report only if we have any listeners\n if (this._listeners.size) {\n const snapshot = Object.assign({}, this._taskers.get(tasker));\n this._endedTasks.push(snapshot);\n }\n }\n\n declareNotifierTaskSingle(name: string): TaskerSingle {\n utility.requireArgument(name, 'name', 'string');\n const tasker = this.addTasker(name, 1);\n\n const retVal: TaskerSingle = {\n get isBusy() {\n return tasker.isBusy;\n },\n done: () => {\n tasker.done();\n this._taskers.delete(tasker);\n }\n };\n\n return retVal;\n }\n\n declareNotifierTaskMulti(name: string, existingBusyCount = 0): TaskerMulti {\n utility.requireArgument(name, 'name', 'string');\n if (existingBusyCount !== undefined) {\n utility.requireArgument(existingBusyCount, 'existingBusyCount', 'number');\n\n if (\n existingBusyCount < 0 ||\n parseInt(existingBusyCount.toString(), 10) !== existingBusyCount\n ) {\n // Remove decimal points to make sure it's an integer\n throw new Error('existingBusyCount accepts only non-negative integers');\n }\n }\n const tasker = this.addTasker(name, existingBusyCount);\n\n const retVal: TaskerMulti = {\n get isBusy() {\n return tasker.isBusy;\n },\n add: () => {\n if (!tasker.isBusy) {\n const meta = this._taskers.get(tasker);\n meta.start = utility.time().perfNow;\n meta.end = undefined;\n }\n tasker.add();\n },\n done: tasker.done.bind(tasker) // Note: don't delete multi tasker\n };\n return retVal;\n }\n\n declarePollableTaskMulti(name: string, isBusyChecker: IsBusyChecker): void {\n utility.requireArgument(name, 'name', 'string');\n utility.requireArgument(isBusyChecker, 'isBusyChecker', 'function');\n\n this._busyCheckers.set(isBusyChecker, name);\n }\n\n private addTasker(name: string, existingBusyCount: number): TaskerImpl {\n const tasker = new TaskerImpl(\n name,\n existingBusyCount,\n () => {\n // Done callback\n this._taskers.get(tasker).end = utility.time().perfNow;\n this.reportTaskEnded(tasker);\n this.checkIfLoaded();\n },\n () => {\n // Overdone callback\n this._instr.error(`Overdone: ${tasker.name}`);\n utility.noProdThrow(`Tasker '${tasker.name}' is done too many times.`);\n }\n );\n this._taskers.set(tasker, {\n name,\n start: existingBusyCount > 0 ? utility.time().perfNow : undefined,\n end: undefined\n });\n return tasker;\n }\n\n private areAllNotifiersIdle(): boolean {\n return !Array.from(this._taskers.keys()).some((t) => t.isBusy);\n }\n\n private getFirstBusyPollable(): string {\n const entry = Array.from(this._busyCheckers).find((entry) => {\n const isBusyChecker = entry[0];\n const name = entry[1];\n try {\n return isBusyChecker();\n } catch (e) {\n this._instr.error(e, `BusyChecker ${name}`);\n utility.noProdThrow(e);\n return false; // Not busy\n }\n });\n\n return entry ? entry[1] : undefined;\n }\n\n private checkIfLoaded(): void {\n if (!this._listeners.size) {\n // bail out early. We don't have any callbacks queued\n return;\n }\n\n // We restart the idle timer check logic whenever we get an external\n // trigger that a resource was loaded since that would imply that more\n // work could be queued up and we want to be aware of that\n if (this._timerCheckQueued) {\n window.clearTimeout(this._timerCheckQueued);\n }\n\n if (this.areAllNotifiersIdle()) {\n // Enqueue two RAF to make sure nothing got queued in this js cycle\n // note the use of double setTimeout. We want our setTimeout to queue up after\n // any set timeouts queued within micro tasks that may run after processing this\n // xhr response.\n // Here's a sample timeline\n // .....[ Single Event Loop ].....................................\n // .....[XHR callback][checkIfLoaded][microtasks]-[1st setTimeout]....[2nd setTimeout]\n // ^\n // queue settimeout at the end of event loop --->|\n this._timerCheckQueued = window.setTimeout(() => {\n this._timerCheckQueued = window.setTimeout(() => {\n this.doubleCheck();\n }, 40);\n }, 0);\n }\n }\n\n private doubleCheck(): void {\n this._timerCheckQueued = 0;\n\n if (this.areAllNotifiersIdle()) {\n const pollableName: string = this.getFirstBusyPollable();\n if (pollableName !== undefined) {\n // we'll have to keep polling until polled operations finish\n this.addToPollableReport(pollableName);\n this._timerCheckQueued = window.setTimeout(() => {\n this.doubleCheck();\n }, 15);\n } else {\n // OK!! We are certified idle.\n const maxDuration = utility.time().perfNow - this._firstCallbackTime;\n\n // Take a snapshot of internal variables so that we don't get confused\n // if tasks are created or listeners or worse, get into an infinite loop\n // if idle is requested\n const listeners = Array.from(this._listeners.values());\n this._listeners.clear();\n\n this._firstCallbackTime = undefined;\n const endedTasks = this._endedTasks.splice(0);\n const pollableReport = this._pollableReport.splice(0);\n\n this.notify(listeners, maxDuration, endedTasks, pollableReport);\n }\n }\n }\n\n private addToPollableReport(name: string): void {\n const lastEntry: PollableReportEntry = this._pollableReport.length\n ? this._pollableReport[this._pollableReport.length - 1]\n : undefined;\n\n if (lastEntry?.name === name) {\n lastEntry.count += 1;\n } else {\n this._pollableReport.push({\n name,\n count: 1\n });\n }\n }\n\n private notify(\n listeners: IdleDetectedListener[],\n maxDuration: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): void {\n if (maxDuration >= this._logThreshold) {\n const logData: IdleDetectorReport = this._getReport(\n maxDuration,\n listeners.length,\n taskReport,\n pollableReport\n );\n this._instr.log(idleDetectorReportSchema, logData);\n }\n\n const tsNow = utility.time().tsNow;\n for (const [index, listener] of listeners.entries()) {\n try {\n listener(tsNow);\n } catch (e) {\n this._instr.error(e, `Listener #${index}`);\n utility.noProdThrow(e);\n }\n }\n }\n\n getReport(): IdleDetectorReport {\n const perfNow = utility.time().perfNow;\n const maxDuration =\n this._firstCallbackTime > 0 ? perfNow - this._firstCallbackTime : undefined;\n\n const onGoingTasks: Array<TaskReportEntry> = Array.from(this._taskers.entries())\n .filter((e) => e[0].isBusy)\n .map((e) => ({\n name: e[1].name,\n start: e[1].start,\n end: perfNow\n }));\n return this._getReport(\n maxDuration,\n this._listeners.size,\n this._endedTasks.concat(onGoingTasks),\n this._pollableReport\n );\n }\n\n private _getReport(\n maxDuration: number,\n listenerCount: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): IdleDetectorReport {\n const sortedTaskers = taskReport\n .map((t) => ({\n name: t.name,\n duration: t.end - t.start\n }))\n .sort((a, b) => b.duration - a.duration);\n return {\n logThreshold: this._logThreshold,\n maxDuration,\n listenerCount,\n pollableCount: this._busyCheckers.size,\n busyTasks: sortedTaskers.map((t) => t.name),\n busyDurations: sortedTaskers.map((t) => t.duration),\n pollables: pollableReport.map((p) => p.name),\n pollCounts: pollableReport.map((p) => p.count)\n };\n }\n}\n","import { Environment, LogCollector, LogMeta, Schema } from '../interfaces';\nimport { SchematizedData, schemaUtil } from 'o11y/shared';\n\ntype ColorMap = Record<string, string>;\n\nconst bgColorMap: ColorMap = {\n Error: 'Crimson',\n Activity: 'CadetBlue',\n InstrumentedEvent: 'DarkOliveGreen',\n O11ySample: 'BlueViolet'\n};\nconst colorMap: ColorMap = {\n Error: 'white',\n Activity: 'white',\n InstrumentedEvent: 'white',\n O11ySample: 'white'\n};\nconst defaultColor = 'black';\nconst defaultBgColor = 'Gainsboro';\n\nexport class ConsoleCollector implements LogCollector {\n constructor(environment?: Environment) {\n if (environment) {\n this._log('ConsoleCollector', environment);\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n let label, color, bgColor;\n if (schema.namespace === 'sf.instrumentation') {\n label = schema.name;\n color = colorMap[schema.name] || defaultColor;\n bgColor = bgColorMap[schema.name] || defaultBgColor;\n } else {\n label = schemaUtil.getSchemaId(schema);\n }\n\n this._log(label, data, logMeta, color, bgColor);\n }\n\n private _log(\n label: string,\n first?: unknown,\n second?: unknown,\n color: string = defaultColor,\n bgColor: string = defaultBgColor\n ): void {\n const css = `color:${color};background-color:${bgColor}`;\n // eslint-disable-next-line no-console\n console.log(\n `%cO11Y%c ${label}`,\n 'color:white;background-color:#FF6600;font-weight:bold',\n css,\n first || '',\n second || ''\n );\n }\n}\n","// auto-generated\nexport const version = '242.3.3';\n","// This is the file that exports all `o11y` module level exports.\nimport { IdleDetector } from './interfaces';\nimport { IdleDetectorImpl } from './library/IdleDetectorImpl';\n\nexport const idleDetector: IdleDetector = new IdleDetectorImpl({\n logThreshold: 300\n});\n\nexport * from './index';\nexport { ConsoleCollector } from './console-collector/ConsoleCollector';\n\nexport { version as _version } from './version';\n"],"names":["simpleSchema","error","errorSchema","activitySchema","instrumentedEventSchema","idleDetectorReportSchema"],"mappings":";;AAuBA,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAG/B,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAGxC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAE/C,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAC5C,MAAM,6BAA6B,GAAG,UAAU,CAAC;MAEpC,OAAO;IAOhB,YAA6B,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;QAC/C,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;KACrD;IAEO,OAAO,mBAAmB,CAC9B,OAAe,EACf,MAAc,EACd,SAAmB,EACnB,YAAqB;QAKrB,IAAI,EAAE,GAAG,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;QAEhC,IAAI,SAAS,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;YACvD,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;YAC9B,IAAI,YAAY,KAAK,SAAS,EAAE;gBAC5B,EAAE,IAAI,IAAI,YAAY,EAAE,CAAC;aAC5B;SACJ;QACD,OAAO,EAAE,CAAC;KACb;IAEO,OAAO,mBAAmB,CAC9B,OAAe,EACf,MAAc,EACd,SAAkB;QAIlB,OAAO,MAAM,OAAO,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;KAC/D;IAEO,OAAO,gBAAgB,CAAC,IAAY,EAAE,QAAgB;QAE1D,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAW,IAAI,CAAC,MAAM,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,wCAAwC,CAAC,EAAE,CAAC,CAAC;aACjF;SACJ;QAED,IAAI,GAAG,GAAG,QAAQ,EAAE;YAEhB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,GAAG,GAAG,QAAQ,EAAE;YAEhB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,UAAU,CACpB,OAAe,EACf,MAAc,EACd,SAAmB,EACnB,OAA+B;QAE/B,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtD,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAY,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;QAE9D,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAC3B,OAAO,EACP,OAAO,IAAI,OAAO,CAAC,sBAAsB,KAAK,SAAS;cACjD,OAAO,CAAC,sBAAsB;cAC9B,YAAY;kBACZ,sBAAsB;kBACtB,sBAAsB,CAC/B,CAAC;QACF,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAE5D,MAAM,YAAY,GACd,CAAC,OAAO;YACJ,OAAO,CAAC,YAAY,KAAK,SAAS;YAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC;YACpE,SAAS,CAAC;QAEd,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,IAAI,YAAY,EAAE;YAEd,MAAM,SAAS,GAAY,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAC/D,IAAI,SAAS,EAAE;gBACX,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,mBAAmB,CACxC,OAAO,EACP,MAAM,EACN,SAAS,EACT,YAAY,CACf,CAAC;aACL;iBAAM;gBACH,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;gBACjC,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;gBAC/B,IAAI,YAAY,KAAK,SAAS,EAAE;oBAC5B,OAAO,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAAC;iBAC9C;gBACD,IAAI,SAAS,KAAK,SAAS,EAAE;oBACzB,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;iBAClD;aACJ;SACJ;aAAM;YACH,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;SACrF;QAED,OAAO,OAAO,CAAC;KAClB;IAEO,8BAA8B;QAClC,IAAI,OAAO,CAAC,gCAAgC,EAAE;YAC1C,IAAI,OAAO,CAAC,cAAc,EAAE;gBACxB,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;gBAC/C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;aACtC;YACD,IAAI,OAAO,CAAC,YAAY,EAAE;gBACtB,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;gBACtD,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;aACpC;YACD,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBAC1B,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;gBACzE,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;aACxC;YACD,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;SACpD;KACJ;IAEO,6BAA6B,CACjC,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,OAA8B;QAE9B,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;YAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACzE,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;SACnD;QAED,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;YACtD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACvE,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;SACnD;KACJ;IAEO,cAAc,CAClB,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,OAA8B;QAE9B,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/C,MAAM,SAAS,GAAc,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,QAAQ;YAC5D,IAAI,QAAkB,CAAC;YACvB,IAAI;gBACA,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,2BAA2B,CAAC,CAAC;gBAE5E,IAAI,UAAU,EAAE;oBACZ,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;oBAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBACvD,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;iBAC9E;gBACD,OAAO,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CACpC,OAAO,CAAC,OAAO,EACf,GAAG,EACH,UAAU,EACV,GAAG,QAAQ,CACd,CAAC;aACL;YAAC,OAAO,EAAE,EAAE;gBACT,IAAI,SAAS,EAAE;oBACX,IAAI,QAAQ,EAAE;wBACV,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBACtB;yBAAM;wBACH,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBACnB;iBACJ;gBACD,MAAM,EAAE,CAAC;aACZ;oBAAS;gBACN,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,IAAI,EAAE,CAAC;iBACnB;aACJ;SACJ,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;KACrC;IAEO,YAAY,CAChB,KAAsB,EACtB,SAAkB,EAClB,YAAoB,EACpB,UAAmB,EACnB,OAA8B;QAE9B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;QACtD,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;QAE/D,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,UAAyB,GAAG,IAAI;YAClE,IAAI,QAAkB,CAAC;YAEvB,MAAM,GAAG,GAAY,IAAI,CAAC;YAC1B,IAAI;gBACA,GAAG,CAAC,aAAa,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,CAC9C,YAAY,IAAI,6BAA6B,CAChD,CAAC;gBACF,IAAI,UAAU,EAAE;oBACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBAElD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;wBAClC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC5C,CAAC,CAAC;iBACN;gBACD,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;aAChD;YAAC,OAAO,EAAE,EAAE;gBACT,IAAI,SAAS,EAAE;oBACX,IAAI,QAAQ,EAAE;wBACV,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBACtB;yBAAM;wBACH,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBACnB;iBACJ;gBACD,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,IAAI,EAAE,CAAC;iBACnB;gBACD,MAAM,EAAE,CAAC;aACZ;SACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAU,OAAO,CAAC,YAAY,EAAE;YACtD,SAAS,CAAC,MAAe;gBACrB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAa,CAAC;gBAGvC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE;oBAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;oBACtC,IAAI,QAAQ,EAAE;wBACV,QAAQ,CAAC,IAAI,EAAE,CAAC;qBACnB;iBACJ,CAAC,CAAC;gBACH,MAAM,CAAC,gBAAgB,CACnB,OAAO,EACP,CAAC,KAA+C;oBAC5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;oBACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;oBACtC,IAAI,QAAQ,EAAE;wBACV,IAAI,SAAS,EAAE;4BACX,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;yBACzB;wBACD,QAAQ,CAAC,IAAI,EAAE,CAAC;qBACnB;yBAAM,IAAI,SAAS,EAAE;wBAClB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBACtB;iBACJ,CACJ,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;oBAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;oBACtC,IAAI,QAAQ,EAAE;wBACV,QAAQ,CAAC,OAAO,EAAE,CAAC;qBACtB;iBACJ,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;aACjB;SACJ,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC;KAC7C;IAED,sBAAsB,CAAC,OAAgD;QACnE,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEnE,IAAI,OAAO,EAAE;YAET,IAAI,CAAC,8BAA8B,EAAE,CAAC;YAEtC,MAAM,cAAc,GAChB,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;YAE/C,IAAI,CAAC,6BAA6B,CAC9B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,EACzE,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,EAC7D,cAAc,CAAC,YAAY,EAC3B,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,EAC9D,cAAc,CAAC,qBAAqB,CACvC,CAAC;SACL;aAAM;YAEH,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACzC;KACJ;;AAzSc,eAAO,GAAsB,OAAO,CAAC,SAAS,EAAE,CAAC;AAIjD,wCAAgC,GAAG,KAAK;;AC7C3D,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,iDAAI,CAAA;IACJ,mDAAK,CAAA;IACL,iDAAI,CAAA;IACJ,iDAAI,CAAA;AACR,CAAC,EALW,aAAa,KAAb,aAAa;;ACWlB,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,SAAS,GAAG,WAAW,CAAC;AAErC,MAAM,UAAU,GAAG;IACf,QAAQ;IACR,UAAU;IACV,SAAS;CACZ,CAAC;MAKW,YAAY;IAerB,YACuB,KAAa,EACb,OAAe,EACjB,UAA0B,EAC1B,QAAyB,EAC1C,OAAgB,EAChB,EAAW,EACQ,UAAoB;QANpB,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAAQ;QACjB,eAAU,GAAV,UAAU,CAAgB;QAC1B,aAAQ,GAAR,QAAQ,CAAiB;QAGvB,eAAU,GAAV,UAAU,CAAU;QAVnC,gBAAW,GAAG,CAAC,CAAC;QAChB,qBAAgB,GAAkB,aAAa,CAAC,IAAI,CAAC;QAWzD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAE1C,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAE5C,IAAI,CAAC,QAAQ;YACT,OAAO,WAAW,KAAK,WAAW;gBAClC,OAAO,WAAW,CAAC,IAAI,KAAK,UAAU;gBACtC,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI;gBACA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAClC;YAAC,WAAM;gBACJ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;aACzB;SACJ;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9B,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;gBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC;gBAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;aACf,EAAE,OAAO,CAAC,CAAC;SACf;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;KACrC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,KAAK;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,KAAK,CAAC,KAAc,EAAE,gBAAkC,EAAE,QAA0B;QAChF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;YACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;SACrE,CAAC,CAAC;KACN;IAED,IAAI,CACA,gBAAkC,EAClC,QAA0B,EAC1B,OAA6B;QAE7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;gBACnE,QAAQ;gBACR,QAAQ;aACX,CAAC,CAAC;YACH,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEjE,IAAI,OAAO,EAAE;gBACT,MAAM,SAAS,GAAW,OAAO,CAAC,iBAAiB,CAAC;gBACpD,MAAM,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CACvD,SAAS,EACT,2BAA2B,EAC3B,QAAQ,CACX,CAAC;gBAEF,MAAM,QAAQ,GAAW,OAAO,CAAC,gBAAgB,CAAC;gBAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,CACtD,QAAQ,EACR,0BAA0B,EAC1B,QAAQ,CACX,CAAC;gBAEF,IAAI,kBAAkB,IAAI,SAAS,GAAG,CAAC,EAAE;oBACrC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;iBAClE;gBAED,IACI,iBAAiB;qBAChB,QAAQ,GAAG,CAAC;wBACT,QAAQ,IAAI,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EACxE;oBACE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;iBAClF;aACJ;YAED,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3D,CAAC,CAAC;KACN;IAEO,cAAc,CAAC,aAAsB,EAAE,YAAqB;QAChE,IAAI,aAAa,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAC7B,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAC/D,CAAC;YACF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;YACpC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC/C;QAED,IAAI,YAAY,KAAK,SAAS,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC9C;KACJ;IAEO,iBAAiB,CAAC,KAAoB;QAC1C,IACI,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI;YAC5C,IAAI,CAAC,gBAAgB,KAAK,KAAK;YAC/B,KAAK,KAAK,aAAa,CAAC,IAAI,EAC9B;YACE,OAAO;SACV;QACD,IAAI,CAAC,gBAAgB;YACjB,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI,GAAG,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC;KACjF;IAEO,aAAa,CACjB,gBAAiC,EACjC,QAAyB,EACzB,OAA6B;QAG7B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI;gBAEA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,SAAS,EAAE;oBAC3C,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;iBACrD;gBACD,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC7C;YAAC,WAAM,GAAE;SACb;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAEhB,OAAO;SACV;QAED,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAC5E;QAGD,IAAI,CAAC,aAAa;YACd,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,IAAI;gBAC5C,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,KAAK;kBACvC,YAAY;kBACZ,IAAI,CAAC,aAAa,CAAC;QAE7B,MAAM,cAAc,GAAmB,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;KACnC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;KAC3C;IAED,OAAO;QACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;SACf,CAAC,CAAC;KACN;IAED,SAAS;QACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,UAAU,CAAC;YAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;SACf,CAAC,CAAC;KACN;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;KACnC;IAES,UAAU,CAChB,gBAAiC,EACjC,QAAyB;QAEzB,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,gBAAgB,EAAE,gBAAgB;YAClC,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9B,eAAe,EAAE,IAAI,CAAC,gBAAgB;SACzC,CAAC;KACL;IAEM,eAAe,CAAC,OAA8B;QAIjD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;QAEvC,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;KAC5E;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,eAAe;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;;AA5PgB,mBAAM,GAAG,CAAC;;AC5BxB,MAAM,QAAQ,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AACrf,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACDlX,MAAM,KAAK,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9f,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACDpD,MAAM,oBAAoB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,2CAA2C,CAAC,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChgB,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACDnP,MAAM,kBAAkB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACrf,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1f,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE;AAC7gB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACHxZ,MAAM,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,oHAAoH,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACEvX,MAAM,EAAE,GAAW,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,MAAM,YAAY;IACd,KAAK;QACD,OAAO,EAAE,CAAC;KACb;IACD,SAAS;QACL,OAAO,SAAS,CAAC;KACpB;IAED,KAAK,MAAW;IAEhB,IAAI,MAAW;IAEf,OAAO,MAAW;IAElB,SAAS,MAAW;IAEpB,YAAY;QACR,OAAO,KAAK,CAAC;KAChB;IACD,eAAe,CAAC,SAAgC;QAC5C,OAAO,EAAE,CAAC;KACb;IACD,iBAAiB;QACb,OAAO,SAAS,CAAC;KACpB;IACD,gBAAgB;QACZ,OAAO,SAAS,CAAC;KACpB;IACD,eAAe;QACX,OAAO,SAAS,CAAC;KACpB;CACJ;AAEM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;;MC/BhD,eAAe;IACxB,wBAAwB,CACpB,SAAuB,EACvB,SAAsB,EACtB,WAA+B;QAE/B,MAAM,iBAAiB,GAA0B;YAC7C,cAAc,EAAE,SAAS,CAAC,OAAO;YACjC,eAAe,EACX,CAAC,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS;YAC7E,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC1C,CAAC;QAEF,IAAI,WAAW,EAAE;YACb,iBAAiB,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAClD,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,OAAO,EACnB,IAAI,CACP,CAAC;SACL;QAED,OAAO,iBAAiB,CAAC;KAC5B;IAED,iBAAiB,CAAC,CAAa;QAC3B,OAAO;YACH,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACvB,CAAC;KACL;CACJ;AAED,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;AACjC,MAAM,eAAe,GAAG,SAAS;;ACnDjC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC;AACjC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AACxC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,MAAM,aAAa,GAAG,CAAC,mBAAmB,CAAC;AAC3C,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;MAiBtC,eAAe;IACxB,YACW,SAAoB,EACpB,MAAgB,EAChB,QAAiB,EACjB,QAAiB;QAHjB,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAU;QAChB,aAAQ,GAAR,QAAQ,CAAS;QACjB,aAAQ,GAAR,QAAQ,CAAS;KACxB;IAEJ,SAAS,CAAC,QAAgB;QACtB,MAAM,GAAG,GACL,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM;iBACN,KAAK,CAAC,CAAC,CAAC;iBACR,MAAM,CACH,CAAC,IAAI,EAAE,OAAO,KACV,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,EACvE,EAAE,CACL,CAAC;QACV,IAAI,GAAW,CAAC;QAEhB,QAAQ,IAAI,CAAC,SAAS;YAClB;gBACI,GAAG,GAAG,iCAAiC,CAAC;gBACxC,MAAM;YACV;gBACI,GAAG,GAAG,iBAAiB,IAAI,CAAC,QAAQ,sBAAsB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1E,MAAM;YACV;gBACI,GAAG,GAAG,sBAAsB,CAAC;gBAC7B,MAAM;YACV;gBACI,GAAG,GAAG,oCAAoC,CAAC;gBAC3C,MAAM;YACV;gBACI,GAAG,GAAG,0BAA0B,CAAC;gBACjC,MAAM;YACV;gBACI,GAAG,GAAG,8CAA8C,CAAC;gBACrD,MAAM;YACV;gBACI,GAAG,GAAG,mCAAmC,CAAC;gBAC1C,MAAM;YAcV;gBACI,GAAG,GAAG,uBAAuB,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9C,MAAM;SACb;QAED,OAAO,UAAU,QAAQ,cAAc,GAAG,MAAM,GAAG,EAAE,CAAC;KACzD;CACJ;AAED,MAAM,YAAY;IACP,QAAQ,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAO,GAAG,KAAK;QAClE,MAAM,YAAY,GAAiB,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAW,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,KAAK,EAAmB,CAAC;QAEhD,MAAM,YAAY,GAA+B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,CACf,UAAU,EACV,EAAE,EACF,IAAI,EACJ,YAAY,CAAC,YAAY,CAAC,OAAO,CAAU,EAC3C,YAAY,EACZ,QAAQ,CACX,CAAC;QAEF,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;SACtD;QAED,OAAO,UAAU,CAAC;KACrB;IAEO,cAAc,CAClB,UAA6B,EAC7B,UAAoB,EACpB,IAAqB,EACrB,OAAc,EACd,UAAsC,EACtC,QAAgB;QAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;gBACvC,MAAM,GAAG,GAA+C,CAAC,SAAS,EAAE,IAAK,KACrE,IAAI,CAAC,eAAe,CAChB,UAAU,EACV,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,EACpB,KAAK,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,GAAG,EACH,IAAI,CACP,CAAC;gBAEN,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;oBACb,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC1C;qBAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;oBACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC3C;aAEJ;SACJ;KACJ;IAEO,wBAAwB,CAAC,GAAyB;QACtD,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;KAC1D;IAEO,eAAe,CACnB,UAA6B,EAC7B,UAAoB,EACpB,cAAoC,EACpC,YAAoB,EACpB,UAAsC,EACtC,QAAgB,EAChB,GAAW,EACX,IAAa;QAEb,IAAI,SAAoB,CAAC;QAEzB,IAAI,IAAI,KAAK,UAAU,EAAE;YACrB,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;gBAC/B,IAAI,cAAc,CAAC,MAAM,GAAG,oBAAoB,EAAE;oBAC9C,SAAS,IAAsC,CAAC;iBACnD;gBAED,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAa;oBAExC,IAAI,CAAC,eAAe,CAChB,UAAU,EACV,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EACjC,KAAK,EACL,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,GAAG,CACN,CAAC;iBACL,CAAC,CAAC;aACN;iBAAM;gBACH,SAAS,IAA0B,CAAC;aACvC;YAED,IAAI,SAAS,EAAE;gBACX,UAAU,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;aAC/D;YAGD,OAAO;SACV;QAED,IAAI,cAAsB,CAAC;QAC3B,QAAQ,YAAY;YAChB,KAAK,QAAQ;gBACT,cAAc,GAAG,QAAQ,CAAC;gBAC1B,IAAI,cAAc,CAAC,MAAM,GAAG,uBAAuB,EAAE;oBACjD,SAAS,IAAyC,CAAC;iBACtD;gBACD,MAAM;YACV,KAAK,OAAO;gBACR,cAAc,GAAG,QAAQ,CAAC;gBAC1B,IAAI,EAAE,cAAc,YAAY,UAAU,CAAC,EAAE;oBACzC,SAAS,IAAgC,CAAC;iBAC7C;gBACD,MAAM;YACV,KAAK,MAAM;gBACP,cAAc,GAAG,SAAS,CAAC;gBAC3B,MAAM;YACV,KAAK,QAAQ;gBACT,cAAc,GAAG,QAAQ,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAC7B,cAAc,EACd,WAAW,EACX,oBAAoB,CACvB,CAAC;gBACF,MAAM;YACV,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC;YACf,KAAK,UAAU;gBACX,cAAc,GAAG,QAAQ,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;gBAC9E,MAAM;YACV,KAAK,QAAQ;gBACT,cAAc,GAAG,QAAQ,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAC7B,cAAc,EACd,WAAW,EACX,qBAAqB,CACxB,CAAC;gBACF,MAAM;YACV,KAAK,SAAS,CAAC;YACf,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACT,cAAc,GAAG,QAAQ,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;gBAChF,MAAM;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO;gBACR,cAAc,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;oBAClC,SAAS,IAA2B,CAAC;iBACxC;gBACD,MAAM;YACV;gBACI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;oBAEpD,IAAI,CAAC,cAAc,CACf,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,CAAC,YAAY,CAAU,EACjC,UAAU,EACV,QAAQ,CACX,CAAC;oBACF,cAAc,GAAG,QAAQ,CAAC;iBAC7B;gBACD,MAAM;SACb;QAED,IAAI,OAAO,cAAc,KAAK,cAAc,EAAE;YAC1C,UAAU,CAAC,IAAI,CACX,IAAI,eAAe,IAEf,UAAU,EACV,YAAY,EACZ,OAAO,cAAc,CACxB,CACJ,CAAC;SACL;QAED,IAAI,SAAS,EAAE;YACX,UAAU,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;SAC/D;KACJ;IAEO,gBAAgB,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;QAC5D,OAAO,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,OAAgC,SAAS,CAAC;KAC9E;CACJ;AAEM,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE;;MCxSjC,mBAAmB;IAK5B,YACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB,EAClB,QAAkB;QAJlB,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAQ;QAClB,kBAAa,GAAb,aAAa,CAAQ;QACrB,UAAK,GAAL,KAAK,CAAa;QAClB,aAAQ,GAAR,QAAQ,CAAU;QAP/B,YAAO,GAAG,IAAI,KAAK,EAAU,CAAC;QASlC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;KAC1C;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACvD;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrD;IAED,MAAM,CAAC,KAAa;QAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;SACV;QAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC/D;IAED,KAAK;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;;;MCpEQ,aAAa;IAKtB,YACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB;QAHlB,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAQ;QAClB,kBAAa,GAAb,aAAa,CAAQ;QACrB,UAAK,GAAL,KAAK,CAAa;QAN/B,WAAM,GAAG,CAAC,CAAC;QAQf,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;KAC1C;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,SAAS,CAAC,KAAK,GAAG,CAAC;QACf,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;SACV;QAED,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACrE;IAED,KAAK;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACnB;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;;;MCvDQ,iBAAiB;IAK1B,YACqB,KAAa,EACb,UAAkB,EAClB,aAAqB,EACrB,KAAkB;QAHlB,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAQ;QAClB,kBAAa,GAAb,aAAa,CAAQ;QACrB,UAAK,GAAL,KAAK,CAAa;QAN/B,YAAO,GAAG,IAAI,KAAK,EAAU,CAAC;QAQlC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;KAE1C;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,OAAO;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrD;IAED,MAAM,CAAC,KAAa;QAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC3C,OAAO;SACV;QAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC7D;IAED,KAAK;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,eAAe;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;;;MChEQ,cAAc;IAIvB,YAAY,OAAe;QAHV,SAAI,GAAG,IAAI,GAAG,EAAQ,CAAC;QAIpC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO;SACV;QACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACxD;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAED,GAAG,CAAC,GAAM;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;IAED,GAAG,CAAC,GAAM;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;KAChB;IAED,WAAW;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACzC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;;;AC9BL,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,IAAK,UAIJ;AAJD,WAAK,UAAU;IACX,iDAAO,CAAA;IACP,uDAAU,CAAA;IACV,iEAAe,CAAA;AACnB,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;MAEY,WAAW;IASpB,YACqB,UAAkB,EAClB,gBAA8B;QAD9B,eAAU,GAAV,UAAU,CAAQ;QAClB,qBAAgB,GAAhB,gBAAgB,CAAc;QAVlC,gBAAW,GAAG,IAAI,cAAc,CAAwB,WAAW,CAAC,CAAC;QACrE,oBAAe,GAAG,IAAI,cAAc,CACjD,iBAAiB,CACpB,CAAC;QACe,sBAAiB,GAAG,IAAI,cAAc,CACnD,mBAAmB,CACtB,CAAC;KAKE;IAEJ,gBAAgB,CACZ,SAAiB,EACjB,SAAiB,EACjB,QAAQ,GAAG,KAAK,EAChB,OAAoB,EAAE;QAEtB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACzD;IAED,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAoB,EAAE;QACjF,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtD;IAED,WAAW,CACP,SAAiB,EACjB,KAAa,EACb,OAAiB,EACjB,QAAQ,GAAG,KAAK,EAChB,OAAoB,EAAE;QAEtB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjE;IAEO,gBAAgB,CAAC,IAAY,EAAE,IAAiB,EAAE,OAAiB;QACvE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CACjD,IAAI,EACJ,IAAI,EACJ,UAAU,CAAC,eAAe,CAC7B,CAAC;QACF,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;YACb,UAAU,GAAG,IAAI,mBAAmB,CAChC,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,EACV,OAAO,CACV,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;gBAC9C,MAAM,IAAI,KAAK,CAAC,eAAe,mBAAmB,gCAAgC,CAAC,CAAC;aACvF;SACJ;QACD,OAAO,UAAU,CAAC;KACrB;IAEO,UAAU,CAAC,IAAY,EAAE,IAAiB;QAC9C,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE;YACb,UAAU,GAAG,IAAI,aAAa,CAC1B,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,CACb,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;gBACxC,MAAM,IAAI,KAAK,CAAC,eAAe,WAAW,0BAA0B,CAAC,CAAC;aACzE;SACJ;QACD,OAAO,UAAU,CAAC;KACrB;IAEO,cAAc,CAAC,IAAY,EAAE,IAAiB;QAClD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACzF,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;YACb,UAAU,GAAG,IAAI,iBAAiB,CAC9B,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EAAE,EACvB,UAAU,CACb,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE;gBAC5C,MAAM,IAAI,KAAK,CAAC,eAAe,iBAAiB,8BAA8B,CAAC,CAAC;aACnF;SACJ;QACD,OAAO,UAAU,CAAC;KACrB;IAED,aAAa;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;KACzC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;KAC7C;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;KAC/C;IAEO,SAAS,CAAC,IAAiB,EAAE,QAAiB;QAClD,IAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;KACzD;IAEO,oBAAoB,CACxB,SAAiB,EACjB,IAAiB,EACjB,UAAsB;QAGtB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aAC/B,IAAI,EAAE;aACN,MAAM,CAAC,CAAC,IAAiB,EAAE,IAAY;YACpC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;SACf,EAAE,EAAE,CAAC,CAAC;QACX,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAClF,OAAO;YACH,GAAG;YACH,UAAU;SACb,CAAC;KACL;;;MCnJQ,SAAS;IAClB,YACoB,IAAY,EACZ,QAAiB,EAChB,cAAyB;QAF1B,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAS;QAChB,mBAAc,GAAd,cAAc,CAAW;KAC1C;IACJ,YAAY;QACR,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;;;AC0CL,MAAM,wBAAwB,GAAW,SAAS,CAAC;AACnD,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,MAAM,mBAAmB,GAAG;IACxB,aAAa,EAAE,YAAY;CAC9B,CAAC;AACF,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAE7E,mBAAmB;IAU5B,YAA6B,QAAqB,EAAmB,KAAa;QAArD,aAAQ,GAAR,QAAQ,CAAa;QAAmB,UAAK,GAAL,KAAK,CAAQ;QAPjE,+BAA0B,GACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,6BAAwB,GACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAKrC,KAAK,MAAM,YAAY,IAAI,wBAAwB,EAAE;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBACvC,MAAM,IAAI,KAAK,CAAC,+CAA+C,YAAY,GAAG,CAAC,CAAC;aACnF;SACJ;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC;YAC5B,SAAS,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;SAC5D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpC,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAACA,MAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,oBAAoB,GAAG,iBAAiB;cACvC,iBAAiB,CAAC,mBAAmB,CAAC;cACtC,uBAAuB,CAAC;KACjC;IAES,YAAY;QAClB,OAAO,IAAI,WAAW,CAClB,IAAI,CAAC,IAAI,EACT,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,mBAAmB,CAAC,cAAc,CACpE,CAAC;KACL;IAEO,eAAe,CAAC,SAAS,GAAG,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;KACvF;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAWS,gBAAgB,CACtB,gBAAiC,EACjC,QAAyB,EACzB,UAAU,GAAG,KAAK;QAElB,IAAI,UAAkB,CAAC;QACvB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;YACtC,UAAU,GAAGA,MAAY,CAAC;YAC1B,IAAI,gBAAgB,EAAE;gBAClB,QAAQ,GAAG;oBACP,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC;iBACjE,CAAC;aACL;iBAAM;gBACH,QAAQ,GAAG,SAAS,CAAC;aACxB;SACJ;aAAM;YACH,UAAU,GAAG,gBAAgB,CAAC;SACjC;QAED,OAAO,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;KACnE;IAEO,kBAAkB,CAAC,OAAoB;;QAC3C,QACI,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,0CAAE,MAAM,mCACvC,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,CAAC,MAAM,EACzD;KACL;IAQD,GAAG,CAAC,gBAAiC,EAAE,QAA0B,EAAE,OAAoB;QACnF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACvC,OAAO,CAAC,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEtE,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE;gBACtB,IAAI,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,MAAM,EAClB,WAAW,CAAC,OAAO,EACnB,SAAS,EACT,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CACnC,CAAC;aACL;SACJ,CAAC,CAAC;KACN;IAES,YAAY,CAClB,UAAkB,EAClB,MAAc,EACd,IAAqB,EACrB,SAAiB,EACjB,MAAe;QAEf,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,UAAU,GAAuB,IAAI,CAAC,uBAAuB,CAC/D,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CACnC,CAAC;QACF,MAAM,WAAW,GAAuB,IAAI,CAAC,uBAAuB,CAChE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CACpC,CAAC;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CACvB,UAAU,EACV,MAAM,EACN,IAAI,EACJ,SAAS,EACT,MAAM,EACN,WAAW,EACX,UAAU,CACb,CAAC;KACL;IAED,KAAK,CACD,KAAc,EACd,gBAAkC,EAClC,QAA0B,EAC1B,OAAoB;QAEpB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;gBACnE,QAAQ;gBACR,QAAQ;aACX,CAAC,CAAC;YACH,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAW,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SAC7E,CAAC,CAAC;KACN;IAES,cAAc,CACpB,GAAY,EACZ,gBAAkC,EAClC,QAA0B,EAC1B,UAAmB,EACnB,cAAuB;QAEvB,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAE7C,IAAIC,OAAY,CAAC;QACjB,IAAI,GAAG,YAAY,KAAK,EAAE;YACtBA,OAAK,GAAG,GAAG,CAAC;SACf;aAAM;YACH,IAAI,GAAW,CAAC;YAChB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;gBACzE,GAAG,GAAG,SAAS,CAAC;aACnB;iBAAM;gBACH,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;aACxB;YACDA,OAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;SAC1B;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE5E,MAAM,SAAS,GAAc;YACzB,IAAI,EAAEA,OAAK,CAAC,IAAI;YAChB,OAAO,EAAEA,OAAK,CAAC,OAAO;YACtB,KAAK,EAAEA,OAAK,CAAC,KAAK;YAClB,WAAW;YACX,UAAU;SACb,CAAC;QAEF,OAAO,IAAI,CAAC,YAAY,CACpB,IAAI,CAAC,IAAI,EACTC,KAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,CACjB,CAAC;KACL;IAED,aAAa,CAAC,IAAY,EAAE,OAAoB;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;;YAC/B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,IAAI,OAA+B,CAAC;YAEpC,MAAM,MAAM,GAAW,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,0CAAE,MAAM,CAAC;YAC/D,IAAI,MAAM,EAAE;gBACR,OAAO,GAAG;oBACN,MAAM;oBACN,qBAAqB,EAAE,OAAO,CAAC,sBAAsB,CAAC,qBAAqB;iBAC9E,CAAC;aACL;iBAAM;gBAEH,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,CAAC;aAC9D;YACD,MAAM,QAAQ,GAAa,IAAI,YAAY,CACvC,IAAI,EACJ,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,wBAAwB,EAC7B,wBAAwB,EACxB,SAAS,EACT,OAAO,CAAC,qBAAqB,CAChC,CAAC;YACF,OAAO,QAAQ,CAAC;SACnB,EAAE,YAAY,CAAC,CAAC;KACpB;IAES,gBAAgB,CAAC,MAAsB;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1F,OAAO;YACH,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa;YACpD,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW;YACX,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;SAC1C,CAAC;KACL;IAEO,mBAAmB,CAAC,MAAsB;QAC9C,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,OAAO;SACV;QACD,MAAM,YAAY,GAAiB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KACzE;IAES,YAAY,CAClB,YAA0B,EAC1B,cAAsB,EACtB,MAAe;QAEf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAEC,QAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;KACtF;IAEO,oBAAoB,CAAC,KAAc,EAAE,MAAsB;QAC/D,IAAI,CAAC,cAAc,CACf,KAAK,EACL,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,MAAM,CAChB,CAAC;KACL;IAEO,uBAAuB,CAAC,QAAyB;QACrD,MAAM,OAAO,GAAuB,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE,KAAI,SAAS,CAAC;QACxE,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SACtD;QACD,OAAO,OAAO,CAAC;KAClB;IAED,QAAQ,CACJ,KAAY,EACZ,SAAyC,EACzC,gBAAkC,EAClC,QAA0B,EAC1B,OAA4B;QAE5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAEnC,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YAE5D,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAEzE,IAAI,WAAW,CAAC;YAChB,IAAI,SAAS,YAAY,WAAW,EAAE;gBAClC,WAAW,GAAG,SAAS,CAAC;aAC3B;iBAAM;gBACH,SAAS,GAAG,SAA6B,CAAC;gBAG1C,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,YAAY,WAAW,EAAE;oBACtE,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;iBACzC;qBAAM;oBACH,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;iBACnD;aACJ;YAED,MAAM,WAAW,GAAuB,IAAI,CAAC,gBAAgB,CACzD,gBAAgB,EAChB,QAAQ,EACR,IAAI,CACP,CAAC;YAEF,MAAM,MAAM,GAAW,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAExD,QAAQ,KAAK,CAAC,IAAI;gBACd,KAAK,OAAO,EAAE;oBACV,MAAM,UAAU,GAAG,KAAmB,CAAC;oBAIvC,MAAM,GAAG,GAA0B,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;oBACnE,IAAI,GAAG,EAAE;wBACL,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;qBACpC;oBAED,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;oBAErE,MAAM,iBAAiB,GACnB,eAAe,CAAC,wBAAwB,CACpC,cAAc,EACd,WAAW,EACX,WAAW,CACd,CAAC;oBACN,iBAAiB,CAAC,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;oBAElD,IAAI,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,EACTC,kBAAuB,EACvB,iBAAiB,EACjB,KAAK,EACL,MAAM,CACT,CAAC;oBACF,MAAM;iBACT;gBACD;oBACI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;aAC/C;SACJ,CAAC,CAAC;KACN;IAED,gBAAgB,CACZ,SAAiB,EACjB,SAAS,GAAG,CAAC,EACb,QAAQ,GAAG,KAAK,EAChB,OAAoB,EAAE;QAEtB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;gBAC/B,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;iBACZ,CAAC,CAAC;aACN,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SACxE,CAAC,CAAC;KACN;IAED,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAoB,EAAE;QACjF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;gBAC/B,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;iBACZ,CAAC,CAAC;aACN,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC9D,CAAC,CAAC;KACN;IAED,WAAW,CACP,SAAiB,EACjB,KAAa,EACb,UAAoB,EAAE,EACtB,QAAQ,GAAG,KAAK,EAChB,OAAoB,EAAE;QAEtB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC9E,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;YACrF,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;gBAClC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,qBAAqB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aACjF,CAAC,CAAC;YACH,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;gBAC/B,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC7D,QAAQ;oBACR,QAAQ;oBACR,SAAS;iBACZ,CAAC,CAAC;aACN,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SACxE,CAAC,CAAC;KACN;IAEO,YAAY,CAAC,MAAc,EAAE,IAAqB;QACtD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,QAA2B,CAAC;QAChC,IAAI,gBAAoC,CAAC;QACzC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAIjE,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAC5B,gBAAgB,CAAC,MAAM,EACvB,gBAAgB,CAAC,OAAO,EACxB,IAAI,CACP,CAAC;YACF,IAAI,CAAC,yBAAyB,CAC1B,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAC/C,gBAAgB,CAAC,OAAO,EACxB,QAAQ,CACX,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAChC;QAED,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE/E,IAAI,gBAAgB,KAAK,SAAS,EAAE;YAEhC,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC;SACvC;KACJ;IAEO,yBAAyB,CAC7B,QAAgB,EAChB,IAAqB,EACrB,QAA2B;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEvB,IACI,EAAE,CAAC,SAAS,KAA0C;gBACtD,EAAE,CAAC,SAAS,KAAuC,EACrD;gBACE,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,EAAE,CAAC,SAAS,KAA0C,EAAE;oBACxD,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;iBACjE;qBAAM;oBACH,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;iBAC3C;aACJ;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC3C;SACJ;KACJ;IAGO,eAAe,CAAC,IAAqB,EAAE,MAAgB;QAC3D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAChB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;IAED,aAAa;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC5E;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAChF;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAClF;IAED,oBAAoB,CAAC,QAA2B;QAC5C,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KAChD;IAED,QAAQ,CAAI,IAAY,EAAE,OAA6B,EAAE,OAA4B;;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI;YACA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;SACvB;QAAC,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,0CAAE,MAAM,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,0CAAE,OAAO,CAAC,CAAC;YAC9E,MAAM,GAAG,CAAC;SACb;gBAAS;YACN,GAAG,CAAC,IAAI,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,MAAM,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,OAAO,CAAC,CAAC;SACzE;KACJ;IAED,MAAM,aAAa,CACf,IAAY,EACZ,OAAsC,EACtC,OAA4B;;QAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI;YACA,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;SAC7B;QAAC,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,0CAAE,MAAM,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,0CAAE,OAAO,CAAC,CAAC;YAC9E,MAAM,GAAG,CAAC;SACb;gBAAS;YACN,GAAG,CAAC,IAAI,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,MAAM,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,OAAO,CAAC,CAAC;SACzE;KACJ;;AAlhByB,kCAAc,GAAG,oBAAoB;;MCrDtD,gBAAiB,SAAQ,YAAY;IAC9C,YACI,IAAY,EACZ,SAAyB,EACzB,OAAwB,EACxB,MAAe,EACf,UAAoB;QAEpB,KAAK,CACD,IAAI,EACJ,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,EACtC,UAAU,CACb,CAAC;KACL;IAGD,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAES,UAAU,CAAC,UAAkB,EAAE,QAAyB;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,OAAO,MAAM,CAAC;KACjB;;;ACnCL,MAAM,MAAM,GAAW,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,gBAAgB;IAClB,KAAK;QACD,OAAO,MAAM,CAAC;KACjB;IACD,SAAS;QACL,OAAO,SAAS,CAAC;KACpB;IAED,KAAK,MAAW;IAGhB,IAAI,MAAW;IAGf,OAAO,MAAW;IAGlB,SAAS,MAAW;IAEpB,YAAY;QACR,OAAO,KAAK,CAAC;KAChB;IACD,eAAe,CAAC,SAAgC;QAC5C,OAAO,EAAE,CAAC;KACb;IACD,iBAAiB;QACb,OAAO,SAAS,CAAC;KACpB;IACD,gBAAgB;QACZ,OAAO,SAAS,CAAC;KACpB;IACD,eAAe;QACX,OAAO,SAAS,CAAC;KACpB;CACJ;AAEM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;;MC7BxD,sBAAuB,SAAQ,mBAAmB;IAM3D,YAAY,QAAqB,EAAE,KAAa,EAAmB,WAAoB;QACnF,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QADwC,gBAAW,GAAX,WAAW,CAAS;QAHtE,mCAA8B,GAC3C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAI1C;IAED,iBAAiB,CAAC,IAAY,EAAE,MAAe,EAAE,SAAmB;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAC/B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEtC,MAAM,eAAe,GAAG,IAAI,gBAAgB,CACxC,IAAI,EACJ,IAAI,CAAC,8BAA8B,EACnC,IAAI,CAAC,wBAAwB,EAC7B,MAAM,EACN,SAAS,CACZ,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE;oBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;oBACnD,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;oBACrC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;iBACzC;gBACD,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC;aAC9C;YAED,OAAO,eAA+B,CAAC;SAC1C,EAAE,gBAAgB,CAAC,CAAC;KACxB;IAEO,sBAAsB,CAAC,MAAsB;QACjD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,OAAO;SACV;QAED,MAAM,YAAY,GAAiB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;KACxC;IAES,gBAAgB,CAAC,MAAsB;QAC7C,MAAM,YAAY,GAAiB,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClE,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,OAAO,YAAY,CAAC;KACvB;IAED,uBAAuB;;QACnB,OAAO,MAAA,IAAI,CAAC,mBAAmB,0CAAE,KAAK,EAAE,CAAC;KAC5C;IAED,2BAA2B;;QACvB,OAAO,MAAA,IAAI,CAAC,mBAAmB,0CAAE,YAAY,EAAE,CAAC;KACnD;IAES,YAAY;QAClB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;KACtD;;;ACtEL,MAAM,SAAS,GAAG,CAAC,CAAC;MAEP,qBAAqB;IAO9B,YAAY,eAAgC,EAAE,QAAkB;QAJxD,aAAQ,GAAG,KAAK,CAAC;QAER,wBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAGjE,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAC5D,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC5B;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;KACJ;IAED,UAAU;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACzB;KACJ;IAED,gBAAgB,CAAC,KAAiB;QAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;IAEO,aAAa,CAAC,KAAiB;QACnC,IAAI,YAAY,GAAkB,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC7E,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAEvC,YAAY,GAAI,KAAa,CAAC,IAAI,CAAC;SACtC;QACD,MAAM,SAAS,GAAgB,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEtE,IAAI,SAAS,EAAE;YAEX,UAAU,CAAC;gBACP,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;oBAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;wBACxD,KAAK,EAAE,IAAI;qBACd,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN;KACJ;IAEO,mBAAmB,CAAC,IAAmB;QAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/E,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,QAAQ,EAAE;gBACzC,OAAO,cAAc,CAAC;aACzB;YACD,IAAI,OAAO,KAAK,OAAO,EAAE;gBACrB,MAAM,YAAY,GAAG,cAAkC,CAAC;gBACxD,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;oBACnE,OAAO,YAAY,CAAC;iBACvB;aACJ;SACJ;QACD,OAAO,SAAS,CAAC;KACpB;;;ACnDL,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,uCAAuC,GAAG,wBAAwB,GAAG,aAAa,CAAC,MAAM,CAAC;MAEnF,WAAW;IAAxB;QACqB,mBAAc,GAAG,IAAI,GAAG,EAAgB,CAAC;QACzC,iBAAY,GAAG,IAAI,GAAG,EAAwD,CAAC;QAC/E,iBAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,cAAS,GAAG,CAAC,CAAC;QAMd,gCAA2B,GAAG,IAAI,GAAG,EAAgB,CAAC;QACtD,0BAAqB,GAAG,IAAI,GAAG,EAAwB,CAAC;QAExD,wBAAmB,GAAG,KAAK,CAAC;QAC5B,YAAO,GAAkB,EAAE,CAAC;QACnB,4BAAuB,GAAG,IAAI,GAAG,EAAqB,CAAC;KA2P3E;IAzPG,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IACD,IAAI,mBAAmB,CAAC,QAAyB;QAC7C,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;KACxC;IAED,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IACD,IAAI,kBAAkB,CAAC,QAAyB;QAC5C,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;KACvC;IAED,WAAW,CAAC,IAAY,EAAE,OAAgC;QACtD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC/E;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE;YACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,mBAAmB,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,CACvC,IAAI,EACJ,IAAI,EACJ,OAAO,IAAI,OAAO,CAAC,2BAA2B,CACjD,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,mBAAmB,GAAG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;QAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAChD,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAChE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACtD,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACtE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1D,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5D,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;YACpE,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9E,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACtD,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAEhE,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACxE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3D,CAAC;KACL;IAED,kBAAkB,CAAC,IAAY;QAC3B,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE;YAExC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,uCAAuC,CAAC,GAAG,aAAa,CAAC;SAClF;QACD,IAAI,KAAK,GAAiD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACtC;aAAM,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,4BAA4B,CAAC,CAAC;SACjF;QACD,OAAO,KAAK,CAAC;KAChB;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAChD;IAGD,MAAM,CACF,UAAkB,EAClB,MAAc,EACd,IAAqB,EACrB,SAAiB,EACjB,MAAc,EACd,WAA+B,EAC/B,UAA8B;QAE9B,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1D,cAAc,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAY;YACrB,SAAS;YACT,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,cAAc;YACd,UAAU;YACV,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS;YACjE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,SAAS;YAC9D,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE;SAC9C,CAAC;QAEF,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAE1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;SACrE;QAED,MAAM,kBAAkB,GAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAC7E,CAAC,SAAuB,KACpB,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC;YAChD,EAAE,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAC5E,CAAC;QAEF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE;gBAExC,MAAM,SAAS,GAAoB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,QAAQ,GAAW,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAEtE,IAAI;oBACA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;oBAE9C,IAAI,QAAQ,GAAG,CAAC,EAAE;wBACd,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;qBAC3D;iBACJ;gBAAC,OAAO,GAAG,EAAE;oBACV,QAAQ,IAAI,CAAC,CAAC;oBAEd,IAAI,QAAQ,IAAI,WAAW,CAAC,sBAAsB,EAAE;wBAChD,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAChD,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,KAAK,CAAC,EAAE;4BACrE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBAC7B;qBACJ;yBAAM;wBACH,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;qBAGvD;iBACJ;aACJ;SACJ;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,gBAAgB;QACZ,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,eAAe;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IAED,gCAAgC;;QAC5B,OAAO;YACH,MAAM,EAAE,MAAA,IAAI,CAAC,SAAS,0CAAE,uBAAuB,EAAE;YACjD,qBAAqB,EAAE,MAAA,IAAI,CAAC,SAAS,0CAAE,2BAA2B,EAAE;SACvE,CAAC;KACL;IAED,oBAAoB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;SACvF;QACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KACrC;IAED,sBAAsB;QAClB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;YAEpC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;SACtC;KACJ;IAED,oBAAoB,CAAC,SAAuB,EAAE,OAA6B;QACvE,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACpC,OAAO;SACV;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7C,IACI,CAAC,CAAC,SAAS,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;YACrE,OAAO;YACP,OAAO,CAAC,WAAW,EACrB;YACE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC5B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;aACxD;SACJ;KACJ;IAED,wBAAwB,CAAC,SAA2B;QAChD,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SACjE;QACD,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;YAC5C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;SACjE,CAAC,CAAC;KACN;IAEO,gBAAgB;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,aAAa,EAAE,CACxB,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KAC1D;IAEO,oBAAoB;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,iBAAiB,EAAE,CAC5B,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KAC1D;IAEO,sBAAsB;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAC/D,KAAK,CAAC,mBAAmB,EAAE,CAC9B,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KAC1D;IAED,oBAAoB,CAAC,QAA2B;QAC5C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC9C;IAED,mBAAmB,CAAC,MAAc;QAC9B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI;gBACA,QAAQ,CAAC,MAAM,CAAC,CAAC;aACpB;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;oBACvB,MAAM,GAAG,CAAC;iBACb;aACJ;SACJ;KACJ;;AA7Pc,kCAAsB,GAAG,CAAC;;ACnC7C,MAAM,KAAK;IAIP,IAAY,YAAY;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;SACrC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAEM,uBAAuB,CAC1B,IAAY,EACZ,OAAgC;QAEhC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE;YAG5C,OAAO,CAAC,cAAc,EAAE,CAAC;SAC5B;QACD,MAAM,MAAM,GAA2B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpF,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;SACnE;QACD,OAAO,MAAM,CAAC;KACjB;IAEM,kBAAkB,CAAC,IAAa;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KACrD;CACJ;AACD,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;MACpB,uBAAuB,GAAG,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE;MACpE,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE;MAC1D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;;MCnCzB,UAAU;IAQnB,YACoB,IAAY,EAC5B,YAAoB,EACH,aAA+B,EAC/B,iBAAmC;QAHpC,SAAI,GAAJ,IAAI,CAAQ;QAEX,kBAAa,GAAb,aAAa,CAAkB;QAC/B,sBAAiB,GAAjB,iBAAiB,CAAkB;QAXhD,eAAU,GAAG,CAAC,CAAC;QACf,UAAK,GAAG,IAAI,CAAC;QAYjB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;KAClC;IAXD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC;KACvD;IAWD,GAAG;QACC,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;SACxB;KACJ;IACD,IAAI;QACA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,IAAI,CAAC,aAAa,EAAE,CAAC;iBACxB;aACJ;iBAAM;gBACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC5B;SACJ;KACJ;;;ACrBL,MAAM,mBAAmB,GAAG,GAAG,CAAC;MAanB,gBAAgB;IAWzB,YAAY,OAA6B;QAVxB,WAAM,GAAoB,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC7D,aAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;QAClD,eAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC7C,kBAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;QACjD,kBAAa,GAAW,mBAAmB,CAAC;QAC5C,gBAAW,GAAG,IAAI,KAAK,EAAmB,CAAC;QAC3C,oBAAe,GAAG,IAAI,KAAK,EAAuB,CAAC;QAE5D,sBAAiB,GAAG,CAAC,CAAC;QAG1B,IACI,OAAO,CAAC,wBAAwB,CAC5B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EACrB,sBAAsB,EACtB,QAAQ,CACX,EACH;YACE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;SAC7C;KACJ;IAED,2BAA2B,CAAC,QAA8B;QACtD,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;SACpD;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAEO,eAAe,CAAC,MAAkB;QAEtC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnC;KACJ;IAED,yBAAyB,CAAC,IAAY;QAClC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAiB;YACzB,IAAI,MAAM;gBACN,OAAO,MAAM,CAAC,MAAM,CAAC;aACxB;YACD,IAAI,EAAE;gBACF,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAChC;SACJ,CAAC;QAEF,OAAO,MAAM,CAAC;KACjB;IAED,wBAAwB,CAAC,IAAY,EAAE,iBAAiB,GAAG,CAAC;QACxD,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACjC,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YAE1E,IACI,iBAAiB,GAAG,CAAC;gBACrB,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,KAAK,iBAAiB,EAClE;gBAEE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;aAC3E;SACJ;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAgB;YACxB,IAAI,MAAM;gBACN,OAAO,MAAM,CAAC,MAAM,CAAC;aACxB;YACD,GAAG,EAAE;gBACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;oBACpC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;iBACxB;gBACD,MAAM,CAAC,GAAG,EAAE,CAAC;aAChB;YACD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC;QACF,OAAO,MAAM,CAAC;KACjB;IAED,wBAAwB,CAAC,IAAY,EAAE,aAA4B;QAC/D,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KAC/C;IAEO,SAAS,CAAC,IAAY,EAAE,iBAAyB;QACrD,MAAM,MAAM,GAAG,IAAI,UAAU,CACzB,IAAI,EACJ,iBAAiB,EACjB;YAEI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;YACvD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB,EACD;YAEI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,WAAW,CAAC,WAAW,MAAM,CAAC,IAAI,2BAA2B,CAAC,CAAC;SAC1E,CACJ,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,IAAI;YACJ,KAAK,EAAE,iBAAiB,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,SAAS;YACjE,GAAG,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;KACjB;IAEO,mBAAmB;QACvB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;KAClE;IAEO,oBAAoB;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK;YACpD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI;gBACA,OAAO,aAAa,EAAE,CAAC;aAC1B;YAAC,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC;aAChB;SACJ,CAAC,CAAC;QAEH,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;KACvC;IAEO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAEvB,OAAO;SACV;QAKD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC/C;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAU5B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;gBACvC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;oBACvC,IAAI,CAAC,WAAW,EAAE,CAAC;iBACtB,EAAE,EAAE,CAAC,CAAC;aACV,EAAE,CAAC,CAAC,CAAC;SACT;KACJ;IAEO,WAAW;QACf,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC5B,MAAM,YAAY,GAAW,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzD,IAAI,YAAY,KAAK,SAAS,EAAE;gBAE5B,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBACvC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;oBACvC,IAAI,CAAC,WAAW,EAAE,CAAC;iBACtB,EAAE,EAAE,CAAC,CAAC;aACV;iBAAM;gBAEH,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAKrE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAExB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEtD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;aACnE;SACJ;KACJ;IAEO,mBAAmB,CAAC,IAAY;QACpC,MAAM,SAAS,GAAwB,IAAI,CAAC,eAAe,CAAC,MAAM;cAC5D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;cACrD,SAAS,CAAC;QAEhB,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,IAAI,EAAE;YAC1B,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;SACxB;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACtB,IAAI;gBACJ,KAAK,EAAE,CAAC;aACX,CAAC,CAAC;SACN;KACJ;IAEO,MAAM,CACV,SAAiC,EACjC,WAAmB,EACnB,UAAkC,EAClC,cAA0C;QAE1C,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE;YACnC,MAAM,OAAO,GAAuB,IAAI,CAAC,UAAU,CAC/C,WAAW,EACX,SAAS,CAAC,MAAM,EAChB,UAAU,EACV,cAAc,CACjB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAACC,oBAAwB,EAAE,OAAO,CAAC,CAAC;SACtD;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACnC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YACjD,IAAI;gBACA,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnB;YAAC,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,KAAK,EAAE,CAAC,CAAC;gBAC3C,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aAC1B;SACJ;KACJ;IAED,SAAS;QACL,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;QACvC,MAAM,WAAW,GACb,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QAEhF,MAAM,YAAY,GAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aAC3E,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,MAAM;YACT,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACf,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YACjB,GAAG,EAAE,OAAO;SACf,CAAC,CAAC,CAAC;QACR,OAAO,IAAI,CAAC,UAAU,CAClB,WAAW,EACX,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,EACrC,IAAI,CAAC,eAAe,CACvB,CAAC;KACL;IAEO,UAAU,CACd,WAAmB,EACnB,aAAqB,EACrB,UAAkC,EAClC,cAA0C;QAE1C,MAAM,aAAa,GAAG,UAAU;aAC3B,GAAG,CAAC,CAAC,CAAC,MAAM;YACT,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK;SAC5B,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW;YACX,aAAa;YACb,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;YACtC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YAC3C,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YACnD,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YAC5C,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;SACjD,CAAC;KACL;;;ACtTL,MAAM,UAAU,GAAa;IACzB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,WAAW;IACrB,iBAAiB,EAAE,gBAAgB;IACnC,UAAU,EAAE,YAAY;CAC3B,CAAC;AACF,MAAM,QAAQ,GAAa;IACvB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,OAAO;IACjB,iBAAiB,EAAE,OAAO;IAC1B,UAAU,EAAE,OAAO;CACtB,CAAC;AACF,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,cAAc,GAAG,WAAW,CAAC;MAEtB,gBAAgB;IACzB,YAAY,WAAyB;QACjC,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;SAC9C;KACJ;IAED,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAE,OAAgB;QAC3D,IAAI,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;QAC1B,IAAI,MAAM,CAAC,SAAS,KAAK,oBAAoB,EAAE;YAC3C,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;YACpB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;YAC9C,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;SACvD;aAAM;YACH,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC1C;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KACnD;IAEO,IAAI,CACR,KAAa,EACb,KAAe,EACf,MAAgB,EAChB,QAAgB,YAAY,EAC5B,UAAkB,cAAc;QAEhC,MAAM,GAAG,GAAG,SAAS,KAAK,qBAAqB,OAAO,EAAE,CAAC;QAEzD,OAAO,CAAC,GAAG,CACP,YAAY,KAAK,EAAE,EACnB,uDAAuD,EACvD,GAAG,EACH,KAAK,IAAI,EAAE,EACX,MAAM,IAAI,EAAE,CACf,CAAC;KACL;;;MCvDQ,OAAO,GAAG;;MCGV,YAAY,GAAiB,IAAI,gBAAgB,CAAC;IAC3D,YAAY,EAAE,GAAG;CACpB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const version = "242.3.3";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const version = "242.3.3";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const version = "242.3.3";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const version = "242.3.3";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const version = "242.3.3";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const version = "242.3.3";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "o11y",
|
|
3
|
-
"version": "242.
|
|
3
|
+
"version": "242.3.3",
|
|
4
4
|
"description": "O11y Client-Side Instrumentation & Observability Library",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"exports": {
|
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
"o11y/client",
|
|
84
84
|
"o11y/collectors",
|
|
85
85
|
"o11y/core_envelope",
|
|
86
|
+
"o11y/shared",
|
|
86
87
|
"o11y/simple_collector",
|
|
87
88
|
"o11y/web_vitals"
|
|
88
89
|
]
|