Files
e-tib.com/.next/dev/server/vendor-chunks/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1.js
Marc Mintel d14122005d Initial commit: E-TIB production hardening & E2E foundation
Former-commit-id: ef04fca3d76375630c05aac117bf586953f3b657
2026-04-28 19:11:38 +02:00

155 lines
235 KiB
JavaScript

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
exports.id = "vendor-chunks/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1";
exports.ids = ["vendor-chunks/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1"];
exports.modules = {
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js ***!
\****************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst core_1 = __webpack_require__(/*! @opentelemetry/core */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+core@2.6.1_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/core/build/esm/index.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js\");\nconst semconv_obsolete_1 = __webpack_require__(/*! ../src/semconv-obsolete */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js\");\nconst types_1 = __webpack_require__(/*! ./types */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js\");\nconst utils_1 = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js\");\nconst supportedVersions = ['>=0.5.5 <1'];\nclass AmqplibInstrumentation extends instrumentation_1.InstrumentationBase {\n _netSemconvStability;\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...types_1.DEFAULT_CONFIG, ...config });\n this._setSemconvStabilityFromEnv();\n }\n // Used for testing.\n _setSemconvStabilityFromEnv() {\n this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n setConfig(config = {}) {\n super.setConfig({ ...types_1.DEFAULT_CONFIG, ...config });\n }\n init() {\n const channelModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/channel_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n const callbackModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/callback_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n const connectModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/connect.js', supportedVersions, this.patchConnect.bind(this), this.unpatchConnect.bind(this));\n const module = new instrumentation_1.InstrumentationNodeModuleDefinition('amqplib', supportedVersions, undefined, undefined, [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]);\n return module;\n }\n patchConnect(moduleExports) {\n moduleExports = this.unpatchConnect(moduleExports);\n if (!(0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n }\n return moduleExports;\n }\n unpatchConnect(moduleExports) {\n if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n this._unwrap(moduleExports, 'connect');\n }\n return moduleExports;\n }\n patchChannelModel(moduleExports, moduleVersion) {\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n this._wrap(moduleExports.Channel.prototype, 'publish', this.getPublishPatch.bind(this, moduleVersion));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n this._wrap(moduleExports.Channel.prototype, 'consume', this.getConsumePatch.bind(this, moduleVersion));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n this._wrap(moduleExports.Channel.prototype, 'ack', this.getAckPatch.bind(this, false, types_1.EndOperation.Ack));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n this._wrap(moduleExports.Channel.prototype, 'nack', this.getAckPatch.bind(this, true, types_1.EndOperation.Nack));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n this._wrap(moduleExports.Channel.prototype, 'reject', this.getAckPatch.bind(this, true, types_1.EndOperation.Reject));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n this._wrap(moduleExports.Channel.prototype, 'ackAll', this.getAckAllPatch.bind(this, false, types_1.EndOperation.AckAll));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n this._wrap(moduleExports.Channel.prototype, 'nackAll', this.getAckAllPatch.bind(this, true, types_1.EndOperation.NackAll));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n this._wrap(moduleExports.Channel.prototype, 'emit', this.getChannelEmitPatch.bind(this));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n this._wrap(moduleExports.ConfirmChannel.prototype, 'publish', this.getConfirmedPublishPatch.bind(this, moduleVersion));\n }\n return moduleExports;\n }\n unpatchChannelModel(moduleExports) {\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n this._unwrap(moduleExports.Channel.prototype, 'publish');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n this._unwrap(moduleExports.Channel.prototype, 'consume');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n this._unwrap(moduleExports.Channel.prototype, 'ack');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n this._unwrap(moduleExports.Channel.prototype, 'nack');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n this._unwrap(moduleExports.Channel.prototype, 'reject');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n this._unwrap(moduleExports.Channel.prototype, 'emit');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n }\n return moduleExports;\n }\n getConnectPatch(original) {\n const self = this;\n return function patchedConnect(url, socketOptions, openCallback) {\n return original.call(this, url, socketOptions, function (err, conn) {\n if (err == null) {\n const urlAttributes = (0, utils_1.getConnectionAttributesFromUrl)(url, self._netSemconvStability);\n const serverAttributes = (0, utils_1.getConnectionAttributesFromServer)(conn);\n conn[utils_1.CONNECTION_ATTRIBUTES] = {\n ...urlAttributes,\n ...serverAttributes,\n };\n }\n openCallback.apply(this, arguments);\n });\n };\n }\n getChannelEmitPatch(original) {\n const self = this;\n return function emit(eventName) {\n if (eventName === 'close') {\n self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelClosed, undefined);\n const activeTimer = this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER];\n if (activeTimer) {\n clearInterval(activeTimer);\n }\n this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n }\n else if (eventName === 'error') {\n self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelError, undefined);\n }\n return original.apply(this, arguments);\n };\n }\n getAckAllPatch(isRejected, endOperation, original) {\n const self = this;\n return function ackAll(requeueOrEmpty) {\n self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n return original.apply(this, arguments);\n };\n }\n getAckPatch(isRejected, endOperation, original) {\n const self = this;\n return function ack(message, allUpToOrRequeue, requeue) {\n const channel = this;\n // we use this patch in reject function as well, but it has different signature\n const requeueResolved = endOperation === types_1.EndOperation.Reject ? allUpToOrRequeue : requeue;\n const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n const msgIndex = spansNotEnded.findIndex(msgDetails => msgDetails.msg === message);\n if (msgIndex < 0) {\n // should not happen in happy flow\n // but possible if user is calling the api function ack twice with same message\n self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n }\n else if (endOperation !== types_1.EndOperation.Reject && allUpToOrRequeue) {\n for (let i = 0; i <= msgIndex; i++) {\n self.endConsumerSpan(spansNotEnded[i].msg, isRejected, endOperation, requeueResolved);\n }\n spansNotEnded.splice(0, msgIndex + 1);\n }\n else {\n self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n spansNotEnded.splice(msgIndex, 1);\n }\n return original.apply(this, arguments);\n };\n }\n getConsumePatch(moduleVersion, original) {\n const self = this;\n return function consume(queue, onMessage, options) {\n const channel = this;\n if (!Object.prototype.hasOwnProperty.call(channel, utils_1.CHANNEL_SPANS_NOT_ENDED)) {\n const { consumeTimeoutMs } = self.getConfig();\n if (consumeTimeoutMs) {\n const timer = setInterval(() => {\n self.checkConsumeTimeoutOnChannel(channel);\n }, consumeTimeoutMs);\n timer.unref();\n channel[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n }\n channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n }\n const patchedOnMessage = function (msg) {\n // msg is expected to be null for signaling consumer cancel notification\n // https://www.rabbitmq.com/consumer-cancel.html\n // in this case, we do not start a span, as this is not a real message.\n if (!msg) {\n return onMessage.call(this, msg);\n }\n const headers = msg.properties.headers ?? {};\n let parentContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers);\n const exchange = msg.fields?.exchange;\n let links;\n if (self._config.useLinksForConsume) {\n const parentSpanContext = parentContext\n ? api_1.trace.getSpan(parentContext)?.spanContext()\n : undefined;\n parentContext = undefined;\n if (parentSpanContext) {\n links = [\n {\n context: parentSpanContext,\n },\n ];\n }\n }\n const span = self.tracer.startSpan(`${queue} process`, {\n kind: api_1.SpanKind.CONSUMER,\n attributes: {\n ...channel?.connection?.[utils_1.CONNECTION_ATTRIBUTES],\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n [semconv_1.ATTR_MESSAGING_OPERATION]: semconv_obsolete_1.MESSAGING_OPERATION_VALUE_PROCESS,\n [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n },\n links,\n }, parentContext);\n const { consumeHook } = self.getConfig();\n if (consumeHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeHook(span, { moduleVersion, msg }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: consumerHook error', e);\n }\n }, true);\n }\n if (!options?.noAck) {\n // store the message on the channel so we can close the span on ackAll etc\n channel[utils_1.CHANNEL_SPANS_NOT_ENDED].push({\n msg,\n timeOfConsume: (0, core_1.hrTime)(),\n });\n // store the span on the message, so we can end it when user call 'ack' on it\n msg[utils_1.MESSAGE_STORED_SPAN] = span;\n }\n const setContext = parentContext\n ? parentContext\n : api_1.ROOT_CONTEXT;\n api_1.context.with(api_1.trace.setSpan(setContext, span), () => {\n onMessage.call(this, msg);\n });\n if (options?.noAck) {\n self.callConsumeEndHook(span, msg, false, types_1.EndOperation.AutoAck);\n span.end();\n }\n };\n arguments[1] = patchedOnMessage;\n return original.apply(this, arguments);\n };\n }\n getConfirmedPublishPatch(moduleVersion, original) {\n const self = this;\n return function confirmedPublish(exchange, routingKey, content, options, callback) {\n const channel = this;\n const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n const { publishHook } = self.getConfig();\n if (publishHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options: modifiedOptions,\n isConfirmChannel: true,\n }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: publishHook error', e);\n }\n }, true);\n }\n const patchedOnConfirm = function (err, ok) {\n try {\n callback?.call(this, err, ok);\n }\n finally {\n const { publishConfirmHook } = self.getConfig();\n if (publishConfirmHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishConfirmHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options,\n isConfirmChannel: true,\n confirmError: err,\n }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: publishConfirmHook error', e);\n }\n }, true);\n }\n if (err) {\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: \"message confirmation has been nack'ed\",\n });\n }\n span.end();\n }\n };\n // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm.\n // span ends in the patched callback.\n const markedContext = (0, utils_1.markConfirmChannelTracing)(api_1.context.active());\n const argumentsCopy = [...arguments];\n argumentsCopy[3] = modifiedOptions;\n argumentsCopy[4] = api_1.context.bind((0, utils_1.unmarkConfirmChannelTracing)(api_1.trace.setSpan(markedContext, span)), patchedOnConfirm);\n return api_1.context.with(markedContext, original.bind(this, ...argumentsCopy));\n };\n }\n getPublishPatch(moduleVersion, original) {\n const self = this;\n return function publish(exchange, routingKey, content, options) {\n if ((0, utils_1.isConfirmChannelTracing)(api_1.context.active())) {\n // work already done\n return original.apply(this, arguments);\n }\n else {\n const channel = this;\n const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n const { publishHook } = self.getConfig();\n if (publishHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options: modifiedOptions,\n isConfirmChannel: false,\n }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: publishHook error', e);\n }\n }, true);\n }\n // calling normal channel publish function is only storing the message in queue.\n // it does not send it and waits for an ack, so the span duration is expected to be very short.\n const argumentsCopy = [...arguments];\n argumentsCopy[3] = modifiedOptions;\n const originalRes = original.apply(this, argumentsCopy);\n span.end();\n return originalRes;\n }\n };\n }\n createPublishSpan(self, exchange, routingKey, channel, options) {\n const normalizedExchange = (0, utils_1.normalizeExchange)(exchange);\n const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n kind: api_1.SpanKind.PRODUCER,\n attributes: {\n ...channel.connection[utils_1.CONNECTION_ATTRIBUTES],\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n },\n });\n const modifiedOptions = options ?? {};\n modifiedOptions.headers = modifiedOptions.headers ?? {};\n api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), modifiedOptions.headers);\n return { span, modifiedOptions };\n }\n endConsumerSpan(message, isRejected, operation, requeue) {\n const storedSpan = message[utils_1.MESSAGE_STORED_SPAN];\n if (!storedSpan)\n return;\n if (isRejected !== false) {\n storedSpan.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: operation !== types_1.EndOperation.ChannelClosed &&\n operation !== types_1.EndOperation.ChannelError\n ? `${operation} called on message${requeue === true\n ? ' with requeue'\n : requeue === false\n ? ' without requeue'\n : ''}`\n : operation,\n });\n }\n this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n storedSpan.end();\n message[utils_1.MESSAGE_STORED_SPAN] = undefined;\n }\n endAllSpansOnChannel(channel, isRejected, operation, requeue) {\n const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n spansNotEnded.forEach(msgDetails => {\n this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n });\n channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n }\n callConsumeEndHook(span, msg, rejected, endOperation) {\n const { consumeEndHook } = this.getConfig();\n if (!consumeEndHook)\n return;\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeEndHook(span, { msg, rejected, endOperation }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: consumerEndHook error', e);\n }\n }, true);\n }\n checkConsumeTimeoutOnChannel(channel) {\n const currentTime = (0, core_1.hrTime)();\n const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n let i;\n const { consumeTimeoutMs } = this.getConfig();\n for (i = 0; i < spansNotEnded.length; i++) {\n const currMessage = spansNotEnded[i];\n const timeFromConsume = (0, core_1.hrTimeDuration)(currMessage.timeOfConsume, currentTime);\n if ((0, core_1.hrTimeToMilliseconds)(timeFromConsume) < consumeTimeoutMs) {\n break;\n }\n this.endConsumerSpan(currMessage.msg, null, types_1.EndOperation.InstrumentationTimeout, true);\n }\n spansNotEnded.splice(0, i);\n }\n}\nexports.AmqplibInstrumentation = AmqplibInstrumentation;\n//# sourceMappingURL=amqplib.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2FtcXBsaWIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLDhKQUFxQjtBQUM1QywwQkFBMEIsbUJBQU8sQ0FBQyxpTUFBZ0M7QUFDbEUsa0JBQWtCLG1CQUFPLENBQUMsNkxBQVc7QUFDckMsMkJBQTJCLG1CQUFPLENBQUMsb05BQXlCO0FBQzVELGdCQUFnQixtQkFBTyxDQUFDLHlMQUFTO0FBQ2pDLGdCQUFnQixtQkFBTyxDQUFDLHlMQUFTO0FBQ2pDO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsNkxBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLG1FQUFtRSxzQ0FBc0M7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLDBCQUEwQixzQ0FBc0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsZUFBZTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixtQkFBbUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxPQUFPO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLGlCQUFpQjtBQUNqQix3QkFBd0IsY0FBYztBQUN0QztBQUNBLDRGQUE0RixvQkFBb0I7QUFDaEg7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdCQUF3QjtBQUM1QyxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQsd0JBQXdCLGNBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsbUJBQW1CO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixXQUFXLG1CQUFtQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixpQkFBaUI7QUFDakM7QUFDQTtBQUNBLG1GQUFtRiw2QkFBNkI7QUFDaEg7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQW1CO0FBQ25DLG9CQUFvQiwwQkFBMEI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2FtcXBsaWIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFtcXBsaWJJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuY29uc3QgYXBpXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvYXBpXCIpO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2NvcmVcIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuY29uc3Qgc2VtY29udl9vYnNvbGV0ZV8xID0gcmVxdWlyZShcIi4uL3NyYy9zZW1jb252LW9ic29sZXRlXCIpO1xuY29uc3QgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuLyoqIEBrbmlwaWdub3JlICovXG5jb25zdCB2ZXJzaW9uXzEgPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xuY29uc3Qgc3VwcG9ydGVkVmVyc2lvbnMgPSBbJz49MC41LjUgPDEnXTtcbmNsYXNzIEFtcXBsaWJJbnN0cnVtZW50YXRpb24gZXh0ZW5kcyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25CYXNlIHtcbiAgICBfbmV0U2VtY29udlN0YWJpbGl0eTtcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgICAgICBzdXBlcih2ZXJzaW9uXzEuUEFDS0FHRV9OQU1FLCB2ZXJzaW9uXzEuUEFDS0FHRV9WRVJTSU9OLCB7IC4uLnR5cGVzXzEuREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9KTtcbiAgICAgICAgdGhpcy5fc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKTtcbiAgICB9XG4gICAgLy8gVXNlZCBmb3IgdGVzdGluZy5cbiAgICBfc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKSB7XG4gICAgICAgIHRoaXMuX25ldFNlbWNvbnZTdGFiaWxpdHkgPSAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2VtY29udlN0YWJpbGl0eUZyb21TdHIpKCdodHRwJywgcHJvY2Vzcy5lbnYuT1RFTF9TRU1DT05WX1NUQUJJTElUWV9PUFRfSU4pO1xuICAgIH1cbiAgICBzZXRDb25maWcoY29uZmlnID0ge30pIHtcbiAgICAgICAgc3VwZXIuc2V0Q29uZmlnKHsgLi4udHlwZXNfMS5ERUZBVUxUX0NPTkZJRywgLi4uY29uZmlnIH0pO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICBjb25zdCBjaGFubmVsTW9kZWxNb2R1bGVGaWxlID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVGaWxlKCdhbXFwbGliL2xpYi9jaGFubmVsX21vZGVsLmpzJywgc3VwcG9ydGVkVmVyc2lvbnMsIHRoaXMucGF0Y2hDaGFubmVsTW9kZWwuYmluZCh0aGlzKSwgdGhpcy51bnBhdGNoQ2hhbm5lbE1vZGVsLmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBjYWxsYmFja01vZGVsTW9kdWxlRmlsZSA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRmlsZSgnYW1xcGxpYi9saWIvY2FsbGJhY2tfbW9kZWwuanMnLCBzdXBwb3J0ZWRWZXJzaW9ucywgdGhpcy5wYXRjaENoYW5uZWxNb2RlbC5iaW5kKHRoaXMpLCB0aGlzLnVucGF0Y2hDaGFubmVsTW9kZWwuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IGNvbm5lY3RNb2R1bGVGaWxlID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVGaWxlKCdhbXFwbGliL2xpYi9jb25uZWN0LmpzJywgc3VwcG9ydGVkVmVyc2lvbnMsIHRoaXMucGF0Y2hDb25uZWN0LmJpbmQodGhpcyksIHRoaXMudW5wYXRjaENvbm5lY3QuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRGVmaW5pdGlvbignYW1xcGxpYicsIHN1cHBvcnRlZFZlcnNpb25zLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW2NoYW5uZWxNb2RlbE1vZHVsZUZpbGUsIGNvbm5lY3RNb2R1bGVGaWxlLCBjYWxsYmFja01vZGVsTW9kdWxlRmlsZV0pO1xuICAgICAgICByZXR1cm4gbW9kdWxlO1xuICAgIH1cbiAgICBwYXRjaENvbm5lY3QobW9kdWxlRXhwb3J0cykge1xuICAgICAgICBtb2R1bGVFeHBvcnRzID0gdGhpcy51bnBhdGNoQ29ubmVjdChtb2R1bGVFeHBvcnRzKTtcbiAgICAgICAgaWYgKCEoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMsICdjb25uZWN0JywgdGhpcy5nZXRDb25uZWN0UGF0Y2guYmluZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZHVsZUV4cG9ydHM7XG4gICAgfVxuICAgIHVucGF0Y2hDb25uZWN0KG1vZHVsZUV4cG9ydHMpIHtcbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuY29ubmVjdCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLCAnY29ubmVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2R1bGVFeHBvcnRzO1xuICAgIH1cbiAgICBwYXRjaENoYW5uZWxNb2RlbChtb2R1bGVFeHBvcnRzLCBtb2R1bGVWZXJzaW9uKSB7XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5wdWJsaXNoKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAncHVibGlzaCcsIHRoaXMuZ2V0UHVibGlzaFBhdGNoLmJpbmQodGhpcywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5jb25zdW1lKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnY29uc3VtZScsIHRoaXMuZ2V0Q29uc3VtZVBhdGNoLmJpbmQodGhpcywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5hY2spKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUsICdhY2snLCB0aGlzLmdldEFja1BhdGNoLmJpbmQodGhpcywgZmFsc2UsIHR5cGVzXzEuRW5kT3BlcmF0aW9uLkFjaykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5uYWNrKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnbmFjaycsIHRoaXMuZ2V0QWNrUGF0Y2guYmluZCh0aGlzLCB0cnVlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5OYWNrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLnJlamVjdCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ3JlamVjdCcsIHRoaXMuZ2V0QWNrUGF0Y2guYmluZCh0aGlzLCB0cnVlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5SZWplY3QpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUuYWNrQWxsKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnYWNrQWxsJywgdGhpcy5nZXRBY2tBbGxQYXRjaC5iaW5kKHRoaXMsIGZhbHNlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5BY2tBbGwpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUubmFja0FsbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ25hY2tBbGwnLCB0aGlzLmdldEFja0FsbFBhdGNoLmJpbmQodGhpcywgdHJ1ZSwgdHlwZXNfMS5FbmRPcGVyYXRpb24uTmFja0FsbCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5lbWl0KSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnZW1pdCcsIHRoaXMuZ2V0Q2hhbm5lbEVtaXRQYXRjaC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ29uZmlybUNoYW5uZWwucHJvdG90eXBlLnB1Ymxpc2gpKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuQ29uZmlybUNoYW5uZWwucHJvdG90eXBlLCAncHVibGlzaCcsIHRoaXMuZ2V0Q29uZmlybWVkUHVibGlzaFBhdGNoLmJpbmQodGhpcywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2R1bGVFeHBvcnRzO1xuICAgIH1cbiAgICB1bnBhdGNoQ2hhbm5lbE1vZGVsKG1vZHVsZUV4cG9ydHMpIHtcbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUucHVibGlzaCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAncHVibGlzaCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLmNvbnN1bWUpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ2NvbnN1bWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5hY2spKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ2FjaycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLm5hY2spKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ25hY2snKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5yZWplY3QpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ3JlamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLmFja0FsbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnYWNrQWxsJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUubmFja0FsbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnbmFja0FsbCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLmVtaXQpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ2VtaXQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5Db25maXJtQ2hhbm5lbC5wcm90b3R5cGUucHVibGlzaCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNvbmZpcm1DaGFubmVsLnByb3RvdHlwZSwgJ3B1Ymxpc2gnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kdWxlRXhwb3J0cztcbiAgICB9XG4gICAgZ2V0Q29ubmVjdFBhdGNoKG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gcGF0Y2hlZENvbm5lY3QodXJsLCBzb2NrZXRPcHRpb25zLCBvcGVuQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5jYWxsKHRoaXMsIHVybCwgc29ja2V0T3B0aW9ucywgZnVuY3Rpb24gKGVyciwgY29ubikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBdHRyaWJ1dGVzID0gKDAsIHV0aWxzXzEuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsKSh1cmwsIHNlbGYuX25ldFNlbWNvbnZTdGFiaWxpdHkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2ZXJBdHRyaWJ1dGVzID0gKDAsIHV0aWxzXzEuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tU2VydmVyKShjb25uKTtcbiAgICAgICAgICAgICAgICAgICAgY29ublt1dGlsc18xLkNPTk5FQ1RJT05fQVRUUklCVVRFU10gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi51cmxBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VydmVyQXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3BlbkNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0Q2hhbm5lbEVtaXRQYXRjaChvcmlnaW5hbCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGVtaXQoZXZlbnROYW1lKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnY2xvc2UnKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5lbmRBbGxTcGFuc09uQ2hhbm5lbCh0aGlzLCB0cnVlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5DaGFubmVsQ2xvc2VkLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVRpbWVyID0gdGhpc1t1dGlsc18xLkNIQU5ORUxfQ09OU1VNRV9USU1FT1VUX1RJTUVSXTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChhY3RpdmVUaW1lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXNbdXRpbHNfMS5DSEFOTkVMX0NPTlNVTUVfVElNRU9VVF9USU1FUl0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChldmVudE5hbWUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmVuZEFsbFNwYW5zT25DaGFubmVsKHRoaXMsIHRydWUsIHR5cGVzXzEuRW5kT3BlcmF0aW9uLkNoYW5uZWxFcnJvciwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRBY2tBbGxQYXRjaChpc1JlamVjdGVkLCBlbmRPcGVyYXRpb24sIG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gYWNrQWxsKHJlcXVldWVPckVtcHR5KSB7XG4gICAgICAgICAgICBzZWxmLmVuZEFsbFNwYW5zT25DaGFubmVsKHRoaXMsIGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgcmVxdWV1ZU9yRW1wdHkpO1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEFja1BhdGNoKGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgb3JpZ2luYWwpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBhY2sobWVzc2FnZSwgYWxsVXBUb09yUmVxdWV1ZSwgcmVxdWV1ZSkge1xuICAgICAgICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXM7XG4gICAgICAgICAgICAvLyB3ZSB1c2UgdGhpcyBwYXRjaCBpbiByZWplY3QgZnVuY3Rpb24gYXMgd2VsbCwgYnV0IGl0IGhhcyBkaWZmZXJlbnQgc2lnbmF0dXJlXG4gICAgICAgICAgICBjb25zdCByZXF1ZXVlUmVzb2x2ZWQgPSBlbmRPcGVyYXRpb24gPT09IHR5cGVzXzEuRW5kT3BlcmF0aW9uLlJlamVjdCA/IGFsbFVwVG9PclJlcXVldWUgOiByZXF1ZXVlO1xuICAgICAgICAgICAgY29uc3Qgc3BhbnNOb3RFbmRlZCA9IGNoYW5uZWxbdXRpbHNfMS5DSEFOTkVMX1NQQU5TX05PVF9FTkRFRF0gPz8gW107XG4gICAgICAgICAgICBjb25zdCBtc2dJbmRleCA9IHNwYW5zTm90RW5kZWQuZmluZEluZGV4KG1zZ0RldGFpbHMgPT4gbXNnRGV0YWlscy5tc2cgPT09IG1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKG1zZ0luZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBub3QgaGFwcGVuIGluIGhhcHB5IGZsb3dcbiAgICAgICAgICAgICAgICAvLyBidXQgcG9zc2libGUgaWYgdXNlciBpcyBjYWxsaW5nIHRoZSBhcGkgZnVuY3Rpb24gYWNrIHR3aWNlIHdpdGggc2FtZSBtZXNzYWdlXG4gICAgICAgICAgICAgICAgc2VsZi5lbmRDb25zdW1lclNwYW4obWVzc2FnZSwgaXNSZWplY3RlZCwgZW5kT3BlcmF0aW9uLCByZXF1ZXVlUmVzb2x2ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZW5kT3BlcmF0aW9uICE9PSB0eXBlc18xLkVuZE9wZXJhdGlvbi5SZWplY3QgJiYgYWxsVXBUb09yUmVxdWV1ZSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1zZ0luZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmRDb25zdW1lclNwYW4oc3BhbnNOb3RFbmRlZFtpXS5tc2csIGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgcmVxdWV1ZVJlc29sdmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3BhbnNOb3RFbmRlZC5zcGxpY2UoMCwgbXNnSW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYuZW5kQ29uc3VtZXJTcGFuKG1lc3NhZ2UsIGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgcmVxdWV1ZVJlc29sdmVkKTtcbiAgICAgICAgICAgICAgICBzcGFuc05vdEVuZGVkLnNwbGljZShtc2dJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0Q29uc3VtZVBhdGNoKG1vZHVsZVZlcnNpb24sIG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gY29uc3VtZShxdWV1ZSwgb25NZXNzYWdlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFubmVsID0gdGhpcztcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5uZWwsIHV0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERUQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjb25zdW1lVGltZW91dE1zIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChjb25zdW1lVGltZW91dE1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0NvbnN1bWVUaW1lb3V0T25DaGFubmVsKGNoYW5uZWwpO1xuICAgICAgICAgICAgICAgICAgICB9LCBjb25zdW1lVGltZW91dE1zKTtcbiAgICAgICAgICAgICAgICAgICAgdGltZXIudW5yZWYoKTtcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFt1dGlsc18xLkNIQU5ORUxfQ09OU1VNRV9USU1FT1VUX1RJTUVSXSA9IHRpbWVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjaGFubmVsW3V0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERURdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXRjaGVkT25NZXNzYWdlID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICAgICAgICAgIC8vIG1zZyBpcyBleHBlY3RlZCB0byBiZSBudWxsIGZvciBzaWduYWxpbmcgY29uc3VtZXIgY2FuY2VsIG5vdGlmaWNhdGlvblxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnJhYmJpdG1xLmNvbS9jb25zdW1lci1jYW5jZWwuaHRtbFxuICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSwgd2UgZG8gbm90IHN0YXJ0IGEgc3BhbiwgYXMgdGhpcyBpcyBub3QgYSByZWFsIG1lc3NhZ2UuXG4gICAgICAgICAgICAgICAgaWYgKCFtc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uTWVzc2FnZS5jYWxsKHRoaXMsIG1zZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBtc2cucHJvcGVydGllcy5oZWFkZXJzID8/IHt9O1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRDb250ZXh0ID0gYXBpXzEucHJvcGFnYXRpb24uZXh0cmFjdChhcGlfMS5ST09UX0NPTlRFWFQsIGhlYWRlcnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4Y2hhbmdlID0gbXNnLmZpZWxkcz8uZXhjaGFuZ2U7XG4gICAgICAgICAgICAgICAgbGV0IGxpbmtzO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLl9jb25maWcudXNlTGlua3NGb3JDb25zdW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW5Db250ZXh0ID0gcGFyZW50Q29udGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBhcGlfMS50cmFjZS5nZXRTcGFuKHBhcmVudENvbnRleHQpPy5zcGFuQ29udGV4dCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGV4dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFNwYW5Db250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHBhcmVudFNwYW5Db250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBzZWxmLnRyYWNlci5zdGFydFNwYW4oYCR7cXVldWV9IHByb2Nlc3NgLCB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLkNPTlNVTUVSLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGFubmVsPy5jb25uZWN0aW9uPy5bdXRpbHNfMS5DT05ORUNUSU9OX0FUVFJJQlVURVNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTl06IGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EXTogc2VtY29udl9vYnNvbGV0ZV8xLk1FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EX1ZBTFVFX1RPUElDLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWV06IG1zZy5maWVsZHM/LnJvdXRpbmdLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VtY29udl8xLkFUVFJfTUVTU0FHSU5HX09QRVJBVElPTl06IHNlbWNvbnZfb2Jzb2xldGVfMS5NRVNTQUdJTkdfT1BFUkFUSU9OX1ZBTFVFX1BST0NFU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLk9MRF9BVFRSX01FU1NBR0lOR19NRVNTQUdFX0lEXTogbXNnPy5wcm9wZXJ0aWVzLm1lc3NhZ2VJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZW1jb252X29ic29sZXRlXzEuQVRUUl9NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEXTogbXNnPy5wcm9wZXJ0aWVzLmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzLFxuICAgICAgICAgICAgICAgIH0sIHBhcmVudENvbnRleHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY29uc3VtZUhvb2sgfSA9IHNlbGYuZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWVIb29rKSB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBpbnN0cnVtZW50YXRpb25fMS5zYWZlRXhlY3V0ZUluVGhlTWlkZGxlKSgoKSA9PiBjb25zdW1lSG9vayhzcGFuLCB7IG1vZHVsZVZlcnNpb24sIG1zZyB9KSwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ2FtcXBsaWIgaW5zdHJ1bWVudGF0aW9uOiBjb25zdW1lckhvb2sgZXJyb3InLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucz8ubm9BY2spIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgdGhlIG1lc3NhZ2Ugb24gdGhlIGNoYW5uZWwgc28gd2UgY2FuIGNsb3NlIHRoZSBzcGFuIG9uIGFja0FsbCBldGNcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFt1dGlsc18xLkNIQU5ORUxfU1BBTlNfTk9UX0VOREVEXS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPZkNvbnN1bWU6ICgwLCBjb3JlXzEuaHJUaW1lKSgpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgdGhlIHNwYW4gb24gdGhlIG1lc3NhZ2UsIHNvIHdlIGNhbiBlbmQgaXQgd2hlbiB1c2VyIGNhbGwgJ2Fjaycgb24gaXRcbiAgICAgICAgICAgICAgICAgICAgbXNnW3V0aWxzXzEuTUVTU0FHRV9TVE9SRURfU1BBTl0gPSBzcGFuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzZXRDb250ZXh0ID0gcGFyZW50Q29udGV4dFxuICAgICAgICAgICAgICAgICAgICA/IHBhcmVudENvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgOiBhcGlfMS5ST09UX0NPTlRFWFQ7XG4gICAgICAgICAgICAgICAgYXBpXzEuY29udGV4dC53aXRoKGFwaV8xLnRyYWNlLnNldFNwYW4oc2V0Q29udGV4dCwgc3BhbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25NZXNzYWdlLmNhbGwodGhpcywgbXNnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8ubm9BY2spIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxsQ29uc3VtZUVuZEhvb2soc3BhbiwgbXNnLCBmYWxzZSwgdHlwZXNfMS5FbmRPcGVyYXRpb24uQXV0b0Fjayk7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFyZ3VtZW50c1sxXSA9IHBhdGNoZWRPbk1lc3NhZ2U7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0Q29uZmlybWVkUHVibGlzaFBhdGNoKG1vZHVsZVZlcnNpb24sIG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gY29uZmlybWVkUHVibGlzaChleGNoYW5nZSwgcm91dGluZ0tleSwgY29udGVudCwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgeyBzcGFuLCBtb2RpZmllZE9wdGlvbnMgfSA9IHNlbGYuY3JlYXRlUHVibGlzaFNwYW4oc2VsZiwgZXhjaGFuZ2UsIHJvdXRpbmdLZXksIGNoYW5uZWwsIG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgeyBwdWJsaXNoSG9vayB9ID0gc2VsZi5nZXRDb25maWcoKTtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoSG9vaykge1xuICAgICAgICAgICAgICAgICgwLCBpbnN0cnVtZW50YXRpb25fMS5zYWZlRXhlY3V0ZUluVGhlTWlkZGxlKSgoKSA9PiBwdWJsaXNoSG9vayhzcGFuLCB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICByb3V0aW5nS2V5LFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBtb2RpZmllZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGlzQ29uZmlybUNoYW5uZWw6IHRydWUsXG4gICAgICAgICAgICAgICAgfSksIGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBpXzEuZGlhZy5lcnJvcignYW1xcGxpYiBpbnN0cnVtZW50YXRpb246IHB1Ymxpc2hIb29rIGVycm9yJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhdGNoZWRPbkNvbmZpcm0gPSBmdW5jdGlvbiAoZXJyLCBvaykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPy5jYWxsKHRoaXMsIGVyciwgb2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwdWJsaXNoQ29uZmlybUhvb2sgfSA9IHNlbGYuZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoQ29uZmlybUhvb2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBpbnN0cnVtZW50YXRpb25fMS5zYWZlRXhlY3V0ZUluVGhlTWlkZGxlKSgoKSA9PiBwdWJsaXNoQ29uZmlybUhvb2soc3Bhbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ0tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb25maXJtQ2hhbm5lbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtRXJyb3I6IGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdhbXFwbGliIGluc3RydW1lbnRhdGlvbjogcHVibGlzaENvbmZpcm1Ib29rIGVycm9yJywgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwibWVzc2FnZSBjb25maXJtYXRpb24gaGFzIGJlZW4gbmFjaydlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gY2FsbGluZyBjb25maXJtIGNoYW5uZWwgcHVibGlzaCBmdW5jdGlvbiBpcyBzdG9yaW5nIHRoZSBtZXNzYWdlIGluIHF1ZXVlIGFuZCByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2sgZm9yIGJyb2tlciBjb25maXJtLlxuICAgICAgICAgICAgLy8gc3BhbiBlbmRzIGluIHRoZSBwYXRjaGVkIGNhbGxiYWNrLlxuICAgICAgICAgICAgY29uc3QgbWFya2VkQ29udGV4dCA9ICgwLCB1dGlsc18xLm1hcmtDb25maXJtQ2hhbm5lbFRyYWNpbmcpKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgY29uc3QgYXJndW1lbnRzQ29weSA9IFsuLi5hcmd1bWVudHNdO1xuICAgICAgICAgICAgYXJndW1lbnRzQ29weVszXSA9IG1vZGlmaWVkT3B0aW9ucztcbiAgICAgICAgICAgIGFyZ3VtZW50c0NvcHlbNF0gPSBhcGlfMS5jb250ZXh0LmJpbmQoKDAsIHV0aWxzXzEudW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nKShhcGlfMS50cmFjZS5zZXRTcGFuKG1hcmtlZENvbnRleHQsIHNwYW4pKSwgcGF0Y2hlZE9uQ29uZmlybSk7XG4gICAgICAgICAgICByZXR1cm4gYXBpXzEuY29udGV4dC53aXRoKG1hcmtlZENvbnRleHQsIG9yaWdpbmFsLmJpbmQodGhpcywgLi4uYXJndW1lbnRzQ29weSkpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRQdWJsaXNoUGF0Y2gobW9kdWxlVmVyc2lvbiwgb3JpZ2luYWwpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBwdWJsaXNoKGV4Y2hhbmdlLCByb3V0aW5nS2V5LCBjb250ZW50LCBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoKDAsIHV0aWxzXzEuaXNDb25maXJtQ2hhbm5lbFRyYWNpbmcpKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpKSB7XG4gICAgICAgICAgICAgICAgLy8gd29yayBhbHJlYWR5IGRvbmVcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3BhbiwgbW9kaWZpZWRPcHRpb25zIH0gPSBzZWxmLmNyZWF0ZVB1Ymxpc2hTcGFuKHNlbGYsIGV4Y2hhbmdlLCByb3V0aW5nS2V5LCBjaGFubmVsLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHB1Ymxpc2hIb29rIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoSG9vaykge1xuICAgICAgICAgICAgICAgICAgICAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2FmZUV4ZWN1dGVJblRoZU1pZGRsZSkoKCkgPT4gcHVibGlzaEhvb2soc3Bhbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ0tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBtb2RpZmllZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NvbmZpcm1DaGFubmVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSksIGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdhbXFwbGliIGluc3RydW1lbnRhdGlvbjogcHVibGlzaEhvb2sgZXJyb3InLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNhbGxpbmcgbm9ybWFsIGNoYW5uZWwgcHVibGlzaCBmdW5jdGlvbiBpcyBvbmx5IHN0b3JpbmcgdGhlIG1lc3NhZ2UgaW4gcXVldWUuXG4gICAgICAgICAgICAgICAgLy8gaXQgZG9lcyBub3Qgc2VuZCBpdCBhbmQgd2FpdHMgZm9yIGFuIGFjaywgc28gdGhlIHNwYW4gZHVyYXRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgdmVyeSBzaG9ydC5cbiAgICAgICAgICAgICAgICBjb25zdCBhcmd1bWVudHNDb3B5ID0gWy4uLmFyZ3VtZW50c107XG4gICAgICAgICAgICAgICAgYXJndW1lbnRzQ29weVszXSA9IG1vZGlmaWVkT3B0aW9ucztcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFJlcyA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50c0NvcHkpO1xuICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjcmVhdGVQdWJsaXNoU3BhbihzZWxmLCBleGNoYW5nZSwgcm91dGluZ0tleSwgY2hhbm5lbCwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRXhjaGFuZ2UgPSAoMCwgdXRpbHNfMS5ub3JtYWxpemVFeGNoYW5nZSkoZXhjaGFuZ2UpO1xuICAgICAgICBjb25zdCBzcGFuID0gc2VsZi50cmFjZXIuc3RhcnRTcGFuKGBwdWJsaXNoICR7bm9ybWFsaXplZEV4Y2hhbmdlfWAsIHtcbiAgICAgICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLlBST0RVQ0VSLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIC4uLmNoYW5uZWwuY29ubmVjdGlvblt1dGlsc18xLkNPTk5FQ1RJT05fQVRUUklCVVRFU10sXG4gICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTl06IGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgIFtzZW1jb252X29ic29sZXRlXzEuQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF06IHNlbWNvbnZfb2Jzb2xldGVfMS5NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF9WQUxVRV9UT1BJQyxcbiAgICAgICAgICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLkFUVFJfTUVTU0FHSU5HX1JBQkJJVE1RX1JPVVRJTkdfS0VZXTogcm91dGluZ0tleSxcbiAgICAgICAgICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLk9MRF9BVFRSX01FU1NBR0lOR19NRVNTQUdFX0lEXTogb3B0aW9ucz8ubWVzc2FnZUlkLFxuICAgICAgICAgICAgICAgIFtzZW1jb252X29ic29sZXRlXzEuQVRUUl9NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEXTogb3B0aW9ucz8uY29ycmVsYXRpb25JZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBtb2RpZmllZE9wdGlvbnMgPSBvcHRpb25zID8/IHt9O1xuICAgICAgICBtb2RpZmllZE9wdGlvbnMuaGVhZGVycyA9IG1vZGlmaWVkT3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICBhcGlfMS5wcm9wYWdhdGlvbi5pbmplY3QoYXBpXzEudHJhY2Uuc2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBzcGFuKSwgbW9kaWZpZWRPcHRpb25zLmhlYWRlcnMpO1xuICAgICAgICByZXR1cm4geyBzcGFuLCBtb2RpZmllZE9wdGlvbnMgfTtcbiAgICB9XG4gICAgZW5kQ29uc3VtZXJTcGFuKG1lc3NhZ2UsIGlzUmVqZWN0ZWQsIG9wZXJhdGlvbiwgcmVxdWV1ZSkge1xuICAgICAgICBjb25zdCBzdG9yZWRTcGFuID0gbWVzc2FnZVt1dGlsc18xLk1FU1NBR0VfU1RPUkVEX1NQQU5dO1xuICAgICAgICBpZiAoIXN0b3JlZFNwYW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChpc1JlamVjdGVkICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RvcmVkU3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wZXJhdGlvbiAhPT0gdHlwZXNfMS5FbmRPcGVyYXRpb24uQ2hhbm5lbENsb3NlZCAmJlxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gIT09IHR5cGVzXzEuRW5kT3BlcmF0aW9uLkNoYW5uZWxFcnJvclxuICAgICAgICAgICAgICAgICAgICA/IGAke29wZXJhdGlvbn0gY2FsbGVkIG9uIG1lc3NhZ2Uke3JlcXVldWUgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJyB3aXRoIHJlcXVldWUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHJlcXVldWUgPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIHdpdGhvdXQgcmVxdWV1ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnfWBcbiAgICAgICAgICAgICAgICAgICAgOiBvcGVyYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGxDb25zdW1lRW5kSG9vayhzdG9yZWRTcGFuLCBtZXNzYWdlLCBpc1JlamVjdGVkLCBvcGVyYXRpb24pO1xuICAgICAgICBzdG9yZWRTcGFuLmVuZCgpO1xuICAgICAgICBtZXNzYWdlW3V0aWxzXzEuTUVTU0FHRV9TVE9SRURfU1BBTl0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVuZEFsbFNwYW5zT25DaGFubmVsKGNoYW5uZWwsIGlzUmVqZWN0ZWQsIG9wZXJhdGlvbiwgcmVxdWV1ZSkge1xuICAgICAgICBjb25zdCBzcGFuc05vdEVuZGVkID0gY2hhbm5lbFt1dGlsc18xLkNIQU5ORUxfU1BBTlNfTk9UX0VOREVEXSA/PyBbXTtcbiAgICAgICAgc3BhbnNOb3RFbmRlZC5mb3JFYWNoKG1zZ0RldGFpbHMgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmRDb25zdW1lclNwYW4obXNnRGV0YWlscy5tc2csIGlzUmVqZWN0ZWQsIG9wZXJhdGlvbiwgcmVxdWV1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjaGFubmVsW3V0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERURdID0gW107XG4gICAgfVxuICAgIGNhbGxDb25zdW1lRW5kSG9vayhzcGFuLCBtc2csIHJlamVjdGVkLCBlbmRPcGVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBjb25zdW1lRW5kSG9vayB9ID0gdGhpcy5nZXRDb25maWcoKTtcbiAgICAgICAgaWYgKCFjb25zdW1lRW5kSG9vaylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgKDAsIGluc3RydW1lbnRhdGlvbl8xLnNhZmVFeGVjdXRlSW5UaGVNaWRkbGUpKCgpID0+IGNvbnN1bWVFbmRIb29rKHNwYW4sIHsgbXNnLCByZWplY3RlZCwgZW5kT3BlcmF0aW9uIH0pLCBlID0+IHtcbiAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgICAgYXBpXzEuZGlhZy5lcnJvcignYW1xcGxpYiBpbnN0cnVtZW50YXRpb246IGNvbnN1bWVyRW5kSG9vayBlcnJvcicsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0cnVlKTtcbiAgICB9XG4gICAgY2hlY2tDb25zdW1lVGltZW91dE9uQ2hhbm5lbChjaGFubmVsKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gKDAsIGNvcmVfMS5oclRpbWUpKCk7XG4gICAgICAgIGNvbnN0IHNwYW5zTm90RW5kZWQgPSBjaGFubmVsW3V0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERURdID8/IFtdO1xuICAgICAgICBsZXQgaTtcbiAgICAgICAgY29uc3QgeyBjb25zdW1lVGltZW91dE1zIH0gPSB0aGlzLmdldENvbmZpZygpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3BhbnNOb3RFbmRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY3Vyck1lc3NhZ2UgPSBzcGFuc05vdEVuZGVkW2ldO1xuICAgICAgICAgICAgY29uc3QgdGltZUZyb21Db25zdW1lID0gKDAsIGNvcmVfMS5oclRpbWVEdXJhdGlvbikoY3Vyck1lc3NhZ2UudGltZU9mQ29uc3VtZSwgY3VycmVudFRpbWUpO1xuICAgICAgICAgICAgaWYgKCgwLCBjb3JlXzEuaHJUaW1lVG9NaWxsaXNlY29uZHMpKHRpbWVGcm9tQ29uc3VtZSkgPCBjb25zdW1lVGltZW91dE1zKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVuZENvbnN1bWVyU3BhbihjdXJyTWVzc2FnZS5tc2csIG51bGwsIHR5cGVzXzEuRW5kT3BlcmF0aW9uLkluc3RydW1lbnRhdGlvblRpbWVvdXQsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHNwYW5zTm90RW5kZWQuc3BsaWNlKDAsIGkpO1xuICAgIH1cbn1cbmV4cG9ydHMuQW1xcGxpYkluc3RydW1lbnRhdGlvbiA9IEFtcXBsaWJJbnN0cnVtZW50YXRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hbXFwbGliLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndOperation = exports.DEFAULT_CONFIG = exports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar amqplib_1 = __webpack_require__(/*! ./amqplib */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js\");\nObject.defineProperty(exports, \"AmqplibInstrumentation\", ({ enumerable: true, get: function () { return amqplib_1.AmqplibInstrumentation; } }));\nvar types_1 = __webpack_require__(/*! ./types */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js\");\nObject.defineProperty(exports, \"DEFAULT_CONFIG\", ({ enumerable: true, get: function () { return types_1.DEFAULT_CONFIG; } }));\nObject.defineProperty(exports, \"EndOperation\", ({ enumerable: true, get: function () { return types_1.EndOperation; } }));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELG9CQUFvQixHQUFHLHNCQUFzQixHQUFHLDhCQUE4QjtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQyw2TEFBVztBQUNuQywwREFBeUQsRUFBRSxxQ0FBcUMsNENBQTRDLEVBQUM7QUFDN0ksY0FBYyxtQkFBTyxDQUFDLHlMQUFTO0FBQy9CLGtEQUFpRCxFQUFFLHFDQUFxQyxrQ0FBa0MsRUFBQztBQUMzSCxnREFBK0MsRUFBRSxxQ0FBcUMsZ0NBQWdDLEVBQUM7QUFDdkgiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5FbmRPcGVyYXRpb24gPSBleHBvcnRzLkRFRkFVTFRfQ09ORklHID0gZXhwb3J0cy5BbXFwbGliSW5zdHJ1bWVudGF0aW9uID0gdm9pZCAwO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBhbXFwbGliXzEgPSByZXF1aXJlKFwiLi9hbXFwbGliXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQW1xcGxpYkluc3RydW1lbnRhdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYW1xcGxpYl8xLkFtcXBsaWJJbnN0cnVtZW50YXRpb247IH0gfSk7XG52YXIgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiREVGQVVMVF9DT05GSUdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzEuREVGQVVMVF9DT05GSUc7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJFbmRPcGVyYXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzEuRW5kT3BlcmF0aW9uOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js":
/*!*************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js ***!
\*************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ATTR_MESSAGING_CONVERSATION_ID = exports.OLD_ATTR_MESSAGING_MESSAGE_ID = exports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = exports.ATTR_MESSAGING_URL = exports.ATTR_MESSAGING_PROTOCOL_VERSION = exports.ATTR_MESSAGING_PROTOCOL = exports.MESSAGING_OPERATION_VALUE_PROCESS = exports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = exports.ATTR_MESSAGING_DESTINATION_KIND = exports.ATTR_MESSAGING_DESTINATION = void 0;\n/*\n * This file contains constants for values that where replaced/removed from\n * Semantic Conventions long enough ago that they do not have `ATTR_*`\n * constants in the `@opentelemetry/semantic-conventions` package. Eventually\n * it is expected that this instrumention will be updated to emit telemetry\n * using modern Semantic Conventions, dropping the need for the constants in\n * this file.\n */\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_DESTINATION = 'messaging.destination';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.ATTR_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGING_OPERATION_VALUE_PROCESS = 'process';\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexports.ATTR_MESSAGING_PROTOCOL = 'messaging.protocol';\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexports.ATTR_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexports.ATTR_MESSAGING_URL = 'messaging.url';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic';\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n *\n * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`.\n */\nexports.OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id';\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called &#34;Correlation ID&#34;.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\n//# sourceMappingURL=semconv-obsolete.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYtb2Jzb2xldGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsc0NBQXNDLEdBQUcscUNBQXFDLEdBQUcsOENBQThDLEdBQUcsMEJBQTBCLEdBQUcsdUNBQXVDLEdBQUcsK0JBQStCLEdBQUcseUNBQXlDLEdBQUcsMkNBQTJDLEdBQUcsdUNBQXVDLEdBQUcsa0NBQWtDO0FBQ2paO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRkFBZ0YsbUhBQW1IO0FBQ25NO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsZ0dBQWdHLG1IQUFtSDtBQUNuTjtBQUNBLDJDQUEyQztBQUMzQztBQUNBLHNKQUFzSixTQUFTO0FBQy9KO0FBQ0EsdUZBQXVGLG1IQUFtSDtBQUMxTTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSxtSEFBbUg7QUFDN0w7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsbUpBQW1KLG1CQUFtQjtBQUN0SztBQUNBLHVGQUF1RixtSEFBbUg7QUFDMU07QUFDQSxzQ0FBc0M7QUFDdEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYtb2Jzb2xldGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BVFRSX01FU1NBR0lOR19DT05WRVJTQVRJT05fSUQgPSBleHBvcnRzLk9MRF9BVFRSX01FU1NBR0lOR19NRVNTQUdFX0lEID0gZXhwb3J0cy5NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF9WQUxVRV9UT1BJQyA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfVVJMID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19QUk9UT0NPTCA9IGV4cG9ydHMuTUVTU0FHSU5HX09QRVJBVElPTl9WQUxVRV9QUk9DRVNTID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWSA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORCA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT04gPSB2b2lkIDA7XG4vKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGNvbnN0YW50cyBmb3IgdmFsdWVzIHRoYXQgd2hlcmUgcmVwbGFjZWQvcmVtb3ZlZCBmcm9tXG4gKiBTZW1hbnRpYyBDb252ZW50aW9ucyBsb25nIGVub3VnaCBhZ28gdGhhdCB0aGV5IGRvIG5vdCBoYXZlIGBBVFRSXypgXG4gKiBjb25zdGFudHMgaW4gdGhlIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AgcGFja2FnZS4gRXZlbnR1YWxseVxuICogaXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGlzIGluc3RydW1lbnRpb24gd2lsbCBiZSB1cGRhdGVkIHRvIGVtaXQgdGVsZW1ldHJ5XG4gKiB1c2luZyBtb2Rlcm4gU2VtYW50aWMgQ29udmVudGlvbnMsIGRyb3BwaW5nIHRoZSBuZWVkIGZvciB0aGUgY29uc3RhbnRzIGluXG4gKiB0aGlzIGZpbGUuXG4gKi9cbi8qKlxuICogVGhlIG1lc3NhZ2UgZGVzdGluYXRpb24gbmFtZS4gVGhpcyBtaWdodCBiZSBlcXVhbCB0byB0aGUgc3BhbiBuYW1lIGJ1dCBpcyByZXF1aXJlZCBuZXZlcnRoZWxlc3MuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xuZXhwb3J0cy5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTiA9ICdtZXNzYWdpbmcuZGVzdGluYXRpb24nO1xuLyoqXG4gKiBUaGUga2luZCBvZiBtZXNzYWdlIGRlc3RpbmF0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gc2VtY29udiB2MS4yMC4wLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX0tJTkQgPSAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uX2tpbmQnO1xuLyoqXG4gKiBSYWJiaXRNUSBtZXNzYWdlIHJvdXRpbmcga2V5LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19SQUJCSVRNUV9ERVNUSU5BVElPTl9ST1VUSU5HX0tFWSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX1JBQkJJVE1RX1JPVVRJTkdfS0VZID0gJ21lc3NhZ2luZy5yYWJiaXRtcS5yb3V0aW5nX2tleSc7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBNRVNTQUdJTkdfT1BFUkFUSU9OX1RZUEVfVkFMVUVfUFJPQ0VTUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG5leHBvcnRzLk1FU1NBR0lOR19PUEVSQVRJT05fVkFMVUVfUFJPQ0VTUyA9ICdwcm9jZXNzJztcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHRyYW5zcG9ydCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX1BST1RPQ09MX05BTUUuXG4gKi9cbmV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfUFJPVE9DT0wgPSAnbWVzc2FnaW5nLnByb3RvY29sJztcbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHRyYW5zcG9ydCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX1BST1RPQ09MX1ZFUlNJT04uXG4gKi9cbmV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfUFJPVE9DT0xfVkVSU0lPTiA9ICdtZXNzYWdpbmcucHJvdG9jb2xfdmVyc2lvbic7XG4vKipcbiAqIENvbm5lY3Rpb24gc3RyaW5nLlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gc2VtY29udiB2MS4xNy4wLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX1VSTCA9ICdtZXNzYWdpbmcudXJsJztcbi8qKlxuICogVGhlIGtpbmQgb2YgbWVzc2FnZSBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjAuMC5cbiAqL1xuZXhwb3J0cy5NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF9WQUxVRV9UT1BJQyA9ICd0b3BpYyc7XG4vKipcbiAqIEEgdmFsdWUgdXNlZCBieSB0aGUgbWVzc2FnaW5nIHN5c3RlbSBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZSwgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX01FU1NBR0VfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqXG4gKiBOb3RlOiBjaGFuZ2luZyB0byBgQVRUUl9NRVNTQUdJTkdfTUVTU0FHRV9JRGAgbWVhbnMgYSBjaGFuZ2UgaW4gdmFsdWUgZnJvbSBgbWVzc2FnaW5nLm1lc3NhZ2VfaWRgIHRvIGBtZXNzYWdpbmcubWVzc2FnZS5pZGAuXG4gKi9cbmV4cG9ydHMuT0xEX0FUVFJfTUVTU0FHSU5HX01FU1NBR0VfSUQgPSAnbWVzc2FnaW5nLm1lc3NhZ2VfaWQnO1xuLyoqXG4gKiBUaGUgW2NvbnZlcnNhdGlvbiBJRF0oI2NvbnZlcnNhdGlvbnMpIGlkZW50aWZ5aW5nIHRoZSBjb252ZXJzYXRpb24gdG8gd2hpY2ggdGhlIG1lc3NhZ2UgYmVsb25ncywgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcuIFNvbWV0aW1lcyBjYWxsZWQgJiMzNDtDb3JyZWxhdGlvbiBJRCYjMzQ7LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19NRVNTQUdFX0NPTlZFUlNBVElPTl9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX0NPTlZFUlNBVElPTl9JRCA9ICdtZXNzYWdpbmcuY29udmVyc2F0aW9uX2lkJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbWNvbnYtb2Jzb2xldGUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js ***!
\****************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_OPERATION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `messaging.operation.type` instead.\n *\n * @example publish\n * @example create\n * @example process\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `messaging.operation.type`.\n */\nexports.ATTR_MESSAGING_OPERATION = 'messaging.operation';\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_SYSTEM = 'messaging.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n//# sourceMappingURL=semconv.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsMEJBQTBCLEdBQUcsMEJBQTBCLEdBQUcsNkJBQTZCLEdBQUcsZ0NBQWdDO0FBQzFIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BVFRSX05FVF9QRUVSX1BPUlQgPSBleHBvcnRzLkFUVFJfTkVUX1BFRVJfTkFNRSA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfU1lTVEVNID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19PUEVSQVRJT04gPSB2b2lkIDA7XG4vKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGEgY29weSBvZiB1bnN0YWJsZSBzZW1hbnRpYyBjb252ZW50aW9uIGRlZmluaXRpb25zXG4gKiB1c2VkIGJ5IHRoaXMgcGFja2FnZS5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvdHJlZS9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zI3Vuc3RhYmxlLXNlbWNvbnZcbiAqL1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYG1lc3NhZ2luZy5vcGVyYXRpb24udHlwZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBwdWJsaXNoXG4gKiBAZXhhbXBsZSBjcmVhdGVcbiAqIEBleGFtcGxlIHByb2Nlc3NcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYG1lc3NhZ2luZy5vcGVyYXRpb24udHlwZWAuXG4gKi9cbmV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfT1BFUkFUSU9OID0gJ21lc3NhZ2luZy5vcGVyYXRpb24nO1xuLyoqXG4gKiBUaGUgbWVzc2FnaW5nIHN5c3RlbSBhcyBpZGVudGlmaWVkIGJ5IHRoZSBjbGllbnQgaW5zdHJ1bWVudGF0aW9uLlxuICpcbiAqIEBub3RlIFRoZSBhY3R1YWwgbWVzc2FnaW5nIHN5c3RlbSBtYXkgZGlmZmVyIGZyb20gdGhlIG9uZSBrbm93biBieSB0aGUgY2xpZW50LiBGb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBLYWZrYSBjbGllbnQgbGlicmFyaWVzIHRvIGNvbW11bmljYXRlIHdpdGggQXp1cmUgRXZlbnQgSHVicywgdGhlIGBtZXNzYWdpbmcuc3lzdGVtYCBpcyBzZXQgdG8gYGthZmthYCBiYXNlZCBvbiB0aGUgaW5zdHJ1bWVudGF0aW9uJ3MgYmVzdCBrbm93bGVkZ2UuXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGF0dHJpYnV0ZSBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX1NZU1RFTSA9ICdtZXNzYWdpbmcuc3lzdGVtJztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBzZXJ2ZXIuYWRkcmVzc2Agb24gY2xpZW50IHNwYW5zIGFuZCBgY2xpZW50LmFkZHJlc3NgIG9uIHNlcnZlciBzcGFucy5cbiAqXG4gKiBAZXhhbXBsZSBleGFtcGxlLmNvbVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIG9uIGNsaWVudCBzcGFucyBhbmQgYGNsaWVudC5hZGRyZXNzYCBvbiBzZXJ2ZXIgc3BhbnMuXG4gKi9cbmV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICpcbiAqIEBleGFtcGxlIDgwODBcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICovXG5leHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9ICduZXQucGVlci5wb3J0Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbWNvbnYuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DEFAULT_CONFIG = exports.EndOperation = void 0;\nvar EndOperation;\n(function (EndOperation) {\n EndOperation[\"AutoAck\"] = \"auto ack\";\n EndOperation[\"Ack\"] = \"ack\";\n EndOperation[\"AckAll\"] = \"ackAll\";\n EndOperation[\"Reject\"] = \"reject\";\n EndOperation[\"Nack\"] = \"nack\";\n EndOperation[\"NackAll\"] = \"nackAll\";\n EndOperation[\"ChannelClosed\"] = \"channel closed\";\n EndOperation[\"ChannelError\"] = \"channel error\";\n EndOperation[\"InstrumentationTimeout\"] = \"instrumentation timeout\";\n})(EndOperation = exports.EndOperation || (exports.EndOperation = {}));\nexports.DEFAULT_CONFIG = {\n consumeTimeoutMs: 1000 * 60,\n useLinksForConsume: false,\n};\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3R5cGVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELHNCQUFzQixHQUFHLG9CQUFvQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQywwQ0FBMEMsb0JBQW9CLEtBQUs7QUFDcEUsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1hbXFwbGliQDAuNjEuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1hbXFwbGliL2J1aWxkL3NyYy90eXBlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuREVGQVVMVF9DT05GSUcgPSBleHBvcnRzLkVuZE9wZXJhdGlvbiA9IHZvaWQgMDtcbnZhciBFbmRPcGVyYXRpb247XG4oZnVuY3Rpb24gKEVuZE9wZXJhdGlvbikge1xuICAgIEVuZE9wZXJhdGlvbltcIkF1dG9BY2tcIl0gPSBcImF1dG8gYWNrXCI7XG4gICAgRW5kT3BlcmF0aW9uW1wiQWNrXCJdID0gXCJhY2tcIjtcbiAgICBFbmRPcGVyYXRpb25bXCJBY2tBbGxcIl0gPSBcImFja0FsbFwiO1xuICAgIEVuZE9wZXJhdGlvbltcIlJlamVjdFwiXSA9IFwicmVqZWN0XCI7XG4gICAgRW5kT3BlcmF0aW9uW1wiTmFja1wiXSA9IFwibmFja1wiO1xuICAgIEVuZE9wZXJhdGlvbltcIk5hY2tBbGxcIl0gPSBcIm5hY2tBbGxcIjtcbiAgICBFbmRPcGVyYXRpb25bXCJDaGFubmVsQ2xvc2VkXCJdID0gXCJjaGFubmVsIGNsb3NlZFwiO1xuICAgIEVuZE9wZXJhdGlvbltcIkNoYW5uZWxFcnJvclwiXSA9IFwiY2hhbm5lbCBlcnJvclwiO1xuICAgIEVuZE9wZXJhdGlvbltcIkluc3RydW1lbnRhdGlvblRpbWVvdXRcIl0gPSBcImluc3RydW1lbnRhdGlvbiB0aW1lb3V0XCI7XG59KShFbmRPcGVyYXRpb24gPSBleHBvcnRzLkVuZE9wZXJhdGlvbiB8fCAoZXhwb3J0cy5FbmRPcGVyYXRpb24gPSB7fSkpO1xuZXhwb3J0cy5ERUZBVUxUX0NPTkZJRyA9IHtcbiAgICBjb25zdW1lVGltZW91dE1zOiAxMDAwICogNjAsXG4gICAgdXNlTGlua3NGb3JDb25zdW1lOiBmYWxzZSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.isConfirmChannelTracing = exports.unmarkConfirmChannelTracing = exports.markConfirmChannelTracing = exports.getConnectionAttributesFromUrl = exports.getConnectionAttributesFromServer = exports.normalizeExchange = exports.CONNECTION_ATTRIBUTES = exports.CHANNEL_CONSUME_TIMEOUT_TIMER = exports.CHANNEL_SPANS_NOT_ENDED = exports.MESSAGE_STORED_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\nconst semantic_conventions_1 = __webpack_require__(/*! @opentelemetry/semantic-conventions */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+semantic-conventions@1.40.0/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js\");\nconst semconv_obsolete_1 = __webpack_require__(/*! ../src/semconv-obsolete */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js\");\nexports.MESSAGE_STORED_SPAN = Symbol('opentelemetry.amqplib.message.stored-span');\nexports.CHANNEL_SPANS_NOT_ENDED = Symbol('opentelemetry.amqplib.channel.spans-not-ended');\nexports.CHANNEL_CONSUME_TIMEOUT_TIMER = Symbol('opentelemetry.amqplib.channel.consumer-timeout-timer');\nexports.CONNECTION_ATTRIBUTES = Symbol('opentelemetry.amqplib.connection.attributes');\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY = (0, api_1.createContextKey)('opentelemetry.amqplib.channel.is-confirm-channel');\nconst normalizeExchange = (exchangeName) => exchangeName !== '' ? exchangeName : '<default>';\nexports.normalizeExchange = normalizeExchange;\nconst censorPassword = (url) => {\n return url.replace(/:[^:@/]*@/, ':***@');\n};\nconst getPort = (portFromUrl, resolvedProtocol) => {\n // we are using the resolved protocol which is upper case\n // this code mimic the behavior of the amqplib which is used to set connection params\n return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\nconst getProtocol = (protocolFromUrl) => {\n const resolvedProtocol = protocolFromUrl || 'amqp';\n // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n const noEndingColon = resolvedProtocol.endsWith(':')\n ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n : resolvedProtocol;\n // upper cases to match spec\n return noEndingColon.toUpperCase();\n};\nconst getHostname = (hostnameFromUrl) => {\n // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n return hostnameFromUrl || 'localhost';\n};\nconst extractConnectionAttributeOrLog = (url, attributeKey, attributeValue, nameForLog) => {\n if (attributeValue) {\n return { [attributeKey]: attributeValue };\n }\n else {\n api_1.diag.error(`amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`, {\n url,\n });\n return {};\n }\n};\nconst getConnectionAttributesFromServer = (conn) => {\n const product = conn.serverProperties.product?.toLowerCase?.();\n if (product) {\n return {\n [semconv_1.ATTR_MESSAGING_SYSTEM]: product,\n };\n }\n else {\n return {};\n }\n};\nexports.getConnectionAttributesFromServer = getConnectionAttributesFromServer;\nconst getConnectionAttributesFromUrl = (url, netSemconvStability) => {\n const attributes = {\n [semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n };\n url = url || 'amqp://localhost';\n if (typeof url === 'object') {\n const connectOptions = url;\n const protocol = getProtocol(connectOptions?.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(url, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n });\n const hostname = getHostname(connectOptions?.hostname);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n });\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n });\n }\n const port = getPort(connectOptions.port, protocol);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n }\n }\n else {\n const censoredUrl = censorPassword(url);\n attributes[semconv_obsolete_1.ATTR_MESSAGING_URL] = censoredUrl;\n try {\n const urlParts = new URL(censoredUrl);\n const protocol = getProtocol(urlParts.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(censoredUrl, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n });\n const hostname = getHostname(urlParts.hostname);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n });\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n });\n }\n const port = getPort(urlParts.port ? parseInt(urlParts.port) : undefined, protocol);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n }\n }\n catch (err) {\n api_1.diag.error('amqplib instrumentation: error while extracting connection details from connection url', {\n censoredUrl,\n err,\n });\n }\n }\n return attributes;\n};\nexports.getConnectionAttributesFromUrl = getConnectionAttributesFromUrl;\nconst markConfirmChannelTracing = (context) => {\n return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\nexports.markConfirmChannelTracing = markConfirmChannelTracing;\nconst unmarkConfirmChannelTracing = (context) => {\n return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\nexports.unmarkConfirmChannelTracing = unmarkConfirmChannelTracing;\nconst isConfirmChannelTracing = (context) => {\n return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\nexports.isConfirmChannelTracing = isConfirmChannelTracing;\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3V0aWxzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELCtCQUErQixHQUFHLG1DQUFtQyxHQUFHLGlDQUFpQyxHQUFHLHNDQUFzQyxHQUFHLHlDQUF5QyxHQUFHLHlCQUF5QixHQUFHLDZCQUE2QixHQUFHLHFDQUFxQyxHQUFHLCtCQUErQixHQUFHLDJCQUEyQjtBQUNsVztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFPLENBQUMsa0lBQW9CO0FBQzFDLDBCQUEwQixtQkFBTyxDQUFDLGlNQUFnQztBQUNsRSwrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUUsa0JBQWtCLG1CQUFPLENBQUMsNkxBQVc7QUFDckMsMkJBQTJCLG1CQUFPLENBQUMsb05BQXlCO0FBQzVELDJCQUEyQjtBQUMzQiwrQkFBK0I7QUFDL0IscUNBQXFDO0FBQ3JDLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsNEZBQTRGLFlBQVk7QUFDeEc7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1hbXFwbGliQDAuNjEuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1hbXFwbGliL2J1aWxkL3NyYy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNDb25maXJtQ2hhbm5lbFRyYWNpbmcgPSBleHBvcnRzLnVubWFya0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IGV4cG9ydHMubWFya0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IGV4cG9ydHMuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsID0gZXhwb3J0cy5nZXRDb25uZWN0aW9uQXR0cmlidXRlc0Zyb21TZXJ2ZXIgPSBleHBvcnRzLm5vcm1hbGl6ZUV4Y2hhbmdlID0gZXhwb3J0cy5DT05ORUNUSU9OX0FUVFJJQlVURVMgPSBleHBvcnRzLkNIQU5ORUxfQ09OU1VNRV9USU1FT1VUX1RJTUVSID0gZXhwb3J0cy5DSEFOTkVMX1NQQU5TX05PVF9FTkRFRCA9IGV4cG9ydHMuTUVTU0FHRV9TVE9SRURfU1BBTiA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5jb25zdCBhcGlfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9hcGlcIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1hbnRpY19jb252ZW50aW9uc18xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zXCIpO1xuY29uc3Qgc2VtY29udl8xID0gcmVxdWlyZShcIi4vc2VtY29udlwiKTtcbmNvbnN0IHNlbWNvbnZfb2Jzb2xldGVfMSA9IHJlcXVpcmUoXCIuLi9zcmMvc2VtY29udi1vYnNvbGV0ZVwiKTtcbmV4cG9ydHMuTUVTU0FHRV9TVE9SRURfU1BBTiA9IFN5bWJvbCgnb3BlbnRlbGVtZXRyeS5hbXFwbGliLm1lc3NhZ2Uuc3RvcmVkLXNwYW4nKTtcbmV4cG9ydHMuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERUQgPSBTeW1ib2woJ29wZW50ZWxlbWV0cnkuYW1xcGxpYi5jaGFubmVsLnNwYW5zLW5vdC1lbmRlZCcpO1xuZXhwb3J0cy5DSEFOTkVMX0NPTlNVTUVfVElNRU9VVF9USU1FUiA9IFN5bWJvbCgnb3BlbnRlbGVtZXRyeS5hbXFwbGliLmNoYW5uZWwuY29uc3VtZXItdGltZW91dC10aW1lcicpO1xuZXhwb3J0cy5DT05ORUNUSU9OX0FUVFJJQlVURVMgPSBTeW1ib2woJ29wZW50ZWxlbWV0cnkuYW1xcGxpYi5jb25uZWN0aW9uLmF0dHJpYnV0ZXMnKTtcbmNvbnN0IElTX0NPTkZJUk1fQ0hBTk5FTF9DT05URVhUX0tFWSA9ICgwLCBhcGlfMS5jcmVhdGVDb250ZXh0S2V5KSgnb3BlbnRlbGVtZXRyeS5hbXFwbGliLmNoYW5uZWwuaXMtY29uZmlybS1jaGFubmVsJyk7XG5jb25zdCBub3JtYWxpemVFeGNoYW5nZSA9IChleGNoYW5nZU5hbWUpID0+IGV4Y2hhbmdlTmFtZSAhPT0gJycgPyBleGNoYW5nZU5hbWUgOiAnPGRlZmF1bHQ+JztcbmV4cG9ydHMubm9ybWFsaXplRXhjaGFuZ2UgPSBub3JtYWxpemVFeGNoYW5nZTtcbmNvbnN0IGNlbnNvclBhc3N3b3JkID0gKHVybCkgPT4ge1xuICAgIHJldHVybiB1cmwucmVwbGFjZSgvOlteOkAvXSpALywgJzoqKipAJyk7XG59O1xuY29uc3QgZ2V0UG9ydCA9IChwb3J0RnJvbVVybCwgcmVzb2x2ZWRQcm90b2NvbCkgPT4ge1xuICAgIC8vIHdlIGFyZSB1c2luZyB0aGUgcmVzb2x2ZWQgcHJvdG9jb2wgd2hpY2ggaXMgdXBwZXIgY2FzZVxuICAgIC8vIHRoaXMgY29kZSBtaW1pYyB0aGUgYmVoYXZpb3Igb2YgdGhlIGFtcXBsaWIgd2hpY2ggaXMgdXNlZCB0byBzZXQgY29ubmVjdGlvbiBwYXJhbXNcbiAgICByZXR1cm4gcG9ydEZyb21VcmwgfHwgKHJlc29sdmVkUHJvdG9jb2wgPT09ICdBTVFQJyA/IDU2NzIgOiA1NjcxKTtcbn07XG5jb25zdCBnZXRQcm90b2NvbCA9IChwcm90b2NvbEZyb21VcmwpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFByb3RvY29sID0gcHJvdG9jb2xGcm9tVXJsIHx8ICdhbXFwJztcbiAgICAvLyB0aGUgc3Vic3RyaW5nIHJlbW92ZWQgdGhlICc6JyBwYXJ0IG9mIHRoZSBwcm90b2NvbCAoJ2FtcXA6JyAtPiAnYW1xcCcpXG4gICAgY29uc3Qgbm9FbmRpbmdDb2xvbiA9IHJlc29sdmVkUHJvdG9jb2wuZW5kc1dpdGgoJzonKVxuICAgICAgICA/IHJlc29sdmVkUHJvdG9jb2wuc3Vic3RyaW5nKDAsIHJlc29sdmVkUHJvdG9jb2wubGVuZ3RoIC0gMSlcbiAgICAgICAgOiByZXNvbHZlZFByb3RvY29sO1xuICAgIC8vIHVwcGVyIGNhc2VzIHRvIG1hdGNoIHNwZWNcbiAgICByZXR1cm4gbm9FbmRpbmdDb2xvbi50b1VwcGVyQ2FzZSgpO1xufTtcbmNvbnN0IGdldEhvc3RuYW1lID0gKGhvc3RuYW1lRnJvbVVybCkgPT4ge1xuICAgIC8vIGlmIHVzZXIgc3VwcGxpZXMgZW1wdHkgaG9zdG5hbWUsIGl0IGdldHMgZm9yd2FyZGVkIHRvICduZXQnIHBhY2thZ2Ugd2hpY2ggZGVmYXVsdCBpdCB0byBsb2NhbGhvc3QuXG4gICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2RvY3MvbGF0ZXN0LXYxMi54L2FwaS9uZXQuaHRtbCNuZXRfc29ja2V0X2Nvbm5lY3Rfb3B0aW9uc19jb25uZWN0bGlzdGVuZXJcbiAgICByZXR1cm4gaG9zdG5hbWVGcm9tVXJsIHx8ICdsb2NhbGhvc3QnO1xufTtcbmNvbnN0IGV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2cgPSAodXJsLCBhdHRyaWJ1dGVLZXksIGF0dHJpYnV0ZVZhbHVlLCBuYW1lRm9yTG9nKSA9PiB7XG4gICAgaWYgKGF0dHJpYnV0ZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7IFthdHRyaWJ1dGVLZXldOiBhdHRyaWJ1dGVWYWx1ZSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgYXBpXzEuZGlhZy5lcnJvcihgYW1xcGxpYiBpbnN0cnVtZW50YXRpb246IGNvdWxkIG5vdCBleHRyYWN0IGNvbm5lY3Rpb24gYXR0cmlidXRlICR7bmFtZUZvckxvZ30gZnJvbSB1c2VyIHN1cHBsaWVkIHVybGAsIHtcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59O1xuY29uc3QgZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tU2VydmVyID0gKGNvbm4pID0+IHtcbiAgICBjb25zdCBwcm9kdWN0ID0gY29ubi5zZXJ2ZXJQcm9wZXJ0aWVzLnByb2R1Y3Q/LnRvTG93ZXJDYXNlPy4oKTtcbiAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX01FU1NBR0lOR19TWVNURU1dOiBwcm9kdWN0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbn07XG5leHBvcnRzLmdldENvbm5lY3Rpb25BdHRyaWJ1dGVzRnJvbVNlcnZlciA9IGdldENvbm5lY3Rpb25BdHRyaWJ1dGVzRnJvbVNlcnZlcjtcbmNvbnN0IGdldENvbm5lY3Rpb25BdHRyaWJ1dGVzRnJvbVVybCA9ICh1cmwsIG5ldFNlbWNvbnZTdGFiaWxpdHkpID0+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLkFUVFJfTUVTU0FHSU5HX1BST1RPQ09MX1ZFUlNJT05dOiAnMC45LjEnLCAvLyB0aGlzIGlzIHRoZSBvbmx5IHByb3RvY29sIHN1cHBvcnRlZCBieSB0aGUgaW5zdHJ1bWVudGVkIGxpYnJhcnlcbiAgICB9O1xuICAgIHVybCA9IHVybCB8fCAnYW1xcDovL2xvY2FsaG9zdCc7XG4gICAgaWYgKHR5cGVvZiB1cmwgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3RPcHRpb25zID0gdXJsO1xuICAgICAgICBjb25zdCBwcm90b2NvbCA9IGdldFByb3RvY29sKGNvbm5lY3RPcHRpb25zPy5wcm90b2NvbCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywge1xuICAgICAgICAgICAgLi4uZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyh1cmwsIHNlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19QUk9UT0NPTCwgcHJvdG9jb2wsICdwcm90b2NvbCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaG9zdG5hbWUgPSBnZXRIb3N0bmFtZShjb25uZWN0T3B0aW9ucz8uaG9zdG5hbWUpO1xuICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIHtcbiAgICAgICAgICAgICAgICAuLi5leHRyYWN0Q29ubmVjdGlvbkF0dHJpYnV0ZU9yTG9nKHVybCwgc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfTkFNRSwgaG9zdG5hbWUsICdob3N0bmFtZScpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ldFNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhdHRyaWJ1dGVzLCB7XG4gICAgICAgICAgICAgICAgLi4uZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyh1cmwsIHNlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9TRVJWRVJfQUREUkVTUywgaG9zdG5hbWUsICdob3N0bmFtZScpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9ydCA9IGdldFBvcnQoY29ubmVjdE9wdGlvbnMucG9ydCwgcHJvdG9jb2wpO1xuICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIGV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2codXJsLCBzZW1jb252XzEuQVRUUl9ORVRfUEVFUl9QT1JULCBwb3J0LCAncG9ydCcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIGV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2codXJsLCBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlQsIHBvcnQsICdwb3J0JykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBjZW5zb3JlZFVybCA9IGNlbnNvclBhc3N3b3JkKHVybCk7XG4gICAgICAgIGF0dHJpYnV0ZXNbc2VtY29udl9vYnNvbGV0ZV8xLkFUVFJfTUVTU0FHSU5HX1VSTF0gPSBjZW5zb3JlZFVybDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHVybFBhcnRzID0gbmV3IFVSTChjZW5zb3JlZFVybCk7XG4gICAgICAgICAgICBjb25zdCBwcm90b2NvbCA9IGdldFByb3RvY29sKHVybFBhcnRzLnByb3RvY29sKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywge1xuICAgICAgICAgICAgICAgIC4uLmV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2coY2Vuc29yZWRVcmwsIHNlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19QUk9UT0NPTCwgcHJvdG9jb2wsICdwcm90b2NvbCcpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBob3N0bmFtZSA9IGdldEhvc3RuYW1lKHVybFBhcnRzLmhvc3RuYW1lKTtcbiAgICAgICAgICAgIGlmIChuZXRTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyhjZW5zb3JlZFVybCwgc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfTkFNRSwgaG9zdG5hbWUsICdob3N0bmFtZScpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5ldFNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywge1xuICAgICAgICAgICAgICAgICAgICAuLi5leHRyYWN0Q29ubmVjdGlvbkF0dHJpYnV0ZU9yTG9nKGNlbnNvcmVkVXJsLCBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX0FERFJFU1MsIGhvc3RuYW1lLCAnaG9zdG5hbWUnKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSBnZXRQb3J0KHVybFBhcnRzLnBvcnQgPyBwYXJzZUludCh1cmxQYXJ0cy5wb3J0KSA6IHVuZGVmaW5lZCwgcHJvdG9jb2wpO1xuICAgICAgICAgICAgaWYgKG5ldFNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywgZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyhjZW5zb3JlZFVybCwgc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfUE9SVCwgcG9ydCwgJ3BvcnQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhdHRyaWJ1dGVzLCBleHRyYWN0Q29ubmVjdGlvbkF0dHJpYnV0ZU9yTG9nKGNlbnNvcmVkVXJsLCBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlQsIHBvcnQsICdwb3J0JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ2FtcXBsaWIgaW5zdHJ1bWVudGF0aW9uOiBlcnJvciB3aGlsZSBleHRyYWN0aW5nIGNvbm5lY3Rpb24gZGV0YWlscyBmcm9tIGNvbm5lY3Rpb24gdXJsJywge1xuICAgICAgICAgICAgICAgIGNlbnNvcmVkVXJsLFxuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xufTtcbmV4cG9ydHMuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsID0gZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsO1xuY29uc3QgbWFya0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IChjb250ZXh0KSA9PiB7XG4gICAgcmV0dXJuIGNvbnRleHQuc2V0VmFsdWUoSVNfQ09ORklSTV9DSEFOTkVMX0NPTlRFWFRfS0VZLCB0cnVlKTtcbn07XG5leHBvcnRzLm1hcmtDb25maXJtQ2hhbm5lbFRyYWNpbmcgPSBtYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nO1xuY29uc3QgdW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nID0gKGNvbnRleHQpID0+IHtcbiAgICByZXR1cm4gY29udGV4dC5kZWxldGVWYWx1ZShJU19DT05GSVJNX0NIQU5ORUxfQ09OVEVYVF9LRVkpO1xufTtcbmV4cG9ydHMudW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nID0gdW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nO1xuY29uc3QgaXNDb25maXJtQ2hhbm5lbFRyYWNpbmcgPSAoY29udGV4dCkgPT4ge1xuICAgIHJldHVybiBjb250ZXh0LmdldFZhbHVlKElTX0NPTkZJUk1fQ0hBTk5FTF9DT05URVhUX0tFWSkgPT09IHRydWU7XG59O1xuZXhwb3J0cy5pc0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IGlzQ29uZmlybUNoYW5uZWxUcmFjaW5nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js ***!
\****************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsb0JBQW9CLEdBQUcsdUJBQXVCO0FBQzlDO0FBQ0EsdUJBQXVCO0FBQ3ZCLG9CQUFvQjtBQUNwQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tYW1xcGxpYkAwLjYxLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tYW1xcGxpYi9idWlsZC9zcmMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBBQ0tBR0VfTkFNRSA9IGV4cG9ydHMuUEFDS0FHRV9WRVJTSU9OID0gdm9pZCAwO1xuLy8gdGhpcyBpcyBhdXRvZ2VuZXJhdGVkIGZpbGUsIHNlZSBzY3JpcHRzL3ZlcnNpb24tdXBkYXRlLmpzXG5leHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9ICcwLjYxLjAnO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSAnQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWInO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVyc2lvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js ***!
\****************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst core_1 = __webpack_require__(/*! @opentelemetry/core */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+core@2.6.1_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/core/build/esm/index.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js\");\nconst semconv_obsolete_1 = __webpack_require__(/*! ../src/semconv-obsolete */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js\");\nconst types_1 = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js\");\nconst utils_1 = __webpack_require__(/*! ./utils */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js\");\nconst supportedVersions = ['>=0.5.5 <1'];\nclass AmqplibInstrumentation extends instrumentation_1.InstrumentationBase {\n _netSemconvStability;\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...types_1.DEFAULT_CONFIG, ...config });\n this._setSemconvStabilityFromEnv();\n }\n // Used for testing.\n _setSemconvStabilityFromEnv() {\n this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n setConfig(config = {}) {\n super.setConfig({ ...types_1.DEFAULT_CONFIG, ...config });\n }\n init() {\n const channelModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/channel_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n const callbackModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/callback_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n const connectModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/connect.js', supportedVersions, this.patchConnect.bind(this), this.unpatchConnect.bind(this));\n const module = new instrumentation_1.InstrumentationNodeModuleDefinition('amqplib', supportedVersions, undefined, undefined, [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]);\n return module;\n }\n patchConnect(moduleExports) {\n moduleExports = this.unpatchConnect(moduleExports);\n if (!(0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n }\n return moduleExports;\n }\n unpatchConnect(moduleExports) {\n if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n this._unwrap(moduleExports, 'connect');\n }\n return moduleExports;\n }\n patchChannelModel(moduleExports, moduleVersion) {\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n this._wrap(moduleExports.Channel.prototype, 'publish', this.getPublishPatch.bind(this, moduleVersion));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n this._wrap(moduleExports.Channel.prototype, 'consume', this.getConsumePatch.bind(this, moduleVersion));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n this._wrap(moduleExports.Channel.prototype, 'ack', this.getAckPatch.bind(this, false, types_1.EndOperation.Ack));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n this._wrap(moduleExports.Channel.prototype, 'nack', this.getAckPatch.bind(this, true, types_1.EndOperation.Nack));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n this._wrap(moduleExports.Channel.prototype, 'reject', this.getAckPatch.bind(this, true, types_1.EndOperation.Reject));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n this._wrap(moduleExports.Channel.prototype, 'ackAll', this.getAckAllPatch.bind(this, false, types_1.EndOperation.AckAll));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n this._wrap(moduleExports.Channel.prototype, 'nackAll', this.getAckAllPatch.bind(this, true, types_1.EndOperation.NackAll));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n this._wrap(moduleExports.Channel.prototype, 'emit', this.getChannelEmitPatch.bind(this));\n }\n if (!(0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n this._wrap(moduleExports.ConfirmChannel.prototype, 'publish', this.getConfirmedPublishPatch.bind(this, moduleVersion));\n }\n return moduleExports;\n }\n unpatchChannelModel(moduleExports) {\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n this._unwrap(moduleExports.Channel.prototype, 'publish');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n this._unwrap(moduleExports.Channel.prototype, 'consume');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n this._unwrap(moduleExports.Channel.prototype, 'ack');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n this._unwrap(moduleExports.Channel.prototype, 'nack');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n this._unwrap(moduleExports.Channel.prototype, 'reject');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n this._unwrap(moduleExports.Channel.prototype, 'emit');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n }\n return moduleExports;\n }\n getConnectPatch(original) {\n const self = this;\n return function patchedConnect(url, socketOptions, openCallback) {\n return original.call(this, url, socketOptions, function (err, conn) {\n if (err == null) {\n const urlAttributes = (0, utils_1.getConnectionAttributesFromUrl)(url, self._netSemconvStability);\n const serverAttributes = (0, utils_1.getConnectionAttributesFromServer)(conn);\n conn[utils_1.CONNECTION_ATTRIBUTES] = {\n ...urlAttributes,\n ...serverAttributes,\n };\n }\n openCallback.apply(this, arguments);\n });\n };\n }\n getChannelEmitPatch(original) {\n const self = this;\n return function emit(eventName) {\n if (eventName === 'close') {\n self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelClosed, undefined);\n const activeTimer = this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER];\n if (activeTimer) {\n clearInterval(activeTimer);\n }\n this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n }\n else if (eventName === 'error') {\n self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelError, undefined);\n }\n return original.apply(this, arguments);\n };\n }\n getAckAllPatch(isRejected, endOperation, original) {\n const self = this;\n return function ackAll(requeueOrEmpty) {\n self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n return original.apply(this, arguments);\n };\n }\n getAckPatch(isRejected, endOperation, original) {\n const self = this;\n return function ack(message, allUpToOrRequeue, requeue) {\n const channel = this;\n // we use this patch in reject function as well, but it has different signature\n const requeueResolved = endOperation === types_1.EndOperation.Reject ? allUpToOrRequeue : requeue;\n const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n const msgIndex = spansNotEnded.findIndex(msgDetails => msgDetails.msg === message);\n if (msgIndex < 0) {\n // should not happen in happy flow\n // but possible if user is calling the api function ack twice with same message\n self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n }\n else if (endOperation !== types_1.EndOperation.Reject && allUpToOrRequeue) {\n for (let i = 0; i <= msgIndex; i++) {\n self.endConsumerSpan(spansNotEnded[i].msg, isRejected, endOperation, requeueResolved);\n }\n spansNotEnded.splice(0, msgIndex + 1);\n }\n else {\n self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n spansNotEnded.splice(msgIndex, 1);\n }\n return original.apply(this, arguments);\n };\n }\n getConsumePatch(moduleVersion, original) {\n const self = this;\n return function consume(queue, onMessage, options) {\n const channel = this;\n if (!Object.prototype.hasOwnProperty.call(channel, utils_1.CHANNEL_SPANS_NOT_ENDED)) {\n const { consumeTimeoutMs } = self.getConfig();\n if (consumeTimeoutMs) {\n const timer = setInterval(() => {\n self.checkConsumeTimeoutOnChannel(channel);\n }, consumeTimeoutMs);\n timer.unref();\n channel[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n }\n channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n }\n const patchedOnMessage = function (msg) {\n // msg is expected to be null for signaling consumer cancel notification\n // https://www.rabbitmq.com/consumer-cancel.html\n // in this case, we do not start a span, as this is not a real message.\n if (!msg) {\n return onMessage.call(this, msg);\n }\n const headers = msg.properties.headers ?? {};\n let parentContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers);\n const exchange = msg.fields?.exchange;\n let links;\n if (self._config.useLinksForConsume) {\n const parentSpanContext = parentContext\n ? api_1.trace.getSpan(parentContext)?.spanContext()\n : undefined;\n parentContext = undefined;\n if (parentSpanContext) {\n links = [\n {\n context: parentSpanContext,\n },\n ];\n }\n }\n const span = self.tracer.startSpan(`${queue} process`, {\n kind: api_1.SpanKind.CONSUMER,\n attributes: {\n ...channel?.connection?.[utils_1.CONNECTION_ATTRIBUTES],\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n [semconv_1.ATTR_MESSAGING_OPERATION]: semconv_obsolete_1.MESSAGING_OPERATION_VALUE_PROCESS,\n [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n },\n links,\n }, parentContext);\n const { consumeHook } = self.getConfig();\n if (consumeHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeHook(span, { moduleVersion, msg }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: consumerHook error', e);\n }\n }, true);\n }\n if (!options?.noAck) {\n // store the message on the channel so we can close the span on ackAll etc\n channel[utils_1.CHANNEL_SPANS_NOT_ENDED].push({\n msg,\n timeOfConsume: (0, core_1.hrTime)(),\n });\n // store the span on the message, so we can end it when user call 'ack' on it\n msg[utils_1.MESSAGE_STORED_SPAN] = span;\n }\n const setContext = parentContext\n ? parentContext\n : api_1.ROOT_CONTEXT;\n api_1.context.with(api_1.trace.setSpan(setContext, span), () => {\n onMessage.call(this, msg);\n });\n if (options?.noAck) {\n self.callConsumeEndHook(span, msg, false, types_1.EndOperation.AutoAck);\n span.end();\n }\n };\n arguments[1] = patchedOnMessage;\n return original.apply(this, arguments);\n };\n }\n getConfirmedPublishPatch(moduleVersion, original) {\n const self = this;\n return function confirmedPublish(exchange, routingKey, content, options, callback) {\n const channel = this;\n const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n const { publishHook } = self.getConfig();\n if (publishHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options: modifiedOptions,\n isConfirmChannel: true,\n }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: publishHook error', e);\n }\n }, true);\n }\n const patchedOnConfirm = function (err, ok) {\n try {\n callback?.call(this, err, ok);\n }\n finally {\n const { publishConfirmHook } = self.getConfig();\n if (publishConfirmHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishConfirmHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options,\n isConfirmChannel: true,\n confirmError: err,\n }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: publishConfirmHook error', e);\n }\n }, true);\n }\n if (err) {\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: \"message confirmation has been nack'ed\",\n });\n }\n span.end();\n }\n };\n // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm.\n // span ends in the patched callback.\n const markedContext = (0, utils_1.markConfirmChannelTracing)(api_1.context.active());\n const argumentsCopy = [...arguments];\n argumentsCopy[3] = modifiedOptions;\n argumentsCopy[4] = api_1.context.bind((0, utils_1.unmarkConfirmChannelTracing)(api_1.trace.setSpan(markedContext, span)), patchedOnConfirm);\n return api_1.context.with(markedContext, original.bind(this, ...argumentsCopy));\n };\n }\n getPublishPatch(moduleVersion, original) {\n const self = this;\n return function publish(exchange, routingKey, content, options) {\n if ((0, utils_1.isConfirmChannelTracing)(api_1.context.active())) {\n // work already done\n return original.apply(this, arguments);\n }\n else {\n const channel = this;\n const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n const { publishHook } = self.getConfig();\n if (publishHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n moduleVersion,\n exchange,\n routingKey,\n content,\n options: modifiedOptions,\n isConfirmChannel: false,\n }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: publishHook error', e);\n }\n }, true);\n }\n // calling normal channel publish function is only storing the message in queue.\n // it does not send it and waits for an ack, so the span duration is expected to be very short.\n const argumentsCopy = [...arguments];\n argumentsCopy[3] = modifiedOptions;\n const originalRes = original.apply(this, argumentsCopy);\n span.end();\n return originalRes;\n }\n };\n }\n createPublishSpan(self, exchange, routingKey, channel, options) {\n const normalizedExchange = (0, utils_1.normalizeExchange)(exchange);\n const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n kind: api_1.SpanKind.PRODUCER,\n attributes: {\n ...channel.connection[utils_1.CONNECTION_ATTRIBUTES],\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n },\n });\n const modifiedOptions = options ?? {};\n modifiedOptions.headers = modifiedOptions.headers ?? {};\n api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), modifiedOptions.headers);\n return { span, modifiedOptions };\n }\n endConsumerSpan(message, isRejected, operation, requeue) {\n const storedSpan = message[utils_1.MESSAGE_STORED_SPAN];\n if (!storedSpan)\n return;\n if (isRejected !== false) {\n storedSpan.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: operation !== types_1.EndOperation.ChannelClosed &&\n operation !== types_1.EndOperation.ChannelError\n ? `${operation} called on message${requeue === true\n ? ' with requeue'\n : requeue === false\n ? ' without requeue'\n : ''}`\n : operation,\n });\n }\n this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n storedSpan.end();\n message[utils_1.MESSAGE_STORED_SPAN] = undefined;\n }\n endAllSpansOnChannel(channel, isRejected, operation, requeue) {\n const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n spansNotEnded.forEach(msgDetails => {\n this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n });\n channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n }\n callConsumeEndHook(span, msg, rejected, endOperation) {\n const { consumeEndHook } = this.getConfig();\n if (!consumeEndHook)\n return;\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeEndHook(span, { msg, rejected, endOperation }), e => {\n if (e) {\n api_1.diag.error('amqplib instrumentation: consumerEndHook error', e);\n }\n }, true);\n }\n checkConsumeTimeoutOnChannel(channel) {\n const currentTime = (0, core_1.hrTime)();\n const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n let i;\n const { consumeTimeoutMs } = this.getConfig();\n for (i = 0; i < spansNotEnded.length; i++) {\n const currMessage = spansNotEnded[i];\n const timeFromConsume = (0, core_1.hrTimeDuration)(currMessage.timeOfConsume, currentTime);\n if ((0, core_1.hrTimeToMilliseconds)(timeFromConsume) < consumeTimeoutMs) {\n break;\n }\n this.endConsumerSpan(currMessage.msg, null, types_1.EndOperation.InstrumentationTimeout, true);\n }\n spansNotEnded.splice(0, i);\n }\n}\nexports.AmqplibInstrumentation = AmqplibInstrumentation;\n//# sourceMappingURL=amqplib.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2FtcXBsaWIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLDhKQUFxQjtBQUM1QywwQkFBMEIsbUJBQU8sQ0FBQyxpTUFBZ0M7QUFDbEUsa0JBQWtCLG1CQUFPLENBQUMsNkxBQVc7QUFDckMsMkJBQTJCLG1CQUFPLENBQUMsb05BQXlCO0FBQzVELGdCQUFnQixtQkFBTyxDQUFDLHlMQUFTO0FBQ2pDLGdCQUFnQixtQkFBTyxDQUFDLHlMQUFTO0FBQ2pDO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsNkxBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLG1FQUFtRSxzQ0FBc0M7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLDBCQUEwQixzQ0FBc0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsZUFBZTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixtQkFBbUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxPQUFPO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLGlCQUFpQjtBQUNqQix3QkFBd0IsY0FBYztBQUN0QztBQUNBLDRGQUE0RixvQkFBb0I7QUFDaEg7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdCQUF3QjtBQUM1QyxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQsd0JBQXdCLGNBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsbUJBQW1CO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixXQUFXLG1CQUFtQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixpQkFBaUI7QUFDakM7QUFDQTtBQUNBLG1GQUFtRiw2QkFBNkI7QUFDaEg7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQW1CO0FBQ25DLG9CQUFvQiwwQkFBMEI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2FtcXBsaWIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFtcXBsaWJJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuY29uc3QgYXBpXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvYXBpXCIpO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2NvcmVcIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuY29uc3Qgc2VtY29udl9vYnNvbGV0ZV8xID0gcmVxdWlyZShcIi4uL3NyYy9zZW1jb252LW9ic29sZXRlXCIpO1xuY29uc3QgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuLyoqIEBrbmlwaWdub3JlICovXG5jb25zdCB2ZXJzaW9uXzEgPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xuY29uc3Qgc3VwcG9ydGVkVmVyc2lvbnMgPSBbJz49MC41LjUgPDEnXTtcbmNsYXNzIEFtcXBsaWJJbnN0cnVtZW50YXRpb24gZXh0ZW5kcyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25CYXNlIHtcbiAgICBfbmV0U2VtY29udlN0YWJpbGl0eTtcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgICAgICBzdXBlcih2ZXJzaW9uXzEuUEFDS0FHRV9OQU1FLCB2ZXJzaW9uXzEuUEFDS0FHRV9WRVJTSU9OLCB7IC4uLnR5cGVzXzEuREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9KTtcbiAgICAgICAgdGhpcy5fc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKTtcbiAgICB9XG4gICAgLy8gVXNlZCBmb3IgdGVzdGluZy5cbiAgICBfc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKSB7XG4gICAgICAgIHRoaXMuX25ldFNlbWNvbnZTdGFiaWxpdHkgPSAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2VtY29udlN0YWJpbGl0eUZyb21TdHIpKCdodHRwJywgcHJvY2Vzcy5lbnYuT1RFTF9TRU1DT05WX1NUQUJJTElUWV9PUFRfSU4pO1xuICAgIH1cbiAgICBzZXRDb25maWcoY29uZmlnID0ge30pIHtcbiAgICAgICAgc3VwZXIuc2V0Q29uZmlnKHsgLi4udHlwZXNfMS5ERUZBVUxUX0NPTkZJRywgLi4uY29uZmlnIH0pO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICBjb25zdCBjaGFubmVsTW9kZWxNb2R1bGVGaWxlID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVGaWxlKCdhbXFwbGliL2xpYi9jaGFubmVsX21vZGVsLmpzJywgc3VwcG9ydGVkVmVyc2lvbnMsIHRoaXMucGF0Y2hDaGFubmVsTW9kZWwuYmluZCh0aGlzKSwgdGhpcy51bnBhdGNoQ2hhbm5lbE1vZGVsLmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBjYWxsYmFja01vZGVsTW9kdWxlRmlsZSA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRmlsZSgnYW1xcGxpYi9saWIvY2FsbGJhY2tfbW9kZWwuanMnLCBzdXBwb3J0ZWRWZXJzaW9ucywgdGhpcy5wYXRjaENoYW5uZWxNb2RlbC5iaW5kKHRoaXMpLCB0aGlzLnVucGF0Y2hDaGFubmVsTW9kZWwuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IGNvbm5lY3RNb2R1bGVGaWxlID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVGaWxlKCdhbXFwbGliL2xpYi9jb25uZWN0LmpzJywgc3VwcG9ydGVkVmVyc2lvbnMsIHRoaXMucGF0Y2hDb25uZWN0LmJpbmQodGhpcyksIHRoaXMudW5wYXRjaENvbm5lY3QuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRGVmaW5pdGlvbignYW1xcGxpYicsIHN1cHBvcnRlZFZlcnNpb25zLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW2NoYW5uZWxNb2RlbE1vZHVsZUZpbGUsIGNvbm5lY3RNb2R1bGVGaWxlLCBjYWxsYmFja01vZGVsTW9kdWxlRmlsZV0pO1xuICAgICAgICByZXR1cm4gbW9kdWxlO1xuICAgIH1cbiAgICBwYXRjaENvbm5lY3QobW9kdWxlRXhwb3J0cykge1xuICAgICAgICBtb2R1bGVFeHBvcnRzID0gdGhpcy51bnBhdGNoQ29ubmVjdChtb2R1bGVFeHBvcnRzKTtcbiAgICAgICAgaWYgKCEoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMsICdjb25uZWN0JywgdGhpcy5nZXRDb25uZWN0UGF0Y2guYmluZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZHVsZUV4cG9ydHM7XG4gICAgfVxuICAgIHVucGF0Y2hDb25uZWN0KG1vZHVsZUV4cG9ydHMpIHtcbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuY29ubmVjdCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLCAnY29ubmVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2R1bGVFeHBvcnRzO1xuICAgIH1cbiAgICBwYXRjaENoYW5uZWxNb2RlbChtb2R1bGVFeHBvcnRzLCBtb2R1bGVWZXJzaW9uKSB7XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5wdWJsaXNoKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAncHVibGlzaCcsIHRoaXMuZ2V0UHVibGlzaFBhdGNoLmJpbmQodGhpcywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5jb25zdW1lKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnY29uc3VtZScsIHRoaXMuZ2V0Q29uc3VtZVBhdGNoLmJpbmQodGhpcywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5hY2spKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUsICdhY2snLCB0aGlzLmdldEFja1BhdGNoLmJpbmQodGhpcywgZmFsc2UsIHR5cGVzXzEuRW5kT3BlcmF0aW9uLkFjaykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5uYWNrKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnbmFjaycsIHRoaXMuZ2V0QWNrUGF0Y2guYmluZCh0aGlzLCB0cnVlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5OYWNrKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLnJlamVjdCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ3JlamVjdCcsIHRoaXMuZ2V0QWNrUGF0Y2guYmluZCh0aGlzLCB0cnVlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5SZWplY3QpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUuYWNrQWxsKSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnYWNrQWxsJywgdGhpcy5nZXRBY2tBbGxQYXRjaC5iaW5kKHRoaXMsIGZhbHNlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5BY2tBbGwpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUubmFja0FsbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ25hY2tBbGwnLCB0aGlzLmdldEFja0FsbFBhdGNoLmJpbmQodGhpcywgdHJ1ZSwgdHlwZXNfMS5FbmRPcGVyYXRpb24uTmFja0FsbCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5lbWl0KSkge1xuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnZW1pdCcsIHRoaXMuZ2V0Q2hhbm5lbEVtaXRQYXRjaC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ29uZmlybUNoYW5uZWwucHJvdG90eXBlLnB1Ymxpc2gpKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuQ29uZmlybUNoYW5uZWwucHJvdG90eXBlLCAncHVibGlzaCcsIHRoaXMuZ2V0Q29uZmlybWVkUHVibGlzaFBhdGNoLmJpbmQodGhpcywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2R1bGVFeHBvcnRzO1xuICAgIH1cbiAgICB1bnBhdGNoQ2hhbm5lbE1vZGVsKG1vZHVsZUV4cG9ydHMpIHtcbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUucHVibGlzaCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAncHVibGlzaCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLmNvbnN1bWUpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ2NvbnN1bWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5hY2spKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ2FjaycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLm5hY2spKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ25hY2snKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZS5yZWplY3QpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ3JlamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLmFja0FsbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnYWNrQWxsJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuQ2hhbm5lbC5wcm90b3R5cGUubmFja0FsbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLCAnbmFja0FsbCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLkNoYW5uZWwucHJvdG90eXBlLmVtaXQpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5DaGFubmVsLnByb3RvdHlwZSwgJ2VtaXQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5Db25maXJtQ2hhbm5lbC5wcm90b3R5cGUucHVibGlzaCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkNvbmZpcm1DaGFubmVsLnByb3RvdHlwZSwgJ3B1Ymxpc2gnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kdWxlRXhwb3J0cztcbiAgICB9XG4gICAgZ2V0Q29ubmVjdFBhdGNoKG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gcGF0Y2hlZENvbm5lY3QodXJsLCBzb2NrZXRPcHRpb25zLCBvcGVuQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5jYWxsKHRoaXMsIHVybCwgc29ja2V0T3B0aW9ucywgZnVuY3Rpb24gKGVyciwgY29ubikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxBdHRyaWJ1dGVzID0gKDAsIHV0aWxzXzEuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsKSh1cmwsIHNlbGYuX25ldFNlbWNvbnZTdGFiaWxpdHkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2ZXJBdHRyaWJ1dGVzID0gKDAsIHV0aWxzXzEuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tU2VydmVyKShjb25uKTtcbiAgICAgICAgICAgICAgICAgICAgY29ublt1dGlsc18xLkNPTk5FQ1RJT05fQVRUUklCVVRFU10gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi51cmxBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VydmVyQXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3BlbkNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0Q2hhbm5lbEVtaXRQYXRjaChvcmlnaW5hbCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGVtaXQoZXZlbnROYW1lKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnY2xvc2UnKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5lbmRBbGxTcGFuc09uQ2hhbm5lbCh0aGlzLCB0cnVlLCB0eXBlc18xLkVuZE9wZXJhdGlvbi5DaGFubmVsQ2xvc2VkLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVRpbWVyID0gdGhpc1t1dGlsc18xLkNIQU5ORUxfQ09OU1VNRV9USU1FT1VUX1RJTUVSXTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChhY3RpdmVUaW1lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXNbdXRpbHNfMS5DSEFOTkVMX0NPTlNVTUVfVElNRU9VVF9USU1FUl0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChldmVudE5hbWUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmVuZEFsbFNwYW5zT25DaGFubmVsKHRoaXMsIHRydWUsIHR5cGVzXzEuRW5kT3BlcmF0aW9uLkNoYW5uZWxFcnJvciwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRBY2tBbGxQYXRjaChpc1JlamVjdGVkLCBlbmRPcGVyYXRpb24sIG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gYWNrQWxsKHJlcXVldWVPckVtcHR5KSB7XG4gICAgICAgICAgICBzZWxmLmVuZEFsbFNwYW5zT25DaGFubmVsKHRoaXMsIGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgcmVxdWV1ZU9yRW1wdHkpO1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEFja1BhdGNoKGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgb3JpZ2luYWwpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBhY2sobWVzc2FnZSwgYWxsVXBUb09yUmVxdWV1ZSwgcmVxdWV1ZSkge1xuICAgICAgICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXM7XG4gICAgICAgICAgICAvLyB3ZSB1c2UgdGhpcyBwYXRjaCBpbiByZWplY3QgZnVuY3Rpb24gYXMgd2VsbCwgYnV0IGl0IGhhcyBkaWZmZXJlbnQgc2lnbmF0dXJlXG4gICAgICAgICAgICBjb25zdCByZXF1ZXVlUmVzb2x2ZWQgPSBlbmRPcGVyYXRpb24gPT09IHR5cGVzXzEuRW5kT3BlcmF0aW9uLlJlamVjdCA/IGFsbFVwVG9PclJlcXVldWUgOiByZXF1ZXVlO1xuICAgICAgICAgICAgY29uc3Qgc3BhbnNOb3RFbmRlZCA9IGNoYW5uZWxbdXRpbHNfMS5DSEFOTkVMX1NQQU5TX05PVF9FTkRFRF0gPz8gW107XG4gICAgICAgICAgICBjb25zdCBtc2dJbmRleCA9IHNwYW5zTm90RW5kZWQuZmluZEluZGV4KG1zZ0RldGFpbHMgPT4gbXNnRGV0YWlscy5tc2cgPT09IG1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKG1zZ0luZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBub3QgaGFwcGVuIGluIGhhcHB5IGZsb3dcbiAgICAgICAgICAgICAgICAvLyBidXQgcG9zc2libGUgaWYgdXNlciBpcyBjYWxsaW5nIHRoZSBhcGkgZnVuY3Rpb24gYWNrIHR3aWNlIHdpdGggc2FtZSBtZXNzYWdlXG4gICAgICAgICAgICAgICAgc2VsZi5lbmRDb25zdW1lclNwYW4obWVzc2FnZSwgaXNSZWplY3RlZCwgZW5kT3BlcmF0aW9uLCByZXF1ZXVlUmVzb2x2ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZW5kT3BlcmF0aW9uICE9PSB0eXBlc18xLkVuZE9wZXJhdGlvbi5SZWplY3QgJiYgYWxsVXBUb09yUmVxdWV1ZSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1zZ0luZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmRDb25zdW1lclNwYW4oc3BhbnNOb3RFbmRlZFtpXS5tc2csIGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgcmVxdWV1ZVJlc29sdmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3BhbnNOb3RFbmRlZC5zcGxpY2UoMCwgbXNnSW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYuZW5kQ29uc3VtZXJTcGFuKG1lc3NhZ2UsIGlzUmVqZWN0ZWQsIGVuZE9wZXJhdGlvbiwgcmVxdWV1ZVJlc29sdmVkKTtcbiAgICAgICAgICAgICAgICBzcGFuc05vdEVuZGVkLnNwbGljZShtc2dJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0Q29uc3VtZVBhdGNoKG1vZHVsZVZlcnNpb24sIG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gY29uc3VtZShxdWV1ZSwgb25NZXNzYWdlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFubmVsID0gdGhpcztcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5uZWwsIHV0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERUQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjb25zdW1lVGltZW91dE1zIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChjb25zdW1lVGltZW91dE1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0NvbnN1bWVUaW1lb3V0T25DaGFubmVsKGNoYW5uZWwpO1xuICAgICAgICAgICAgICAgICAgICB9LCBjb25zdW1lVGltZW91dE1zKTtcbiAgICAgICAgICAgICAgICAgICAgdGltZXIudW5yZWYoKTtcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFt1dGlsc18xLkNIQU5ORUxfQ09OU1VNRV9USU1FT1VUX1RJTUVSXSA9IHRpbWVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjaGFubmVsW3V0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERURdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXRjaGVkT25NZXNzYWdlID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICAgICAgICAgIC8vIG1zZyBpcyBleHBlY3RlZCB0byBiZSBudWxsIGZvciBzaWduYWxpbmcgY29uc3VtZXIgY2FuY2VsIG5vdGlmaWNhdGlvblxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnJhYmJpdG1xLmNvbS9jb25zdW1lci1jYW5jZWwuaHRtbFxuICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSwgd2UgZG8gbm90IHN0YXJ0IGEgc3BhbiwgYXMgdGhpcyBpcyBub3QgYSByZWFsIG1lc3NhZ2UuXG4gICAgICAgICAgICAgICAgaWYgKCFtc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uTWVzc2FnZS5jYWxsKHRoaXMsIG1zZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBtc2cucHJvcGVydGllcy5oZWFkZXJzID8/IHt9O1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRDb250ZXh0ID0gYXBpXzEucHJvcGFnYXRpb24uZXh0cmFjdChhcGlfMS5ST09UX0NPTlRFWFQsIGhlYWRlcnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4Y2hhbmdlID0gbXNnLmZpZWxkcz8uZXhjaGFuZ2U7XG4gICAgICAgICAgICAgICAgbGV0IGxpbmtzO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLl9jb25maWcudXNlTGlua3NGb3JDb25zdW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW5Db250ZXh0ID0gcGFyZW50Q29udGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBhcGlfMS50cmFjZS5nZXRTcGFuKHBhcmVudENvbnRleHQpPy5zcGFuQ29udGV4dCgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGV4dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFNwYW5Db250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHBhcmVudFNwYW5Db250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBzZWxmLnRyYWNlci5zdGFydFNwYW4oYCR7cXVldWV9IHByb2Nlc3NgLCB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLkNPTlNVTUVSLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGFubmVsPy5jb25uZWN0aW9uPy5bdXRpbHNfMS5DT05ORUNUSU9OX0FUVFJJQlVURVNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTl06IGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EXTogc2VtY29udl9vYnNvbGV0ZV8xLk1FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EX1ZBTFVFX1RPUElDLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWV06IG1zZy5maWVsZHM/LnJvdXRpbmdLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VtY29udl8xLkFUVFJfTUVTU0FHSU5HX09QRVJBVElPTl06IHNlbWNvbnZfb2Jzb2xldGVfMS5NRVNTQUdJTkdfT1BFUkFUSU9OX1ZBTFVFX1BST0NFU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLk9MRF9BVFRSX01FU1NBR0lOR19NRVNTQUdFX0lEXTogbXNnPy5wcm9wZXJ0aWVzLm1lc3NhZ2VJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZW1jb252X29ic29sZXRlXzEuQVRUUl9NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEXTogbXNnPy5wcm9wZXJ0aWVzLmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzLFxuICAgICAgICAgICAgICAgIH0sIHBhcmVudENvbnRleHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY29uc3VtZUhvb2sgfSA9IHNlbGYuZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWVIb29rKSB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBpbnN0cnVtZW50YXRpb25fMS5zYWZlRXhlY3V0ZUluVGhlTWlkZGxlKSgoKSA9PiBjb25zdW1lSG9vayhzcGFuLCB7IG1vZHVsZVZlcnNpb24sIG1zZyB9KSwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ2FtcXBsaWIgaW5zdHJ1bWVudGF0aW9uOiBjb25zdW1lckhvb2sgZXJyb3InLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucz8ubm9BY2spIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgdGhlIG1lc3NhZ2Ugb24gdGhlIGNoYW5uZWwgc28gd2UgY2FuIGNsb3NlIHRoZSBzcGFuIG9uIGFja0FsbCBldGNcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFt1dGlsc18xLkNIQU5ORUxfU1BBTlNfTk9UX0VOREVEXS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPZkNvbnN1bWU6ICgwLCBjb3JlXzEuaHJUaW1lKSgpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgdGhlIHNwYW4gb24gdGhlIG1lc3NhZ2UsIHNvIHdlIGNhbiBlbmQgaXQgd2hlbiB1c2VyIGNhbGwgJ2Fjaycgb24gaXRcbiAgICAgICAgICAgICAgICAgICAgbXNnW3V0aWxzXzEuTUVTU0FHRV9TVE9SRURfU1BBTl0gPSBzcGFuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzZXRDb250ZXh0ID0gcGFyZW50Q29udGV4dFxuICAgICAgICAgICAgICAgICAgICA/IHBhcmVudENvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgOiBhcGlfMS5ST09UX0NPTlRFWFQ7XG4gICAgICAgICAgICAgICAgYXBpXzEuY29udGV4dC53aXRoKGFwaV8xLnRyYWNlLnNldFNwYW4oc2V0Q29udGV4dCwgc3BhbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25NZXNzYWdlLmNhbGwodGhpcywgbXNnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8ubm9BY2spIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWxsQ29uc3VtZUVuZEhvb2soc3BhbiwgbXNnLCBmYWxzZSwgdHlwZXNfMS5FbmRPcGVyYXRpb24uQXV0b0Fjayk7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFyZ3VtZW50c1sxXSA9IHBhdGNoZWRPbk1lc3NhZ2U7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0Q29uZmlybWVkUHVibGlzaFBhdGNoKG1vZHVsZVZlcnNpb24sIG9yaWdpbmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gY29uZmlybWVkUHVibGlzaChleGNoYW5nZSwgcm91dGluZ0tleSwgY29udGVudCwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgeyBzcGFuLCBtb2RpZmllZE9wdGlvbnMgfSA9IHNlbGYuY3JlYXRlUHVibGlzaFNwYW4oc2VsZiwgZXhjaGFuZ2UsIHJvdXRpbmdLZXksIGNoYW5uZWwsIG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgeyBwdWJsaXNoSG9vayB9ID0gc2VsZi5nZXRDb25maWcoKTtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoSG9vaykge1xuICAgICAgICAgICAgICAgICgwLCBpbnN0cnVtZW50YXRpb25fMS5zYWZlRXhlY3V0ZUluVGhlTWlkZGxlKSgoKSA9PiBwdWJsaXNoSG9vayhzcGFuLCB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICByb3V0aW5nS2V5LFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBtb2RpZmllZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGlzQ29uZmlybUNoYW5uZWw6IHRydWUsXG4gICAgICAgICAgICAgICAgfSksIGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBpXzEuZGlhZy5lcnJvcignYW1xcGxpYiBpbnN0cnVtZW50YXRpb246IHB1Ymxpc2hIb29rIGVycm9yJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhdGNoZWRPbkNvbmZpcm0gPSBmdW5jdGlvbiAoZXJyLCBvaykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPy5jYWxsKHRoaXMsIGVyciwgb2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwdWJsaXNoQ29uZmlybUhvb2sgfSA9IHNlbGYuZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoQ29uZmlybUhvb2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBpbnN0cnVtZW50YXRpb25fMS5zYWZlRXhlY3V0ZUluVGhlTWlkZGxlKSgoKSA9PiBwdWJsaXNoQ29uZmlybUhvb2soc3Bhbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ0tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb25maXJtQ2hhbm5lbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtRXJyb3I6IGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdhbXFwbGliIGluc3RydW1lbnRhdGlvbjogcHVibGlzaENvbmZpcm1Ib29rIGVycm9yJywgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwibWVzc2FnZSBjb25maXJtYXRpb24gaGFzIGJlZW4gbmFjaydlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gY2FsbGluZyBjb25maXJtIGNoYW5uZWwgcHVibGlzaCBmdW5jdGlvbiBpcyBzdG9yaW5nIHRoZSBtZXNzYWdlIGluIHF1ZXVlIGFuZCByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2sgZm9yIGJyb2tlciBjb25maXJtLlxuICAgICAgICAgICAgLy8gc3BhbiBlbmRzIGluIHRoZSBwYXRjaGVkIGNhbGxiYWNrLlxuICAgICAgICAgICAgY29uc3QgbWFya2VkQ29udGV4dCA9ICgwLCB1dGlsc18xLm1hcmtDb25maXJtQ2hhbm5lbFRyYWNpbmcpKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgY29uc3QgYXJndW1lbnRzQ29weSA9IFsuLi5hcmd1bWVudHNdO1xuICAgICAgICAgICAgYXJndW1lbnRzQ29weVszXSA9IG1vZGlmaWVkT3B0aW9ucztcbiAgICAgICAgICAgIGFyZ3VtZW50c0NvcHlbNF0gPSBhcGlfMS5jb250ZXh0LmJpbmQoKDAsIHV0aWxzXzEudW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nKShhcGlfMS50cmFjZS5zZXRTcGFuKG1hcmtlZENvbnRleHQsIHNwYW4pKSwgcGF0Y2hlZE9uQ29uZmlybSk7XG4gICAgICAgICAgICByZXR1cm4gYXBpXzEuY29udGV4dC53aXRoKG1hcmtlZENvbnRleHQsIG9yaWdpbmFsLmJpbmQodGhpcywgLi4uYXJndW1lbnRzQ29weSkpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRQdWJsaXNoUGF0Y2gobW9kdWxlVmVyc2lvbiwgb3JpZ2luYWwpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBwdWJsaXNoKGV4Y2hhbmdlLCByb3V0aW5nS2V5LCBjb250ZW50LCBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoKDAsIHV0aWxzXzEuaXNDb25maXJtQ2hhbm5lbFRyYWNpbmcpKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpKSB7XG4gICAgICAgICAgICAgICAgLy8gd29yayBhbHJlYWR5IGRvbmVcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3BhbiwgbW9kaWZpZWRPcHRpb25zIH0gPSBzZWxmLmNyZWF0ZVB1Ymxpc2hTcGFuKHNlbGYsIGV4Y2hhbmdlLCByb3V0aW5nS2V5LCBjaGFubmVsLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHB1Ymxpc2hIb29rIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoSG9vaykge1xuICAgICAgICAgICAgICAgICAgICAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2FmZUV4ZWN1dGVJblRoZU1pZGRsZSkoKCkgPT4gcHVibGlzaEhvb2soc3Bhbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ0tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBtb2RpZmllZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NvbmZpcm1DaGFubmVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSksIGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdhbXFwbGliIGluc3RydW1lbnRhdGlvbjogcHVibGlzaEhvb2sgZXJyb3InLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNhbGxpbmcgbm9ybWFsIGNoYW5uZWwgcHVibGlzaCBmdW5jdGlvbiBpcyBvbmx5IHN0b3JpbmcgdGhlIG1lc3NhZ2UgaW4gcXVldWUuXG4gICAgICAgICAgICAgICAgLy8gaXQgZG9lcyBub3Qgc2VuZCBpdCBhbmQgd2FpdHMgZm9yIGFuIGFjaywgc28gdGhlIHNwYW4gZHVyYXRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgdmVyeSBzaG9ydC5cbiAgICAgICAgICAgICAgICBjb25zdCBhcmd1bWVudHNDb3B5ID0gWy4uLmFyZ3VtZW50c107XG4gICAgICAgICAgICAgICAgYXJndW1lbnRzQ29weVszXSA9IG1vZGlmaWVkT3B0aW9ucztcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFJlcyA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50c0NvcHkpO1xuICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjcmVhdGVQdWJsaXNoU3BhbihzZWxmLCBleGNoYW5nZSwgcm91dGluZ0tleSwgY2hhbm5lbCwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRXhjaGFuZ2UgPSAoMCwgdXRpbHNfMS5ub3JtYWxpemVFeGNoYW5nZSkoZXhjaGFuZ2UpO1xuICAgICAgICBjb25zdCBzcGFuID0gc2VsZi50cmFjZXIuc3RhcnRTcGFuKGBwdWJsaXNoICR7bm9ybWFsaXplZEV4Y2hhbmdlfWAsIHtcbiAgICAgICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLlBST0RVQ0VSLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIC4uLmNoYW5uZWwuY29ubmVjdGlvblt1dGlsc18xLkNPTk5FQ1RJT05fQVRUUklCVVRFU10sXG4gICAgICAgICAgICAgICAgW3NlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTl06IGV4Y2hhbmdlLFxuICAgICAgICAgICAgICAgIFtzZW1jb252X29ic29sZXRlXzEuQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF06IHNlbWNvbnZfb2Jzb2xldGVfMS5NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF9WQUxVRV9UT1BJQyxcbiAgICAgICAgICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLkFUVFJfTUVTU0FHSU5HX1JBQkJJVE1RX1JPVVRJTkdfS0VZXTogcm91dGluZ0tleSxcbiAgICAgICAgICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLk9MRF9BVFRSX01FU1NBR0lOR19NRVNTQUdFX0lEXTogb3B0aW9ucz8ubWVzc2FnZUlkLFxuICAgICAgICAgICAgICAgIFtzZW1jb252X29ic29sZXRlXzEuQVRUUl9NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEXTogb3B0aW9ucz8uY29ycmVsYXRpb25JZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBtb2RpZmllZE9wdGlvbnMgPSBvcHRpb25zID8/IHt9O1xuICAgICAgICBtb2RpZmllZE9wdGlvbnMuaGVhZGVycyA9IG1vZGlmaWVkT3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICBhcGlfMS5wcm9wYWdhdGlvbi5pbmplY3QoYXBpXzEudHJhY2Uuc2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBzcGFuKSwgbW9kaWZpZWRPcHRpb25zLmhlYWRlcnMpO1xuICAgICAgICByZXR1cm4geyBzcGFuLCBtb2RpZmllZE9wdGlvbnMgfTtcbiAgICB9XG4gICAgZW5kQ29uc3VtZXJTcGFuKG1lc3NhZ2UsIGlzUmVqZWN0ZWQsIG9wZXJhdGlvbiwgcmVxdWV1ZSkge1xuICAgICAgICBjb25zdCBzdG9yZWRTcGFuID0gbWVzc2FnZVt1dGlsc18xLk1FU1NBR0VfU1RPUkVEX1NQQU5dO1xuICAgICAgICBpZiAoIXN0b3JlZFNwYW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChpc1JlamVjdGVkICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RvcmVkU3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wZXJhdGlvbiAhPT0gdHlwZXNfMS5FbmRPcGVyYXRpb24uQ2hhbm5lbENsb3NlZCAmJlxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gIT09IHR5cGVzXzEuRW5kT3BlcmF0aW9uLkNoYW5uZWxFcnJvclxuICAgICAgICAgICAgICAgICAgICA/IGAke29wZXJhdGlvbn0gY2FsbGVkIG9uIG1lc3NhZ2Uke3JlcXVldWUgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJyB3aXRoIHJlcXVldWUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHJlcXVldWUgPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIHdpdGhvdXQgcmVxdWV1ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnfWBcbiAgICAgICAgICAgICAgICAgICAgOiBvcGVyYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGxDb25zdW1lRW5kSG9vayhzdG9yZWRTcGFuLCBtZXNzYWdlLCBpc1JlamVjdGVkLCBvcGVyYXRpb24pO1xuICAgICAgICBzdG9yZWRTcGFuLmVuZCgpO1xuICAgICAgICBtZXNzYWdlW3V0aWxzXzEuTUVTU0FHRV9TVE9SRURfU1BBTl0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVuZEFsbFNwYW5zT25DaGFubmVsKGNoYW5uZWwsIGlzUmVqZWN0ZWQsIG9wZXJhdGlvbiwgcmVxdWV1ZSkge1xuICAgICAgICBjb25zdCBzcGFuc05vdEVuZGVkID0gY2hhbm5lbFt1dGlsc18xLkNIQU5ORUxfU1BBTlNfTk9UX0VOREVEXSA/PyBbXTtcbiAgICAgICAgc3BhbnNOb3RFbmRlZC5mb3JFYWNoKG1zZ0RldGFpbHMgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmRDb25zdW1lclNwYW4obXNnRGV0YWlscy5tc2csIGlzUmVqZWN0ZWQsIG9wZXJhdGlvbiwgcmVxdWV1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjaGFubmVsW3V0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERURdID0gW107XG4gICAgfVxuICAgIGNhbGxDb25zdW1lRW5kSG9vayhzcGFuLCBtc2csIHJlamVjdGVkLCBlbmRPcGVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBjb25zdW1lRW5kSG9vayB9ID0gdGhpcy5nZXRDb25maWcoKTtcbiAgICAgICAgaWYgKCFjb25zdW1lRW5kSG9vaylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgKDAsIGluc3RydW1lbnRhdGlvbl8xLnNhZmVFeGVjdXRlSW5UaGVNaWRkbGUpKCgpID0+IGNvbnN1bWVFbmRIb29rKHNwYW4sIHsgbXNnLCByZWplY3RlZCwgZW5kT3BlcmF0aW9uIH0pLCBlID0+IHtcbiAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgICAgYXBpXzEuZGlhZy5lcnJvcignYW1xcGxpYiBpbnN0cnVtZW50YXRpb246IGNvbnN1bWVyRW5kSG9vayBlcnJvcicsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0cnVlKTtcbiAgICB9XG4gICAgY2hlY2tDb25zdW1lVGltZW91dE9uQ2hhbm5lbChjaGFubmVsKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gKDAsIGNvcmVfMS5oclRpbWUpKCk7XG4gICAgICAgIGNvbnN0IHNwYW5zTm90RW5kZWQgPSBjaGFubmVsW3V0aWxzXzEuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERURdID8/IFtdO1xuICAgICAgICBsZXQgaTtcbiAgICAgICAgY29uc3QgeyBjb25zdW1lVGltZW91dE1zIH0gPSB0aGlzLmdldENvbmZpZygpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3BhbnNOb3RFbmRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY3Vyck1lc3NhZ2UgPSBzcGFuc05vdEVuZGVkW2ldO1xuICAgICAgICAgICAgY29uc3QgdGltZUZyb21Db25zdW1lID0gKDAsIGNvcmVfMS5oclRpbWVEdXJhdGlvbikoY3Vyck1lc3NhZ2UudGltZU9mQ29uc3VtZSwgY3VycmVudFRpbWUpO1xuICAgICAgICAgICAgaWYgKCgwLCBjb3JlXzEuaHJUaW1lVG9NaWxsaXNlY29uZHMpKHRpbWVGcm9tQ29uc3VtZSkgPCBjb25zdW1lVGltZW91dE1zKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVuZENvbnN1bWVyU3BhbihjdXJyTWVzc2FnZS5tc2csIG51bGwsIHR5cGVzXzEuRW5kT3BlcmF0aW9uLkluc3RydW1lbnRhdGlvblRpbWVvdXQsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHNwYW5zTm90RW5kZWQuc3BsaWNlKDAsIGkpO1xuICAgIH1cbn1cbmV4cG9ydHMuQW1xcGxpYkluc3RydW1lbnRhdGlvbiA9IEFtcXBsaWJJbnN0cnVtZW50YXRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hbXFwbGliLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndOperation = exports.DEFAULT_CONFIG = exports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar amqplib_1 = __webpack_require__(/*! ./amqplib */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js\");\nObject.defineProperty(exports, \"AmqplibInstrumentation\", ({ enumerable: true, get: function () { return amqplib_1.AmqplibInstrumentation; } }));\nvar types_1 = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js\");\nObject.defineProperty(exports, \"DEFAULT_CONFIG\", ({ enumerable: true, get: function () { return types_1.DEFAULT_CONFIG; } }));\nObject.defineProperty(exports, \"EndOperation\", ({ enumerable: true, get: function () { return types_1.EndOperation; } }));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELG9CQUFvQixHQUFHLHNCQUFzQixHQUFHLDhCQUE4QjtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQyw2TEFBVztBQUNuQywwREFBeUQsRUFBRSxxQ0FBcUMsNENBQTRDLEVBQUM7QUFDN0ksY0FBYyxtQkFBTyxDQUFDLHlMQUFTO0FBQy9CLGtEQUFpRCxFQUFFLHFDQUFxQyxrQ0FBa0MsRUFBQztBQUMzSCxnREFBK0MsRUFBRSxxQ0FBcUMsZ0NBQWdDLEVBQUM7QUFDdkgiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5FbmRPcGVyYXRpb24gPSBleHBvcnRzLkRFRkFVTFRfQ09ORklHID0gZXhwb3J0cy5BbXFwbGliSW5zdHJ1bWVudGF0aW9uID0gdm9pZCAwO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBhbXFwbGliXzEgPSByZXF1aXJlKFwiLi9hbXFwbGliXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQW1xcGxpYkluc3RydW1lbnRhdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYW1xcGxpYl8xLkFtcXBsaWJJbnN0cnVtZW50YXRpb247IH0gfSk7XG52YXIgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiREVGQVVMVF9DT05GSUdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzEuREVGQVVMVF9DT05GSUc7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJFbmRPcGVyYXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzEuRW5kT3BlcmF0aW9uOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js":
/*!*************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js ***!
\*************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ATTR_MESSAGING_CONVERSATION_ID = exports.OLD_ATTR_MESSAGING_MESSAGE_ID = exports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = exports.ATTR_MESSAGING_URL = exports.ATTR_MESSAGING_PROTOCOL_VERSION = exports.ATTR_MESSAGING_PROTOCOL = exports.MESSAGING_OPERATION_VALUE_PROCESS = exports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = exports.ATTR_MESSAGING_DESTINATION_KIND = exports.ATTR_MESSAGING_DESTINATION = void 0;\n/*\n * This file contains constants for values that where replaced/removed from\n * Semantic Conventions long enough ago that they do not have `ATTR_*`\n * constants in the `@opentelemetry/semantic-conventions` package. Eventually\n * it is expected that this instrumention will be updated to emit telemetry\n * using modern Semantic Conventions, dropping the need for the constants in\n * this file.\n */\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_DESTINATION = 'messaging.destination';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.ATTR_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGING_OPERATION_VALUE_PROCESS = 'process';\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexports.ATTR_MESSAGING_PROTOCOL = 'messaging.protocol';\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexports.ATTR_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexports.ATTR_MESSAGING_URL = 'messaging.url';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic';\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n *\n * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`.\n */\nexports.OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id';\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called &#34;Correlation ID&#34;.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\n//# sourceMappingURL=semconv-obsolete.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYtb2Jzb2xldGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsc0NBQXNDLEdBQUcscUNBQXFDLEdBQUcsOENBQThDLEdBQUcsMEJBQTBCLEdBQUcsdUNBQXVDLEdBQUcsK0JBQStCLEdBQUcseUNBQXlDLEdBQUcsMkNBQTJDLEdBQUcsdUNBQXVDLEdBQUcsa0NBQWtDO0FBQ2paO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRkFBZ0YsbUhBQW1IO0FBQ25NO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsZ0dBQWdHLG1IQUFtSDtBQUNuTjtBQUNBLDJDQUEyQztBQUMzQztBQUNBLHNKQUFzSixTQUFTO0FBQy9KO0FBQ0EsdUZBQXVGLG1IQUFtSDtBQUMxTTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSxtSEFBbUg7QUFDN0w7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsbUpBQW1KLG1CQUFtQjtBQUN0SztBQUNBLHVGQUF1RixtSEFBbUg7QUFDMU07QUFDQSxzQ0FBc0M7QUFDdEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYtb2Jzb2xldGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BVFRSX01FU1NBR0lOR19DT05WRVJTQVRJT05fSUQgPSBleHBvcnRzLk9MRF9BVFRSX01FU1NBR0lOR19NRVNTQUdFX0lEID0gZXhwb3J0cy5NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF9WQUxVRV9UT1BJQyA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfVVJMID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19QUk9UT0NPTCA9IGV4cG9ydHMuTUVTU0FHSU5HX09QRVJBVElPTl9WQUxVRV9QUk9DRVNTID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWSA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORCA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT04gPSB2b2lkIDA7XG4vKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGNvbnN0YW50cyBmb3IgdmFsdWVzIHRoYXQgd2hlcmUgcmVwbGFjZWQvcmVtb3ZlZCBmcm9tXG4gKiBTZW1hbnRpYyBDb252ZW50aW9ucyBsb25nIGVub3VnaCBhZ28gdGhhdCB0aGV5IGRvIG5vdCBoYXZlIGBBVFRSXypgXG4gKiBjb25zdGFudHMgaW4gdGhlIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AgcGFja2FnZS4gRXZlbnR1YWxseVxuICogaXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGlzIGluc3RydW1lbnRpb24gd2lsbCBiZSB1cGRhdGVkIHRvIGVtaXQgdGVsZW1ldHJ5XG4gKiB1c2luZyBtb2Rlcm4gU2VtYW50aWMgQ29udmVudGlvbnMsIGRyb3BwaW5nIHRoZSBuZWVkIGZvciB0aGUgY29uc3RhbnRzIGluXG4gKiB0aGlzIGZpbGUuXG4gKi9cbi8qKlxuICogVGhlIG1lc3NhZ2UgZGVzdGluYXRpb24gbmFtZS4gVGhpcyBtaWdodCBiZSBlcXVhbCB0byB0aGUgc3BhbiBuYW1lIGJ1dCBpcyByZXF1aXJlZCBuZXZlcnRoZWxlc3MuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xuZXhwb3J0cy5BVFRSX01FU1NBR0lOR19ERVNUSU5BVElPTiA9ICdtZXNzYWdpbmcuZGVzdGluYXRpb24nO1xuLyoqXG4gKiBUaGUga2luZCBvZiBtZXNzYWdlIGRlc3RpbmF0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gc2VtY29udiB2MS4yMC4wLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX0tJTkQgPSAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uX2tpbmQnO1xuLyoqXG4gKiBSYWJiaXRNUSBtZXNzYWdlIHJvdXRpbmcga2V5LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19SQUJCSVRNUV9ERVNUSU5BVElPTl9ST1VUSU5HX0tFWSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX1JBQkJJVE1RX1JPVVRJTkdfS0VZID0gJ21lc3NhZ2luZy5yYWJiaXRtcS5yb3V0aW5nX2tleSc7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBNRVNTQUdJTkdfT1BFUkFUSU9OX1RZUEVfVkFMVUVfUFJPQ0VTUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG5leHBvcnRzLk1FU1NBR0lOR19PUEVSQVRJT05fVkFMVUVfUFJPQ0VTUyA9ICdwcm9jZXNzJztcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHRyYW5zcG9ydCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX1BST1RPQ09MX05BTUUuXG4gKi9cbmV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfUFJPVE9DT0wgPSAnbWVzc2FnaW5nLnByb3RvY29sJztcbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHRyYW5zcG9ydCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX1BST1RPQ09MX1ZFUlNJT04uXG4gKi9cbmV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfUFJPVE9DT0xfVkVSU0lPTiA9ICdtZXNzYWdpbmcucHJvdG9jb2xfdmVyc2lvbic7XG4vKipcbiAqIENvbm5lY3Rpb24gc3RyaW5nLlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gc2VtY29udiB2MS4xNy4wLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX1VSTCA9ICdtZXNzYWdpbmcudXJsJztcbi8qKlxuICogVGhlIGtpbmQgb2YgbWVzc2FnZSBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjAuMC5cbiAqL1xuZXhwb3J0cy5NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORF9WQUxVRV9UT1BJQyA9ICd0b3BpYyc7XG4vKipcbiAqIEEgdmFsdWUgdXNlZCBieSB0aGUgbWVzc2FnaW5nIHN5c3RlbSBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZSwgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX01FU1NBR0VfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqXG4gKiBOb3RlOiBjaGFuZ2luZyB0byBgQVRUUl9NRVNTQUdJTkdfTUVTU0FHRV9JRGAgbWVhbnMgYSBjaGFuZ2UgaW4gdmFsdWUgZnJvbSBgbWVzc2FnaW5nLm1lc3NhZ2VfaWRgIHRvIGBtZXNzYWdpbmcubWVzc2FnZS5pZGAuXG4gKi9cbmV4cG9ydHMuT0xEX0FUVFJfTUVTU0FHSU5HX01FU1NBR0VfSUQgPSAnbWVzc2FnaW5nLm1lc3NhZ2VfaWQnO1xuLyoqXG4gKiBUaGUgW2NvbnZlcnNhdGlvbiBJRF0oI2NvbnZlcnNhdGlvbnMpIGlkZW50aWZ5aW5nIHRoZSBjb252ZXJzYXRpb24gdG8gd2hpY2ggdGhlIG1lc3NhZ2UgYmVsb25ncywgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcuIFNvbWV0aW1lcyBjYWxsZWQgJiMzNDtDb3JyZWxhdGlvbiBJRCYjMzQ7LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19NRVNTQUdFX0NPTlZFUlNBVElPTl9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX0NPTlZFUlNBVElPTl9JRCA9ICdtZXNzYWdpbmcuY29udmVyc2F0aW9uX2lkJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbWNvbnYtb2Jzb2xldGUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js ***!
\****************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_OPERATION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `messaging.operation.type` instead.\n *\n * @example publish\n * @example create\n * @example process\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `messaging.operation.type`.\n */\nexports.ATTR_MESSAGING_OPERATION = 'messaging.operation';\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_SYSTEM = 'messaging.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n//# sourceMappingURL=semconv.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsMEJBQTBCLEdBQUcsMEJBQTBCLEdBQUcsNkJBQTZCLEdBQUcsZ0NBQWdDO0FBQzFIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3NlbWNvbnYuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BVFRSX05FVF9QRUVSX1BPUlQgPSBleHBvcnRzLkFUVFJfTkVUX1BFRVJfTkFNRSA9IGV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfU1lTVEVNID0gZXhwb3J0cy5BVFRSX01FU1NBR0lOR19PUEVSQVRJT04gPSB2b2lkIDA7XG4vKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGEgY29weSBvZiB1bnN0YWJsZSBzZW1hbnRpYyBjb252ZW50aW9uIGRlZmluaXRpb25zXG4gKiB1c2VkIGJ5IHRoaXMgcGFja2FnZS5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvdHJlZS9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zI3Vuc3RhYmxlLXNlbWNvbnZcbiAqL1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYG1lc3NhZ2luZy5vcGVyYXRpb24udHlwZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBwdWJsaXNoXG4gKiBAZXhhbXBsZSBjcmVhdGVcbiAqIEBleGFtcGxlIHByb2Nlc3NcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYG1lc3NhZ2luZy5vcGVyYXRpb24udHlwZWAuXG4gKi9cbmV4cG9ydHMuQVRUUl9NRVNTQUdJTkdfT1BFUkFUSU9OID0gJ21lc3NhZ2luZy5vcGVyYXRpb24nO1xuLyoqXG4gKiBUaGUgbWVzc2FnaW5nIHN5c3RlbSBhcyBpZGVudGlmaWVkIGJ5IHRoZSBjbGllbnQgaW5zdHJ1bWVudGF0aW9uLlxuICpcbiAqIEBub3RlIFRoZSBhY3R1YWwgbWVzc2FnaW5nIHN5c3RlbSBtYXkgZGlmZmVyIGZyb20gdGhlIG9uZSBrbm93biBieSB0aGUgY2xpZW50LiBGb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBLYWZrYSBjbGllbnQgbGlicmFyaWVzIHRvIGNvbW11bmljYXRlIHdpdGggQXp1cmUgRXZlbnQgSHVicywgdGhlIGBtZXNzYWdpbmcuc3lzdGVtYCBpcyBzZXQgdG8gYGthZmthYCBiYXNlZCBvbiB0aGUgaW5zdHJ1bWVudGF0aW9uJ3MgYmVzdCBrbm93bGVkZ2UuXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGF0dHJpYnV0ZSBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLkFUVFJfTUVTU0FHSU5HX1NZU1RFTSA9ICdtZXNzYWdpbmcuc3lzdGVtJztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBzZXJ2ZXIuYWRkcmVzc2Agb24gY2xpZW50IHNwYW5zIGFuZCBgY2xpZW50LmFkZHJlc3NgIG9uIHNlcnZlciBzcGFucy5cbiAqXG4gKiBAZXhhbXBsZSBleGFtcGxlLmNvbVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIG9uIGNsaWVudCBzcGFucyBhbmQgYGNsaWVudC5hZGRyZXNzYCBvbiBzZXJ2ZXIgc3BhbnMuXG4gKi9cbmV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICpcbiAqIEBleGFtcGxlIDgwODBcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICovXG5leHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9ICduZXQucGVlci5wb3J0Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbWNvbnYuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DEFAULT_CONFIG = exports.EndOperation = void 0;\nvar EndOperation;\n(function (EndOperation) {\n EndOperation[\"AutoAck\"] = \"auto ack\";\n EndOperation[\"Ack\"] = \"ack\";\n EndOperation[\"AckAll\"] = \"ackAll\";\n EndOperation[\"Reject\"] = \"reject\";\n EndOperation[\"Nack\"] = \"nack\";\n EndOperation[\"NackAll\"] = \"nackAll\";\n EndOperation[\"ChannelClosed\"] = \"channel closed\";\n EndOperation[\"ChannelError\"] = \"channel error\";\n EndOperation[\"InstrumentationTimeout\"] = \"instrumentation timeout\";\n})(EndOperation = exports.EndOperation || (exports.EndOperation = {}));\nexports.DEFAULT_CONFIG = {\n consumeTimeoutMs: 1000 * 60,\n useLinksForConsume: false,\n};\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3R5cGVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELHNCQUFzQixHQUFHLG9CQUFvQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQywwQ0FBMEMsb0JBQW9CLEtBQUs7QUFDcEUsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1hbXFwbGliQDAuNjEuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1hbXFwbGliL2J1aWxkL3NyYy90eXBlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuREVGQVVMVF9DT05GSUcgPSBleHBvcnRzLkVuZE9wZXJhdGlvbiA9IHZvaWQgMDtcbnZhciBFbmRPcGVyYXRpb247XG4oZnVuY3Rpb24gKEVuZE9wZXJhdGlvbikge1xuICAgIEVuZE9wZXJhdGlvbltcIkF1dG9BY2tcIl0gPSBcImF1dG8gYWNrXCI7XG4gICAgRW5kT3BlcmF0aW9uW1wiQWNrXCJdID0gXCJhY2tcIjtcbiAgICBFbmRPcGVyYXRpb25bXCJBY2tBbGxcIl0gPSBcImFja0FsbFwiO1xuICAgIEVuZE9wZXJhdGlvbltcIlJlamVjdFwiXSA9IFwicmVqZWN0XCI7XG4gICAgRW5kT3BlcmF0aW9uW1wiTmFja1wiXSA9IFwibmFja1wiO1xuICAgIEVuZE9wZXJhdGlvbltcIk5hY2tBbGxcIl0gPSBcIm5hY2tBbGxcIjtcbiAgICBFbmRPcGVyYXRpb25bXCJDaGFubmVsQ2xvc2VkXCJdID0gXCJjaGFubmVsIGNsb3NlZFwiO1xuICAgIEVuZE9wZXJhdGlvbltcIkNoYW5uZWxFcnJvclwiXSA9IFwiY2hhbm5lbCBlcnJvclwiO1xuICAgIEVuZE9wZXJhdGlvbltcIkluc3RydW1lbnRhdGlvblRpbWVvdXRcIl0gPSBcImluc3RydW1lbnRhdGlvbiB0aW1lb3V0XCI7XG59KShFbmRPcGVyYXRpb24gPSBleHBvcnRzLkVuZE9wZXJhdGlvbiB8fCAoZXhwb3J0cy5FbmRPcGVyYXRpb24gPSB7fSkpO1xuZXhwb3J0cy5ERUZBVUxUX0NPTkZJRyA9IHtcbiAgICBjb25zdW1lVGltZW91dE1zOiAxMDAwICogNjAsXG4gICAgdXNlTGlua3NGb3JDb25zdW1lOiBmYWxzZSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.isConfirmChannelTracing = exports.unmarkConfirmChannelTracing = exports.markConfirmChannelTracing = exports.getConnectionAttributesFromUrl = exports.getConnectionAttributesFromServer = exports.normalizeExchange = exports.CONNECTION_ATTRIBUTES = exports.CHANNEL_CONSUME_TIMEOUT_TIMER = exports.CHANNEL_SPANS_NOT_ENDED = exports.MESSAGE_STORED_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\nconst semantic_conventions_1 = __webpack_require__(/*! @opentelemetry/semantic-conventions */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+semantic-conventions@1.40.0/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js\");\nconst semconv_obsolete_1 = __webpack_require__(/*! ../src/semconv-obsolete */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js\");\nexports.MESSAGE_STORED_SPAN = Symbol('opentelemetry.amqplib.message.stored-span');\nexports.CHANNEL_SPANS_NOT_ENDED = Symbol('opentelemetry.amqplib.channel.spans-not-ended');\nexports.CHANNEL_CONSUME_TIMEOUT_TIMER = Symbol('opentelemetry.amqplib.channel.consumer-timeout-timer');\nexports.CONNECTION_ATTRIBUTES = Symbol('opentelemetry.amqplib.connection.attributes');\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY = (0, api_1.createContextKey)('opentelemetry.amqplib.channel.is-confirm-channel');\nconst normalizeExchange = (exchangeName) => exchangeName !== '' ? exchangeName : '<default>';\nexports.normalizeExchange = normalizeExchange;\nconst censorPassword = (url) => {\n return url.replace(/:[^:@/]*@/, ':***@');\n};\nconst getPort = (portFromUrl, resolvedProtocol) => {\n // we are using the resolved protocol which is upper case\n // this code mimic the behavior of the amqplib which is used to set connection params\n return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\nconst getProtocol = (protocolFromUrl) => {\n const resolvedProtocol = protocolFromUrl || 'amqp';\n // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n const noEndingColon = resolvedProtocol.endsWith(':')\n ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n : resolvedProtocol;\n // upper cases to match spec\n return noEndingColon.toUpperCase();\n};\nconst getHostname = (hostnameFromUrl) => {\n // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n return hostnameFromUrl || 'localhost';\n};\nconst extractConnectionAttributeOrLog = (url, attributeKey, attributeValue, nameForLog) => {\n if (attributeValue) {\n return { [attributeKey]: attributeValue };\n }\n else {\n api_1.diag.error(`amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`, {\n url,\n });\n return {};\n }\n};\nconst getConnectionAttributesFromServer = (conn) => {\n const product = conn.serverProperties.product?.toLowerCase?.();\n if (product) {\n return {\n [semconv_1.ATTR_MESSAGING_SYSTEM]: product,\n };\n }\n else {\n return {};\n }\n};\nexports.getConnectionAttributesFromServer = getConnectionAttributesFromServer;\nconst getConnectionAttributesFromUrl = (url, netSemconvStability) => {\n const attributes = {\n [semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n };\n url = url || 'amqp://localhost';\n if (typeof url === 'object') {\n const connectOptions = url;\n const protocol = getProtocol(connectOptions?.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(url, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n });\n const hostname = getHostname(connectOptions?.hostname);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n });\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n });\n }\n const port = getPort(connectOptions.port, protocol);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n }\n }\n else {\n const censoredUrl = censorPassword(url);\n attributes[semconv_obsolete_1.ATTR_MESSAGING_URL] = censoredUrl;\n try {\n const urlParts = new URL(censoredUrl);\n const protocol = getProtocol(urlParts.protocol);\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(censoredUrl, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n });\n const hostname = getHostname(urlParts.hostname);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n });\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, {\n ...extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n });\n }\n const port = getPort(urlParts.port ? parseInt(urlParts.port) : undefined, protocol);\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n }\n }\n catch (err) {\n api_1.diag.error('amqplib instrumentation: error while extracting connection details from connection url', {\n censoredUrl,\n err,\n });\n }\n }\n return attributes;\n};\nexports.getConnectionAttributesFromUrl = getConnectionAttributesFromUrl;\nconst markConfirmChannelTracing = (context) => {\n return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\nexports.markConfirmChannelTracing = markConfirmChannelTracing;\nconst unmarkConfirmChannelTracing = (context) => {\n return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\nexports.unmarkConfirmChannelTracing = unmarkConfirmChannelTracing;\nconst isConfirmChannelTracing = (context) => {\n return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\nexports.isConfirmChannelTracing = isConfirmChannelTracing;\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3V0aWxzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELCtCQUErQixHQUFHLG1DQUFtQyxHQUFHLGlDQUFpQyxHQUFHLHNDQUFzQyxHQUFHLHlDQUF5QyxHQUFHLHlCQUF5QixHQUFHLDZCQUE2QixHQUFHLHFDQUFxQyxHQUFHLCtCQUErQixHQUFHLDJCQUEyQjtBQUNsVztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFPLENBQUMsa0lBQW9CO0FBQzFDLDBCQUEwQixtQkFBTyxDQUFDLGlNQUFnQztBQUNsRSwrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUUsa0JBQWtCLG1CQUFPLENBQUMsNkxBQVc7QUFDckMsMkJBQTJCLG1CQUFPLENBQUMsb05BQXlCO0FBQzVELDJCQUEyQjtBQUMzQiwrQkFBK0I7QUFDL0IscUNBQXFDO0FBQ3JDLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsNEZBQTRGLFlBQVk7QUFDeEc7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1hbXFwbGliQDAuNjEuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1hbXFwbGliL2J1aWxkL3NyYy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNDb25maXJtQ2hhbm5lbFRyYWNpbmcgPSBleHBvcnRzLnVubWFya0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IGV4cG9ydHMubWFya0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IGV4cG9ydHMuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsID0gZXhwb3J0cy5nZXRDb25uZWN0aW9uQXR0cmlidXRlc0Zyb21TZXJ2ZXIgPSBleHBvcnRzLm5vcm1hbGl6ZUV4Y2hhbmdlID0gZXhwb3J0cy5DT05ORUNUSU9OX0FUVFJJQlVURVMgPSBleHBvcnRzLkNIQU5ORUxfQ09OU1VNRV9USU1FT1VUX1RJTUVSID0gZXhwb3J0cy5DSEFOTkVMX1NQQU5TX05PVF9FTkRFRCA9IGV4cG9ydHMuTUVTU0FHRV9TVE9SRURfU1BBTiA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5jb25zdCBhcGlfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9hcGlcIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1hbnRpY19jb252ZW50aW9uc18xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zXCIpO1xuY29uc3Qgc2VtY29udl8xID0gcmVxdWlyZShcIi4vc2VtY29udlwiKTtcbmNvbnN0IHNlbWNvbnZfb2Jzb2xldGVfMSA9IHJlcXVpcmUoXCIuLi9zcmMvc2VtY29udi1vYnNvbGV0ZVwiKTtcbmV4cG9ydHMuTUVTU0FHRV9TVE9SRURfU1BBTiA9IFN5bWJvbCgnb3BlbnRlbGVtZXRyeS5hbXFwbGliLm1lc3NhZ2Uuc3RvcmVkLXNwYW4nKTtcbmV4cG9ydHMuQ0hBTk5FTF9TUEFOU19OT1RfRU5ERUQgPSBTeW1ib2woJ29wZW50ZWxlbWV0cnkuYW1xcGxpYi5jaGFubmVsLnNwYW5zLW5vdC1lbmRlZCcpO1xuZXhwb3J0cy5DSEFOTkVMX0NPTlNVTUVfVElNRU9VVF9USU1FUiA9IFN5bWJvbCgnb3BlbnRlbGVtZXRyeS5hbXFwbGliLmNoYW5uZWwuY29uc3VtZXItdGltZW91dC10aW1lcicpO1xuZXhwb3J0cy5DT05ORUNUSU9OX0FUVFJJQlVURVMgPSBTeW1ib2woJ29wZW50ZWxlbWV0cnkuYW1xcGxpYi5jb25uZWN0aW9uLmF0dHJpYnV0ZXMnKTtcbmNvbnN0IElTX0NPTkZJUk1fQ0hBTk5FTF9DT05URVhUX0tFWSA9ICgwLCBhcGlfMS5jcmVhdGVDb250ZXh0S2V5KSgnb3BlbnRlbGVtZXRyeS5hbXFwbGliLmNoYW5uZWwuaXMtY29uZmlybS1jaGFubmVsJyk7XG5jb25zdCBub3JtYWxpemVFeGNoYW5nZSA9IChleGNoYW5nZU5hbWUpID0+IGV4Y2hhbmdlTmFtZSAhPT0gJycgPyBleGNoYW5nZU5hbWUgOiAnPGRlZmF1bHQ+JztcbmV4cG9ydHMubm9ybWFsaXplRXhjaGFuZ2UgPSBub3JtYWxpemVFeGNoYW5nZTtcbmNvbnN0IGNlbnNvclBhc3N3b3JkID0gKHVybCkgPT4ge1xuICAgIHJldHVybiB1cmwucmVwbGFjZSgvOlteOkAvXSpALywgJzoqKipAJyk7XG59O1xuY29uc3QgZ2V0UG9ydCA9IChwb3J0RnJvbVVybCwgcmVzb2x2ZWRQcm90b2NvbCkgPT4ge1xuICAgIC8vIHdlIGFyZSB1c2luZyB0aGUgcmVzb2x2ZWQgcHJvdG9jb2wgd2hpY2ggaXMgdXBwZXIgY2FzZVxuICAgIC8vIHRoaXMgY29kZSBtaW1pYyB0aGUgYmVoYXZpb3Igb2YgdGhlIGFtcXBsaWIgd2hpY2ggaXMgdXNlZCB0byBzZXQgY29ubmVjdGlvbiBwYXJhbXNcbiAgICByZXR1cm4gcG9ydEZyb21VcmwgfHwgKHJlc29sdmVkUHJvdG9jb2wgPT09ICdBTVFQJyA/IDU2NzIgOiA1NjcxKTtcbn07XG5jb25zdCBnZXRQcm90b2NvbCA9IChwcm90b2NvbEZyb21VcmwpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFByb3RvY29sID0gcHJvdG9jb2xGcm9tVXJsIHx8ICdhbXFwJztcbiAgICAvLyB0aGUgc3Vic3RyaW5nIHJlbW92ZWQgdGhlICc6JyBwYXJ0IG9mIHRoZSBwcm90b2NvbCAoJ2FtcXA6JyAtPiAnYW1xcCcpXG4gICAgY29uc3Qgbm9FbmRpbmdDb2xvbiA9IHJlc29sdmVkUHJvdG9jb2wuZW5kc1dpdGgoJzonKVxuICAgICAgICA/IHJlc29sdmVkUHJvdG9jb2wuc3Vic3RyaW5nKDAsIHJlc29sdmVkUHJvdG9jb2wubGVuZ3RoIC0gMSlcbiAgICAgICAgOiByZXNvbHZlZFByb3RvY29sO1xuICAgIC8vIHVwcGVyIGNhc2VzIHRvIG1hdGNoIHNwZWNcbiAgICByZXR1cm4gbm9FbmRpbmdDb2xvbi50b1VwcGVyQ2FzZSgpO1xufTtcbmNvbnN0IGdldEhvc3RuYW1lID0gKGhvc3RuYW1lRnJvbVVybCkgPT4ge1xuICAgIC8vIGlmIHVzZXIgc3VwcGxpZXMgZW1wdHkgaG9zdG5hbWUsIGl0IGdldHMgZm9yd2FyZGVkIHRvICduZXQnIHBhY2thZ2Ugd2hpY2ggZGVmYXVsdCBpdCB0byBsb2NhbGhvc3QuXG4gICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2RvY3MvbGF0ZXN0LXYxMi54L2FwaS9uZXQuaHRtbCNuZXRfc29ja2V0X2Nvbm5lY3Rfb3B0aW9uc19jb25uZWN0bGlzdGVuZXJcbiAgICByZXR1cm4gaG9zdG5hbWVGcm9tVXJsIHx8ICdsb2NhbGhvc3QnO1xufTtcbmNvbnN0IGV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2cgPSAodXJsLCBhdHRyaWJ1dGVLZXksIGF0dHJpYnV0ZVZhbHVlLCBuYW1lRm9yTG9nKSA9PiB7XG4gICAgaWYgKGF0dHJpYnV0ZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7IFthdHRyaWJ1dGVLZXldOiBhdHRyaWJ1dGVWYWx1ZSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgYXBpXzEuZGlhZy5lcnJvcihgYW1xcGxpYiBpbnN0cnVtZW50YXRpb246IGNvdWxkIG5vdCBleHRyYWN0IGNvbm5lY3Rpb24gYXR0cmlidXRlICR7bmFtZUZvckxvZ30gZnJvbSB1c2VyIHN1cHBsaWVkIHVybGAsIHtcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59O1xuY29uc3QgZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tU2VydmVyID0gKGNvbm4pID0+IHtcbiAgICBjb25zdCBwcm9kdWN0ID0gY29ubi5zZXJ2ZXJQcm9wZXJ0aWVzLnByb2R1Y3Q/LnRvTG93ZXJDYXNlPy4oKTtcbiAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX01FU1NBR0lOR19TWVNURU1dOiBwcm9kdWN0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbn07XG5leHBvcnRzLmdldENvbm5lY3Rpb25BdHRyaWJ1dGVzRnJvbVNlcnZlciA9IGdldENvbm5lY3Rpb25BdHRyaWJ1dGVzRnJvbVNlcnZlcjtcbmNvbnN0IGdldENvbm5lY3Rpb25BdHRyaWJ1dGVzRnJvbVVybCA9ICh1cmwsIG5ldFNlbWNvbnZTdGFiaWxpdHkpID0+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgICBbc2VtY29udl9vYnNvbGV0ZV8xLkFUVFJfTUVTU0FHSU5HX1BST1RPQ09MX1ZFUlNJT05dOiAnMC45LjEnLCAvLyB0aGlzIGlzIHRoZSBvbmx5IHByb3RvY29sIHN1cHBvcnRlZCBieSB0aGUgaW5zdHJ1bWVudGVkIGxpYnJhcnlcbiAgICB9O1xuICAgIHVybCA9IHVybCB8fCAnYW1xcDovL2xvY2FsaG9zdCc7XG4gICAgaWYgKHR5cGVvZiB1cmwgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3RPcHRpb25zID0gdXJsO1xuICAgICAgICBjb25zdCBwcm90b2NvbCA9IGdldFByb3RvY29sKGNvbm5lY3RPcHRpb25zPy5wcm90b2NvbCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywge1xuICAgICAgICAgICAgLi4uZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyh1cmwsIHNlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19QUk9UT0NPTCwgcHJvdG9jb2wsICdwcm90b2NvbCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaG9zdG5hbWUgPSBnZXRIb3N0bmFtZShjb25uZWN0T3B0aW9ucz8uaG9zdG5hbWUpO1xuICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIHtcbiAgICAgICAgICAgICAgICAuLi5leHRyYWN0Q29ubmVjdGlvbkF0dHJpYnV0ZU9yTG9nKHVybCwgc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfTkFNRSwgaG9zdG5hbWUsICdob3N0bmFtZScpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ldFNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhdHRyaWJ1dGVzLCB7XG4gICAgICAgICAgICAgICAgLi4uZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyh1cmwsIHNlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9TRVJWRVJfQUREUkVTUywgaG9zdG5hbWUsICdob3N0bmFtZScpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9ydCA9IGdldFBvcnQoY29ubmVjdE9wdGlvbnMucG9ydCwgcHJvdG9jb2wpO1xuICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIGV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2codXJsLCBzZW1jb252XzEuQVRUUl9ORVRfUEVFUl9QT1JULCBwb3J0LCAncG9ydCcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIGV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2codXJsLCBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlQsIHBvcnQsICdwb3J0JykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBjZW5zb3JlZFVybCA9IGNlbnNvclBhc3N3b3JkKHVybCk7XG4gICAgICAgIGF0dHJpYnV0ZXNbc2VtY29udl9vYnNvbGV0ZV8xLkFUVFJfTUVTU0FHSU5HX1VSTF0gPSBjZW5zb3JlZFVybDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHVybFBhcnRzID0gbmV3IFVSTChjZW5zb3JlZFVybCk7XG4gICAgICAgICAgICBjb25zdCBwcm90b2NvbCA9IGdldFByb3RvY29sKHVybFBhcnRzLnByb3RvY29sKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywge1xuICAgICAgICAgICAgICAgIC4uLmV4dHJhY3RDb25uZWN0aW9uQXR0cmlidXRlT3JMb2coY2Vuc29yZWRVcmwsIHNlbWNvbnZfb2Jzb2xldGVfMS5BVFRSX01FU1NBR0lOR19QUk9UT0NPTCwgcHJvdG9jb2wsICdwcm90b2NvbCcpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBob3N0bmFtZSA9IGdldEhvc3RuYW1lKHVybFBhcnRzLmhvc3RuYW1lKTtcbiAgICAgICAgICAgIGlmIChuZXRTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyhjZW5zb3JlZFVybCwgc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfTkFNRSwgaG9zdG5hbWUsICdob3N0bmFtZScpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5ldFNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywge1xuICAgICAgICAgICAgICAgICAgICAuLi5leHRyYWN0Q29ubmVjdGlvbkF0dHJpYnV0ZU9yTG9nKGNlbnNvcmVkVXJsLCBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX0FERFJFU1MsIGhvc3RuYW1lLCAnaG9zdG5hbWUnKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSBnZXRQb3J0KHVybFBhcnRzLnBvcnQgPyBwYXJzZUludCh1cmxQYXJ0cy5wb3J0KSA6IHVuZGVmaW5lZCwgcHJvdG9jb2wpO1xuICAgICAgICAgICAgaWYgKG5ldFNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXR0cmlidXRlcywgZXh0cmFjdENvbm5lY3Rpb25BdHRyaWJ1dGVPckxvZyhjZW5zb3JlZFVybCwgc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfUE9SVCwgcG9ydCwgJ3BvcnQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhdHRyaWJ1dGVzLCBleHRyYWN0Q29ubmVjdGlvbkF0dHJpYnV0ZU9yTG9nKGNlbnNvcmVkVXJsLCBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlQsIHBvcnQsICdwb3J0JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ2FtcXBsaWIgaW5zdHJ1bWVudGF0aW9uOiBlcnJvciB3aGlsZSBleHRyYWN0aW5nIGNvbm5lY3Rpb24gZGV0YWlscyBmcm9tIGNvbm5lY3Rpb24gdXJsJywge1xuICAgICAgICAgICAgICAgIGNlbnNvcmVkVXJsLFxuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xufTtcbmV4cG9ydHMuZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsID0gZ2V0Q29ubmVjdGlvbkF0dHJpYnV0ZXNGcm9tVXJsO1xuY29uc3QgbWFya0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IChjb250ZXh0KSA9PiB7XG4gICAgcmV0dXJuIGNvbnRleHQuc2V0VmFsdWUoSVNfQ09ORklSTV9DSEFOTkVMX0NPTlRFWFRfS0VZLCB0cnVlKTtcbn07XG5leHBvcnRzLm1hcmtDb25maXJtQ2hhbm5lbFRyYWNpbmcgPSBtYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nO1xuY29uc3QgdW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nID0gKGNvbnRleHQpID0+IHtcbiAgICByZXR1cm4gY29udGV4dC5kZWxldGVWYWx1ZShJU19DT05GSVJNX0NIQU5ORUxfQ09OVEVYVF9LRVkpO1xufTtcbmV4cG9ydHMudW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nID0gdW5tYXJrQ29uZmlybUNoYW5uZWxUcmFjaW5nO1xuY29uc3QgaXNDb25maXJtQ2hhbm5lbFRyYWNpbmcgPSAoY29udGV4dCkgPT4ge1xuICAgIHJldHVybiBjb250ZXh0LmdldFZhbHVlKElTX0NPTkZJUk1fQ0hBTk5FTF9DT05URVhUX0tFWSkgPT09IHRydWU7XG59O1xuZXhwb3J0cy5pc0NvbmZpcm1DaGFubmVsVHJhY2luZyA9IGlzQ29uZmlybUNoYW5uZWxUcmFjaW5nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js ***!
\****************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWFtcXBsaWJAMC42MS4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWIvYnVpbGQvc3JjL3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsb0JBQW9CLEdBQUcsdUJBQXVCO0FBQzlDO0FBQ0EsdUJBQXVCO0FBQ3ZCLG9CQUFvQjtBQUNwQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tYW1xcGxpYkAwLjYxLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tYW1xcGxpYi9idWlsZC9zcmMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBBQ0tBR0VfTkFNRSA9IGV4cG9ydHMuUEFDS0FHRV9WRVJTSU9OID0gdm9pZCAwO1xuLy8gdGhpcyBpcyBhdXRvZ2VuZXJhdGVkIGZpbGUsIHNlZSBzY3JpcHRzL3ZlcnNpb24tdXBkYXRlLmpzXG5leHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9ICcwLjYxLjAnO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSAnQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWFtcXBsaWInO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVyc2lvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-amqplib@0.61.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js\n");
/***/ })
};
;