@shoplineos/cli 1.5.5 → 1.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/auth/login.js +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/helpers/command-usage.js +16 -0
- package/dist/helpers/config.js +1 -1
- package/dist/helpers/monitoring-bootstrap.js +1 -1
- package/dist/helpers/monitoring.js +2 -0
- package/dist/helpers/process-errors.js +1 -1
- package/dist/services/auth/logout.js +1 -1
- package/dist/services/dev-server/index.js +2 -2
- package/dist/services/dev-server-3/index.js +1 -1
- package/dist/services/dev-server-3/server.js +2 -2
- package/dist/services/extension/api.js +2 -2
- package/dist/services/extension/openapi.js +1 -1
- package/dist/services/extension/push/shopper.js +1 -1
- package/dist/services/identity-auth/api.js +1 -1
- package/dist/services/identity-auth/index.js +1 -1
- package/dist/services/theme/3.0/api.js +3 -3
- package/dist/services/theme/3.0/package.js +1 -1
- package/dist/services/theme/3.0/remote-watcher.js +1 -1
- package/dist/services/theme/3.0/theme.js +3 -3
- package/dist/services/theme/api.js +1 -1
- package/dist/services/theme/console/api.js +1 -1
- package/dist/services/theme/console/console.js +1 -1
- package/dist/services/theme/dev-server-monitoring.js +1 -1
- package/dist/services/theme/index.js +2 -2
- package/dist/services/theme/no-second-check.js +1 -1
- package/dist/services/theme/preview-http-client.js +2 -0
- package/dist/services/theme/proxy-error.js +1 -1
- package/dist/services/theme/remote-watcher.js +1 -1
- package/dist/services/theme/utils.js +1 -1
- package/dist/services/theme/watcher-monitoring.js +1 -1
- package/dist/utils/program.js +1 -1
- package/dist/utils/winston/index.js +1 -1
- package/dist/vendor/logger-apm-node/index.js +3 -3
- package/package.json +9 -7
- package/dist/helpers/sentry.js +0 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
(()=>{var t={7474:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i="7";function getBaseApiEndpoint(t){const n=t.protocol?`${t.protocol}:`:"";const r=t.port?`:${t.port}`:"";return`${n}//${t.host}${r}${t.path?`/${t.path}`:""}/api/`}function _getIngestEndpoint(t){return`${getBaseApiEndpoint(t)}${t.projectId}/envelope/`}function _encodedAuth(t,n){return o.urlEncode({sentry_key:t.publicKey,sentry_version:i,...n&&{sentry_client:`${n.name}/${n.version}`}})}function getEnvelopeEndpointWithUrlEncodedAuth(t,n={}){const r=typeof n==="string"?n:n.tunnel;const o=typeof n==="string"||!n._metadata?undefined:n._metadata.sdk;return r?r:`${_getIngestEndpoint(t)}?${_encodedAuth(t,o)}`}function getReportDialogEndpoint(t,n){const r=o.makeDsn(t);if(!r){return""}const i=`${getBaseApiEndpoint(r)}embed/error-page/`;let a=`dsn=${o.dsnToString(r)}`;for(const t in n){if(t==="dsn"){continue}if(t==="onClose"){continue}if(t==="user"){const t=n.user;if(!t){continue}if(t.name){a+=`&name=${encodeURIComponent(t.name)}`}if(t.email){a+=`&email=${encodeURIComponent(t.email)}`}}else{a+=`&${encodeURIComponent(t)}=${encodeURIComponent(n[t])}`}}return`${i}?${a}`}n.getEnvelopeEndpointWithUrlEncodedAuth=getEnvelopeEndpointWithUrlEncodedAuth;n.getReportDialogEndpoint=getReportDialogEndpoint},6038:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(7474);const a=r(1152);const c=r(1620);const l=r(5913);const g=r(1693);const u=r(4616);const d=r(3210);const I=r(1742);const p=r(1272);const m=r(1735);const C="Not capturing exception because it's already been captured.";class BaseClient{constructor(t){this._options=t;this._integrations={};this._integrationsInitialized=false;this._numProcessing=0;this._outcomes={};this._hooks={};this._eventProcessors=[];if(t.dsn){this._dsn=o.makeDsn(t.dsn)}else{a.DEBUG_BUILD&&o.logger.warn("No DSN provided, client will not send events.")}if(this._dsn){const n=i.getEnvelopeEndpointWithUrlEncodedAuth(this._dsn,t);this._transport=t.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...t.transportOptions,url:n})}}captureException(t,n,r){if(o.checkOrSetAlreadyCaught(t)){a.DEBUG_BUILD&&o.logger.log(C);return}let i=n&&n.event_id;this._process(this.eventFromException(t,n).then(t=>this._captureEvent(t,n,r)).then(t=>{i=t}));return i}captureMessage(t,n,r,i){let a=r&&r.event_id;const c=o.isParameterizedString(t)?t:String(t);const l=o.isPrimitive(t)?this.eventFromMessage(c,n,r):this.eventFromException(t,r);this._process(l.then(t=>this._captureEvent(t,r,i)).then(t=>{a=t}));return a}captureEvent(t,n,r){if(n&&n.originalException&&o.checkOrSetAlreadyCaught(n.originalException)){a.DEBUG_BUILD&&o.logger.log(C);return}let i=n&&n.event_id;const c=t.sdkProcessingMetadata||{};const l=c.capturedSpanScope;this._process(this._captureEvent(t,n,l||r).then(t=>{i=t}));return i}captureSession(t){if(!(typeof t.release==="string")){a.DEBUG_BUILD&&o.logger.warn("Discarded session because of missing or non-string release")}else{this.sendSession(t);I.updateSession(t,{init:false})}}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(t){const n=this._transport;if(n){if(this.metricsAggregator){this.metricsAggregator.flush()}return this._isClientDoneProcessing(t).then(r=>n.flush(t).then(t=>r&&t))}else{return o.resolvedSyncPromise(true)}}close(t){return this.flush(t).then(t=>{this.getOptions().enabled=false;if(this.metricsAggregator){this.metricsAggregator.close()}return t})}getEventProcessors(){return this._eventProcessors}addEventProcessor(t){this._eventProcessors.push(t)}setupIntegrations(t){if(t&&!this._integrationsInitialized||this._isEnabled()&&!this._integrationsInitialized){this._setupIntegrations()}}init(){if(this._isEnabled()){this._setupIntegrations()}}getIntegrationById(t){return this.getIntegrationByName(t)}getIntegrationByName(t){return this._integrations[t]}getIntegration(t){try{return this._integrations[t.id]||null}catch(n){a.DEBUG_BUILD&&o.logger.warn(`Cannot retrieve integration ${t.id} from the current Client`);return null}}addIntegration(t){const n=this._integrations[t.name];u.setupIntegration(this,t,this._integrations);if(!n){u.afterSetupIntegrations(this,[t])}}sendEvent(t,n={}){this.emit("beforeSendEvent",t,n);let r=c.createEventEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);for(const t of n.attachments||[]){r=o.addItemToEnvelope(r,o.createAttachmentEnvelopeItem(t,this._options.transportOptions&&this._options.transportOptions.textEncoder))}const i=this._sendEnvelope(r);if(i){i.then(n=>this.emit("afterSendEvent",t,n),null)}}sendSession(t){const n=c.createSessionEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(n)}recordDroppedEvent(t,n,r){if(this._options.sendClientReports){const i=typeof r==="number"?r:1;const c=`${t}:${n}`;a.DEBUG_BUILD&&o.logger.log(`Recording outcome: "${c}"${i>1?` (${i} times)`:""}`);this._outcomes[c]=(this._outcomes[c]||0)+i}}captureAggregateMetrics(t){a.DEBUG_BUILD&&o.logger.log(`Flushing aggregated metrics, number of metrics: ${t.length}`);const n=d.createMetricEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(n)}on(t,n){if(!this._hooks[t]){this._hooks[t]=[]}this._hooks[t].push(n)}emit(t,...n){if(this._hooks[t]){this._hooks[t].forEach(t=>t(...n))}}_setupIntegrations(){const{integrations:t}=this._options;this._integrations=u.setupIntegrations(this,t);u.afterSetupIntegrations(this,t);this._integrationsInitialized=true}_updateSessionFromEvent(t,n){let r=false;let o=false;const i=n.exception&&n.exception.values;if(i){o=true;for(const t of i){const n=t.mechanism;if(n&&n.handled===false){r=true;break}}}const a=t.status==="ok";const c=a&&t.errors===0||a&&r;if(c){I.updateSession(t,{...r&&{status:"crashed"},errors:t.errors||Number(o||r)});this.captureSession(t)}}_isClientDoneProcessing(t){return new o.SyncPromise(n=>{let r=0;const o=1;const i=setInterval(()=>{if(this._numProcessing==0){clearInterval(i);n(true)}else{r+=o;if(t&&r>=t){clearInterval(i);n(false)}}},o)})}_isEnabled(){return this.getOptions().enabled!==false&&this._transport!==undefined}_prepareEvent(t,n,r,o=g.getIsolationScope()){const i=this.getOptions();const a=Object.keys(this._integrations);if(!n.integrations&&a.length>0){n.integrations=a}this.emit("preprocessEvent",t,n);return m.prepareEvent(i,t,n,r,this,o).then(t=>{if(t===null){return t}const n={...o.getPropagationContext(),...r?r.getPropagationContext():undefined};const i=t.contexts&&t.contexts.trace;if(!i&&n){const{traceId:o,spanId:i,parentSpanId:a,dsc:c}=n;t.contexts={trace:{trace_id:o,span_id:i,parent_span_id:a},...t.contexts};const l=c?c:p.getDynamicSamplingContextFromClient(o,this,r);t.sdkProcessingMetadata={dynamicSamplingContext:l,...t.sdkProcessingMetadata}}return t})}_captureEvent(t,n={},r){return this._processEvent(t,n,r).then(t=>t.event_id,t=>{if(a.DEBUG_BUILD){const n=t;if(n.logLevel==="log"){o.logger.log(n.message)}else{o.logger.warn(n)}}return undefined})}_processEvent(t,n,r){const i=this.getOptions();const{sampleRate:a}=i;const c=isTransactionEvent(t);const l=isErrorEvent(t);const g=t.type||"error";const u=`before send for type \`${g}\``;if(l&&typeof a==="number"&&Math.random()>a){this.recordDroppedEvent("sample_rate","error",t);return o.rejectedSyncPromise(new o.SentryError(`Discarding event because it's not included in the random sample (sampling rate = ${a})`,"log"))}const d=g==="replay_event"?"replay":g;const I=t.sdkProcessingMetadata||{};const p=I.capturedSpanIsolationScope;return this._prepareEvent(t,n,r,p).then(r=>{if(r===null){this.recordDroppedEvent("event_processor",d,t);throw new o.SentryError("An event processor returned `null`, will not send event.","log")}const a=n.data&&n.data.__sentry__===true;if(a){return r}const c=processBeforeSend(i,r,n);return _validateBeforeSendResult(c,u)}).then(i=>{if(i===null){this.recordDroppedEvent("before_send",d,t);if(c){const n=t.spans||[];const r=1+n.length;this.recordDroppedEvent("before_send","span",r)}throw new o.SentryError(`${u} returned \`null\`, will not send event.`,"log")}const a=r&&r.getSession();if(!c&&a){this._updateSessionFromEvent(a,i)}if(c){const t=i.sdkProcessingMetadata&&i.sdkProcessingMetadata.spanCountBeforeProcessing||0;const n=i.spans?i.spans.length:0;const r=t-n;if(r>0){this.recordDroppedEvent("before_send","span",r)}}const l=i.transaction_info;if(c&&l&&i.transaction!==t.transaction){const t="custom";i.transaction_info={...l,source:t}}this.sendEvent(i,n);return i}).then(null,t=>{if(t instanceof o.SentryError){throw t}this.captureException(t,{data:{__sentry__:true},originalException:t});throw new o.SentryError(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${t}`)})}_process(t){this._numProcessing++;void t.then(t=>{this._numProcessing--;return t},t=>{this._numProcessing--;return t})}_sendEnvelope(t){this.emit("beforeEnvelope",t);if(this._isEnabled()&&this._transport){return this._transport.send(t).then(null,t=>{a.DEBUG_BUILD&&o.logger.error("Error while sending event:",t)})}else{a.DEBUG_BUILD&&o.logger.error("Transport disabled")}}_clearOutcomes(){const t=this._outcomes;this._outcomes={};return Object.keys(t).map(n=>{const[r,o]=n.split(":");return{reason:r,category:o,quantity:t[n]}})}}function _validateBeforeSendResult(t,n){const r=`${n} must return \`null\` or a valid event.`;if(o.isThenable(t)){return t.then(t=>{if(!o.isPlainObject(t)&&t!==null){throw new o.SentryError(r)}return t},t=>{throw new o.SentryError(`${n} rejected with ${t}`)})}else if(!o.isPlainObject(t)&&t!==null){throw new o.SentryError(r)}return t}function processBeforeSend(t,n,r){const{beforeSend:o,beforeSendTransaction:i}=t;if(isErrorEvent(n)&&o){return o(n,r)}if(isTransactionEvent(n)&&i){if(n.spans){const t=n.spans.length;n.sdkProcessingMetadata={...n.sdkProcessingMetadata,spanCountBeforeProcessing:t}}return i(n,r)}return n}function isErrorEvent(t){return t.type===undefined}function isTransactionEvent(t){return t.type==="transaction"}function addEventProcessor(t){const n=l.getClient();if(!n||!n.addEventProcessor){return}n.addEventProcessor(t)}n.BaseClient=BaseClient;n.addEventProcessor=addEventProcessor},3345:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function createCheckInEnvelope(t,n,r,i,a){const c={sent_at:(new Date).toISOString()};if(r&&r.sdk){c.sdk={name:r.sdk.name,version:r.sdk.version}}if(!!i&&!!a){c.dsn=o.dsnToString(a)}if(n){c.trace=o.dropUndefinedKeys(n)}const l=createCheckInEnvelopeItem(t);return o.createEnvelope(c,[l])}function createCheckInEnvelopeItem(t){const n={type:"check_in"};return[n,t]}n.createCheckInEnvelope=createCheckInEnvelope},19:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="production";n.DEFAULT_ENVIRONMENT=r},1152:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=r},1620:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function enhanceEventWithSdkInfo(t,n){if(!n){return t}t.sdk=t.sdk||{};t.sdk.name=t.sdk.name||n.name;t.sdk.version=t.sdk.version||n.version;t.sdk.integrations=[...t.sdk.integrations||[],...n.integrations||[]];t.sdk.packages=[...t.sdk.packages||[],...n.packages||[]];return t}function createSessionEnvelope(t,n,r,i){const a=o.getSdkMetadataForEnvelopeHeader(r);const c={sent_at:(new Date).toISOString(),...a&&{sdk:a},...!!i&&n&&{dsn:o.dsnToString(n)}};const l="aggregates"in t?[{type:"sessions"},t]:[{type:"session"},t.toJSON()];return o.createEnvelope(c,[l])}function createEventEnvelope(t,n,r,i){const a=o.getSdkMetadataForEnvelopeHeader(r);const c=t.type&&t.type!=="replay_event"?t.type:"event";enhanceEventWithSdkInfo(t,r&&r.sdk);const l=o.createEventEnvelopeHeaders(t,a,i,n);delete t.sdkProcessingMetadata;const g=[{type:c},t];return o.createEnvelope(l,[g])}n.createEventEnvelope=createEventEnvelope;n.createSessionEnvelope=createSessionEnvelope},8407:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);function getGlobalEventProcessors(){return o.getGlobalSingleton("globalEventProcessors",()=>[])}function addGlobalEventProcessor(t){getGlobalEventProcessors().push(t)}function notifyEventProcessors(t,n,r,a=0){return new o.SyncPromise((c,l)=>{const g=t[a];if(n===null||typeof g!=="function"){c(n)}else{const u=g({...n},r);i.DEBUG_BUILD&&g.id&&u===null&&o.logger.log(`Event processor "${g.id}" dropped event`);if(o.isThenable(u)){void u.then(n=>notifyEventProcessors(t,n,r,a+1).then(c)).then(null,l)}else{void notifyEventProcessors(t,u,r,a+1).then(c).then(null,l)}}})}n.addGlobalEventProcessor=addGlobalEventProcessor;n.getGlobalEventProcessors=getGlobalEventProcessors;n.notifyEventProcessors=notifyEventProcessors},5913:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(19);const a=r(1152);const c=r(1693);const l=r(1742);const g=r(1735);function captureException(t,n){return c.getCurrentHub().captureException(t,g.parseEventHintOrCaptureContext(n))}function captureMessage(t,n){const r=typeof n==="string"?n:undefined;const o=typeof n!=="string"?{captureContext:n}:undefined;return c.getCurrentHub().captureMessage(t,r,o)}function captureEvent(t,n){return c.getCurrentHub().captureEvent(t,n)}function configureScope(t){c.getCurrentHub().configureScope(t)}function addBreadcrumb(t,n){c.getCurrentHub().addBreadcrumb(t,n)}function setContext(t,n){c.getCurrentHub().setContext(t,n)}function setExtras(t){c.getCurrentHub().setExtras(t)}function setExtra(t,n){c.getCurrentHub().setExtra(t,n)}function setTags(t){c.getCurrentHub().setTags(t)}function setTag(t,n){c.getCurrentHub().setTag(t,n)}function setUser(t){c.getCurrentHub().setUser(t)}function withScope(...t){const n=c.getCurrentHub();if(t.length===2){const[r,o]=t;if(!r){return n.withScope(o)}return n.withScope(()=>{n.getStackTop().scope=r;return o(r)})}return n.withScope(t[0])}function withIsolationScope(t){return c.runWithAsyncContext(()=>t(c.getIsolationScope()))}function withActiveSpan(t,n){return withScope(r=>{r.setSpan(t);return n(r)})}function startTransaction(t,n){return c.getCurrentHub().startTransaction({...t},n)}function captureCheckIn(t,n){const r=getCurrentScope();const i=getClient();if(!i){a.DEBUG_BUILD&&o.logger.warn("Cannot capture check-in. No client defined.")}else if(!i.captureCheckIn){a.DEBUG_BUILD&&o.logger.warn("Cannot capture check-in. Client does not support sending check-ins.")}else{return i.captureCheckIn(t,n,r)}return o.uuid4()}function withMonitor(t,n,r){const i=captureCheckIn({monitorSlug:t,status:"in_progress"},r);const a=o.timestampInSeconds();function finishCheckIn(n){captureCheckIn({monitorSlug:t,status:n,checkInId:i,duration:o.timestampInSeconds()-a})}let c;try{c=n()}catch(t){finishCheckIn("error");throw t}if(o.isThenable(c)){Promise.resolve(c).then(()=>{finishCheckIn("ok")},()=>{finishCheckIn("error")})}else{finishCheckIn("ok")}return c}async function flush(t){const n=getClient();if(n){return n.flush(t)}a.DEBUG_BUILD&&o.logger.warn("Cannot flush events. No client defined.");return Promise.resolve(false)}async function close(t){const n=getClient();if(n){return n.close(t)}a.DEBUG_BUILD&&o.logger.warn("Cannot flush events and disable SDK. No client defined.");return Promise.resolve(false)}function lastEventId(){return c.getCurrentHub().lastEventId()}function getClient(){return c.getCurrentHub().getClient()}function isInitialized(){return!!getClient()}function getCurrentScope(){return c.getCurrentHub().getScope()}function startSession(t){const n=getClient();const r=c.getIsolationScope();const a=getCurrentScope();const{release:g,environment:u=i.DEFAULT_ENVIRONMENT}=n&&n.getOptions()||{};const{userAgent:d}=o.GLOBAL_OBJ.navigator||{};const I=l.makeSession({release:g,environment:u,user:a.getUser()||r.getUser(),...d&&{userAgent:d},...t});const p=r.getSession();if(p&&p.status==="ok"){l.updateSession(p,{status:"exited"})}endSession();r.setSession(I);a.setSession(I);return I}function endSession(){const t=c.getIsolationScope();const n=getCurrentScope();const r=n.getSession()||t.getSession();if(r){l.closeSession(r)}_sendSessionUpdate();t.setSession();n.setSession()}function _sendSessionUpdate(){const t=c.getIsolationScope();const n=getCurrentScope();const r=getClient();const o=n.getSession()||t.getSession();if(o&&r&&r.captureSession){r.captureSession(o)}}function captureSession(t=false){if(t){endSession();return}_sendSessionUpdate()}n.addBreadcrumb=addBreadcrumb;n.captureCheckIn=captureCheckIn;n.captureEvent=captureEvent;n.captureException=captureException;n.captureMessage=captureMessage;n.captureSession=captureSession;n.close=close;n.configureScope=configureScope;n.endSession=endSession;n.flush=flush;n.getClient=getClient;n.getCurrentScope=getCurrentScope;n.isInitialized=isInitialized;n.lastEventId=lastEventId;n.setContext=setContext;n.setExtra=setExtra;n.setExtras=setExtras;n.setTag=setTag;n.setTags=setTags;n.setUser=setUser;n.startSession=startSession;n.startTransaction=startTransaction;n.withActiveSpan=withActiveSpan;n.withIsolationScope=withIsolationScope;n.withMonitor=withMonitor;n.withScope=withScope},1693:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(19);const a=r(1152);const c=r(9450);const l=r(1742);const g=r(6710);const u=parseFloat(g.SDK_VERSION);const d=100;class Hub{constructor(t,n,r,o=u){this._version=o;let i;if(!n){i=new c.Scope;i.setClient(t)}else{i=n}let a;if(!r){a=new c.Scope;a.setClient(t)}else{a=r}this._stack=[{scope:i}];if(t){this.bindClient(t)}this._isolationScope=a}isOlderThan(t){return this._version<t}bindClient(t){const n=this.getStackTop();n.client=t;n.scope.setClient(t);if(t&&t.setupIntegrations){t.setupIntegrations()}}pushScope(){const t=this.getScope().clone();this.getStack().push({client:this.getClient(),scope:t});return t}popScope(){if(this.getStack().length<=1)return false;return!!this.getStack().pop()}withScope(t){const n=this.pushScope();let r;try{r=t(n)}catch(t){this.popScope();throw t}if(o.isThenable(r)){return r.then(t=>{this.popScope();return t},t=>{this.popScope();throw t})}this.popScope();return r}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(t,n){const r=this._lastEventId=n&&n.event_id?n.event_id:o.uuid4();const i=new Error("Sentry syntheticException");this.getScope().captureException(t,{originalException:t,syntheticException:i,...n,event_id:r});return r}captureMessage(t,n,r){const i=this._lastEventId=r&&r.event_id?r.event_id:o.uuid4();const a=new Error(t);this.getScope().captureMessage(t,n,{originalException:t,syntheticException:a,...r,event_id:i});return i}captureEvent(t,n){const r=n&&n.event_id?n.event_id:o.uuid4();if(!t.type){this._lastEventId=r}this.getScope().captureEvent(t,{...n,event_id:r});return r}lastEventId(){return this._lastEventId}addBreadcrumb(t,n){const{scope:r,client:i}=this.getStackTop();if(!i)return;const{beforeBreadcrumb:a=null,maxBreadcrumbs:c=d}=i.getOptions&&i.getOptions()||{};if(c<=0)return;const l=o.dateTimestampInSeconds();const g={timestamp:l,...t};const u=a?o.consoleSandbox(()=>a(g,n)):g;if(u===null)return;if(i.emit){i.emit("beforeAddBreadcrumb",u,n)}r.addBreadcrumb(u,c)}setUser(t){this.getScope().setUser(t);this.getIsolationScope().setUser(t)}setTags(t){this.getScope().setTags(t);this.getIsolationScope().setTags(t)}setExtras(t){this.getScope().setExtras(t);this.getIsolationScope().setExtras(t)}setTag(t,n){this.getScope().setTag(t,n);this.getIsolationScope().setTag(t,n)}setExtra(t,n){this.getScope().setExtra(t,n);this.getIsolationScope().setExtra(t,n)}setContext(t,n){this.getScope().setContext(t,n);this.getIsolationScope().setContext(t,n)}configureScope(t){const{scope:n,client:r}=this.getStackTop();if(r){t(n)}}run(t){const n=makeMain(this);try{t(this)}finally{makeMain(n)}}getIntegration(t){const n=this.getClient();if(!n)return null;try{return n.getIntegration(t)}catch(n){a.DEBUG_BUILD&&o.logger.warn(`Cannot retrieve integration ${t.id} from the current Hub`);return null}}startTransaction(t,n){const r=this._callExtensionMethod("startTransaction",t,n);if(a.DEBUG_BUILD&&!r){const t=this.getClient();if(!t){o.logger.warn("Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'")}else{o.logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`)}}return r}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(t=false){if(t){return this.endSession()}this._sendSessionUpdate()}endSession(){const t=this.getStackTop();const n=t.scope;const r=n.getSession();if(r){l.closeSession(r)}this._sendSessionUpdate();n.setSession()}startSession(t){const{scope:n,client:r}=this.getStackTop();const{release:a,environment:c=i.DEFAULT_ENVIRONMENT}=r&&r.getOptions()||{};const{userAgent:g}=o.GLOBAL_OBJ.navigator||{};const u=l.makeSession({release:a,environment:c,user:n.getUser(),...g&&{userAgent:g},...t});const d=n.getSession&&n.getSession();if(d&&d.status==="ok"){l.updateSession(d,{status:"exited"})}this.endSession();n.setSession(u);return u}shouldSendDefaultPii(){const t=this.getClient();const n=t&&t.getOptions();return Boolean(n&&n.sendDefaultPii)}_sendSessionUpdate(){const{scope:t,client:n}=this.getStackTop();const r=t.getSession();if(r&&n&&n.captureSession){n.captureSession(r)}}_callExtensionMethod(t,...n){const r=getMainCarrier();const i=r.__SENTRY__;if(i&&i.extensions&&typeof i.extensions[t]==="function"){return i.extensions[t].apply(this,n)}a.DEBUG_BUILD&&o.logger.warn(`Extension method ${t} couldn't be found, doing nothing.`)}}function getMainCarrier(){o.GLOBAL_OBJ.__SENTRY__=o.GLOBAL_OBJ.__SENTRY__||{extensions:{},hub:undefined};return o.GLOBAL_OBJ}function makeMain(t){const n=getMainCarrier();const r=getHubFromCarrier(n);setHubOnCarrier(n,t);return r}function getCurrentHub(){const t=getMainCarrier();if(t.__SENTRY__&&t.__SENTRY__.acs){const n=t.__SENTRY__.acs.getCurrentHub();if(n){return n}}return getGlobalHub(t)}function getIsolationScope(){return getCurrentHub().getIsolationScope()}function getGlobalHub(t=getMainCarrier()){if(!hasHubOnCarrier(t)||getHubFromCarrier(t).isOlderThan(u)){setHubOnCarrier(t,new Hub)}return getHubFromCarrier(t)}function ensureHubOnCarrier(t,n=getGlobalHub()){if(!hasHubOnCarrier(t)||getHubFromCarrier(t).isOlderThan(u)){const r=n.getClient();const o=n.getScope();const i=n.getIsolationScope();setHubOnCarrier(t,new Hub(r,o.clone(),i.clone()))}}function setAsyncContextStrategy(t){const n=getMainCarrier();n.__SENTRY__=n.__SENTRY__||{};n.__SENTRY__.acs=t}function runWithAsyncContext(t,n={}){const r=getMainCarrier();if(r.__SENTRY__&&r.__SENTRY__.acs){return r.__SENTRY__.acs.runWithAsyncContext(t,n)}return t()}function hasHubOnCarrier(t){return!!(t&&t.__SENTRY__&&t.__SENTRY__.hub)}function getHubFromCarrier(t){return o.getGlobalSingleton("hub",()=>new Hub,t)}function setHubOnCarrier(t,n){if(!t)return false;const r=t.__SENTRY__=t.__SENTRY__||{};r.hub=n;return true}n.API_VERSION=u;n.Hub=Hub;n.ensureHubOnCarrier=ensureHubOnCarrier;n.getCurrentHub=getCurrentHub;n.getHubFromCarrier=getHubFromCarrier;n.getIsolationScope=getIsolationScope;n.getMainCarrier=getMainCarrier;n.makeMain=makeMain;n.runWithAsyncContext=runWithAsyncContext;n.setAsyncContextStrategy=setAsyncContextStrategy;n.setHubOnCarrier=setHubOnCarrier},9090:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5542);const i=r(8245);const a=r(9835);const c=r(6163);const l=r(7082);const g=r(8097);const u=r(3710);const d=r(1272);const I=r(5111);const p=r(2594);const m=r(1985);const C=r(1620);const b=r(5913);const h=r(1693);const f=r(1742);const y=r(7865);const G=r(9450);const B=r(8407);const A=r(7474);const Z=r(6038);const S=r(3928);const v=r(1782);const W=r(2412);const R=r(7294);const _=r(8104);const V=r(6710);const H=r(4616);const N=r(6659);const E=r(1735);const T=r(3345);const Y=r(3644);const X=r(5987);const F=r(859);const w=r(1996);const K=r(1345);const k=r(7961);const U=r(7992);const J=r(4557);const x=r(19);const L=r(3719);const z=r(5133);const O=r(5018);const M=r(7970);const D=r(5164);const j=r(9456);const P=r(5027);const Q=j;n.addTracingExtensions=o.addTracingExtensions;n.startIdleTransaction=o.startIdleTransaction;n.IdleTransaction=i.IdleTransaction;n.TRACING_DEFAULTS=i.TRACING_DEFAULTS;n.Span=a.Span;n.Transaction=c.Transaction;n.extractTraceparentData=l.extractTraceparentData;n.getActiveTransaction=l.getActiveTransaction;Object.defineProperty(n,"SpanStatus",{enumerable:true,get:()=>g.SpanStatus});n.getSpanStatusFromHttpCode=g.getSpanStatusFromHttpCode;n.setHttpStatus=g.setHttpStatus;n.spanStatusfromHttpCode=g.spanStatusfromHttpCode;n.continueTrace=u.continueTrace;n.getActiveSpan=u.getActiveSpan;n.startActiveSpan=u.startActiveSpan;n.startInactiveSpan=u.startInactiveSpan;n.startSpan=u.startSpan;n.startSpanManual=u.startSpanManual;n.trace=u.trace;n.getDynamicSamplingContextFromClient=d.getDynamicSamplingContextFromClient;n.getDynamicSamplingContextFromSpan=d.getDynamicSamplingContextFromSpan;n.setMeasurement=I.setMeasurement;n.isValidSampleRate=p.isValidSampleRate;n.SEMANTIC_ATTRIBUTE_PROFILE_ID=m.SEMANTIC_ATTRIBUTE_PROFILE_ID;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=m.SEMANTIC_ATTRIBUTE_SENTRY_OP;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=m.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=m.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=m.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE;n.createEventEnvelope=C.createEventEnvelope;n.createSessionEnvelope=C.createSessionEnvelope;n.addBreadcrumb=b.addBreadcrumb;n.captureCheckIn=b.captureCheckIn;n.captureEvent=b.captureEvent;n.captureException=b.captureException;n.captureMessage=b.captureMessage;n.captureSession=b.captureSession;n.close=b.close;n.configureScope=b.configureScope;n.endSession=b.endSession;n.flush=b.flush;n.getClient=b.getClient;n.getCurrentScope=b.getCurrentScope;n.isInitialized=b.isInitialized;n.lastEventId=b.lastEventId;n.setContext=b.setContext;n.setExtra=b.setExtra;n.setExtras=b.setExtras;n.setTag=b.setTag;n.setTags=b.setTags;n.setUser=b.setUser;n.startSession=b.startSession;n.startTransaction=b.startTransaction;n.withActiveSpan=b.withActiveSpan;n.withIsolationScope=b.withIsolationScope;n.withMonitor=b.withMonitor;n.withScope=b.withScope;n.Hub=h.Hub;n.ensureHubOnCarrier=h.ensureHubOnCarrier;n.getCurrentHub=h.getCurrentHub;n.getHubFromCarrier=h.getHubFromCarrier;n.getIsolationScope=h.getIsolationScope;n.getMainCarrier=h.getMainCarrier;n.makeMain=h.makeMain;n.runWithAsyncContext=h.runWithAsyncContext;n.setAsyncContextStrategy=h.setAsyncContextStrategy;n.setHubOnCarrier=h.setHubOnCarrier;n.closeSession=f.closeSession;n.makeSession=f.makeSession;n.updateSession=f.updateSession;n.SessionFlusher=y.SessionFlusher;n.Scope=G.Scope;n.getGlobalScope=G.getGlobalScope;n.setGlobalScope=G.setGlobalScope;n.addGlobalEventProcessor=B.addGlobalEventProcessor;n.notifyEventProcessors=B.notifyEventProcessors;n.getEnvelopeEndpointWithUrlEncodedAuth=A.getEnvelopeEndpointWithUrlEncodedAuth;n.getReportDialogEndpoint=A.getReportDialogEndpoint;n.BaseClient=Z.BaseClient;n.addEventProcessor=Z.addEventProcessor;n.ServerRuntimeClient=S.ServerRuntimeClient;n.initAndBind=v.initAndBind;n.setCurrentClient=v.setCurrentClient;n.createTransport=W.createTransport;n.makeOfflineTransport=R.makeOfflineTransport;n.makeMultiplexedTransport=_.makeMultiplexedTransport;n.SDK_VERSION=V.SDK_VERSION;n.addIntegration=H.addIntegration;n.convertIntegrationFnToClass=H.convertIntegrationFnToClass;n.defineIntegration=H.defineIntegration;n.getIntegrationsToSetup=H.getIntegrationsToSetup;n.applyScopeDataToEvent=N.applyScopeDataToEvent;n.mergeScopeData=N.mergeScopeData;n.prepareEvent=E.prepareEvent;n.createCheckInEnvelope=T.createCheckInEnvelope;n.createSpanEnvelope=Y.createSpanEnvelope;n.hasTracingEnabled=X.hasTracingEnabled;n.isSentryRequestUrl=F.isSentryRequestUrl;n.handleCallbackErrors=w.handleCallbackErrors;n.parameterize=K.parameterize;n.spanIsSampled=k.spanIsSampled;n.spanToJSON=k.spanToJSON;n.spanToTraceContext=k.spanToTraceContext;n.spanToTraceHeader=k.spanToTraceHeader;n.getRootSpan=U.getRootSpan;n.applySdkMetadata=J.applySdkMetadata;n.DEFAULT_ENVIRONMENT=x.DEFAULT_ENVIRONMENT;n.ModuleMetadata=L.ModuleMetadata;n.moduleMetadataIntegration=L.moduleMetadataIntegration;n.RequestData=z.RequestData;n.requestDataIntegration=z.requestDataIntegration;n.InboundFilters=O.InboundFilters;n.inboundFiltersIntegration=O.inboundFiltersIntegration;n.FunctionToString=M.FunctionToString;n.functionToStringIntegration=M.functionToStringIntegration;n.LinkedErrors=D.LinkedErrors;n.linkedErrorsIntegration=D.linkedErrorsIntegration;n.metrics=P.metrics;n.Integrations=Q},4616:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(8407);const c=r(5913);const l=r(1693);const g=[];function filterDuplicates(t){const n={};t.forEach(t=>{const{name:r}=t;const o=n[r];if(o&&!o.isDefaultInstance&&t.isDefaultInstance){return}n[r]=t});return Object.keys(n).map(t=>n[t])}function getIntegrationsToSetup(t){const n=t.defaultIntegrations||[];const r=t.integrations;n.forEach(t=>{t.isDefaultInstance=true});let i;if(Array.isArray(r)){i=[...n,...r]}else if(typeof r==="function"){i=o.arrayify(r(n))}else{i=n}const a=filterDuplicates(i);const c=findIndex(a,t=>t.name==="Debug");if(c!==-1){const[t]=a.splice(c,1);a.push(t)}return a}function setupIntegrations(t,n){const r={};n.forEach(n=>{if(n){setupIntegration(t,n,r)}});return r}function afterSetupIntegrations(t,n){for(const r of n){if(r&&r.afterAllSetup){r.afterAllSetup(t)}}}function setupIntegration(t,n,r){if(r[n.name]){i.DEBUG_BUILD&&o.logger.log(`Integration skipped because it was already installed: ${n.name}`);return}r[n.name]=n;if(g.indexOf(n.name)===-1){n.setupOnce(a.addGlobalEventProcessor,l.getCurrentHub);g.push(n.name)}if(n.setup&&typeof n.setup==="function"){n.setup(t)}if(t.on&&typeof n.preprocessEvent==="function"){const r=n.preprocessEvent.bind(n);t.on("preprocessEvent",(n,o)=>r(n,o,t))}if(t.addEventProcessor&&typeof n.processEvent==="function"){const r=n.processEvent.bind(n);const processor=(n,o)=>r(n,o,t);processor.id=n.name;t.addEventProcessor(processor)}i.DEBUG_BUILD&&o.logger.log(`Integration installed: ${n.name}`)}function addIntegration(t){const n=c.getClient();if(!n||!n.addIntegration){i.DEBUG_BUILD&&o.logger.warn(`Cannot add integration "${t.name}" because no SDK Client is available.`);return}n.addIntegration(t)}function findIndex(t,n){for(let r=0;r<t.length;r++){if(n(t[r])===true){return r}}return-1}function convertIntegrationFnToClass(t,n){const r=function ConvertedIntegration(...t){return n(...t)};r.id=t;return r}function defineIntegration(t){return t}n.addIntegration=addIntegration;n.afterSetupIntegrations=afterSetupIntegrations;n.convertIntegrationFnToClass=convertIntegrationFnToClass;n.defineIntegration=defineIntegration;n.getIntegrationsToSetup=getIntegrationsToSetup;n.installedIntegrations=g;n.setupIntegration=setupIntegration;n.setupIntegrations=setupIntegrations},7970:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(5913);const a=r(4616);let c;const l="FunctionToString";const g=new WeakMap;const _functionToStringIntegration=()=>({name:l,setupOnce(){c=Function.prototype.toString;try{Function.prototype.toString=function(...t){const n=o.getOriginalFunction(this);const r=g.has(i.getClient())&&n!==undefined?n:this;return c.apply(r,t)}}catch(t){}},setup(t){g.set(t,true)}});const u=a.defineIntegration(_functionToStringIntegration);const d=a.convertIntegrationFnToClass(l,u);n.FunctionToString=d;n.functionToStringIntegration=u},5018:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(4616);const c=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/];const l=[/^.*\/healthcheck$/,/^.*\/healthy$/,/^.*\/live$/,/^.*\/ready$/,/^.*\/heartbeat$/,/^.*\/health$/,/^.*\/healthz$/];const g="InboundFilters";const _inboundFiltersIntegration=(t={})=>({name:g,setupOnce(){},processEvent(n,r,o){const i=o.getOptions();const a=_mergeOptions(t,i);return _shouldDropEvent(n,a)?null:n}});const u=a.defineIntegration(_inboundFiltersIntegration);const d=a.convertIntegrationFnToClass(g,u);function _mergeOptions(t={},n={}){return{allowUrls:[...t.allowUrls||[],...n.allowUrls||[]],denyUrls:[...t.denyUrls||[],...n.denyUrls||[]],ignoreErrors:[...t.ignoreErrors||[],...n.ignoreErrors||[],...t.disableErrorDefaults?[]:c],ignoreTransactions:[...t.ignoreTransactions||[],...n.ignoreTransactions||[],...t.disableTransactionDefaults?[]:l],ignoreInternal:t.ignoreInternal!==undefined?t.ignoreInternal:true}}function _shouldDropEvent(t,n){if(n.ignoreInternal&&_isSentryError(t)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being internal Sentry Error.\nEvent: ${o.getEventDescription(t)}`);return true}if(_isIgnoredError(t,n.ignoreErrors)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being matched by \`ignoreErrors\` option.\nEvent: ${o.getEventDescription(t)}`);return true}if(_isIgnoredTransaction(t,n.ignoreTransactions)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.\nEvent: ${o.getEventDescription(t)}`);return true}if(_isDeniedUrl(t,n.denyUrls)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being matched by \`denyUrls\` option.\nEvent: ${o.getEventDescription(t)}.\nUrl: ${_getEventFilterUrl(t)}`);return true}if(!_isAllowedUrl(t,n.allowUrls)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to not being matched by \`allowUrls\` option.\nEvent: ${o.getEventDescription(t)}.\nUrl: ${_getEventFilterUrl(t)}`);return true}return false}function _isIgnoredError(t,n){if(t.type||!n||!n.length){return false}return _getPossibleEventMessages(t).some(t=>o.stringMatchesSomePattern(t,n))}function _isIgnoredTransaction(t,n){if(t.type!=="transaction"||!n||!n.length){return false}const r=t.transaction;return r?o.stringMatchesSomePattern(r,n):false}function _isDeniedUrl(t,n){if(!n||!n.length){return false}const r=_getEventFilterUrl(t);return!r?false:o.stringMatchesSomePattern(r,n)}function _isAllowedUrl(t,n){if(!n||!n.length){return true}const r=_getEventFilterUrl(t);return!r?true:o.stringMatchesSomePattern(r,n)}function _getPossibleEventMessages(t){const n=[];if(t.message){n.push(t.message)}let r;try{r=t.exception.values[t.exception.values.length-1]}catch(t){}if(r){if(r.value){n.push(r.value);if(r.type){n.push(`${r.type}: ${r.value}`)}}}if(i.DEBUG_BUILD&&n.length===0){o.logger.error(`Could not extract message for event ${o.getEventDescription(t)}`)}return n}function _isSentryError(t){try{return t.exception.values[0].type==="SentryError"}catch(t){}return false}function _getLastValidUrl(t=[]){for(let n=t.length-1;n>=0;n--){const r=t[n];if(r&&r.filename!=="<anonymous>"&&r.filename!=="[native code]"){return r.filename||null}}return null}function _getEventFilterUrl(t){try{let n;try{n=t.exception.values[0].stacktrace.frames}catch(t){}return n?_getLastValidUrl(n):null}catch(n){i.DEBUG_BUILD&&o.logger.error(`Cannot extract url for event ${o.getEventDescription(t)}`);return null}}n.InboundFilters=d;n.inboundFiltersIntegration=u},9456:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(7970);const i=r(5018);const a=r(5164);n.FunctionToString=o.FunctionToString;n.InboundFilters=i.InboundFilters;n.LinkedErrors=a.LinkedErrors},5164:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(4616);const a="cause";const c=5;const l="LinkedErrors";const _linkedErrorsIntegration=(t={})=>{const n=t.limit||c;const r=t.key||a;return{name:l,setupOnce(){},preprocessEvent(t,i,a){const c=a.getOptions();o.applyAggregateErrorsToEvent(o.exceptionFromError,c.stackParser,c.maxValueLength,r,n,t,i)}}};const g=i.defineIntegration(_linkedErrorsIntegration);const u=i.convertIntegrationFnToClass(l,g);n.LinkedErrors=u;n.linkedErrorsIntegration=g},3719:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(4616);const a=r(2785);const c="ModuleMetadata";const _moduleMetadataIntegration=()=>({name:c,setupOnce(){},setup(t){if(typeof t.on!=="function"){return}t.on("beforeEnvelope",t=>{o.forEachEnvelopeItem(t,(t,n)=>{if(n==="event"){const n=Array.isArray(t)?t[1]:undefined;if(n){a.stripMetadataFromStackFrames(n);t[1]=n}}})})},processEvent(t,n,r){const o=r.getOptions().stackParser;a.addMetadataToStackFrames(o,t);return t}});const l=i.defineIntegration(_moduleMetadataIntegration);const g=i.convertIntegrationFnToClass(c,l);n.ModuleMetadata=g;n.moduleMetadataIntegration=l},5133:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(4616);const a=r(7961);const c={include:{cookies:true,data:true,headers:true,ip:false,query_string:true,url:true,user:{id:true,username:true,email:true}},transactionNamingScheme:"methodPath"};const l="RequestData";const _requestDataIntegration=(t={})=>{const n=o.addRequestDataToEvent;const r={...c,...t,include:{method:true,...c.include,...t.include,user:t.include&&typeof t.include.user==="boolean"?t.include.user:{...c.include.user,...(t.include||{}).user}}};return{name:l,setupOnce(){},processEvent(t,i,c){const{transactionNamingScheme:l}=r;const{sdkProcessingMetadata:g={}}=t;const u=g.request;if(!u){return t}const d=g.requestDataOptionsFromExpressHandler||g.requestDataOptionsFromGCPWrapper||convertReqDataIntegrationOptsToAddReqDataOpts(r);const I=n(t,u,d);if(t.type==="transaction"||l==="handler"){return I}const p=u;const m=p._sentryTransaction;if(m){const t=a.spanToJSON(m).description||"";const n=getSDKName(c)==="sentry.javascript.nextjs"?t.startsWith("/api"):l!=="path";const[r]=o.extractPathForTransaction(u,{path:true,method:n,customRoute:t});I.transaction=r}return I}}};const g=i.defineIntegration(_requestDataIntegration);const u=i.convertIntegrationFnToClass(l,g);function convertReqDataIntegrationOptsToAddReqDataOpts(t){const{transactionNamingScheme:n,include:{ip:r,user:o,...i}}=t;const a=[];for(const[t,n]of Object.entries(i)){if(n){a.push(t)}}let c;if(o===undefined){c=true}else if(typeof o==="boolean"){c=o}else{const t=[];for(const[n,r]of Object.entries(o)){if(r){t.push(n)}}c=t}return{include:{ip:r,user:c,request:a.length!==0?a:undefined,transaction:n}}}function getSDKName(t){try{return t.getOptions()._metadata.sdk.name}catch(t){return undefined}}n.RequestData=u;n.requestDataIntegration=g},2785:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=new Map;const a=new Set;function ensureMetadataStacksAreParsed(t){if(!o.GLOBAL_OBJ._sentryModuleMetadata){return}for(const n of Object.keys(o.GLOBAL_OBJ._sentryModuleMetadata)){const r=o.GLOBAL_OBJ._sentryModuleMetadata[n];if(a.has(n)){continue}a.add(n);const c=t(n);for(const t of c.reverse()){if(t.filename){i.set(t.filename,r);break}}}}function getMetadataForUrl(t,n){ensureMetadataStacksAreParsed(t);return i.get(n)}function addMetadataToStackFrames(t,n){try{n.exception.values.forEach(n=>{if(!n.stacktrace){return}for(const r of n.stacktrace.frames||[]){if(!r.filename){continue}const n=getMetadataForUrl(t,r.filename);if(n){r.module_metadata=n}}})}catch(t){}}function stripMetadataFromStackFrames(t){try{t.exception.values.forEach(t=>{if(!t.stacktrace){return}for(const n of t.stacktrace.frames||[]){delete n.module_metadata}})}catch(t){}}n.addMetadataToStackFrames=addMetadataToStackFrames;n.getMetadataForUrl=getMetadataForUrl;n.stripMetadataFromStackFrames=stripMetadataFromStackFrames},71:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(2985);const a=r(9609);const c=r(3959);const l=r(1181);class MetricsAggregator{constructor(t){this._client=t;this._buckets=new Map;this._bucketsTotalWeight=0;this._interval=setInterval(()=>this._flush(),i.DEFAULT_FLUSH_INTERVAL);if(this._interval.unref){this._interval.unref()}this._flushShift=Math.floor(Math.random()*i.DEFAULT_FLUSH_INTERVAL/1e3);this._forceFlush=false}add(t,n,r,g="none",u={},d=o.timestampInSeconds()){const I=Math.floor(d);const p=l.sanitizeMetricKey(n);const m=l.sanitizeTags(u);const C=l.sanitizeUnit(g);const b=l.getBucketKey(t,p,C,m);let h=this._buckets.get(b);const f=h&&t===i.SET_METRIC_TYPE?h.metric.weight:0;if(h){h.metric.add(r);if(h.timestamp<I){h.timestamp=I}}else{h={metric:new a.METRIC_MAP[t](r),timestamp:I,metricType:t,name:p,unit:C,tags:m};this._buckets.set(b,h)}const y=typeof r==="string"?h.metric.weight-f:r;c.updateMetricSummaryOnActiveSpan(t,p,y,C,u,b);this._bucketsTotalWeight+=h.metric.weight;if(this._bucketsTotalWeight>=i.MAX_WEIGHT){this.flush()}}flush(){this._forceFlush=true;this._flush()}close(){this._forceFlush=true;clearInterval(this._interval);this._flush()}_flush(){if(this._forceFlush){this._forceFlush=false;this._bucketsTotalWeight=0;this._captureMetrics(this._buckets);this._buckets.clear();return}const t=Math.floor(o.timestampInSeconds())-i.DEFAULT_FLUSH_INTERVAL/1e3-this._flushShift;const n=new Map;for(const[r,o]of this._buckets){if(o.timestamp<=t){n.set(r,o);this._bucketsTotalWeight-=o.metric.weight}}for(const[t]of n){this._buckets.delete(t)}this._captureMetrics(n)}_captureMetrics(t){if(t.size>0&&this._client.captureAggregateMetrics){const n=Array.from(t).map(([,t])=>t);this._client.captureAggregateMetrics(n)}}}n.MetricsAggregator=MetricsAggregator},1992:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(2985);const a=r(9609);const c=r(3959);const l=r(1181);class BrowserMetricsAggregator{constructor(t){this._client=t;this._buckets=new Map;this._interval=setInterval(()=>this.flush(),i.DEFAULT_BROWSER_FLUSH_INTERVAL)}add(t,n,r,g="none",u={},d=o.timestampInSeconds()){const I=Math.floor(d);const p=l.sanitizeMetricKey(n);const m=l.sanitizeTags(u);const C=l.sanitizeUnit(g);const b=l.getBucketKey(t,p,C,m);let h=this._buckets.get(b);const f=h&&t===i.SET_METRIC_TYPE?h.metric.weight:0;if(h){h.metric.add(r);if(h.timestamp<I){h.timestamp=I}}else{h={metric:new a.METRIC_MAP[t](r),timestamp:I,metricType:t,name:p,unit:C,tags:m};this._buckets.set(b,h)}const y=typeof r==="string"?h.metric.weight-f:r;c.updateMetricSummaryOnActiveSpan(t,p,y,C,u,b)}flush(){if(this._buckets.size===0){return}if(this._client.captureAggregateMetrics){const t=Array.from(this._buckets).map(([,t])=>t);this._client.captureAggregateMetrics(t)}this._buckets.clear()}close(){clearInterval(this._interval);this.flush()}}n.BrowserMetricsAggregator=BrowserMetricsAggregator},2985:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="c";const o="g";const i="s";const a="d";const c=5e3;const l=1e4;const g=1e4;n.COUNTER_METRIC_TYPE=r;n.DEFAULT_BROWSER_FLUSH_INTERVAL=c;n.DEFAULT_FLUSH_INTERVAL=l;n.DISTRIBUTION_METRIC_TYPE=a;n.GAUGE_METRIC_TYPE=o;n.MAX_WEIGHT=g;n.SET_METRIC_TYPE=i},3210:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1181);function createMetricEnvelope(t,n,r,i){const a={sent_at:(new Date).toISOString()};if(r&&r.sdk){a.sdk={name:r.sdk.name,version:r.sdk.version}}if(!!i&&n){a.dsn=o.dsnToString(n)}const c=createMetricEnvelopeItem(t);return o.createEnvelope(a,[c])}function createMetricEnvelopeItem(t){const n=i.serializeMetricBuckets(t);const r={type:"statsd",length:n.length};return[r,n]}n.createMetricEnvelope=createMetricEnvelope},5027:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(5913);const c=r(7961);const l=r(2985);const g=r(4738);function addToMetricsAggregator(t,n,r,l={}){const g=a.getClient();const u=a.getCurrentScope();if(g){if(!g.metricsAggregator){i.DEBUG_BUILD&&o.logger.warn("No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs");return}const{unit:a,tags:d,timestamp:I}=l;const{release:p,environment:m}=g.getOptions();const C=u.getTransaction();const b={};if(p){b.release=p}if(m){b.environment=m}if(C){b.transaction=c.spanToJSON(C).description||""}i.DEBUG_BUILD&&o.logger.log(`Adding value of ${r} to ${t} metric ${n}`);g.metricsAggregator.add(t,n,r,a,{...b,...d},I)}}function increment(t,n=1,r){addToMetricsAggregator(l.COUNTER_METRIC_TYPE,t,n,r)}function distribution(t,n,r){addToMetricsAggregator(l.DISTRIBUTION_METRIC_TYPE,t,n,r)}function set(t,n,r){addToMetricsAggregator(l.SET_METRIC_TYPE,t,n,r)}function gauge(t,n,r){addToMetricsAggregator(l.GAUGE_METRIC_TYPE,t,n,r)}const u={increment:increment,distribution:distribution,set:set,gauge:gauge,MetricsAggregator:g.MetricsAggregator,metricsAggregatorIntegration:g.metricsAggregatorIntegration};n.distribution=distribution;n.gauge=gauge;n.increment=increment;n.metrics=u;n.set=set},9609:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2985);const i=r(1181);class CounterMetric{constructor(t){this._value=t}get weight(){return 1}add(t){this._value+=t}toString(){return`${this._value}`}}class GaugeMetric{constructor(t){this._last=t;this._min=t;this._max=t;this._sum=t;this._count=1}get weight(){return 5}add(t){this._last=t;if(t<this._min){this._min=t}if(t>this._max){this._max=t}this._sum+=t;this._count++}toString(){return`${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`}}class DistributionMetric{constructor(t){this._value=[t]}get weight(){return this._value.length}add(t){this._value.push(t)}toString(){return this._value.join(":")}}class SetMetric{constructor(t){this.first=t;this._value=new Set([t])}get weight(){return this._value.size}add(t){this._value.add(t)}toString(){return Array.from(this._value).map(t=>typeof t==="string"?i.simpleHash(t):t).join(":")}}const a={[o.COUNTER_METRIC_TYPE]:CounterMetric,[o.GAUGE_METRIC_TYPE]:GaugeMetric,[o.DISTRIBUTION_METRIC_TYPE]:DistributionMetric,[o.SET_METRIC_TYPE]:SetMetric};n.CounterMetric=CounterMetric;n.DistributionMetric=DistributionMetric;n.GaugeMetric=GaugeMetric;n.METRIC_MAP=a;n.SetMetric=SetMetric},4738:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4616);const i=r(1992);const a="MetricsAggregator";const _metricsAggregatorIntegration=()=>({name:a,setupOnce(){},setup(t){t.metricsAggregator=new i.BrowserMetricsAggregator(t)}});const c=o.defineIntegration(_metricsAggregatorIntegration);const l=o.convertIntegrationFnToClass(a,c);n.MetricsAggregator=l;n.metricsAggregatorIntegration=c},3959:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);r(1152);r(1624);r(8097);const i=r(3710);let a;function getMetricStorageForSpan(t){return a?a.get(t):undefined}function getMetricSummaryJsonForSpan(t){const n=getMetricStorageForSpan(t);if(!n){return undefined}const r={};for(const[,[t,i]]of n){if(!r[t]){r[t]=[]}r[t].push(o.dropUndefinedKeys(i))}return r}function updateMetricSummaryOnActiveSpan(t,n,r,o,c,l){const g=i.getActiveSpan();if(g){const i=getMetricStorageForSpan(g)||new Map;const u=`${t}:${n}@${o}`;const d=i.get(l);if(d){const[,t]=d;i.set(l,[u,{min:Math.min(t.min,r),max:Math.max(t.max,r),count:t.count+=1,sum:t.sum+=r,tags:t.tags}])}else{i.set(l,[u,{min:r,max:r,count:1,sum:r,tags:c}])}if(!a){a=new WeakMap}a.set(g,i)}}n.getMetricSummaryJsonForSpan=getMetricSummaryJsonForSpan;n.updateMetricSummaryOnActiveSpan=updateMetricSummaryOnActiveSpan},1181:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function getBucketKey(t,n,r,i){const a=Object.entries(o.dropUndefinedKeys(i)).sort((t,n)=>t[0].localeCompare(n[0]));return`${t}${n}${r}${a}`}function simpleHash(t){let n=0;for(let r=0;r<t.length;r++){const o=t.charCodeAt(r);n=(n<<5)-n+o;n&=n}return n>>>0}function serializeMetricBuckets(t){let n="";for(const r of t){const t=Object.entries(r.tags);const o=t.length>0?`|#${t.map(([t,n])=>`${t}:${n}`).join(",")}`:"";n+=`${r.name}@${r.unit}:${r.metric}|${r.metricType}${o}|T${r.timestamp}\n`}return n}function sanitizeUnit(t){return t.replace(/[^\w]+/gi,"_")}function sanitizeMetricKey(t){return t.replace(/[^\w\-.]+/gi,"_")}function sanitizeTagKey(t){return t.replace(/[^\w\-./]+/gi,"")}const i=[["\n","\\n"],["\r","\\r"],["\t","\\t"],["\\","\\\\"],["|","\\u{7c}"],[",","\\u{2c}"]];function getCharOrReplacement(t){for(const[n,r]of i){if(t===n){return r}}return t}function sanitizeTagValue(t){return[...t].reduce((t,n)=>t+getCharOrReplacement(n),"")}function sanitizeTags(t){const n={};for(const r in t){if(Object.prototype.hasOwnProperty.call(t,r)){const o=sanitizeTagKey(r);n[o]=sanitizeTagValue(String(t[r]))}}return n}n.getBucketKey=getBucketKey;n.sanitizeMetricKey=sanitizeMetricKey;n.sanitizeTags=sanitizeTags;n.sanitizeUnit=sanitizeUnit;n.serializeMetricBuckets=serializeMetricBuckets;n.simpleHash=simpleHash},9450:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(8407);const a=r(1742);const c=r(6659);const l=100;let g;class Scope{constructor(){this._notifyingListeners=false;this._scopeListeners=[];this._eventProcessors=[];this._breadcrumbs=[];this._attachments=[];this._user={};this._tags={};this._extra={};this._contexts={};this._sdkProcessingMetadata={};this._propagationContext=generatePropagationContext()}static clone(t){return t?t.clone():new Scope}clone(){const t=new Scope;t._breadcrumbs=[...this._breadcrumbs];t._tags={...this._tags};t._extra={...this._extra};t._contexts={...this._contexts};t._user=this._user;t._level=this._level;t._span=this._span;t._session=this._session;t._transactionName=this._transactionName;t._fingerprint=this._fingerprint;t._eventProcessors=[...this._eventProcessors];t._requestSession=this._requestSession;t._attachments=[...this._attachments];t._sdkProcessingMetadata={...this._sdkProcessingMetadata};t._propagationContext={...this._propagationContext};t._client=this._client;return t}setClient(t){this._client=t}getClient(){return this._client}addScopeListener(t){this._scopeListeners.push(t)}addEventProcessor(t){this._eventProcessors.push(t);return this}setUser(t){this._user=t||{email:undefined,id:undefined,ip_address:undefined,segment:undefined,username:undefined};if(this._session){a.updateSession(this._session,{user:t})}this._notifyScopeListeners();return this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(t){this._requestSession=t;return this}setTags(t){this._tags={...this._tags,...t};this._notifyScopeListeners();return this}setTag(t,n){this._tags={...this._tags,[t]:n};this._notifyScopeListeners();return this}setExtras(t){this._extra={...this._extra,...t};this._notifyScopeListeners();return this}setExtra(t,n){this._extra={...this._extra,[t]:n};this._notifyScopeListeners();return this}setFingerprint(t){this._fingerprint=t;this._notifyScopeListeners();return this}setLevel(t){this._level=t;this._notifyScopeListeners();return this}setTransactionName(t){this._transactionName=t;this._notifyScopeListeners();return this}setContext(t,n){if(n===null){delete this._contexts[t]}else{this._contexts[t]=n}this._notifyScopeListeners();return this}setSpan(t){this._span=t;this._notifyScopeListeners();return this}getSpan(){return this._span}getTransaction(){const t=this._span;return t&&t.transaction}setSession(t){if(!t){delete this._session}else{this._session=t}this._notifyScopeListeners();return this}getSession(){return this._session}update(t){if(!t){return this}const n=typeof t==="function"?t(this):t;if(n instanceof Scope){const t=n.getScopeData();this._tags={...this._tags,...t.tags};this._extra={...this._extra,...t.extra};this._contexts={...this._contexts,...t.contexts};if(t.user&&Object.keys(t.user).length){this._user=t.user}if(t.level){this._level=t.level}if(t.fingerprint.length){this._fingerprint=t.fingerprint}if(n.getRequestSession()){this._requestSession=n.getRequestSession()}if(t.propagationContext){this._propagationContext=t.propagationContext}}else if(o.isPlainObject(n)){const n=t;this._tags={...this._tags,...n.tags};this._extra={...this._extra,...n.extra};this._contexts={...this._contexts,...n.contexts};if(n.user){this._user=n.user}if(n.level){this._level=n.level}if(n.fingerprint){this._fingerprint=n.fingerprint}if(n.requestSession){this._requestSession=n.requestSession}if(n.propagationContext){this._propagationContext=n.propagationContext}}return this}clear(){this._breadcrumbs=[];this._tags={};this._extra={};this._user={};this._contexts={};this._level=undefined;this._transactionName=undefined;this._fingerprint=undefined;this._requestSession=undefined;this._span=undefined;this._session=undefined;this._notifyScopeListeners();this._attachments=[];this._propagationContext=generatePropagationContext();return this}addBreadcrumb(t,n){const r=typeof n==="number"?n:l;if(r<=0){return this}const i={timestamp:o.dateTimestampInSeconds(),...t};const a=this._breadcrumbs;a.push(i);this._breadcrumbs=a.length>r?a.slice(-r):a;this._notifyScopeListeners();return this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){this._breadcrumbs=[];this._notifyScopeListeners();return this}addAttachment(t){this._attachments.push(t);return this}getAttachments(){const t=this.getScopeData();return t.attachments}clearAttachments(){this._attachments=[];return this}getScopeData(){const{_breadcrumbs:t,_attachments:n,_contexts:r,_tags:o,_extra:i,_user:a,_level:c,_fingerprint:l,_eventProcessors:g,_propagationContext:u,_sdkProcessingMetadata:d,_transactionName:I,_span:p}=this;return{breadcrumbs:t,attachments:n,contexts:r,tags:o,extra:i,user:a,level:c,fingerprint:l||[],eventProcessors:g,propagationContext:u,sdkProcessingMetadata:d,transactionName:I,span:p}}applyToEvent(t,n={},r=[]){c.applyScopeDataToEvent(t,this.getScopeData());const o=[...r,...i.getGlobalEventProcessors(),...this._eventProcessors];return i.notifyEventProcessors(o,t,n)}setSDKProcessingMetadata(t){this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...t};return this}setPropagationContext(t){this._propagationContext=t;return this}getPropagationContext(){return this._propagationContext}captureException(t,n){const r=n&&n.event_id?n.event_id:o.uuid4();if(!this._client){o.logger.warn("No client configured on scope - will not capture exception!");return r}const i=new Error("Sentry syntheticException");this._client.captureException(t,{originalException:t,syntheticException:i,...n,event_id:r},this);return r}captureMessage(t,n,r){const i=r&&r.event_id?r.event_id:o.uuid4();if(!this._client){o.logger.warn("No client configured on scope - will not capture message!");return i}const a=new Error(t);this._client.captureMessage(t,n,{originalException:t,syntheticException:a,...r,event_id:i},this);return i}captureEvent(t,n){const r=n&&n.event_id?n.event_id:o.uuid4();if(!this._client){o.logger.warn("No client configured on scope - will not capture event!");return r}this._client.captureEvent(t,{...n,event_id:r},this);return r}_notifyScopeListeners(){if(!this._notifyingListeners){this._notifyingListeners=true;this._scopeListeners.forEach(t=>{t(this)});this._notifyingListeners=false}}}function getGlobalScope(){if(!g){g=new Scope}return g}function setGlobalScope(t){g=t}function generatePropagationContext(){return{traceId:o.uuid4(),spanId:o.uuid4().substring(16)}}n.Scope=Scope;n.getGlobalScope=getGlobalScope;n.setGlobalScope=setGlobalScope},1782:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(5913);const c=r(1693);function initAndBind(t,n){if(n.debug===true){if(i.DEBUG_BUILD){o.logger.enable()}else{o.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})}}const r=a.getCurrentScope();r.update(n.initialScope);const c=new t(n);setCurrentClient(c);initializeClient(c)}function setCurrentClient(t){const n=c.getCurrentHub();const r=n.getStackTop();r.client=t;r.scope.setClient(t)}function initializeClient(t){if(t.init){t.init()}else if(t.setupIntegrations){t.setupIntegrations()}}n.initAndBind=initAndBind;n.setCurrentClient=setCurrentClient},1985:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="sentry.source";const o="sentry.sample_rate";const i="sentry.op";const a="sentry.origin";const c="profile_id";n.SEMANTIC_ATTRIBUTE_PROFILE_ID=c;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=i;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=a;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=o;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=r},3928:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(6038);const a=r(3345);const c=r(1152);const l=r(5913);const g=r(71);const u=r(7865);const d=r(5542);const I=r(7961);const p=r(7992);r(8097);const m=r(1272);class ServerRuntimeClient extends i.BaseClient{constructor(t){d.addTracingExtensions();super(t);if(t._experiments&&t._experiments["metricsAggregator"]){this.metricsAggregator=new g.MetricsAggregator(this)}}eventFromException(t,n){return o.resolvedSyncPromise(o.eventFromUnknownInput(l.getClient(),this._options.stackParser,t,n))}eventFromMessage(t,n="info",r){return o.resolvedSyncPromise(o.eventFromMessage(this._options.stackParser,t,n,r,this._options.attachStacktrace))}captureException(t,n,r){if(this._options.autoSessionTracking&&this._sessionFlusher&&r){const t=r.getRequestSession();if(t&&t.status==="ok"){t.status="errored"}}return super.captureException(t,n,r)}captureEvent(t,n,r){if(this._options.autoSessionTracking&&this._sessionFlusher&&r){const n=t.type||"exception";const o=n==="exception"&&t.exception&&t.exception.values&&t.exception.values.length>0;if(o){const t=r.getRequestSession();if(t&&t.status==="ok"){t.status="errored"}}}return super.captureEvent(t,n,r)}close(t){if(this._sessionFlusher){this._sessionFlusher.close()}return super.close(t)}initSessionFlusher(){const{release:t,environment:n}=this._options;if(!t){c.DEBUG_BUILD&&o.logger.warn("Cannot initialise an instance of SessionFlusher if no release is provided!")}else{this._sessionFlusher=new u.SessionFlusher(this,{release:t,environment:n})}}captureCheckIn(t,n,r){const i="checkInId"in t&&t.checkInId?t.checkInId:o.uuid4();if(!this._isEnabled()){c.DEBUG_BUILD&&o.logger.warn("SDK not enabled, will not capture checkin.");return i}const l=this.getOptions();const{release:g,environment:u,tunnel:d}=l;const I={check_in_id:i,monitor_slug:t.monitorSlug,status:t.status,release:g,environment:u};if("duration"in t){I.duration=t.duration}if(n){I.monitor_config={schedule:n.schedule,checkin_margin:n.checkinMargin,max_runtime:n.maxRuntime,timezone:n.timezone}}const[p,m]=this._getTraceInfoFromScope(r);if(m){I.contexts={trace:m}}const C=a.createCheckInEnvelope(I,p,this.getSdkMetadata(),d,this.getDsn());c.DEBUG_BUILD&&o.logger.info("Sending checkin:",t.monitorSlug,t.status);this._sendEnvelope(C);return i}_captureRequestSession(){if(!this._sessionFlusher){c.DEBUG_BUILD&&o.logger.warn("Discarded request mode session because autoSessionTracking option was disabled")}else{this._sessionFlusher.incrementSessionStatusCount()}}_prepareEvent(t,n,r,o){if(this._options.platform){t.platform=t.platform||this._options.platform}if(this._options.runtime){t.contexts={...t.contexts,runtime:(t.contexts||{}).runtime||this._options.runtime}}if(this._options.serverName){t.server_name=t.server_name||this._options.serverName}return super._prepareEvent(t,n,r,o)}_getTraceInfoFromScope(t){if(!t){return[undefined,undefined]}const n=t.getSpan();if(n){const t=p.getRootSpan(n)?m.getDynamicSamplingContextFromSpan(n):undefined;return[t,I.spanToTraceContext(n)]}const{traceId:r,spanId:o,parentSpanId:i,dsc:a}=t.getPropagationContext();const c={trace_id:r,span_id:o,parent_span_id:i};if(a){return[a,c]}return[m.getDynamicSamplingContextFromClient(r,this,t),c]}}n.ServerRuntimeClient=ServerRuntimeClient},1742:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function makeSession(t){const n=o.timestampInSeconds();const r={sid:o.uuid4(),init:true,timestamp:n,started:n,duration:0,status:"ok",errors:0,ignoreDuration:false,toJSON:()=>sessionToJSON(r)};if(t){updateSession(r,t)}return r}function updateSession(t,n={}){if(n.user){if(!t.ipAddress&&n.user.ip_address){t.ipAddress=n.user.ip_address}if(!t.did&&!n.did){t.did=n.user.id||n.user.email||n.user.username}}t.timestamp=n.timestamp||o.timestampInSeconds();if(n.abnormal_mechanism){t.abnormal_mechanism=n.abnormal_mechanism}if(n.ignoreDuration){t.ignoreDuration=n.ignoreDuration}if(n.sid){t.sid=n.sid.length===32?n.sid:o.uuid4()}if(n.init!==undefined){t.init=n.init}if(!t.did&&n.did){t.did=`${n.did}`}if(typeof n.started==="number"){t.started=n.started}if(t.ignoreDuration){t.duration=undefined}else if(typeof n.duration==="number"){t.duration=n.duration}else{const n=t.timestamp-t.started;t.duration=n>=0?n:0}if(n.release){t.release=n.release}if(n.environment){t.environment=n.environment}if(!t.ipAddress&&n.ipAddress){t.ipAddress=n.ipAddress}if(!t.userAgent&&n.userAgent){t.userAgent=n.userAgent}if(typeof n.errors==="number"){t.errors=n.errors}if(n.status){t.status=n.status}}function closeSession(t,n){let r={};if(n){r={status:n}}else if(t.status==="ok"){r={status:"exited"}}updateSession(t,r)}function sessionToJSON(t){return o.dropUndefinedKeys({sid:`${t.sid}`,init:t.init,started:new Date(t.started*1e3).toISOString(),timestamp:new Date(t.timestamp*1e3).toISOString(),status:t.status,errors:t.errors,did:typeof t.did==="number"||typeof t.did==="string"?`${t.did}`:undefined,duration:t.duration,abnormal_mechanism:t.abnormal_mechanism,attrs:{release:t.release,environment:t.environment,ip_address:t.ipAddress,user_agent:t.userAgent}})}n.closeSession=closeSession;n.makeSession=makeSession;n.updateSession=updateSession},7865:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(5913);class SessionFlusher{constructor(t,n){this._client=t;this.flushTimeout=60;this._pendingAggregates={};this._isEnabled=true;this._intervalId=setInterval(()=>this.flush(),this.flushTimeout*1e3);if(this._intervalId.unref){this._intervalId.unref()}this._sessionAttrs=n}flush(){const t=this.getSessionAggregates();if(t.aggregates.length===0){return}this._pendingAggregates={};this._client.sendSession(t)}getSessionAggregates(){const t=Object.keys(this._pendingAggregates).map(t=>this._pendingAggregates[parseInt(t)]);const n={attrs:this._sessionAttrs,aggregates:t};return o.dropUndefinedKeys(n)}close(){clearInterval(this._intervalId);this._isEnabled=false;this.flush()}incrementSessionStatusCount(){if(!this._isEnabled){return}const t=i.getCurrentScope();const n=t.getRequestSession();if(n&&n.status){this._incrementSessionStatusCount(n.status,new Date);t.setRequestSession(undefined)}}_incrementSessionStatusCount(t,n){const r=new Date(n).setSeconds(0,0);this._pendingAggregates[r]=this._pendingAggregates[r]||{};const o=this._pendingAggregates[r];if(!o.started){o.started=new Date(r).toISOString()}switch(t){case"errored":o.errored=(o.errored||0)+1;return o.errored;case"ok":o.exited=(o.exited||0)+1;return o.exited;default:o.crashed=(o.crashed||0)+1;return o.crashed}}}n.SessionFlusher=SessionFlusher},3644:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function createSpanEnvelope(t,n){const r={sent_at:(new Date).toISOString()};if(n){r.dsn=o.dsnToString(n)}const i=t.map(createSpanItem);return o.createEnvelope(r,i)}function createSpanItem(t){const n={type:"span"};return[n,t]}n.createSpanEnvelope=createSpanEnvelope},1272:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(19);const a=r(5913);const c=r(7992);const l=r(7961);function getDynamicSamplingContextFromClient(t,n,r){const a=n.getOptions();const{publicKey:c}=n.getDsn()||{};const{segment:l}=r&&r.getUser()||{};const g=o.dropUndefinedKeys({environment:a.environment||i.DEFAULT_ENVIRONMENT,release:a.release,user_segment:l,public_key:c,trace_id:t});n.emit&&n.emit("createDsc",g);return g}function getDynamicSamplingContextFromSpan(t){const n=a.getClient();if(!n){return{}}const r=getDynamicSamplingContextFromClient(l.spanToJSON(t).trace_id||"",n,a.getCurrentScope());const o=c.getRootSpan(t);if(!o){return r}const i=o&&o._frozenDynamicSamplingContext;if(i){return i}const{sampleRate:g,source:u}=o.metadata;if(g!=null){r.sample_rate=`${g}`}const d=l.spanToJSON(o);if(u&&u!=="url"){r.transaction=d.description}r.sampled=String(l.spanIsSampled(o));n.emit&&n.emit("createDsc",r);return r}n.getDynamicSamplingContextFromClient=getDynamicSamplingContextFromClient;n.getDynamicSamplingContextFromSpan=getDynamicSamplingContextFromSpan},1624:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(7082);let c=false;function registerErrorInstrumentation(){if(c){return}c=true;o.addGlobalErrorInstrumentationHandler(errorCallback);o.addGlobalUnhandledRejectionInstrumentationHandler(errorCallback)}function errorCallback(){const t=a.getActiveTransaction();if(t){const n="internal_error";i.DEBUG_BUILD&&o.logger.log(`[Tracing] Transaction: ${n} -> Global error occured`);t.setStatus(n)}}errorCallback.tag="sentry_tracingErrorCallback";n.registerErrorInstrumentation=registerErrorInstrumentation},5542:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(1693);const c=r(7961);const l=r(1624);const g=r(8245);const u=r(2594);const d=r(6163);function traceHeaders(){const t=this.getScope();const n=t.getSpan();return n?{"sentry-trace":c.spanToTraceHeader(n)}:{}}function _startTransaction(t,n){const r=this.getClient();const a=r&&r.getOptions()||{};const c=a.instrumenter||"sentry";const l=t.instrumenter||"sentry";if(c!==l){i.DEBUG_BUILD&&o.logger.error(`A transaction was started with instrumenter=\`${l}\`, but the SDK is configured with the \`${c}\` instrumenter.\nThe transaction will not be sampled. Please use the ${c} instrumentation to start transactions.`);t.sampled=false}let g=new d.Transaction(t,this);g=u.sampleTransaction(g,a,{name:t.name,parentSampled:t.parentSampled,transactionContext:t,attributes:{...t.data,...t.attributes},...n});if(g.isRecording()){g.initSpanRecorder(a._experiments&&a._experiments.maxSpans)}if(r&&r.emit){r.emit("startTransaction",g)}return g}function startIdleTransaction(t,n,r,o,i,a,c,l=false){const d=t.getClient();const I=d&&d.getOptions()||{};let p=new g.IdleTransaction(n,t,r,o,c,i,l);p=u.sampleTransaction(p,I,{name:n.name,parentSampled:n.parentSampled,transactionContext:n,attributes:{...n.data,...n.attributes},...a});if(p.isRecording()){p.initSpanRecorder(I._experiments&&I._experiments.maxSpans)}if(d&&d.emit){d.emit("startTransaction",p)}return p}function addTracingExtensions(){const t=a.getMainCarrier();if(!t.__SENTRY__){return}t.__SENTRY__.extensions=t.__SENTRY__.extensions||{};if(!t.__SENTRY__.extensions.startTransaction){t.__SENTRY__.extensions.startTransaction=_startTransaction}if(!t.__SENTRY__.extensions.traceHeaders){t.__SENTRY__.extensions.traceHeaders=traceHeaders}l.registerErrorInstrumentation()}n.addTracingExtensions=addTracingExtensions;n.startIdleTransaction=startIdleTransaction},8245:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(7961);const c=r(9835);const l=r(6163);const g={idleTimeout:1e3,finalTimeout:3e4,heartbeatInterval:5e3};const u="finishReason";const d=["heartbeatFailed","idleTimeout","documentHidden","finalTimeout","externalFinish","cancelled"];class IdleTransactionSpanRecorder extends c.SpanRecorder{constructor(t,n,r,o){super(o);this._pushActivity=t;this._popActivity=n;this.transactionSpanId=r}add(t){if(t.spanContext().spanId!==this.transactionSpanId){const n=t.end;t.end=(...r)=>{this._popActivity(t.spanContext().spanId);return n.apply(t,r)};if(a.spanToJSON(t).timestamp===undefined){this._pushActivity(t.spanContext().spanId)}}super.add(t)}}class IdleTransaction extends l.Transaction{constructor(t,n,r=g.idleTimeout,a=g.finalTimeout,c=g.heartbeatInterval,l=false,u=false){super(t,n);this._idleHub=n;this._idleTimeout=r;this._finalTimeout=a;this._heartbeatInterval=c;this._onScope=l;this.activities={};this._heartbeatCounter=0;this._finished=false;this._idleTimeoutCanceledPermanently=false;this._beforeFinishCallbacks=[];this._finishReason=d[4];this._autoFinishAllowed=!u;if(l){i.DEBUG_BUILD&&o.logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);n.getScope().setSpan(this)}if(!u){this._restartIdleTimeout()}setTimeout(()=>{if(!this._finished){this.setStatus("deadline_exceeded");this._finishReason=d[3];this.end()}},this._finalTimeout)}end(t){const n=a.spanTimeInputToSeconds(t);this._finished=true;this.activities={};if(this.op==="ui.action.click"){this.setAttribute(u,this._finishReason)}if(this.spanRecorder){i.DEBUG_BUILD&&o.logger.log("[Tracing] finishing IdleTransaction",new Date(n*1e3).toISOString(),this.op);for(const t of this._beforeFinishCallbacks){t(this,n)}this.spanRecorder.spans=this.spanRecorder.spans.filter(t=>{if(t.spanContext().spanId===this.spanContext().spanId){return true}if(!a.spanToJSON(t).timestamp){t.setStatus("cancelled");t.end(n);i.DEBUG_BUILD&&o.logger.log("[Tracing] cancelling span since transaction ended early",JSON.stringify(t,undefined,2))}const{start_timestamp:r,timestamp:c}=a.spanToJSON(t);const l=r&&r<n;const g=(this._finalTimeout+this._idleTimeout)/1e3;const u=c&&r&&c-r<g;if(i.DEBUG_BUILD){const n=JSON.stringify(t,undefined,2);if(!l){o.logger.log("[Tracing] discarding Span since it happened after Transaction was finished",n)}else if(!u){o.logger.log("[Tracing] discarding Span since it finished after Transaction final timeout",n)}}return l&&u});i.DEBUG_BUILD&&o.logger.log("[Tracing] flushing IdleTransaction")}else{i.DEBUG_BUILD&&o.logger.log("[Tracing] No active IdleTransaction")}if(this._onScope){const t=this._idleHub.getScope();if(t.getTransaction()===this){t.setSpan(undefined)}}return super.end(t)}registerBeforeFinishCallback(t){this._beforeFinishCallbacks.push(t)}initSpanRecorder(t){if(!this.spanRecorder){const pushActivity=t=>{if(this._finished){return}this._pushActivity(t)};const popActivity=t=>{if(this._finished){return}this._popActivity(t)};this.spanRecorder=new IdleTransactionSpanRecorder(pushActivity,popActivity,this.spanContext().spanId,t);i.DEBUG_BUILD&&o.logger.log("Starting heartbeat");this._pingHeartbeat()}this.spanRecorder.add(this)}cancelIdleTimeout(t,{restartOnChildSpanChange:n}={restartOnChildSpanChange:true}){this._idleTimeoutCanceledPermanently=n===false;if(this._idleTimeoutID){clearTimeout(this._idleTimeoutID);this._idleTimeoutID=undefined;if(Object.keys(this.activities).length===0&&this._idleTimeoutCanceledPermanently){this._finishReason=d[5];this.end(t)}}}setFinishReason(t){this._finishReason=t}sendAutoFinishSignal(){if(!this._autoFinishAllowed){i.DEBUG_BUILD&&o.logger.log("[Tracing] Received finish signal for idle transaction.");this._restartIdleTimeout();this._autoFinishAllowed=true}}_restartIdleTimeout(t){this.cancelIdleTimeout();this._idleTimeoutID=setTimeout(()=>{if(!this._finished&&Object.keys(this.activities).length===0){this._finishReason=d[1];this.end(t)}},this._idleTimeout)}_pushActivity(t){this.cancelIdleTimeout(undefined,{restartOnChildSpanChange:!this._idleTimeoutCanceledPermanently});i.DEBUG_BUILD&&o.logger.log(`[Tracing] pushActivity: ${t}`);this.activities[t]=true;i.DEBUG_BUILD&&o.logger.log("[Tracing] new activities count",Object.keys(this.activities).length)}_popActivity(t){if(this.activities[t]){i.DEBUG_BUILD&&o.logger.log(`[Tracing] popActivity ${t}`);delete this.activities[t];i.DEBUG_BUILD&&o.logger.log("[Tracing] new activities count",Object.keys(this.activities).length)}if(Object.keys(this.activities).length===0){const t=o.timestampInSeconds();if(this._idleTimeoutCanceledPermanently){if(this._autoFinishAllowed){this._finishReason=d[5];this.end(t)}}else{this._restartIdleTimeout(t+this._idleTimeout/1e3)}}}_beat(){if(this._finished){return}const t=Object.keys(this.activities).join("");if(t===this._prevHeartbeatString){this._heartbeatCounter++}else{this._heartbeatCounter=1}this._prevHeartbeatString=t;if(this._heartbeatCounter>=3){if(this._autoFinishAllowed){i.DEBUG_BUILD&&o.logger.log("[Tracing] Transaction finished because of no change for 3 heart beats");this.setStatus("deadline_exceeded");this._finishReason=d[0];this.end()}}else{this._pingHeartbeat()}}_pingHeartbeat(){i.DEBUG_BUILD&&o.logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);setTimeout(()=>{this._beat()},this._heartbeatInterval)}}n.IdleTransaction=IdleTransaction;n.IdleTransactionSpanRecorder=IdleTransactionSpanRecorder;n.TRACING_DEFAULTS=g},5111:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(7082);function setMeasurement(t,n,r){const i=o.getActiveTransaction();if(i){i.setMeasurement(t,n,r)}}n.setMeasurement=setMeasurement},2594:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(1985);const c=r(5987);const l=r(7961);function sampleTransaction(t,n,r){if(!c.hasTracingEnabled(n)){t.sampled=false;return t}if(t.sampled!==undefined){t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(t.sampled));return t}let g;if(typeof n.tracesSampler==="function"){g=n.tracesSampler(r);t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(g))}else if(r.parentSampled!==undefined){g=r.parentSampled}else if(typeof n.tracesSampleRate!=="undefined"){g=n.tracesSampleRate;t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(g))}else{g=1;t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,g)}if(!isValidSampleRate(g)){i.DEBUG_BUILD&&o.logger.warn("[Tracing] Discarding transaction because of invalid sample rate.");t.sampled=false;return t}if(!g){i.DEBUG_BUILD&&o.logger.log(`[Tracing] Discarding transaction because ${typeof n.tracesSampler==="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`);t.sampled=false;return t}t.sampled=Math.random()<g;if(!t.sampled){i.DEBUG_BUILD&&o.logger.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(g)})`);return t}i.DEBUG_BUILD&&o.logger.log(`[Tracing] starting ${t.op} transaction - ${l.spanToJSON(t).description}`);return t}function isValidSampleRate(t){if(o.isNaN(t)||!(typeof t==="number"||typeof t==="boolean")){i.DEBUG_BUILD&&o.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(t)} of type ${JSON.stringify(typeof t)}.`);return false}if(t<0||t>1){i.DEBUG_BUILD&&o.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${t}.`);return false}return true}n.isValidSampleRate=isValidSampleRate;n.sampleTransaction=sampleTransaction},9835:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(3959);const c=r(1985);const l=r(7992);const g=r(7961);const u=r(8097);class SpanRecorder{constructor(t=1e3){this._maxlen=t;this.spans=[]}add(t){if(this.spans.length>this._maxlen){t.spanRecorder=undefined}else{this.spans.push(t)}}}class Span{constructor(t={}){this._traceId=t.traceId||o.uuid4();this._spanId=t.spanId||o.uuid4().substring(16);this._startTime=t.startTimestamp||o.timestampInSeconds();this.tags=t.tags?{...t.tags}:{};this.data=t.data?{...t.data}:{};this.instrumenter=t.instrumenter||"sentry";this._attributes={};this.setAttributes({[c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:t.origin||"manual",[c.SEMANTIC_ATTRIBUTE_SENTRY_OP]:t.op,...t.attributes});this._name=t.name||t.description;if(t.parentSpanId){this._parentSpanId=t.parentSpanId}if("sampled"in t){this._sampled=t.sampled}if(t.status){this._status=t.status}if(t.endTimestamp){this._endTime=t.endTimestamp}if(t.exclusiveTime!==undefined){this._exclusiveTime=t.exclusiveTime}this._measurements=t.measurements?{...t.measurements}:{}}get name(){return this._name||""}set name(t){this.updateName(t)}get description(){return this._name}set description(t){this._name=t}get traceId(){return this._traceId}set traceId(t){this._traceId=t}get spanId(){return this._spanId}set spanId(t){this._spanId=t}set parentSpanId(t){this._parentSpanId=t}get parentSpanId(){return this._parentSpanId}get sampled(){return this._sampled}set sampled(t){this._sampled=t}get attributes(){return this._attributes}set attributes(t){this._attributes=t}get startTimestamp(){return this._startTime}set startTimestamp(t){this._startTime=t}get endTimestamp(){return this._endTime}set endTimestamp(t){this._endTime=t}get status(){return this._status}set status(t){this._status=t}get op(){return this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_OP]}set op(t){this.setAttribute(c.SEMANTIC_ATTRIBUTE_SENTRY_OP,t)}get origin(){return this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]}set origin(t){this.setAttribute(c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,t)}spanContext(){const{_spanId:t,_traceId:n,_sampled:r}=this;return{spanId:t,traceId:n,traceFlags:r?g.TRACE_FLAG_SAMPLED:g.TRACE_FLAG_NONE}}startChild(t){const n=new Span({...t,parentSpanId:this._spanId,sampled:this._sampled,traceId:this._traceId});n.spanRecorder=this.spanRecorder;if(n.spanRecorder){n.spanRecorder.add(n)}const r=l.getRootSpan(this);n.transaction=r;if(i.DEBUG_BUILD&&r){const i=t&&t.op||"< unknown op >";const a=g.spanToJSON(n).description||"< unknown name >";const c=r.spanContext().spanId;const l=`[Tracing] Starting '${i}' span on transaction '${a}' (${c}).`;o.logger.log(l);this._logMessage=l}return n}setTag(t,n){this.tags={...this.tags,[t]:n};return this}setData(t,n){this.data={...this.data,[t]:n};return this}setAttribute(t,n){if(n===undefined){delete this._attributes[t]}else{this._attributes[t]=n}}setAttributes(t){Object.keys(t).forEach(n=>this.setAttribute(n,t[n]))}setStatus(t){this._status=t;return this}setHttpStatus(t){u.setHttpStatus(this,t);return this}setName(t){this.updateName(t)}updateName(t){this._name=t;return this}isSuccess(){return this._status==="ok"}finish(t){return this.end(t)}end(t){if(this._endTime){return}const n=l.getRootSpan(this);if(i.DEBUG_BUILD&&n&&n.spanContext().spanId!==this._spanId){const t=this._logMessage;if(t){o.logger.log(t.replace("Starting","Finishing"))}}this._endTime=g.spanTimeInputToSeconds(t)}toTraceparent(){return g.spanToTraceHeader(this)}toContext(){return o.dropUndefinedKeys({data:this._getData(),description:this._name,endTimestamp:this._endTime,op:this.op,parentSpanId:this._parentSpanId,sampled:this._sampled,spanId:this._spanId,startTimestamp:this._startTime,status:this._status,tags:this.tags,traceId:this._traceId})}updateWithContext(t){this.data=t.data||{};this._name=t.name||t.description;this._endTime=t.endTimestamp;this.op=t.op;this._parentSpanId=t.parentSpanId;this._sampled=t.sampled;this._spanId=t.spanId||this._spanId;this._startTime=t.startTimestamp||this._startTime;this._status=t.status;this.tags=t.tags||{};this._traceId=t.traceId||this._traceId;return this}getTraceContext(){return g.spanToTraceContext(this)}getSpanJSON(){return o.dropUndefinedKeys({data:this._getData(),description:this._name,op:this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_OP],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:this._status,tags:Object.keys(this.tags).length>0?this.tags:undefined,timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN],_metrics_summary:a.getMetricSummaryJsonForSpan(this),profile_id:this._attributes[c.SEMANTIC_ATTRIBUTE_PROFILE_ID],exclusive_time:this._exclusiveTime,measurements:Object.keys(this._measurements).length>0?this._measurements:undefined})}isRecording(){return!this._endTime&&!!this._sampled}toJSON(){return this.getSpanJSON()}_getData(){const{data:t,_attributes:n}=this;const r=Object.keys(t).length>0;const o=Object.keys(n).length>0;if(!r&&!o){return undefined}if(r&&o){return{...t,...n}}return r?t:n}}n.Span=Span;n.SpanRecorder=SpanRecorder},8097:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});n.SpanStatus=void 0;(function(t){const n="ok";t["Ok"]=n;const r="deadline_exceeded";t["DeadlineExceeded"]=r;const o="unauthenticated";t["Unauthenticated"]=o;const i="permission_denied";t["PermissionDenied"]=i;const a="not_found";t["NotFound"]=a;const c="resource_exhausted";t["ResourceExhausted"]=c;const l="invalid_argument";t["InvalidArgument"]=l;const g="unimplemented";t["Unimplemented"]=g;const u="unavailable";t["Unavailable"]=u;const d="internal_error";t["InternalError"]=d;const I="unknown_error";t["UnknownError"]=I;const p="cancelled";t["Cancelled"]=p;const m="already_exists";t["AlreadyExists"]=m;const C="failed_precondition";t["FailedPrecondition"]=C;const b="aborted";t["Aborted"]=b;const h="out_of_range";t["OutOfRange"]=h;const f="data_loss";t["DataLoss"]=f})(n.SpanStatus||(n.SpanStatus={}));function getSpanStatusFromHttpCode(t){if(t<400&&t>=100){return"ok"}if(t>=400&&t<500){switch(t){case 401:return"unauthenticated";case 403:return"permission_denied";case 404:return"not_found";case 409:return"already_exists";case 413:return"failed_precondition";case 429:return"resource_exhausted";default:return"invalid_argument"}}if(t>=500&&t<600){switch(t){case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline_exceeded";default:return"internal_error"}}return"unknown_error"}const r=getSpanStatusFromHttpCode;function setHttpStatus(t,n){t.setTag("http.status_code",String(n));t.setData("http.response.status_code",n);const r=getSpanStatusFromHttpCode(n);if(r!=="unknown_error"){t.setStatus(r)}}n.getSpanStatusFromHttpCode=getSpanStatusFromHttpCode;n.setHttpStatus=setHttpStatus;n.spanStatusfromHttpCode=r},3710:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(1693);const c=r(7961);r(1624);r(8097);const l=r(1272);const g=r(5913);const u=r(1996);const d=r(5987);function trace(t,n,r=()=>{},o=()=>{}){const i=a.getCurrentHub();const c=g.getCurrentScope();const l=c.getSpan();const d=normalizeContext(t);const I=createChildSpanOrTransaction(i,{parentSpan:l,spanContext:d,forceTransaction:false,scope:c});c.setSpan(I);return u.handleCallbackErrors(()=>n(I),t=>{I&&I.setStatus("internal_error");r(t,I)},()=>{I&&I.end();c.setSpan(l);o()})}function startSpan(t,n){const r=normalizeContext(t);return a.runWithAsyncContext(()=>g.withScope(t.scope,o=>{const i=a.getCurrentHub();const l=o.getSpan();const g=t.onlyIfParent&&!l;const d=g?undefined:createChildSpanOrTransaction(i,{parentSpan:l,spanContext:r,forceTransaction:t.forceTransaction,scope:o});return u.handleCallbackErrors(()=>n(d),()=>{if(d){const{status:t}=c.spanToJSON(d);if(!t||t==="ok"){d.setStatus("internal_error")}}},()=>d&&d.end())}))}const I=startSpan;function startSpanManual(t,n){const r=normalizeContext(t);return a.runWithAsyncContext(()=>g.withScope(t.scope,o=>{const i=a.getCurrentHub();const l=o.getSpan();const g=t.onlyIfParent&&!l;const d=g?undefined:createChildSpanOrTransaction(i,{parentSpan:l,spanContext:r,forceTransaction:t.forceTransaction,scope:o});function finishAndSetSpan(){d&&d.end()}return u.handleCallbackErrors(()=>n(d,finishAndSetSpan),()=>{if(d&&d.isRecording()){const{status:t}=c.spanToJSON(d);if(!t||t==="ok"){d.setStatus("internal_error")}}})}))}function startInactiveSpan(t){if(!d.hasTracingEnabled()){return undefined}const n=normalizeContext(t);const r=a.getCurrentHub();const o=t.scope?t.scope.getSpan():getActiveSpan();const i=t.onlyIfParent&&!o;if(i){return undefined}const c=t.scope||g.getCurrentScope();const l=c.clone();return createChildSpanOrTransaction(r,{parentSpan:o,spanContext:n,forceTransaction:t.forceTransaction,scope:l})}function getActiveSpan(){return g.getCurrentScope().getSpan()}const continueTrace=({sentryTrace:t,baggage:n},r)=>{const c=g.getCurrentScope();const{traceparentData:l,dynamicSamplingContext:u,propagationContext:d}=o.tracingContextFromHeaders(t,n);c.setPropagationContext(d);if(i.DEBUG_BUILD&&l){o.logger.log(`[Tracing] Continuing trace ${l.traceId}.`)}const I={...l,metadata:o.dropUndefinedKeys({dynamicSamplingContext:u})};if(!r){return I}return a.runWithAsyncContext(()=>r(I))};function createChildSpanOrTransaction(t,{parentSpan:n,spanContext:r,forceTransaction:o,scope:i}){if(!d.hasTracingEnabled()){return undefined}const g=a.getIsolationScope();let u;if(n&&!o){u=n.startChild(r)}else if(n){const o=l.getDynamicSamplingContextFromSpan(n);const{traceId:i,spanId:a}=n.spanContext();const g=c.spanIsSampled(n);u=t.startTransaction({traceId:i,parentSpanId:a,parentSampled:g,...r,metadata:{dynamicSamplingContext:o,...r.metadata}})}else{const{traceId:n,dsc:o,parentSpanId:a,sampled:c}={...g.getPropagationContext(),...i.getPropagationContext()};u=t.startTransaction({traceId:n,parentSpanId:a,parentSampled:c,...r,metadata:{dynamicSamplingContext:o,...r.metadata}})}i.setSpan(u);setCapturedScopesOnSpan(u,i,g);return u}function normalizeContext(t){if(t.startTime){const n={...t};n.startTimestamp=c.spanTimeInputToSeconds(t.startTime);delete n.startTime;return n}return t}const p="_sentryScope";const m="_sentryIsolationScope";function setCapturedScopesOnSpan(t,n,r){if(t){o.addNonEnumerableProperty(t,m,r);o.addNonEnumerableProperty(t,p,n)}}function getCapturedScopesOnSpan(t){return{scope:t[p],isolationScope:t[m]}}n.continueTrace=continueTrace;n.getActiveSpan=getActiveSpan;n.getCapturedScopesOnSpan=getCapturedScopesOnSpan;n.startActiveSpan=I;n.startInactiveSpan=startInactiveSpan;n.startSpan=startSpan;n.startSpanManual=startSpanManual;n.trace=trace},6163:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=r(1693);const c=r(3959);const l=r(1985);const g=r(7961);const u=r(1272);const d=r(9835);const I=r(3710);class Transaction extends d.Span{constructor(t,n){super(t);this._contexts={};this._hub=n||a.getCurrentHub();this._name=t.name||"";this._metadata={...t.metadata};this._trimEnd=t.trimEnd;this.transaction=this;const r=this._metadata.dynamicSamplingContext;if(r){this._frozenDynamicSamplingContext={...r}}}get name(){return this._name}set name(t){this.setName(t)}get metadata(){return{source:"custom",spanMetadata:{},...this._metadata,...this._attributes[l.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]&&{source:this._attributes[l.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]},...this._attributes[l.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]&&{sampleRate:this._attributes[l.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]}}}set metadata(t){this._metadata=t}setName(t,n="custom"){this._name=t;this.setAttribute(l.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n)}updateName(t){this._name=t;return this}initSpanRecorder(t=1e3){if(!this.spanRecorder){this.spanRecorder=new d.SpanRecorder(t)}this.spanRecorder.add(this)}setContext(t,n){if(n===null){delete this._contexts[t]}else{this._contexts[t]=n}}setMeasurement(t,n,r=""){this._measurements[t]={value:n,unit:r}}setMetadata(t){this._metadata={...this._metadata,...t}}end(t){const n=g.spanTimeInputToSeconds(t);const r=this._finishTransaction(n);if(!r){return undefined}return this._hub.captureEvent(r)}toContext(){const t=super.toContext();return o.dropUndefinedKeys({...t,name:this._name,trimEnd:this._trimEnd})}updateWithContext(t){super.updateWithContext(t);this._name=t.name||"";this._trimEnd=t.trimEnd;return this}getDynamicSamplingContext(){return u.getDynamicSamplingContextFromSpan(this)}setHub(t){this._hub=t}getProfileId(){if(this._contexts!==undefined&&this._contexts["profile"]!==undefined){return this._contexts["profile"].profile_id}return undefined}_finishTransaction(t){if(this._endTime!==undefined){return undefined}if(!this._name){i.DEBUG_BUILD&&o.logger.warn("Transaction has no name, falling back to `<unlabeled transaction>`.");this._name="<unlabeled transaction>"}super.end(t);const n=this._hub.getClient();if(n&&n.emit){n.emit("finishTransaction",this)}if(this._sampled!==true){i.DEBUG_BUILD&&o.logger.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled.");if(n){n.recordDroppedEvent("sample_rate","transaction")}return undefined}const r=this.spanRecorder?this.spanRecorder.spans.filter(t=>t!==this&&g.spanToJSON(t).timestamp):[];if(this._trimEnd&&r.length>0){const t=r.map(t=>g.spanToJSON(t).timestamp).filter(Boolean);this._endTime=t.reduce((t,n)=>t>n?t:n)}const{scope:a,isolationScope:l}=I.getCapturedScopesOnSpan(this);const{metadata:d}=this;const{source:p}=d;const m={contexts:{...this._contexts,trace:g.spanToTraceContext(this)},spans:r,start_timestamp:this._startTime,tags:this.tags,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{...d,capturedSpanScope:a,capturedSpanIsolationScope:l,...o.dropUndefinedKeys({dynamicSamplingContext:u.getDynamicSamplingContextFromSpan(this)})},_metrics_summary:c.getMetricSummaryJsonForSpan(this),...p&&{transaction_info:{source:p}}};const C=Object.keys(this._measurements).length>0;if(C){i.DEBUG_BUILD&&o.logger.log("[Measurements] Adding measurements to transaction",JSON.stringify(this._measurements,undefined,2));m.measurements=this._measurements}i.DEBUG_BUILD&&o.logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);return m}}n.Transaction=Transaction},7082:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1693);function getActiveTransaction(t){const n=t||i.getCurrentHub();const r=n.getScope();return r.getTransaction()}const a=o.extractTraceparentData;n.stripUrlQueryAndFragment=o.stripUrlQueryAndFragment;n.extractTraceparentData=a;n.getActiveTransaction=getActiveTransaction},2412:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=30;function createTransport(t,n,r=o.makePromiseBuffer(t.bufferSize||a)){let c={};const flush=t=>r.drain(t);function send(a){const l=[];o.forEachEnvelopeItem(a,(n,r)=>{const i=o.envelopeItemTypeToDataCategory(r);if(o.isRateLimited(c,i)){const o=getEventForEnvelopeItem(n,r);t.recordDroppedEvent("ratelimit_backoff",i,o)}else{l.push(n)}});if(l.length===0){return o.resolvedSyncPromise()}const g=o.createEnvelope(a[0],l);const recordEnvelopeLoss=n=>{o.forEachEnvelopeItem(g,(r,i)=>{const a=getEventForEnvelopeItem(r,i);t.recordDroppedEvent(n,o.envelopeItemTypeToDataCategory(i),a)})};const requestTask=()=>n({body:o.serializeEnvelope(g,t.textEncoder)}).then(t=>{if(t.statusCode!==undefined&&(t.statusCode<200||t.statusCode>=300)){i.DEBUG_BUILD&&o.logger.warn(`Sentry responded with status code ${t.statusCode} to sent event.`)}c=o.updateRateLimits(c,t);return t},t=>{recordEnvelopeLoss("network_error");throw t});return r.add(requestTask).then(t=>t,t=>{if(t instanceof o.SentryError){i.DEBUG_BUILD&&o.logger.error("Skipped sending event because buffer is full.");recordEnvelopeLoss("queue_overflow");return o.resolvedSyncPromise()}else{throw t}})}send.__sentry__baseTransport__=true;return{send:send,flush:flush}}function getEventForEnvelopeItem(t,n){if(n!=="event"&&n!=="transaction"){return undefined}return Array.isArray(t)?t[1]:undefined}n.DEFAULT_TRANSPORT_BUFFER_SIZE=a;n.createTransport=createTransport},8104:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(7474);function eventFromEnvelope(t,n){let r;o.forEachEnvelopeItem(t,(t,o)=>{if(n.includes(o)){r=Array.isArray(t)?t[1]:undefined}return!!r});return r}function makeOverrideReleaseTransport(t,n){return r=>{const o=t(r);return{...o,send:async t=>{const r=eventFromEnvelope(t,["event","transaction","profile","replay_event"]);if(r){r.release=n}return o.send(t)}}}}function overrideDsn(t,n){return o.createEnvelope(n?{...t[0],dsn:n}:t[0],t[1])}function makeMultiplexedTransport(t,n){return r=>{const a=t(r);const c=new Map;function getTransport(n,a){const l=a?`${n}:${a}`:n;let g=c.get(l);if(!g){const u=o.dsnFromString(n);if(!u){return undefined}const d=i.getEnvelopeEndpointWithUrlEncodedAuth(u,r.tunnel);g=a?makeOverrideReleaseTransport(t,a)({...r,url:d}):t({...r,url:d});c.set(l,g)}return[n,g]}async function send(t){function getEvent(n){const r=n&&n.length?n:["event"];return eventFromEnvelope(t,r)}const r=n({envelope:t,getEvent:getEvent}).map(t=>{if(typeof t==="string"){return getTransport(t,undefined)}else{return getTransport(t.dsn,t.release)}}).filter(t=>!!t);if(r.length===0){r.push(["",a])}const o=await Promise.all(r.map(([n,r])=>r.send(overrideDsn(t,n))));return o[0]}async function flush(t){const n=[await a.flush(t)];for(const[,r]of c){n.push(await r.flush(t))}return n.every(t=>t)}return{send:send,flush:flush}}}n.eventFromEnvelope=eventFromEnvelope;n.makeMultiplexedTransport=makeMultiplexedTransport},7294:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1152);const a=100;const c=5e3;const l=36e5;function log(t,n){i.DEBUG_BUILD&&o.logger.info(`[Offline]: ${t}`,n)}function makeOfflineTransport(t){return n=>{const r=t(n);const i=n.createStore?n.createStore(n):undefined;let g=c;let u;function shouldQueue(t,r,i){if(o.envelopeContainsItemType(t,["replay_event","replay_recording","client_report"])){return false}if(n.shouldStore){return n.shouldStore(t,r,i)}return true}function flushIn(t){if(!i){return}if(u){clearTimeout(u)}u=setTimeout(async()=>{u=undefined;const t=await i.pop();if(t){log("Attempting to send previously queued event");void send(t).catch(t=>{log("Failed to retry sending",t)})}},t);if(typeof u!=="number"&&u.unref){u.unref()}}function flushWithBackOff(){if(u){return}flushIn(g);g=Math.min(g*2,l)}async function send(t){try{const n=await r.send(t);let i=a;if(n){if(n.headers&&n.headers["retry-after"]){i=o.parseRetryAfterHeader(n.headers["retry-after"])}else if((n.statusCode||0)>=400){return n}}flushIn(i);g=c;return n}catch(n){if(i&&await shouldQueue(t,n,g)){await i.insert(t);flushWithBackOff();log("Error sending. Event queued",n);return{}}else{throw n}}}if(n.flushAtStartup){flushWithBackOff()}return{send:send,flush:t=>r.flush(t)}}}n.MIN_DELAY=a;n.START_DELAY=c;n.makeOfflineTransport=makeOfflineTransport},6659:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(1272);const a=r(7992);const c=r(7961);function applyScopeDataToEvent(t,n){const{fingerprint:r,span:o,breadcrumbs:i,sdkProcessingMetadata:a}=n;applyDataToEvent(t,n);if(o){applySpanToEvent(t,o)}applyFingerprintToEvent(t,r);applyBreadcrumbsToEvent(t,i);applySdkMetadataToEvent(t,a)}function mergeScopeData(t,n){const{extra:r,tags:o,user:i,contexts:a,level:c,sdkProcessingMetadata:l,breadcrumbs:g,fingerprint:u,eventProcessors:d,attachments:I,propagationContext:p,transactionName:m,span:C}=n;mergeAndOverwriteScopeData(t,"extra",r);mergeAndOverwriteScopeData(t,"tags",o);mergeAndOverwriteScopeData(t,"user",i);mergeAndOverwriteScopeData(t,"contexts",a);mergeAndOverwriteScopeData(t,"sdkProcessingMetadata",l);if(c){t.level=c}if(m){t.transactionName=m}if(C){t.span=C}if(g.length){t.breadcrumbs=[...t.breadcrumbs,...g]}if(u.length){t.fingerprint=[...t.fingerprint,...u]}if(d.length){t.eventProcessors=[...t.eventProcessors,...d]}if(I.length){t.attachments=[...t.attachments,...I]}t.propagationContext={...t.propagationContext,...p}}function mergeAndOverwriteScopeData(t,n,r){if(r&&Object.keys(r).length){t[n]={...t[n]};for(const o in r){if(Object.prototype.hasOwnProperty.call(r,o)){t[n][o]=r[o]}}}}function applyDataToEvent(t,n){const{extra:r,tags:i,user:a,contexts:c,level:l,transactionName:g}=n;const u=o.dropUndefinedKeys(r);if(u&&Object.keys(u).length){t.extra={...u,...t.extra}}const d=o.dropUndefinedKeys(i);if(d&&Object.keys(d).length){t.tags={...d,...t.tags}}const I=o.dropUndefinedKeys(a);if(I&&Object.keys(I).length){t.user={...I,...t.user}}const p=o.dropUndefinedKeys(c);if(p&&Object.keys(p).length){t.contexts={...p,...t.contexts}}if(l){t.level=l}if(g){t.transaction=g}}function applyBreadcrumbsToEvent(t,n){const r=[...t.breadcrumbs||[],...n];t.breadcrumbs=r.length?r:undefined}function applySdkMetadataToEvent(t,n){t.sdkProcessingMetadata={...t.sdkProcessingMetadata,...n}}function applySpanToEvent(t,n){t.contexts={trace:c.spanToTraceContext(n),...t.contexts};const r=a.getRootSpan(n);if(r){t.sdkProcessingMetadata={dynamicSamplingContext:i.getDynamicSamplingContextFromSpan(n),...t.sdkProcessingMetadata};const o=c.spanToJSON(r).description;if(o){t.tags={transaction:o,...t.tags}}}}function applyFingerprintToEvent(t,n){t.fingerprint=t.fingerprint?o.arrayify(t.fingerprint):[];if(n){t.fingerprint=t.fingerprint.concat(n)}if(t.fingerprint&&!t.fingerprint.length){delete t.fingerprint}}n.applyScopeDataToEvent=applyScopeDataToEvent;n.mergeAndOverwriteScopeData=mergeAndOverwriteScopeData;n.mergeScopeData=mergeScopeData},7992:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function getRootSpan(t){return t.transaction}n.getRootSpan=getRootSpan},1996:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function handleCallbackErrors(t,n,r=()=>{}){let o;try{o=t()}catch(t){n(t);r();throw t}return maybeHandlePromiseRejection(o,n,r)}function maybeHandlePromiseRejection(t,n,r){if(o.isThenable(t)){return t.then(t=>{r();return t},t=>{n(t);r();throw t})}r();return t}n.handleCallbackErrors=handleCallbackErrors},5987:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5913);function hasTracingEnabled(t){if(typeof __SENTRY_TRACING__==="boolean"&&!__SENTRY_TRACING__){return false}const n=o.getClient();const r=t||n&&n.getOptions();return!!r&&(r.enableTracing||"tracesSampleRate"in r||"tracesSampler"in r)}n.hasTracingEnabled=hasTracingEnabled},859:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isSentryRequestUrl(t,n){const r=n&&isHub(n)?n.getClient():n;const o=r&&r.getDsn();const i=r&&r.getOptions().tunnel;return checkDsn(t,o)||checkTunnel(t,i)}function checkTunnel(t,n){if(!n){return false}return removeTrailingSlash(t)===removeTrailingSlash(n)}function checkDsn(t,n){return n?t.includes(n.host):false}function removeTrailingSlash(t){return t[t.length-1]==="/"?t.slice(0,-1):t}function isHub(t){return t.getClient!==undefined}n.isSentryRequestUrl=isSentryRequestUrl},1345:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parameterize(t,...n){const r=new String(String.raw(t,...n));r.__sentry_template_string__=t.join("\0").replace(/%/g,"%%").replace(/\0/g,"%s");r.__sentry_template_values__=n;return r}n.parameterize=parameterize},1735:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(19);const a=r(8407);const c=r(9450);const l=r(6659);const g=r(7961);function prepareEvent(t,n,r,i,g,u){const{normalizeDepth:d=3,normalizeMaxBreadth:I=1e3}=t;const p={...n,event_id:n.event_id||r.event_id||o.uuid4(),timestamp:n.timestamp||o.dateTimestampInSeconds()};const m=r.integrations||t.integrations.map(t=>t.name);applyClientOptions(p,t);applyIntegrationsMetadata(p,m);if(n.type===undefined){applyDebugIds(p,t.stackParser)}const C=getFinalScope(i,r.captureContext);if(r.mechanism){o.addExceptionMechanism(p,r.mechanism)}const b=g&&g.getEventProcessors?g.getEventProcessors():[];const h=c.getGlobalScope().getScopeData();if(u){const t=u.getScopeData();l.mergeScopeData(h,t)}if(C){const t=C.getScopeData();l.mergeScopeData(h,t)}const f=[...r.attachments||[],...h.attachments];if(f.length){r.attachments=f}l.applyScopeDataToEvent(p,h);const y=[...b,...a.getGlobalEventProcessors(),...h.eventProcessors];const G=a.notifyEventProcessors(y,p,r);return G.then(t=>{if(t){applyDebugMeta(t)}if(typeof d==="number"&&d>0){return normalizeEvent(t,d,I)}return t})}function applyClientOptions(t,n){const{environment:r,release:a,dist:c,maxValueLength:l=250}=n;if(!("environment"in t)){t.environment="environment"in n?r:i.DEFAULT_ENVIRONMENT}if(t.release===undefined&&a!==undefined){t.release=a}if(t.dist===undefined&&c!==undefined){t.dist=c}if(t.message){t.message=o.truncate(t.message,l)}const g=t.exception&&t.exception.values&&t.exception.values[0];if(g&&g.value){g.value=o.truncate(g.value,l)}const u=t.request;if(u&&u.url){u.url=o.truncate(u.url,l)}}const u=new WeakMap;function applyDebugIds(t,n){const r=o.GLOBAL_OBJ._sentryDebugIds;if(!r){return}let i;const a=u.get(n);if(a){i=a}else{i=new Map;u.set(n,i)}const c=Object.keys(r).reduce((t,o)=>{let a;const c=i.get(o);if(c){a=c}else{a=n(o);i.set(o,a)}for(let n=a.length-1;n>=0;n--){const i=a[n];if(i.filename){t[i.filename]=r[o];break}}return t},{});try{t.exception.values.forEach(t=>{t.stacktrace.frames.forEach(t=>{if(t.filename){t.debug_id=c[t.filename]}})})}catch(t){}}function applyDebugMeta(t){const n={};try{t.exception.values.forEach(t=>{t.stacktrace.frames.forEach(t=>{if(t.debug_id){if(t.abs_path){n[t.abs_path]=t.debug_id}else if(t.filename){n[t.filename]=t.debug_id}delete t.debug_id}})})}catch(t){}if(Object.keys(n).length===0){return}t.debug_meta=t.debug_meta||{};t.debug_meta.images=t.debug_meta.images||[];const r=t.debug_meta.images;Object.keys(n).forEach(t=>{r.push({type:"sourcemap",code_file:t,debug_id:n[t]})})}function applyIntegrationsMetadata(t,n){if(n.length>0){t.sdk=t.sdk||{};t.sdk.integrations=[...t.sdk.integrations||[],...n]}}function normalizeEvent(t,n,r){if(!t){return null}const i={...t,...t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map(t=>({...t,...t.data&&{data:o.normalize(t.data,n,r)}}))},...t.user&&{user:o.normalize(t.user,n,r)},...t.contexts&&{contexts:o.normalize(t.contexts,n,r)},...t.extra&&{extra:o.normalize(t.extra,n,r)}};if(t.contexts&&t.contexts.trace&&i.contexts){i.contexts.trace=t.contexts.trace;if(t.contexts.trace.data){i.contexts.trace.data=o.normalize(t.contexts.trace.data,n,r)}}if(t.spans){i.spans=t.spans.map(t=>{const i=g.spanToJSON(t).data;if(i){t.data=o.normalize(i,n,r)}return t})}return i}function getFinalScope(t,n){if(!n){return t}const r=t?t.clone():new c.Scope;r.update(n);return r}function parseEventHintOrCaptureContext(t){if(!t){return undefined}if(hintIsScopeOrFunction(t)){return{captureContext:t}}if(hintIsScopeContext(t)){return{captureContext:t}}return t}function hintIsScopeOrFunction(t){return t instanceof c.Scope||typeof t==="function"}const d=["user","level","extra","contexts","tags","fingerprint","requestSession","propagationContext"];function hintIsScopeContext(t){return Object.keys(t).some(t=>d.includes(t))}n.applyDebugIds=applyDebugIds;n.applyDebugMeta=applyDebugMeta;n.parseEventHintOrCaptureContext=parseEventHintOrCaptureContext;n.prepareEvent=prepareEvent},4557:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6710);function applySdkMetadata(t,n,r=[n],i="npm"){const a=t._metadata||{};if(!a.sdk){a.sdk={name:`sentry.javascript.${n}`,packages:r.map(t=>({name:`${i}:@sentry/${t}`,version:o.SDK_VERSION})),version:o.SDK_VERSION}}t._metadata=a}n.applySdkMetadata=applySdkMetadata},7961:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=0;const a=1;function spanToTraceContext(t){const{spanId:n,traceId:r}=t.spanContext();const{data:i,op:a,parent_span_id:c,status:l,tags:g,origin:u}=spanToJSON(t);return o.dropUndefinedKeys({data:i,op:a,parent_span_id:c,span_id:n,status:l,tags:g,trace_id:r,origin:u})}function spanToTraceHeader(t){const{traceId:n,spanId:r}=t.spanContext();const i=spanIsSampled(t);return o.generateSentryTraceHeader(n,r,i)}function spanTimeInputToSeconds(t){if(typeof t==="number"){return ensureTimestampInSeconds(t)}if(Array.isArray(t)){return t[0]+t[1]/1e9}if(t instanceof Date){return ensureTimestampInSeconds(t.getTime())}return o.timestampInSeconds()}function ensureTimestampInSeconds(t){const n=t>9999999999;return n?t/1e3:t}function spanToJSON(t){if(spanIsSpanClass(t)){return t.getSpanJSON()}if(typeof t.toJSON==="function"){return t.toJSON()}return{}}function spanIsSpanClass(t){return typeof t.getSpanJSON==="function"}function spanIsSampled(t){const{traceFlags:n}=t.spanContext();return Boolean(n&a)}n.TRACE_FLAG_NONE=i;n.TRACE_FLAG_SAMPLED=a;n.spanIsSampled=spanIsSampled;n.spanTimeInputToSeconds=spanTimeInputToSeconds;n.spanToJSON=spanToJSON;n.spanToTraceContext=spanToTraceContext;n.spanToTraceHeader=spanToTraceHeader},6710:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="7.120.4";n.SDK_VERSION=r},9431:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i="7";function getBaseApiEndpoint(t){const n=t.protocol?`${t.protocol}:`:"";const r=t.port?`:${t.port}`:"";return`${n}//${t.host}${r}${t.path?`/${t.path}`:""}/api/`}function _getIngestEndpoint(t){return`${getBaseApiEndpoint(t)}${t.projectId}/envelope/`}function _encodedAuth(t,n){return o.urlEncode({sentry_key:t.publicKey,sentry_version:i,...n&&{sentry_client:`${n.name}/${n.version}`}})}function getEnvelopeEndpointWithUrlEncodedAuth(t,n,r){return n?n:`${_getIngestEndpoint(t)}?${_encodedAuth(t,r)}`}function getReportDialogEndpoint(t,n){const r=o.makeDsn(t);if(!r){return""}const i=`${getBaseApiEndpoint(r)}embed/error-page/`;let a=`dsn=${o.dsnToString(r)}`;for(const t in n){if(t==="dsn"){continue}if(t==="onClose"){continue}if(t==="user"){const t=n.user;if(!t){continue}if(t.name){a+=`&name=${encodeURIComponent(t.name)}`}if(t.email){a+=`&email=${encodeURIComponent(t.email)}`}}else{a+=`&${encodeURIComponent(t)}=${encodeURIComponent(n[t])}`}}return`${i}?${a}`}n.getEnvelopeEndpointWithUrlEncodedAuth=getEnvelopeEndpointWithUrlEncodedAuth;n.getReportDialogEndpoint=getReportDialogEndpoint},6395:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6515);const i=r(1094);function setAsyncContextStrategy(t){const n=o.getMainCarrier();const r=o.getSentryCarrier(n);r.acs=t}function getAsyncContextStrategy(t){const n=o.getSentryCarrier(t);if(n.acs){return n.acs}return i.getStackAsyncContextStrategy()}n.getAsyncContextStrategy=getAsyncContextStrategy;n.setAsyncContextStrategy=setAsyncContextStrategy},1094:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4247);const a=r(179);const c=r(6515);class AsyncContextStack{constructor(t,n){let r;if(!t){r=new a.Scope}else{r=t}let o;if(!n){o=new a.Scope}else{o=n}this._stack=[{scope:r}];this._isolationScope=o}withScope(t){const n=this._pushScope();let r;try{r=t(n)}catch(t){this._popScope();throw t}if(o.isThenable(r)){return r.then(t=>{this._popScope();return t},t=>{this._popScope();throw t})}this._popScope();return r}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const t=this.getScope().clone();this.getStack().push({client:this.getClient(),scope:t});return t}_popScope(){if(this.getStack().length<=1)return false;return!!this.getStack().pop()}}function getAsyncContextStack(){const t=c.getMainCarrier();const n=c.getSentryCarrier(t);return n.stack=n.stack||new AsyncContextStack(i.getDefaultCurrentScope(),i.getDefaultIsolationScope())}function withScope(t){return getAsyncContextStack().withScope(t)}function withSetScope(t,n){const r=getAsyncContextStack();return r.withScope(()=>{r.getStackTop().scope=t;return n(t)})}function withIsolationScope(t){return getAsyncContextStack().withScope(()=>t(getAsyncContextStack().getIsolationScope()))}function getStackAsyncContextStrategy(){return{withIsolationScope:withIsolationScope,withScope:withScope,withSetScope:withSetScope,withSetIsolationScope:(t,n)=>withIsolationScope(n),getCurrentScope:()=>getAsyncContextStack().getScope(),getIsolationScope:()=>getAsyncContextStack().getIsolationScope()}}n.AsyncContextStack=AsyncContextStack;n.getStackAsyncContextStrategy=getStackAsyncContextStrategy},9713:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(9431);const a=r(2319);const c=r(4057);const l=r(875);const g=r(8178);const u=r(5075);const d=r(8511);const I=r(9306);const p=r(9076);const m="Not capturing exception because it's already been captured.";class BaseClient{constructor(t){this._options=t;this._integrations={};this._numProcessing=0;this._outcomes={};this._hooks={};this._eventProcessors=[];if(t.dsn){this._dsn=o.makeDsn(t.dsn)}else{c.DEBUG_BUILD&&o.logger.warn("No DSN provided, client will not send events.")}if(this._dsn){const n=i.getEnvelopeEndpointWithUrlEncodedAuth(this._dsn,t.tunnel,t._metadata?t._metadata.sdk:undefined);this._transport=t.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...t.transportOptions,url:n})}}captureException(t,n,r){const i=o.uuid4();if(o.checkOrSetAlreadyCaught(t)){c.DEBUG_BUILD&&o.logger.log(m);return i}const a={event_id:i,...n};this._process(this.eventFromException(t,a).then(t=>this._captureEvent(t,a,r)));return a.event_id}captureMessage(t,n,r,i){const a={event_id:o.uuid4(),...r};const c=o.isParameterizedString(t)?t:String(t);const l=o.isPrimitive(t)?this.eventFromMessage(c,n,a):this.eventFromException(t,a);this._process(l.then(t=>this._captureEvent(t,a,i)));return a.event_id}captureEvent(t,n,r){const i=o.uuid4();if(n&&n.originalException&&o.checkOrSetAlreadyCaught(n.originalException)){c.DEBUG_BUILD&&o.logger.log(m);return i}const a={event_id:i,...n};const l=t.sdkProcessingMetadata||{};const g=l.capturedSpanScope;this._process(this._captureEvent(t,a,g||r));return a.event_id}captureSession(t){if(!(typeof t.release==="string")){c.DEBUG_BUILD&&o.logger.warn("Discarded session because of missing or non-string release")}else{this.sendSession(t);u.updateSession(t,{init:false})}}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(t){const n=this._transport;if(n){this.emit("flush");return this._isClientDoneProcessing(t).then(r=>n.flush(t).then(t=>r&&t))}else{return o.resolvedSyncPromise(true)}}close(t){return this.flush(t).then(t=>{this.getOptions().enabled=false;this.emit("close");return t})}getEventProcessors(){return this._eventProcessors}addEventProcessor(t){this._eventProcessors.push(t)}init(){if(this._isEnabled()){this._setupIntegrations()}}getIntegrationByName(t){return this._integrations[t]}addIntegration(t){const n=this._integrations[t.name];g.setupIntegration(this,t,this._integrations);if(!n){g.afterSetupIntegrations(this,[t])}}sendEvent(t,n={}){this.emit("beforeSendEvent",t,n);let r=l.createEventEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);for(const t of n.attachments||[]){r=o.addItemToEnvelope(r,o.createAttachmentEnvelopeItem(t))}const i=this.sendEnvelope(r);if(i){i.then(n=>this.emit("afterSendEvent",t,n),null)}}sendSession(t){const n=l.createSessionEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(n)}recordDroppedEvent(t,n,r){if(this._options.sendClientReports){const r=`${t}:${n}`;c.DEBUG_BUILD&&o.logger.log(`Adding outcome: "${r}"`);this._outcomes[r]=this._outcomes[r]+1||1}}on(t,n){if(!this._hooks[t]){this._hooks[t]=[]}this._hooks[t].push(n)}emit(t,...n){if(this._hooks[t]){this._hooks[t].forEach(t=>t(...n))}}sendEnvelope(t){this.emit("beforeEnvelope",t);if(this._isEnabled()&&this._transport){return this._transport.send(t).then(null,t=>{c.DEBUG_BUILD&&o.logger.error("Error while sending event:",t);return t})}c.DEBUG_BUILD&&o.logger.error("Transport disabled");return o.resolvedSyncPromise({})}_setupIntegrations(){const{integrations:t}=this._options;this._integrations=g.setupIntegrations(this,t);g.afterSetupIntegrations(this,t)}_updateSessionFromEvent(t,n){let r=false;let o=false;const i=n.exception&&n.exception.values;if(i){o=true;for(const t of i){const n=t.mechanism;if(n&&n.handled===false){r=true;break}}}const a=t.status==="ok";const c=a&&t.errors===0||a&&r;if(c){u.updateSession(t,{...r&&{status:"crashed"},errors:t.errors||Number(o||r)});this.captureSession(t)}}_isClientDoneProcessing(t){return new o.SyncPromise(n=>{let r=0;const o=1;const i=setInterval(()=>{if(this._numProcessing==0){clearInterval(i);n(true)}else{r+=o;if(t&&r>=t){clearInterval(i);n(false)}}},o)})}_isEnabled(){return this.getOptions().enabled!==false&&this._transport!==undefined}_prepareEvent(t,n,r,i=a.getIsolationScope()){const c=this.getOptions();const l=Object.keys(this._integrations);if(!n.integrations&&l.length>0){n.integrations=l}this.emit("preprocessEvent",t,n);if(!t.type){i.setLastEventId(t.event_id||n.event_id)}return p.prepareEvent(c,t,n,r,this,i).then(t=>{if(t===null){return t}const n={...i.getPropagationContext(),...r?r.getPropagationContext():undefined};const a=t.contexts&&t.contexts.trace;if(!a&&n){const{traceId:r,spanId:i,parentSpanId:a,dsc:c}=n;t.contexts={trace:o.dropUndefinedKeys({trace_id:r,span_id:i,parent_span_id:a}),...t.contexts};const l=c?c:d.getDynamicSamplingContextFromClient(r,this);t.sdkProcessingMetadata={dynamicSamplingContext:l,...t.sdkProcessingMetadata}}return t})}_captureEvent(t,n={},r){return this._processEvent(t,n,r).then(t=>t.event_id,t=>{if(c.DEBUG_BUILD){const n=t;if(n.logLevel==="log"){o.logger.log(n.message)}else{o.logger.warn(n)}}return undefined})}_processEvent(t,n,r){const i=this.getOptions();const{sampleRate:a}=i;const c=isTransactionEvent(t);const l=isErrorEvent(t);const g=t.type||"error";const u=`before send for type \`${g}\``;const d=typeof a==="undefined"?undefined:I.parseSampleRate(a);if(l&&typeof d==="number"&&Math.random()>d){this.recordDroppedEvent("sample_rate","error",t);return o.rejectedSyncPromise(new o.SentryError(`Discarding event because it's not included in the random sample (sampling rate = ${a})`,"log"))}const p=g==="replay_event"?"replay":g;const m=t.sdkProcessingMetadata||{};const C=m.capturedSpanIsolationScope;return this._prepareEvent(t,n,r,C).then(r=>{if(r===null){this.recordDroppedEvent("event_processor",p,t);throw new o.SentryError("An event processor returned `null`, will not send event.","log")}const a=n.data&&n.data.__sentry__===true;if(a){return r}const c=processBeforeSend(i,r,n);return _validateBeforeSendResult(c,u)}).then(i=>{if(i===null){this.recordDroppedEvent("before_send",p,t);throw new o.SentryError(`${u} returned \`null\`, will not send event.`,"log")}const a=r&&r.getSession();if(!c&&a){this._updateSessionFromEvent(a,i)}const l=i.transaction_info;if(c&&l&&i.transaction!==t.transaction){const t="custom";i.transaction_info={...l,source:t}}this.sendEvent(i,n);return i}).then(null,t=>{if(t instanceof o.SentryError){throw t}this.captureException(t,{data:{__sentry__:true},originalException:t});throw new o.SentryError(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${t}`)})}_process(t){this._numProcessing++;void t.then(t=>{this._numProcessing--;return t},t=>{this._numProcessing--;return t})}_clearOutcomes(){const t=this._outcomes;this._outcomes={};return Object.keys(t).map(n=>{const[r,o]=n.split(":");return{reason:r,category:o,quantity:t[n]}})}}function _validateBeforeSendResult(t,n){const r=`${n} must return \`null\` or a valid event.`;if(o.isThenable(t)){return t.then(t=>{if(!o.isPlainObject(t)&&t!==null){throw new o.SentryError(r)}return t},t=>{throw new o.SentryError(`${n} rejected with ${t}`)})}else if(!o.isPlainObject(t)&&t!==null){throw new o.SentryError(r)}return t}function processBeforeSend(t,n,r){const{beforeSend:o,beforeSendTransaction:i,beforeSendSpan:a}=t;if(isErrorEvent(n)&&o){return o(n,r)}if(isTransactionEvent(n)){if(n.spans&&a){const t=[];for(const r of n.spans){const n=a(r);if(n){t.push(n)}}n.spans=t}if(i){return i(n,r)}}return n}function isErrorEvent(t){return t.type===undefined}function isTransactionEvent(t){return t.type==="transaction"}n.BaseClient=BaseClient},6425:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=100;function addBreadcrumb(t,n){const r=i.getClient();const c=i.getIsolationScope();if(!r)return;const{beforeBreadcrumb:l=null,maxBreadcrumbs:g=a}=r.getOptions();if(g<=0)return;const u=o.dateTimestampInSeconds();const d={timestamp:u,...t};const I=l?o.consoleSandbox(()=>l(d,n)):d;if(I===null)return;if(r.emit){r.emit("beforeAddBreadcrumb",I,n)}c.addBreadcrumb(I,g)}n.addBreadcrumb=addBreadcrumb},6515:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);function getMainCarrier(){getSentryCarrier(o.GLOBAL_OBJ);return o.GLOBAL_OBJ}function getSentryCarrier(t){const n=t.__SENTRY__=t.__SENTRY__||{};n.version=n.version||o.SDK_VERSION;return n[o.SDK_VERSION]=n[o.SDK_VERSION]||{}}n.getMainCarrier=getMainCarrier;n.getSentryCarrier=getSentryCarrier},1196:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);function createCheckInEnvelope(t,n,r,i,a){const c={sent_at:(new Date).toISOString()};if(r&&r.sdk){c.sdk={name:r.sdk.name,version:r.sdk.version}}if(!!i&&!!a){c.dsn=o.dsnToString(a)}if(n){c.trace=o.dropUndefinedKeys(n)}const l=createCheckInEnvelopeItem(t);return o.createEnvelope(c,[l])}function createCheckInEnvelopeItem(t){const n={type:"check_in"};return[n,t]}n.createCheckInEnvelope=createCheckInEnvelope},2902:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="production";n.DEFAULT_ENVIRONMENT=r},2319:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(6395);const a=r(6515);const c=r(179);function getCurrentScope(){const t=a.getMainCarrier();const n=i.getAsyncContextStrategy(t);return n.getCurrentScope()}function getIsolationScope(){const t=a.getMainCarrier();const n=i.getAsyncContextStrategy(t);return n.getIsolationScope()}function getGlobalScope(){return o.getGlobalSingleton("globalScope",()=>new c.Scope)}function withScope(...t){const n=a.getMainCarrier();const r=i.getAsyncContextStrategy(n);if(t.length===2){const[n,o]=t;if(!n){return r.withScope(o)}return r.withSetScope(n,o)}return r.withScope(t[0])}function withIsolationScope(...t){const n=a.getMainCarrier();const r=i.getAsyncContextStrategy(n);if(t.length===2){const[n,o]=t;if(!n){return r.withIsolationScope(o)}return r.withSetIsolationScope(n,o)}return r.withIsolationScope(t[0])}function getClient(){return getCurrentScope().getClient()}n.getClient=getClient;n.getCurrentScope=getCurrentScope;n.getGlobalScope=getGlobalScope;n.getIsolationScope=getIsolationScope;n.withIsolationScope=withIsolationScope;n.withScope=withScope},4057:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=r},4247:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(179);function getDefaultCurrentScope(){return o.getGlobalSingleton("defaultCurrentScope",()=>new i.Scope)}function getDefaultIsolationScope(){return o.getGlobalSingleton("defaultIsolationScope",()=>new i.Scope)}n.getDefaultCurrentScope=getDefaultCurrentScope;n.getDefaultIsolationScope=getDefaultIsolationScope},875:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8511);const a=r(24);function enhanceEventWithSdkInfo(t,n){if(!n){return t}t.sdk=t.sdk||{};t.sdk.name=t.sdk.name||n.name;t.sdk.version=t.sdk.version||n.version;t.sdk.integrations=[...t.sdk.integrations||[],...n.integrations||[]];t.sdk.packages=[...t.sdk.packages||[],...n.packages||[]];return t}function createSessionEnvelope(t,n,r,i){const a=o.getSdkMetadataForEnvelopeHeader(r);const c={sent_at:(new Date).toISOString(),...a&&{sdk:a},...!!i&&n&&{dsn:o.dsnToString(n)}};const l="aggregates"in t?[{type:"sessions"},t]:[{type:"session"},t.toJSON()];return o.createEnvelope(c,[l])}function createEventEnvelope(t,n,r,i){const a=o.getSdkMetadataForEnvelopeHeader(r);const c=t.type&&t.type!=="replay_event"?t.type:"event";enhanceEventWithSdkInfo(t,r&&r.sdk);const l=o.createEventEnvelopeHeaders(t,a,i,n);delete t.sdkProcessingMetadata;const g=[{type:c},t];return o.createEnvelope(l,[g])}function createSpanEnvelope(t,n){function dscHasRequiredProps(t){return!!t.trace_id&&!!t.public_key}const r=i.getDynamicSamplingContextFromSpan(t[0]);const c=n&&n.getDsn();const l=n&&n.getOptions().tunnel;const g={sent_at:(new Date).toISOString(),...dscHasRequiredProps(r)&&{trace:r},...!!l&&c&&{dsn:o.dsnToString(c)}};const u=n&&n.getOptions().beforeSendSpan;const d=u?t=>u(a.spanToJSON(t)):t=>a.spanToJSON(t);const I=[];for(const n of t){const t=d(n);if(t){I.push(o.createSpanEnvelopeItem(t))}}return o.createEnvelope(g,I)}n.createEventEnvelope=createEventEnvelope;n.createSessionEnvelope=createSessionEnvelope;n.createSpanEnvelope=createSpanEnvelope},6430:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);function notifyEventProcessors(t,n,r,a=0){return new o.SyncPromise((c,l)=>{const g=t[a];if(n===null||typeof g!=="function"){c(n)}else{const u=g({...n},r);i.DEBUG_BUILD&&g.id&&u===null&&o.logger.log(`Event processor "${g.id}" dropped event`);if(o.isThenable(u)){void u.then(n=>notifyEventProcessors(t,n,r,a+1).then(c)).then(null,l)}else{void notifyEventProcessors(t,u,r,a+1).then(c).then(null,l)}}})}n.notifyEventProcessors=notifyEventProcessors},1004:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2902);const a=r(2319);const c=r(4057);const l=r(5075);const g=r(9076);function captureException(t,n){return a.getCurrentScope().captureException(t,g.parseEventHintOrCaptureContext(n))}function captureMessage(t,n){const r=typeof n==="string"?n:undefined;const o=typeof n!=="string"?{captureContext:n}:undefined;return a.getCurrentScope().captureMessage(t,r,o)}function captureEvent(t,n){return a.getCurrentScope().captureEvent(t,n)}function setContext(t,n){a.getIsolationScope().setContext(t,n)}function setExtras(t){a.getIsolationScope().setExtras(t)}function setExtra(t,n){a.getIsolationScope().setExtra(t,n)}function setTags(t){a.getIsolationScope().setTags(t)}function setTag(t,n){a.getIsolationScope().setTag(t,n)}function setUser(t){a.getIsolationScope().setUser(t)}function lastEventId(){return a.getIsolationScope().lastEventId()}function captureCheckIn(t,n){const r=a.getCurrentScope();const i=a.getClient();if(!i){c.DEBUG_BUILD&&o.logger.warn("Cannot capture check-in. No client defined.")}else if(!i.captureCheckIn){c.DEBUG_BUILD&&o.logger.warn("Cannot capture check-in. Client does not support sending check-ins.")}else{return i.captureCheckIn(t,n,r)}return o.uuid4()}function withMonitor(t,n,r){const i=captureCheckIn({monitorSlug:t,status:"in_progress"},r);const c=o.timestampInSeconds();function finishCheckIn(n){captureCheckIn({monitorSlug:t,status:n,checkInId:i,duration:o.timestampInSeconds()-c})}return a.withIsolationScope(()=>{let t;try{t=n()}catch(t){finishCheckIn("error");throw t}if(o.isThenable(t)){Promise.resolve(t).then(()=>{finishCheckIn("ok")},()=>{finishCheckIn("error")})}else{finishCheckIn("ok")}return t})}async function flush(t){const n=a.getClient();if(n){return n.flush(t)}c.DEBUG_BUILD&&o.logger.warn("Cannot flush events. No client defined.");return Promise.resolve(false)}async function close(t){const n=a.getClient();if(n){return n.close(t)}c.DEBUG_BUILD&&o.logger.warn("Cannot flush events and disable SDK. No client defined.");return Promise.resolve(false)}function isInitialized(){return!!a.getClient()}function isEnabled(){const t=a.getClient();return!!t&&t.getOptions().enabled!==false&&!!t.getTransport()}function addEventProcessor(t){a.getIsolationScope().addEventProcessor(t)}function startSession(t){const n=a.getClient();const r=a.getIsolationScope();const c=a.getCurrentScope();const{release:g,environment:u=i.DEFAULT_ENVIRONMENT}=n&&n.getOptions()||{};const{userAgent:d}=o.GLOBAL_OBJ.navigator||{};const I=l.makeSession({release:g,environment:u,user:c.getUser()||r.getUser(),...d&&{userAgent:d},...t});const p=r.getSession();if(p&&p.status==="ok"){l.updateSession(p,{status:"exited"})}endSession();r.setSession(I);c.setSession(I);return I}function endSession(){const t=a.getIsolationScope();const n=a.getCurrentScope();const r=n.getSession()||t.getSession();if(r){l.closeSession(r)}_sendSessionUpdate();t.setSession();n.setSession()}function _sendSessionUpdate(){const t=a.getIsolationScope();const n=a.getCurrentScope();const r=a.getClient();const o=n.getSession()||t.getSession();if(o&&r){r.captureSession(o)}}function captureSession(t=false){if(t){endSession();return}_sendSessionUpdate()}n.addEventProcessor=addEventProcessor;n.captureCheckIn=captureCheckIn;n.captureEvent=captureEvent;n.captureException=captureException;n.captureMessage=captureMessage;n.captureSession=captureSession;n.close=close;n.endSession=endSession;n.flush=flush;n.isEnabled=isEnabled;n.isInitialized=isInitialized;n.lastEventId=lastEventId;n.setContext=setContext;n.setExtra=setExtra;n.setExtras=setExtras;n.setTag=setTag;n.setTags=setTags;n.setUser=setUser;n.startSession=startSession;n.withMonitor=withMonitor},6660:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);function captureFeedback(t,n={},r=i.getCurrentScope()){const{message:a,name:c,email:l,url:g,source:u,associatedEventId:d}=t;const I={contexts:{feedback:o.dropUndefinedKeys({contact_email:l,name:c,message:a,url:g,source:u,associated_event_id:d})},type:"feedback",level:"info"};const p=r&&r.getClient()||i.getClient();if(p){p.emit("beforeSendFeedback",I,n)}const m=r.captureEvent(I,n);return m}n.captureFeedback=captureFeedback},8199:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(4606);r(571);r(4057);const c=r(4358);const l=r(24);const g=r(9561);const u=r(8033);const d=r(1691);const I=r(8511);function instrumentFetchRequest(t,n,r,u,I="auto.http.browser"){if(!t.fetchData){return undefined}const p=c.hasTracingEnabled()&&n(t.fetchData.url);if(t.endTimestamp&&p){const n=t.fetchData.__span;if(!n)return;const r=u[n];if(r){endSpan(r,t);delete u[n]}return undefined}const m=i.getCurrentScope();const C=i.getClient();const{method:b,url:h}=t.fetchData;const f=getFullURL(h);const y=f?o.parseUrl(f).host:undefined;const G=!!l.getActiveSpan();const B=p&&G?d.startInactiveSpan({name:`${b} ${h}`,attributes:{url:h,type:"fetch","http.method":b,"http.url":f,"server.address":y,[a.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:I,[a.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"http.client"}}):new g.SentryNonRecordingSpan;t.fetchData.__span=B.spanContext().spanId;u[B.spanContext().spanId]=B;if(r(t.fetchData.url)&&C){const n=t.args[0];t.args[1]=t.args[1]||{};const r=t.args[1];r.headers=addTracingHeadersToFetchRequest(n,C,m,r,c.hasTracingEnabled()&&G?B:undefined)}return B}function addTracingHeadersToFetchRequest(t,n,r,a,c){const g=i.getIsolationScope();const{traceId:u,spanId:d,sampled:p,dsc:m}={...g.getPropagationContext(),...r.getPropagationContext()};const C=c?l.spanToTraceHeader(c):o.generateSentryTraceHeader(u,d,p);const b=o.dynamicSamplingContextToSentryBaggageHeader(m||(c?I.getDynamicSamplingContextFromSpan(c):I.getDynamicSamplingContextFromClient(u,n)));const h=a.headers||(typeof Request!=="undefined"&&o.isInstanceOf(t,Request)?t.headers:undefined);if(!h){return{"sentry-trace":C,baggage:b}}else if(typeof Headers!=="undefined"&&o.isInstanceOf(h,Headers)){const t=new Headers(h);t.append("sentry-trace",C);if(b){t.append(o.BAGGAGE_HEADER_NAME,b)}return t}else if(Array.isArray(h)){const t=[...h,["sentry-trace",C]];if(b){t.push([o.BAGGAGE_HEADER_NAME,b])}return t}else{const t="baggage"in h?h.baggage:undefined;const n=[];if(Array.isArray(t)){n.push(...t)}else if(t){n.push(t)}if(b){n.push(b)}return{...h,"sentry-trace":C,baggage:n.length>0?n.join(","):undefined}}}function getFullURL(t){try{const n=new URL(t);return n.href}catch(t){return undefined}}function endSpan(t,n){if(n.response){u.setHttpStatus(t,n.response.status);const r=n.response&&n.response.headers&&n.response.headers.get("content-length");if(r){const n=parseInt(r);if(n>0){t.setAttribute("http.response_content_length",n)}}}else if(n.error){t.setStatus({code:u.SPAN_STATUS_ERROR,message:"internal_error"})}t.end()}n.addTracingHeadersToFetchRequest=addTracingHeadersToFetchRequest;n.instrumentFetchRequest=instrumentFetchRequest},6530:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6425);const i=r(2319);const a=r(1004);function getCurrentHubShim(){return{bindClient(t){const n=i.getCurrentScope();n.setClient(t)},withScope:i.withScope,getClient:()=>i.getClient(),getScope:i.getCurrentScope,getIsolationScope:i.getIsolationScope,captureException:(t,n)=>i.getCurrentScope().captureException(t,n),captureMessage:(t,n,r)=>i.getCurrentScope().captureMessage(t,n,r),captureEvent:a.captureEvent,addBreadcrumb:o.addBreadcrumb,setUser:a.setUser,setTags:a.setTags,setTag:a.setTag,setExtra:a.setExtra,setExtras:a.setExtras,setContext:a.setContext,getIntegration(t){const n=i.getClient();return n&&n.getIntegrationByName(t.id)||null},startSession:a.startSession,endSession:a.endSession,captureSession(t){if(t){return a.endSession()}_sendSessionUpdate()}}}const c=getCurrentHubShim;function _sendSessionUpdate(){const t=i.getCurrentScope();const n=i.getClient();const r=t.getSession();if(n&&r){n.captureSession(r)}}n.getCurrentHub=c;n.getCurrentHubShim=getCurrentHubShim},1251:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(571);const i=r(5767);const a=r(7659);const c=r(261);const l=r(9527);const g=r(9561);const u=r(8033);const d=r(1691);const I=r(8511);const p=r(5038);const m=r(4174);const C=r(8167);const b=r(4606);const h=r(875);const f=r(1004);const y=r(2319);const G=r(4247);const B=r(6395);const A=r(6515);const Z=r(5075);const S=r(8910);const v=r(179);const W=r(6430);const R=r(9431);const _=r(9713);const V=r(7841);const H=r(1867);const N=r(7061);const E=r(9673);const T=r(4543);const Y=r(8178);const X=r(518);const F=r(9076);const w=r(1196);const K=r(4358);const k=r(2472);const U=r(6991);const J=r(7866);const x=r(24);const L=r(9306);const z=r(2088);const O=r(2902);const M=r(6425);const D=r(3191);const j=r(3583);const P=r(3209);const Q=r(6778);const q=r(7422);const $=r(7156);const ee=r(4664);const te=r(9592);const ne=r(7899);const re=r(8337);const oe=r(7045);const se=r(6677);const ie=r(2969);const ae=r(5022);const ce=r(4795);const le=r(3200);const ge=r(8199);const ue=r(3116);const de=r(6660);const Ie=r(6530);const pe=r(1655);n.registerSpanErrorInstrumentation=o.registerSpanErrorInstrumentation;n.getCapturedScopesOnSpan=i.getCapturedScopesOnSpan;n.setCapturedScopesOnSpan=i.setCapturedScopesOnSpan;n.addTracingExtensions=a.addTracingExtensions;n.TRACING_DEFAULTS=c.TRACING_DEFAULTS;n.startIdleSpan=c.startIdleSpan;n.SentrySpan=l.SentrySpan;n.SentryNonRecordingSpan=g.SentryNonRecordingSpan;n.SPAN_STATUS_ERROR=u.SPAN_STATUS_ERROR;n.SPAN_STATUS_OK=u.SPAN_STATUS_OK;n.SPAN_STATUS_UNSET=u.SPAN_STATUS_UNSET;n.getSpanStatusFromHttpCode=u.getSpanStatusFromHttpCode;n.setHttpStatus=u.setHttpStatus;n.continueTrace=d.continueTrace;n.startInactiveSpan=d.startInactiveSpan;n.startNewTrace=d.startNewTrace;n.startSpan=d.startSpan;n.startSpanManual=d.startSpanManual;n.suppressTracing=d.suppressTracing;n.withActiveSpan=d.withActiveSpan;n.getDynamicSamplingContextFromClient=I.getDynamicSamplingContextFromClient;n.getDynamicSamplingContextFromSpan=I.getDynamicSamplingContextFromSpan;n.spanToBaggageHeader=I.spanToBaggageHeader;n.setMeasurement=p.setMeasurement;n.timedEventsToMeasurements=p.timedEventsToMeasurements;n.sampleSpan=m.sampleSpan;n.logSpanEnd=C.logSpanEnd;n.logSpanStart=C.logSpanStart;n.SEMANTIC_ATTRIBUTE_CACHE_HIT=b.SEMANTIC_ATTRIBUTE_CACHE_HIT;n.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE=b.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE;n.SEMANTIC_ATTRIBUTE_CACHE_KEY=b.SEMANTIC_ATTRIBUTE_CACHE_KEY;n.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME=b.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME;n.SEMANTIC_ATTRIBUTE_PROFILE_ID=b.SEMANTIC_ATTRIBUTE_PROFILE_ID;n.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON=b.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON;n.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT=b.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT;n.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE=b.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=b.SEMANTIC_ATTRIBUTE_SENTRY_OP;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=b.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=b.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=b.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE;n.createEventEnvelope=h.createEventEnvelope;n.createSessionEnvelope=h.createSessionEnvelope;n.createSpanEnvelope=h.createSpanEnvelope;n.addEventProcessor=f.addEventProcessor;n.captureCheckIn=f.captureCheckIn;n.captureEvent=f.captureEvent;n.captureException=f.captureException;n.captureMessage=f.captureMessage;n.captureSession=f.captureSession;n.close=f.close;n.endSession=f.endSession;n.flush=f.flush;n.isEnabled=f.isEnabled;n.isInitialized=f.isInitialized;n.lastEventId=f.lastEventId;n.setContext=f.setContext;n.setExtra=f.setExtra;n.setExtras=f.setExtras;n.setTag=f.setTag;n.setTags=f.setTags;n.setUser=f.setUser;n.startSession=f.startSession;n.withMonitor=f.withMonitor;n.getClient=y.getClient;n.getCurrentScope=y.getCurrentScope;n.getGlobalScope=y.getGlobalScope;n.getIsolationScope=y.getIsolationScope;n.withIsolationScope=y.withIsolationScope;n.withScope=y.withScope;n.getDefaultCurrentScope=G.getDefaultCurrentScope;n.getDefaultIsolationScope=G.getDefaultIsolationScope;n.setAsyncContextStrategy=B.setAsyncContextStrategy;n.getMainCarrier=A.getMainCarrier;n.closeSession=Z.closeSession;n.makeSession=Z.makeSession;n.updateSession=Z.updateSession;n.SessionFlusher=S.SessionFlusher;n.Scope=v.Scope;n.notifyEventProcessors=W.notifyEventProcessors;n.getEnvelopeEndpointWithUrlEncodedAuth=R.getEnvelopeEndpointWithUrlEncodedAuth;n.getReportDialogEndpoint=R.getReportDialogEndpoint;n.BaseClient=_.BaseClient;n.ServerRuntimeClient=V.ServerRuntimeClient;n.initAndBind=H.initAndBind;n.setCurrentClient=H.setCurrentClient;n.createTransport=N.createTransport;n.makeOfflineTransport=E.makeOfflineTransport;n.makeMultiplexedTransport=T.makeMultiplexedTransport;n.addIntegration=Y.addIntegration;n.defineIntegration=Y.defineIntegration;n.getIntegrationsToSetup=Y.getIntegrationsToSetup;n.applyScopeDataToEvent=X.applyScopeDataToEvent;n.mergeScopeData=X.mergeScopeData;n.prepareEvent=F.prepareEvent;n.createCheckInEnvelope=w.createCheckInEnvelope;n.hasTracingEnabled=K.hasTracingEnabled;n.isSentryRequestUrl=k.isSentryRequestUrl;n.handleCallbackErrors=U.handleCallbackErrors;n.parameterize=J.parameterize;n.addChildSpanToSpan=x.addChildSpanToSpan;n.getActiveSpan=x.getActiveSpan;n.getRootSpan=x.getRootSpan;n.getSpanDescendants=x.getSpanDescendants;n.getStatusMessage=x.getStatusMessage;n.spanIsSampled=x.spanIsSampled;n.spanToJSON=x.spanToJSON;n.spanToTraceContext=x.spanToTraceContext;n.spanToTraceHeader=x.spanToTraceHeader;n.parseSampleRate=L.parseSampleRate;n.applySdkMetadata=z.applySdkMetadata;n.DEFAULT_ENVIRONMENT=O.DEFAULT_ENVIRONMENT;n.addBreadcrumb=M.addBreadcrumb;n.functionToStringIntegration=D.functionToStringIntegration;n.inboundFiltersIntegration=j.inboundFiltersIntegration;n.linkedErrorsIntegration=P.linkedErrorsIntegration;n.moduleMetadataIntegration=Q.moduleMetadataIntegration;n.requestDataIntegration=q.requestDataIntegration;n.captureConsoleIntegration=$.captureConsoleIntegration;n.debugIntegration=ee.debugIntegration;n.dedupeIntegration=te.dedupeIntegration;n.extraErrorDataIntegration=ne.extraErrorDataIntegration;n.rewriteFramesIntegration=re.rewriteFramesIntegration;n.sessionTimingIntegration=oe.sessionTimingIntegration;n.zodErrorsIntegration=se.zodErrorsIntegration;n.metrics=ie.metrics;n.metricsDefault=ae.metricsDefault;n.BrowserMetricsAggregator=ce.BrowserMetricsAggregator;n.getMetricSummaryJsonForSpan=le.getMetricSummaryJsonForSpan;n.addTracingHeadersToFetchRequest=ge.addTracingHeadersToFetchRequest;n.instrumentFetchRequest=ge.instrumentFetchRequest;n.trpcMiddleware=ue.trpcMiddleware;n.captureFeedback=de.captureFeedback;n.getCurrentHub=Ie.getCurrentHub;n.getCurrentHubShim=Ie.getCurrentHubShim;n.SDK_VERSION=pe.SDK_VERSION},8178:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(4057);const c=[];function filterDuplicates(t){const n={};t.forEach(t=>{const{name:r}=t;const o=n[r];if(o&&!o.isDefaultInstance&&t.isDefaultInstance){return}n[r]=t});return Object.keys(n).map(t=>n[t])}function getIntegrationsToSetup(t){const n=t.defaultIntegrations||[];const r=t.integrations;n.forEach(t=>{t.isDefaultInstance=true});let i;if(Array.isArray(r)){i=[...n,...r]}else if(typeof r==="function"){i=o.arrayify(r(n))}else{i=n}const a=filterDuplicates(i);const c=findIndex(a,t=>t.name==="Debug");if(c!==-1){const[t]=a.splice(c,1);a.push(t)}return a}function setupIntegrations(t,n){const r={};n.forEach(n=>{if(n){setupIntegration(t,n,r)}});return r}function afterSetupIntegrations(t,n){for(const r of n){if(r&&r.afterAllSetup){r.afterAllSetup(t)}}}function setupIntegration(t,n,r){if(r[n.name]){a.DEBUG_BUILD&&o.logger.log(`Integration skipped because it was already installed: ${n.name}`);return}r[n.name]=n;if(c.indexOf(n.name)===-1&&typeof n.setupOnce==="function"){n.setupOnce();c.push(n.name)}if(n.setup&&typeof n.setup==="function"){n.setup(t)}if(typeof n.preprocessEvent==="function"){const r=n.preprocessEvent.bind(n);t.on("preprocessEvent",(n,o)=>r(n,o,t))}if(typeof n.processEvent==="function"){const r=n.processEvent.bind(n);const o=Object.assign((n,o)=>r(n,o,t),{id:n.name});t.addEventProcessor(o)}a.DEBUG_BUILD&&o.logger.log(`Integration installed: ${n.name}`)}function addIntegration(t){const n=i.getClient();if(!n){a.DEBUG_BUILD&&o.logger.warn(`Cannot add integration "${t.name}" because no SDK Client is available.`);return}n.addIntegration(t)}function findIndex(t,n){for(let r=0;r<t.length;r++){if(n(t[r])===true){return r}}return-1}function defineIntegration(t){return t}n.addIntegration=addIntegration;n.afterSetupIntegrations=afterSetupIntegrations;n.defineIntegration=defineIntegration;n.getIntegrationsToSetup=getIntegrationsToSetup;n.installedIntegrations=c;n.setupIntegration=setupIntegration;n.setupIntegrations=setupIntegrations},7156:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(1004);const c=r(8178);const l="CaptureConsole";const _captureConsoleIntegration=(t={})=>{const n=t.levels||o.CONSOLE_LEVELS;return{name:l,setup(t){if(!("console"in o.GLOBAL_OBJ)){return}o.addConsoleInstrumentationHandler(({args:r,level:o})=>{if(i.getClient()!==t||!n.includes(o)){return}consoleHandler(r,o)})}}};const g=c.defineIntegration(_captureConsoleIntegration);function consoleHandler(t,n){const r={level:o.severityLevelFromString(n),extra:{arguments:t}};i.withScope(i=>{i.addEventProcessor(t=>{t.logger="console";o.addExceptionMechanism(t,{handled:false,type:"console"});return t});if(n==="assert"){if(!t[0]){const n=`Assertion failed: ${o.safeJoin(t.slice(1)," ")||"console.assert"}`;i.setExtra("arguments",t.slice(1));a.captureMessage(n,r)}return}const c=t.find(t=>t instanceof Error);if(c){a.captureException(c,r);return}const l=o.safeJoin(t," ");a.captureMessage(l,r)})}n.captureConsoleIntegration=g},4664:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a="Debug";const _debugIntegration=(t={})=>{const n={debugger:false,stringify:false,...t};return{name:a,setup(t){t.on("beforeSendEvent",(t,r)=>{if(n.debugger){debugger}o.consoleSandbox(()=>{if(n.stringify){console.log(JSON.stringify(t,null,2));if(r&&Object.keys(r).length){console.log(JSON.stringify(r,null,2))}}else{console.log(t);if(r&&Object.keys(r).length){console.log(r)}}})})}}};const c=i.defineIntegration(_debugIntegration);n.debugIntegration=c},9592:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a=r(4057);const c="Dedupe";const _dedupeIntegration=()=>{let t;return{name:c,processEvent(n){if(n.type){return n}try{if(_shouldDropEvent(n,t)){a.DEBUG_BUILD&&o.logger.warn("Event dropped due to being a duplicate of previously captured event.");return null}}catch(t){}return t=n}}};const l=i.defineIntegration(_dedupeIntegration);function _shouldDropEvent(t,n){if(!n){return false}if(_isSameMessageEvent(t,n)){return true}if(_isSameExceptionEvent(t,n)){return true}return false}function _isSameMessageEvent(t,n){const r=t.message;const o=n.message;if(!r&&!o){return false}if(r&&!o||!r&&o){return false}if(r!==o){return false}if(!_isSameFingerprint(t,n)){return false}if(!_isSameStacktrace(t,n)){return false}return true}function _isSameExceptionEvent(t,n){const r=_getExceptionFromEvent(n);const o=_getExceptionFromEvent(t);if(!r||!o){return false}if(r.type!==o.type||r.value!==o.value){return false}if(!_isSameFingerprint(t,n)){return false}if(!_isSameStacktrace(t,n)){return false}return true}function _isSameStacktrace(t,n){let r=_getFramesFromEvent(t);let o=_getFramesFromEvent(n);if(!r&&!o){return true}if(r&&!o||!r&&o){return false}r=r;o=o;if(o.length!==r.length){return false}for(let t=0;t<o.length;t++){const n=o[t];const i=r[t];if(n.filename!==i.filename||n.lineno!==i.lineno||n.colno!==i.colno||n.function!==i.function){return false}}return true}function _isSameFingerprint(t,n){let r=t.fingerprint;let o=n.fingerprint;if(!r&&!o){return true}if(r&&!o||!r&&o){return false}r=r;o=o;try{return!!(r.join("")===o.join(""))}catch(t){return false}}function _getExceptionFromEvent(t){return t.exception&&t.exception.values&&t.exception.values[0]}function _getFramesFromEvent(t){const n=t.exception;if(n){try{return n.values[0].stacktrace.frames}catch(t){return undefined}}return undefined}n._shouldDropEvent=_shouldDropEvent;n.dedupeIntegration=l},7899:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a=r(4057);const c="ExtraErrorData";const _extraErrorDataIntegration=(t={})=>{const{depth:n=3,captureErrorCause:r=true}=t;return{name:c,processEvent(t,o){return _enhanceEventWithErrorData(t,o,n,r)}}};const l=i.defineIntegration(_extraErrorDataIntegration);function _enhanceEventWithErrorData(t,n={},r,i){if(!n.originalException||!o.isError(n.originalException)){return t}const a=n.originalException.name||n.originalException.constructor.name;const c=_extractErrorData(n.originalException,i);if(c){const n={...t.contexts};const i=o.normalize(c,r);if(o.isPlainObject(i)){o.addNonEnumerableProperty(i,"__sentry_skip_normalization__",true);n[a]=i}return{...t,contexts:n}}return t}function _extractErrorData(t,n){try{const r=["name","message","stack","line","column","fileName","lineNumber","columnNumber","toJSON"];const i={};for(const n of Object.keys(t)){if(r.indexOf(n)!==-1){continue}const a=t[n];i[n]=o.isError(a)?a.toString():a}if(n&&t.cause!==undefined){i.cause=o.isError(t.cause)?t.cause.toString():t.cause}if(typeof t.toJSON==="function"){const n=t.toJSON();for(const t of Object.keys(n)){const r=n[t];i[t]=o.isError(r)?r.toString():r}}return i}catch(t){a.DEBUG_BUILD&&o.logger.error("Unable to extract extra data from the Error object:",t)}return null}n.extraErrorDataIntegration=l},3191:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(8178);let c;const l="FunctionToString";const g=new WeakMap;const _functionToStringIntegration=()=>({name:l,setupOnce(){c=Function.prototype.toString;try{Function.prototype.toString=function(...t){const n=o.getOriginalFunction(this);const r=g.has(i.getClient())&&n!==undefined?n:this;return c.apply(r,t)}}catch(t){}},setup(t){g.set(t,true)}});const u=a.defineIntegration(_functionToStringIntegration);n.functionToStringIntegration=u},3583:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);const a=r(8178);const c=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/];const l="InboundFilters";const _inboundFiltersIntegration=(t={})=>({name:l,processEvent(n,r,o){const i=o.getOptions();const a=_mergeOptions(t,i);return _shouldDropEvent(n,a)?null:n}});const g=a.defineIntegration(_inboundFiltersIntegration);function _mergeOptions(t={},n={}){return{allowUrls:[...t.allowUrls||[],...n.allowUrls||[]],denyUrls:[...t.denyUrls||[],...n.denyUrls||[]],ignoreErrors:[...t.ignoreErrors||[],...n.ignoreErrors||[],...t.disableErrorDefaults?[]:c],ignoreTransactions:[...t.ignoreTransactions||[],...n.ignoreTransactions||[]],ignoreInternal:t.ignoreInternal!==undefined?t.ignoreInternal:true}}function _shouldDropEvent(t,n){if(n.ignoreInternal&&_isSentryError(t)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being internal Sentry Error.\nEvent: ${o.getEventDescription(t)}`);return true}if(_isIgnoredError(t,n.ignoreErrors)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being matched by \`ignoreErrors\` option.\nEvent: ${o.getEventDescription(t)}`);return true}if(_isIgnoredTransaction(t,n.ignoreTransactions)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.\nEvent: ${o.getEventDescription(t)}`);return true}if(_isDeniedUrl(t,n.denyUrls)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to being matched by \`denyUrls\` option.\nEvent: ${o.getEventDescription(t)}.\nUrl: ${_getEventFilterUrl(t)}`);return true}if(!_isAllowedUrl(t,n.allowUrls)){i.DEBUG_BUILD&&o.logger.warn(`Event dropped due to not being matched by \`allowUrls\` option.\nEvent: ${o.getEventDescription(t)}.\nUrl: ${_getEventFilterUrl(t)}`);return true}return false}function _isIgnoredError(t,n){if(t.type||!n||!n.length){return false}return _getPossibleEventMessages(t).some(t=>o.stringMatchesSomePattern(t,n))}function _isIgnoredTransaction(t,n){if(t.type!=="transaction"||!n||!n.length){return false}const r=t.transaction;return r?o.stringMatchesSomePattern(r,n):false}function _isDeniedUrl(t,n){if(!n||!n.length){return false}const r=_getEventFilterUrl(t);return!r?false:o.stringMatchesSomePattern(r,n)}function _isAllowedUrl(t,n){if(!n||!n.length){return true}const r=_getEventFilterUrl(t);return!r?true:o.stringMatchesSomePattern(r,n)}function _getPossibleEventMessages(t){const n=[];if(t.message){n.push(t.message)}let r;try{r=t.exception.values[t.exception.values.length-1]}catch(t){}if(r){if(r.value){n.push(r.value);if(r.type){n.push(`${r.type}: ${r.value}`)}}}return n}function _isSentryError(t){try{return t.exception.values[0].type==="SentryError"}catch(t){}return false}function _getLastValidUrl(t=[]){for(let n=t.length-1;n>=0;n--){const r=t[n];if(r&&r.filename!=="<anonymous>"&&r.filename!=="[native code]"){return r.filename||null}}return null}function _getEventFilterUrl(t){try{let n;try{n=t.exception.values[0].stacktrace.frames}catch(t){}return n?_getLastValidUrl(n):null}catch(n){i.DEBUG_BUILD&&o.logger.error(`Cannot extract url for event ${o.getEventDescription(t)}`);return null}}n.inboundFiltersIntegration=g},3209:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a="cause";const c=5;const l="LinkedErrors";const _linkedErrorsIntegration=(t={})=>{const n=t.limit||c;const r=t.key||a;return{name:l,preprocessEvent(t,i,a){const c=a.getOptions();o.applyAggregateErrorsToEvent(o.exceptionFromError,c.stackParser,c.maxValueLength,r,n,t,i)}}};const g=i.defineIntegration(_linkedErrorsIntegration);n.linkedErrorsIntegration=g},6778:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a=r(958);const c="ModuleMetadata";const _moduleMetadataIntegration=()=>({name:c,setup(t){t.on("beforeEnvelope",t=>{o.forEachEnvelopeItem(t,(t,n)=>{if(n==="event"){const n=Array.isArray(t)?t[1]:undefined;if(n){a.stripMetadataFromStackFrames(n);t[1]=n}}})})},processEvent(t,n,r){const o=r.getOptions().stackParser;a.addMetadataToStackFrames(o,t);return t}});const l=i.defineIntegration(_moduleMetadataIntegration);n.moduleMetadataIntegration=l},7422:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a={include:{cookies:true,data:true,headers:true,ip:false,query_string:true,url:true,user:{id:true,username:true,email:true}},transactionNamingScheme:"methodPath"};const c="RequestData";const _requestDataIntegration=(t={})=>{const n={...a,...t,include:{...a.include,...t.include,user:t.include&&typeof t.include.user==="boolean"?t.include.user:{...a.include.user,...(t.include||{}).user}}};return{name:c,processEvent(t){const{sdkProcessingMetadata:r={}}=t;const i=r.request;if(!i){return t}const a=convertReqDataIntegrationOptsToAddReqDataOpts(n);return o.addRequestDataToEvent(t,i,a)}}};const l=i.defineIntegration(_requestDataIntegration);function convertReqDataIntegrationOptsToAddReqDataOpts(t){const{transactionNamingScheme:n,include:{ip:r,user:o,...i}}=t;const a=["method"];for(const[t,n]of Object.entries(i)){if(n){a.push(t)}}let c;if(o===undefined){c=true}else if(typeof o==="boolean"){c=o}else{const t=[];for(const[n,r]of Object.entries(o)){if(r){t.push(n)}}c=t}return{include:{ip:r,user:c,request:a.length!==0?a:undefined,transaction:n}}}n.requestDataIntegration=l},8337:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a="RewriteFrames";const c=i.defineIntegration((t={})=>{const n=t.root;const r=t.prefix||"app:///";const i="window"in o.GLOBAL_OBJ&&o.GLOBAL_OBJ.window!==undefined;const c=t.iteratee||generateIteratee({isBrowser:i,root:n,prefix:r});function _processExceptionsEvent(t){try{return{...t,exception:{...t.exception,values:t.exception.values.map(t=>({...t,...t.stacktrace&&{stacktrace:_processStacktrace(t.stacktrace)}}))}}}catch(n){return t}}function _processStacktrace(t){return{...t,frames:t&&t.frames&&t.frames.map(t=>c(t))}}return{name:a,processEvent(t){let n=t;if(t.exception&&Array.isArray(t.exception.values)){n=_processExceptionsEvent(n)}return n}}});function generateIteratee({isBrowser:t,root:n,prefix:r}){return i=>{if(!i.filename){return i}const a=/^[a-zA-Z]:\\/.test(i.filename)||i.filename.includes("\\")&&!i.filename.includes("/");const c=/^\//.test(i.filename);if(t){if(n){const t=i.filename;if(t.indexOf(n)===0){i.filename=t.replace(n,r)}}}else{if(a||c){const t=a?i.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):i.filename;const c=n?o.relative(n,t):o.basename(t);i.filename=`${r}${c}`}}return i}}n.generateIteratee=generateIteratee;n.rewriteFramesIntegration=c},7045:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a="SessionTiming";const _sessionTimingIntegration=()=>{const t=o.timestampInSeconds()*1e3;return{name:a,processEvent(n){const r=o.timestampInSeconds()*1e3;return{...n,extra:{...n.extra,["session:start"]:t,["session:duration"]:r-t,["session:end"]:r}}}}};const c=i.defineIntegration(_sessionTimingIntegration);n.sessionTimingIntegration=c},6677:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8178);const a=10;const c="ZodErrors";function originalExceptionIsZodError(t){return o.isError(t)&&t.name==="ZodError"&&Array.isArray(t.errors)}function formatIssueTitle(t){return{...t,path:"path"in t&&Array.isArray(t.path)?t.path.join("."):undefined,keys:"keys"in t?JSON.stringify(t.keys):undefined,unionErrors:"unionErrors"in t?JSON.stringify(t.unionErrors):undefined}}function formatIssueMessage(t){const n=new Set;for(const r of t.issues){if(r.path)n.add(r.path[0])}const r=Array.from(n);return`Failed to validate keys: ${o.truncate(r.join(", "),100)}`}function applyZodErrorsToEvent(t,n,r){if(!n.exception||!n.exception.values||!r||!r.originalException||!originalExceptionIsZodError(r.originalException)||r.originalException.issues.length===0){return n}return{...n,exception:{...n.exception,values:[{...n.exception.values[0],value:formatIssueMessage(r.originalException)},...n.exception.values.slice(1)]},extra:{...n.extra,"zoderror.issues":r.originalException.errors.slice(0,t).map(formatIssueTitle)}}}const _zodErrorsIntegration=(t={})=>{const n=t.limit||a;return{name:c,processEvent(t,r){const o=applyZodErrorsToEvent(n,t,r);return o}}};const l=i.defineIntegration(_zodErrorsIntegration);n.applyZodErrorsToEvent=applyZodErrorsToEvent;n.zodErrorsIntegration=l},958:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=new Map;const a=new Set;function ensureMetadataStacksAreParsed(t){if(!o.GLOBAL_OBJ._sentryModuleMetadata){return}for(const n of Object.keys(o.GLOBAL_OBJ._sentryModuleMetadata)){const r=o.GLOBAL_OBJ._sentryModuleMetadata[n];if(a.has(n)){continue}a.add(n);const c=t(n);for(const t of c.reverse()){if(t.filename){i.set(t.filename,r);break}}}}function getMetadataForUrl(t,n){ensureMetadataStacksAreParsed(t);return i.get(n)}function addMetadataToStackFrames(t,n){try{n.exception.values.forEach(n=>{if(!n.stacktrace){return}for(const r of n.stacktrace.frames||[]){if(!r.filename){continue}const n=getMetadataForUrl(t,r.filename);if(n){r.module_metadata=n}}})}catch(t){}}function stripMetadataFromStackFrames(t){try{t.exception.values.forEach(t=>{if(!t.stacktrace){return}for(const n of t.stacktrace.frames||[]){delete n.module_metadata}})}catch(t){}}n.addMetadataToStackFrames=addMetadataToStackFrames;n.getMetadataForUrl=getMetadataForUrl;n.stripMetadataFromStackFrames=stripMetadataFromStackFrames},8252:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(24);const a=r(7356);const c=r(7081);const l=r(2882);const g=r(4160);class MetricsAggregator{constructor(t){this._client=t;this._buckets=new Map;this._bucketsTotalWeight=0;this._interval=setInterval(()=>this._flush(),a.DEFAULT_FLUSH_INTERVAL);if(this._interval.unref){this._interval.unref()}this._flushShift=Math.floor(Math.random()*a.DEFAULT_FLUSH_INTERVAL/1e3);this._forceFlush=false}add(t,n,r,c="none",u={},d=o.timestampInSeconds()){const I=Math.floor(d);const p=g.sanitizeMetricKey(n);const m=g.sanitizeTags(u);const C=g.sanitizeUnit(c);const b=g.getBucketKey(t,p,C,m);let h=this._buckets.get(b);const f=h&&t===a.SET_METRIC_TYPE?h.metric.weight:0;if(h){h.metric.add(r);if(h.timestamp<I){h.timestamp=I}}else{h={metric:new l.METRIC_MAP[t](r),timestamp:I,metricType:t,name:p,unit:C,tags:m};this._buckets.set(b,h)}const y=typeof r==="string"?h.metric.weight-f:r;i.updateMetricSummaryOnActiveSpan(t,p,y,C,u,b);this._bucketsTotalWeight+=h.metric.weight;if(this._bucketsTotalWeight>=a.MAX_WEIGHT){this.flush()}}flush(){this._forceFlush=true;this._flush()}close(){this._forceFlush=true;clearInterval(this._interval);this._flush()}_flush(){if(this._forceFlush){this._forceFlush=false;this._bucketsTotalWeight=0;this._captureMetrics(this._buckets);this._buckets.clear();return}const t=Math.floor(o.timestampInSeconds())-a.DEFAULT_FLUSH_INTERVAL/1e3-this._flushShift;const n=new Map;for(const[r,o]of this._buckets){if(o.timestamp<=t){n.set(r,o);this._bucketsTotalWeight-=o.metric.weight}}for(const[t]of n){this._buckets.delete(t)}this._captureMetrics(n)}_captureMetrics(t){if(t.size>0){const n=Array.from(t).map(([,t])=>t);c.captureAggregateMetrics(this._client,n)}}}n.MetricsAggregator=MetricsAggregator},4795:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(24);const a=r(7356);const c=r(7081);const l=r(2882);const g=r(4160);class BrowserMetricsAggregator{constructor(t){this._client=t;this._buckets=new Map;this._interval=setInterval(()=>this.flush(),a.DEFAULT_BROWSER_FLUSH_INTERVAL)}add(t,n,r,c="none",u={},d=o.timestampInSeconds()){const I=Math.floor(d);const p=g.sanitizeMetricKey(n);const m=g.sanitizeTags(u);const C=g.sanitizeUnit(c);const b=g.getBucketKey(t,p,C,m);let h=this._buckets.get(b);const f=h&&t===a.SET_METRIC_TYPE?h.metric.weight:0;if(h){h.metric.add(r);if(h.timestamp<I){h.timestamp=I}}else{h={metric:new l.METRIC_MAP[t](r),timestamp:I,metricType:t,name:p,unit:C,tags:m};this._buckets.set(b,h)}const y=typeof r==="string"?h.metric.weight-f:r;i.updateMetricSummaryOnActiveSpan(t,p,y,C,u,b)}flush(){if(this._buckets.size===0){return}const t=Array.from(this._buckets.values());c.captureAggregateMetrics(this._client,t);this._buckets.clear()}close(){clearInterval(this._interval);this.flush()}}n.BrowserMetricsAggregator=BrowserMetricsAggregator},7356:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="c";const o="g";const i="s";const a="d";const c=5e3;const l=1e4;const g=1e4;n.COUNTER_METRIC_TYPE=r;n.DEFAULT_BROWSER_FLUSH_INTERVAL=c;n.DEFAULT_FLUSH_INTERVAL=l;n.DISTRIBUTION_METRIC_TYPE=a;n.GAUGE_METRIC_TYPE=o;n.MAX_WEIGHT=g;n.SET_METRIC_TYPE=i},7081:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4160);function captureAggregateMetrics(t,n){o.logger.log(`Flushing aggregated metrics, number of metrics: ${n.length}`);const r=t.getDsn();const i=t.getSdkMetadata();const a=t.getOptions().tunnel;const c=createMetricEnvelope(n,r,i,a);t.sendEnvelope(c)}function createMetricEnvelope(t,n,r,i){const a={sent_at:(new Date).toISOString()};if(r&&r.sdk){a.sdk={name:r.sdk.name,version:r.sdk.version}}if(!!i&&n){a.dsn=o.dsnToString(n)}const c=createMetricEnvelopeItem(t);return o.createEnvelope(a,[c])}function createMetricEnvelopeItem(t){const n=i.serializeMetricBuckets(t);const r={type:"statsd",length:n.length};return[r,n]}n.captureAggregateMetrics=captureAggregateMetrics;n.createMetricEnvelope=createMetricEnvelope},5022:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8252);const i=r(2969);function increment(t,n=1,r){i.metrics.increment(o.MetricsAggregator,t,n,r)}function distribution(t,n,r){i.metrics.distribution(o.MetricsAggregator,t,n,r)}function set(t,n,r){i.metrics.set(o.MetricsAggregator,t,n,r)}function gauge(t,n,r){i.metrics.gauge(o.MetricsAggregator,t,n,r)}function timing(t,n,r="second",a){return i.metrics.timing(o.MetricsAggregator,t,n,r,a)}function getMetricsAggregatorForClient(t){return i.metrics.getMetricsAggregatorForClient(t,o.MetricsAggregator)}const a={increment:increment,distribution:distribution,set:set,gauge:gauge,timing:timing,getMetricsAggregatorForClient:getMetricsAggregatorForClient};n.metricsDefault=a},2969:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(4057);r(571);const c=r(24);const l=r(1691);const g=r(6991);const u=r(7356);function getMetricsAggregatorForClient(t,n){const r=o.getGlobalSingleton("globalMetricsAggregators",()=>new WeakMap);const i=r.get(t);if(i){return i}const a=new n(t);t.on("flush",()=>a.flush());t.on("close",()=>a.close());r.set(t,a);return a}function addToMetricsAggregator(t,n,r,l,g={}){const u=g.client||i.getClient();if(!u){return}const d=c.getActiveSpan();const I=d?c.getRootSpan(d):undefined;const p=I&&c.spanToJSON(I).description;const{unit:m,tags:C,timestamp:b}=g;const{release:h,environment:f}=u.getOptions();const y={};if(h){y.release=h}if(f){y.environment=f}if(p){y.transaction=p}a.DEBUG_BUILD&&o.logger.log(`Adding value of ${l} to ${n} metric ${r}`);const G=getMetricsAggregatorForClient(u,t);G.add(n,r,l,m,{...y,...C},b)}function increment(t,n,r=1,o){addToMetricsAggregator(t,u.COUNTER_METRIC_TYPE,n,ensureNumber(r),o)}function distribution(t,n,r,o){addToMetricsAggregator(t,u.DISTRIBUTION_METRIC_TYPE,n,ensureNumber(r),o)}function timing(t,n,r,i="second",a){if(typeof r==="function"){const i=o.timestampInSeconds();return l.startSpanManual({op:"metrics.timing",name:n,startTime:i,onlyIfParent:true},c=>g.handleCallbackErrors(()=>r(),()=>{},()=>{const r=o.timestampInSeconds();const l=r-i;distribution(t,n,l,{...a,unit:"second"});c.end(r)}))}distribution(t,n,r,{...a,unit:i})}function set(t,n,r,o){addToMetricsAggregator(t,u.SET_METRIC_TYPE,n,r,o)}function gauge(t,n,r,o){addToMetricsAggregator(t,u.GAUGE_METRIC_TYPE,n,ensureNumber(r),o)}const d={increment:increment,distribution:distribution,set:set,gauge:gauge,timing:timing,getMetricsAggregatorForClient:getMetricsAggregatorForClient};function ensureNumber(t){return typeof t==="string"?parseInt(t):t}n.metrics=d},2882:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(7356);const i=r(4160);class CounterMetric{constructor(t){this._value=t}get weight(){return 1}add(t){this._value+=t}toString(){return`${this._value}`}}class GaugeMetric{constructor(t){this._last=t;this._min=t;this._max=t;this._sum=t;this._count=1}get weight(){return 5}add(t){this._last=t;if(t<this._min){this._min=t}if(t>this._max){this._max=t}this._sum+=t;this._count++}toString(){return`${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`}}class DistributionMetric{constructor(t){this._value=[t]}get weight(){return this._value.length}add(t){this._value.push(t)}toString(){return this._value.join(":")}}class SetMetric{constructor(t){this.first=t;this._value=new Set([t])}get weight(){return this._value.size}add(t){this._value.add(t)}toString(){return Array.from(this._value).map(t=>typeof t==="string"?i.simpleHash(t):t).join(":")}}const a={[o.COUNTER_METRIC_TYPE]:CounterMetric,[o.GAUGE_METRIC_TYPE]:GaugeMetric,[o.DISTRIBUTION_METRIC_TYPE]:DistributionMetric,[o.SET_METRIC_TYPE]:SetMetric};n.CounterMetric=CounterMetric;n.DistributionMetric=DistributionMetric;n.GaugeMetric=GaugeMetric;n.METRIC_MAP=a;n.SetMetric=SetMetric},3200:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i="_sentryMetrics";function getMetricSummaryJsonForSpan(t){const n=t[i];if(!n){return undefined}const r={};for(const[,[t,i]]of n){if(!r[t]){r[t]=[]}r[t].push(o.dropUndefinedKeys(i))}return r}function updateMetricSummaryOnSpan(t,n,r,o,a,c,l){const g=t[i];const u=g||(t[i]=new Map);const d=`${n}:${r}@${a}`;const I=u.get(l);if(I){const[,t]=I;u.set(l,[d,{min:Math.min(t.min,o),max:Math.max(t.max,o),count:t.count+=1,sum:t.sum+=o,tags:t.tags}])}else{u.set(l,[d,{min:o,max:o,count:1,sum:o,tags:c}])}}n.getMetricSummaryJsonForSpan=getMetricSummaryJsonForSpan;n.updateMetricSummaryOnSpan=updateMetricSummaryOnSpan},4160:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);function getBucketKey(t,n,r,i){const a=Object.entries(o.dropUndefinedKeys(i)).sort((t,n)=>t[0].localeCompare(n[0]));return`${t}${n}${r}${a}`}function simpleHash(t){let n=0;for(let r=0;r<t.length;r++){const o=t.charCodeAt(r);n=(n<<5)-n+o;n&=n}return n>>>0}function serializeMetricBuckets(t){let n="";for(const r of t){const t=Object.entries(r.tags);const o=t.length>0?`|#${t.map(([t,n])=>`${t}:${n}`).join(",")}`:"";n+=`${r.name}@${r.unit}:${r.metric}|${r.metricType}${o}|T${r.timestamp}\n`}return n}function sanitizeUnit(t){return t.replace(/[^\w]+/gi,"_")}function sanitizeMetricKey(t){return t.replace(/[^\w\-.]+/gi,"_")}function sanitizeTagKey(t){return t.replace(/[^\w\-./]+/gi,"")}const i=[["\n","\\n"],["\r","\\r"],["\t","\\t"],["\\","\\\\"],["|","\\u{7c}"],[",","\\u{2c}"]];function getCharOrReplacement(t){for(const[n,r]of i){if(t===n){return r}}return t}function sanitizeTagValue(t){return[...t].reduce((t,n)=>t+getCharOrReplacement(n),"")}function sanitizeTags(t){const n={};for(const r in t){if(Object.prototype.hasOwnProperty.call(t,r)){const o=sanitizeTagKey(r);n[o]=sanitizeTagValue(String(t[r]))}}return n}n.getBucketKey=getBucketKey;n.sanitizeMetricKey=sanitizeMetricKey;n.sanitizeTags=sanitizeTags;n.sanitizeUnit=sanitizeUnit;n.serializeMetricBuckets=serializeMetricBuckets;n.simpleHash=simpleHash},179:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(5075);const a=r(5350);const c=100;class ScopeClass{constructor(){this._notifyingListeners=false;this._scopeListeners=[];this._eventProcessors=[];this._breadcrumbs=[];this._attachments=[];this._user={};this._tags={};this._extra={};this._contexts={};this._sdkProcessingMetadata={};this._propagationContext=o.generatePropagationContext()}clone(){const t=new ScopeClass;t._breadcrumbs=[...this._breadcrumbs];t._tags={...this._tags};t._extra={...this._extra};t._contexts={...this._contexts};t._user=this._user;t._level=this._level;t._session=this._session;t._transactionName=this._transactionName;t._fingerprint=this._fingerprint;t._eventProcessors=[...this._eventProcessors];t._requestSession=this._requestSession;t._attachments=[...this._attachments];t._sdkProcessingMetadata={...this._sdkProcessingMetadata};t._propagationContext={...this._propagationContext};t._client=this._client;t._lastEventId=this._lastEventId;a._setSpanForScope(t,a._getSpanForScope(this));return t}setClient(t){this._client=t}setLastEventId(t){this._lastEventId=t}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(t){this._scopeListeners.push(t)}addEventProcessor(t){this._eventProcessors.push(t);return this}setUser(t){this._user=t||{email:undefined,id:undefined,ip_address:undefined,username:undefined};if(this._session){i.updateSession(this._session,{user:t})}this._notifyScopeListeners();return this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(t){this._requestSession=t;return this}setTags(t){this._tags={...this._tags,...t};this._notifyScopeListeners();return this}setTag(t,n){this._tags={...this._tags,[t]:n};this._notifyScopeListeners();return this}setExtras(t){this._extra={...this._extra,...t};this._notifyScopeListeners();return this}setExtra(t,n){this._extra={...this._extra,[t]:n};this._notifyScopeListeners();return this}setFingerprint(t){this._fingerprint=t;this._notifyScopeListeners();return this}setLevel(t){this._level=t;this._notifyScopeListeners();return this}setTransactionName(t){this._transactionName=t;this._notifyScopeListeners();return this}setContext(t,n){if(n===null){delete this._contexts[t]}else{this._contexts[t]=n}this._notifyScopeListeners();return this}setSession(t){if(!t){delete this._session}else{this._session=t}this._notifyScopeListeners();return this}getSession(){return this._session}update(t){if(!t){return this}const n=typeof t==="function"?t(this):t;const[r,i]=n instanceof l?[n.getScopeData(),n.getRequestSession()]:o.isPlainObject(n)?[t,t.requestSession]:[];const{tags:a,extra:c,user:g,contexts:u,level:d,fingerprint:I=[],propagationContext:p}=r||{};this._tags={...this._tags,...a};this._extra={...this._extra,...c};this._contexts={...this._contexts,...u};if(g&&Object.keys(g).length){this._user=g}if(d){this._level=d}if(I.length){this._fingerprint=I}if(p){this._propagationContext=p}if(i){this._requestSession=i}return this}clear(){this._breadcrumbs=[];this._tags={};this._extra={};this._user={};this._contexts={};this._level=undefined;this._transactionName=undefined;this._fingerprint=undefined;this._requestSession=undefined;this._session=undefined;a._setSpanForScope(this,undefined);this._attachments=[];this._propagationContext=o.generatePropagationContext();this._notifyScopeListeners();return this}addBreadcrumb(t,n){const r=typeof n==="number"?n:c;if(r<=0){return this}const i={timestamp:o.dateTimestampInSeconds(),...t};const a=this._breadcrumbs;a.push(i);this._breadcrumbs=a.length>r?a.slice(-r):a;this._notifyScopeListeners();return this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){this._breadcrumbs=[];this._notifyScopeListeners();return this}addAttachment(t){this._attachments.push(t);return this}clearAttachments(){this._attachments=[];return this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:a._getSpanForScope(this)}}setSDKProcessingMetadata(t){this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...t};return this}setPropagationContext(t){this._propagationContext=t;return this}getPropagationContext(){return this._propagationContext}captureException(t,n){const r=n&&n.event_id?n.event_id:o.uuid4();if(!this._client){o.logger.warn("No client configured on scope - will not capture exception!");return r}const i=new Error("Sentry syntheticException");this._client.captureException(t,{originalException:t,syntheticException:i,...n,event_id:r},this);return r}captureMessage(t,n,r){const i=r&&r.event_id?r.event_id:o.uuid4();if(!this._client){o.logger.warn("No client configured on scope - will not capture message!");return i}const a=new Error(t);this._client.captureMessage(t,n,{originalException:t,syntheticException:a,...r,event_id:i},this);return i}captureEvent(t,n){const r=n&&n.event_id?n.event_id:o.uuid4();if(!this._client){o.logger.warn("No client configured on scope - will not capture event!");return r}this._client.captureEvent(t,{...n,event_id:r},this);return r}_notifyScopeListeners(){if(!this._notifyingListeners){this._notifyingListeners=true;this._scopeListeners.forEach(t=>{t(this)});this._notifyingListeners=false}}}const l=ScopeClass;n.Scope=l},1867:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(4057);function initAndBind(t,n){if(n.debug===true){if(a.DEBUG_BUILD){o.logger.enable()}else{o.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})}}const r=i.getCurrentScope();r.update(n.initialScope);const c=new t(n);setCurrentClient(c);c.init()}function setCurrentClient(t){i.getCurrentScope().setClient(t)}n.initAndBind=initAndBind;n.setCurrentClient=setCurrentClient},4606:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="sentry.source";const o="sentry.sample_rate";const i="sentry.op";const a="sentry.origin";const c="sentry.idle_span_finish_reason";const l="sentry.measurement_unit";const g="sentry.measurement_value";const u="sentry.profile_id";const d="sentry.exclusive_time";const I="cache.hit";const p="cache.key";const m="cache.item_size";n.SEMANTIC_ATTRIBUTE_CACHE_HIT=I;n.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE=m;n.SEMANTIC_ATTRIBUTE_CACHE_KEY=p;n.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME=d;n.SEMANTIC_ATTRIBUTE_PROFILE_ID=u;n.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON=c;n.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT=l;n.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE=g;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=i;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=a;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=o;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=r},7841:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(9713);const a=r(1196);const c=r(2319);const l=r(4057);const g=r(8910);const u=r(571);const d=r(5350);const I=r(24);const p=r(8511);class ServerRuntimeClient extends i.BaseClient{constructor(t){u.registerSpanErrorInstrumentation();super(t)}eventFromException(t,n){return o.resolvedSyncPromise(o.eventFromUnknownInput(this,this._options.stackParser,t,n))}eventFromMessage(t,n="info",r){return o.resolvedSyncPromise(o.eventFromMessage(this._options.stackParser,t,n,r,this._options.attachStacktrace))}captureException(t,n,r){if(this._options.autoSessionTracking&&this._sessionFlusher){const t=c.getIsolationScope().getRequestSession();if(t&&t.status==="ok"){t.status="errored"}}return super.captureException(t,n,r)}captureEvent(t,n,r){if(this._options.autoSessionTracking&&this._sessionFlusher){const n=t.type||"exception";const r=n==="exception"&&t.exception&&t.exception.values&&t.exception.values.length>0;if(r){const t=c.getIsolationScope().getRequestSession();if(t&&t.status==="ok"){t.status="errored"}}}return super.captureEvent(t,n,r)}close(t){if(this._sessionFlusher){this._sessionFlusher.close()}return super.close(t)}initSessionFlusher(){const{release:t,environment:n}=this._options;if(!t){l.DEBUG_BUILD&&o.logger.warn("Cannot initialise an instance of SessionFlusher if no release is provided!")}else{this._sessionFlusher=new g.SessionFlusher(this,{release:t,environment:n})}}captureCheckIn(t,n,r){const i="checkInId"in t&&t.checkInId?t.checkInId:o.uuid4();if(!this._isEnabled()){l.DEBUG_BUILD&&o.logger.warn("SDK not enabled, will not capture checkin.");return i}const c=this.getOptions();const{release:g,environment:u,tunnel:d}=c;const I={check_in_id:i,monitor_slug:t.monitorSlug,status:t.status,release:g,environment:u};if("duration"in t){I.duration=t.duration}if(n){I.monitor_config={schedule:n.schedule,checkin_margin:n.checkinMargin,max_runtime:n.maxRuntime,timezone:n.timezone,failure_issue_threshold:n.failureIssueThreshold,recovery_threshold:n.recoveryThreshold}}const[p,m]=this._getTraceInfoFromScope(r);if(m){I.contexts={trace:m}}const C=a.createCheckInEnvelope(I,p,this.getSdkMetadata(),d,this.getDsn());l.DEBUG_BUILD&&o.logger.info("Sending checkin:",t.monitorSlug,t.status);this.sendEnvelope(C);return i}_captureRequestSession(){if(!this._sessionFlusher){l.DEBUG_BUILD&&o.logger.warn("Discarded request mode session because autoSessionTracking option was disabled")}else{this._sessionFlusher.incrementSessionStatusCount()}}_prepareEvent(t,n,r,o){if(this._options.platform){t.platform=t.platform||this._options.platform}if(this._options.runtime){t.contexts={...t.contexts,runtime:(t.contexts||{}).runtime||this._options.runtime}}if(this._options.serverName){t.server_name=t.server_name||this._options.serverName}return super._prepareEvent(t,n,r,o)}_getTraceInfoFromScope(t){if(!t){return[undefined,undefined]}const n=d._getSpanForScope(t);if(n){const t=I.getRootSpan(n);const r=p.getDynamicSamplingContextFromSpan(t);return[r,I.spanToTraceContext(t)]}const{traceId:r,spanId:o,parentSpanId:i,dsc:a}=t.getPropagationContext();const c={trace_id:r,span_id:o,parent_span_id:i};if(a){return[a,c]}return[p.getDynamicSamplingContextFromClient(r,this),c]}}n.ServerRuntimeClient=ServerRuntimeClient},5075:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);function makeSession(t){const n=o.timestampInSeconds();const r={sid:o.uuid4(),init:true,timestamp:n,started:n,duration:0,status:"ok",errors:0,ignoreDuration:false,toJSON:()=>sessionToJSON(r)};if(t){updateSession(r,t)}return r}function updateSession(t,n={}){if(n.user){if(!t.ipAddress&&n.user.ip_address){t.ipAddress=n.user.ip_address}if(!t.did&&!n.did){t.did=n.user.id||n.user.email||n.user.username}}t.timestamp=n.timestamp||o.timestampInSeconds();if(n.abnormal_mechanism){t.abnormal_mechanism=n.abnormal_mechanism}if(n.ignoreDuration){t.ignoreDuration=n.ignoreDuration}if(n.sid){t.sid=n.sid.length===32?n.sid:o.uuid4()}if(n.init!==undefined){t.init=n.init}if(!t.did&&n.did){t.did=`${n.did}`}if(typeof n.started==="number"){t.started=n.started}if(t.ignoreDuration){t.duration=undefined}else if(typeof n.duration==="number"){t.duration=n.duration}else{const n=t.timestamp-t.started;t.duration=n>=0?n:0}if(n.release){t.release=n.release}if(n.environment){t.environment=n.environment}if(!t.ipAddress&&n.ipAddress){t.ipAddress=n.ipAddress}if(!t.userAgent&&n.userAgent){t.userAgent=n.userAgent}if(typeof n.errors==="number"){t.errors=n.errors}if(n.status){t.status=n.status}}function closeSession(t,n){let r={};if(n){r={status:n}}else if(t.status==="ok"){r={status:"exited"}}updateSession(t,r)}function sessionToJSON(t){return o.dropUndefinedKeys({sid:`${t.sid}`,init:t.init,started:new Date(t.started*1e3).toISOString(),timestamp:new Date(t.timestamp*1e3).toISOString(),status:t.status,errors:t.errors,did:typeof t.did==="number"||typeof t.did==="string"?`${t.did}`:undefined,duration:t.duration,abnormal_mechanism:t.abnormal_mechanism,attrs:{release:t.release,environment:t.environment,ip_address:t.ipAddress,user_agent:t.userAgent}})}n.closeSession=closeSession;n.makeSession=makeSession;n.updateSession=updateSession},8910:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);class SessionFlusher{constructor(t,n){this._client=t;this.flushTimeout=60;this._pendingAggregates={};this._isEnabled=true;this._intervalId=setInterval(()=>this.flush(),this.flushTimeout*1e3);if(this._intervalId.unref){this._intervalId.unref()}this._sessionAttrs=n}flush(){const t=this.getSessionAggregates();if(t.aggregates.length===0){return}this._pendingAggregates={};this._client.sendSession(t)}getSessionAggregates(){const t=Object.keys(this._pendingAggregates).map(t=>this._pendingAggregates[parseInt(t)]);const n={attrs:this._sessionAttrs,aggregates:t};return o.dropUndefinedKeys(n)}close(){clearInterval(this._intervalId);this._isEnabled=false;this.flush()}incrementSessionStatusCount(){if(!this._isEnabled){return}const t=i.getIsolationScope();const n=t.getRequestSession();if(n&&n.status){this._incrementSessionStatusCount(n.status,new Date);t.setRequestSession(undefined)}}_incrementSessionStatusCount(t,n){const r=new Date(n).setSeconds(0,0);this._pendingAggregates[r]=this._pendingAggregates[r]||{};const o=this._pendingAggregates[r];if(!o.started){o.started=new Date(r).toISOString()}switch(t){case"errored":o.errored=(o.errored||0)+1;return o.errored;case"ok":o.exited=(o.exited||0)+1;return o.exited;default:o.crashed=(o.crashed||0)+1;return o.crashed}}}n.SessionFlusher=SessionFlusher},8511:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2902);const a=r(2319);const c=r(4606);const l=r(24);const g="_frozenDsc";function freezeDscOnSpan(t,n){const r=t;o.addNonEnumerableProperty(r,g,n)}function getDynamicSamplingContextFromClient(t,n){const r=n.getOptions();const{publicKey:a}=n.getDsn()||{};const c=o.dropUndefinedKeys({environment:r.environment||i.DEFAULT_ENVIRONMENT,release:r.release,public_key:a,trace_id:t});n.emit("createDsc",c);return c}function getDynamicSamplingContextFromSpan(t){const n=a.getClient();if(!n){return{}}const r=getDynamicSamplingContextFromClient(l.spanToJSON(t).trace_id||"",n);const o=l.getRootSpan(t);if(!o){return r}const i=o[g];if(i){return i}const u=l.spanToJSON(o);const d=u.data||{};const I=d[c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];if(I!=null){r.sample_rate=`${I}`}const p=d[c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];if(p&&p!=="url"){r.transaction=u.description}r.sampled=String(l.spanIsSampled(o));n.emit("createDsc",r);return r}function spanToBaggageHeader(t){const n=getDynamicSamplingContextFromSpan(t);return o.dynamicSamplingContextToSentryBaggageHeader(n)}n.freezeDscOnSpan=freezeDscOnSpan;n.getDynamicSamplingContextFromClient=getDynamicSamplingContextFromClient;n.getDynamicSamplingContextFromSpan=getDynamicSamplingContextFromSpan;n.spanToBaggageHeader=spanToBaggageHeader},571:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);const a=r(24);const c=r(8033);let l=false;function registerSpanErrorInstrumentation(){if(l){return}l=true;o.addGlobalErrorInstrumentationHandler(errorCallback);o.addGlobalUnhandledRejectionInstrumentationHandler(errorCallback)}function errorCallback(){const t=a.getActiveSpan();const n=t&&a.getRootSpan(t);if(n){const t="internal_error";i.DEBUG_BUILD&&o.logger.log(`[Tracing] Root span: ${t} -> Global error occured`);n.setStatus({code:c.SPAN_STATUS_ERROR,message:t})}}errorCallback.tag="sentry_tracingErrorCallback";n.registerSpanErrorInstrumentation=registerSpanErrorInstrumentation},7659:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(571);function addTracingExtensions(){o.registerSpanErrorInstrumentation()}n.addTracingExtensions=addTracingExtensions},261:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(4057);const c=r(4606);const l=r(4358);const g=r(5350);const u=r(24);const d=r(9561);const I=r(8033);const p=r(1691);const m={idleTimeout:1e3,finalTimeout:3e4,childSpanTimeout:15e3};const C="heartbeatFailed";const b="idleTimeout";const h="finalTimeout";const f="externalFinish";function startIdleSpan(t,n={}){const r=new Map;let p=false;let y;let G=f;let B=!n.disableAutoFinish;const{idleTimeout:A=m.idleTimeout,finalTimeout:Z=m.finalTimeout,childSpanTimeout:S=m.childSpanTimeout,beforeSpanEnd:v}=n;const W=i.getClient();if(!W||!l.hasTracingEnabled()){return new d.SentryNonRecordingSpan}const R=i.getCurrentScope();const _=u.getActiveSpan();const V=_startIdleSpan(t);function _endSpan(t=o.timestampInSeconds()){const n=u.getSpanDescendants(V).filter(t=>t!==V);if(!n.length){V.end(t);return}const r=n.map(t=>u.spanToJSON(t).timestamp).filter(t=>!!t);const i=r.length?Math.max(...r):undefined;const a=u.spanTimeInputToSeconds(t);const c=u.spanToJSON(V).start_timestamp;const l=Math.min(c?c+Z/1e3:Infinity,Math.max(c||-Infinity,Math.min(a,i||Infinity)));V.end(l)}function _cancelIdleTimeout(){if(y){clearTimeout(y);y=undefined}}function _restartIdleTimeout(t){_cancelIdleTimeout();y=setTimeout(()=>{if(!p&&r.size===0&&B){G=b;_endSpan(t)}},A)}function _restartChildSpanTimeout(t){y=setTimeout(()=>{if(!p&&B){G=C;_endSpan(t)}},S)}function _pushActivity(t){_cancelIdleTimeout();r.set(t,true);const n=o.timestampInSeconds();_restartChildSpanTimeout(n+S/1e3)}function _popActivity(t){if(r.has(t)){r.delete(t)}if(r.size===0){const t=o.timestampInSeconds();_restartIdleTimeout(t+A/1e3)}}function onIdleSpanEnded(){p=true;r.clear();if(v){v(V)}g._setSpanForScope(R,_);const t=u.spanToJSON(V);const{timestamp:n,start_timestamp:i}=t;if(!n||!i){return}const l=t.data||{};if(!l[c.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]){V.setAttribute(c.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,G)}o.logger.log(`[Tracing] Idle span "${t.op}" finished`);const d=u.getSpanDescendants(V).filter(t=>t!==V);let m=0;d.forEach(t=>{if(t.isRecording()){t.setStatus({code:I.SPAN_STATUS_ERROR,message:"cancelled"});t.end(n);a.DEBUG_BUILD&&o.logger.log("[Tracing] Cancelling span since span ended early",JSON.stringify(t,undefined,2))}const r=u.spanToJSON(t);const{timestamp:i=0,start_timestamp:c=0}=r;const l=c<=n;const g=(Z+A)/1e3;const d=i-c<g;if(a.DEBUG_BUILD){const n=JSON.stringify(t,undefined,2);if(!l){o.logger.log("[Tracing] Discarding span since it happened after idle span was finished",n)}else if(!d){o.logger.log("[Tracing] Discarding span since it finished after idle span final timeout",n)}}if(!d||!l){u.removeChildSpanFromSpan(V,t);m++}});if(m>0){V.setAttribute("sentry.idle_span_discarded_spans",m)}}W.on("spanStart",t=>{if(p||t===V||!!u.spanToJSON(t).timestamp){return}const n=u.getSpanDescendants(V);if(n.includes(t)){_pushActivity(t.spanContext().spanId)}});W.on("spanEnd",t=>{if(p){return}_popActivity(t.spanContext().spanId);if(t===V){onIdleSpanEnded()}});W.on("idleSpanEnableAutoFinish",t=>{if(t===V){B=true;_restartIdleTimeout();if(r.size){_restartChildSpanTimeout()}}});if(!n.disableAutoFinish){_restartIdleTimeout()}setTimeout(()=>{if(!p){V.setStatus({code:I.SPAN_STATUS_ERROR,message:"deadline_exceeded"});G=h;_endSpan()}},Z);return V}function _startIdleSpan(t){const n=p.startInactiveSpan(t);g._setSpanForScope(i.getCurrentScope(),n);a.DEBUG_BUILD&&o.logger.log("[Tracing] Started span is an idle span");return n}n.TRACING_DEFAULTS=m;n.startIdleSpan=startIdleSpan},8167:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);const a=r(24);function logSpanStart(t){if(!i.DEBUG_BUILD)return;const{description:n="< unknown name >",op:r="< unknown op >",parent_span_id:c}=a.spanToJSON(t);const{spanId:l}=t.spanContext();const g=a.spanIsSampled(t);const u=a.getRootSpan(t);const d=u===t;const I=`[Tracing] Starting ${g?"sampled":"unsampled"} ${d?"root ":""}span`;const p=[`op: ${r}`,`name: ${n}`,`ID: ${l}`];if(c){p.push(`parent ID: ${c}`)}if(!d){const{op:t,description:n}=a.spanToJSON(u);p.push(`root ID: ${u.spanContext().spanId}`);if(t){p.push(`root op: ${t}`)}if(n){p.push(`root description: ${n}`)}}o.logger.log(`${I}\n ${p.join("\n ")}`)}function logSpanEnd(t){if(!i.DEBUG_BUILD)return;const{description:n="< unknown name >",op:r="< unknown op >"}=a.spanToJSON(t);const{spanId:c}=t.spanContext();const l=a.getRootSpan(t);const g=l===t;const u=`[Tracing] Finishing "${r}" ${g?"root ":""}span "${n}" with ID ${c}`;o.logger.log(u)}n.logSpanEnd=logSpanEnd;n.logSpanStart=logSpanStart},5038:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4606);const i=r(24);function setMeasurement(t,n,r){const a=i.getActiveSpan();const c=a&&i.getRootSpan(a);if(c){c.addEvent(t,{[o.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]:n,[o.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]:r})}}function timedEventsToMeasurements(t){if(!t||t.length===0){return undefined}const n={};t.forEach(t=>{const r=t.attributes||{};const i=r[o.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT];const a=r[o.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE];if(typeof i==="string"&&typeof a==="number"){n[t.name]={value:a,unit:i}}});return n}n.setMeasurement=setMeasurement;n.timedEventsToMeasurements=timedEventsToMeasurements},4174:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);const a=r(4358);const c=r(9306);function sampleSpan(t,n){if(!a.hasTracingEnabled(t)){return[false]}let r;if(typeof t.tracesSampler==="function"){r=t.tracesSampler(n)}else if(n.parentSampled!==undefined){r=n.parentSampled}else if(typeof t.tracesSampleRate!=="undefined"){r=t.tracesSampleRate}else{r=1}const l=c.parseSampleRate(r);if(l===undefined){i.DEBUG_BUILD&&o.logger.warn("[Tracing] Discarding transaction because of invalid sample rate.");return[false]}if(!l){i.DEBUG_BUILD&&o.logger.log(`[Tracing] Discarding transaction because ${typeof t.tracesSampler==="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`);return[false,l]}const g=Math.random()<l;if(!g){i.DEBUG_BUILD&&o.logger.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(r)})`);return[false,l]}return[true,l]}n.sampleSpan=sampleSpan},9561:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(24);class SentryNonRecordingSpan{constructor(t={}){this._traceId=t.traceId||o.uuid4();this._spanId=t.spanId||o.uuid4().substring(16)}spanContext(){return{spanId:this._spanId,traceId:this._traceId,traceFlags:i.TRACE_FLAG_NONE}}end(t){}setAttribute(t,n){return this}setAttributes(t){return this}setStatus(t){return this}updateName(t){return this}isRecording(){return false}addEvent(t,n,r){return this}}n.SentryNonRecordingSpan=SentryNonRecordingSpan},9527:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(4057);const c=r(875);const l=r(3200);const g=r(4606);const u=r(24);const d=r(8511);const I=r(8167);const p=r(5038);const m=r(5767);const C=1e3;class SentrySpan{constructor(t={}){this._traceId=t.traceId||o.uuid4();this._spanId=t.spanId||o.uuid4().substring(16);this._startTime=t.startTimestamp||o.timestampInSeconds();this._attributes={};this.setAttributes({[g.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"manual",[g.SEMANTIC_ATTRIBUTE_SENTRY_OP]:t.op,...t.attributes});this._name=t.name;if(t.parentSpanId){this._parentSpanId=t.parentSpanId}if("sampled"in t){this._sampled=t.sampled}if(t.endTimestamp){this._endTime=t.endTimestamp}this._events=[];this._isStandaloneSpan=t.isStandalone;if(this._endTime){this._onSpanEnded()}}spanContext(){const{_spanId:t,_traceId:n,_sampled:r}=this;return{spanId:t,traceId:n,traceFlags:r?u.TRACE_FLAG_SAMPLED:u.TRACE_FLAG_NONE}}setAttribute(t,n){if(n===undefined){delete this._attributes[t]}else{this._attributes[t]=n}}setAttributes(t){Object.keys(t).forEach(n=>this.setAttribute(n,t[n]))}updateStartTime(t){this._startTime=u.spanTimeInputToSeconds(t)}setStatus(t){this._status=t;return this}updateName(t){this._name=t;return this}end(t){if(this._endTime){return}this._endTime=u.spanTimeInputToSeconds(t);I.logSpanEnd(this);this._onSpanEnded()}getSpanJSON(){return o.dropUndefinedKeys({data:this._attributes,description:this._name,op:this._attributes[g.SEMANTIC_ATTRIBUTE_SENTRY_OP],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:u.getStatusMessage(this._status),timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[g.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN],_metrics_summary:l.getMetricSummaryJsonForSpan(this),profile_id:this._attributes[g.SEMANTIC_ATTRIBUTE_PROFILE_ID],exclusive_time:this._attributes[g.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME],measurements:p.timedEventsToMeasurements(this._events),is_segment:this._isStandaloneSpan&&u.getRootSpan(this)===this||undefined,segment_id:this._isStandaloneSpan?u.getRootSpan(this).spanContext().spanId:undefined})}isRecording(){return!this._endTime&&!!this._sampled}addEvent(t,n,r){a.DEBUG_BUILD&&o.logger.log("[Tracing] Adding an event to span:",t);const i=isSpanTimeInput(n)?n:r||o.timestampInSeconds();const c=isSpanTimeInput(n)?{}:n||{};const l={name:t,time:u.spanTimeInputToSeconds(i),attributes:c};this._events.push(l);return this}isStandaloneSpan(){return!!this._isStandaloneSpan}_onSpanEnded(){const t=i.getClient();if(t){t.emit("spanEnd",this)}const n=this._isStandaloneSpan||this===u.getRootSpan(this);if(!n){return}if(this._isStandaloneSpan){sendSpanEnvelope(c.createSpanEnvelope([this],t));return}const r=this._convertSpanToTransaction();if(r){const t=m.getCapturedScopesOnSpan(this).scope||i.getCurrentScope();t.captureEvent(r)}}_convertSpanToTransaction(){if(!isFullFinishedSpan(u.spanToJSON(this))){return undefined}if(!this._name){a.DEBUG_BUILD&&o.logger.warn("Transaction has no name, falling back to `<unlabeled transaction>`.");this._name="<unlabeled transaction>"}const{scope:t,isolationScope:n}=m.getCapturedScopesOnSpan(this);const r=t||i.getCurrentScope();const c=r.getClient()||i.getClient();if(this._sampled!==true){a.DEBUG_BUILD&&o.logger.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled.");if(c){c.recordDroppedEvent("sample_rate","transaction")}return undefined}const I=u.getSpanDescendants(this).filter(t=>t!==this&&!isStandaloneSpan(t));const b=I.map(t=>u.spanToJSON(t)).filter(isFullFinishedSpan);const h=this._attributes[g.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const f={contexts:{trace:u.spanToTransactionTraceContext(this)},spans:b.length>C?b.sort((t,n)=>t.start_timestamp-n.start_timestamp).slice(0,C):b,start_timestamp:this._startTime,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:t,capturedSpanIsolationScope:n,...o.dropUndefinedKeys({dynamicSamplingContext:d.getDynamicSamplingContextFromSpan(this)})},_metrics_summary:l.getMetricSummaryJsonForSpan(this),...h&&{transaction_info:{source:h}}};const y=p.timedEventsToMeasurements(this._events);const G=y&&Object.keys(y).length;if(G){a.DEBUG_BUILD&&o.logger.log("[Measurements] Adding measurements to transaction",JSON.stringify(y,undefined,2));f.measurements=y}return f}}function isSpanTimeInput(t){return t&&typeof t==="number"||t instanceof Date||Array.isArray(t)}function isFullFinishedSpan(t){return!!t.start_timestamp&&!!t.timestamp&&!!t.span_id&&!!t.trace_id}function isStandaloneSpan(t){return t instanceof SentrySpan&&t.isStandaloneSpan()}function sendSpanEnvelope(t){const n=i.getClient();if(!n){return}const r=t[1];if(!r||r.length===0){n.recordDroppedEvent("before_send","span");return}const c=n.getTransport();if(c){c.send(t).then(null,t=>{a.DEBUG_BUILD&&o.logger.error("Error while sending span:",t)})}}n.SentrySpan=SentrySpan},8033:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=0;const o=1;const i=2;function getSpanStatusFromHttpCode(t){if(t<400&&t>=100){return{code:o}}if(t>=400&&t<500){switch(t){case 401:return{code:i,message:"unauthenticated"};case 403:return{code:i,message:"permission_denied"};case 404:return{code:i,message:"not_found"};case 409:return{code:i,message:"already_exists"};case 413:return{code:i,message:"failed_precondition"};case 429:return{code:i,message:"resource_exhausted"};case 499:return{code:i,message:"cancelled"};default:return{code:i,message:"invalid_argument"}}}if(t>=500&&t<600){switch(t){case 501:return{code:i,message:"unimplemented"};case 503:return{code:i,message:"unavailable"};case 504:return{code:i,message:"deadline_exceeded"};default:return{code:i,message:"internal_error"}}}return{code:i,message:"unknown_error"}}function setHttpStatus(t,n){t.setAttribute("http.response.status_code",n);const r=getSpanStatusFromHttpCode(n);if(r.message!=="unknown_error"){t.setStatus(r)}}n.SPAN_STATUS_ERROR=i;n.SPAN_STATUS_OK=o;n.SPAN_STATUS_UNSET=r;n.getSpanStatusFromHttpCode=getSpanStatusFromHttpCode;n.setHttpStatus=setHttpStatus},1691:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(6515);const a=r(2319);const c=r(6395);const l=r(4057);const g=r(4606);const u=r(6991);const d=r(4358);const I=r(5350);const p=r(24);const m=r(8511);const C=r(8167);const b=r(4174);const h=r(9561);const f=r(9527);const y=r(8033);const G=r(5767);const B="__SENTRY_SUPPRESS_TRACING__";function startSpan(t,n){const r=getAcs();if(r.startSpan){return r.startSpan(t,n)}const o=normalizeContext(t);return a.withScope(t.scope,r=>{const i=getParentSpan(r);const a=t.onlyIfParent&&!i;const c=a?new h.SentryNonRecordingSpan:createChildOrRootSpan({parentSpan:i,spanContext:o,forceTransaction:t.forceTransaction,scope:r});I._setSpanForScope(r,c);return u.handleCallbackErrors(()=>n(c),()=>{const{status:t}=p.spanToJSON(c);if(c.isRecording()&&(!t||t==="ok")){c.setStatus({code:y.SPAN_STATUS_ERROR,message:"internal_error"})}},()=>c.end())})}function startSpanManual(t,n){const r=getAcs();if(r.startSpanManual){return r.startSpanManual(t,n)}const o=normalizeContext(t);return a.withScope(t.scope,r=>{const i=getParentSpan(r);const a=t.onlyIfParent&&!i;const c=a?new h.SentryNonRecordingSpan:createChildOrRootSpan({parentSpan:i,spanContext:o,forceTransaction:t.forceTransaction,scope:r});I._setSpanForScope(r,c);function finishAndSetSpan(){c.end()}return u.handleCallbackErrors(()=>n(c,finishAndSetSpan),()=>{const{status:t}=p.spanToJSON(c);if(c.isRecording()&&(!t||t==="ok")){c.setStatus({code:y.SPAN_STATUS_ERROR,message:"internal_error"})}})})}function startInactiveSpan(t){const n=getAcs();if(n.startInactiveSpan){return n.startInactiveSpan(t)}const r=normalizeContext(t);const o=t.scope||a.getCurrentScope();const i=getParentSpan(o);const c=t.onlyIfParent&&!i;if(c){return new h.SentryNonRecordingSpan}return createChildOrRootSpan({parentSpan:i,spanContext:r,forceTransaction:t.forceTransaction,scope:o})}const continueTrace=({sentryTrace:t,baggage:n},r)=>a.withScope(i=>{const a=o.propagationContextFromHeaders(t,n);i.setPropagationContext(a);return r()});function withActiveSpan(t,n){const r=getAcs();if(r.withActiveSpan){return r.withActiveSpan(t,n)}return a.withScope(r=>{I._setSpanForScope(r,t||undefined);return n(r)})}function suppressTracing(t){const n=getAcs();if(n.suppressTracing){return n.suppressTracing(t)}return a.withScope(n=>{n.setSDKProcessingMetadata({[B]:true});return t()})}function startNewTrace(t){return a.withScope(n=>{n.setPropagationContext(o.generatePropagationContext());l.DEBUG_BUILD&&o.logger.info(`Starting a new trace with id ${n.getPropagationContext().traceId}`);return withActiveSpan(null,t)})}function createChildOrRootSpan({parentSpan:t,spanContext:n,forceTransaction:r,scope:o}){if(!d.hasTracingEnabled()){return new h.SentryNonRecordingSpan}const i=a.getIsolationScope();let c;if(t&&!r){c=_startChildSpan(t,o,n);p.addChildSpanToSpan(t,c)}else if(t){const r=m.getDynamicSamplingContextFromSpan(t);const{traceId:i,spanId:a}=t.spanContext();const l=p.spanIsSampled(t);c=_startRootSpan({traceId:i,parentSpanId:a,...n},o,l);m.freezeDscOnSpan(c,r)}else{const{traceId:t,dsc:r,parentSpanId:a,sampled:l}={...i.getPropagationContext(),...o.getPropagationContext()};c=_startRootSpan({traceId:t,parentSpanId:a,...n},o,l);if(r){m.freezeDscOnSpan(c,r)}}C.logSpanStart(c);G.setCapturedScopesOnSpan(c,o,i);return c}function normalizeContext(t){const n=t.experimental||{};const r={isStandalone:n.standalone,...t};if(t.startTime){const n={...r};n.startTimestamp=p.spanTimeInputToSeconds(t.startTime);delete n.startTime;return n}return r}function getAcs(){const t=i.getMainCarrier();return c.getAsyncContextStrategy(t)}function _startRootSpan(t,n,r){const o=a.getClient();const i=o&&o.getOptions()||{};const{name:c="",attributes:l}=t;const[u,d]=n.getScopeData().sdkProcessingMetadata[B]?[false]:b.sampleSpan(i,{name:c,parentSampled:r,attributes:l,transactionContext:{name:c,parentSampled:r}});const I=new f.SentrySpan({...t,attributes:{[g.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"custom",...t.attributes},sampled:u});if(d!==undefined){I.setAttribute(g.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,d)}if(o){o.emit("spanStart",I)}return I}function _startChildSpan(t,n,r){const{spanId:o,traceId:i}=t.spanContext();const c=n.getScopeData().sdkProcessingMetadata[B]?false:p.spanIsSampled(t);const l=c?new f.SentrySpan({...r,parentSpanId:o,traceId:i,sampled:c}):new h.SentryNonRecordingSpan({traceId:i});p.addChildSpanToSpan(t,l);const g=a.getClient();if(g){g.emit("spanStart",l);if(r.endTimestamp){g.emit("spanEnd",l)}}return l}function getParentSpan(t){const n=I._getSpanForScope(t);if(!n){return undefined}const r=a.getClient();const o=r?r.getOptions():{};if(o.parentSpanIsAlwaysRootSpan){return p.getRootSpan(n)}return n}n.continueTrace=continueTrace;n.startInactiveSpan=startInactiveSpan;n.startNewTrace=startNewTrace;n.startSpan=startSpan;n.startSpanManual=startSpanManual;n.suppressTracing=suppressTracing;n.withActiveSpan=withActiveSpan},5767:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i="_sentryScope";const a="_sentryIsolationScope";function setCapturedScopesOnSpan(t,n,r){if(t){o.addNonEnumerableProperty(t,a,r);o.addNonEnumerableProperty(t,i,n)}}function getCapturedScopesOnSpan(t){return{scope:t[i],isolationScope:t[a]}}n.stripUrlQueryAndFragment=o.stripUrlQueryAndFragment;n.getCapturedScopesOnSpan=getCapturedScopesOnSpan;n.setCapturedScopesOnSpan=setCapturedScopesOnSpan},7061:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);const a=64;function createTransport(t,n,r=o.makePromiseBuffer(t.bufferSize||a)){let c={};const flush=t=>r.drain(t);function send(a){const l=[];o.forEachEnvelopeItem(a,(n,r)=>{const i=o.envelopeItemTypeToDataCategory(r);if(o.isRateLimited(c,i)){const o=getEventForEnvelopeItem(n,r);t.recordDroppedEvent("ratelimit_backoff",i,o)}else{l.push(n)}});if(l.length===0){return o.resolvedSyncPromise({})}const g=o.createEnvelope(a[0],l);const recordEnvelopeLoss=n=>{o.forEachEnvelopeItem(g,(r,i)=>{const a=getEventForEnvelopeItem(r,i);t.recordDroppedEvent(n,o.envelopeItemTypeToDataCategory(i),a)})};const requestTask=()=>n({body:o.serializeEnvelope(g)}).then(t=>{if(t.statusCode!==undefined&&(t.statusCode<200||t.statusCode>=300)){i.DEBUG_BUILD&&o.logger.warn(`Sentry responded with status code ${t.statusCode} to sent event.`)}c=o.updateRateLimits(c,t);return t},t=>{recordEnvelopeLoss("network_error");throw t});return r.add(requestTask).then(t=>t,t=>{if(t instanceof o.SentryError){i.DEBUG_BUILD&&o.logger.error("Skipped sending event because buffer is full.");recordEnvelopeLoss("queue_overflow");return o.resolvedSyncPromise({})}else{throw t}})}return{send:send,flush:flush}}function getEventForEnvelopeItem(t,n){if(n!=="event"&&n!=="transaction"){return undefined}return Array.isArray(t)?t[1]:undefined}n.DEFAULT_TRANSPORT_BUFFER_SIZE=a;n.createTransport=createTransport},4543:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(9431);function eventFromEnvelope(t,n){let r;o.forEachEnvelopeItem(t,(t,o)=>{if(n.includes(o)){r=Array.isArray(t)?t[1]:undefined}return!!r});return r}function makeOverrideReleaseTransport(t,n){return r=>{const o=t(r);return{...o,send:async t=>{const r=eventFromEnvelope(t,["event","transaction","profile","replay_event"]);if(r){r.release=n}return o.send(t)}}}}function overrideDsn(t,n){return o.createEnvelope(n?{...t[0],dsn:n}:t[0],t[1])}function makeMultiplexedTransport(t,n){return r=>{const a=t(r);const c=new Map;function getTransport(n,a){const l=a?`${n}:${a}`:n;let g=c.get(l);if(!g){const u=o.dsnFromString(n);if(!u){return undefined}const d=i.getEnvelopeEndpointWithUrlEncodedAuth(u,r.tunnel);g=a?makeOverrideReleaseTransport(t,a)({...r,url:d}):t({...r,url:d});c.set(l,g)}return[n,g]}async function send(t){function getEvent(n){const r=n&&n.length?n:["event"];return eventFromEnvelope(t,r)}const r=n({envelope:t,getEvent:getEvent}).map(t=>{if(typeof t==="string"){return getTransport(t,undefined)}else{return getTransport(t.dsn,t.release)}}).filter(t=>!!t);if(r.length===0){r.push(["",a])}const o=await Promise.all(r.map(([n,r])=>r.send(overrideDsn(t,n))));return o[0]}async function flush(t){const n=[...c.values(),a];const r=await Promise.all(n.map(n=>n.flush(t)));return r.every(t=>t)}return{send:send,flush:flush}}}n.eventFromEnvelope=eventFromEnvelope;n.makeMultiplexedTransport=makeMultiplexedTransport},9673:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);const a=100;const c=5e3;const l=36e5;function makeOfflineTransport(t){function log(...t){i.DEBUG_BUILD&&o.logger.info("[Offline]:",...t)}return n=>{const r=t(n);if(!n.createStore){throw new Error("No `createStore` function was provided")}const i=n.createStore(n);let g=c;let u;function shouldQueue(t,r,i){if(o.envelopeContainsItemType(t,["client_report"])){return false}if(n.shouldStore){return n.shouldStore(t,r,i)}return true}function flushIn(t){if(u){clearTimeout(u)}u=setTimeout(async()=>{u=undefined;const t=await i.shift();if(t){log("Attempting to send previously queued event");t[0].sent_at=(new Date).toISOString();void send(t,true).catch(t=>{log("Failed to retry sending",t)})}},t);if(typeof u!=="number"&&u.unref){u.unref()}}function flushWithBackOff(){if(u){return}flushIn(g);g=Math.min(g*2,l)}async function send(t,n=false){if(!n&&o.envelopeContainsItemType(t,["replay_event","replay_recording"])){await i.push(t);flushIn(a);return{}}try{const n=await r.send(t);let i=a;if(n){if(n.headers&&n.headers["retry-after"]){i=o.parseRetryAfterHeader(n.headers["retry-after"])}else if(n.headers&&n.headers["x-sentry-rate-limits"]){i=6e4}else if((n.statusCode||0)>=400){return n}}flushIn(i);g=c;return n}catch(r){if(await shouldQueue(t,r,g)){if(n){await i.unshift(t)}else{await i.push(t)}flushWithBackOff();log("Error sending. Event queued.",r);return{}}else{throw r}}}if(n.flushAtStartup){flushWithBackOff()}return{send:send,flush:t=>r.flush(t)}}}n.MIN_DELAY=a;n.START_DELAY=c;n.makeOfflineTransport=makeOfflineTransport},3116:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2319);const a=r(1004);const c=r(4606);r(571);r(4057);const l=r(1691);const g={mechanism:{handled:false,data:{function:"trpcMiddleware"}}};function trpcMiddleware(t={}){return function(n){const{path:r,type:u,next:d,rawInput:I}=n;const p=i.getClient();const m=p&&p.getOptions();const C={procedure_type:u};if(t.attachRpcInput!==undefined?t.attachRpcInput:m&&m.sendDefaultPii){C.input=o.normalize(I)}a.setContext("trpc",C);function captureIfError(t){if(typeof t==="object"&&t!==null&&"ok"in t&&!t.ok&&"error"in t){a.captureException(t.error,g)}}return l.startSpanManual({name:`trpc/${r}`,op:"rpc.server",attributes:{[c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.rpc.trpc"}},t=>{let n;try{n=d()}catch(n){a.captureException(n,g);t.end();throw n}if(o.isThenable(n)){return n.then(n=>{captureIfError(n);t.end();return n},n=>{a.captureException(n,g);t.end();throw n})}else{captureIfError(n);t.end();return n}})}}n.trpcMiddleware=trpcMiddleware},518:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(8511);const a=r(24);function applyScopeDataToEvent(t,n){const{fingerprint:r,span:o,breadcrumbs:i,sdkProcessingMetadata:a}=n;applyDataToEvent(t,n);if(o){applySpanToEvent(t,o)}applyFingerprintToEvent(t,r);applyBreadcrumbsToEvent(t,i);applySdkMetadataToEvent(t,a)}function mergeScopeData(t,n){const{extra:r,tags:o,user:i,contexts:a,level:c,sdkProcessingMetadata:l,breadcrumbs:g,fingerprint:u,eventProcessors:d,attachments:I,propagationContext:p,transactionName:m,span:C}=n;mergeAndOverwriteScopeData(t,"extra",r);mergeAndOverwriteScopeData(t,"tags",o);mergeAndOverwriteScopeData(t,"user",i);mergeAndOverwriteScopeData(t,"contexts",a);mergeAndOverwriteScopeData(t,"sdkProcessingMetadata",l);if(c){t.level=c}if(m){t.transactionName=m}if(C){t.span=C}if(g.length){t.breadcrumbs=[...t.breadcrumbs,...g]}if(u.length){t.fingerprint=[...t.fingerprint,...u]}if(d.length){t.eventProcessors=[...t.eventProcessors,...d]}if(I.length){t.attachments=[...t.attachments,...I]}t.propagationContext={...t.propagationContext,...p}}function mergeAndOverwriteScopeData(t,n,r){if(r&&Object.keys(r).length){t[n]={...t[n]};for(const o in r){if(Object.prototype.hasOwnProperty.call(r,o)){t[n][o]=r[o]}}}}function applyDataToEvent(t,n){const{extra:r,tags:i,user:a,contexts:c,level:l,transactionName:g}=n;const u=o.dropUndefinedKeys(r);if(u&&Object.keys(u).length){t.extra={...u,...t.extra}}const d=o.dropUndefinedKeys(i);if(d&&Object.keys(d).length){t.tags={...d,...t.tags}}const I=o.dropUndefinedKeys(a);if(I&&Object.keys(I).length){t.user={...I,...t.user}}const p=o.dropUndefinedKeys(c);if(p&&Object.keys(p).length){t.contexts={...p,...t.contexts}}if(l){t.level=l}if(g&&t.type!=="transaction"){t.transaction=g}}function applyBreadcrumbsToEvent(t,n){const r=[...t.breadcrumbs||[],...n];t.breadcrumbs=r.length?r:undefined}function applySdkMetadataToEvent(t,n){t.sdkProcessingMetadata={...t.sdkProcessingMetadata,...n}}function applySpanToEvent(t,n){t.contexts={trace:a.spanToTraceContext(n),...t.contexts};t.sdkProcessingMetadata={dynamicSamplingContext:i.getDynamicSamplingContextFromSpan(n),...t.sdkProcessingMetadata};const r=a.getRootSpan(n);const o=a.spanToJSON(r).description;if(o&&!t.transaction&&t.type==="transaction"){t.transaction=o}}function applyFingerprintToEvent(t,n){t.fingerprint=t.fingerprint?o.arrayify(t.fingerprint):[];if(n){t.fingerprint=t.fingerprint.concat(n)}if(t.fingerprint&&!t.fingerprint.length){delete t.fingerprint}}n.applyScopeDataToEvent=applyScopeDataToEvent;n.mergeAndOverwriteScopeData=mergeAndOverwriteScopeData;n.mergeScopeData=mergeScopeData},6991:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);function handleCallbackErrors(t,n,r=()=>{}){let o;try{o=t()}catch(t){n(t);r();throw t}return maybeHandlePromiseRejection(o,n,r)}function maybeHandlePromiseRejection(t,n,r){if(o.isThenable(t)){return t.then(t=>{r();return t},t=>{n(t);r();throw t})}r();return t}n.handleCallbackErrors=handleCallbackErrors},4358:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2319);function hasTracingEnabled(t){if(typeof __SENTRY_TRACING__==="boolean"&&!__SENTRY_TRACING__){return false}const n=t||getClientOptions();return!!n&&(n.enableTracing||"tracesSampleRate"in n||"tracesSampler"in n)}function getClientOptions(){const t=o.getClient();return t&&t.getOptions()}n.hasTracingEnabled=hasTracingEnabled},2472:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isSentryRequestUrl(t,n){const r=n&&n.getDsn();const o=n&&n.getOptions().tunnel;return checkDsn(t,r)||checkTunnel(t,o)}function checkTunnel(t,n){if(!n){return false}return removeTrailingSlash(t)===removeTrailingSlash(n)}function checkDsn(t,n){return n?t.includes(n.host):false}function removeTrailingSlash(t){return t[t.length-1]==="/"?t.slice(0,-1):t}n.isSentryRequestUrl=isSentryRequestUrl},7866:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parameterize(t,...n){const r=new String(String.raw(t,...n));r.__sentry_template_string__=t.join("\0").replace(/%/g,"%%").replace(/\0/g,"%s");r.__sentry_template_values__=n;return r}n.parameterize=parameterize},9306:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(4057);function parseSampleRate(t){if(typeof t==="boolean"){return Number(t)}const n=typeof t==="string"?parseFloat(t):t;if(typeof n!=="number"||isNaN(n)||n<0||n>1){i.DEBUG_BUILD&&o.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(t)} of type ${JSON.stringify(typeof t)}.`);return undefined}return n}n.parseSampleRate=parseSampleRate},9076:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(2902);const a=r(2319);const c=r(6430);const l=r(179);const g=r(518);function prepareEvent(t,n,r,i,l,u){const{normalizeDepth:d=3,normalizeMaxBreadth:I=1e3}=t;const p={...n,event_id:n.event_id||r.event_id||o.uuid4(),timestamp:n.timestamp||o.dateTimestampInSeconds()};const m=r.integrations||t.integrations.map(t=>t.name);applyClientOptions(p,t);applyIntegrationsMetadata(p,m);if(n.type===undefined){applyDebugIds(p,t.stackParser)}const C=getFinalScope(i,r.captureContext);if(r.mechanism){o.addExceptionMechanism(p,r.mechanism)}const b=l?l.getEventProcessors():[];const h=a.getGlobalScope().getScopeData();if(u){const t=u.getScopeData();g.mergeScopeData(h,t)}if(C){const t=C.getScopeData();g.mergeScopeData(h,t)}const f=[...r.attachments||[],...h.attachments];if(f.length){r.attachments=f}g.applyScopeDataToEvent(p,h);const y=[...b,...h.eventProcessors];const G=c.notifyEventProcessors(y,p,r);return G.then(t=>{if(t){applyDebugMeta(t)}if(typeof d==="number"&&d>0){return normalizeEvent(t,d,I)}return t})}function applyClientOptions(t,n){const{environment:r,release:a,dist:c,maxValueLength:l=250}=n;if(!("environment"in t)){t.environment="environment"in n?r:i.DEFAULT_ENVIRONMENT}if(t.release===undefined&&a!==undefined){t.release=a}if(t.dist===undefined&&c!==undefined){t.dist=c}if(t.message){t.message=o.truncate(t.message,l)}const g=t.exception&&t.exception.values&&t.exception.values[0];if(g&&g.value){g.value=o.truncate(g.value,l)}const u=t.request;if(u&&u.url){u.url=o.truncate(u.url,l)}}const u=new WeakMap;function applyDebugIds(t,n){const r=o.GLOBAL_OBJ._sentryDebugIds;if(!r){return}let i;const a=u.get(n);if(a){i=a}else{i=new Map;u.set(n,i)}const c=Object.keys(r).reduce((t,o)=>{let a;const c=i.get(o);if(c){a=c}else{a=n(o);i.set(o,a)}for(let n=a.length-1;n>=0;n--){const i=a[n];if(i.filename){t[i.filename]=r[o];break}}return t},{});try{t.exception.values.forEach(t=>{t.stacktrace.frames.forEach(t=>{if(t.filename){t.debug_id=c[t.filename]}})})}catch(t){}}function applyDebugMeta(t){const n={};try{t.exception.values.forEach(t=>{t.stacktrace.frames.forEach(t=>{if(t.debug_id){if(t.abs_path){n[t.abs_path]=t.debug_id}else if(t.filename){n[t.filename]=t.debug_id}delete t.debug_id}})})}catch(t){}if(Object.keys(n).length===0){return}t.debug_meta=t.debug_meta||{};t.debug_meta.images=t.debug_meta.images||[];const r=t.debug_meta.images;Object.keys(n).forEach(t=>{r.push({type:"sourcemap",code_file:t,debug_id:n[t]})})}function applyIntegrationsMetadata(t,n){if(n.length>0){t.sdk=t.sdk||{};t.sdk.integrations=[...t.sdk.integrations||[],...n]}}function normalizeEvent(t,n,r){if(!t){return null}const i={...t,...t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map(t=>({...t,...t.data&&{data:o.normalize(t.data,n,r)}}))},...t.user&&{user:o.normalize(t.user,n,r)},...t.contexts&&{contexts:o.normalize(t.contexts,n,r)},...t.extra&&{extra:o.normalize(t.extra,n,r)}};if(t.contexts&&t.contexts.trace&&i.contexts){i.contexts.trace=t.contexts.trace;if(t.contexts.trace.data){i.contexts.trace.data=o.normalize(t.contexts.trace.data,n,r)}}if(t.spans){i.spans=t.spans.map(t=>({...t,...t.data&&{data:o.normalize(t.data,n,r)}}))}return i}function getFinalScope(t,n){if(!n){return t}const r=t?t.clone():new l.Scope;r.update(n);return r}function parseEventHintOrCaptureContext(t){if(!t){return undefined}if(hintIsScopeOrFunction(t)){return{captureContext:t}}if(hintIsScopeContext(t)){return{captureContext:t}}return t}function hintIsScopeOrFunction(t){return t instanceof l.Scope||typeof t==="function"}const d=["user","level","extra","contexts","tags","fingerprint","requestSession","propagationContext"];function hintIsScopeContext(t){return Object.keys(t).some(t=>d.includes(t))}n.applyDebugIds=applyDebugIds;n.applyDebugMeta=applyDebugMeta;n.parseEventHintOrCaptureContext=parseEventHintOrCaptureContext;n.prepareEvent=prepareEvent},2088:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);function applySdkMetadata(t,n,r=[n],i="npm"){const a=t._metadata||{};if(!a.sdk){a.sdk={name:`sentry.javascript.${n}`,packages:r.map(t=>({name:`${i}:@sentry/${t}`,version:o.SDK_VERSION})),version:o.SDK_VERSION}}t._metadata=a}n.applySdkMetadata=applySdkMetadata},5350:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i="_sentrySpan";function _setSpanForScope(t,n){if(n){o.addNonEnumerableProperty(t,i,n)}else{delete t[i]}}function _getSpanForScope(t){return t[i]}n._getSpanForScope=_getSpanForScope;n._setSpanForScope=_setSpanForScope},24:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1655);const i=r(6395);const a=r(6515);const c=r(2319);const l=r(3200);const g=r(4606);const u=r(8033);const d=r(5350);const I=0;const p=1;function spanToTransactionTraceContext(t){const{spanId:n,traceId:r}=t.spanContext();const{data:i,op:a,parent_span_id:c,status:l,origin:g}=spanToJSON(t);return o.dropUndefinedKeys({parent_span_id:c,span_id:n,trace_id:r,data:i,op:a,status:l,origin:g})}function spanToTraceContext(t){const{spanId:n,traceId:r}=t.spanContext();const{parent_span_id:i}=spanToJSON(t);return o.dropUndefinedKeys({parent_span_id:i,span_id:n,trace_id:r})}function spanToTraceHeader(t){const{traceId:n,spanId:r}=t.spanContext();const i=spanIsSampled(t);return o.generateSentryTraceHeader(n,r,i)}function spanTimeInputToSeconds(t){if(typeof t==="number"){return ensureTimestampInSeconds(t)}if(Array.isArray(t)){return t[0]+t[1]/1e9}if(t instanceof Date){return ensureTimestampInSeconds(t.getTime())}return o.timestampInSeconds()}function ensureTimestampInSeconds(t){const n=t>9999999999;return n?t/1e3:t}function spanToJSON(t){if(spanIsSentrySpan(t)){return t.getSpanJSON()}try{const{spanId:n,traceId:r}=t.spanContext();if(spanIsOpenTelemetrySdkTraceBaseSpan(t)){const{attributes:i,startTime:a,name:c,endTime:u,parentSpanId:d,status:I}=t;return o.dropUndefinedKeys({span_id:n,trace_id:r,data:i,description:c,parent_span_id:d,start_timestamp:spanTimeInputToSeconds(a),timestamp:spanTimeInputToSeconds(u)||undefined,status:getStatusMessage(I),op:i[g.SEMANTIC_ATTRIBUTE_SENTRY_OP],origin:i[g.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN],_metrics_summary:l.getMetricSummaryJsonForSpan(t)})}return{span_id:n,trace_id:r}}catch(t){return{}}}function spanIsOpenTelemetrySdkTraceBaseSpan(t){const n=t;return!!n.attributes&&!!n.startTime&&!!n.name&&!!n.endTime&&!!n.status}function spanIsSentrySpan(t){return typeof t.getSpanJSON==="function"}function spanIsSampled(t){const{traceFlags:n}=t.spanContext();return n===p}function getStatusMessage(t){if(!t||t.code===u.SPAN_STATUS_UNSET){return undefined}if(t.code===u.SPAN_STATUS_OK){return"ok"}return t.message||"unknown_error"}const m="_sentryChildSpans";const C="_sentryRootSpan";function addChildSpanToSpan(t,n){const r=t[C]||t;o.addNonEnumerableProperty(n,C,r);if(t[m]){t[m].add(n)}else{o.addNonEnumerableProperty(t,m,new Set([n]))}}function removeChildSpanFromSpan(t,n){if(t[m]){t[m].delete(n)}}function getSpanDescendants(t){const n=new Set;function addSpanChildren(t){if(n.has(t)){return}else if(spanIsSampled(t)){n.add(t);const r=t[m]?Array.from(t[m]):[];for(const t of r){addSpanChildren(t)}}}addSpanChildren(t);return Array.from(n)}function getRootSpan(t){return t[C]||t}function getActiveSpan(){const t=a.getMainCarrier();const n=i.getAsyncContextStrategy(t);if(n.getActiveSpan){return n.getActiveSpan()}return d._getSpanForScope(c.getCurrentScope())}function updateMetricSummaryOnActiveSpan(t,n,r,o,i,a){const c=getActiveSpan();if(c){l.updateMetricSummaryOnSpan(c,t,n,r,o,i,a)}}n.TRACE_FLAG_NONE=I;n.TRACE_FLAG_SAMPLED=p;n.addChildSpanToSpan=addChildSpanToSpan;n.getActiveSpan=getActiveSpan;n.getRootSpan=getRootSpan;n.getSpanDescendants=getSpanDescendants;n.getStatusMessage=getStatusMessage;n.removeChildSpanFromSpan=removeChildSpanFromSpan;n.spanIsSampled=spanIsSampled;n.spanTimeInputToSeconds=spanTimeInputToSeconds;n.spanToJSON=spanToJSON;n.spanToTraceContext=spanToTraceContext;n.spanToTraceHeader=spanToTraceHeader;n.spanToTransactionTraceContext=spanToTransactionTraceContext;n.updateMetricSummaryOnActiveSpan=updateMetricSummaryOnActiveSpan},3267:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a="CaptureConsole";const _captureConsoleIntegration=(t={})=>{const n=t.levels||i.CONSOLE_LEVELS;return{name:a,setupOnce(){},setup(t){if(!("console"in i.GLOBAL_OBJ)){return}i.addConsoleInstrumentationHandler(({args:r,level:i})=>{if(o.getClient()!==t||!n.includes(i)){return}consoleHandler(r,i)})}}};const c=o.defineIntegration(_captureConsoleIntegration);const l=o.convertIntegrationFnToClass(a,c);function consoleHandler(t,n){const r={level:i.severityLevelFromString(n),extra:{arguments:t}};o.withScope(a=>{a.addEventProcessor(t=>{t.logger="console";i.addExceptionMechanism(t,{handled:false,type:"console"});return t});if(n==="assert"&&t[0]===false){const n=`Assertion failed: ${i.safeJoin(t.slice(1)," ")||"console.assert"}`;a.setExtra("arguments",t.slice(1));o.captureMessage(n,r);return}const c=t.find(t=>t instanceof Error);if(n==="error"&&c){o.captureException(c,r);return}const l=i.safeJoin(t," ");o.captureMessage(l,r)})}n.CaptureConsole=l;n.captureConsoleIntegration=c},3406:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=i.GLOBAL_OBJ;const c=7;const l="ContextLines";const _contextLinesIntegration=(t={})=>{const n=t.frameContextLines!=null?t.frameContextLines:c;return{name:l,setupOnce(){},processEvent(t){return addSourceContext(t,n)}}};const g=o.defineIntegration(_contextLinesIntegration);const u=o.convertIntegrationFnToClass(l,g);function addSourceContext(t,n){const r=a.document;const o=a.location&&i.stripUrlQueryAndFragment(a.location.href);if(!r||!o){return t}const c=t.exception&&t.exception.values;if(!c||!c.length){return t}const l=r.documentElement.innerHTML;if(!l){return t}const g=["<!DOCTYPE html>","<html>",...l.split("\n"),"</html>"];c.forEach(t=>{const r=t.stacktrace;if(r&&r.frames){r.frames=r.frames.map(t=>applySourceContextToFrame(t,g,o,n))}});return t}function applySourceContextToFrame(t,n,r,o){if(t.filename!==r||!t.lineno||!n.length){return t}i.addContextToFrame(n,t,o);return t}n.ContextLines=u;n.applySourceContextToFrame=applySourceContextToFrame;n.contextLinesIntegration=g},924:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=r},6369:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a="Debug";const _debugIntegration=(t={})=>{const n={debugger:false,stringify:false,...t};return{name:a,setupOnce(){},setup(t){if(!t.on){return}t.on("beforeSendEvent",(t,r)=>{if(n.debugger){debugger}i.consoleSandbox(()=>{if(n.stringify){console.log(JSON.stringify(t,null,2));if(r&&Object.keys(r).length){console.log(JSON.stringify(r,null,2))}}else{console.log(t);if(r&&Object.keys(r).length){console.log(r)}}})})}}};const c=o.defineIntegration(_debugIntegration);const l=o.convertIntegrationFnToClass(a,c);n.Debug=l;n.debugIntegration=c},6311:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(924);const c="Dedupe";const _dedupeIntegration=()=>{let t;return{name:c,setupOnce(){},processEvent(n){if(n.type){return n}try{if(_shouldDropEvent(n,t)){a.DEBUG_BUILD&&i.logger.warn("Event dropped due to being a duplicate of previously captured event.");return null}}catch(t){}return t=n}}};const l=o.defineIntegration(_dedupeIntegration);const g=o.convertIntegrationFnToClass(c,l);function _shouldDropEvent(t,n){if(!n){return false}if(_isSameMessageEvent(t,n)){return true}if(_isSameExceptionEvent(t,n)){return true}return false}function _isSameMessageEvent(t,n){const r=t.message;const o=n.message;if(!r&&!o){return false}if(r&&!o||!r&&o){return false}if(r!==o){return false}if(!_isSameFingerprint(t,n)){return false}if(!_isSameStacktrace(t,n)){return false}return true}function _isSameExceptionEvent(t,n){const r=_getExceptionFromEvent(n);const o=_getExceptionFromEvent(t);if(!r||!o){return false}if(r.type!==o.type||r.value!==o.value){return false}if(!_isSameFingerprint(t,n)){return false}if(!_isSameStacktrace(t,n)){return false}return true}function _isSameStacktrace(t,n){let r=_getFramesFromEvent(t);let o=_getFramesFromEvent(n);if(!r&&!o){return true}if(r&&!o||!r&&o){return false}r=r;o=o;if(o.length!==r.length){return false}for(let t=0;t<o.length;t++){const n=o[t];const i=r[t];if(n.filename!==i.filename||n.lineno!==i.lineno||n.colno!==i.colno||n.function!==i.function){return false}}return true}function _isSameFingerprint(t,n){let r=t.fingerprint;let o=n.fingerprint;if(!r&&!o){return true}if(r&&!o||!r&&o){return false}r=r;o=o;try{return!!(r.join("")===o.join(""))}catch(t){return false}}function _getExceptionFromEvent(t){return t.exception&&t.exception.values&&t.exception.values[0]}function _getFramesFromEvent(t){const n=t.exception;if(n){try{return n.values[0].stacktrace.frames}catch(t){return undefined}}return undefined}n.Dedupe=g;n._shouldDropEvent=_shouldDropEvent;n.dedupeIntegration=l},6200:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(924);const c="ExtraErrorData";const _extraErrorDataIntegration=(t={})=>{const n=t.depth||3;const r=t.captureErrorCause||false;return{name:c,setupOnce(){},processEvent(t,o){return _enhanceEventWithErrorData(t,o,n,r)}}};const l=o.defineIntegration(_extraErrorDataIntegration);const g=o.convertIntegrationFnToClass(c,l);function _enhanceEventWithErrorData(t,n={},r,o){if(!n.originalException||!i.isError(n.originalException)){return t}const a=n.originalException.name||n.originalException.constructor.name;const c=_extractErrorData(n.originalException,o);if(c){const n={...t.contexts};const o=i.normalize(c,r);if(i.isPlainObject(o)){i.addNonEnumerableProperty(o,"__sentry_skip_normalization__",true);n[a]=o}return{...t,contexts:n}}return t}function _extractErrorData(t,n){try{const r=["name","message","stack","line","column","fileName","lineNumber","columnNumber","toJSON"];const o={};for(const n of Object.keys(t)){if(r.indexOf(n)!==-1){continue}const a=t[n];o[n]=i.isError(a)?a.toString():a}if(n&&t.cause!==undefined){o.cause=i.isError(t.cause)?t.cause.toString():t.cause}if(typeof t.toJSON==="function"){const n=t.toJSON();for(const t of Object.keys(n)){const r=n[t];o[t]=i.isError(r)?r.toString():r}}return o}catch(t){a.DEBUG_BUILD&&i.logger.error("Unable to extract extra data from the Error object:",t)}return null}n.ExtraErrorData=g;n.extraErrorDataIntegration=l},4127:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(924);const c="HttpClient";const _httpClientIntegration=(t={})=>{const n={failedRequestStatusCodes:[[500,599]],failedRequestTargets:[/.*/],...t};return{name:c,setupOnce(){},setup(t){_wrapFetch(t,n);_wrapXHR(t,n)}}};const l=o.defineIntegration(_httpClientIntegration);const g=o.convertIntegrationFnToClass(c,l);function _fetchResponseHandler(t,n,r,c){if(_shouldCaptureResponse(t,r.status,r.url)){const t=_getRequest(n,c);let l,g,u,d;if(_shouldSendDefaultPii()){[{headers:l,cookies:u},{headers:g,cookies:d}]=[{cookieHeader:"Cookie",obj:t},{cookieHeader:"Set-Cookie",obj:r}].map(({cookieHeader:t,obj:n})=>{const r=_extractFetchHeaders(n.headers);let o;try{const n=r[t]||r[t.toLowerCase()]||undefined;if(n){o=_parseCookieString(n)}}catch(n){a.DEBUG_BUILD&&i.logger.log(`Could not extract cookies from header ${t}`)}return{headers:r,cookies:o}})}const I=_createEvent({url:t.url,method:t.method,status:r.status,requestHeaders:l,responseHeaders:g,requestCookies:u,responseCookies:d});o.captureEvent(I)}}function _xhrResponseHandler(t,n,r,c){if(_shouldCaptureResponse(t,n.status,n.responseURL)){let t,l,g;if(_shouldSendDefaultPii()){try{const t=n.getResponseHeader("Set-Cookie")||n.getResponseHeader("set-cookie")||undefined;if(t){l=_parseCookieString(t)}}catch(t){a.DEBUG_BUILD&&i.logger.log("Could not extract cookies from response headers")}try{g=_getXHRResponseHeaders(n)}catch(t){a.DEBUG_BUILD&&i.logger.log("Could not extract headers from response")}t=c}const u=_createEvent({url:n.responseURL,method:r,status:n.status,requestHeaders:t,responseHeaders:g,responseCookies:l});o.captureEvent(u)}}function _getResponseSizeFromHeaders(t){if(t){const n=t["Content-Length"]||t["content-length"];if(n){return parseInt(n,10)}}return undefined}function _parseCookieString(t){return t.split("; ").reduce((t,n)=>{const[r,o]=n.split("=");t[r]=o;return t},{})}function _extractFetchHeaders(t){const n={};t.forEach((t,r)=>{n[r]=t});return n}function _getXHRResponseHeaders(t){const n=t.getAllResponseHeaders();if(!n){return{}}return n.split("\r\n").reduce((t,n)=>{const[r,o]=n.split(": ");t[r]=o;return t},{})}function _isInGivenRequestTargets(t,n){return t.some(t=>{if(typeof t==="string"){return n.includes(t)}return t.test(n)})}function _isInGivenStatusRanges(t,n){return t.some(t=>{if(typeof t==="number"){return t===n}return n>=t[0]&&n<=t[1]})}function _wrapFetch(t,n){if(!i.supportsNativeFetch()){return}i.addFetchInstrumentationHandler(r=>{if(o.getClient()!==t){return}const{response:i,args:a}=r;const[c,l]=a;if(!i){return}_fetchResponseHandler(n,c,i,l)})}function _wrapXHR(t,n){if(!("XMLHttpRequest"in i.GLOBAL_OBJ)){return}i.addXhrInstrumentationHandler(r=>{if(o.getClient()!==t){return}const c=r.xhr;const l=c[i.SENTRY_XHR_DATA_KEY];if(!l){return}const{method:g,request_headers:u}=l;try{_xhrResponseHandler(n,c,g,u)}catch(t){a.DEBUG_BUILD&&i.logger.warn("Error while extracting response event form XHR response",t)}})}function _shouldCaptureResponse(t,n,r){return _isInGivenStatusRanges(t.failedRequestStatusCodes,n)&&_isInGivenRequestTargets(t.failedRequestTargets,r)&&!o.isSentryRequestUrl(r,o.getClient())}function _createEvent(t){const n=`HTTP Client Error with status code: ${t.status}`;const r={message:n,exception:{values:[{type:"Error",value:n}]},request:{url:t.url,method:t.method,headers:t.requestHeaders,cookies:t.requestCookies},contexts:{response:{status_code:t.status,headers:t.responseHeaders,cookies:t.responseCookies,body_size:_getResponseSizeFromHeaders(t.responseHeaders)}}};i.addExceptionMechanism(r,{type:"http.client",handled:false});return r}function _getRequest(t,n){if(!n&&t instanceof Request){return t}if(t instanceof Request&&t.bodyUsed){return t}return new Request(t,n)}function _shouldSendDefaultPii(){const t=o.getClient();return t?Boolean(t.getOptions().sendDefaultPii):false}n.HttpClient=g;n.httpClientIntegration=l},9654:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(3267);const i=r(6369);const a=r(6311);const c=r(6200);const l=r(5697);const g=r(5514);const u=r(7976);const d=r(2576);const I=r(2314);const p=r(4127);const m=r(3406);n.CaptureConsole=o.CaptureConsole;n.captureConsoleIntegration=o.captureConsoleIntegration;n.Debug=i.Debug;n.debugIntegration=i.debugIntegration;n.Dedupe=a.Dedupe;n.dedupeIntegration=a.dedupeIntegration;n.ExtraErrorData=c.ExtraErrorData;n.extraErrorDataIntegration=c.extraErrorDataIntegration;n.Offline=l.Offline;n.ReportingObserver=g.ReportingObserver;n.reportingObserverIntegration=g.reportingObserverIntegration;n.RewriteFrames=u.RewriteFrames;n.rewriteFramesIntegration=u.rewriteFramesIntegration;n.SessionTiming=d.SessionTiming;n.sessionTimingIntegration=d.sessionTimingIntegration;n.Transaction=I.Transaction;n.HttpClient=p.HttpClient;n.httpClientIntegration=p.httpClientIntegration;n.ContextLines=m.ContextLines;n.contextLinesIntegration=m.contextLinesIntegration},5697:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(8843);const a=r(924);const c=o.GLOBAL_OBJ;class Offline{static __initStatic(){this.id="Offline"}constructor(t={}){this.name=Offline.id;this.maxStoredEvents=t.maxStoredEvents||30;this.offlineEventStore=i.createInstance({name:"sentry/offlineEventStore"})}setupOnce(t,n){this.hub=n();if("addEventListener"in c){c.addEventListener("online",()=>{void this._sendEvents().catch(()=>{a.DEBUG_BUILD&&o.logger.warn("could not send cached events")})})}const eventProcessor=t=>{if(this.hub&&this.hub.getIntegration(Offline)){if("navigator"in c&&"onLine"in c.navigator&&!c.navigator.onLine){a.DEBUG_BUILD&&o.logger.log("Event dropped due to being a offline - caching instead");void this._cacheEvent(t).then(t=>this._enforceMaxEvents()).catch(t=>{a.DEBUG_BUILD&&o.logger.warn("could not cache event while offline")});return null}}return t};eventProcessor.id=this.name;t(eventProcessor);if("navigator"in c&&"onLine"in c.navigator&&c.navigator.onLine){void this._sendEvents().catch(()=>{a.DEBUG_BUILD&&o.logger.warn("could not send cached events")})}}async _cacheEvent(t){return this.offlineEventStore.setItem(o.uuid4(),o.normalize(t))}async _enforceMaxEvents(){const t=[];return this.offlineEventStore.iterate((n,r,o)=>{t.push({cacheKey:r,event:n})}).then(()=>this._purgeEvents(t.sort((t,n)=>(n.event.timestamp||0)-(t.event.timestamp||0)).slice(this.maxStoredEvents<t.length?this.maxStoredEvents:t.length).map(t=>t.cacheKey))).catch(t=>{a.DEBUG_BUILD&&o.logger.warn("could not enforce max events")})}async _purgeEvent(t){return this.offlineEventStore.removeItem(t)}async _purgeEvents(t){return Promise.all(t.map(t=>this._purgeEvent(t))).then()}async _sendEvents(){return this.offlineEventStore.iterate((t,n,r)=>{if(this.hub){this.hub.captureEvent(t);void this._purgeEvent(n).catch(t=>{a.DEBUG_BUILD&&o.logger.warn("could not purge event from cache")})}else{a.DEBUG_BUILD&&o.logger.warn("no hub found - could not send cached event")}})}}Offline.__initStatic();n.Offline=Offline},5514:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=i.GLOBAL_OBJ;const c="ReportingObserver";const l=new WeakMap;const _reportingObserverIntegration=(t={})=>{const n=t.types||["crash","deprecation","intervention"];function handler(t){if(!l.has(o.getClient())){return}for(const n of t){o.withScope(t=>{t.setExtra("url",n.url);const r=`ReportingObserver [${n.type}]`;let i="No details available";if(n.body){const r={};for(const t in n.body){r[t]=n.body[t]}t.setExtra("body",r);if(n.type==="crash"){const t=n.body;i=[t.crashId||"",t.reason||""].join(" ").trim()||i}else{const t=n.body;i=t.message||i}}o.captureMessage(`${r}: ${i}`)})}}return{name:c,setupOnce(){if(!i.supportsReportingObserver()){return}const t=new a.ReportingObserver(handler,{buffered:true,types:n});t.observe()},setup(t){l.set(t,true)}}};const g=o.defineIntegration(_reportingObserverIntegration);const u=o.convertIntegrationFnToClass(c,g);n.ReportingObserver=u;n.reportingObserverIntegration=g},7976:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a="RewriteFrames";const _rewriteFramesIntegration=(t={})=>{const n=t.root;const r=t.prefix||"app:///";const o=t.iteratee||(t=>{if(!t.filename){return t}const o=/^[a-zA-Z]:\\/.test(t.filename)||t.filename.includes("\\")&&!t.filename.includes("/");const a=/^\//.test(t.filename);if(o||a){const a=o?t.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):t.filename;const c=n?i.relative(n,a):i.basename(a);t.filename=`${r}${c}`}return t});function _processExceptionsEvent(t){try{return{...t,exception:{...t.exception,values:t.exception.values.map(t=>({...t,...t.stacktrace&&{stacktrace:_processStacktrace(t.stacktrace)}}))}}}catch(n){return t}}function _processStacktrace(t){return{...t,frames:t&&t.frames&&t.frames.map(t=>o(t))}}return{name:a,setupOnce(){},processEvent(t){let n=t;if(t.exception&&Array.isArray(t.exception.values)){n=_processExceptionsEvent(n)}return n}}};const c=o.defineIntegration(_rewriteFramesIntegration);const l=o.convertIntegrationFnToClass(a,c);n.RewriteFrames=l;n.rewriteFramesIntegration=c},2576:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i="SessionTiming";const _sessionTimingIntegration=()=>{const t=Date.now();return{name:i,setupOnce(){},processEvent(n){const r=Date.now();return{...n,extra:{...n.extra,["session:start"]:t,["session:duration"]:r-t,["session:end"]:r}}}}};const a=o.defineIntegration(_sessionTimingIntegration);const c=o.convertIntegrationFnToClass(i,a);n.SessionTiming=c;n.sessionTimingIntegration=a},2314:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i="Transaction";const transactionIntegration=()=>({name:i,setupOnce(){},processEvent(t){const n=_getFramesFromEvent(t);for(let r=n.length-1;r>=0;r--){const o=n[r];if(o.in_app===true){t.transaction=_getTransaction(o);break}}return t}});const a=o.convertIntegrationFnToClass(i,transactionIntegration);function _getFramesFromEvent(t){const n=t.exception&&t.exception.values&&t.exception.values[0];return n&&n.stacktrace&&n.stacktrace.frames||[]}function _getTransaction(t){return t.module||t.function?`${t.module||"?"}/${t.function||"?"}`:"<unknown>"}n.Transaction=a},7957:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(3167);const a=r(9090);function getActiveDomain(){return i.active}function getCurrentHub(){const t=getActiveDomain();if(!t){return undefined}a.ensureHubOnCarrier(t);return a.getHubFromCarrier(t)}function createNewHub(t){const n={};a.ensureHubOnCarrier(n,t);return a.getHubFromCarrier(n)}function runWithAsyncContext(t,n){const r=getActiveDomain();if(r&&o([n,"optionalAccess",t=>t.reuseExisting])){return t()}const c=i.create();const l=r?a.getHubFromCarrier(r):undefined;const g=createNewHub(l);a.setHubOnCarrier(c,g);return c.bind(()=>t())()}function setDomainAsyncContextStrategy(){a.setAsyncContextStrategy({getCurrentHub:getCurrentHub,runWithAsyncContext:runWithAsyncContext})}n.setDomainAsyncContextStrategy=setDomainAsyncContextStrategy},3185:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(290);let c;function setHooksAsyncContextStrategy(){if(!c){c=new a.AsyncLocalStorage}function getCurrentHub(){return c.getStore()}function createNewHub(t){const n={};i.ensureHubOnCarrier(n,t);return i.getHubFromCarrier(n)}function runWithAsyncContext(t,n){const r=getCurrentHub();if(r&&o([n,"optionalAccess",t=>t.reuseExisting])){return t()}const i=createNewHub(r);return c.run(i,()=>t())}i.setAsyncContextStrategy({getCurrentHub:getCurrentHub,runWithAsyncContext:runWithAsyncContext})}n.setHooksAsyncContextStrategy=setHooksAsyncContextStrategy},7813:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2374);const i=r(7957);const a=r(3185);function setNodeAsyncContextStrategy(){if(o.NODE_VERSION.major>=14){a.setHooksAsyncContextStrategy()}else{i.setDomainAsyncContextStrategy()}}n.setNodeAsyncContextStrategy=setNodeAsyncContextStrategy},8235:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(857);const i=r(9023);const a=r(9090);class NodeClient extends a.ServerRuntimeClient{constructor(t){a.applySdkMetadata(t,"node");t.transportOptions={textEncoder:new i.TextEncoder,...t.transportOptions};const n={...t,platform:"node",runtime:{name:"node",version:global.process.version},serverName:t.serverName||global.process.env.SENTRY_NAME||o.hostname()};super(n)}}n.NodeClient=NodeClient},6090:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];function replaceCronNames(t){return r.reduce((t,[n,r])=>t.replace(new RegExp(n,"gi"),r),t)}n.replaceCronNames=replaceCronNames},5907:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(6090);const a="Automatic instrumentation of CronJob only supports crontab string";function instrumentCron(t,n){let r=false;return new Proxy(t,{construct(t,c){const[l,g,u,d,I,...p]=c;if(typeof l!=="string"){throw new Error(a)}if(r){throw new Error(`A job named '${n}' has already been scheduled`)}r=true;const m=i.replaceCronNames(l);function monitoredTick(t,r){return o.withMonitor(n,()=>g(t,r),{schedule:{type:"crontab",value:m},timezone:I||undefined})}return new t(l,monitoredTick,u,d,I,...p)},get(t,c){if(c==="from"){return c=>{const{cronTime:l,onTick:g,timeZone:u}=c;if(typeof l!=="string"){throw new Error(a)}if(r){throw new Error(`A job named '${n}' has already been scheduled`)}r=true;const d=i.replaceCronNames(l);c.onTick=(t,r)=>o.withMonitor(n,()=>g(t,r),{schedule:{type:"crontab",value:d},timezone:u||undefined});return t.from(c)}}else{return t[c]}}})}n.instrumentCron=instrumentCron},4076:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(6090);function instrumentNodeCron(t){return new Proxy(t,{get(t,n){if(n==="schedule"&&t.schedule){return new Proxy(t.schedule,{apply(t,n,r){const[c,,l]=r;if(!o([l,"optionalAccess",t=>t.name])){throw new Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.')}return i.withMonitor(l.name,()=>t.apply(n,r),{schedule:{type:"crontab",value:a.replaceCronNames(c)},timezone:o([l,"optionalAccess",t=>t.timezone])})}})}else{return t[n]}}})}n.instrumentNodeCron=instrumentNodeCron},5845:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(6090);function instrumentNodeSchedule(t){return new Proxy(t,{get(t,n){if(n==="scheduleJob"){return new Proxy(t.scheduleJob,{apply(t,n,r){const[a,c]=r;if(typeof a!=="string"||typeof c!=="string"){throw new Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string")}const l=a;const g=c;return o.withMonitor(l,()=>t.apply(n,r),{schedule:{type:"crontab",value:i.replaceCronNames(g)}})}})}return t[n]}})}n.instrumentNodeSchedule=instrumentNodeSchedule},9904:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=r},5394:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(4624);const c=r(9904);const l=r(1062);const g=r(2995);const u=r(2550);function tracingHandler(){return function sentryTracingMiddleware(t,n,r){const c=o([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);if(!c||c.instrumenter!=="sentry"||o([t,"access",t=>t.method,"optionalAccess",t=>t.toUpperCase,"call",t=>t()])==="OPTIONS"||o([t,"access",t=>t.method,"optionalAccess",t=>t.toUpperCase,"call",t=>t()])==="HEAD"){return r()}const l=t.headers&&a.isString(t.headers["sentry-trace"])?t.headers["sentry-trace"]:undefined;const g=o([t,"access",t=>t.headers,"optionalAccess",t=>t.baggage]);if(!i.hasTracingEnabled(c)){return r()}const[u,d]=a.extractPathForTransaction(t,{path:true,method:true});const I=i.continueTrace({sentryTrace:l,baggage:g},n=>i.startTransaction({name:u,op:"http.server",origin:"auto.http.node.tracingHandler",...n,data:{[i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:d},metadata:{...n.metadata,request:t}},{request:a.extractRequestData(t)}));i.getCurrentScope().setSpan(I);n.__sentry_transaction=I;n.once("finish",()=>{setImmediate(()=>{a.addRequestDataToTransaction(I,t);i.setHttpStatus(I,n.statusCode);I.end()})});r()}}function convertReqHandlerOptsToAddReqDataOpts(t={}){let n;if("include"in t){n={include:t.include}}else{const{ip:r,request:o,transaction:i,user:c}=t;if(r||o||i||c){n={include:a.dropUndefinedKeys({ip:r,request:o,transaction:i,user:c})}}}return n}function requestHandler(t){const n=convertReqHandlerOptsToAddReqDataOpts(t);const r=i.getClient();if(r&&l.isAutoSessionTrackingEnabled(r)){r.initSessionFlusher();const t=i.getCurrentScope();if(t.getSession()){t.setSession()}}return function sentryRequestMiddleware(r,o,g){if(t&&t.flushTimeout&&t.flushTimeout>0){const n=o.end;o.end=function(r,o,l){void i.flush(t.flushTimeout).then(()=>{n.call(this,r,o,l)}).then(null,t=>{c.DEBUG_BUILD&&a.logger.error(t);n.call(this,r,o,l)})}}i.runWithAsyncContext(()=>{const t=i.getCurrentScope();t.setSDKProcessingMetadata({request:r,requestDataOptionsFromExpressHandler:n});const a=i.getClient();if(l.isAutoSessionTrackingEnabled(a)){t.setRequestSession({status:"ok"})}o.once("finish",()=>{const t=i.getClient();if(l.isAutoSessionTrackingEnabled(t)){setImmediate(()=>{if(t&&t._captureRequestSession){t._captureRequestSession()}})}});g()})}}function getStatusCodeFromResponse(t){const n=t.status||t.statusCode||t.status_code||t.output&&t.output.statusCode;return n?parseInt(n,10):500}function defaultShouldHandleError(t){const n=getStatusCodeFromResponse(t);return n>=500}function errorHandler(t){return function sentryErrorMiddleware(n,r,o,a){const c=t&&t.shouldHandleError||defaultShouldHandleError;if(c(n)){i.withScope(t=>{t.setSDKProcessingMetadata({request:r});const c=o.__sentry_transaction;if(c&&!i.getActiveSpan()){t.setSpan(c)}const g=i.getClient();if(g&&l.isAutoSessionTrackingEnabled(g)){const n=g._sessionFlusher!==undefined;if(n){const n=t.getRequestSession();if(n&&n.status!==undefined){n.status="crashed"}}}const u=i.captureException(n,{mechanism:{type:"middleware",handled:false}});o.sentry=u;a(n)});return}a(n)}}const d=g.trpcMiddleware;n.extractRequestData=u.extractRequestData;n.parseRequest=u.parseRequest;n.errorHandler=errorHandler;n.requestHandler=requestHandler;n.tracingHandler=tracingHandler;n.trpcMiddleware=d},3986:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(9903);const a=r(8235);const c=r(7397);const l=r(1062);const g=r(4624);const u=r(9715);const d=r(7900);const I=r(8485);const p=r(5394);const m=r(4640);const C=r(7892);const b=r(9654);const h=r(1949);const f=r(731);const y=r(6617);const G=r(101);const B=r(164);const A=r(5587);const Z=r(5560);const S=r(2980);const v=r(6572);const W=r(8861);const R=r(6893);const _=r(6);const V=r(2995);const H=r(5907);const N=r(4076);const E=r(5845);const T=d.createGetModuleFromFilename();const Y={...o.Integrations,...m,...C};const X={instrumentCron:H.instrumentCron,instrumentNodeCron:N.instrumentNodeCron,instrumentNodeSchedule:E.instrumentNodeSchedule};n.Hub=o.Hub;n.SDK_VERSION=o.SDK_VERSION;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=o.SEMANTIC_ATTRIBUTE_SENTRY_OP;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=o.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE;n.Scope=o.Scope;n.addBreadcrumb=o.addBreadcrumb;n.addEventProcessor=o.addEventProcessor;n.addGlobalEventProcessor=o.addGlobalEventProcessor;n.addIntegration=o.addIntegration;n.captureCheckIn=o.captureCheckIn;n.captureEvent=o.captureEvent;n.captureException=o.captureException;n.captureMessage=o.captureMessage;n.captureSession=o.captureSession;n.close=o.close;n.configureScope=o.configureScope;n.continueTrace=o.continueTrace;n.createTransport=o.createTransport;n.endSession=o.endSession;n.extractTraceparentData=o.extractTraceparentData;n.flush=o.flush;n.functionToStringIntegration=o.functionToStringIntegration;n.getActiveSpan=o.getActiveSpan;n.getActiveTransaction=o.getActiveTransaction;n.getClient=o.getClient;n.getCurrentHub=o.getCurrentHub;n.getCurrentScope=o.getCurrentScope;n.getGlobalScope=o.getGlobalScope;n.getHubFromCarrier=o.getHubFromCarrier;n.getIsolationScope=o.getIsolationScope;n.getSpanStatusFromHttpCode=o.getSpanStatusFromHttpCode;n.inboundFiltersIntegration=o.inboundFiltersIntegration;n.isInitialized=o.isInitialized;n.lastEventId=o.lastEventId;n.linkedErrorsIntegration=o.linkedErrorsIntegration;n.makeMain=o.makeMain;n.metrics=o.metrics;n.parameterize=o.parameterize;n.requestDataIntegration=o.requestDataIntegration;n.runWithAsyncContext=o.runWithAsyncContext;n.setContext=o.setContext;n.setCurrentClient=o.setCurrentClient;n.setExtra=o.setExtra;n.setExtras=o.setExtras;n.setHttpStatus=o.setHttpStatus;n.setMeasurement=o.setMeasurement;n.setTag=o.setTag;n.setTags=o.setTags;n.setUser=o.setUser;n.spanStatusfromHttpCode=o.spanStatusfromHttpCode;n.startActiveSpan=o.startActiveSpan;n.startInactiveSpan=o.startInactiveSpan;n.startSession=o.startSession;n.startSpan=o.startSpan;n.startSpanManual=o.startSpanManual;n.startTransaction=o.startTransaction;n.trace=o.trace;n.withActiveSpan=o.withActiveSpan;n.withIsolationScope=o.withIsolationScope;n.withMonitor=o.withMonitor;n.withScope=o.withScope;n.autoDiscoverNodePerformanceMonitoringIntegrations=i.autoDiscoverNodePerformanceMonitoringIntegrations;n.NodeClient=a.NodeClient;n.makeNodeTransport=c.makeNodeTransport;n.defaultIntegrations=l.defaultIntegrations;n.defaultStackParser=l.defaultStackParser;n.getDefaultIntegrations=l.getDefaultIntegrations;n.getSentryRelease=l.getSentryRelease;n.init=l.init;n.DEFAULT_USER_INCLUDES=g.DEFAULT_USER_INCLUDES;n.addRequestDataToEvent=g.addRequestDataToEvent;n.extractRequestData=g.extractRequestData;n.deepReadDirSync=u.deepReadDirSync;n.createGetModuleFromFilename=d.createGetModuleFromFilename;n.enableAnrDetection=I.enableAnrDetection;n.Handlers=p;n.captureConsoleIntegration=b.captureConsoleIntegration;n.debugIntegration=b.debugIntegration;n.dedupeIntegration=b.dedupeIntegration;n.extraErrorDataIntegration=b.extraErrorDataIntegration;n.httpClientIntegration=b.httpClientIntegration;n.reportingObserverIntegration=b.reportingObserverIntegration;n.rewriteFramesIntegration=b.rewriteFramesIntegration;n.sessionTimingIntegration=b.sessionTimingIntegration;n.consoleIntegration=h.consoleIntegration;n.onUncaughtExceptionIntegration=f.onUncaughtExceptionIntegration;n.onUnhandledRejectionIntegration=y.onUnhandledRejectionIntegration;n.modulesIntegration=G.modulesIntegration;n.contextLinesIntegration=B.contextLinesIntegration;n.nodeContextIntegration=A.nodeContextIntegration;n.localVariablesIntegration=Z.localVariablesIntegration;n.spotlightIntegration=S.spotlightIntegration;n.anrIntegration=v.anrIntegration;n.hapiErrorPlugin=W.hapiErrorPlugin;n.hapiIntegration=W.hapiIntegration;n.Undici=R.Undici;n.nativeNodeFetchintegration=R.nativeNodeFetchintegration;n.Http=_.Http;n.httpIntegration=_.httpIntegration;n.trpcMiddleware=V.trpcMiddleware;n.Integrations=Y;n.cron=X;n.getModuleFromFilename=T},6572:(t,n,r)=>{t=r.nmd(t);var{_optionalChain:o,_optionalChainDelete:i}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const a=r(7016);const c=r(9090);const l=r(4624);const g=r(2374);const u=r(1946);const d=50;const I=5e3;function log(t,...n){l.logger.log(`[ANR] ${t}`,...n)}function globalWithScopeFetchFn(){return l.GLOBAL_OBJ}function getScopeData(){const t=c.getGlobalScope().getScopeData();c.mergeScopeData(t,c.getIsolationScope().getScopeData());c.mergeScopeData(t,c.getCurrentScope().getScopeData());t.attachments=[];t.eventProcessors=[];return t}function getWorkerThreads(){return l.dynamicRequire(t,"worker_threads")}async function getContexts(t){let n={message:"ANR"};const r={};for(const o of t.getEventProcessors()){if(n===null)break;n=await o(n,r)}return o([n,"optionalAccess",t=>t.contexts])||{}}const p="Anr";const _anrIntegration=(t={})=>{if(g.NODE_VERSION.major<16||g.NODE_VERSION.major===16&&g.NODE_VERSION.minor<17){throw new Error("ANR detection requires Node 16.17.0 or later")}let n;let r;const o=globalWithScopeFetchFn();o.__SENTRY_GET_SCOPES__=getScopeData;return{name:p,setupOnce(){},startWorker:()=>{if(n){return}if(r){n=_startWorker(r,t)}},stopWorker:()=>{if(n){n.then(t=>{t();n=undefined})}},setup(t){r=t;setImmediate(()=>this.startWorker())}}};const m=c.defineIntegration(_anrIntegration);const C=c.convertIntegrationFnToClass(p,m);async function _startWorker(t,n){const o=t.getDsn();if(!o){return()=>{}}const g=await getContexts(t);i([g,"access",t=>t.app,"optionalAccess",t=>delete t.app_memory]);i([g,"access",t=>t.device,"optionalAccess",t=>delete t.free_memory]);const p=t.getOptions();const m=t.getSdkMetadata()||{};if(m.sdk){m.sdk.integrations=p.integrations.map(t=>t.name)}const C={debug:l.logger.isEnabled(),dsn:o,environment:p.environment||"production",release:p.release,dist:p.dist,sdkMetadata:m,appRootPath:n.appRootPath,pollInterval:n.pollInterval||d,anrThreshold:n.anrThreshold||I,captureStackTrace:!!n.captureStackTrace,staticTags:n.staticTags||{},contexts:g};if(C.captureStackTrace){const t=r(264);if(!t.url()){t.open(0)}}const{Worker:b}=getWorkerThreads();const h=new b(new a.URL(`data:application/javascript;base64,${u.base64WorkerScript}`),{workerData:C});process.on("exit",()=>{h.terminate()});const f=setInterval(()=>{try{const t=c.getCurrentScope().getSession();const n=t?{...t,toJSON:undefined}:undefined;h.postMessage({session:n})}catch(t){}},C.pollInterval);f.unref();h.on("message",t=>{if(t==="session-ended"){log("ANR event sent from ANR worker. Clearing session in this thread.");c.getCurrentScope().setSession(undefined)}});h.once("error",t=>{clearInterval(f);log("ANR worker error",t)});h.once("exit",t=>{clearInterval(f);log("ANR worker exit",t)});h.unref();return()=>{h.terminate();clearInterval(f)}}n.Anr=C;n.anrIntegration=m},8485:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(6572);function enableAnrDetection(t){const n=o.getClient();const r=new i.Anr(t);r.setup(n);return Promise.resolve()}n.enableAnrDetection=enableAnrDetection},1946:(t,n)=>{
|
|
1
|
+
(()=>{var t={7474:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i="7";function getBaseApiEndpoint(t){const n=t.protocol?`${t.protocol}:`:"";const o=t.port?`:${t.port}`:"";return`${n}//${t.host}${o}${t.path?`/${t.path}`:""}/api/`}function _getIngestEndpoint(t){return`${getBaseApiEndpoint(t)}${t.projectId}/envelope/`}function _encodedAuth(t,n){return r.urlEncode({sentry_key:t.publicKey,sentry_version:i,...n&&{sentry_client:`${n.name}/${n.version}`}})}function getEnvelopeEndpointWithUrlEncodedAuth(t,n={}){const o=typeof n==="string"?n:n.tunnel;const r=typeof n==="string"||!n._metadata?undefined:n._metadata.sdk;return o?o:`${_getIngestEndpoint(t)}?${_encodedAuth(t,r)}`}function getReportDialogEndpoint(t,n){const o=r.makeDsn(t);if(!o){return""}const i=`${getBaseApiEndpoint(o)}embed/error-page/`;let a=`dsn=${r.dsnToString(o)}`;for(const t in n){if(t==="dsn"){continue}if(t==="onClose"){continue}if(t==="user"){const t=n.user;if(!t){continue}if(t.name){a+=`&name=${encodeURIComponent(t.name)}`}if(t.email){a+=`&email=${encodeURIComponent(t.email)}`}}else{a+=`&${encodeURIComponent(t)}=${encodeURIComponent(n[t])}`}}return`${i}?${a}`}n.getEnvelopeEndpointWithUrlEncodedAuth=getEnvelopeEndpointWithUrlEncodedAuth;n.getReportDialogEndpoint=getReportDialogEndpoint},6038:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(7474);const a=o(1152);const c=o(1620);const g=o(5913);const l=o(1693);const d=o(4616);const u=o(3210);const I=o(1742);const C=o(1272);const p=o(1735);const m="Not capturing exception because it's already been captured.";class BaseClient{constructor(t){this._options=t;this._integrations={};this._integrationsInitialized=false;this._numProcessing=0;this._outcomes={};this._hooks={};this._eventProcessors=[];if(t.dsn){this._dsn=r.makeDsn(t.dsn)}else{a.DEBUG_BUILD&&r.logger.warn("No DSN provided, client will not send events.")}if(this._dsn){const n=i.getEnvelopeEndpointWithUrlEncodedAuth(this._dsn,t);this._transport=t.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...t.transportOptions,url:n})}}captureException(t,n,o){if(r.checkOrSetAlreadyCaught(t)){a.DEBUG_BUILD&&r.logger.log(m);return}let i=n&&n.event_id;this._process(this.eventFromException(t,n).then(t=>this._captureEvent(t,n,o)).then(t=>{i=t}));return i}captureMessage(t,n,o,i){let a=o&&o.event_id;const c=r.isParameterizedString(t)?t:String(t);const g=r.isPrimitive(t)?this.eventFromMessage(c,n,o):this.eventFromException(t,o);this._process(g.then(t=>this._captureEvent(t,o,i)).then(t=>{a=t}));return a}captureEvent(t,n,o){if(n&&n.originalException&&r.checkOrSetAlreadyCaught(n.originalException)){a.DEBUG_BUILD&&r.logger.log(m);return}let i=n&&n.event_id;const c=t.sdkProcessingMetadata||{};const g=c.capturedSpanScope;this._process(this._captureEvent(t,n,g||o).then(t=>{i=t}));return i}captureSession(t){if(!(typeof t.release==="string")){a.DEBUG_BUILD&&r.logger.warn("Discarded session because of missing or non-string release")}else{this.sendSession(t);I.updateSession(t,{init:false})}}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(t){const n=this._transport;if(n){if(this.metricsAggregator){this.metricsAggregator.flush()}return this._isClientDoneProcessing(t).then(o=>n.flush(t).then(t=>o&&t))}else{return r.resolvedSyncPromise(true)}}close(t){return this.flush(t).then(t=>{this.getOptions().enabled=false;if(this.metricsAggregator){this.metricsAggregator.close()}return t})}getEventProcessors(){return this._eventProcessors}addEventProcessor(t){this._eventProcessors.push(t)}setupIntegrations(t){if(t&&!this._integrationsInitialized||this._isEnabled()&&!this._integrationsInitialized){this._setupIntegrations()}}init(){if(this._isEnabled()){this._setupIntegrations()}}getIntegrationById(t){return this.getIntegrationByName(t)}getIntegrationByName(t){return this._integrations[t]}getIntegration(t){try{return this._integrations[t.id]||null}catch(n){a.DEBUG_BUILD&&r.logger.warn(`Cannot retrieve integration ${t.id} from the current Client`);return null}}addIntegration(t){const n=this._integrations[t.name];d.setupIntegration(this,t,this._integrations);if(!n){d.afterSetupIntegrations(this,[t])}}sendEvent(t,n={}){this.emit("beforeSendEvent",t,n);let o=c.createEventEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);for(const t of n.attachments||[]){o=r.addItemToEnvelope(o,r.createAttachmentEnvelopeItem(t,this._options.transportOptions&&this._options.transportOptions.textEncoder))}const i=this._sendEnvelope(o);if(i){i.then(n=>this.emit("afterSendEvent",t,n),null)}}sendSession(t){const n=c.createSessionEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(n)}recordDroppedEvent(t,n,o){if(this._options.sendClientReports){const i=typeof o==="number"?o:1;const c=`${t}:${n}`;a.DEBUG_BUILD&&r.logger.log(`Recording outcome: "${c}"${i>1?` (${i} times)`:""}`);this._outcomes[c]=(this._outcomes[c]||0)+i}}captureAggregateMetrics(t){a.DEBUG_BUILD&&r.logger.log(`Flushing aggregated metrics, number of metrics: ${t.length}`);const n=u.createMetricEnvelope(t,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(n)}on(t,n){if(!this._hooks[t]){this._hooks[t]=[]}this._hooks[t].push(n)}emit(t,...n){if(this._hooks[t]){this._hooks[t].forEach(t=>t(...n))}}_setupIntegrations(){const{integrations:t}=this._options;this._integrations=d.setupIntegrations(this,t);d.afterSetupIntegrations(this,t);this._integrationsInitialized=true}_updateSessionFromEvent(t,n){let o=false;let r=false;const i=n.exception&&n.exception.values;if(i){r=true;for(const t of i){const n=t.mechanism;if(n&&n.handled===false){o=true;break}}}const a=t.status==="ok";const c=a&&t.errors===0||a&&o;if(c){I.updateSession(t,{...o&&{status:"crashed"},errors:t.errors||Number(r||o)});this.captureSession(t)}}_isClientDoneProcessing(t){return new r.SyncPromise(n=>{let o=0;const r=1;const i=setInterval(()=>{if(this._numProcessing==0){clearInterval(i);n(true)}else{o+=r;if(t&&o>=t){clearInterval(i);n(false)}}},r)})}_isEnabled(){return this.getOptions().enabled!==false&&this._transport!==undefined}_prepareEvent(t,n,o,r=l.getIsolationScope()){const i=this.getOptions();const a=Object.keys(this._integrations);if(!n.integrations&&a.length>0){n.integrations=a}this.emit("preprocessEvent",t,n);return p.prepareEvent(i,t,n,o,this,r).then(t=>{if(t===null){return t}const n={...r.getPropagationContext(),...o?o.getPropagationContext():undefined};const i=t.contexts&&t.contexts.trace;if(!i&&n){const{traceId:r,spanId:i,parentSpanId:a,dsc:c}=n;t.contexts={trace:{trace_id:r,span_id:i,parent_span_id:a},...t.contexts};const g=c?c:C.getDynamicSamplingContextFromClient(r,this,o);t.sdkProcessingMetadata={dynamicSamplingContext:g,...t.sdkProcessingMetadata}}return t})}_captureEvent(t,n={},o){return this._processEvent(t,n,o).then(t=>t.event_id,t=>{if(a.DEBUG_BUILD){const n=t;if(n.logLevel==="log"){r.logger.log(n.message)}else{r.logger.warn(n)}}return undefined})}_processEvent(t,n,o){const i=this.getOptions();const{sampleRate:a}=i;const c=isTransactionEvent(t);const g=isErrorEvent(t);const l=t.type||"error";const d=`before send for type \`${l}\``;if(g&&typeof a==="number"&&Math.random()>a){this.recordDroppedEvent("sample_rate","error",t);return r.rejectedSyncPromise(new r.SentryError(`Discarding event because it's not included in the random sample (sampling rate = ${a})`,"log"))}const u=l==="replay_event"?"replay":l;const I=t.sdkProcessingMetadata||{};const C=I.capturedSpanIsolationScope;return this._prepareEvent(t,n,o,C).then(o=>{if(o===null){this.recordDroppedEvent("event_processor",u,t);throw new r.SentryError("An event processor returned `null`, will not send event.","log")}const a=n.data&&n.data.__sentry__===true;if(a){return o}const c=processBeforeSend(i,o,n);return _validateBeforeSendResult(c,d)}).then(i=>{if(i===null){this.recordDroppedEvent("before_send",u,t);if(c){const n=t.spans||[];const o=1+n.length;this.recordDroppedEvent("before_send","span",o)}throw new r.SentryError(`${d} returned \`null\`, will not send event.`,"log")}const a=o&&o.getSession();if(!c&&a){this._updateSessionFromEvent(a,i)}if(c){const t=i.sdkProcessingMetadata&&i.sdkProcessingMetadata.spanCountBeforeProcessing||0;const n=i.spans?i.spans.length:0;const o=t-n;if(o>0){this.recordDroppedEvent("before_send","span",o)}}const g=i.transaction_info;if(c&&g&&i.transaction!==t.transaction){const t="custom";i.transaction_info={...g,source:t}}this.sendEvent(i,n);return i}).then(null,t=>{if(t instanceof r.SentryError){throw t}this.captureException(t,{data:{__sentry__:true},originalException:t});throw new r.SentryError(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${t}`)})}_process(t){this._numProcessing++;void t.then(t=>{this._numProcessing--;return t},t=>{this._numProcessing--;return t})}_sendEnvelope(t){this.emit("beforeEnvelope",t);if(this._isEnabled()&&this._transport){return this._transport.send(t).then(null,t=>{a.DEBUG_BUILD&&r.logger.error("Error while sending event:",t)})}else{a.DEBUG_BUILD&&r.logger.error("Transport disabled")}}_clearOutcomes(){const t=this._outcomes;this._outcomes={};return Object.keys(t).map(n=>{const[o,r]=n.split(":");return{reason:o,category:r,quantity:t[n]}})}}function _validateBeforeSendResult(t,n){const o=`${n} must return \`null\` or a valid event.`;if(r.isThenable(t)){return t.then(t=>{if(!r.isPlainObject(t)&&t!==null){throw new r.SentryError(o)}return t},t=>{throw new r.SentryError(`${n} rejected with ${t}`)})}else if(!r.isPlainObject(t)&&t!==null){throw new r.SentryError(o)}return t}function processBeforeSend(t,n,o){const{beforeSend:r,beforeSendTransaction:i}=t;if(isErrorEvent(n)&&r){return r(n,o)}if(isTransactionEvent(n)&&i){if(n.spans){const t=n.spans.length;n.sdkProcessingMetadata={...n.sdkProcessingMetadata,spanCountBeforeProcessing:t}}return i(n,o)}return n}function isErrorEvent(t){return t.type===undefined}function isTransactionEvent(t){return t.type==="transaction"}function addEventProcessor(t){const n=g.getClient();if(!n||!n.addEventProcessor){return}n.addEventProcessor(t)}n.BaseClient=BaseClient;n.addEventProcessor=addEventProcessor},3345:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function createCheckInEnvelope(t,n,o,i,a){const c={sent_at:(new Date).toISOString()};if(o&&o.sdk){c.sdk={name:o.sdk.name,version:o.sdk.version}}if(!!i&&!!a){c.dsn=r.dsnToString(a)}if(n){c.trace=r.dropUndefinedKeys(n)}const g=createCheckInEnvelopeItem(t);return r.createEnvelope(c,[g])}function createCheckInEnvelopeItem(t){const n={type:"check_in"};return[n,t]}n.createCheckInEnvelope=createCheckInEnvelope},19:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o="production";n.DEFAULT_ENVIRONMENT=o},1152:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=o},1620:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function enhanceEventWithSdkInfo(t,n){if(!n){return t}t.sdk=t.sdk||{};t.sdk.name=t.sdk.name||n.name;t.sdk.version=t.sdk.version||n.version;t.sdk.integrations=[...t.sdk.integrations||[],...n.integrations||[]];t.sdk.packages=[...t.sdk.packages||[],...n.packages||[]];return t}function createSessionEnvelope(t,n,o,i){const a=r.getSdkMetadataForEnvelopeHeader(o);const c={sent_at:(new Date).toISOString(),...a&&{sdk:a},...!!i&&n&&{dsn:r.dsnToString(n)}};const g="aggregates"in t?[{type:"sessions"},t]:[{type:"session"},t.toJSON()];return r.createEnvelope(c,[g])}function createEventEnvelope(t,n,o,i){const a=r.getSdkMetadataForEnvelopeHeader(o);const c=t.type&&t.type!=="replay_event"?t.type:"event";enhanceEventWithSdkInfo(t,o&&o.sdk);const g=r.createEventEnvelopeHeaders(t,a,i,n);delete t.sdkProcessingMetadata;const l=[{type:c},t];return r.createEnvelope(g,[l])}n.createEventEnvelope=createEventEnvelope;n.createSessionEnvelope=createSessionEnvelope},8407:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);function getGlobalEventProcessors(){return r.getGlobalSingleton("globalEventProcessors",()=>[])}function addGlobalEventProcessor(t){getGlobalEventProcessors().push(t)}function notifyEventProcessors(t,n,o,a=0){return new r.SyncPromise((c,g)=>{const l=t[a];if(n===null||typeof l!=="function"){c(n)}else{const d=l({...n},o);i.DEBUG_BUILD&&l.id&&d===null&&r.logger.log(`Event processor "${l.id}" dropped event`);if(r.isThenable(d)){void d.then(n=>notifyEventProcessors(t,n,o,a+1).then(c)).then(null,g)}else{void notifyEventProcessors(t,d,o,a+1).then(c).then(null,g)}}})}n.addGlobalEventProcessor=addGlobalEventProcessor;n.getGlobalEventProcessors=getGlobalEventProcessors;n.notifyEventProcessors=notifyEventProcessors},5913:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(19);const a=o(1152);const c=o(1693);const g=o(1742);const l=o(1735);function captureException(t,n){return c.getCurrentHub().captureException(t,l.parseEventHintOrCaptureContext(n))}function captureMessage(t,n){const o=typeof n==="string"?n:undefined;const r=typeof n!=="string"?{captureContext:n}:undefined;return c.getCurrentHub().captureMessage(t,o,r)}function captureEvent(t,n){return c.getCurrentHub().captureEvent(t,n)}function configureScope(t){c.getCurrentHub().configureScope(t)}function addBreadcrumb(t,n){c.getCurrentHub().addBreadcrumb(t,n)}function setContext(t,n){c.getCurrentHub().setContext(t,n)}function setExtras(t){c.getCurrentHub().setExtras(t)}function setExtra(t,n){c.getCurrentHub().setExtra(t,n)}function setTags(t){c.getCurrentHub().setTags(t)}function setTag(t,n){c.getCurrentHub().setTag(t,n)}function setUser(t){c.getCurrentHub().setUser(t)}function withScope(...t){const n=c.getCurrentHub();if(t.length===2){const[o,r]=t;if(!o){return n.withScope(r)}return n.withScope(()=>{n.getStackTop().scope=o;return r(o)})}return n.withScope(t[0])}function withIsolationScope(t){return c.runWithAsyncContext(()=>t(c.getIsolationScope()))}function withActiveSpan(t,n){return withScope(o=>{o.setSpan(t);return n(o)})}function startTransaction(t,n){return c.getCurrentHub().startTransaction({...t},n)}function captureCheckIn(t,n){const o=getCurrentScope();const i=getClient();if(!i){a.DEBUG_BUILD&&r.logger.warn("Cannot capture check-in. No client defined.")}else if(!i.captureCheckIn){a.DEBUG_BUILD&&r.logger.warn("Cannot capture check-in. Client does not support sending check-ins.")}else{return i.captureCheckIn(t,n,o)}return r.uuid4()}function withMonitor(t,n,o){const i=captureCheckIn({monitorSlug:t,status:"in_progress"},o);const a=r.timestampInSeconds();function finishCheckIn(n){captureCheckIn({monitorSlug:t,status:n,checkInId:i,duration:r.timestampInSeconds()-a})}let c;try{c=n()}catch(t){finishCheckIn("error");throw t}if(r.isThenable(c)){Promise.resolve(c).then(()=>{finishCheckIn("ok")},()=>{finishCheckIn("error")})}else{finishCheckIn("ok")}return c}async function flush(t){const n=getClient();if(n){return n.flush(t)}a.DEBUG_BUILD&&r.logger.warn("Cannot flush events. No client defined.");return Promise.resolve(false)}async function close(t){const n=getClient();if(n){return n.close(t)}a.DEBUG_BUILD&&r.logger.warn("Cannot flush events and disable SDK. No client defined.");return Promise.resolve(false)}function lastEventId(){return c.getCurrentHub().lastEventId()}function getClient(){return c.getCurrentHub().getClient()}function isInitialized(){return!!getClient()}function getCurrentScope(){return c.getCurrentHub().getScope()}function startSession(t){const n=getClient();const o=c.getIsolationScope();const a=getCurrentScope();const{release:l,environment:d=i.DEFAULT_ENVIRONMENT}=n&&n.getOptions()||{};const{userAgent:u}=r.GLOBAL_OBJ.navigator||{};const I=g.makeSession({release:l,environment:d,user:a.getUser()||o.getUser(),...u&&{userAgent:u},...t});const C=o.getSession();if(C&&C.status==="ok"){g.updateSession(C,{status:"exited"})}endSession();o.setSession(I);a.setSession(I);return I}function endSession(){const t=c.getIsolationScope();const n=getCurrentScope();const o=n.getSession()||t.getSession();if(o){g.closeSession(o)}_sendSessionUpdate();t.setSession();n.setSession()}function _sendSessionUpdate(){const t=c.getIsolationScope();const n=getCurrentScope();const o=getClient();const r=n.getSession()||t.getSession();if(r&&o&&o.captureSession){o.captureSession(r)}}function captureSession(t=false){if(t){endSession();return}_sendSessionUpdate()}n.addBreadcrumb=addBreadcrumb;n.captureCheckIn=captureCheckIn;n.captureEvent=captureEvent;n.captureException=captureException;n.captureMessage=captureMessage;n.captureSession=captureSession;n.close=close;n.configureScope=configureScope;n.endSession=endSession;n.flush=flush;n.getClient=getClient;n.getCurrentScope=getCurrentScope;n.isInitialized=isInitialized;n.lastEventId=lastEventId;n.setContext=setContext;n.setExtra=setExtra;n.setExtras=setExtras;n.setTag=setTag;n.setTags=setTags;n.setUser=setUser;n.startSession=startSession;n.startTransaction=startTransaction;n.withActiveSpan=withActiveSpan;n.withIsolationScope=withIsolationScope;n.withMonitor=withMonitor;n.withScope=withScope},1693:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(19);const a=o(1152);const c=o(9450);const g=o(1742);const l=o(6710);const d=parseFloat(l.SDK_VERSION);const u=100;class Hub{constructor(t,n,o,r=d){this._version=r;let i;if(!n){i=new c.Scope;i.setClient(t)}else{i=n}let a;if(!o){a=new c.Scope;a.setClient(t)}else{a=o}this._stack=[{scope:i}];if(t){this.bindClient(t)}this._isolationScope=a}isOlderThan(t){return this._version<t}bindClient(t){const n=this.getStackTop();n.client=t;n.scope.setClient(t);if(t&&t.setupIntegrations){t.setupIntegrations()}}pushScope(){const t=this.getScope().clone();this.getStack().push({client:this.getClient(),scope:t});return t}popScope(){if(this.getStack().length<=1)return false;return!!this.getStack().pop()}withScope(t){const n=this.pushScope();let o;try{o=t(n)}catch(t){this.popScope();throw t}if(r.isThenable(o)){return o.then(t=>{this.popScope();return t},t=>{this.popScope();throw t})}this.popScope();return o}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(t,n){const o=this._lastEventId=n&&n.event_id?n.event_id:r.uuid4();const i=new Error("Sentry syntheticException");this.getScope().captureException(t,{originalException:t,syntheticException:i,...n,event_id:o});return o}captureMessage(t,n,o){const i=this._lastEventId=o&&o.event_id?o.event_id:r.uuid4();const a=new Error(t);this.getScope().captureMessage(t,n,{originalException:t,syntheticException:a,...o,event_id:i});return i}captureEvent(t,n){const o=n&&n.event_id?n.event_id:r.uuid4();if(!t.type){this._lastEventId=o}this.getScope().captureEvent(t,{...n,event_id:o});return o}lastEventId(){return this._lastEventId}addBreadcrumb(t,n){const{scope:o,client:i}=this.getStackTop();if(!i)return;const{beforeBreadcrumb:a=null,maxBreadcrumbs:c=u}=i.getOptions&&i.getOptions()||{};if(c<=0)return;const g=r.dateTimestampInSeconds();const l={timestamp:g,...t};const d=a?r.consoleSandbox(()=>a(l,n)):l;if(d===null)return;if(i.emit){i.emit("beforeAddBreadcrumb",d,n)}o.addBreadcrumb(d,c)}setUser(t){this.getScope().setUser(t);this.getIsolationScope().setUser(t)}setTags(t){this.getScope().setTags(t);this.getIsolationScope().setTags(t)}setExtras(t){this.getScope().setExtras(t);this.getIsolationScope().setExtras(t)}setTag(t,n){this.getScope().setTag(t,n);this.getIsolationScope().setTag(t,n)}setExtra(t,n){this.getScope().setExtra(t,n);this.getIsolationScope().setExtra(t,n)}setContext(t,n){this.getScope().setContext(t,n);this.getIsolationScope().setContext(t,n)}configureScope(t){const{scope:n,client:o}=this.getStackTop();if(o){t(n)}}run(t){const n=makeMain(this);try{t(this)}finally{makeMain(n)}}getIntegration(t){const n=this.getClient();if(!n)return null;try{return n.getIntegration(t)}catch(n){a.DEBUG_BUILD&&r.logger.warn(`Cannot retrieve integration ${t.id} from the current Hub`);return null}}startTransaction(t,n){const o=this._callExtensionMethod("startTransaction",t,n);if(a.DEBUG_BUILD&&!o){const t=this.getClient();if(!t){r.logger.warn("Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'")}else{r.logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`)}}return o}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(t=false){if(t){return this.endSession()}this._sendSessionUpdate()}endSession(){const t=this.getStackTop();const n=t.scope;const o=n.getSession();if(o){g.closeSession(o)}this._sendSessionUpdate();n.setSession()}startSession(t){const{scope:n,client:o}=this.getStackTop();const{release:a,environment:c=i.DEFAULT_ENVIRONMENT}=o&&o.getOptions()||{};const{userAgent:l}=r.GLOBAL_OBJ.navigator||{};const d=g.makeSession({release:a,environment:c,user:n.getUser(),...l&&{userAgent:l},...t});const u=n.getSession&&n.getSession();if(u&&u.status==="ok"){g.updateSession(u,{status:"exited"})}this.endSession();n.setSession(d);return d}shouldSendDefaultPii(){const t=this.getClient();const n=t&&t.getOptions();return Boolean(n&&n.sendDefaultPii)}_sendSessionUpdate(){const{scope:t,client:n}=this.getStackTop();const o=t.getSession();if(o&&n&&n.captureSession){n.captureSession(o)}}_callExtensionMethod(t,...n){const o=getMainCarrier();const i=o.__SENTRY__;if(i&&i.extensions&&typeof i.extensions[t]==="function"){return i.extensions[t].apply(this,n)}a.DEBUG_BUILD&&r.logger.warn(`Extension method ${t} couldn't be found, doing nothing.`)}}function getMainCarrier(){r.GLOBAL_OBJ.__SENTRY__=r.GLOBAL_OBJ.__SENTRY__||{extensions:{},hub:undefined};return r.GLOBAL_OBJ}function makeMain(t){const n=getMainCarrier();const o=getHubFromCarrier(n);setHubOnCarrier(n,t);return o}function getCurrentHub(){const t=getMainCarrier();if(t.__SENTRY__&&t.__SENTRY__.acs){const n=t.__SENTRY__.acs.getCurrentHub();if(n){return n}}return getGlobalHub(t)}function getIsolationScope(){return getCurrentHub().getIsolationScope()}function getGlobalHub(t=getMainCarrier()){if(!hasHubOnCarrier(t)||getHubFromCarrier(t).isOlderThan(d)){setHubOnCarrier(t,new Hub)}return getHubFromCarrier(t)}function ensureHubOnCarrier(t,n=getGlobalHub()){if(!hasHubOnCarrier(t)||getHubFromCarrier(t).isOlderThan(d)){const o=n.getClient();const r=n.getScope();const i=n.getIsolationScope();setHubOnCarrier(t,new Hub(o,r.clone(),i.clone()))}}function setAsyncContextStrategy(t){const n=getMainCarrier();n.__SENTRY__=n.__SENTRY__||{};n.__SENTRY__.acs=t}function runWithAsyncContext(t,n={}){const o=getMainCarrier();if(o.__SENTRY__&&o.__SENTRY__.acs){return o.__SENTRY__.acs.runWithAsyncContext(t,n)}return t()}function hasHubOnCarrier(t){return!!(t&&t.__SENTRY__&&t.__SENTRY__.hub)}function getHubFromCarrier(t){return r.getGlobalSingleton("hub",()=>new Hub,t)}function setHubOnCarrier(t,n){if(!t)return false;const o=t.__SENTRY__=t.__SENTRY__||{};o.hub=n;return true}n.API_VERSION=d;n.Hub=Hub;n.ensureHubOnCarrier=ensureHubOnCarrier;n.getCurrentHub=getCurrentHub;n.getHubFromCarrier=getHubFromCarrier;n.getIsolationScope=getIsolationScope;n.getMainCarrier=getMainCarrier;n.makeMain=makeMain;n.runWithAsyncContext=runWithAsyncContext;n.setAsyncContextStrategy=setAsyncContextStrategy;n.setHubOnCarrier=setHubOnCarrier},9090:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5542);const i=o(8245);const a=o(9835);const c=o(6163);const g=o(7082);const l=o(8097);const d=o(3710);const u=o(1272);const I=o(5111);const C=o(2594);const p=o(1985);const m=o(1620);const b=o(5913);const h=o(1693);const G=o(1742);const Z=o(7865);const B=o(9450);const A=o(8407);const y=o(7474);const f=o(6038);const W=o(3928);const v=o(1782);const V=o(2412);const R=o(7294);const S=o(8104);const H=o(6710);const Y=o(4616);const N=o(6659);const X=o(1735);const F=o(3345);const K=o(3644);const _=o(5987);const T=o(859);const w=o(1996);const E=o(1345);const J=o(7961);const k=o(7992);const U=o(4557);const z=o(19);const L=o(3719);const x=o(5133);const O=o(5018);const M=o(7970);const Q=o(5164);const j=o(9456);const D=o(5027);const P=j;n.addTracingExtensions=r.addTracingExtensions;n.startIdleTransaction=r.startIdleTransaction;n.IdleTransaction=i.IdleTransaction;n.TRACING_DEFAULTS=i.TRACING_DEFAULTS;n.Span=a.Span;n.Transaction=c.Transaction;n.extractTraceparentData=g.extractTraceparentData;n.getActiveTransaction=g.getActiveTransaction;Object.defineProperty(n,"SpanStatus",{enumerable:true,get:()=>l.SpanStatus});n.getSpanStatusFromHttpCode=l.getSpanStatusFromHttpCode;n.setHttpStatus=l.setHttpStatus;n.spanStatusfromHttpCode=l.spanStatusfromHttpCode;n.continueTrace=d.continueTrace;n.getActiveSpan=d.getActiveSpan;n.startActiveSpan=d.startActiveSpan;n.startInactiveSpan=d.startInactiveSpan;n.startSpan=d.startSpan;n.startSpanManual=d.startSpanManual;n.trace=d.trace;n.getDynamicSamplingContextFromClient=u.getDynamicSamplingContextFromClient;n.getDynamicSamplingContextFromSpan=u.getDynamicSamplingContextFromSpan;n.setMeasurement=I.setMeasurement;n.isValidSampleRate=C.isValidSampleRate;n.SEMANTIC_ATTRIBUTE_PROFILE_ID=p.SEMANTIC_ATTRIBUTE_PROFILE_ID;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=p.SEMANTIC_ATTRIBUTE_SENTRY_OP;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=p.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=p.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=p.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE;n.createEventEnvelope=m.createEventEnvelope;n.createSessionEnvelope=m.createSessionEnvelope;n.addBreadcrumb=b.addBreadcrumb;n.captureCheckIn=b.captureCheckIn;n.captureEvent=b.captureEvent;n.captureException=b.captureException;n.captureMessage=b.captureMessage;n.captureSession=b.captureSession;n.close=b.close;n.configureScope=b.configureScope;n.endSession=b.endSession;n.flush=b.flush;n.getClient=b.getClient;n.getCurrentScope=b.getCurrentScope;n.isInitialized=b.isInitialized;n.lastEventId=b.lastEventId;n.setContext=b.setContext;n.setExtra=b.setExtra;n.setExtras=b.setExtras;n.setTag=b.setTag;n.setTags=b.setTags;n.setUser=b.setUser;n.startSession=b.startSession;n.startTransaction=b.startTransaction;n.withActiveSpan=b.withActiveSpan;n.withIsolationScope=b.withIsolationScope;n.withMonitor=b.withMonitor;n.withScope=b.withScope;n.Hub=h.Hub;n.ensureHubOnCarrier=h.ensureHubOnCarrier;n.getCurrentHub=h.getCurrentHub;n.getHubFromCarrier=h.getHubFromCarrier;n.getIsolationScope=h.getIsolationScope;n.getMainCarrier=h.getMainCarrier;n.makeMain=h.makeMain;n.runWithAsyncContext=h.runWithAsyncContext;n.setAsyncContextStrategy=h.setAsyncContextStrategy;n.setHubOnCarrier=h.setHubOnCarrier;n.closeSession=G.closeSession;n.makeSession=G.makeSession;n.updateSession=G.updateSession;n.SessionFlusher=Z.SessionFlusher;n.Scope=B.Scope;n.getGlobalScope=B.getGlobalScope;n.setGlobalScope=B.setGlobalScope;n.addGlobalEventProcessor=A.addGlobalEventProcessor;n.notifyEventProcessors=A.notifyEventProcessors;n.getEnvelopeEndpointWithUrlEncodedAuth=y.getEnvelopeEndpointWithUrlEncodedAuth;n.getReportDialogEndpoint=y.getReportDialogEndpoint;n.BaseClient=f.BaseClient;n.addEventProcessor=f.addEventProcessor;n.ServerRuntimeClient=W.ServerRuntimeClient;n.initAndBind=v.initAndBind;n.setCurrentClient=v.setCurrentClient;n.createTransport=V.createTransport;n.makeOfflineTransport=R.makeOfflineTransport;n.makeMultiplexedTransport=S.makeMultiplexedTransport;n.SDK_VERSION=H.SDK_VERSION;n.addIntegration=Y.addIntegration;n.convertIntegrationFnToClass=Y.convertIntegrationFnToClass;n.defineIntegration=Y.defineIntegration;n.getIntegrationsToSetup=Y.getIntegrationsToSetup;n.applyScopeDataToEvent=N.applyScopeDataToEvent;n.mergeScopeData=N.mergeScopeData;n.prepareEvent=X.prepareEvent;n.createCheckInEnvelope=F.createCheckInEnvelope;n.createSpanEnvelope=K.createSpanEnvelope;n.hasTracingEnabled=_.hasTracingEnabled;n.isSentryRequestUrl=T.isSentryRequestUrl;n.handleCallbackErrors=w.handleCallbackErrors;n.parameterize=E.parameterize;n.spanIsSampled=J.spanIsSampled;n.spanToJSON=J.spanToJSON;n.spanToTraceContext=J.spanToTraceContext;n.spanToTraceHeader=J.spanToTraceHeader;n.getRootSpan=k.getRootSpan;n.applySdkMetadata=U.applySdkMetadata;n.DEFAULT_ENVIRONMENT=z.DEFAULT_ENVIRONMENT;n.ModuleMetadata=L.ModuleMetadata;n.moduleMetadataIntegration=L.moduleMetadataIntegration;n.RequestData=x.RequestData;n.requestDataIntegration=x.requestDataIntegration;n.InboundFilters=O.InboundFilters;n.inboundFiltersIntegration=O.inboundFiltersIntegration;n.FunctionToString=M.FunctionToString;n.functionToStringIntegration=M.functionToStringIntegration;n.LinkedErrors=Q.LinkedErrors;n.linkedErrorsIntegration=Q.linkedErrorsIntegration;n.metrics=D.metrics;n.Integrations=P},4616:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(8407);const c=o(5913);const g=o(1693);const l=[];function filterDuplicates(t){const n={};t.forEach(t=>{const{name:o}=t;const r=n[o];if(r&&!r.isDefaultInstance&&t.isDefaultInstance){return}n[o]=t});return Object.keys(n).map(t=>n[t])}function getIntegrationsToSetup(t){const n=t.defaultIntegrations||[];const o=t.integrations;n.forEach(t=>{t.isDefaultInstance=true});let i;if(Array.isArray(o)){i=[...n,...o]}else if(typeof o==="function"){i=r.arrayify(o(n))}else{i=n}const a=filterDuplicates(i);const c=findIndex(a,t=>t.name==="Debug");if(c!==-1){const[t]=a.splice(c,1);a.push(t)}return a}function setupIntegrations(t,n){const o={};n.forEach(n=>{if(n){setupIntegration(t,n,o)}});return o}function afterSetupIntegrations(t,n){for(const o of n){if(o&&o.afterAllSetup){o.afterAllSetup(t)}}}function setupIntegration(t,n,o){if(o[n.name]){i.DEBUG_BUILD&&r.logger.log(`Integration skipped because it was already installed: ${n.name}`);return}o[n.name]=n;if(l.indexOf(n.name)===-1){n.setupOnce(a.addGlobalEventProcessor,g.getCurrentHub);l.push(n.name)}if(n.setup&&typeof n.setup==="function"){n.setup(t)}if(t.on&&typeof n.preprocessEvent==="function"){const o=n.preprocessEvent.bind(n);t.on("preprocessEvent",(n,r)=>o(n,r,t))}if(t.addEventProcessor&&typeof n.processEvent==="function"){const o=n.processEvent.bind(n);const processor=(n,r)=>o(n,r,t);processor.id=n.name;t.addEventProcessor(processor)}i.DEBUG_BUILD&&r.logger.log(`Integration installed: ${n.name}`)}function addIntegration(t){const n=c.getClient();if(!n||!n.addIntegration){i.DEBUG_BUILD&&r.logger.warn(`Cannot add integration "${t.name}" because no SDK Client is available.`);return}n.addIntegration(t)}function findIndex(t,n){for(let o=0;o<t.length;o++){if(n(t[o])===true){return o}}return-1}function convertIntegrationFnToClass(t,n){const o=function ConvertedIntegration(...t){return n(...t)};o.id=t;return o}function defineIntegration(t){return t}n.addIntegration=addIntegration;n.afterSetupIntegrations=afterSetupIntegrations;n.convertIntegrationFnToClass=convertIntegrationFnToClass;n.defineIntegration=defineIntegration;n.getIntegrationsToSetup=getIntegrationsToSetup;n.installedIntegrations=l;n.setupIntegration=setupIntegration;n.setupIntegrations=setupIntegrations},7970:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(5913);const a=o(4616);let c;const g="FunctionToString";const l=new WeakMap;const _functionToStringIntegration=()=>({name:g,setupOnce(){c=Function.prototype.toString;try{Function.prototype.toString=function(...t){const n=r.getOriginalFunction(this);const o=l.has(i.getClient())&&n!==undefined?n:this;return c.apply(o,t)}}catch(t){}},setup(t){l.set(t,true)}});const d=a.defineIntegration(_functionToStringIntegration);const u=a.convertIntegrationFnToClass(g,d);n.FunctionToString=u;n.functionToStringIntegration=d},5018:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(4616);const c=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/];const g=[/^.*\/healthcheck$/,/^.*\/healthy$/,/^.*\/live$/,/^.*\/ready$/,/^.*\/heartbeat$/,/^.*\/health$/,/^.*\/healthz$/];const l="InboundFilters";const _inboundFiltersIntegration=(t={})=>({name:l,setupOnce(){},processEvent(n,o,r){const i=r.getOptions();const a=_mergeOptions(t,i);return _shouldDropEvent(n,a)?null:n}});const d=a.defineIntegration(_inboundFiltersIntegration);const u=a.convertIntegrationFnToClass(l,d);function _mergeOptions(t={},n={}){return{allowUrls:[...t.allowUrls||[],...n.allowUrls||[]],denyUrls:[...t.denyUrls||[],...n.denyUrls||[]],ignoreErrors:[...t.ignoreErrors||[],...n.ignoreErrors||[],...t.disableErrorDefaults?[]:c],ignoreTransactions:[...t.ignoreTransactions||[],...n.ignoreTransactions||[],...t.disableTransactionDefaults?[]:g],ignoreInternal:t.ignoreInternal!==undefined?t.ignoreInternal:true}}function _shouldDropEvent(t,n){if(n.ignoreInternal&&_isSentryError(t)){i.DEBUG_BUILD&&r.logger.warn(`Event dropped due to being internal Sentry Error.\nEvent: ${r.getEventDescription(t)}`);return true}if(_isIgnoredError(t,n.ignoreErrors)){i.DEBUG_BUILD&&r.logger.warn(`Event dropped due to being matched by \`ignoreErrors\` option.\nEvent: ${r.getEventDescription(t)}`);return true}if(_isIgnoredTransaction(t,n.ignoreTransactions)){i.DEBUG_BUILD&&r.logger.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.\nEvent: ${r.getEventDescription(t)}`);return true}if(_isDeniedUrl(t,n.denyUrls)){i.DEBUG_BUILD&&r.logger.warn(`Event dropped due to being matched by \`denyUrls\` option.\nEvent: ${r.getEventDescription(t)}.\nUrl: ${_getEventFilterUrl(t)}`);return true}if(!_isAllowedUrl(t,n.allowUrls)){i.DEBUG_BUILD&&r.logger.warn(`Event dropped due to not being matched by \`allowUrls\` option.\nEvent: ${r.getEventDescription(t)}.\nUrl: ${_getEventFilterUrl(t)}`);return true}return false}function _isIgnoredError(t,n){if(t.type||!n||!n.length){return false}return _getPossibleEventMessages(t).some(t=>r.stringMatchesSomePattern(t,n))}function _isIgnoredTransaction(t,n){if(t.type!=="transaction"||!n||!n.length){return false}const o=t.transaction;return o?r.stringMatchesSomePattern(o,n):false}function _isDeniedUrl(t,n){if(!n||!n.length){return false}const o=_getEventFilterUrl(t);return!o?false:r.stringMatchesSomePattern(o,n)}function _isAllowedUrl(t,n){if(!n||!n.length){return true}const o=_getEventFilterUrl(t);return!o?true:r.stringMatchesSomePattern(o,n)}function _getPossibleEventMessages(t){const n=[];if(t.message){n.push(t.message)}let o;try{o=t.exception.values[t.exception.values.length-1]}catch(t){}if(o){if(o.value){n.push(o.value);if(o.type){n.push(`${o.type}: ${o.value}`)}}}if(i.DEBUG_BUILD&&n.length===0){r.logger.error(`Could not extract message for event ${r.getEventDescription(t)}`)}return n}function _isSentryError(t){try{return t.exception.values[0].type==="SentryError"}catch(t){}return false}function _getLastValidUrl(t=[]){for(let n=t.length-1;n>=0;n--){const o=t[n];if(o&&o.filename!=="<anonymous>"&&o.filename!=="[native code]"){return o.filename||null}}return null}function _getEventFilterUrl(t){try{let n;try{n=t.exception.values[0].stacktrace.frames}catch(t){}return n?_getLastValidUrl(n):null}catch(n){i.DEBUG_BUILD&&r.logger.error(`Cannot extract url for event ${r.getEventDescription(t)}`);return null}}n.InboundFilters=u;n.inboundFiltersIntegration=d},9456:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(7970);const i=o(5018);const a=o(5164);n.FunctionToString=r.FunctionToString;n.InboundFilters=i.InboundFilters;n.LinkedErrors=a.LinkedErrors},5164:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(4616);const a="cause";const c=5;const g="LinkedErrors";const _linkedErrorsIntegration=(t={})=>{const n=t.limit||c;const o=t.key||a;return{name:g,setupOnce(){},preprocessEvent(t,i,a){const c=a.getOptions();r.applyAggregateErrorsToEvent(r.exceptionFromError,c.stackParser,c.maxValueLength,o,n,t,i)}}};const l=i.defineIntegration(_linkedErrorsIntegration);const d=i.convertIntegrationFnToClass(g,l);n.LinkedErrors=d;n.linkedErrorsIntegration=l},3719:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(4616);const a=o(2785);const c="ModuleMetadata";const _moduleMetadataIntegration=()=>({name:c,setupOnce(){},setup(t){if(typeof t.on!=="function"){return}t.on("beforeEnvelope",t=>{r.forEachEnvelopeItem(t,(t,n)=>{if(n==="event"){const n=Array.isArray(t)?t[1]:undefined;if(n){a.stripMetadataFromStackFrames(n);t[1]=n}}})})},processEvent(t,n,o){const r=o.getOptions().stackParser;a.addMetadataToStackFrames(r,t);return t}});const g=i.defineIntegration(_moduleMetadataIntegration);const l=i.convertIntegrationFnToClass(c,g);n.ModuleMetadata=l;n.moduleMetadataIntegration=g},5133:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(4616);const a=o(7961);const c={include:{cookies:true,data:true,headers:true,ip:false,query_string:true,url:true,user:{id:true,username:true,email:true}},transactionNamingScheme:"methodPath"};const g="RequestData";const _requestDataIntegration=(t={})=>{const n=r.addRequestDataToEvent;const o={...c,...t,include:{method:true,...c.include,...t.include,user:t.include&&typeof t.include.user==="boolean"?t.include.user:{...c.include.user,...(t.include||{}).user}}};return{name:g,setupOnce(){},processEvent(t,i,c){const{transactionNamingScheme:g}=o;const{sdkProcessingMetadata:l={}}=t;const d=l.request;if(!d){return t}const u=l.requestDataOptionsFromExpressHandler||l.requestDataOptionsFromGCPWrapper||convertReqDataIntegrationOptsToAddReqDataOpts(o);const I=n(t,d,u);if(t.type==="transaction"||g==="handler"){return I}const C=d;const p=C._sentryTransaction;if(p){const t=a.spanToJSON(p).description||"";const n=getSDKName(c)==="sentry.javascript.nextjs"?t.startsWith("/api"):g!=="path";const[o]=r.extractPathForTransaction(d,{path:true,method:n,customRoute:t});I.transaction=o}return I}}};const l=i.defineIntegration(_requestDataIntegration);const d=i.convertIntegrationFnToClass(g,l);function convertReqDataIntegrationOptsToAddReqDataOpts(t){const{transactionNamingScheme:n,include:{ip:o,user:r,...i}}=t;const a=[];for(const[t,n]of Object.entries(i)){if(n){a.push(t)}}let c;if(r===undefined){c=true}else if(typeof r==="boolean"){c=r}else{const t=[];for(const[n,o]of Object.entries(r)){if(o){t.push(n)}}c=t}return{include:{ip:o,user:c,request:a.length!==0?a:undefined,transaction:n}}}function getSDKName(t){try{return t.getOptions()._metadata.sdk.name}catch(t){return undefined}}n.RequestData=d;n.requestDataIntegration=l},2785:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=new Map;const a=new Set;function ensureMetadataStacksAreParsed(t){if(!r.GLOBAL_OBJ._sentryModuleMetadata){return}for(const n of Object.keys(r.GLOBAL_OBJ._sentryModuleMetadata)){const o=r.GLOBAL_OBJ._sentryModuleMetadata[n];if(a.has(n)){continue}a.add(n);const c=t(n);for(const t of c.reverse()){if(t.filename){i.set(t.filename,o);break}}}}function getMetadataForUrl(t,n){ensureMetadataStacksAreParsed(t);return i.get(n)}function addMetadataToStackFrames(t,n){try{n.exception.values.forEach(n=>{if(!n.stacktrace){return}for(const o of n.stacktrace.frames||[]){if(!o.filename){continue}const n=getMetadataForUrl(t,o.filename);if(n){o.module_metadata=n}}})}catch(t){}}function stripMetadataFromStackFrames(t){try{t.exception.values.forEach(t=>{if(!t.stacktrace){return}for(const n of t.stacktrace.frames||[]){delete n.module_metadata}})}catch(t){}}n.addMetadataToStackFrames=addMetadataToStackFrames;n.getMetadataForUrl=getMetadataForUrl;n.stripMetadataFromStackFrames=stripMetadataFromStackFrames},71:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(2985);const a=o(9609);const c=o(3959);const g=o(1181);class MetricsAggregator{constructor(t){this._client=t;this._buckets=new Map;this._bucketsTotalWeight=0;this._interval=setInterval(()=>this._flush(),i.DEFAULT_FLUSH_INTERVAL);if(this._interval.unref){this._interval.unref()}this._flushShift=Math.floor(Math.random()*i.DEFAULT_FLUSH_INTERVAL/1e3);this._forceFlush=false}add(t,n,o,l="none",d={},u=r.timestampInSeconds()){const I=Math.floor(u);const C=g.sanitizeMetricKey(n);const p=g.sanitizeTags(d);const m=g.sanitizeUnit(l);const b=g.getBucketKey(t,C,m,p);let h=this._buckets.get(b);const G=h&&t===i.SET_METRIC_TYPE?h.metric.weight:0;if(h){h.metric.add(o);if(h.timestamp<I){h.timestamp=I}}else{h={metric:new a.METRIC_MAP[t](o),timestamp:I,metricType:t,name:C,unit:m,tags:p};this._buckets.set(b,h)}const Z=typeof o==="string"?h.metric.weight-G:o;c.updateMetricSummaryOnActiveSpan(t,C,Z,m,d,b);this._bucketsTotalWeight+=h.metric.weight;if(this._bucketsTotalWeight>=i.MAX_WEIGHT){this.flush()}}flush(){this._forceFlush=true;this._flush()}close(){this._forceFlush=true;clearInterval(this._interval);this._flush()}_flush(){if(this._forceFlush){this._forceFlush=false;this._bucketsTotalWeight=0;this._captureMetrics(this._buckets);this._buckets.clear();return}const t=Math.floor(r.timestampInSeconds())-i.DEFAULT_FLUSH_INTERVAL/1e3-this._flushShift;const n=new Map;for(const[o,r]of this._buckets){if(r.timestamp<=t){n.set(o,r);this._bucketsTotalWeight-=r.metric.weight}}for(const[t]of n){this._buckets.delete(t)}this._captureMetrics(n)}_captureMetrics(t){if(t.size>0&&this._client.captureAggregateMetrics){const n=Array.from(t).map(([,t])=>t);this._client.captureAggregateMetrics(n)}}}n.MetricsAggregator=MetricsAggregator},1992:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(2985);const a=o(9609);const c=o(3959);const g=o(1181);class BrowserMetricsAggregator{constructor(t){this._client=t;this._buckets=new Map;this._interval=setInterval(()=>this.flush(),i.DEFAULT_BROWSER_FLUSH_INTERVAL)}add(t,n,o,l="none",d={},u=r.timestampInSeconds()){const I=Math.floor(u);const C=g.sanitizeMetricKey(n);const p=g.sanitizeTags(d);const m=g.sanitizeUnit(l);const b=g.getBucketKey(t,C,m,p);let h=this._buckets.get(b);const G=h&&t===i.SET_METRIC_TYPE?h.metric.weight:0;if(h){h.metric.add(o);if(h.timestamp<I){h.timestamp=I}}else{h={metric:new a.METRIC_MAP[t](o),timestamp:I,metricType:t,name:C,unit:m,tags:p};this._buckets.set(b,h)}const Z=typeof o==="string"?h.metric.weight-G:o;c.updateMetricSummaryOnActiveSpan(t,C,Z,m,d,b)}flush(){if(this._buckets.size===0){return}if(this._client.captureAggregateMetrics){const t=Array.from(this._buckets).map(([,t])=>t);this._client.captureAggregateMetrics(t)}this._buckets.clear()}close(){clearInterval(this._interval);this.flush()}}n.BrowserMetricsAggregator=BrowserMetricsAggregator},2985:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o="c";const r="g";const i="s";const a="d";const c=5e3;const g=1e4;const l=1e4;n.COUNTER_METRIC_TYPE=o;n.DEFAULT_BROWSER_FLUSH_INTERVAL=c;n.DEFAULT_FLUSH_INTERVAL=g;n.DISTRIBUTION_METRIC_TYPE=a;n.GAUGE_METRIC_TYPE=r;n.MAX_WEIGHT=l;n.SET_METRIC_TYPE=i},3210:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1181);function createMetricEnvelope(t,n,o,i){const a={sent_at:(new Date).toISOString()};if(o&&o.sdk){a.sdk={name:o.sdk.name,version:o.sdk.version}}if(!!i&&n){a.dsn=r.dsnToString(n)}const c=createMetricEnvelopeItem(t);return r.createEnvelope(a,[c])}function createMetricEnvelopeItem(t){const n=i.serializeMetricBuckets(t);const o={type:"statsd",length:n.length};return[o,n]}n.createMetricEnvelope=createMetricEnvelope},5027:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(5913);const c=o(7961);const g=o(2985);const l=o(4738);function addToMetricsAggregator(t,n,o,g={}){const l=a.getClient();const d=a.getCurrentScope();if(l){if(!l.metricsAggregator){i.DEBUG_BUILD&&r.logger.warn("No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs");return}const{unit:a,tags:u,timestamp:I}=g;const{release:C,environment:p}=l.getOptions();const m=d.getTransaction();const b={};if(C){b.release=C}if(p){b.environment=p}if(m){b.transaction=c.spanToJSON(m).description||""}i.DEBUG_BUILD&&r.logger.log(`Adding value of ${o} to ${t} metric ${n}`);l.metricsAggregator.add(t,n,o,a,{...b,...u},I)}}function increment(t,n=1,o){addToMetricsAggregator(g.COUNTER_METRIC_TYPE,t,n,o)}function distribution(t,n,o){addToMetricsAggregator(g.DISTRIBUTION_METRIC_TYPE,t,n,o)}function set(t,n,o){addToMetricsAggregator(g.SET_METRIC_TYPE,t,n,o)}function gauge(t,n,o){addToMetricsAggregator(g.GAUGE_METRIC_TYPE,t,n,o)}const d={increment:increment,distribution:distribution,set:set,gauge:gauge,MetricsAggregator:l.MetricsAggregator,metricsAggregatorIntegration:l.metricsAggregatorIntegration};n.distribution=distribution;n.gauge=gauge;n.increment=increment;n.metrics=d;n.set=set},9609:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(2985);const i=o(1181);class CounterMetric{constructor(t){this._value=t}get weight(){return 1}add(t){this._value+=t}toString(){return`${this._value}`}}class GaugeMetric{constructor(t){this._last=t;this._min=t;this._max=t;this._sum=t;this._count=1}get weight(){return 5}add(t){this._last=t;if(t<this._min){this._min=t}if(t>this._max){this._max=t}this._sum+=t;this._count++}toString(){return`${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`}}class DistributionMetric{constructor(t){this._value=[t]}get weight(){return this._value.length}add(t){this._value.push(t)}toString(){return this._value.join(":")}}class SetMetric{constructor(t){this.first=t;this._value=new Set([t])}get weight(){return this._value.size}add(t){this._value.add(t)}toString(){return Array.from(this._value).map(t=>typeof t==="string"?i.simpleHash(t):t).join(":")}}const a={[r.COUNTER_METRIC_TYPE]:CounterMetric,[r.GAUGE_METRIC_TYPE]:GaugeMetric,[r.DISTRIBUTION_METRIC_TYPE]:DistributionMetric,[r.SET_METRIC_TYPE]:SetMetric};n.CounterMetric=CounterMetric;n.DistributionMetric=DistributionMetric;n.GaugeMetric=GaugeMetric;n.METRIC_MAP=a;n.SetMetric=SetMetric},4738:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4616);const i=o(1992);const a="MetricsAggregator";const _metricsAggregatorIntegration=()=>({name:a,setupOnce(){},setup(t){t.metricsAggregator=new i.BrowserMetricsAggregator(t)}});const c=r.defineIntegration(_metricsAggregatorIntegration);const g=r.convertIntegrationFnToClass(a,c);n.MetricsAggregator=g;n.metricsAggregatorIntegration=c},3959:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);o(1152);o(1624);o(8097);const i=o(3710);let a;function getMetricStorageForSpan(t){return a?a.get(t):undefined}function getMetricSummaryJsonForSpan(t){const n=getMetricStorageForSpan(t);if(!n){return undefined}const o={};for(const[,[t,i]]of n){if(!o[t]){o[t]=[]}o[t].push(r.dropUndefinedKeys(i))}return o}function updateMetricSummaryOnActiveSpan(t,n,o,r,c,g){const l=i.getActiveSpan();if(l){const i=getMetricStorageForSpan(l)||new Map;const d=`${t}:${n}@${r}`;const u=i.get(g);if(u){const[,t]=u;i.set(g,[d,{min:Math.min(t.min,o),max:Math.max(t.max,o),count:t.count+=1,sum:t.sum+=o,tags:t.tags}])}else{i.set(g,[d,{min:o,max:o,count:1,sum:o,tags:c}])}if(!a){a=new WeakMap}a.set(l,i)}}n.getMetricSummaryJsonForSpan=getMetricSummaryJsonForSpan;n.updateMetricSummaryOnActiveSpan=updateMetricSummaryOnActiveSpan},1181:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function getBucketKey(t,n,o,i){const a=Object.entries(r.dropUndefinedKeys(i)).sort((t,n)=>t[0].localeCompare(n[0]));return`${t}${n}${o}${a}`}function simpleHash(t){let n=0;for(let o=0;o<t.length;o++){const r=t.charCodeAt(o);n=(n<<5)-n+r;n&=n}return n>>>0}function serializeMetricBuckets(t){let n="";for(const o of t){const t=Object.entries(o.tags);const r=t.length>0?`|#${t.map(([t,n])=>`${t}:${n}`).join(",")}`:"";n+=`${o.name}@${o.unit}:${o.metric}|${o.metricType}${r}|T${o.timestamp}\n`}return n}function sanitizeUnit(t){return t.replace(/[^\w]+/gi,"_")}function sanitizeMetricKey(t){return t.replace(/[^\w\-.]+/gi,"_")}function sanitizeTagKey(t){return t.replace(/[^\w\-./]+/gi,"")}const i=[["\n","\\n"],["\r","\\r"],["\t","\\t"],["\\","\\\\"],["|","\\u{7c}"],[",","\\u{2c}"]];function getCharOrReplacement(t){for(const[n,o]of i){if(t===n){return o}}return t}function sanitizeTagValue(t){return[...t].reduce((t,n)=>t+getCharOrReplacement(n),"")}function sanitizeTags(t){const n={};for(const o in t){if(Object.prototype.hasOwnProperty.call(t,o)){const r=sanitizeTagKey(o);n[r]=sanitizeTagValue(String(t[o]))}}return n}n.getBucketKey=getBucketKey;n.sanitizeMetricKey=sanitizeMetricKey;n.sanitizeTags=sanitizeTags;n.sanitizeUnit=sanitizeUnit;n.serializeMetricBuckets=serializeMetricBuckets;n.simpleHash=simpleHash},9450:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(8407);const a=o(1742);const c=o(6659);const g=100;let l;class Scope{constructor(){this._notifyingListeners=false;this._scopeListeners=[];this._eventProcessors=[];this._breadcrumbs=[];this._attachments=[];this._user={};this._tags={};this._extra={};this._contexts={};this._sdkProcessingMetadata={};this._propagationContext=generatePropagationContext()}static clone(t){return t?t.clone():new Scope}clone(){const t=new Scope;t._breadcrumbs=[...this._breadcrumbs];t._tags={...this._tags};t._extra={...this._extra};t._contexts={...this._contexts};t._user=this._user;t._level=this._level;t._span=this._span;t._session=this._session;t._transactionName=this._transactionName;t._fingerprint=this._fingerprint;t._eventProcessors=[...this._eventProcessors];t._requestSession=this._requestSession;t._attachments=[...this._attachments];t._sdkProcessingMetadata={...this._sdkProcessingMetadata};t._propagationContext={...this._propagationContext};t._client=this._client;return t}setClient(t){this._client=t}getClient(){return this._client}addScopeListener(t){this._scopeListeners.push(t)}addEventProcessor(t){this._eventProcessors.push(t);return this}setUser(t){this._user=t||{email:undefined,id:undefined,ip_address:undefined,segment:undefined,username:undefined};if(this._session){a.updateSession(this._session,{user:t})}this._notifyScopeListeners();return this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(t){this._requestSession=t;return this}setTags(t){this._tags={...this._tags,...t};this._notifyScopeListeners();return this}setTag(t,n){this._tags={...this._tags,[t]:n};this._notifyScopeListeners();return this}setExtras(t){this._extra={...this._extra,...t};this._notifyScopeListeners();return this}setExtra(t,n){this._extra={...this._extra,[t]:n};this._notifyScopeListeners();return this}setFingerprint(t){this._fingerprint=t;this._notifyScopeListeners();return this}setLevel(t){this._level=t;this._notifyScopeListeners();return this}setTransactionName(t){this._transactionName=t;this._notifyScopeListeners();return this}setContext(t,n){if(n===null){delete this._contexts[t]}else{this._contexts[t]=n}this._notifyScopeListeners();return this}setSpan(t){this._span=t;this._notifyScopeListeners();return this}getSpan(){return this._span}getTransaction(){const t=this._span;return t&&t.transaction}setSession(t){if(!t){delete this._session}else{this._session=t}this._notifyScopeListeners();return this}getSession(){return this._session}update(t){if(!t){return this}const n=typeof t==="function"?t(this):t;if(n instanceof Scope){const t=n.getScopeData();this._tags={...this._tags,...t.tags};this._extra={...this._extra,...t.extra};this._contexts={...this._contexts,...t.contexts};if(t.user&&Object.keys(t.user).length){this._user=t.user}if(t.level){this._level=t.level}if(t.fingerprint.length){this._fingerprint=t.fingerprint}if(n.getRequestSession()){this._requestSession=n.getRequestSession()}if(t.propagationContext){this._propagationContext=t.propagationContext}}else if(r.isPlainObject(n)){const n=t;this._tags={...this._tags,...n.tags};this._extra={...this._extra,...n.extra};this._contexts={...this._contexts,...n.contexts};if(n.user){this._user=n.user}if(n.level){this._level=n.level}if(n.fingerprint){this._fingerprint=n.fingerprint}if(n.requestSession){this._requestSession=n.requestSession}if(n.propagationContext){this._propagationContext=n.propagationContext}}return this}clear(){this._breadcrumbs=[];this._tags={};this._extra={};this._user={};this._contexts={};this._level=undefined;this._transactionName=undefined;this._fingerprint=undefined;this._requestSession=undefined;this._span=undefined;this._session=undefined;this._notifyScopeListeners();this._attachments=[];this._propagationContext=generatePropagationContext();return this}addBreadcrumb(t,n){const o=typeof n==="number"?n:g;if(o<=0){return this}const i={timestamp:r.dateTimestampInSeconds(),...t};const a=this._breadcrumbs;a.push(i);this._breadcrumbs=a.length>o?a.slice(-o):a;this._notifyScopeListeners();return this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){this._breadcrumbs=[];this._notifyScopeListeners();return this}addAttachment(t){this._attachments.push(t);return this}getAttachments(){const t=this.getScopeData();return t.attachments}clearAttachments(){this._attachments=[];return this}getScopeData(){const{_breadcrumbs:t,_attachments:n,_contexts:o,_tags:r,_extra:i,_user:a,_level:c,_fingerprint:g,_eventProcessors:l,_propagationContext:d,_sdkProcessingMetadata:u,_transactionName:I,_span:C}=this;return{breadcrumbs:t,attachments:n,contexts:o,tags:r,extra:i,user:a,level:c,fingerprint:g||[],eventProcessors:l,propagationContext:d,sdkProcessingMetadata:u,transactionName:I,span:C}}applyToEvent(t,n={},o=[]){c.applyScopeDataToEvent(t,this.getScopeData());const r=[...o,...i.getGlobalEventProcessors(),...this._eventProcessors];return i.notifyEventProcessors(r,t,n)}setSDKProcessingMetadata(t){this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...t};return this}setPropagationContext(t){this._propagationContext=t;return this}getPropagationContext(){return this._propagationContext}captureException(t,n){const o=n&&n.event_id?n.event_id:r.uuid4();if(!this._client){r.logger.warn("No client configured on scope - will not capture exception!");return o}const i=new Error("Sentry syntheticException");this._client.captureException(t,{originalException:t,syntheticException:i,...n,event_id:o},this);return o}captureMessage(t,n,o){const i=o&&o.event_id?o.event_id:r.uuid4();if(!this._client){r.logger.warn("No client configured on scope - will not capture message!");return i}const a=new Error(t);this._client.captureMessage(t,n,{originalException:t,syntheticException:a,...o,event_id:i},this);return i}captureEvent(t,n){const o=n&&n.event_id?n.event_id:r.uuid4();if(!this._client){r.logger.warn("No client configured on scope - will not capture event!");return o}this._client.captureEvent(t,{...n,event_id:o},this);return o}_notifyScopeListeners(){if(!this._notifyingListeners){this._notifyingListeners=true;this._scopeListeners.forEach(t=>{t(this)});this._notifyingListeners=false}}}function getGlobalScope(){if(!l){l=new Scope}return l}function setGlobalScope(t){l=t}function generatePropagationContext(){return{traceId:r.uuid4(),spanId:r.uuid4().substring(16)}}n.Scope=Scope;n.getGlobalScope=getGlobalScope;n.setGlobalScope=setGlobalScope},1782:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(5913);const c=o(1693);function initAndBind(t,n){if(n.debug===true){if(i.DEBUG_BUILD){r.logger.enable()}else{r.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})}}const o=a.getCurrentScope();o.update(n.initialScope);const c=new t(n);setCurrentClient(c);initializeClient(c)}function setCurrentClient(t){const n=c.getCurrentHub();const o=n.getStackTop();o.client=t;o.scope.setClient(t)}function initializeClient(t){if(t.init){t.init()}else if(t.setupIntegrations){t.setupIntegrations()}}n.initAndBind=initAndBind;n.setCurrentClient=setCurrentClient},1985:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o="sentry.source";const r="sentry.sample_rate";const i="sentry.op";const a="sentry.origin";const c="profile_id";n.SEMANTIC_ATTRIBUTE_PROFILE_ID=c;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=i;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=a;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=r;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=o},3928:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(6038);const a=o(3345);const c=o(1152);const g=o(5913);const l=o(71);const d=o(7865);const u=o(5542);const I=o(7961);const C=o(7992);o(8097);const p=o(1272);class ServerRuntimeClient extends i.BaseClient{constructor(t){u.addTracingExtensions();super(t);if(t._experiments&&t._experiments["metricsAggregator"]){this.metricsAggregator=new l.MetricsAggregator(this)}}eventFromException(t,n){return r.resolvedSyncPromise(r.eventFromUnknownInput(g.getClient(),this._options.stackParser,t,n))}eventFromMessage(t,n="info",o){return r.resolvedSyncPromise(r.eventFromMessage(this._options.stackParser,t,n,o,this._options.attachStacktrace))}captureException(t,n,o){if(this._options.autoSessionTracking&&this._sessionFlusher&&o){const t=o.getRequestSession();if(t&&t.status==="ok"){t.status="errored"}}return super.captureException(t,n,o)}captureEvent(t,n,o){if(this._options.autoSessionTracking&&this._sessionFlusher&&o){const n=t.type||"exception";const r=n==="exception"&&t.exception&&t.exception.values&&t.exception.values.length>0;if(r){const t=o.getRequestSession();if(t&&t.status==="ok"){t.status="errored"}}}return super.captureEvent(t,n,o)}close(t){if(this._sessionFlusher){this._sessionFlusher.close()}return super.close(t)}initSessionFlusher(){const{release:t,environment:n}=this._options;if(!t){c.DEBUG_BUILD&&r.logger.warn("Cannot initialise an instance of SessionFlusher if no release is provided!")}else{this._sessionFlusher=new d.SessionFlusher(this,{release:t,environment:n})}}captureCheckIn(t,n,o){const i="checkInId"in t&&t.checkInId?t.checkInId:r.uuid4();if(!this._isEnabled()){c.DEBUG_BUILD&&r.logger.warn("SDK not enabled, will not capture checkin.");return i}const g=this.getOptions();const{release:l,environment:d,tunnel:u}=g;const I={check_in_id:i,monitor_slug:t.monitorSlug,status:t.status,release:l,environment:d};if("duration"in t){I.duration=t.duration}if(n){I.monitor_config={schedule:n.schedule,checkin_margin:n.checkinMargin,max_runtime:n.maxRuntime,timezone:n.timezone}}const[C,p]=this._getTraceInfoFromScope(o);if(p){I.contexts={trace:p}}const m=a.createCheckInEnvelope(I,C,this.getSdkMetadata(),u,this.getDsn());c.DEBUG_BUILD&&r.logger.info("Sending checkin:",t.monitorSlug,t.status);this._sendEnvelope(m);return i}_captureRequestSession(){if(!this._sessionFlusher){c.DEBUG_BUILD&&r.logger.warn("Discarded request mode session because autoSessionTracking option was disabled")}else{this._sessionFlusher.incrementSessionStatusCount()}}_prepareEvent(t,n,o,r){if(this._options.platform){t.platform=t.platform||this._options.platform}if(this._options.runtime){t.contexts={...t.contexts,runtime:(t.contexts||{}).runtime||this._options.runtime}}if(this._options.serverName){t.server_name=t.server_name||this._options.serverName}return super._prepareEvent(t,n,o,r)}_getTraceInfoFromScope(t){if(!t){return[undefined,undefined]}const n=t.getSpan();if(n){const t=C.getRootSpan(n)?p.getDynamicSamplingContextFromSpan(n):undefined;return[t,I.spanToTraceContext(n)]}const{traceId:o,spanId:r,parentSpanId:i,dsc:a}=t.getPropagationContext();const c={trace_id:o,span_id:r,parent_span_id:i};if(a){return[a,c]}return[p.getDynamicSamplingContextFromClient(o,this,t),c]}}n.ServerRuntimeClient=ServerRuntimeClient},1742:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function makeSession(t){const n=r.timestampInSeconds();const o={sid:r.uuid4(),init:true,timestamp:n,started:n,duration:0,status:"ok",errors:0,ignoreDuration:false,toJSON:()=>sessionToJSON(o)};if(t){updateSession(o,t)}return o}function updateSession(t,n={}){if(n.user){if(!t.ipAddress&&n.user.ip_address){t.ipAddress=n.user.ip_address}if(!t.did&&!n.did){t.did=n.user.id||n.user.email||n.user.username}}t.timestamp=n.timestamp||r.timestampInSeconds();if(n.abnormal_mechanism){t.abnormal_mechanism=n.abnormal_mechanism}if(n.ignoreDuration){t.ignoreDuration=n.ignoreDuration}if(n.sid){t.sid=n.sid.length===32?n.sid:r.uuid4()}if(n.init!==undefined){t.init=n.init}if(!t.did&&n.did){t.did=`${n.did}`}if(typeof n.started==="number"){t.started=n.started}if(t.ignoreDuration){t.duration=undefined}else if(typeof n.duration==="number"){t.duration=n.duration}else{const n=t.timestamp-t.started;t.duration=n>=0?n:0}if(n.release){t.release=n.release}if(n.environment){t.environment=n.environment}if(!t.ipAddress&&n.ipAddress){t.ipAddress=n.ipAddress}if(!t.userAgent&&n.userAgent){t.userAgent=n.userAgent}if(typeof n.errors==="number"){t.errors=n.errors}if(n.status){t.status=n.status}}function closeSession(t,n){let o={};if(n){o={status:n}}else if(t.status==="ok"){o={status:"exited"}}updateSession(t,o)}function sessionToJSON(t){return r.dropUndefinedKeys({sid:`${t.sid}`,init:t.init,started:new Date(t.started*1e3).toISOString(),timestamp:new Date(t.timestamp*1e3).toISOString(),status:t.status,errors:t.errors,did:typeof t.did==="number"||typeof t.did==="string"?`${t.did}`:undefined,duration:t.duration,abnormal_mechanism:t.abnormal_mechanism,attrs:{release:t.release,environment:t.environment,ip_address:t.ipAddress,user_agent:t.userAgent}})}n.closeSession=closeSession;n.makeSession=makeSession;n.updateSession=updateSession},7865:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(5913);class SessionFlusher{constructor(t,n){this._client=t;this.flushTimeout=60;this._pendingAggregates={};this._isEnabled=true;this._intervalId=setInterval(()=>this.flush(),this.flushTimeout*1e3);if(this._intervalId.unref){this._intervalId.unref()}this._sessionAttrs=n}flush(){const t=this.getSessionAggregates();if(t.aggregates.length===0){return}this._pendingAggregates={};this._client.sendSession(t)}getSessionAggregates(){const t=Object.keys(this._pendingAggregates).map(t=>this._pendingAggregates[parseInt(t)]);const n={attrs:this._sessionAttrs,aggregates:t};return r.dropUndefinedKeys(n)}close(){clearInterval(this._intervalId);this._isEnabled=false;this.flush()}incrementSessionStatusCount(){if(!this._isEnabled){return}const t=i.getCurrentScope();const n=t.getRequestSession();if(n&&n.status){this._incrementSessionStatusCount(n.status,new Date);t.setRequestSession(undefined)}}_incrementSessionStatusCount(t,n){const o=new Date(n).setSeconds(0,0);this._pendingAggregates[o]=this._pendingAggregates[o]||{};const r=this._pendingAggregates[o];if(!r.started){r.started=new Date(o).toISOString()}switch(t){case"errored":r.errored=(r.errored||0)+1;return r.errored;case"ok":r.exited=(r.exited||0)+1;return r.exited;default:r.crashed=(r.crashed||0)+1;return r.crashed}}}n.SessionFlusher=SessionFlusher},3644:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function createSpanEnvelope(t,n){const o={sent_at:(new Date).toISOString()};if(n){o.dsn=r.dsnToString(n)}const i=t.map(createSpanItem);return r.createEnvelope(o,i)}function createSpanItem(t){const n={type:"span"};return[n,t]}n.createSpanEnvelope=createSpanEnvelope},1272:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(19);const a=o(5913);const c=o(7992);const g=o(7961);function getDynamicSamplingContextFromClient(t,n,o){const a=n.getOptions();const{publicKey:c}=n.getDsn()||{};const{segment:g}=o&&o.getUser()||{};const l=r.dropUndefinedKeys({environment:a.environment||i.DEFAULT_ENVIRONMENT,release:a.release,user_segment:g,public_key:c,trace_id:t});n.emit&&n.emit("createDsc",l);return l}function getDynamicSamplingContextFromSpan(t){const n=a.getClient();if(!n){return{}}const o=getDynamicSamplingContextFromClient(g.spanToJSON(t).trace_id||"",n,a.getCurrentScope());const r=c.getRootSpan(t);if(!r){return o}const i=r&&r._frozenDynamicSamplingContext;if(i){return i}const{sampleRate:l,source:d}=r.metadata;if(l!=null){o.sample_rate=`${l}`}const u=g.spanToJSON(r);if(d&&d!=="url"){o.transaction=u.description}o.sampled=String(g.spanIsSampled(r));n.emit&&n.emit("createDsc",o);return o}n.getDynamicSamplingContextFromClient=getDynamicSamplingContextFromClient;n.getDynamicSamplingContextFromSpan=getDynamicSamplingContextFromSpan},1624:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(7082);let c=false;function registerErrorInstrumentation(){if(c){return}c=true;r.addGlobalErrorInstrumentationHandler(errorCallback);r.addGlobalUnhandledRejectionInstrumentationHandler(errorCallback)}function errorCallback(){const t=a.getActiveTransaction();if(t){const n="internal_error";i.DEBUG_BUILD&&r.logger.log(`[Tracing] Transaction: ${n} -> Global error occured`);t.setStatus(n)}}errorCallback.tag="sentry_tracingErrorCallback";n.registerErrorInstrumentation=registerErrorInstrumentation},5542:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(1693);const c=o(7961);const g=o(1624);const l=o(8245);const d=o(2594);const u=o(6163);function traceHeaders(){const t=this.getScope();const n=t.getSpan();return n?{"sentry-trace":c.spanToTraceHeader(n)}:{}}function _startTransaction(t,n){const o=this.getClient();const a=o&&o.getOptions()||{};const c=a.instrumenter||"sentry";const g=t.instrumenter||"sentry";if(c!==g){i.DEBUG_BUILD&&r.logger.error(`A transaction was started with instrumenter=\`${g}\`, but the SDK is configured with the \`${c}\` instrumenter.\nThe transaction will not be sampled. Please use the ${c} instrumentation to start transactions.`);t.sampled=false}let l=new u.Transaction(t,this);l=d.sampleTransaction(l,a,{name:t.name,parentSampled:t.parentSampled,transactionContext:t,attributes:{...t.data,...t.attributes},...n});if(l.isRecording()){l.initSpanRecorder(a._experiments&&a._experiments.maxSpans)}if(o&&o.emit){o.emit("startTransaction",l)}return l}function startIdleTransaction(t,n,o,r,i,a,c,g=false){const u=t.getClient();const I=u&&u.getOptions()||{};let C=new l.IdleTransaction(n,t,o,r,c,i,g);C=d.sampleTransaction(C,I,{name:n.name,parentSampled:n.parentSampled,transactionContext:n,attributes:{...n.data,...n.attributes},...a});if(C.isRecording()){C.initSpanRecorder(I._experiments&&I._experiments.maxSpans)}if(u&&u.emit){u.emit("startTransaction",C)}return C}function addTracingExtensions(){const t=a.getMainCarrier();if(!t.__SENTRY__){return}t.__SENTRY__.extensions=t.__SENTRY__.extensions||{};if(!t.__SENTRY__.extensions.startTransaction){t.__SENTRY__.extensions.startTransaction=_startTransaction}if(!t.__SENTRY__.extensions.traceHeaders){t.__SENTRY__.extensions.traceHeaders=traceHeaders}g.registerErrorInstrumentation()}n.addTracingExtensions=addTracingExtensions;n.startIdleTransaction=startIdleTransaction},8245:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(7961);const c=o(9835);const g=o(6163);const l={idleTimeout:1e3,finalTimeout:3e4,heartbeatInterval:5e3};const d="finishReason";const u=["heartbeatFailed","idleTimeout","documentHidden","finalTimeout","externalFinish","cancelled"];class IdleTransactionSpanRecorder extends c.SpanRecorder{constructor(t,n,o,r){super(r);this._pushActivity=t;this._popActivity=n;this.transactionSpanId=o}add(t){if(t.spanContext().spanId!==this.transactionSpanId){const n=t.end;t.end=(...o)=>{this._popActivity(t.spanContext().spanId);return n.apply(t,o)};if(a.spanToJSON(t).timestamp===undefined){this._pushActivity(t.spanContext().spanId)}}super.add(t)}}class IdleTransaction extends g.Transaction{constructor(t,n,o=l.idleTimeout,a=l.finalTimeout,c=l.heartbeatInterval,g=false,d=false){super(t,n);this._idleHub=n;this._idleTimeout=o;this._finalTimeout=a;this._heartbeatInterval=c;this._onScope=g;this.activities={};this._heartbeatCounter=0;this._finished=false;this._idleTimeoutCanceledPermanently=false;this._beforeFinishCallbacks=[];this._finishReason=u[4];this._autoFinishAllowed=!d;if(g){i.DEBUG_BUILD&&r.logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);n.getScope().setSpan(this)}if(!d){this._restartIdleTimeout()}setTimeout(()=>{if(!this._finished){this.setStatus("deadline_exceeded");this._finishReason=u[3];this.end()}},this._finalTimeout)}end(t){const n=a.spanTimeInputToSeconds(t);this._finished=true;this.activities={};if(this.op==="ui.action.click"){this.setAttribute(d,this._finishReason)}if(this.spanRecorder){i.DEBUG_BUILD&&r.logger.log("[Tracing] finishing IdleTransaction",new Date(n*1e3).toISOString(),this.op);for(const t of this._beforeFinishCallbacks){t(this,n)}this.spanRecorder.spans=this.spanRecorder.spans.filter(t=>{if(t.spanContext().spanId===this.spanContext().spanId){return true}if(!a.spanToJSON(t).timestamp){t.setStatus("cancelled");t.end(n);i.DEBUG_BUILD&&r.logger.log("[Tracing] cancelling span since transaction ended early",JSON.stringify(t,undefined,2))}const{start_timestamp:o,timestamp:c}=a.spanToJSON(t);const g=o&&o<n;const l=(this._finalTimeout+this._idleTimeout)/1e3;const d=c&&o&&c-o<l;if(i.DEBUG_BUILD){const n=JSON.stringify(t,undefined,2);if(!g){r.logger.log("[Tracing] discarding Span since it happened after Transaction was finished",n)}else if(!d){r.logger.log("[Tracing] discarding Span since it finished after Transaction final timeout",n)}}return g&&d});i.DEBUG_BUILD&&r.logger.log("[Tracing] flushing IdleTransaction")}else{i.DEBUG_BUILD&&r.logger.log("[Tracing] No active IdleTransaction")}if(this._onScope){const t=this._idleHub.getScope();if(t.getTransaction()===this){t.setSpan(undefined)}}return super.end(t)}registerBeforeFinishCallback(t){this._beforeFinishCallbacks.push(t)}initSpanRecorder(t){if(!this.spanRecorder){const pushActivity=t=>{if(this._finished){return}this._pushActivity(t)};const popActivity=t=>{if(this._finished){return}this._popActivity(t)};this.spanRecorder=new IdleTransactionSpanRecorder(pushActivity,popActivity,this.spanContext().spanId,t);i.DEBUG_BUILD&&r.logger.log("Starting heartbeat");this._pingHeartbeat()}this.spanRecorder.add(this)}cancelIdleTimeout(t,{restartOnChildSpanChange:n}={restartOnChildSpanChange:true}){this._idleTimeoutCanceledPermanently=n===false;if(this._idleTimeoutID){clearTimeout(this._idleTimeoutID);this._idleTimeoutID=undefined;if(Object.keys(this.activities).length===0&&this._idleTimeoutCanceledPermanently){this._finishReason=u[5];this.end(t)}}}setFinishReason(t){this._finishReason=t}sendAutoFinishSignal(){if(!this._autoFinishAllowed){i.DEBUG_BUILD&&r.logger.log("[Tracing] Received finish signal for idle transaction.");this._restartIdleTimeout();this._autoFinishAllowed=true}}_restartIdleTimeout(t){this.cancelIdleTimeout();this._idleTimeoutID=setTimeout(()=>{if(!this._finished&&Object.keys(this.activities).length===0){this._finishReason=u[1];this.end(t)}},this._idleTimeout)}_pushActivity(t){this.cancelIdleTimeout(undefined,{restartOnChildSpanChange:!this._idleTimeoutCanceledPermanently});i.DEBUG_BUILD&&r.logger.log(`[Tracing] pushActivity: ${t}`);this.activities[t]=true;i.DEBUG_BUILD&&r.logger.log("[Tracing] new activities count",Object.keys(this.activities).length)}_popActivity(t){if(this.activities[t]){i.DEBUG_BUILD&&r.logger.log(`[Tracing] popActivity ${t}`);delete this.activities[t];i.DEBUG_BUILD&&r.logger.log("[Tracing] new activities count",Object.keys(this.activities).length)}if(Object.keys(this.activities).length===0){const t=r.timestampInSeconds();if(this._idleTimeoutCanceledPermanently){if(this._autoFinishAllowed){this._finishReason=u[5];this.end(t)}}else{this._restartIdleTimeout(t+this._idleTimeout/1e3)}}}_beat(){if(this._finished){return}const t=Object.keys(this.activities).join("");if(t===this._prevHeartbeatString){this._heartbeatCounter++}else{this._heartbeatCounter=1}this._prevHeartbeatString=t;if(this._heartbeatCounter>=3){if(this._autoFinishAllowed){i.DEBUG_BUILD&&r.logger.log("[Tracing] Transaction finished because of no change for 3 heart beats");this.setStatus("deadline_exceeded");this._finishReason=u[0];this.end()}}else{this._pingHeartbeat()}}_pingHeartbeat(){i.DEBUG_BUILD&&r.logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);setTimeout(()=>{this._beat()},this._heartbeatInterval)}}n.IdleTransaction=IdleTransaction;n.IdleTransactionSpanRecorder=IdleTransactionSpanRecorder;n.TRACING_DEFAULTS=l},5111:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(7082);function setMeasurement(t,n,o){const i=r.getActiveTransaction();if(i){i.setMeasurement(t,n,o)}}n.setMeasurement=setMeasurement},2594:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(1985);const c=o(5987);const g=o(7961);function sampleTransaction(t,n,o){if(!c.hasTracingEnabled(n)){t.sampled=false;return t}if(t.sampled!==undefined){t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(t.sampled));return t}let l;if(typeof n.tracesSampler==="function"){l=n.tracesSampler(o);t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(l))}else if(o.parentSampled!==undefined){l=o.parentSampled}else if(typeof n.tracesSampleRate!=="undefined"){l=n.tracesSampleRate;t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(l))}else{l=1;t.setAttribute(a.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,l)}if(!isValidSampleRate(l)){i.DEBUG_BUILD&&r.logger.warn("[Tracing] Discarding transaction because of invalid sample rate.");t.sampled=false;return t}if(!l){i.DEBUG_BUILD&&r.logger.log(`[Tracing] Discarding transaction because ${typeof n.tracesSampler==="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`);t.sampled=false;return t}t.sampled=Math.random()<l;if(!t.sampled){i.DEBUG_BUILD&&r.logger.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(l)})`);return t}i.DEBUG_BUILD&&r.logger.log(`[Tracing] starting ${t.op} transaction - ${g.spanToJSON(t).description}`);return t}function isValidSampleRate(t){if(r.isNaN(t)||!(typeof t==="number"||typeof t==="boolean")){i.DEBUG_BUILD&&r.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(t)} of type ${JSON.stringify(typeof t)}.`);return false}if(t<0||t>1){i.DEBUG_BUILD&&r.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${t}.`);return false}return true}n.isValidSampleRate=isValidSampleRate;n.sampleTransaction=sampleTransaction},9835:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(3959);const c=o(1985);const g=o(7992);const l=o(7961);const d=o(8097);class SpanRecorder{constructor(t=1e3){this._maxlen=t;this.spans=[]}add(t){if(this.spans.length>this._maxlen){t.spanRecorder=undefined}else{this.spans.push(t)}}}class Span{constructor(t={}){this._traceId=t.traceId||r.uuid4();this._spanId=t.spanId||r.uuid4().substring(16);this._startTime=t.startTimestamp||r.timestampInSeconds();this.tags=t.tags?{...t.tags}:{};this.data=t.data?{...t.data}:{};this.instrumenter=t.instrumenter||"sentry";this._attributes={};this.setAttributes({[c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:t.origin||"manual",[c.SEMANTIC_ATTRIBUTE_SENTRY_OP]:t.op,...t.attributes});this._name=t.name||t.description;if(t.parentSpanId){this._parentSpanId=t.parentSpanId}if("sampled"in t){this._sampled=t.sampled}if(t.status){this._status=t.status}if(t.endTimestamp){this._endTime=t.endTimestamp}if(t.exclusiveTime!==undefined){this._exclusiveTime=t.exclusiveTime}this._measurements=t.measurements?{...t.measurements}:{}}get name(){return this._name||""}set name(t){this.updateName(t)}get description(){return this._name}set description(t){this._name=t}get traceId(){return this._traceId}set traceId(t){this._traceId=t}get spanId(){return this._spanId}set spanId(t){this._spanId=t}set parentSpanId(t){this._parentSpanId=t}get parentSpanId(){return this._parentSpanId}get sampled(){return this._sampled}set sampled(t){this._sampled=t}get attributes(){return this._attributes}set attributes(t){this._attributes=t}get startTimestamp(){return this._startTime}set startTimestamp(t){this._startTime=t}get endTimestamp(){return this._endTime}set endTimestamp(t){this._endTime=t}get status(){return this._status}set status(t){this._status=t}get op(){return this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_OP]}set op(t){this.setAttribute(c.SEMANTIC_ATTRIBUTE_SENTRY_OP,t)}get origin(){return this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]}set origin(t){this.setAttribute(c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,t)}spanContext(){const{_spanId:t,_traceId:n,_sampled:o}=this;return{spanId:t,traceId:n,traceFlags:o?l.TRACE_FLAG_SAMPLED:l.TRACE_FLAG_NONE}}startChild(t){const n=new Span({...t,parentSpanId:this._spanId,sampled:this._sampled,traceId:this._traceId});n.spanRecorder=this.spanRecorder;if(n.spanRecorder){n.spanRecorder.add(n)}const o=g.getRootSpan(this);n.transaction=o;if(i.DEBUG_BUILD&&o){const i=t&&t.op||"< unknown op >";const a=l.spanToJSON(n).description||"< unknown name >";const c=o.spanContext().spanId;const g=`[Tracing] Starting '${i}' span on transaction '${a}' (${c}).`;r.logger.log(g);this._logMessage=g}return n}setTag(t,n){this.tags={...this.tags,[t]:n};return this}setData(t,n){this.data={...this.data,[t]:n};return this}setAttribute(t,n){if(n===undefined){delete this._attributes[t]}else{this._attributes[t]=n}}setAttributes(t){Object.keys(t).forEach(n=>this.setAttribute(n,t[n]))}setStatus(t){this._status=t;return this}setHttpStatus(t){d.setHttpStatus(this,t);return this}setName(t){this.updateName(t)}updateName(t){this._name=t;return this}isSuccess(){return this._status==="ok"}finish(t){return this.end(t)}end(t){if(this._endTime){return}const n=g.getRootSpan(this);if(i.DEBUG_BUILD&&n&&n.spanContext().spanId!==this._spanId){const t=this._logMessage;if(t){r.logger.log(t.replace("Starting","Finishing"))}}this._endTime=l.spanTimeInputToSeconds(t)}toTraceparent(){return l.spanToTraceHeader(this)}toContext(){return r.dropUndefinedKeys({data:this._getData(),description:this._name,endTimestamp:this._endTime,op:this.op,parentSpanId:this._parentSpanId,sampled:this._sampled,spanId:this._spanId,startTimestamp:this._startTime,status:this._status,tags:this.tags,traceId:this._traceId})}updateWithContext(t){this.data=t.data||{};this._name=t.name||t.description;this._endTime=t.endTimestamp;this.op=t.op;this._parentSpanId=t.parentSpanId;this._sampled=t.sampled;this._spanId=t.spanId||this._spanId;this._startTime=t.startTimestamp||this._startTime;this._status=t.status;this.tags=t.tags||{};this._traceId=t.traceId||this._traceId;return this}getTraceContext(){return l.spanToTraceContext(this)}getSpanJSON(){return r.dropUndefinedKeys({data:this._getData(),description:this._name,op:this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_OP],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:this._status,tags:Object.keys(this.tags).length>0?this.tags:undefined,timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN],_metrics_summary:a.getMetricSummaryJsonForSpan(this),profile_id:this._attributes[c.SEMANTIC_ATTRIBUTE_PROFILE_ID],exclusive_time:this._exclusiveTime,measurements:Object.keys(this._measurements).length>0?this._measurements:undefined})}isRecording(){return!this._endTime&&!!this._sampled}toJSON(){return this.getSpanJSON()}_getData(){const{data:t,_attributes:n}=this;const o=Object.keys(t).length>0;const r=Object.keys(n).length>0;if(!o&&!r){return undefined}if(o&&r){return{...t,...n}}return o?t:n}}n.Span=Span;n.SpanRecorder=SpanRecorder},8097:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});n.SpanStatus=void 0;(function(t){const n="ok";t["Ok"]=n;const o="deadline_exceeded";t["DeadlineExceeded"]=o;const r="unauthenticated";t["Unauthenticated"]=r;const i="permission_denied";t["PermissionDenied"]=i;const a="not_found";t["NotFound"]=a;const c="resource_exhausted";t["ResourceExhausted"]=c;const g="invalid_argument";t["InvalidArgument"]=g;const l="unimplemented";t["Unimplemented"]=l;const d="unavailable";t["Unavailable"]=d;const u="internal_error";t["InternalError"]=u;const I="unknown_error";t["UnknownError"]=I;const C="cancelled";t["Cancelled"]=C;const p="already_exists";t["AlreadyExists"]=p;const m="failed_precondition";t["FailedPrecondition"]=m;const b="aborted";t["Aborted"]=b;const h="out_of_range";t["OutOfRange"]=h;const G="data_loss";t["DataLoss"]=G})(n.SpanStatus||(n.SpanStatus={}));function getSpanStatusFromHttpCode(t){if(t<400&&t>=100){return"ok"}if(t>=400&&t<500){switch(t){case 401:return"unauthenticated";case 403:return"permission_denied";case 404:return"not_found";case 409:return"already_exists";case 413:return"failed_precondition";case 429:return"resource_exhausted";default:return"invalid_argument"}}if(t>=500&&t<600){switch(t){case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline_exceeded";default:return"internal_error"}}return"unknown_error"}const o=getSpanStatusFromHttpCode;function setHttpStatus(t,n){t.setTag("http.status_code",String(n));t.setData("http.response.status_code",n);const o=getSpanStatusFromHttpCode(n);if(o!=="unknown_error"){t.setStatus(o)}}n.getSpanStatusFromHttpCode=getSpanStatusFromHttpCode;n.setHttpStatus=setHttpStatus;n.spanStatusfromHttpCode=o},3710:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(1693);const c=o(7961);o(1624);o(8097);const g=o(1272);const l=o(5913);const d=o(1996);const u=o(5987);function trace(t,n,o=()=>{},r=()=>{}){const i=a.getCurrentHub();const c=l.getCurrentScope();const g=c.getSpan();const u=normalizeContext(t);const I=createChildSpanOrTransaction(i,{parentSpan:g,spanContext:u,forceTransaction:false,scope:c});c.setSpan(I);return d.handleCallbackErrors(()=>n(I),t=>{I&&I.setStatus("internal_error");o(t,I)},()=>{I&&I.end();c.setSpan(g);r()})}function startSpan(t,n){const o=normalizeContext(t);return a.runWithAsyncContext(()=>l.withScope(t.scope,r=>{const i=a.getCurrentHub();const g=r.getSpan();const l=t.onlyIfParent&&!g;const u=l?undefined:createChildSpanOrTransaction(i,{parentSpan:g,spanContext:o,forceTransaction:t.forceTransaction,scope:r});return d.handleCallbackErrors(()=>n(u),()=>{if(u){const{status:t}=c.spanToJSON(u);if(!t||t==="ok"){u.setStatus("internal_error")}}},()=>u&&u.end())}))}const I=startSpan;function startSpanManual(t,n){const o=normalizeContext(t);return a.runWithAsyncContext(()=>l.withScope(t.scope,r=>{const i=a.getCurrentHub();const g=r.getSpan();const l=t.onlyIfParent&&!g;const u=l?undefined:createChildSpanOrTransaction(i,{parentSpan:g,spanContext:o,forceTransaction:t.forceTransaction,scope:r});function finishAndSetSpan(){u&&u.end()}return d.handleCallbackErrors(()=>n(u,finishAndSetSpan),()=>{if(u&&u.isRecording()){const{status:t}=c.spanToJSON(u);if(!t||t==="ok"){u.setStatus("internal_error")}}})}))}function startInactiveSpan(t){if(!u.hasTracingEnabled()){return undefined}const n=normalizeContext(t);const o=a.getCurrentHub();const r=t.scope?t.scope.getSpan():getActiveSpan();const i=t.onlyIfParent&&!r;if(i){return undefined}const c=t.scope||l.getCurrentScope();const g=c.clone();return createChildSpanOrTransaction(o,{parentSpan:r,spanContext:n,forceTransaction:t.forceTransaction,scope:g})}function getActiveSpan(){return l.getCurrentScope().getSpan()}const continueTrace=({sentryTrace:t,baggage:n},o)=>{const c=l.getCurrentScope();const{traceparentData:g,dynamicSamplingContext:d,propagationContext:u}=r.tracingContextFromHeaders(t,n);c.setPropagationContext(u);if(i.DEBUG_BUILD&&g){r.logger.log(`[Tracing] Continuing trace ${g.traceId}.`)}const I={...g,metadata:r.dropUndefinedKeys({dynamicSamplingContext:d})};if(!o){return I}return a.runWithAsyncContext(()=>o(I))};function createChildSpanOrTransaction(t,{parentSpan:n,spanContext:o,forceTransaction:r,scope:i}){if(!u.hasTracingEnabled()){return undefined}const l=a.getIsolationScope();let d;if(n&&!r){d=n.startChild(o)}else if(n){const r=g.getDynamicSamplingContextFromSpan(n);const{traceId:i,spanId:a}=n.spanContext();const l=c.spanIsSampled(n);d=t.startTransaction({traceId:i,parentSpanId:a,parentSampled:l,...o,metadata:{dynamicSamplingContext:r,...o.metadata}})}else{const{traceId:n,dsc:r,parentSpanId:a,sampled:c}={...l.getPropagationContext(),...i.getPropagationContext()};d=t.startTransaction({traceId:n,parentSpanId:a,parentSampled:c,...o,metadata:{dynamicSamplingContext:r,...o.metadata}})}i.setSpan(d);setCapturedScopesOnSpan(d,i,l);return d}function normalizeContext(t){if(t.startTime){const n={...t};n.startTimestamp=c.spanTimeInputToSeconds(t.startTime);delete n.startTime;return n}return t}const C="_sentryScope";const p="_sentryIsolationScope";function setCapturedScopesOnSpan(t,n,o){if(t){r.addNonEnumerableProperty(t,p,o);r.addNonEnumerableProperty(t,C,n)}}function getCapturedScopesOnSpan(t){return{scope:t[C],isolationScope:t[p]}}n.continueTrace=continueTrace;n.getActiveSpan=getActiveSpan;n.getCapturedScopesOnSpan=getCapturedScopesOnSpan;n.startActiveSpan=I;n.startInactiveSpan=startInactiveSpan;n.startSpan=startSpan;n.startSpanManual=startSpanManual;n.trace=trace},6163:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=o(1693);const c=o(3959);const g=o(1985);const l=o(7961);const d=o(1272);const u=o(9835);const I=o(3710);class Transaction extends u.Span{constructor(t,n){super(t);this._contexts={};this._hub=n||a.getCurrentHub();this._name=t.name||"";this._metadata={...t.metadata};this._trimEnd=t.trimEnd;this.transaction=this;const o=this._metadata.dynamicSamplingContext;if(o){this._frozenDynamicSamplingContext={...o}}}get name(){return this._name}set name(t){this.setName(t)}get metadata(){return{source:"custom",spanMetadata:{},...this._metadata,...this._attributes[g.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]&&{source:this._attributes[g.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]},...this._attributes[g.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]&&{sampleRate:this._attributes[g.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]}}}set metadata(t){this._metadata=t}setName(t,n="custom"){this._name=t;this.setAttribute(g.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n)}updateName(t){this._name=t;return this}initSpanRecorder(t=1e3){if(!this.spanRecorder){this.spanRecorder=new u.SpanRecorder(t)}this.spanRecorder.add(this)}setContext(t,n){if(n===null){delete this._contexts[t]}else{this._contexts[t]=n}}setMeasurement(t,n,o=""){this._measurements[t]={value:n,unit:o}}setMetadata(t){this._metadata={...this._metadata,...t}}end(t){const n=l.spanTimeInputToSeconds(t);const o=this._finishTransaction(n);if(!o){return undefined}return this._hub.captureEvent(o)}toContext(){const t=super.toContext();return r.dropUndefinedKeys({...t,name:this._name,trimEnd:this._trimEnd})}updateWithContext(t){super.updateWithContext(t);this._name=t.name||"";this._trimEnd=t.trimEnd;return this}getDynamicSamplingContext(){return d.getDynamicSamplingContextFromSpan(this)}setHub(t){this._hub=t}getProfileId(){if(this._contexts!==undefined&&this._contexts["profile"]!==undefined){return this._contexts["profile"].profile_id}return undefined}_finishTransaction(t){if(this._endTime!==undefined){return undefined}if(!this._name){i.DEBUG_BUILD&&r.logger.warn("Transaction has no name, falling back to `<unlabeled transaction>`.");this._name="<unlabeled transaction>"}super.end(t);const n=this._hub.getClient();if(n&&n.emit){n.emit("finishTransaction",this)}if(this._sampled!==true){i.DEBUG_BUILD&&r.logger.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled.");if(n){n.recordDroppedEvent("sample_rate","transaction")}return undefined}const o=this.spanRecorder?this.spanRecorder.spans.filter(t=>t!==this&&l.spanToJSON(t).timestamp):[];if(this._trimEnd&&o.length>0){const t=o.map(t=>l.spanToJSON(t).timestamp).filter(Boolean);this._endTime=t.reduce((t,n)=>t>n?t:n)}const{scope:a,isolationScope:g}=I.getCapturedScopesOnSpan(this);const{metadata:u}=this;const{source:C}=u;const p={contexts:{...this._contexts,trace:l.spanToTraceContext(this)},spans:o,start_timestamp:this._startTime,tags:this.tags,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{...u,capturedSpanScope:a,capturedSpanIsolationScope:g,...r.dropUndefinedKeys({dynamicSamplingContext:d.getDynamicSamplingContextFromSpan(this)})},_metrics_summary:c.getMetricSummaryJsonForSpan(this),...C&&{transaction_info:{source:C}}};const m=Object.keys(this._measurements).length>0;if(m){i.DEBUG_BUILD&&r.logger.log("[Measurements] Adding measurements to transaction",JSON.stringify(this._measurements,undefined,2));p.measurements=this._measurements}i.DEBUG_BUILD&&r.logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);return p}}n.Transaction=Transaction},7082:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1693);function getActiveTransaction(t){const n=t||i.getCurrentHub();const o=n.getScope();return o.getTransaction()}const a=r.extractTraceparentData;n.stripUrlQueryAndFragment=r.stripUrlQueryAndFragment;n.extractTraceparentData=a;n.getActiveTransaction=getActiveTransaction},2412:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=30;function createTransport(t,n,o=r.makePromiseBuffer(t.bufferSize||a)){let c={};const flush=t=>o.drain(t);function send(a){const g=[];r.forEachEnvelopeItem(a,(n,o)=>{const i=r.envelopeItemTypeToDataCategory(o);if(r.isRateLimited(c,i)){const r=getEventForEnvelopeItem(n,o);t.recordDroppedEvent("ratelimit_backoff",i,r)}else{g.push(n)}});if(g.length===0){return r.resolvedSyncPromise()}const l=r.createEnvelope(a[0],g);const recordEnvelopeLoss=n=>{r.forEachEnvelopeItem(l,(o,i)=>{const a=getEventForEnvelopeItem(o,i);t.recordDroppedEvent(n,r.envelopeItemTypeToDataCategory(i),a)})};const requestTask=()=>n({body:r.serializeEnvelope(l,t.textEncoder)}).then(t=>{if(t.statusCode!==undefined&&(t.statusCode<200||t.statusCode>=300)){i.DEBUG_BUILD&&r.logger.warn(`Sentry responded with status code ${t.statusCode} to sent event.`)}c=r.updateRateLimits(c,t);return t},t=>{recordEnvelopeLoss("network_error");throw t});return o.add(requestTask).then(t=>t,t=>{if(t instanceof r.SentryError){i.DEBUG_BUILD&&r.logger.error("Skipped sending event because buffer is full.");recordEnvelopeLoss("queue_overflow");return r.resolvedSyncPromise()}else{throw t}})}send.__sentry__baseTransport__=true;return{send:send,flush:flush}}function getEventForEnvelopeItem(t,n){if(n!=="event"&&n!=="transaction"){return undefined}return Array.isArray(t)?t[1]:undefined}n.DEFAULT_TRANSPORT_BUFFER_SIZE=a;n.createTransport=createTransport},8104:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(7474);function eventFromEnvelope(t,n){let o;r.forEachEnvelopeItem(t,(t,r)=>{if(n.includes(r)){o=Array.isArray(t)?t[1]:undefined}return!!o});return o}function makeOverrideReleaseTransport(t,n){return o=>{const r=t(o);return{...r,send:async t=>{const o=eventFromEnvelope(t,["event","transaction","profile","replay_event"]);if(o){o.release=n}return r.send(t)}}}}function overrideDsn(t,n){return r.createEnvelope(n?{...t[0],dsn:n}:t[0],t[1])}function makeMultiplexedTransport(t,n){return o=>{const a=t(o);const c=new Map;function getTransport(n,a){const g=a?`${n}:${a}`:n;let l=c.get(g);if(!l){const d=r.dsnFromString(n);if(!d){return undefined}const u=i.getEnvelopeEndpointWithUrlEncodedAuth(d,o.tunnel);l=a?makeOverrideReleaseTransport(t,a)({...o,url:u}):t({...o,url:u});c.set(g,l)}return[n,l]}async function send(t){function getEvent(n){const o=n&&n.length?n:["event"];return eventFromEnvelope(t,o)}const o=n({envelope:t,getEvent:getEvent}).map(t=>{if(typeof t==="string"){return getTransport(t,undefined)}else{return getTransport(t.dsn,t.release)}}).filter(t=>!!t);if(o.length===0){o.push(["",a])}const r=await Promise.all(o.map(([n,o])=>o.send(overrideDsn(t,n))));return r[0]}async function flush(t){const n=[await a.flush(t)];for(const[,o]of c){n.push(await o.flush(t))}return n.every(t=>t)}return{send:send,flush:flush}}}n.eventFromEnvelope=eventFromEnvelope;n.makeMultiplexedTransport=makeMultiplexedTransport},7294:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1152);const a=100;const c=5e3;const g=36e5;function log(t,n){i.DEBUG_BUILD&&r.logger.info(`[Offline]: ${t}`,n)}function makeOfflineTransport(t){return n=>{const o=t(n);const i=n.createStore?n.createStore(n):undefined;let l=c;let d;function shouldQueue(t,o,i){if(r.envelopeContainsItemType(t,["replay_event","replay_recording","client_report"])){return false}if(n.shouldStore){return n.shouldStore(t,o,i)}return true}function flushIn(t){if(!i){return}if(d){clearTimeout(d)}d=setTimeout(async()=>{d=undefined;const t=await i.pop();if(t){log("Attempting to send previously queued event");void send(t).catch(t=>{log("Failed to retry sending",t)})}},t);if(typeof d!=="number"&&d.unref){d.unref()}}function flushWithBackOff(){if(d){return}flushIn(l);l=Math.min(l*2,g)}async function send(t){try{const n=await o.send(t);let i=a;if(n){if(n.headers&&n.headers["retry-after"]){i=r.parseRetryAfterHeader(n.headers["retry-after"])}else if((n.statusCode||0)>=400){return n}}flushIn(i);l=c;return n}catch(n){if(i&&await shouldQueue(t,n,l)){await i.insert(t);flushWithBackOff();log("Error sending. Event queued",n);return{}}else{throw n}}}if(n.flushAtStartup){flushWithBackOff()}return{send:send,flush:t=>o.flush(t)}}}n.MIN_DELAY=a;n.START_DELAY=c;n.makeOfflineTransport=makeOfflineTransport},6659:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(1272);const a=o(7992);const c=o(7961);function applyScopeDataToEvent(t,n){const{fingerprint:o,span:r,breadcrumbs:i,sdkProcessingMetadata:a}=n;applyDataToEvent(t,n);if(r){applySpanToEvent(t,r)}applyFingerprintToEvent(t,o);applyBreadcrumbsToEvent(t,i);applySdkMetadataToEvent(t,a)}function mergeScopeData(t,n){const{extra:o,tags:r,user:i,contexts:a,level:c,sdkProcessingMetadata:g,breadcrumbs:l,fingerprint:d,eventProcessors:u,attachments:I,propagationContext:C,transactionName:p,span:m}=n;mergeAndOverwriteScopeData(t,"extra",o);mergeAndOverwriteScopeData(t,"tags",r);mergeAndOverwriteScopeData(t,"user",i);mergeAndOverwriteScopeData(t,"contexts",a);mergeAndOverwriteScopeData(t,"sdkProcessingMetadata",g);if(c){t.level=c}if(p){t.transactionName=p}if(m){t.span=m}if(l.length){t.breadcrumbs=[...t.breadcrumbs,...l]}if(d.length){t.fingerprint=[...t.fingerprint,...d]}if(u.length){t.eventProcessors=[...t.eventProcessors,...u]}if(I.length){t.attachments=[...t.attachments,...I]}t.propagationContext={...t.propagationContext,...C}}function mergeAndOverwriteScopeData(t,n,o){if(o&&Object.keys(o).length){t[n]={...t[n]};for(const r in o){if(Object.prototype.hasOwnProperty.call(o,r)){t[n][r]=o[r]}}}}function applyDataToEvent(t,n){const{extra:o,tags:i,user:a,contexts:c,level:g,transactionName:l}=n;const d=r.dropUndefinedKeys(o);if(d&&Object.keys(d).length){t.extra={...d,...t.extra}}const u=r.dropUndefinedKeys(i);if(u&&Object.keys(u).length){t.tags={...u,...t.tags}}const I=r.dropUndefinedKeys(a);if(I&&Object.keys(I).length){t.user={...I,...t.user}}const C=r.dropUndefinedKeys(c);if(C&&Object.keys(C).length){t.contexts={...C,...t.contexts}}if(g){t.level=g}if(l){t.transaction=l}}function applyBreadcrumbsToEvent(t,n){const o=[...t.breadcrumbs||[],...n];t.breadcrumbs=o.length?o:undefined}function applySdkMetadataToEvent(t,n){t.sdkProcessingMetadata={...t.sdkProcessingMetadata,...n}}function applySpanToEvent(t,n){t.contexts={trace:c.spanToTraceContext(n),...t.contexts};const o=a.getRootSpan(n);if(o){t.sdkProcessingMetadata={dynamicSamplingContext:i.getDynamicSamplingContextFromSpan(n),...t.sdkProcessingMetadata};const r=c.spanToJSON(o).description;if(r){t.tags={transaction:r,...t.tags}}}}function applyFingerprintToEvent(t,n){t.fingerprint=t.fingerprint?r.arrayify(t.fingerprint):[];if(n){t.fingerprint=t.fingerprint.concat(n)}if(t.fingerprint&&!t.fingerprint.length){delete t.fingerprint}}n.applyScopeDataToEvent=applyScopeDataToEvent;n.mergeAndOverwriteScopeData=mergeAndOverwriteScopeData;n.mergeScopeData=mergeScopeData},7992:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function getRootSpan(t){return t.transaction}n.getRootSpan=getRootSpan},1996:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function handleCallbackErrors(t,n,o=()=>{}){let r;try{r=t()}catch(t){n(t);o();throw t}return maybeHandlePromiseRejection(r,n,o)}function maybeHandlePromiseRejection(t,n,o){if(r.isThenable(t)){return t.then(t=>{o();return t},t=>{n(t);o();throw t})}o();return t}n.handleCallbackErrors=handleCallbackErrors},5987:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5913);function hasTracingEnabled(t){if(typeof __SENTRY_TRACING__==="boolean"&&!__SENTRY_TRACING__){return false}const n=r.getClient();const o=t||n&&n.getOptions();return!!o&&(o.enableTracing||"tracesSampleRate"in o||"tracesSampler"in o)}n.hasTracingEnabled=hasTracingEnabled},859:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isSentryRequestUrl(t,n){const o=n&&isHub(n)?n.getClient():n;const r=o&&o.getDsn();const i=o&&o.getOptions().tunnel;return checkDsn(t,r)||checkTunnel(t,i)}function checkTunnel(t,n){if(!n){return false}return removeTrailingSlash(t)===removeTrailingSlash(n)}function checkDsn(t,n){return n?t.includes(n.host):false}function removeTrailingSlash(t){return t[t.length-1]==="/"?t.slice(0,-1):t}function isHub(t){return t.getClient!==undefined}n.isSentryRequestUrl=isSentryRequestUrl},1345:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parameterize(t,...n){const o=new String(String.raw(t,...n));o.__sentry_template_string__=t.join("\0").replace(/%/g,"%%").replace(/\0/g,"%s");o.__sentry_template_values__=n;return o}n.parameterize=parameterize},1735:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(19);const a=o(8407);const c=o(9450);const g=o(6659);const l=o(7961);function prepareEvent(t,n,o,i,l,d){const{normalizeDepth:u=3,normalizeMaxBreadth:I=1e3}=t;const C={...n,event_id:n.event_id||o.event_id||r.uuid4(),timestamp:n.timestamp||r.dateTimestampInSeconds()};const p=o.integrations||t.integrations.map(t=>t.name);applyClientOptions(C,t);applyIntegrationsMetadata(C,p);if(n.type===undefined){applyDebugIds(C,t.stackParser)}const m=getFinalScope(i,o.captureContext);if(o.mechanism){r.addExceptionMechanism(C,o.mechanism)}const b=l&&l.getEventProcessors?l.getEventProcessors():[];const h=c.getGlobalScope().getScopeData();if(d){const t=d.getScopeData();g.mergeScopeData(h,t)}if(m){const t=m.getScopeData();g.mergeScopeData(h,t)}const G=[...o.attachments||[],...h.attachments];if(G.length){o.attachments=G}g.applyScopeDataToEvent(C,h);const Z=[...b,...a.getGlobalEventProcessors(),...h.eventProcessors];const B=a.notifyEventProcessors(Z,C,o);return B.then(t=>{if(t){applyDebugMeta(t)}if(typeof u==="number"&&u>0){return normalizeEvent(t,u,I)}return t})}function applyClientOptions(t,n){const{environment:o,release:a,dist:c,maxValueLength:g=250}=n;if(!("environment"in t)){t.environment="environment"in n?o:i.DEFAULT_ENVIRONMENT}if(t.release===undefined&&a!==undefined){t.release=a}if(t.dist===undefined&&c!==undefined){t.dist=c}if(t.message){t.message=r.truncate(t.message,g)}const l=t.exception&&t.exception.values&&t.exception.values[0];if(l&&l.value){l.value=r.truncate(l.value,g)}const d=t.request;if(d&&d.url){d.url=r.truncate(d.url,g)}}const d=new WeakMap;function applyDebugIds(t,n){const o=r.GLOBAL_OBJ._sentryDebugIds;if(!o){return}let i;const a=d.get(n);if(a){i=a}else{i=new Map;d.set(n,i)}const c=Object.keys(o).reduce((t,r)=>{let a;const c=i.get(r);if(c){a=c}else{a=n(r);i.set(r,a)}for(let n=a.length-1;n>=0;n--){const i=a[n];if(i.filename){t[i.filename]=o[r];break}}return t},{});try{t.exception.values.forEach(t=>{t.stacktrace.frames.forEach(t=>{if(t.filename){t.debug_id=c[t.filename]}})})}catch(t){}}function applyDebugMeta(t){const n={};try{t.exception.values.forEach(t=>{t.stacktrace.frames.forEach(t=>{if(t.debug_id){if(t.abs_path){n[t.abs_path]=t.debug_id}else if(t.filename){n[t.filename]=t.debug_id}delete t.debug_id}})})}catch(t){}if(Object.keys(n).length===0){return}t.debug_meta=t.debug_meta||{};t.debug_meta.images=t.debug_meta.images||[];const o=t.debug_meta.images;Object.keys(n).forEach(t=>{o.push({type:"sourcemap",code_file:t,debug_id:n[t]})})}function applyIntegrationsMetadata(t,n){if(n.length>0){t.sdk=t.sdk||{};t.sdk.integrations=[...t.sdk.integrations||[],...n]}}function normalizeEvent(t,n,o){if(!t){return null}const i={...t,...t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map(t=>({...t,...t.data&&{data:r.normalize(t.data,n,o)}}))},...t.user&&{user:r.normalize(t.user,n,o)},...t.contexts&&{contexts:r.normalize(t.contexts,n,o)},...t.extra&&{extra:r.normalize(t.extra,n,o)}};if(t.contexts&&t.contexts.trace&&i.contexts){i.contexts.trace=t.contexts.trace;if(t.contexts.trace.data){i.contexts.trace.data=r.normalize(t.contexts.trace.data,n,o)}}if(t.spans){i.spans=t.spans.map(t=>{const i=l.spanToJSON(t).data;if(i){t.data=r.normalize(i,n,o)}return t})}return i}function getFinalScope(t,n){if(!n){return t}const o=t?t.clone():new c.Scope;o.update(n);return o}function parseEventHintOrCaptureContext(t){if(!t){return undefined}if(hintIsScopeOrFunction(t)){return{captureContext:t}}if(hintIsScopeContext(t)){return{captureContext:t}}return t}function hintIsScopeOrFunction(t){return t instanceof c.Scope||typeof t==="function"}const u=["user","level","extra","contexts","tags","fingerprint","requestSession","propagationContext"];function hintIsScopeContext(t){return Object.keys(t).some(t=>u.includes(t))}n.applyDebugIds=applyDebugIds;n.applyDebugMeta=applyDebugMeta;n.parseEventHintOrCaptureContext=parseEventHintOrCaptureContext;n.prepareEvent=prepareEvent},4557:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(6710);function applySdkMetadata(t,n,o=[n],i="npm"){const a=t._metadata||{};if(!a.sdk){a.sdk={name:`sentry.javascript.${n}`,packages:o.map(t=>({name:`${i}:@sentry/${t}`,version:r.SDK_VERSION})),version:r.SDK_VERSION}}t._metadata=a}n.applySdkMetadata=applySdkMetadata},7961:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=0;const a=1;function spanToTraceContext(t){const{spanId:n,traceId:o}=t.spanContext();const{data:i,op:a,parent_span_id:c,status:g,tags:l,origin:d}=spanToJSON(t);return r.dropUndefinedKeys({data:i,op:a,parent_span_id:c,span_id:n,status:g,tags:l,trace_id:o,origin:d})}function spanToTraceHeader(t){const{traceId:n,spanId:o}=t.spanContext();const i=spanIsSampled(t);return r.generateSentryTraceHeader(n,o,i)}function spanTimeInputToSeconds(t){if(typeof t==="number"){return ensureTimestampInSeconds(t)}if(Array.isArray(t)){return t[0]+t[1]/1e9}if(t instanceof Date){return ensureTimestampInSeconds(t.getTime())}return r.timestampInSeconds()}function ensureTimestampInSeconds(t){const n=t>9999999999;return n?t/1e3:t}function spanToJSON(t){if(spanIsSpanClass(t)){return t.getSpanJSON()}if(typeof t.toJSON==="function"){return t.toJSON()}return{}}function spanIsSpanClass(t){return typeof t.getSpanJSON==="function"}function spanIsSampled(t){const{traceFlags:n}=t.spanContext();return Boolean(n&a)}n.TRACE_FLAG_NONE=i;n.TRACE_FLAG_SAMPLED=a;n.spanIsSampled=spanIsSampled;n.spanTimeInputToSeconds=spanTimeInputToSeconds;n.spanToJSON=spanToJSON;n.spanToTraceContext=spanToTraceContext;n.spanToTraceHeader=spanToTraceHeader},6710:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o="7.120.4";n.SDK_VERSION=o},3267:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a="CaptureConsole";const _captureConsoleIntegration=(t={})=>{const n=t.levels||i.CONSOLE_LEVELS;return{name:a,setupOnce(){},setup(t){if(!("console"in i.GLOBAL_OBJ)){return}i.addConsoleInstrumentationHandler(({args:o,level:i})=>{if(r.getClient()!==t||!n.includes(i)){return}consoleHandler(o,i)})}}};const c=r.defineIntegration(_captureConsoleIntegration);const g=r.convertIntegrationFnToClass(a,c);function consoleHandler(t,n){const o={level:i.severityLevelFromString(n),extra:{arguments:t}};r.withScope(a=>{a.addEventProcessor(t=>{t.logger="console";i.addExceptionMechanism(t,{handled:false,type:"console"});return t});if(n==="assert"&&t[0]===false){const n=`Assertion failed: ${i.safeJoin(t.slice(1)," ")||"console.assert"}`;a.setExtra("arguments",t.slice(1));r.captureMessage(n,o);return}const c=t.find(t=>t instanceof Error);if(n==="error"&&c){r.captureException(c,o);return}const g=i.safeJoin(t," ");r.captureMessage(g,o)})}n.CaptureConsole=g;n.captureConsoleIntegration=c},3406:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=i.GLOBAL_OBJ;const c=7;const g="ContextLines";const _contextLinesIntegration=(t={})=>{const n=t.frameContextLines!=null?t.frameContextLines:c;return{name:g,setupOnce(){},processEvent(t){return addSourceContext(t,n)}}};const l=r.defineIntegration(_contextLinesIntegration);const d=r.convertIntegrationFnToClass(g,l);function addSourceContext(t,n){const o=a.document;const r=a.location&&i.stripUrlQueryAndFragment(a.location.href);if(!o||!r){return t}const c=t.exception&&t.exception.values;if(!c||!c.length){return t}const g=o.documentElement.innerHTML;if(!g){return t}const l=["<!DOCTYPE html>","<html>",...g.split("\n"),"</html>"];c.forEach(t=>{const o=t.stacktrace;if(o&&o.frames){o.frames=o.frames.map(t=>applySourceContextToFrame(t,l,r,n))}});return t}function applySourceContextToFrame(t,n,o,r){if(t.filename!==o||!t.lineno||!n.length){return t}i.addContextToFrame(n,t,r);return t}n.ContextLines=d;n.applySourceContextToFrame=applySourceContextToFrame;n.contextLinesIntegration=l},924:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=o},6369:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a="Debug";const _debugIntegration=(t={})=>{const n={debugger:false,stringify:false,...t};return{name:a,setupOnce(){},setup(t){if(!t.on){return}t.on("beforeSendEvent",(t,o)=>{if(n.debugger){debugger}i.consoleSandbox(()=>{if(n.stringify){console.log(JSON.stringify(t,null,2));if(o&&Object.keys(o).length){console.log(JSON.stringify(o,null,2))}}else{console.log(t);if(o&&Object.keys(o).length){console.log(o)}}})})}}};const c=r.defineIntegration(_debugIntegration);const g=r.convertIntegrationFnToClass(a,c);n.Debug=g;n.debugIntegration=c},6311:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(924);const c="Dedupe";const _dedupeIntegration=()=>{let t;return{name:c,setupOnce(){},processEvent(n){if(n.type){return n}try{if(_shouldDropEvent(n,t)){a.DEBUG_BUILD&&i.logger.warn("Event dropped due to being a duplicate of previously captured event.");return null}}catch(t){}return t=n}}};const g=r.defineIntegration(_dedupeIntegration);const l=r.convertIntegrationFnToClass(c,g);function _shouldDropEvent(t,n){if(!n){return false}if(_isSameMessageEvent(t,n)){return true}if(_isSameExceptionEvent(t,n)){return true}return false}function _isSameMessageEvent(t,n){const o=t.message;const r=n.message;if(!o&&!r){return false}if(o&&!r||!o&&r){return false}if(o!==r){return false}if(!_isSameFingerprint(t,n)){return false}if(!_isSameStacktrace(t,n)){return false}return true}function _isSameExceptionEvent(t,n){const o=_getExceptionFromEvent(n);const r=_getExceptionFromEvent(t);if(!o||!r){return false}if(o.type!==r.type||o.value!==r.value){return false}if(!_isSameFingerprint(t,n)){return false}if(!_isSameStacktrace(t,n)){return false}return true}function _isSameStacktrace(t,n){let o=_getFramesFromEvent(t);let r=_getFramesFromEvent(n);if(!o&&!r){return true}if(o&&!r||!o&&r){return false}o=o;r=r;if(r.length!==o.length){return false}for(let t=0;t<r.length;t++){const n=r[t];const i=o[t];if(n.filename!==i.filename||n.lineno!==i.lineno||n.colno!==i.colno||n.function!==i.function){return false}}return true}function _isSameFingerprint(t,n){let o=t.fingerprint;let r=n.fingerprint;if(!o&&!r){return true}if(o&&!r||!o&&r){return false}o=o;r=r;try{return!!(o.join("")===r.join(""))}catch(t){return false}}function _getExceptionFromEvent(t){return t.exception&&t.exception.values&&t.exception.values[0]}function _getFramesFromEvent(t){const n=t.exception;if(n){try{return n.values[0].stacktrace.frames}catch(t){return undefined}}return undefined}n.Dedupe=l;n._shouldDropEvent=_shouldDropEvent;n.dedupeIntegration=g},6200:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(924);const c="ExtraErrorData";const _extraErrorDataIntegration=(t={})=>{const n=t.depth||3;const o=t.captureErrorCause||false;return{name:c,setupOnce(){},processEvent(t,r){return _enhanceEventWithErrorData(t,r,n,o)}}};const g=r.defineIntegration(_extraErrorDataIntegration);const l=r.convertIntegrationFnToClass(c,g);function _enhanceEventWithErrorData(t,n={},o,r){if(!n.originalException||!i.isError(n.originalException)){return t}const a=n.originalException.name||n.originalException.constructor.name;const c=_extractErrorData(n.originalException,r);if(c){const n={...t.contexts};const r=i.normalize(c,o);if(i.isPlainObject(r)){i.addNonEnumerableProperty(r,"__sentry_skip_normalization__",true);n[a]=r}return{...t,contexts:n}}return t}function _extractErrorData(t,n){try{const o=["name","message","stack","line","column","fileName","lineNumber","columnNumber","toJSON"];const r={};for(const n of Object.keys(t)){if(o.indexOf(n)!==-1){continue}const a=t[n];r[n]=i.isError(a)?a.toString():a}if(n&&t.cause!==undefined){r.cause=i.isError(t.cause)?t.cause.toString():t.cause}if(typeof t.toJSON==="function"){const n=t.toJSON();for(const t of Object.keys(n)){const o=n[t];r[t]=i.isError(o)?o.toString():o}}return r}catch(t){a.DEBUG_BUILD&&i.logger.error("Unable to extract extra data from the Error object:",t)}return null}n.ExtraErrorData=l;n.extraErrorDataIntegration=g},4127:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(924);const c="HttpClient";const _httpClientIntegration=(t={})=>{const n={failedRequestStatusCodes:[[500,599]],failedRequestTargets:[/.*/],...t};return{name:c,setupOnce(){},setup(t){_wrapFetch(t,n);_wrapXHR(t,n)}}};const g=r.defineIntegration(_httpClientIntegration);const l=r.convertIntegrationFnToClass(c,g);function _fetchResponseHandler(t,n,o,c){if(_shouldCaptureResponse(t,o.status,o.url)){const t=_getRequest(n,c);let g,l,d,u;if(_shouldSendDefaultPii()){[{headers:g,cookies:d},{headers:l,cookies:u}]=[{cookieHeader:"Cookie",obj:t},{cookieHeader:"Set-Cookie",obj:o}].map(({cookieHeader:t,obj:n})=>{const o=_extractFetchHeaders(n.headers);let r;try{const n=o[t]||o[t.toLowerCase()]||undefined;if(n){r=_parseCookieString(n)}}catch(n){a.DEBUG_BUILD&&i.logger.log(`Could not extract cookies from header ${t}`)}return{headers:o,cookies:r}})}const I=_createEvent({url:t.url,method:t.method,status:o.status,requestHeaders:g,responseHeaders:l,requestCookies:d,responseCookies:u});r.captureEvent(I)}}function _xhrResponseHandler(t,n,o,c){if(_shouldCaptureResponse(t,n.status,n.responseURL)){let t,g,l;if(_shouldSendDefaultPii()){try{const t=n.getResponseHeader("Set-Cookie")||n.getResponseHeader("set-cookie")||undefined;if(t){g=_parseCookieString(t)}}catch(t){a.DEBUG_BUILD&&i.logger.log("Could not extract cookies from response headers")}try{l=_getXHRResponseHeaders(n)}catch(t){a.DEBUG_BUILD&&i.logger.log("Could not extract headers from response")}t=c}const d=_createEvent({url:n.responseURL,method:o,status:n.status,requestHeaders:t,responseHeaders:l,responseCookies:g});r.captureEvent(d)}}function _getResponseSizeFromHeaders(t){if(t){const n=t["Content-Length"]||t["content-length"];if(n){return parseInt(n,10)}}return undefined}function _parseCookieString(t){return t.split("; ").reduce((t,n)=>{const[o,r]=n.split("=");t[o]=r;return t},{})}function _extractFetchHeaders(t){const n={};t.forEach((t,o)=>{n[o]=t});return n}function _getXHRResponseHeaders(t){const n=t.getAllResponseHeaders();if(!n){return{}}return n.split("\r\n").reduce((t,n)=>{const[o,r]=n.split(": ");t[o]=r;return t},{})}function _isInGivenRequestTargets(t,n){return t.some(t=>{if(typeof t==="string"){return n.includes(t)}return t.test(n)})}function _isInGivenStatusRanges(t,n){return t.some(t=>{if(typeof t==="number"){return t===n}return n>=t[0]&&n<=t[1]})}function _wrapFetch(t,n){if(!i.supportsNativeFetch()){return}i.addFetchInstrumentationHandler(o=>{if(r.getClient()!==t){return}const{response:i,args:a}=o;const[c,g]=a;if(!i){return}_fetchResponseHandler(n,c,i,g)})}function _wrapXHR(t,n){if(!("XMLHttpRequest"in i.GLOBAL_OBJ)){return}i.addXhrInstrumentationHandler(o=>{if(r.getClient()!==t){return}const c=o.xhr;const g=c[i.SENTRY_XHR_DATA_KEY];if(!g){return}const{method:l,request_headers:d}=g;try{_xhrResponseHandler(n,c,l,d)}catch(t){a.DEBUG_BUILD&&i.logger.warn("Error while extracting response event form XHR response",t)}})}function _shouldCaptureResponse(t,n,o){return _isInGivenStatusRanges(t.failedRequestStatusCodes,n)&&_isInGivenRequestTargets(t.failedRequestTargets,o)&&!r.isSentryRequestUrl(o,r.getClient())}function _createEvent(t){const n=`HTTP Client Error with status code: ${t.status}`;const o={message:n,exception:{values:[{type:"Error",value:n}]},request:{url:t.url,method:t.method,headers:t.requestHeaders,cookies:t.requestCookies},contexts:{response:{status_code:t.status,headers:t.responseHeaders,cookies:t.responseCookies,body_size:_getResponseSizeFromHeaders(t.responseHeaders)}}};i.addExceptionMechanism(o,{type:"http.client",handled:false});return o}function _getRequest(t,n){if(!n&&t instanceof Request){return t}if(t instanceof Request&&t.bodyUsed){return t}return new Request(t,n)}function _shouldSendDefaultPii(){const t=r.getClient();return t?Boolean(t.getOptions().sendDefaultPii):false}n.HttpClient=l;n.httpClientIntegration=g},9654:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(3267);const i=o(6369);const a=o(6311);const c=o(6200);const g=o(5697);const l=o(5514);const d=o(7976);const u=o(2576);const I=o(2314);const C=o(4127);const p=o(3406);n.CaptureConsole=r.CaptureConsole;n.captureConsoleIntegration=r.captureConsoleIntegration;n.Debug=i.Debug;n.debugIntegration=i.debugIntegration;n.Dedupe=a.Dedupe;n.dedupeIntegration=a.dedupeIntegration;n.ExtraErrorData=c.ExtraErrorData;n.extraErrorDataIntegration=c.extraErrorDataIntegration;n.Offline=g.Offline;n.ReportingObserver=l.ReportingObserver;n.reportingObserverIntegration=l.reportingObserverIntegration;n.RewriteFrames=d.RewriteFrames;n.rewriteFramesIntegration=d.rewriteFramesIntegration;n.SessionTiming=u.SessionTiming;n.sessionTimingIntegration=u.sessionTimingIntegration;n.Transaction=I.Transaction;n.HttpClient=C.HttpClient;n.httpClientIntegration=C.httpClientIntegration;n.ContextLines=p.ContextLines;n.contextLinesIntegration=p.contextLinesIntegration},5697:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(8843);const a=o(924);const c=r.GLOBAL_OBJ;class Offline{static __initStatic(){this.id="Offline"}constructor(t={}){this.name=Offline.id;this.maxStoredEvents=t.maxStoredEvents||30;this.offlineEventStore=i.createInstance({name:"sentry/offlineEventStore"})}setupOnce(t,n){this.hub=n();if("addEventListener"in c){c.addEventListener("online",()=>{void this._sendEvents().catch(()=>{a.DEBUG_BUILD&&r.logger.warn("could not send cached events")})})}const eventProcessor=t=>{if(this.hub&&this.hub.getIntegration(Offline)){if("navigator"in c&&"onLine"in c.navigator&&!c.navigator.onLine){a.DEBUG_BUILD&&r.logger.log("Event dropped due to being a offline - caching instead");void this._cacheEvent(t).then(t=>this._enforceMaxEvents()).catch(t=>{a.DEBUG_BUILD&&r.logger.warn("could not cache event while offline")});return null}}return t};eventProcessor.id=this.name;t(eventProcessor);if("navigator"in c&&"onLine"in c.navigator&&c.navigator.onLine){void this._sendEvents().catch(()=>{a.DEBUG_BUILD&&r.logger.warn("could not send cached events")})}}async _cacheEvent(t){return this.offlineEventStore.setItem(r.uuid4(),r.normalize(t))}async _enforceMaxEvents(){const t=[];return this.offlineEventStore.iterate((n,o,r)=>{t.push({cacheKey:o,event:n})}).then(()=>this._purgeEvents(t.sort((t,n)=>(n.event.timestamp||0)-(t.event.timestamp||0)).slice(this.maxStoredEvents<t.length?this.maxStoredEvents:t.length).map(t=>t.cacheKey))).catch(t=>{a.DEBUG_BUILD&&r.logger.warn("could not enforce max events")})}async _purgeEvent(t){return this.offlineEventStore.removeItem(t)}async _purgeEvents(t){return Promise.all(t.map(t=>this._purgeEvent(t))).then()}async _sendEvents(){return this.offlineEventStore.iterate((t,n,o)=>{if(this.hub){this.hub.captureEvent(t);void this._purgeEvent(n).catch(t=>{a.DEBUG_BUILD&&r.logger.warn("could not purge event from cache")})}else{a.DEBUG_BUILD&&r.logger.warn("no hub found - could not send cached event")}})}}Offline.__initStatic();n.Offline=Offline},5514:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=i.GLOBAL_OBJ;const c="ReportingObserver";const g=new WeakMap;const _reportingObserverIntegration=(t={})=>{const n=t.types||["crash","deprecation","intervention"];function handler(t){if(!g.has(r.getClient())){return}for(const n of t){r.withScope(t=>{t.setExtra("url",n.url);const o=`ReportingObserver [${n.type}]`;let i="No details available";if(n.body){const o={};for(const t in n.body){o[t]=n.body[t]}t.setExtra("body",o);if(n.type==="crash"){const t=n.body;i=[t.crashId||"",t.reason||""].join(" ").trim()||i}else{const t=n.body;i=t.message||i}}r.captureMessage(`${o}: ${i}`)})}}return{name:c,setupOnce(){if(!i.supportsReportingObserver()){return}const t=new a.ReportingObserver(handler,{buffered:true,types:n});t.observe()},setup(t){g.set(t,true)}}};const l=r.defineIntegration(_reportingObserverIntegration);const d=r.convertIntegrationFnToClass(c,l);n.ReportingObserver=d;n.reportingObserverIntegration=l},7976:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a="RewriteFrames";const _rewriteFramesIntegration=(t={})=>{const n=t.root;const o=t.prefix||"app:///";const r=t.iteratee||(t=>{if(!t.filename){return t}const r=/^[a-zA-Z]:\\/.test(t.filename)||t.filename.includes("\\")&&!t.filename.includes("/");const a=/^\//.test(t.filename);if(r||a){const a=r?t.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):t.filename;const c=n?i.relative(n,a):i.basename(a);t.filename=`${o}${c}`}return t});function _processExceptionsEvent(t){try{return{...t,exception:{...t.exception,values:t.exception.values.map(t=>({...t,...t.stacktrace&&{stacktrace:_processStacktrace(t.stacktrace)}}))}}}catch(n){return t}}function _processStacktrace(t){return{...t,frames:t&&t.frames&&t.frames.map(t=>r(t))}}return{name:a,setupOnce(){},processEvent(t){let n=t;if(t.exception&&Array.isArray(t.exception.values)){n=_processExceptionsEvent(n)}return n}}};const c=r.defineIntegration(_rewriteFramesIntegration);const g=r.convertIntegrationFnToClass(a,c);n.RewriteFrames=g;n.rewriteFramesIntegration=c},2576:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i="SessionTiming";const _sessionTimingIntegration=()=>{const t=Date.now();return{name:i,setupOnce(){},processEvent(n){const o=Date.now();return{...n,extra:{...n.extra,["session:start"]:t,["session:duration"]:o-t,["session:end"]:o}}}}};const a=r.defineIntegration(_sessionTimingIntegration);const c=r.convertIntegrationFnToClass(i,a);n.SessionTiming=c;n.sessionTimingIntegration=a},2314:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i="Transaction";const transactionIntegration=()=>({name:i,setupOnce(){},processEvent(t){const n=_getFramesFromEvent(t);for(let o=n.length-1;o>=0;o--){const r=n[o];if(r.in_app===true){t.transaction=_getTransaction(r);break}}return t}});const a=r.convertIntegrationFnToClass(i,transactionIntegration);function _getFramesFromEvent(t){const n=t.exception&&t.exception.values&&t.exception.values[0];return n&&n.stacktrace&&n.stacktrace.frames||[]}function _getTransaction(t){return t.module||t.function?`${t.module||"?"}/${t.function||"?"}`:"<unknown>"}n.Transaction=a},7957:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(3167);const a=o(9090);function getActiveDomain(){return i.active}function getCurrentHub(){const t=getActiveDomain();if(!t){return undefined}a.ensureHubOnCarrier(t);return a.getHubFromCarrier(t)}function createNewHub(t){const n={};a.ensureHubOnCarrier(n,t);return a.getHubFromCarrier(n)}function runWithAsyncContext(t,n){const o=getActiveDomain();if(o&&r([n,"optionalAccess",t=>t.reuseExisting])){return t()}const c=i.create();const g=o?a.getHubFromCarrier(o):undefined;const l=createNewHub(g);a.setHubOnCarrier(c,l);return c.bind(()=>t())()}function setDomainAsyncContextStrategy(){a.setAsyncContextStrategy({getCurrentHub:getCurrentHub,runWithAsyncContext:runWithAsyncContext})}n.setDomainAsyncContextStrategy=setDomainAsyncContextStrategy},3185:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(290);let c;function setHooksAsyncContextStrategy(){if(!c){c=new a.AsyncLocalStorage}function getCurrentHub(){return c.getStore()}function createNewHub(t){const n={};i.ensureHubOnCarrier(n,t);return i.getHubFromCarrier(n)}function runWithAsyncContext(t,n){const o=getCurrentHub();if(o&&r([n,"optionalAccess",t=>t.reuseExisting])){return t()}const i=createNewHub(o);return c.run(i,()=>t())}i.setAsyncContextStrategy({getCurrentHub:getCurrentHub,runWithAsyncContext:runWithAsyncContext})}n.setHooksAsyncContextStrategy=setHooksAsyncContextStrategy},7813:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(2374);const i=o(7957);const a=o(3185);function setNodeAsyncContextStrategy(){if(r.NODE_VERSION.major>=14){a.setHooksAsyncContextStrategy()}else{i.setDomainAsyncContextStrategy()}}n.setNodeAsyncContextStrategy=setNodeAsyncContextStrategy},8235:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(857);const i=o(9023);const a=o(9090);class NodeClient extends a.ServerRuntimeClient{constructor(t){a.applySdkMetadata(t,"node");t.transportOptions={textEncoder:new i.TextEncoder,...t.transportOptions};const n={...t,platform:"node",runtime:{name:"node",version:global.process.version},serverName:t.serverName||global.process.env.SENTRY_NAME||r.hostname()};super(n)}}n.NodeClient=NodeClient},6090:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];function replaceCronNames(t){return o.reduce((t,[n,o])=>t.replace(new RegExp(n,"gi"),o),t)}n.replaceCronNames=replaceCronNames},5907:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(6090);const a="Automatic instrumentation of CronJob only supports crontab string";function instrumentCron(t,n){let o=false;return new Proxy(t,{construct(t,c){const[g,l,d,u,I,...C]=c;if(typeof g!=="string"){throw new Error(a)}if(o){throw new Error(`A job named '${n}' has already been scheduled`)}o=true;const p=i.replaceCronNames(g);function monitoredTick(t,o){return r.withMonitor(n,()=>l(t,o),{schedule:{type:"crontab",value:p},timezone:I||undefined})}return new t(g,monitoredTick,d,u,I,...C)},get(t,c){if(c==="from"){return c=>{const{cronTime:g,onTick:l,timeZone:d}=c;if(typeof g!=="string"){throw new Error(a)}if(o){throw new Error(`A job named '${n}' has already been scheduled`)}o=true;const u=i.replaceCronNames(g);c.onTick=(t,o)=>r.withMonitor(n,()=>l(t,o),{schedule:{type:"crontab",value:u},timezone:d||undefined});return t.from(c)}}else{return t[c]}}})}n.instrumentCron=instrumentCron},4076:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(6090);function instrumentNodeCron(t){return new Proxy(t,{get(t,n){if(n==="schedule"&&t.schedule){return new Proxy(t.schedule,{apply(t,n,o){const[c,,g]=o;if(!r([g,"optionalAccess",t=>t.name])){throw new Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.')}return i.withMonitor(g.name,()=>t.apply(n,o),{schedule:{type:"crontab",value:a.replaceCronNames(c)},timezone:r([g,"optionalAccess",t=>t.timezone])})}})}else{return t[n]}}})}n.instrumentNodeCron=instrumentNodeCron},5845:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(6090);function instrumentNodeSchedule(t){return new Proxy(t,{get(t,n){if(n==="scheduleJob"){return new Proxy(t.scheduleJob,{apply(t,n,o){const[a,c]=o;if(typeof a!=="string"||typeof c!=="string"){throw new Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string")}const g=a;const l=c;return r.withMonitor(g,()=>t.apply(n,o),{schedule:{type:"crontab",value:i.replaceCronNames(l)}})}})}return t[n]}})}n.instrumentNodeSchedule=instrumentNodeSchedule},9904:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=o},5394:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(4624);const c=o(9904);const g=o(1062);const l=o(2995);const d=o(2550);function tracingHandler(){return function sentryTracingMiddleware(t,n,o){const c=r([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);if(!c||c.instrumenter!=="sentry"||r([t,"access",t=>t.method,"optionalAccess",t=>t.toUpperCase,"call",t=>t()])==="OPTIONS"||r([t,"access",t=>t.method,"optionalAccess",t=>t.toUpperCase,"call",t=>t()])==="HEAD"){return o()}const g=t.headers&&a.isString(t.headers["sentry-trace"])?t.headers["sentry-trace"]:undefined;const l=r([t,"access",t=>t.headers,"optionalAccess",t=>t.baggage]);if(!i.hasTracingEnabled(c)){return o()}const[d,u]=a.extractPathForTransaction(t,{path:true,method:true});const I=i.continueTrace({sentryTrace:g,baggage:l},n=>i.startTransaction({name:d,op:"http.server",origin:"auto.http.node.tracingHandler",...n,data:{[i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:u},metadata:{...n.metadata,request:t}},{request:a.extractRequestData(t)}));i.getCurrentScope().setSpan(I);n.__sentry_transaction=I;n.once("finish",()=>{setImmediate(()=>{a.addRequestDataToTransaction(I,t);i.setHttpStatus(I,n.statusCode);I.end()})});o()}}function convertReqHandlerOptsToAddReqDataOpts(t={}){let n;if("include"in t){n={include:t.include}}else{const{ip:o,request:r,transaction:i,user:c}=t;if(o||r||i||c){n={include:a.dropUndefinedKeys({ip:o,request:r,transaction:i,user:c})}}}return n}function requestHandler(t){const n=convertReqHandlerOptsToAddReqDataOpts(t);const o=i.getClient();if(o&&g.isAutoSessionTrackingEnabled(o)){o.initSessionFlusher();const t=i.getCurrentScope();if(t.getSession()){t.setSession()}}return function sentryRequestMiddleware(o,r,l){if(t&&t.flushTimeout&&t.flushTimeout>0){const n=r.end;r.end=function(o,r,g){void i.flush(t.flushTimeout).then(()=>{n.call(this,o,r,g)}).then(null,t=>{c.DEBUG_BUILD&&a.logger.error(t);n.call(this,o,r,g)})}}i.runWithAsyncContext(()=>{const t=i.getCurrentScope();t.setSDKProcessingMetadata({request:o,requestDataOptionsFromExpressHandler:n});const a=i.getClient();if(g.isAutoSessionTrackingEnabled(a)){t.setRequestSession({status:"ok"})}r.once("finish",()=>{const t=i.getClient();if(g.isAutoSessionTrackingEnabled(t)){setImmediate(()=>{if(t&&t._captureRequestSession){t._captureRequestSession()}})}});l()})}}function getStatusCodeFromResponse(t){const n=t.status||t.statusCode||t.status_code||t.output&&t.output.statusCode;return n?parseInt(n,10):500}function defaultShouldHandleError(t){const n=getStatusCodeFromResponse(t);return n>=500}function errorHandler(t){return function sentryErrorMiddleware(n,o,r,a){const c=t&&t.shouldHandleError||defaultShouldHandleError;if(c(n)){i.withScope(t=>{t.setSDKProcessingMetadata({request:o});const c=r.__sentry_transaction;if(c&&!i.getActiveSpan()){t.setSpan(c)}const l=i.getClient();if(l&&g.isAutoSessionTrackingEnabled(l)){const n=l._sessionFlusher!==undefined;if(n){const n=t.getRequestSession();if(n&&n.status!==undefined){n.status="crashed"}}}const d=i.captureException(n,{mechanism:{type:"middleware",handled:false}});r.sentry=d;a(n)});return}a(n)}}const u=l.trpcMiddleware;n.extractRequestData=d.extractRequestData;n.parseRequest=d.parseRequest;n.errorHandler=errorHandler;n.requestHandler=requestHandler;n.tracingHandler=tracingHandler;n.trpcMiddleware=u},3986:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(9903);const a=o(8235);const c=o(7397);const g=o(1062);const l=o(4624);const d=o(9715);const u=o(7900);const I=o(8485);const C=o(5394);const p=o(4640);const m=o(7892);const b=o(9654);const h=o(1949);const G=o(731);const Z=o(6617);const B=o(101);const A=o(164);const y=o(5587);const f=o(5560);const W=o(2980);const v=o(6572);const V=o(8861);const R=o(6893);const S=o(6);const H=o(2995);const Y=o(5907);const N=o(4076);const X=o(5845);const F=u.createGetModuleFromFilename();const K={...r.Integrations,...p,...m};const _={instrumentCron:Y.instrumentCron,instrumentNodeCron:N.instrumentNodeCron,instrumentNodeSchedule:X.instrumentNodeSchedule};n.Hub=r.Hub;n.SDK_VERSION=r.SDK_VERSION;n.SEMANTIC_ATTRIBUTE_SENTRY_OP=r.SEMANTIC_ATTRIBUTE_SENTRY_OP;n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=r.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE;n.Scope=r.Scope;n.addBreadcrumb=r.addBreadcrumb;n.addEventProcessor=r.addEventProcessor;n.addGlobalEventProcessor=r.addGlobalEventProcessor;n.addIntegration=r.addIntegration;n.captureCheckIn=r.captureCheckIn;n.captureEvent=r.captureEvent;n.captureException=r.captureException;n.captureMessage=r.captureMessage;n.captureSession=r.captureSession;n.close=r.close;n.configureScope=r.configureScope;n.continueTrace=r.continueTrace;n.createTransport=r.createTransport;n.endSession=r.endSession;n.extractTraceparentData=r.extractTraceparentData;n.flush=r.flush;n.functionToStringIntegration=r.functionToStringIntegration;n.getActiveSpan=r.getActiveSpan;n.getActiveTransaction=r.getActiveTransaction;n.getClient=r.getClient;n.getCurrentHub=r.getCurrentHub;n.getCurrentScope=r.getCurrentScope;n.getGlobalScope=r.getGlobalScope;n.getHubFromCarrier=r.getHubFromCarrier;n.getIsolationScope=r.getIsolationScope;n.getSpanStatusFromHttpCode=r.getSpanStatusFromHttpCode;n.inboundFiltersIntegration=r.inboundFiltersIntegration;n.isInitialized=r.isInitialized;n.lastEventId=r.lastEventId;n.linkedErrorsIntegration=r.linkedErrorsIntegration;n.makeMain=r.makeMain;n.metrics=r.metrics;n.parameterize=r.parameterize;n.requestDataIntegration=r.requestDataIntegration;n.runWithAsyncContext=r.runWithAsyncContext;n.setContext=r.setContext;n.setCurrentClient=r.setCurrentClient;n.setExtra=r.setExtra;n.setExtras=r.setExtras;n.setHttpStatus=r.setHttpStatus;n.setMeasurement=r.setMeasurement;n.setTag=r.setTag;n.setTags=r.setTags;n.setUser=r.setUser;n.spanStatusfromHttpCode=r.spanStatusfromHttpCode;n.startActiveSpan=r.startActiveSpan;n.startInactiveSpan=r.startInactiveSpan;n.startSession=r.startSession;n.startSpan=r.startSpan;n.startSpanManual=r.startSpanManual;n.startTransaction=r.startTransaction;n.trace=r.trace;n.withActiveSpan=r.withActiveSpan;n.withIsolationScope=r.withIsolationScope;n.withMonitor=r.withMonitor;n.withScope=r.withScope;n.autoDiscoverNodePerformanceMonitoringIntegrations=i.autoDiscoverNodePerformanceMonitoringIntegrations;n.NodeClient=a.NodeClient;n.makeNodeTransport=c.makeNodeTransport;n.defaultIntegrations=g.defaultIntegrations;n.defaultStackParser=g.defaultStackParser;n.getDefaultIntegrations=g.getDefaultIntegrations;n.getSentryRelease=g.getSentryRelease;n.init=g.init;n.DEFAULT_USER_INCLUDES=l.DEFAULT_USER_INCLUDES;n.addRequestDataToEvent=l.addRequestDataToEvent;n.extractRequestData=l.extractRequestData;n.deepReadDirSync=d.deepReadDirSync;n.createGetModuleFromFilename=u.createGetModuleFromFilename;n.enableAnrDetection=I.enableAnrDetection;n.Handlers=C;n.captureConsoleIntegration=b.captureConsoleIntegration;n.debugIntegration=b.debugIntegration;n.dedupeIntegration=b.dedupeIntegration;n.extraErrorDataIntegration=b.extraErrorDataIntegration;n.httpClientIntegration=b.httpClientIntegration;n.reportingObserverIntegration=b.reportingObserverIntegration;n.rewriteFramesIntegration=b.rewriteFramesIntegration;n.sessionTimingIntegration=b.sessionTimingIntegration;n.consoleIntegration=h.consoleIntegration;n.onUncaughtExceptionIntegration=G.onUncaughtExceptionIntegration;n.onUnhandledRejectionIntegration=Z.onUnhandledRejectionIntegration;n.modulesIntegration=B.modulesIntegration;n.contextLinesIntegration=A.contextLinesIntegration;n.nodeContextIntegration=y.nodeContextIntegration;n.localVariablesIntegration=f.localVariablesIntegration;n.spotlightIntegration=W.spotlightIntegration;n.anrIntegration=v.anrIntegration;n.hapiErrorPlugin=V.hapiErrorPlugin;n.hapiIntegration=V.hapiIntegration;n.Undici=R.Undici;n.nativeNodeFetchintegration=R.nativeNodeFetchintegration;n.Http=S.Http;n.httpIntegration=S.httpIntegration;n.trpcMiddleware=H.trpcMiddleware;n.Integrations=K;n.cron=_;n.getModuleFromFilename=F},6572:(t,n,o)=>{t=o.nmd(t);var{_optionalChain:r,_optionalChainDelete:i}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const a=o(7016);const c=o(9090);const g=o(4624);const l=o(2374);const d=o(1946);const u=50;const I=5e3;function log(t,...n){g.logger.log(`[ANR] ${t}`,...n)}function globalWithScopeFetchFn(){return g.GLOBAL_OBJ}function getScopeData(){const t=c.getGlobalScope().getScopeData();c.mergeScopeData(t,c.getIsolationScope().getScopeData());c.mergeScopeData(t,c.getCurrentScope().getScopeData());t.attachments=[];t.eventProcessors=[];return t}function getWorkerThreads(){return g.dynamicRequire(t,"worker_threads")}async function getContexts(t){let n={message:"ANR"};const o={};for(const r of t.getEventProcessors()){if(n===null)break;n=await r(n,o)}return r([n,"optionalAccess",t=>t.contexts])||{}}const C="Anr";const _anrIntegration=(t={})=>{if(l.NODE_VERSION.major<16||l.NODE_VERSION.major===16&&l.NODE_VERSION.minor<17){throw new Error("ANR detection requires Node 16.17.0 or later")}let n;let o;const r=globalWithScopeFetchFn();r.__SENTRY_GET_SCOPES__=getScopeData;return{name:C,setupOnce(){},startWorker:()=>{if(n){return}if(o){n=_startWorker(o,t)}},stopWorker:()=>{if(n){n.then(t=>{t();n=undefined})}},setup(t){o=t;setImmediate(()=>this.startWorker())}}};const p=c.defineIntegration(_anrIntegration);const m=c.convertIntegrationFnToClass(C,p);async function _startWorker(t,n){const r=t.getDsn();if(!r){return()=>{}}const l=await getContexts(t);i([l,"access",t=>t.app,"optionalAccess",t=>delete t.app_memory]);i([l,"access",t=>t.device,"optionalAccess",t=>delete t.free_memory]);const C=t.getOptions();const p=t.getSdkMetadata()||{};if(p.sdk){p.sdk.integrations=C.integrations.map(t=>t.name)}const m={debug:g.logger.isEnabled(),dsn:r,environment:C.environment||"production",release:C.release,dist:C.dist,sdkMetadata:p,appRootPath:n.appRootPath,pollInterval:n.pollInterval||u,anrThreshold:n.anrThreshold||I,captureStackTrace:!!n.captureStackTrace,staticTags:n.staticTags||{},contexts:l};if(m.captureStackTrace){const t=o(264);if(!t.url()){t.open(0)}}const{Worker:b}=getWorkerThreads();const h=new b(new a.URL(`data:application/javascript;base64,${d.base64WorkerScript}`),{workerData:m});process.on("exit",()=>{h.terminate()});const G=setInterval(()=>{try{const t=c.getCurrentScope().getSession();const n=t?{...t,toJSON:undefined}:undefined;h.postMessage({session:n})}catch(t){}},m.pollInterval);G.unref();h.on("message",t=>{if(t==="session-ended"){log("ANR event sent from ANR worker. Clearing session in this thread.");c.getCurrentScope().setSession(undefined)}});h.once("error",t=>{clearInterval(G);log("ANR worker error",t)});h.once("exit",t=>{clearInterval(G);log("ANR worker exit",t)});h.unref();return()=>{h.terminate();clearInterval(G)}}n.Anr=m;n.anrIntegration=p},8485:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(6572);function enableAnrDetection(t){const n=r.getClient();const o=new i.Anr(t);o.setup(n);return Promise.resolve()}n.enableAnrDetection=enableAnrDetection},1946:(t,n)=>{
|
|
2
2
|
/*! @sentry/node 7.120.4 (0469cab) | https://github.com/getsentry/sentry-javascript */
|
|
3
|
-
n.base64WorkerScript="aW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJ2luc3BlY3Rvcic7CmltcG9ydCB7IHdvcmtlckRhdGEsIHBhcmVudFBvcnQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcyc7CmltcG9ydCB7IHBvc2l4LCBzZXAgfSBmcm9tICdwYXRoJzsKaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJzsKaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnOwppbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7CmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7CmltcG9ydCB7IGNyZWF0ZUd6aXAgfSBmcm9tICd6bGliJzsKaW1wb3J0ICogYXMgbmV0IGZyb20gJ25ldCc7CmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnOwoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZApjb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIG9uZSBvZiBhIGZldyBFcnJvciBvciBFcnJvci1saWtlCiAqIHtAbGluayBpc0Vycm9yfS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXJyb3Iod2F0KSB7CiAgc3dpdGNoIChvYmplY3RUb1N0cmluZy5jYWxsKHdhdCkpIHsKICAgIGNhc2UgJ1tvYmplY3QgRXJyb3JdJzoKICAgIGNhc2UgJ1tvYmplY3QgRXhjZXB0aW9uXSc6CiAgICBjYXNlICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nOgogICAgICByZXR1cm4gdHJ1ZTsKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiBpc0luc3RhbmNlT2Yod2F0LCBFcnJvcik7CiAgfQp9Ci8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgZ2l2ZW4gYnVpbHQtaW4gY2xhc3MuCiAqCiAqIEBwYXJhbSB3YXQgVGhlIHZhbHVlIHRvIGJlIGNoZWNrZWQKICogQHBhcmFtIGNsYXNzTmFtZQogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0J1aWx0aW4od2F0LCBjbGFzc05hbWUpIHsKICByZXR1cm4gb2JqZWN0VG9TdHJpbmcuY2FsbCh3YXQpID09PSBgW29iamVjdCAke2NsYXNzTmFtZX1dYDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIHN0cmluZwogKiB7QGxpbmsgaXNTdHJpbmd9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNTdHJpbmcod2F0KSB7CiAgcmV0dXJuIGlzQnVpbHRpbih3YXQsICdTdHJpbmcnKTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBvYmplY3QgbGl0ZXJhbCwgb3IgYSBjbGFzcyBpbnN0YW5jZS4KICoge0BsaW5rIGlzUGxhaW5PYmplY3R9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh3YXQpIHsKICByZXR1cm4gaXNCdWlsdGluKHdhdCwgJ09iamVjdCcpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEV2ZW50IGluc3RhbmNlCiAqIHtAbGluayBpc0V2ZW50fS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXZlbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHdhdCwgRXZlbnQpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEVsZW1lbnQgaW5zdGFuY2UKICoge0BsaW5rIGlzRWxlbWVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0VsZW1lbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBpc0luc3RhbmNlT2Yod2F0LCBFbGVtZW50KTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlIGhhcyBhIHRoZW4gZnVuY3Rpb24uCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKi8KZnVuY3Rpb24gaXNUaGVuYWJsZSh3YXQpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgcmV0dXJuIEJvb2xlYW4od2F0ICYmIHdhdC50aGVuICYmIHR5cGVvZiB3YXQudGhlbiA9PT0gJ2Z1bmN0aW9uJyk7Cn0KCi8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSdzIHR5cGUgaXMgYSBTeW50aGV0aWNFdmVudAogKiB7QGxpbmsgaXNTeW50aGV0aWNFdmVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1N5bnRoZXRpY0V2ZW50KHdhdCkgewogIHJldHVybiBpc1BsYWluT2JqZWN0KHdhdCkgJiYgJ25hdGl2ZUV2ZW50JyBpbiB3YXQgJiYgJ3ByZXZlbnREZWZhdWx0JyBpbiB3YXQgJiYgJ3N0b3BQcm9wYWdhdGlvbicgaW4gd2F0Owp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUgaXMgTmFOCiAqIHtAbGluayBpc05hTn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc05hTiQxKHdhdCkgewogIHJldHVybiB0eXBlb2Ygd2F0ID09PSAnbnVtYmVyJyAmJiB3YXQgIT09IHdhdDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiBwcm92aWRlZCBjb25zdHJ1Y3Rvci4KICoge0BsaW5rIGlzSW5zdGFuY2VPZn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcGFyYW0gYmFzZSBBIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgaW4gYSBjaGVjay4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNJbnN0YW5jZU9mKHdhdCwgYmFzZSkgewogIHRyeSB7CiAgICByZXR1cm4gd2F0IGluc3RhbmNlb2YgYmFzZTsKICB9IGNhdGNoIChfZSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIFZ1ZSBWaWV3TW9kZWwuCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1Z1ZVZpZXdNb2RlbCh3YXQpIHsKICAvLyBOb3QgdXNpbmcgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBiZWNhdXNlIGluIFZ1ZSAzIGl0IHdvdWxkIHJlYWQgdGhlIGluc3RhbmNlJ3MgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykgcHJvcGVydHkuCiAgcmV0dXJuICEhKHR5cGVvZiB3YXQgPT09ICdvYmplY3QnICYmIHdhdCAhPT0gbnVsbCAmJiAoKHdhdCApLl9faXNWdWUgfHwgKHdhdCApLl9pc1Z1ZSkpOwp9CgovKiogSW50ZXJuYWwgZ2xvYmFsIHdpdGggY29tbW9uIHByb3BlcnRpZXMgYW5kIFNlbnRyeSBleHRlbnNpb25zICAqLwoKLy8gVGhlIGNvZGUgYmVsb3cgZm9yICdpc0dsb2JhbE9iaicgYW5kICdHTE9CQUxfT0JKJyB3YXMgY29waWVkIGZyb20gY29yZS1qcyBiZWZvcmUgbW9kaWZpY2F0aW9uCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvMWI5NDRkZjU1MjgyY2RjOTljOTBkYjVmNDllYjBiNmVkYTJjYzBhMy9wYWNrYWdlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMKLy8gY29yZS1qcyBoYXMgdGhlIGZvbGxvd2luZyBsaWNlbmNlOgovLwovLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYKLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQovLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAovLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgovLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgovLyBUSEUgU09GVFdBUkUuCgovKiogUmV0dXJucyAnb2JqJyBpZiBpdCdzIHRoZSBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWQgKi8KZnVuY3Rpb24gaXNHbG9iYWxPYmoob2JqKSB7CiAgcmV0dXJuIG9iaiAmJiBvYmouTWF0aCA9PSBNYXRoID8gb2JqIDogdW5kZWZpbmVkOwp9CgovKiogR2V0J3MgdGhlIGdsb2JhbCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IEphdmFTY3JpcHQgcnVudGltZSAqLwpjb25zdCBHTE9CQUxfT0JKID0KICAodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgaXNHbG9iYWxPYmooZ2xvYmFsVGhpcykpIHx8CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscwogICh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHdpbmRvdykpIHx8CiAgKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHNlbGYpKSB8fAogICh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKGdsb2JhbCkpIHx8CiAgKGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH0pKCkgfHwKICB7fTsKCi8qKgogKiBAZGVwcmVjYXRlZCBVc2UgR0xPQkFMX09CSiBpbnN0ZWFkIG9yIFdJTkRPVyBmcm9tIEBzZW50cnkvYnJvd3Nlci4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjgKICovCmZ1bmN0aW9uIGdldEdsb2JhbE9iamVjdCgpIHsKICByZXR1cm4gR0xPQkFMX09CSiA7Cn0KCi8qKgogKiBSZXR1cm5zIGEgZ2xvYmFsIHNpbmdsZXRvbiBjb250YWluZWQgaW4gdGhlIGdsb2JhbCBgX19TRU5UUllfX2Agb2JqZWN0LgogKgogKiBJZiB0aGUgc2luZ2xldG9uIGRvZXNuJ3QgYWxyZWFkeSBleGlzdCBpbiBgX19TRU5UUllfX2AsIGl0IHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUgZ2l2ZW4gZmFjdG9yeQogKiBmdW5jdGlvbiBhbmQgYWRkZWQgdG8gdGhlIGBfX1NFTlRSWV9fYCBvYmplY3QuCiAqCiAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24gb24gX19TRU5UUllfXwogKiBAcGFyYW0gY3JlYXRvciBjcmVhdG9yIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBzaW5nbGV0b24gaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0IG9uIGBfX1NFTlRSWV9fYAogKiBAcGFyYW0gb2JqIChPcHRpb25hbCkgVGhlIGdsb2JhbCBvYmplY3Qgb24gd2hpY2ggdG8gbG9vayBmb3IgYF9fU0VOVFJZX19gLCBpZiBub3QgYEdMT0JBTF9PQkpgJ3MgcmV0dXJuIHZhbHVlCiAqIEByZXR1cm5zIHRoZSBzaW5nbGV0b24KICovCmZ1bmN0aW9uIGdldEdsb2JhbFNpbmdsZXRvbihuYW1lLCBjcmVhdG9yLCBvYmopIHsKICBjb25zdCBnYmwgPSAob2JqIHx8IEdMT0JBTF9PQkopIDsKICBjb25zdCBfX1NFTlRSWV9fID0gKGdibC5fX1NFTlRSWV9fID0gZ2JsLl9fU0VOVFJZX18gfHwge30pOwogIGNvbnN0IHNpbmdsZXRvbiA9IF9fU0VOVFJZX19bbmFtZV0gfHwgKF9fU0VOVFJZX19bbmFtZV0gPSBjcmVhdG9yKCkpOwogIHJldHVybiBzaW5nbGV0b247Cn0KCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpjb25zdCBXSU5ET1cgPSBnZXRHbG9iYWxPYmplY3QoKTsKCmNvbnN0IERFRkFVTFRfTUFYX1NUUklOR19MRU5HVEggPSA4MDsKCi8qKgogKiBHaXZlbiBhIGNoaWxkIERPTSBlbGVtZW50LCByZXR1cm5zIGEgcXVlcnktc2VsZWN0b3Igc3RhdGVtZW50IGRlc2NyaWJpbmcgdGhhdAogKiBhbmQgaXRzIGFuY2VzdG9ycwogKiBlLmcuIFtIVE1MRWxlbWVudF0gPT4gYm9keSA+IGRpdiA+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gaHRtbFRyZWVBc1N0cmluZygKICBlbGVtLAogIG9wdGlvbnMgPSB7fSwKKSB7CiAgaWYgKCFlbGVtKSB7CiAgICByZXR1cm4gJzx1bmtub3duPic7CiAgfQoKICAvLyB0cnkvY2F0Y2ggYm90aDoKICAvLyAtIGFjY2Vzc2luZyBldmVudC50YXJnZXQgKHNlZSBnZXRzZW50cnkvcmF2ZW4tanMjODM4LCAjNzY4KQogIC8vIC0gYGh0bWxUcmVlQXNTdHJpbmdgIGJlY2F1c2UgaXQncyBjb21wbGV4LCBhbmQganVzdCBhY2Nlc3NpbmcgdGhlIERPTSBpbmNvcnJlY3RseQogIC8vIC0gY2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCiAgdHJ5IHsKICAgIGxldCBjdXJyZW50RWxlbSA9IGVsZW0gOwogICAgY29uc3QgTUFYX1RSQVZFUlNFX0hFSUdIVCA9IDU7CiAgICBjb25zdCBvdXQgPSBbXTsKICAgIGxldCBoZWlnaHQgPSAwOwogICAgbGV0IGxlbiA9IDA7CiAgICBjb25zdCBzZXBhcmF0b3IgPSAnID4gJzsKICAgIGNvbnN0IHNlcExlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7CiAgICBsZXQgbmV4dFN0cjsKICAgIGNvbnN0IGtleUF0dHJzID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBvcHRpb25zLmtleUF0dHJzOwogICAgY29uc3QgbWF4U3RyaW5nTGVuZ3RoID0gKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoKSB8fCBERUZBVUxUX01BWF9TVFJJTkdfTEVOR1RIOwoKICAgIHdoaWxlIChjdXJyZW50RWxlbSAmJiBoZWlnaHQrKyA8IE1BWF9UUkFWRVJTRV9IRUlHSFQpIHsKICAgICAgbmV4dFN0ciA9IF9odG1sRWxlbWVudEFzU3RyaW5nKGN1cnJlbnRFbGVtLCBrZXlBdHRycyk7CiAgICAgIC8vIGJhaWwgb3V0IGlmCiAgICAgIC8vIC0gbmV4dFN0ciBpcyB0aGUgJ2h0bWwnIGVsZW1lbnQKICAgICAgLy8gLSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgdGhhdCB3b3VsZCBiZSBjcmVhdGVkIGV4Y2VlZHMgbWF4U3RyaW5nTGVuZ3RoCiAgICAgIC8vICAgKGlnbm9yZSB0aGlzIGxpbWl0IGlmIHdlIGFyZSBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uKQogICAgICBpZiAobmV4dFN0ciA9PT0gJ2h0bWwnIHx8IChoZWlnaHQgPiAxICYmIGxlbiArIG91dC5sZW5ndGggKiBzZXBMZW5ndGggKyBuZXh0U3RyLmxlbmd0aCA+PSBtYXhTdHJpbmdMZW5ndGgpKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIG91dC5wdXNoKG5leHRTdHIpOwoKICAgICAgbGVuICs9IG5leHRTdHIubGVuZ3RoOwogICAgICBjdXJyZW50RWxlbSA9IGN1cnJlbnRFbGVtLnBhcmVudE5vZGU7CiAgICB9CgogICAgcmV0dXJuIG91dC5yZXZlcnNlKCkuam9pbihzZXBhcmF0b3IpOwogIH0gY2F0Y2ggKF9vTykgewogICAgcmV0dXJuICc8dW5rbm93bj4nOwogIH0KfQoKLyoqCiAqIFJldHVybnMgYSBzaW1wbGUsIHF1ZXJ5LXNlbGVjdG9yIHJlcHJlc2VudGF0aW9uIG9mIGEgRE9NIGVsZW1lbnQKICogZS5nLiBbSFRNTEVsZW1lbnRdID0+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gX2h0bWxFbGVtZW50QXNTdHJpbmcoZWwsIGtleUF0dHJzKSB7CiAgY29uc3QgZWxlbSA9IGVsCgo7CgogIGNvbnN0IG91dCA9IFtdOwogIGxldCBjbGFzc05hbWU7CiAgbGV0IGNsYXNzZXM7CiAgbGV0IGtleTsKICBsZXQgYXR0cjsKICBsZXQgaTsKCiAgaWYgKCFlbGVtIHx8ICFlbGVtLnRhZ05hbWUpIHsKICAgIHJldHVybiAnJzsKICB9CgogIC8vIEB0cy1leHBlY3QtZXJyb3IgV0lORE9XIGhhcyBIVE1MRWxlbWVudAogIGlmIChXSU5ET1cuSFRNTEVsZW1lbnQpIHsKICAgIC8vIElmIHVzaW5nIHRoZSBjb21wb25lbnQgbmFtZSBhbm5vdGF0aW9uIHBsdWdpbiwgdGhpcyB2YWx1ZSBtYXkgYmUgYXZhaWxhYmxlIG9uIHRoZSBET00gbm9kZQogICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBlbGVtLmRhdGFzZXQgJiYgZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXSkgewogICAgICByZXR1cm4gZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXTsKICAgIH0KICB9CgogIG91dC5wdXNoKGVsZW0udGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKCiAgLy8gUGFpcnMgb2YgYXR0cmlidXRlIGtleXMgZGVmaW5lZCBpbiBgc2VyaWFsaXplQXR0cmlidXRlYCBhbmQgdGhlaXIgdmFsdWVzIG9uIGVsZW1lbnQuCiAgY29uc3Qga2V5QXR0clBhaXJzID0KICAgIGtleUF0dHJzICYmIGtleUF0dHJzLmxlbmd0aAogICAgICA/IGtleUF0dHJzLmZpbHRlcihrZXlBdHRyID0+IGVsZW0uZ2V0QXR0cmlidXRlKGtleUF0dHIpKS5tYXAoa2V5QXR0ciA9PiBba2V5QXR0ciwgZWxlbS5nZXRBdHRyaWJ1dGUoa2V5QXR0cildKQogICAgICA6IG51bGw7CgogIGlmIChrZXlBdHRyUGFpcnMgJiYga2V5QXR0clBhaXJzLmxlbmd0aCkgewogICAga2V5QXR0clBhaXJzLmZvckVhY2goa2V5QXR0clBhaXIgPT4gewogICAgICBvdXQucHVzaChgWyR7a2V5QXR0clBhaXJbMF19PSIke2tleUF0dHJQYWlyWzFdfSJdYCk7CiAgICB9KTsKICB9IGVsc2UgewogICAgaWYgKGVsZW0uaWQpIHsKICAgICAgb3V0LnB1c2goYCMke2VsZW0uaWR9YCk7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdAogICAgY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWU7CiAgICBpZiAoY2xhc3NOYW1lICYmIGlzU3RyaW5nKGNsYXNzTmFtZSkpIHsKICAgICAgY2xhc3NlcyA9IGNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3V0LnB1c2goYC4ke2NsYXNzZXNbaV19YCk7CiAgICAgIH0KICAgIH0KICB9CiAgY29uc3QgYWxsb3dlZEF0dHJzID0gWydhcmlhLWxhYmVsJywgJ3R5cGUnLCAnbmFtZScsICd0aXRsZScsICdhbHQnXTsKICBmb3IgKGkgPSAwOyBpIDwgYWxsb3dlZEF0dHJzLmxlbmd0aDsgaSsrKSB7CiAgICBrZXkgPSBhbGxvd2VkQXR0cnNbaV07CiAgICBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoa2V5KTsKICAgIGlmIChhdHRyKSB7CiAgICAgIG91dC5wdXNoKGBbJHtrZXl9PSIke2F0dHJ9Il1gKTsKICAgIH0KICB9CiAgcmV0dXJuIG91dC5qb2luKCcnKTsKfQoKLyoqCiAqIFRoaXMgc2VydmVzIGFzIGEgYnVpbGQgdGltZSBmbGFnIHRoYXQgd2lsbCBiZSB0cnVlIGJ5IGRlZmF1bHQsIGJ1dCBmYWxzZSBpbiBub24tZGVidWcgYnVpbGRzIG9yIGlmIHVzZXJzIHJlcGxhY2UgYF9fU0VOVFJZX0RFQlVHX19gIGluIHRoZWlyIGdlbmVyYXRlZCBjb2RlLgogKgogKiBBVFRFTlRJT046IFRoaXMgY29uc3RhbnQgbXVzdCBuZXZlciBjcm9zcyBwYWNrYWdlIGJvdW5kYXJpZXMgKGkuZS4gYmUgZXhwb3J0ZWQpIHRvIGd1YXJhbnRlZSB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciB0cmVlIHNoYWtpbmcuCiAqLwpjb25zdCBERUJVR19CVUlMRCQxID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCi8qKiBQcmVmaXggZm9yIGxvZ2dpbmcgc3RyaW5ncyAqLwpjb25zdCBQUkVGSVggPSAnU2VudHJ5IExvZ2dlciAnOwoKY29uc3QgQ09OU09MRV9MRVZFTFMgPSBbCiAgJ2RlYnVnJywKICAnaW5mbycsCiAgJ3dhcm4nLAogICdlcnJvcicsCiAgJ2xvZycsCiAgJ2Fzc2VydCcsCiAgJ3RyYWNlJywKXSA7CgovKiogVGhpcyBtYXkgYmUgbXV0YXRlZCBieSB0aGUgY29uc29sZSBpbnN0cnVtZW50YXRpb24uICovCmNvbnN0IG9yaWdpbmFsQ29uc29sZU1ldGhvZHMKCiA9IHt9OwoKLyoqIEpTRG9jICovCgovKioKICogVGVtcG9yYXJpbHkgZGlzYWJsZSBzZW50cnkgY29uc29sZSBpbnN0cnVtZW50YXRpb25zLgogKgogKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIHJ1biBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBgY29uc29sZWAgbWVzc2FnZXMKICogQHJldHVybnMgVGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrCiAqLwpmdW5jdGlvbiBjb25zb2xlU2FuZGJveChjYWxsYmFjaykgewogIGlmICghKCdjb25zb2xlJyBpbiBHTE9CQUxfT0JKKSkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfQoKICBjb25zdCBjb25zb2xlID0gR0xPQkFMX09CSi5jb25zb2xlIDsKICBjb25zdCB3cmFwcGVkRnVuY3MgPSB7fTsKCiAgY29uc3Qgd3JhcHBlZExldmVscyA9IE9iamVjdC5rZXlzKG9yaWdpbmFsQ29uc29sZU1ldGhvZHMpIDsKCiAgLy8gUmVzdG9yZSBhbGwgd3JhcHBlZCBjb25zb2xlIG1ldGhvZHMKICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgY29uc3Qgb3JpZ2luYWxDb25zb2xlTWV0aG9kID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kc1tsZXZlbF0gOwogICAgd3JhcHBlZEZ1bmNzW2xldmVsXSA9IGNvbnNvbGVbbGV2ZWxdIDsKICAgIGNvbnNvbGVbbGV2ZWxdID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kOwogIH0pOwoKICB0cnkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfSBmaW5hbGx5IHsKICAgIC8vIFJldmVydCByZXN0b3JhdGlvbiB0byB3cmFwcGVkIHN0YXRlCiAgICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgICBjb25zb2xlW2xldmVsXSA9IHdyYXBwZWRGdW5jc1tsZXZlbF0gOwogICAgfSk7CiAgfQp9CgpmdW5jdGlvbiBtYWtlTG9nZ2VyKCkgewogIGxldCBlbmFibGVkID0gZmFsc2U7CiAgY29uc3QgbG9nZ2VyID0gewogICAgZW5hYmxlOiAoKSA9PiB7CiAgICAgIGVuYWJsZWQgPSB0cnVlOwogICAgfSwKICAgIGRpc2FibGU6ICgpID0+IHsKICAgICAgZW5hYmxlZCA9IGZhbHNlOwogICAgfSwKICAgIGlzRW5hYmxlZDogKCkgPT4gZW5hYmxlZCwKICB9OwoKICBpZiAoREVCVUdfQlVJTEQkMSkgewogICAgQ09OU09MRV9MRVZFTFMuZm9yRWFjaChuYW1lID0+IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgICAgbG9nZ2VyW25hbWVdID0gKC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICAgY29uc29sZVNhbmRib3goKCkgPT4gewogICAgICAgICAgICBHTE9CQUxfT0JKLmNvbnNvbGVbbmFtZV0oYCR7UFJFRklYfVske25hbWV9XTpgLCAuLi5hcmdzKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfTsKICAgIH0pOwogIH0gZWxzZSB7CiAgICBDT05TT0xFX0xFVkVMUy5mb3JFYWNoKG5hbWUgPT4gewogICAgICBsb2dnZXJbbmFtZV0gPSAoKSA9PiB1bmRlZmluZWQ7CiAgICB9KTsKICB9CgogIHJldHVybiBsb2dnZXIgOwp9Cgpjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKCk7CgovKioKICogUmVuZGVycyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHNuLgogKgogKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcmVuZGVyIHRoZSBwdWJsaWMgcmVwcmVzZW50YXRpb24gd2l0aG91dCB0aGUgcGFzc3dvcmQKICogY29tcG9uZW50LiBUbyBnZXQgdGhlIGRlcHJlY2F0ZWQgcHJpdmF0ZSByZXByZXNlbnRhdGlvbiwgc2V0IGB3aXRoUGFzc3dvcmRgCiAqIHRvIHRydWUuCiAqCiAqIEBwYXJhbSB3aXRoUGFzc3dvcmQgV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHBhc3N3b3JkIHdpbGwgYmUgaW5jbHVkZWQuCiAqLwpmdW5jdGlvbiBkc25Ub1N0cmluZyhkc24sIHdpdGhQYXNzd29yZCA9IGZhbHNlKSB7CiAgY29uc3QgeyBob3N0LCBwYXRoLCBwYXNzLCBwb3J0LCBwcm9qZWN0SWQsIHByb3RvY29sLCBwdWJsaWNLZXkgfSA9IGRzbjsKICByZXR1cm4gKAogICAgYCR7cHJvdG9jb2x9Oi8vJHtwdWJsaWNLZXl9JHt3aXRoUGFzc3dvcmQgJiYgcGFzcyA/IGA6JHtwYXNzfWAgOiAnJ31gICsKICAgIGBAJHtob3N0fSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30vJHtwYXRoID8gYCR7cGF0aH0vYCA6IHBhdGh9JHtwcm9qZWN0SWR9YAogICk7Cn0KCi8qKiBBbiBlcnJvciBlbWl0dGVkIGJ5IFNlbnRyeSBTREtzIGFuZCByZWxhdGVkIHV0aWxpdGllcy4gKi8KY2xhc3MgU2VudHJ5RXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGlzIGVycm9yIGluc3RhbmNlLiAqLwoKICAgY29uc3RydWN0b3IoIG1lc3NhZ2UsIGxvZ0xldmVsID0gJ3dhcm4nKSB7CiAgICBzdXBlcihtZXNzYWdlKTt0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgdGhpcy5uYW1lID0gbmV3LnRhcmdldC5wcm90b3R5cGUuY29uc3RydWN0b3IubmFtZTsKICAgIC8vIFRoaXMgc2V0cyB0aGUgcHJvdG90eXBlIHRvIGJlIGBFcnJvcmAsIG5vdCBgU2VudHJ5RXJyb3JgLiBJdCdzIHVuY2xlYXIgd2h5IHdlIGRvIHRoaXMsIGJ1dCBjb21tZW50aW5nIHRoaXMgbGluZQogICAgLy8gb3V0IGNhdXNlcyB2YXJpb3VzIChzZWVtaW5nbHkgdG90YWxseSB1bnJlbGF0ZWQpIHBsYXl3cmlnaHQgdGVzdHMgY29uc2lzdGVudGx5IHRpbWUgb3V0LiBGWUksIHRoaXMgbWFrZXMKICAgIC8vIGluc3RhbmNlcyBvZiBgU2VudHJ5RXJyb3JgIGZhaWwgYG9iaiBpbnN0YW5jZW9mIFNlbnRyeUVycm9yYCBjaGVja3MuCiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOwogICAgdGhpcy5sb2dMZXZlbCA9IGxvZ0xldmVsOwogIH0KfQoKLyoqCiAqIEVuY29kZXMgZ2l2ZW4gb2JqZWN0IGludG8gdXJsLWZyaWVuZGx5IGZvcm1hdAogKgogKiBAcGFyYW0gb2JqZWN0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHNlcmlhbGl6YWJsZSB2YWx1ZXMKICogQHJldHVybnMgc3RyaW5nIEVuY29kZWQKICovCmZ1bmN0aW9uIHVybEVuY29kZShvYmplY3QpIHsKICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KQogICAgLm1hcChrZXkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9iamVjdFtrZXldKX1gKQogICAgLmpvaW4oJyYnKTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYW55IGBFcnJvcmAgb3IgYEV2ZW50YCBpbnRvIGEgcGxhaW4gb2JqZWN0IHdpdGggYWxsIG9mIHRoZWlyIGVudW1lcmFibGUgcHJvcGVydGllcywgYW5kIHNvbWUgb2YgdGhlaXIKICogbm9uLWVudW1lcmFibGUgcHJvcGVydGllcyBhdHRhY2hlZC4KICoKICogQHBhcmFtIHZhbHVlIEluaXRpYWwgc291cmNlIHRoYXQgd2UgaGF2ZSB0byB0cmFuc2Zvcm0gaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHVzYWJsZSBieSB0aGUgc2VyaWFsaXplcgogKiBAcmV0dXJucyBBbiBFdmVudCBvciBFcnJvciB0dXJuZWQgaW50byBhbiBvYmplY3QgLSBvciB0aGUgdmFsdWUgYXJndXJtZW50IGl0c2VsZiwgd2hlbiB2YWx1ZSBpcyBuZWl0aGVyIGFuIEV2ZW50IG5vcgogKiAgYW4gRXJyb3IuCiAqLwpmdW5jdGlvbiBjb252ZXJ0VG9QbGFpbk9iamVjdCgKICB2YWx1ZSwKKQoKIHsKICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKICAgIHJldHVybiB7CiAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsCiAgICAgIG5hbWU6IHZhbHVlLm5hbWUsCiAgICAgIHN0YWNrOiB2YWx1ZS5zdGFjaywKICAgICAgLi4uZ2V0T3duUHJvcGVydGllcyh2YWx1ZSksCiAgICB9OwogIH0gZWxzZSBpZiAoaXNFdmVudCh2YWx1ZSkpIHsKICAgIGNvbnN0IG5ld09iagoKID0gewogICAgICB0eXBlOiB2YWx1ZS50eXBlLAogICAgICB0YXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLnRhcmdldCksCiAgICAgIGN1cnJlbnRUYXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLmN1cnJlbnRUYXJnZXQpLAogICAgICAuLi5nZXRPd25Qcm9wZXJ0aWVzKHZhbHVlKSwKICAgIH07CgogICAgaWYgKHR5cGVvZiBDdXN0b21FdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHZhbHVlLCBDdXN0b21FdmVudCkpIHsKICAgICAgbmV3T2JqLmRldGFpbCA9IHZhbHVlLmRldGFpbDsKICAgIH0KCiAgICByZXR1cm4gbmV3T2JqOwogIH0gZWxzZSB7CiAgICByZXR1cm4gdmFsdWU7CiAgfQp9CgovKiogQ3JlYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGFyZ2V0IG9mIGFuIGBFdmVudGAgb2JqZWN0ICovCmZ1bmN0aW9uIHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHRhcmdldCkgewogIHRyeSB7CiAgICByZXR1cm4gaXNFbGVtZW50KHRhcmdldCkgPyBodG1sVHJlZUFzU3RyaW5nKHRhcmdldCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGFyZ2V0KTsKICB9IGNhdGNoIChfb08pIHsKICAgIHJldHVybiAnPHVua25vd24+JzsKICB9Cn0KCi8qKiBGaWx0ZXJzIG91dCBhbGwgYnV0IGFuIG9iamVjdCdzIG93biBwcm9wZXJ0aWVzICovCmZ1bmN0aW9uIGdldE93blByb3BlcnRpZXMob2JqKSB7CiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkgewogICAgY29uc3QgZXh0cmFjdGVkUHJvcHMgPSB7fTsKICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqKSB7CiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wZXJ0eSkpIHsKICAgICAgICBleHRyYWN0ZWRQcm9wc1twcm9wZXJ0eV0gPSAob2JqIClbcHJvcGVydHldOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZXh0cmFjdGVkUHJvcHM7CiAgfSBlbHNlIHsKICAgIHJldHVybiB7fTsKICB9Cn0KCi8qKgogKiBHaXZlbiBhbnkgb2JqZWN0LCByZXR1cm4gYSBuZXcgb2JqZWN0IGhhdmluZyByZW1vdmVkIGFsbCBmaWVsZHMgd2hvc2UgdmFsdWUgd2FzIGB1bmRlZmluZWRgLgogKiBXb3JrcyByZWN1cnNpdmVseSBvbiBvYmplY3RzIGFuZCBhcnJheXMuCiAqCiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBrZWVwcyBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSByZXR1cm5lZCBvYmplY3QuCiAqLwpmdW5jdGlvbiBkcm9wVW5kZWZpbmVkS2V5cyhpbnB1dFZhbHVlKSB7CiAgLy8gVGhpcyBtYXAga2VlcHMgdHJhY2sgb2Ygd2hhdCBhbHJlYWR5IHZpc2l0ZWQgbm9kZXMgbWFwIHRvLgogIC8vIE91ciBTZXQgLSBiYXNlZCBtZW1vQnVpbGRlciBkb2Vzbid0IHdvcmsgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gdGhlIG91dHB1dCBvYmplY3QgdG8gaGF2ZSB0aGUgc2FtZSBjaXJjdWxhcgogIC8vIHJlZmVyZW5jZXMgYXMgdGhlIGlucHV0IG9iamVjdC4KICBjb25zdCBtZW1vaXphdGlvbk1hcCA9IG5ldyBNYXAoKTsKCiAgLy8gVGhpcyBmdW5jdGlvbiBqdXN0IHByb3hpZXMgYF9kcm9wVW5kZWZpbmVkS2V5c2AgdG8ga2VlcCB0aGUgYG1lbW9CdWlsZGVyYCBvdXQgb2YgdGhpcyBmdW5jdGlvbidzIEFQSQogIHJldHVybiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApOwp9CgpmdW5jdGlvbiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApIHsKICBpZiAoaXNQb2pvKGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBvYmplY3QgaXQgd2FzIG1hcHBlZCB0byBpbiB0aGUgbmV3IG9iamVjdAogICAgY29uc3QgbWVtb1ZhbCA9IG1lbW9pemF0aW9uTWFwLmdldChpbnB1dFZhbHVlKTsKICAgIGlmIChtZW1vVmFsICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIG1lbW9WYWwgOwogICAgfQoKICAgIGNvbnN0IHJldHVyblZhbHVlID0ge307CiAgICAvLyBTdG9yZSB0aGUgbWFwcGluZyBvZiB0aGlzIHZhbHVlIGluIGNhc2Ugd2UgdmlzaXQgaXQgYWdhaW4sIGluIGNhc2Ugb2YgY2lyY3VsYXIgZGF0YQogICAgbWVtb2l6YXRpb25NYXAuc2V0KGlucHV0VmFsdWUsIHJldHVyblZhbHVlKTsKCiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbnB1dFZhbHVlKSkgewogICAgICBpZiAodHlwZW9mIGlucHV0VmFsdWVba2V5XSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICByZXR1cm5WYWx1ZVtrZXldID0gX2Ryb3BVbmRlZmluZWRLZXlzKGlucHV0VmFsdWVba2V5XSwgbWVtb2l6YXRpb25NYXApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIGlmIChBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBhcnJheSBpdCB3YXMgbWFwcGVkIHRvIGluIHRoZSBuZXcgb2JqZWN0CiAgICBjb25zdCBtZW1vVmFsID0gbWVtb2l6YXRpb25NYXAuZ2V0KGlucHV0VmFsdWUpOwogICAgaWYgKG1lbW9WYWwgIT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm4gbWVtb1ZhbCA7CiAgICB9CgogICAgY29uc3QgcmV0dXJuVmFsdWUgPSBbXTsKICAgIC8vIFN0b3JlIHRoZSBtYXBwaW5nIG9mIHRoaXMgdmFsdWUgaW4gY2FzZSB3ZSB2aXNpdCBpdCBhZ2FpbiwgaW4gY2FzZSBvZiBjaXJjdWxhciBkYXRhCiAgICBtZW1vaXphdGlvbk1hcC5zZXQoaW5wdXRWYWx1ZSwgcmV0dXJuVmFsdWUpOwoKICAgIGlucHV0VmFsdWUuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgICByZXR1cm5WYWx1ZS5wdXNoKF9kcm9wVW5kZWZpbmVkS2V5cyhpdGVtLCBtZW1vaXphdGlvbk1hcCkpOwogICAgfSk7CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIHJldHVybiBpbnB1dFZhbHVlOwp9CgpmdW5jdGlvbiBpc1Bvam8oaW5wdXQpIHsKICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXQpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICB0cnkgewogICAgY29uc3QgbmFtZSA9IChPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXQpICkuY29uc3RydWN0b3IubmFtZTsKICAgIHJldHVybiAhbmFtZSB8fCBuYW1lID09PSAnT2JqZWN0JzsKICB9IGNhdGNoIChlKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn0KCi8qKgogKiBEb2VzIHRoaXMgZmlsZW5hbWUgbG9vayBsaWtlIGl0J3MgcGFydCBvZiB0aGUgYXBwIGNvZGU/CiAqLwpmdW5jdGlvbiBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUsIGlzTmF0aXZlID0gZmFsc2UpIHsKICBjb25zdCBpc0ludGVybmFsID0KICAgIGlzTmF0aXZlIHx8CiAgICAoZmlsZW5hbWUgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSBsaW51eCBwYXRoCiAgICAgICFmaWxlbmFtZS5zdGFydHNXaXRoKCcvJykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSB3aW5kb3dzIHBhdGgKICAgICAgIWZpbGVuYW1lLm1hdGNoKC9eW0EtWl06LykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgdGhlIHBhdGggaXMgc3RhcnRpbmcgd2l0aCBhIGRvdAogICAgICAhZmlsZW5hbWUuc3RhcnRzV2l0aCgnLicpICYmCiAgICAgIC8vIEl0J3Mgbm90IGludGVybmFsIGlmIHRoZSBmcmFtZSBoYXMgYSBwcm90b2NvbC4gSW4gbm9kZSwgdGhpcyBpcyB1c3VhbGx5IHRoZSBjYXNlIGlmIHRoZSBmaWxlIGdvdCBwcmUtcHJvY2Vzc2VkIHdpdGggYSBidW5kbGVyIGxpa2Ugd2VicGFjawogICAgICAhZmlsZW5hbWUubWF0Y2goL15bYS16QS1aXShbYS16QS1aMC05LlwtK10pKjpcL1wvLykpOyAvLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM2NDE3ODIKCiAgLy8gaW5fYXBwIGlzIGFsbCB0aGF0J3Mgbm90IGFuIGludGVybmFsIE5vZGUgZnVuY3Rpb24gb3IgYSBtb2R1bGUgd2l0aGluIG5vZGVfbW9kdWxlcwogIC8vIG5vdGUgdGhhdCBpc05hdGl2ZSBhcHBlYXJzIHRvIHJldHVybiB0cnVlIGV2ZW4gZm9yIG5vZGUgY29yZSBsaWJyYXJpZXMKICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9yYXZlbi1ub2RlL2lzc3Vlcy8xNzYKCiAgcmV0dXJuICFpc0ludGVybmFsICYmIGZpbGVuYW1lICE9PSB1bmRlZmluZWQgJiYgIWZpbGVuYW1lLmluY2x1ZGVzKCdub2RlX21vZHVsZXMvJyk7Cn0KCmNvbnN0IFNUQUNLVFJBQ0VfRlJBTUVfTElNSVQgPSA1MDsKY29uc3QgU1RSSVBfRlJBTUVfUkVHRVhQID0gL2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vOwoKLyoqCiAqIFJlbW92ZXMgU2VudHJ5IGZyYW1lcyBmcm9tIHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgc3RhY2sgaWYgcHJlc2VudCBhbmQgZW5mb3JjZXMgYSBsaW1pdCBvZiBtYXggbnVtYmVyIG9mIGZyYW1lcy4KICogQXNzdW1lcyBzdGFjayBpbnB1dCBpcyBvcmRlcmVkIGZyb20gdG9wIHRvIGJvdHRvbSBhbmQgcmV0dXJucyB0aGUgcmV2ZXJzZSByZXByZXNlbnRhdGlvbiBzbyBjYWxsIHNpdGUgb2YgdGhlCiAqIGZ1bmN0aW9uIHRoYXQgY2F1c2VkIHRoZSBjcmFzaCBpcyB0aGUgbGFzdCBmcmFtZSBpbiB0aGUgYXJyYXkuCiAqIEBoaWRkZW4KICovCmZ1bmN0aW9uIHN0cmlwU2VudHJ5RnJhbWVzQW5kUmV2ZXJzZShzdGFjaykgewogIGlmICghc3RhY2subGVuZ3RoKSB7CiAgICByZXR1cm4gW107CiAgfQoKICBjb25zdCBsb2NhbFN0YWNrID0gQXJyYXkuZnJvbShzdGFjayk7CgogIC8vIElmIHN0YWNrIHN0YXJ0cyB3aXRoIG9uZSBvZiBvdXIgQVBJIGNhbGxzLCByZW1vdmUgaXQgKHN0YXJ0cywgbWVhbmluZyBpdCdzIHRoZSB0b3Agb2YgdGhlIHN0YWNrIC0gYWthIGxhc3QgY2FsbCkKICBpZiAoL3NlbnRyeVdyYXBwZWQvLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgbG9jYWxTdGFjay5wb3AoKTsKICB9CgogIC8vIFJldmVyc2luZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcm9jZWR1cmUgYWxsb3dzIHVzIHRvIGp1c3QgcG9wIHRoZSB2YWx1ZXMgb2ZmIHRoZSBzdGFjawogIGxvY2FsU3RhY2sucmV2ZXJzZSgpOwoKICAvLyBJZiBzdGFjayBlbmRzIHdpdGggb25lIG9mIG91ciBpbnRlcm5hbCBBUEkgY2FsbHMsIHJlbW92ZSBpdCAoZW5kcywgbWVhbmluZyBpdCdzIHRoZSBib3R0b20gb2YgdGhlIHN0YWNrIC0gYWthIHRvcC1tb3N0IGNhbGwpCiAgaWYgKFNUUklQX0ZSQU1FX1JFR0VYUC50ZXN0KGxvY2FsU3RhY2tbbG9jYWxTdGFjay5sZW5ndGggLSAxXS5mdW5jdGlvbiB8fCAnJykpIHsKICAgIGxvY2FsU3RhY2sucG9wKCk7CgogICAgLy8gV2hlbiB1c2luZyBzeW50aGV0aWMgZXZlbnRzLCB3ZSB3aWxsIGhhdmUgYSAyIGxldmVscyBkZWVwIHN0YWNrLCBhcyBgbmV3IEVycm9yKCdTZW50cnkgc3ludGhldGljRXhjZXB0aW9uJylgCiAgICAvLyBpcyBwcm9kdWNlZCB3aXRoaW4gdGhlIGh1YiBpdHNlbGYsIG1ha2luZyBpdDoKICAgIC8vCiAgICAvLyAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKCkKICAgIC8vICAgZ2V0Q3VycmVudEh1YigpLmNhcHR1cmVFeGNlcHRpb24oKQogICAgLy8KICAgIC8vIGluc3RlYWQgb2YganVzdCB0aGUgdG9wIGBTZW50cnlgIGNhbGwgaXRzZWxmLgogICAgLy8gVGhpcyBmb3JjZXMgdXMgdG8gcG9zc2libHkgc3RyaXAgYW4gYWRkaXRpb25hbCBmcmFtZSBpbiB0aGUgZXhhY3Qgc2FtZSB3YXMgYXMgYWJvdmUuCiAgICBpZiAoU1RSSVBfRlJBTUVfUkVHRVhQLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgICBsb2NhbFN0YWNrLnBvcCgpOwogICAgfQogIH0KCiAgcmV0dXJuIGxvY2FsU3RhY2suc2xpY2UoMCwgU1RBQ0tUUkFDRV9GUkFNRV9MSU1JVCkubWFwKGZyYW1lID0+ICh7CiAgICAuLi5mcmFtZSwKICAgIGZpbGVuYW1lOiBmcmFtZS5maWxlbmFtZSB8fCBsb2NhbFN0YWNrW2xvY2FsU3RhY2subGVuZ3RoIC0gMV0uZmlsZW5hbWUsCiAgICBmdW5jdGlvbjogZnJhbWUuZnVuY3Rpb24gfHwgJz8nLAogIH0pKTsKfQoKY29uc3QgZGVmYXVsdEZ1bmN0aW9uTmFtZSA9ICc8YW5vbnltb3VzPic7CgovKioKICogU2FmZWx5IGV4dHJhY3QgZnVuY3Rpb24gbmFtZSBmcm9tIGl0c2VsZgogKi8KZnVuY3Rpb24gZ2V0RnVuY3Rpb25OYW1lKGZuKSB7CiAgdHJ5IHsKICAgIGlmICghZm4gfHwgdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogICAgfQogICAgcmV0dXJuIGZuLm5hbWUgfHwgZGVmYXVsdEZ1bmN0aW9uTmFtZTsKICB9IGNhdGNoIChlKSB7CiAgICAvLyBKdXN0IGFjY2Vzc2luZyBjdXN0b20gcHJvcHMgaW4gc29tZSBTZWxlbml1bSBlbnZpcm9ubWVudHMKICAgIC8vIGNhbiBjYXVzZSBhICJQZXJtaXNzaW9uIGRlbmllZCIgZXhjZXB0aW9uIChzZWUgcmF2ZW4tanMjNDk1KS4KICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogIH0KfQoKLyoqCiAqIFVVSUQ0IGdlbmVyYXRvcgogKgogKiBAcmV0dXJucyBzdHJpbmcgR2VuZXJhdGVkIFVVSUQ0LgogKi8KZnVuY3Rpb24gdXVpZDQoKSB7CiAgY29uc3QgZ2JsID0gR0xPQkFMX09CSiA7CiAgY29uc3QgY3J5cHRvID0gZ2JsLmNyeXB0byB8fCBnYmwubXNDcnlwdG87CgogIGxldCBnZXRSYW5kb21CeXRlID0gKCkgPT4gTWF0aC5yYW5kb20oKSAqIDE2OwogIHRyeSB7CiAgICBpZiAoY3J5cHRvICYmIGNyeXB0by5yYW5kb21VVUlEKSB7CiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpLnJlcGxhY2UoLy0vZywgJycpOwogICAgfQogICAgaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7CiAgICAgIGdldFJhbmRvbUJ5dGUgPSAoKSA9PiB7CiAgICAgICAgLy8gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBtaWdodCByZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhlIHR5cGVkIGFycmF5CiAgICAgICAgLy8gaW4gb2xkIENocm9taXVtIHZlcnNpb25zIChlLmcuIDIzLjAuMTIzNS4wICgxNTE0MjIpKQogICAgICAgIC8vIEhvd2V2ZXIsIGB0eXBlZEFycmF5YCBpcyBzdGlsbCBmaWxsZWQgaW4tcGxhY2UuCiAgICAgICAgLy8gQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3J5cHRvL2dldFJhbmRvbVZhbHVlcyN0eXBlZGFycmF5CiAgICAgICAgY29uc3QgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KDEpOwogICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModHlwZWRBcnJheSk7CiAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlbMF07CiAgICAgIH07CiAgICB9CiAgfSBjYXRjaCAoXykgewogICAgLy8gc29tZSBydW50aW1lcyBjYW4gY3Jhc2ggaW52b2tpbmcgY3J5cHRvCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy84OTM1CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9ob3ctdG8tY3JlYXRlLWEtZ3VpZC11dWlkLWluLWphdmFzY3JpcHQvMjExNzUyMyMyMTE3NTIzCiAgLy8gQ29uY2F0ZW5hdGluZyB0aGUgZm9sbG93aW5nIG51bWJlcnMgYXMgc3RyaW5ncyByZXN1bHRzIGluICcxMDAwMDAwMDEwMDA0MDAwODAwMDEwMDAwMDAwMDAwMCcKICByZXR1cm4gKChbMWU3XSApICsgMWUzICsgNGUzICsgOGUzICsgMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgYyA9PgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UKICAgICgoYyApIF4gKChnZXRSYW5kb21CeXRlKCkgJiAxNSkgPj4gKChjICkgLyA0KSkpLnRvU3RyaW5nKDE2KSwKICApOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGlucHV0IGlzIGFscmVhZHkgYW4gYXJyYXksIGFuZCBpZiBpdCBpc24ndCwgd3JhcHMgaXQgaW4gb25lLgogKgogKiBAcGFyYW0gbWF5YmVBcnJheSBJbnB1dCB0byB0dXJuIGludG8gYW4gYXJyYXksIGlmIG5lY2Vzc2FyeQogKiBAcmV0dXJucyBUaGUgaW5wdXQsIGlmIGFscmVhZHkgYW4gYXJyYXksIG9yIGFuIGFycmF5IHdpdGggdGhlIGlucHV0IGFzIHRoZSBvbmx5IGVsZW1lbnQsIGlmIG5vdAogKi8KZnVuY3Rpb24gYXJyYXlpZnkobWF5YmVBcnJheSkgewogIHJldHVybiBBcnJheS5pc0FycmF5KG1heWJlQXJyYXkpID8gbWF5YmVBcnJheSA6IFttYXliZUFycmF5XTsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzICovCi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi8KCi8qKgogKiBIZWxwZXIgdG8gZGVjeWNsZSBqc29uIG9iamVjdHMKICovCmZ1bmN0aW9uIG1lbW9CdWlsZGVyKCkgewogIGNvbnN0IGhhc1dlYWtTZXQgPSB0eXBlb2YgV2Vha1NldCA9PT0gJ2Z1bmN0aW9uJzsKICBjb25zdCBpbm5lciA9IGhhc1dlYWtTZXQgPyBuZXcgV2Vha1NldCgpIDogW107CiAgZnVuY3Rpb24gbWVtb2l6ZShvYmopIHsKICAgIGlmIChoYXNXZWFrU2V0KSB7CiAgICAgIGlmIChpbm5lci5oYXMob2JqKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIGlubmVyLmFkZChvYmopOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2YKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHsKICAgICAgY29uc3QgdmFsdWUgPSBpbm5lcltpXTsKICAgICAgaWYgKHZhbHVlID09PSBvYmopIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQogICAgaW5uZXIucHVzaChvYmopOwogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gdW5tZW1vaXplKG9iaikgewogICAgaWYgKGhhc1dlYWtTZXQpIHsKICAgICAgaW5uZXIuZGVsZXRlKG9iaik7CiAgICB9IGVsc2UgewogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlubmVyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGlubmVyW2ldID09PSBvYmopIHsKICAgICAgICAgIGlubmVyLnNwbGljZShpLCAxKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICByZXR1cm4gW21lbW9pemUsIHVubWVtb2l6ZV07Cn0KCi8qKgogKiBSZWN1cnNpdmVseSBub3JtYWxpemVzIHRoZSBnaXZlbiBvYmplY3QuCiAqCiAqIC0gQ3JlYXRlcyBhIGNvcHkgdG8gcHJldmVudCBvcmlnaW5hbCBpbnB1dCBtdXRhdGlvbgogKiAtIFNraXBzIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMKICogLSBXaGVuIHN0cmluZ2lmeWluZywgY2FsbHMgYHRvSlNPTmAgaWYgaW1wbGVtZW50ZWQKICogLSBSZW1vdmVzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICogLSBUcmFuc2xhdGVzIG5vbi1zZXJpYWxpemFibGUgdmFsdWVzIChgdW5kZWZpbmVkYC9gTmFOYC9mdW5jdGlvbnMpIHRvIHNlcmlhbGl6YWJsZSBmb3JtYXQKICogLSBUcmFuc2xhdGVzIGtub3duIGdsb2JhbCBvYmplY3RzL2NsYXNzZXMgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25zCiAqIC0gVGFrZXMgY2FyZSBvZiBgRXJyb3JgIG9iamVjdCBzZXJpYWxpemF0aW9uCiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgZGVwdGggb2YgZmluYWwgb3V0cHV0CiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgbnVtYmVyIG9mIHByb3BlcnRpZXMvZWxlbWVudHMgaW5jbHVkZWQgaW4gYW55IHNpbmdsZSBvYmplY3QvYXJyYXkKICoKICogQHBhcmFtIGlucHV0IFRoZSBvYmplY3QgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGRlcHRoIFRoZSBtYXggZGVwdGggdG8gd2hpY2ggdG8gbm9ybWFsaXplIHRoZSBvYmplY3QuIChBbnl0aGluZyBkZWVwZXIgc3RyaW5naWZpZWQgd2hvbGUuKQogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBvciBwcm9wZXJ0aWVzIHRvIGJlIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgYXJyYXkgb3IKICogb2JqZWN0IGluIHRoZSBub3JtYWxsaXplZCBvdXRwdXQuCiAqIEByZXR1cm5zIEEgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QsIG9yIGAiKipub24tc2VyaWFsaXphYmxlKioiYCBpZiBhbnkgZXJyb3JzIGFyZSB0aHJvd24gZHVyaW5nIG5vcm1hbGl6YXRpb24uCiAqLwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQpmdW5jdGlvbiBub3JtYWxpemUoaW5wdXQsIGRlcHRoID0gMTAwLCBtYXhQcm9wZXJ0aWVzID0gK0luZmluaXR5KSB7CiAgdHJ5IHsKICAgIC8vIHNpbmNlIHdlJ3JlIGF0IHRoZSBvdXRlcm1vc3QgbGV2ZWwsIHdlIGRvbid0IHByb3ZpZGUgYSBrZXkKICAgIHJldHVybiB2aXNpdCgnJywgaW5wdXQsIGRlcHRoLCBtYXhQcm9wZXJ0aWVzKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiB7IEVSUk9SOiBgKipub24tc2VyaWFsaXphYmxlKiogKCR7ZXJyfSlgIH07CiAgfQp9CgovKioKICogVmlzaXRzIGEgbm9kZSB0byBwZXJmb3JtIG5vcm1hbGl6YXRpb24gb24gaXQKICoKICogQHBhcmFtIGtleSBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5vZGUKICogQHBhcmFtIHZhbHVlIFRoZSBub2RlIHRvIGJlIHZpc2l0ZWQKICogQHBhcmFtIGRlcHRoIE9wdGlvbmFsIG51bWJlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aAogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBPcHRpb25hbCBtYXhpbXVtIG51bWJlciBvZiBwcm9wZXJ0aWVzL2VsZW1lbnRzIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgb2JqZWN0L2FycmF5CiAqIEBwYXJhbSBtZW1vIE9wdGlvbmFsIE1lbW8gY2xhc3MgaGFuZGxpbmcgZGVjeWNsaW5nCiAqLwpmdW5jdGlvbiB2aXNpdCgKICBrZXksCiAgdmFsdWUsCiAgZGVwdGggPSArSW5maW5pdHksCiAgbWF4UHJvcGVydGllcyA9ICtJbmZpbml0eSwKICBtZW1vID0gbWVtb0J1aWxkZXIoKSwKKSB7CiAgY29uc3QgW21lbW9pemUsIHVubWVtb2l6ZV0gPSBtZW1vOwoKICAvLyBHZXQgdGhlIHNpbXBsZSBjYXNlcyBvdXQgb2YgdGhlIHdheSBmaXJzdAogIGlmICgKICAgIHZhbHVlID09IG51bGwgfHwgLy8gdGhpcyBtYXRjaGVzIG51bGwgYW5kIHVuZGVmaW5lZCAtPiBlcWVxIG5vdCBlcWVxZXEKICAgIChbJ251bWJlcicsICdib29sZWFuJywgJ3N0cmluZyddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkgJiYgIWlzTmFOJDEodmFsdWUpKQogICkgewogICAgcmV0dXJuIHZhbHVlIDsKICB9CgogIGNvbnN0IHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5VmFsdWUoa2V5LCB2YWx1ZSk7CgogIC8vIEFueXRoaW5nIHdlIGNvdWxkIHBvdGVudGlhbGx5IGRpZyBpbnRvIG1vcmUgKG9iamVjdHMgb3IgYXJyYXlzKSB3aWxsIGhhdmUgY29tZSBiYWNrIGFzIGAiW29iamVjdCBYWFhYXSJgLgogIC8vIEV2ZXJ5dGhpbmcgZWxzZSB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIHNlcmlhbGl6ZWQsIHNvIGlmIHdlIGRvbid0IHNlZSB0aGF0IHBhdHRlcm4sIHdlJ3JlIGRvbmUuCiAgaWYgKCFzdHJpbmdpZmllZC5zdGFydHNXaXRoKCdbb2JqZWN0ICcpKSB7CiAgICByZXR1cm4gc3RyaW5naWZpZWQ7CiAgfQoKICAvLyBGcm9tIGhlcmUgb24sIHdlIGNhbiBhc3NlcnQgdGhhdCBgdmFsdWVgIGlzIGVpdGhlciBhbiBvYmplY3Qgb3IgYW4gYXJyYXkuCgogIC8vIERvIG5vdCBub3JtYWxpemUgb2JqZWN0cyB0aGF0IHdlIGtub3cgaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gQXMgYSBnZW5lcmFsIHJ1bGUsIHRoZQogIC8vICJfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyIgcHJvcGVydHkgc2hvdWxkIG9ubHkgYmUgdXNlZCBzcGFyaW5nbHkgYW5kIG9ubHkgc2hvdWxkIG9ubHkgYmUgc2V0IG9uIG9iamVjdHMgdGhhdAogIC8vIGhhdmUgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuCiAgaWYgKCh2YWx1ZSApWydfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyddKSB7CiAgICByZXR1cm4gdmFsdWUgOwogIH0KCiAgLy8gV2UgY2FuIHNldCBgX19zZW50cnlfb3ZlcnJpZGVfbm9ybWFsaXphdGlvbl9kZXB0aF9fYCBvbiBhbiBvYmplY3QgdG8gZW5zdXJlIHRoYXQgZnJvbSB0aGVyZQogIC8vIFdlIGtlZXAgYSBjZXJ0YWluIGFtb3VudCBvZiBkZXB0aC4KICAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseSwgZS5nLiB3ZSB1c2UgaXQgZm9yIHRoZSByZWR1eCBpbnRlZ3JhdGlvbiB0byBlbnN1cmUgd2UgZ2V0IGEgY2VydGFpbiBhbW91bnQgb2Ygc3RhdGUuCiAgY29uc3QgcmVtYWluaW5nRGVwdGggPQogICAgdHlwZW9mICh2YWx1ZSApWydfX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18nXSA9PT0gJ251bWJlcicKICAgICAgPyAoKHZhbHVlIClbJ19fc2VudHJ5X292ZXJyaWRlX25vcm1hbGl6YXRpb25fZGVwdGhfXyddICkKICAgICAgOiBkZXB0aDsKCiAgLy8gV2UncmUgYWxzbyBkb25lIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIG1heCBkZXB0aAogIGlmIChyZW1haW5pbmdEZXB0aCA9PT0gMCkgewogICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGBzZXJpYWxpemVkYCBpcyBhIHN0cmluZyBvZiB0aGUgZm9ybSBgIltvYmplY3QgWFhYWF0iYC4gQ2xlYW4gaXQgdXAgc28gaXQncyBqdXN0IGAiW1hYWFhdImAuCiAgICByZXR1cm4gc3RyaW5naWZpZWQucmVwbGFjZSgnb2JqZWN0ICcsICcnKTsKICB9CgogIC8vIElmIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGlzIGJyYW5jaCwgYmFpbCBvdXQsIGFzIGl0J3MgY2lyY3VsYXIgcmVmZXJlbmNlLiBJZiBub3QsIG5vdGUgdGhhdCB3ZSdyZSBzZWVpbmcgaXQgbm93LgogIGlmIChtZW1vaXplKHZhbHVlKSkgewogICAgcmV0dXJuICdbQ2lyY3VsYXIgfl0nOwogIH0KCiAgLy8gSWYgdGhlIHZhbHVlIGhhcyBhIGB0b0pTT05gIG1ldGhvZCwgd2UgY2FsbCBpdCB0byBleHRyYWN0IG1vcmUgaW5mb3JtYXRpb24KICBjb25zdCB2YWx1ZVdpdGhUb0pTT04gPSB2YWx1ZSA7CiAgaWYgKHZhbHVlV2l0aFRvSlNPTiAmJiB0eXBlb2YgdmFsdWVXaXRoVG9KU09OLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgewogICAgdHJ5IHsKICAgICAgY29uc3QganNvblZhbHVlID0gdmFsdWVXaXRoVG9KU09OLnRvSlNPTigpOwogICAgICAvLyBXZSBuZWVkIHRvIG5vcm1hbGl6ZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGAudG9KU09OKClgIGluIGNhc2UgaXQgaGFzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgICAgcmV0dXJuIHZpc2l0KCcnLCBqc29uVmFsdWUsIHJlbWFpbmluZ0RlcHRoIC0gMSwgbWF4UHJvcGVydGllcywgbWVtbyk7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgLy8gcGFzcyAoVGhlIGJ1aWx0LWluIGB0b0pTT05gIGZhaWxlZCwgYnV0IHdlIGNhbiBzdGlsbCB0cnkgdG8gZG8gaXQgb3Vyc2VsdmVzKQogICAgfQogIH0KCiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHdlIGVpdGhlciBoYXZlIGFuIG9iamVjdCBvciBhbiBhcnJheSwgd2UgaGF2ZW4ndCBzZWVuIGl0IGJlZm9yZSwgYW5kIHdlJ3JlIGdvaW5nIHRvIHJlY3Vyc2UKICAvLyBiZWNhdXNlIHdlIGhhdmVuJ3QgeWV0IHJlYWNoZWQgdGhlIG1heCBkZXB0aC4gQ3JlYXRlIGFuIGFjY3VtdWxhdG9yIHRvIGhvbGQgdGhlIHJlc3VsdHMgb2YgdmlzaXRpbmcgZWFjaAogIC8vIHByb3BlcnR5L2VudHJ5LCBhbmQga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHdlIGFkZCB0byBpdC4KICBjb25zdCBub3JtYWxpemVkID0gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gW10gOiB7fSkgOwogIGxldCBudW1BZGRlZCA9IDA7CgogIC8vIEJlZm9yZSB3ZSBiZWdpbiwgY29udmVydGBFcnJvcmAgYW5kYEV2ZW50YCBpbnN0YW5jZXMgaW50byBwbGFpbiBvYmplY3RzLCBzaW5jZSBzb21lIG9mIGVhY2ggb2YgdGhlaXIgcmVsZXZhbnQKICAvLyBwcm9wZXJ0aWVzIGFyZSBub24tZW51bWVyYWJsZSBhbmQgb3RoZXJ3aXNlIHdvdWxkIGdldCBtaXNzZWQuCiAgY29uc3QgdmlzaXRhYmxlID0gY29udmVydFRvUGxhaW5PYmplY3QodmFsdWUgKTsKCiAgZm9yIChjb25zdCB2aXNpdEtleSBpbiB2aXNpdGFibGUpIHsKICAgIC8vIEF2b2lkIGl0ZXJhdGluZyBvdmVyIGZpZWxkcyBpbiB0aGUgcHJvdG90eXBlIGlmIHRoZXkndmUgc29tZWhvdyBiZWVuIGV4cG9zZWQgdG8gZW51bWVyYXRpb24uCiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2aXNpdGFibGUsIHZpc2l0S2V5KSkgewogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAobnVtQWRkZWQgPj0gbWF4UHJvcGVydGllcykgewogICAgICBub3JtYWxpemVkW3Zpc2l0S2V5XSA9ICdbTWF4UHJvcGVydGllcyB+XSc7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFJlY3Vyc2l2ZWx5IHZpc2l0IGFsbCB0aGUgY2hpbGQgbm9kZXMKICAgIGNvbnN0IHZpc2l0VmFsdWUgPSB2aXNpdGFibGVbdmlzaXRLZXldOwogICAgbm9ybWFsaXplZFt2aXNpdEtleV0gPSB2aXNpdCh2aXNpdEtleSwgdmlzaXRWYWx1ZSwgcmVtYWluaW5nRGVwdGggLSAxLCBtYXhQcm9wZXJ0aWVzLCBtZW1vKTsKCiAgICBudW1BZGRlZCsrOwogIH0KCiAgLy8gT25jZSB3ZSd2ZSB2aXNpdGVkIGFsbCB0aGUgYnJhbmNoZXMsIHJlbW92ZSB0aGUgcGFyZW50IGZyb20gbWVtbyBzdG9yYWdlCiAgdW5tZW1vaXplKHZhbHVlKTsKCiAgLy8gUmV0dXJuIGFjY3VtdWxhdGVkIHZhbHVlcwogIHJldHVybiBub3JtYWxpemVkOwp9CgovKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovCi8qKgogKiBTdHJpbmdpZnkgdGhlIGdpdmVuIHZhbHVlLiBIYW5kbGVzIHZhcmlvdXMga25vd24gc3BlY2lhbCB2YWx1ZXMgYW5kIHR5cGVzLgogKgogKiBOb3QgbWVhbnQgdG8gYmUgdXNlZCBvbiBzaW1wbGUgcHJpbWl0aXZlcyB3aGljaCBhbHJlYWR5IGhhdmUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24sIGFzIGl0IHdpbGwsIGZvciBleGFtcGxlLCB0dXJuCiAqIHRoZSBudW1iZXIgMTIzMSBpbnRvICJbT2JqZWN0IE51bWJlcl0iLCBub3Igb24gYG51bGxgLCBhcyBpdCB3aWxsIHRocm93LgogKgogKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHN0cmluZ2lmeQogKiBAcmV0dXJucyBBIHN0cmluZ2lmaWVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiB2YWx1ZQogKi8KZnVuY3Rpb24gc3RyaW5naWZ5VmFsdWUoCiAga2V5LAogIC8vIHRoaXMgdHlwZSBpcyBhIHRpbnkgYml0IG9mIGEgY2hlYXQsIHNpbmNlIHRoaXMgZnVuY3Rpb24gZG9lcyBoYW5kbGUgTmFOICh3aGljaCBpcyB0ZWNobmljYWxseSBhIG51bWJlciksIGJ1dCBmb3IKICAvLyBvdXIgaW50ZXJuYWwgdXNlLCBpdCdsbCBkbwogIHZhbHVlLAopIHsKICB0cnkgewogICAgaWYgKGtleSA9PT0gJ2RvbWFpbicgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAodmFsdWUgKS5fZXZlbnRzKSB7CiAgICAgIHJldHVybiAnW0RvbWFpbl0nOwogICAgfQoKICAgIGlmIChrZXkgPT09ICdkb21haW5FbWl0dGVyJykgewogICAgICByZXR1cm4gJ1tEb21haW5FbWl0dGVyXSc7CiAgICB9CgogICAgLy8gSXQncyBzYWZlIHRvIHVzZSBgZ2xvYmFsYCwgYHdpbmRvd2AsIGFuZCBgZG9jdW1lbnRgIGhlcmUgaW4gdGhpcyBtYW5uZXIsIGFzIHdlIGFyZSBhc3NlcnRpbmcgdXNpbmcgYHR5cGVvZmAgZmlyc3QKICAgIC8vIHdoaWNoIHdvbid0IHRocm93IGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgoKICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gZ2xvYmFsKSB7CiAgICAgIHJldHVybiAnW0dsb2JhbF0nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gd2luZG93KSB7CiAgICAgIHJldHVybiAnW1dpbmRvd10nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlID09PSBkb2N1bWVudCkgewogICAgICByZXR1cm4gJ1tEb2N1bWVudF0nOwogICAgfQoKICAgIGlmIChpc1Z1ZVZpZXdNb2RlbCh2YWx1ZSkpIHsKICAgICAgcmV0dXJuICdbVnVlVmlld01vZGVsXSc7CiAgICB9CgogICAgLy8gUmVhY3QncyBTeW50aGV0aWNFdmVudCB0aGluZ3kKICAgIGlmIChpc1N5bnRoZXRpY0V2ZW50KHZhbHVlKSkgewogICAgICByZXR1cm4gJ1tTeW50aGV0aWNFdmVudF0nOwogICAgfQoKICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSB2YWx1ZSkgewogICAgICByZXR1cm4gJ1tOYU5dJzsKICAgIH0KCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBgW0Z1bmN0aW9uOiAke2dldEZ1bmN0aW9uTmFtZSh2YWx1ZSl9XWA7CiAgICB9CgogICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcpIHsKICAgICAgcmV0dXJuIGBbJHtTdHJpbmcodmFsdWUpfV1gOwogICAgfQoKICAgIC8vIHN0cmluZ2lmaWVkIEJpZ0ludHMgYXJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gcmVndWxhciBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGxhYmVsIHRoZW0gdG8gYXZvaWQgY29uZnVzaW9uCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JykgewogICAgICByZXR1cm4gYFtCaWdJbnQ6ICR7U3RyaW5nKHZhbHVlKX1dYDsKICAgIH0KCiAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBrbm9ja2VkIG91dCBhbGwgdGhlIHNwZWNpYWwgY2FzZXMgYW5kIHRoZSBwcmltaXRpdmVzLCBhbGwgd2UgaGF2ZSBsZWZ0IGFyZSBvYmplY3RzLiBTaW1wbHkgY2FzdGluZwogICAgLy8gdGhlbSB0byBzdHJpbmdzIG1lYW5zIHRoYXQgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2hpY2ggaGF2ZW4ndCBkZWZpbmVkIHRoZWlyIGB0b1N0cmluZ1RhZ2Agd2lsbCBqdXN0IGNvbWUgb3V0IGFzCiAgICAvLyBgIltvYmplY3QgT2JqZWN0XSJgLiBJZiB3ZSBpbnN0ZWFkIGxvb2sgYXQgdGhlIGNvbnN0cnVjdG9yJ3MgbmFtZSAod2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG5hbWUgb2YgdGhlIGNsYXNzKSwKICAgIC8vIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCBvbmx5IHBsYWluIG9iamVjdHMgY29tZSBvdXQgdGhhdCB3YXkuCiAgICBjb25zdCBvYmpOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKTsKCiAgICAvLyBIYW5kbGUgSFRNTCBFbGVtZW50cwogICAgaWYgKC9eSFRNTChcdyopRWxlbWVudCQvLnRlc3Qob2JqTmFtZSkpIHsKICAgICAgcmV0dXJuIGBbSFRNTEVsZW1lbnQ6ICR7b2JqTmFtZX1dYDsKICAgIH0KCiAgICByZXR1cm4gYFtvYmplY3QgJHtvYmpOYW1lfV1gOwogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIGAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHtlcnJ9KWA7CiAgfQp9Ci8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqLwoKZnVuY3Rpb24gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKSB7CiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTsKCiAgcmV0dXJuIHByb3RvdHlwZSA/IHByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lIDogJ251bGwgcHJvdG90eXBlJzsKfQoKLyoqCiAqIE5vcm1hbGl6ZXMgVVJMcyBpbiBleGNlcHRpb25zIGFuZCBzdGFja3RyYWNlcyB0byBhIGJhc2UgcGF0aCBzbyBTZW50cnkgY2FuIGZpbmdlcnByaW50CiAqIGFjcm9zcyBwbGF0Zm9ybXMgYW5kIHdvcmtpbmcgZGlyZWN0b3J5LgogKgogKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGJhc2VQYXRoIFRoZSBhcHBsaWNhdGlvbiBiYXNlIHBhdGguCiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIFVSTC4KICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVVybFRvQmFzZSh1cmwsIGJhc2VQYXRoKSB7CiAgY29uc3QgZXNjYXBlZEJhc2UgPSBiYXNlUGF0aAogICAgLy8gQmFja3NsYXNoIHRvIGZvcndhcmQKICAgIC5yZXBsYWNlKC9cXC9nLCAnLycpCiAgICAvLyBFc2NhcGUgUmVnRXhwIHNwZWNpYWwgY2hhcmFjdGVycwogICAgLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrKj8uXS9nLCAnXFwkJicpOwoKICBsZXQgbmV3VXJsID0gdXJsOwogIHRyeSB7CiAgICBuZXdVcmwgPSBkZWNvZGVVUkkodXJsKTsKICB9IGNhdGNoIChfT28pIHsKICAgIC8vIFNvbWV0aW1lIHRoaXMgYnJlYWtzCiAgfQogIHJldHVybiAoCiAgICBuZXdVcmwKICAgICAgLnJlcGxhY2UoL1xcL2csICcvJykKICAgICAgLnJlcGxhY2UoL3dlYnBhY2s6XC8/L2csICcnKSAvLyBSZW1vdmUgaW50ZXJtZWRpYXRlIGJhc2UgcGF0aAogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHNlbnRyeS1pbnRlcm5hbC9zZGsvbm8tcmVnZXhwLWNvbnN0cnVjdG9yCiAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYChmaWxlOi8vKT8vKiR7ZXNjYXBlZEJhc2V9LypgLCAnaWcnKSwgJ2FwcDovLy8nKQogICk7Cn0KCi8vIFNsaWdodGx5IG1vZGlmaWVkIChubyBJRTggc3VwcG9ydCwgRVM2KSBhbmQgdHJhbnNjcmliZWQgdG8gVHlwZVNjcmlwdAoKLy8gU3BsaXQgYSBmaWxlbmFtZSBpbnRvIFtyb290LCBkaXIsIGJhc2VuYW1lLCBleHRdLCB1bml4IHZlcnNpb24KLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy4KY29uc3Qgc3BsaXRQYXRoUmUgPSAvXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87Ci8qKiBKU0RvYyAqLwpmdW5jdGlvbiBzcGxpdFBhdGgoZmlsZW5hbWUpIHsKICAvLyBUcnVuY2F0ZSBmaWxlcyBuYW1lcyBncmVhdGVyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIHRvIGF2b2lkIHJlZ2V4IGRvcwogIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvcHVsbC84NzM3I2Rpc2N1c3Npb25fcjEyODU3MTkxNzIKICBjb25zdCB0cnVuY2F0ZWQgPSBmaWxlbmFtZS5sZW5ndGggPiAxMDI0ID8gYDx0cnVuY2F0ZWQ+JHtmaWxlbmFtZS5zbGljZSgtMTAyNCl9YCA6IGZpbGVuYW1lOwogIGNvbnN0IHBhcnRzID0gc3BsaXRQYXRoUmUuZXhlYyh0cnVuY2F0ZWQpOwogIHJldHVybiBwYXJ0cyA/IHBhcnRzLnNsaWNlKDEpIDogW107Cn0KCi8qKiBKU0RvYyAqLwpmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHsKICBjb25zdCByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCk7CiAgY29uc3Qgcm9vdCA9IHJlc3VsdFswXTsKICBsZXQgZGlyID0gcmVzdWx0WzFdOwoKICBpZiAoIXJvb3QgJiYgIWRpcikgewogICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyCiAgICByZXR1cm4gJy4nOwogIH0KCiAgaWYgKGRpcikgewogICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2gKICAgIGRpciA9IGRpci5zbGljZSgwLCBkaXIubGVuZ3RoIC0gMSk7CiAgfQoKICByZXR1cm4gcm9vdCArIGRpcjsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlICovCgovKiogU3luY1Byb21pc2UgaW50ZXJuYWwgc3RhdGVzICovCnZhciBTdGF0ZXM7IChmdW5jdGlvbiAoU3RhdGVzKSB7CiAgLyoqIFBlbmRpbmcgKi8KICBjb25zdCBQRU5ESU5HID0gMDsgU3RhdGVzW1N0YXRlc1siUEVORElORyJdID0gUEVORElOR10gPSAiUEVORElORyI7CiAgLyoqIFJlc29sdmVkIC8gT0sgKi8KICBjb25zdCBSRVNPTFZFRCA9IDE7IFN0YXRlc1tTdGF0ZXNbIlJFU09MVkVEIl0gPSBSRVNPTFZFRF0gPSAiUkVTT0xWRUQiOwogIC8qKiBSZWplY3RlZCAvIEVycm9yICovCiAgY29uc3QgUkVKRUNURUQgPSAyOyBTdGF0ZXNbU3RhdGVzWyJSRUpFQ1RFRCJdID0gUkVKRUNURURdID0gIlJFSkVDVEVEIjsKfSkoU3RhdGVzIHx8IChTdGF0ZXMgPSB7fSkpOwoKLy8gT3ZlcmxvYWRzIHNvIHdlIGNhbiBjYWxsIHJlc29sdmVkU3luY1Byb21pc2Ugd2l0aG91dCBhcmd1bWVudHMgYW5kIGdlbmVyaWMgYXJndW1lbnQKCi8qKgogKiBDcmVhdGVzIGEgcmVzb2x2ZWQgc3luYyBwcm9taXNlLgogKgogKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVzb2x2ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZXNvbHZlZFN5bmNQcm9taXNlKHZhbHVlKSB7CiAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZShyZXNvbHZlID0+IHsKICAgIHJlc29sdmUodmFsdWUpOwogIH0pOwp9CgovKioKICogQ3JlYXRlcyBhIHJlamVjdGVkIHN5bmMgcHJvbWlzZS4KICoKICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byByZWplY3QgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVqZWN0ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZWplY3RlZFN5bmNQcm9taXNlKHJlYXNvbikgewogIHJldHVybiBuZXcgU3luY1Byb21pc2UoKF8sIHJlamVjdCkgPT4gewogICAgcmVqZWN0KHJlYXNvbik7CiAgfSk7Cn0KCi8qKgogKiBUaGVuYWJsZSBjbGFzcyB0aGF0IGJlaGF2ZXMgbGlrZSBhIFByb21pc2UgYW5kIGZvbGxvd3MgaXQncyBpbnRlcmZhY2UKICogYnV0IGlzIG5vdCBhc3luYyBpbnRlcm5hbGx5CiAqLwpjbGFzcyBTeW5jUHJvbWlzZSB7CgogICBjb25zdHJ1Y3RvcigKICAgIGV4ZWN1dG9yLAogICkge1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTtTeW5jUHJvbWlzZS5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpO1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQzLmNhbGwodGhpcyk7U3luY1Byb21pc2UucHJvdG90eXBlLl9faW5pdDQuY2FsbCh0aGlzKTsKICAgIHRoaXMuX3N0YXRlID0gU3RhdGVzLlBFTkRJTkc7CiAgICB0aGlzLl9oYW5kbGVycyA9IFtdOwoKICAgIHRyeSB7CiAgICAgIGV4ZWN1dG9yKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMuX3JlamVjdChlKTsKICAgIH0KICB9CgogIC8qKiBKU0RvYyAqLwogICB0aGVuKAogICAgb25mdWxmaWxsZWQsCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIHRoaXMuX2hhbmRsZXJzLnB1c2goWwogICAgICAgIGZhbHNlLAogICAgICAgIHJlc3VsdCA9PiB7CiAgICAgICAgICBpZiAoIW9uZnVsZmlsbGVkKSB7CiAgICAgICAgICAgIC8vIFRPRE86IMKvXF8o44OEKV8vwq8KICAgICAgICAgICAgLy8gVE9ETzogRklYTUUKICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbmZ1bGZpbGxlZChyZXN1bHQpKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVhc29uID0+IHsKICAgICAgICAgIGlmICghb25yZWplY3RlZCkgewogICAgICAgICAgICByZWplY3QocmVhc29uKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkKHJlYXNvbikpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgcmVqZWN0KGUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgXSk7CiAgICAgIHRoaXMuX2V4ZWN1dGVIYW5kbGVycygpOwogICAgfSk7CiAgfQoKICAvKiogSlNEb2MgKi8KICAgY2F0Y2goCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIHRoaXMudGhlbih2YWwgPT4gdmFsLCBvbnJlamVjdGVkKTsKICB9CgogIC8qKiBKU0RvYyAqLwogICBmaW5hbGx5KG9uZmluYWxseSkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIGxldCB2YWw7CiAgICAgIGxldCBpc1JlamVjdGVkOwoKICAgICAgcmV0dXJuIHRoaXMudGhlbigKICAgICAgICB2YWx1ZSA9PiB7CiAgICAgICAgICBpc1JlamVjdGVkID0gZmFsc2U7CiAgICAgICAgICB2YWwgPSB2YWx1ZTsKICAgICAgICAgIGlmIChvbmZpbmFsbHkpIHsKICAgICAgICAgICAgb25maW5hbGx5KCk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZWFzb24gPT4gewogICAgICAgICAgaXNSZWplY3RlZCA9IHRydWU7CiAgICAgICAgICB2YWwgPSByZWFzb247CiAgICAgICAgICBpZiAob25maW5hbGx5KSB7CiAgICAgICAgICAgIG9uZmluYWxseSgpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICkudGhlbigoKSA9PiB7CiAgICAgICAgaWYgKGlzUmVqZWN0ZWQpIHsKICAgICAgICAgIHJlamVjdCh2YWwpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmVzb2x2ZSh2YWwgKTsKICAgICAgfSk7CiAgICB9KTsKICB9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0KCkge3RoaXMuX3Jlc29sdmUgPSAodmFsdWUpID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVTT0xWRUQsIHZhbHVlKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQyKCkge3RoaXMuX3JlamVjdCA9IChyZWFzb24pID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVKRUNURUQsIHJlYXNvbik7CiAgfTt9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0MygpIHt0aGlzLl9zZXRSZXN1bHQgPSAoc3RhdGUsIHZhbHVlKSA9PiB7CiAgICBpZiAodGhpcy5fc3RhdGUgIT09IFN0YXRlcy5QRU5ESU5HKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZSh2YWx1ZSkpIHsKICAgICAgdm9pZCAodmFsdWUgKS50aGVuKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlOwogICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKCiAgICB0aGlzLl9leGVjdXRlSGFuZGxlcnMoKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQ0KCkge3RoaXMuX2V4ZWN1dGVIYW5kbGVycyA9ICgpID0+IHsKICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlBFTkRJTkcpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNvbnN0IGNhY2hlZEhhbmRsZXJzID0gdGhpcy5faGFuZGxlcnMuc2xpY2UoKTsKICAgIHRoaXMuX2hhbmRsZXJzID0gW107CgogICAgY2FjaGVkSGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHsKICAgICAgaWYgKGhhbmRsZXJbMF0pIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlJFU09MVkVEKSB7CiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlcwogICAgICAgIGhhbmRsZXJbMV0odGhpcy5fdmFsdWUgKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSBTdGF0ZXMuUkVKRUNURUQpIHsKICAgICAgICBoYW5kbGVyWzJdKHRoaXMuX3ZhbHVlKTsKICAgICAgfQoKICAgICAgaGFuZGxlclswXSA9IHRydWU7CiAgICB9KTsKICB9O30KfQoKLyoqCiAqIENyZWF0ZXMgYW4gbmV3IFByb21pc2VCdWZmZXIgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBsaW1pdAogKiBAcGFyYW0gbGltaXQgbWF4IG51bWJlciBvZiBwcm9taXNlcyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIGJ1ZmZlcgogKi8KZnVuY3Rpb24gbWFrZVByb21pc2VCdWZmZXIobGltaXQpIHsKICBjb25zdCBidWZmZXIgPSBbXTsKCiAgZnVuY3Rpb24gaXNSZWFkeSgpIHsKICAgIHJldHVybiBsaW1pdCA9PT0gdW5kZWZpbmVkIHx8IGJ1ZmZlci5sZW5ndGggPCBsaW1pdDsKICB9CgogIC8qKgogICAqIFJlbW92ZSBhIHByb21pc2UgZnJvbSB0aGUgcXVldWUuCiAgICoKICAgKiBAcGFyYW0gdGFzayBDYW4gYmUgYW55IFByb21pc2VMaWtlPFQ+CiAgICogQHJldHVybnMgUmVtb3ZlZCBwcm9taXNlLgogICAqLwogIGZ1bmN0aW9uIHJlbW92ZSh0YXNrKSB7CiAgICByZXR1cm4gYnVmZmVyLnNwbGljZShidWZmZXIuaW5kZXhPZih0YXNrKSwgMSlbMF07CiAgfQoKICAvKioKICAgKiBBZGQgYSBwcm9taXNlIChyZXByZXNlbnRpbmcgYW4gaW4tZmxpZ2h0IGFjdGlvbikgdG8gdGhlIHF1ZXVlLCBhbmQgc2V0IGl0IHRvIHJlbW92ZSBpdHNlbGYgb24gZnVsZmlsbG1lbnQuCiAgICoKICAgKiBAcGFyYW0gdGFza1Byb2R1Y2VyIEEgZnVuY3Rpb24gcHJvZHVjaW5nIGFueSBQcm9taXNlTGlrZTxUPjsgSW4gcHJldmlvdXMgdmVyc2lvbnMgdGhpcyB1c2VkIHRvIGJlIGB0YXNrOgogICAqICAgICAgICBQcm9taXNlTGlrZTxUPmAsIGJ1dCB1bmRlciB0aGF0IG1vZGVsLCBQcm9taXNlcyB3ZXJlIGluc3RhbnRseSBjcmVhdGVkIG9uIHRoZSBjYWxsLXNpdGUgYW5kIHRoZWlyIGV4ZWN1dG9yCiAgICogICAgICAgIGZ1bmN0aW9ucyB0aGVyZWZvcmUgcmFuIGltbWVkaWF0ZWx5LiBUaHVzLCBldmVuIGlmIHRoZSBidWZmZXIgd2FzIGZ1bGwsIHRoZSBhY3Rpb24gc3RpbGwgaGFwcGVuZWQuIEJ5CiAgICogICAgICAgIHJlcXVpcmluZyB0aGUgcHJvbWlzZSB0byBiZSB3cmFwcGVkIGluIGEgZnVuY3Rpb24sIHdlIGNhbiBkZWZlciBwcm9taXNlIGNyZWF0aW9uIHVudGlsIGFmdGVyIHRoZSBidWZmZXIKICAgKiAgICAgICAgbGltaXQgY2hlY2suCiAgICogQHJldHVybnMgVGhlIG9yaWdpbmFsIHByb21pc2UuCiAgICovCiAgZnVuY3Rpb24gYWRkKHRhc2tQcm9kdWNlcikgewogICAgaWYgKCFpc1JlYWR5KCkpIHsKICAgICAgcmV0dXJuIHJlamVjdGVkU3luY1Byb21pc2UobmV3IFNlbnRyeUVycm9yKCdOb3QgYWRkaW5nIFByb21pc2UgYmVjYXVzZSBidWZmZXIgbGltaXQgd2FzIHJlYWNoZWQuJykpOwogICAgfQoKICAgIC8vIHN0YXJ0IHRoZSB0YXNrIGFuZCBhZGQgaXRzIHByb21pc2UgdG8gdGhlIHF1ZXVlCiAgICBjb25zdCB0YXNrID0gdGFza1Byb2R1Y2VyKCk7CiAgICBpZiAoYnVmZmVyLmluZGV4T2YodGFzaykgPT09IC0xKSB7CiAgICAgIGJ1ZmZlci5wdXNoKHRhc2spOwogICAgfQogICAgdm9pZCB0YXNrCiAgICAgIC50aGVuKCgpID0+IHJlbW92ZSh0YXNrKSkKICAgICAgLy8gVXNlIGB0aGVuKG51bGwsIHJlamVjdGlvbkhhbmRsZXIpYCByYXRoZXIgdGhhbiBgY2F0Y2gocmVqZWN0aW9uSGFuZGxlcilgIHNvIHRoYXQgd2UgY2FuIHVzZSBgUHJvbWlzZUxpa2VgCiAgICAgIC8vIHJhdGhlciB0aGFuIGBQcm9taXNlYC4gYFByb21pc2VMaWtlYCBkb2Vzbid0IGhhdmUgYSBgLmNhdGNoYCBtZXRob2QsIG1ha2luZyBpdHMgcG9seWZpbGwgc21hbGxlci4gKEVTNSBkaWRuJ3QKICAgICAgLy8gaGF2ZSBwcm9taXNlcywgc28gVFMgaGFzIHRvIHBvbHlmaWxsIHdoZW4gZG93bi1jb21waWxpbmcuKQogICAgICAudGhlbihudWxsLCAoKSA9PgogICAgICAgIHJlbW92ZSh0YXNrKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYWRkIGFub3RoZXIgY2F0Y2ggaGVyZSBiZWNhdXNlIGByZW1vdmUoKWAgc3RhcnRzIGEgbmV3IHByb21pc2UgY2hhaW4uCiAgICAgICAgfSksCiAgICAgICk7CiAgICByZXR1cm4gdGFzazsKICB9CgogIC8qKgogICAqIFdhaXQgZm9yIGFsbCBwcm9taXNlcyBpbiB0aGUgcXVldWUgdG8gcmVzb2x2ZSBvciBmb3IgdGltZW91dCB0byBleHBpcmUsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4KICAgKgogICAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lLCBpbiBtcywgYWZ0ZXIgd2hpY2ggdG8gcmVzb2x2ZSB0byBgZmFsc2VgIGlmIHRoZSBxdWV1ZSBpcyBzdGlsbCBub24tZW1wdHkuIFBhc3NpbmcgYDBgIChvcgogICAqIG5vdCBwYXNzaW5nIGFueXRoaW5nKSB3aWxsIG1ha2UgdGhlIHByb21pc2Ugd2FpdCBhcyBsb25nIGFzIGl0IHRha2VzIGZvciB0aGUgcXVldWUgdG8gZHJhaW4gYmVmb3JlIHJlc29sdmluZyB0bwogICAqIGB0cnVlYC4KICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHRvIGB0cnVlYCBpZiB0aGUgcXVldWUgaXMgYWxyZWFkeSBlbXB0eSBvciBkcmFpbnMgYmVmb3JlIHRoZSB0aW1lb3V0LCBhbmQKICAgKiBgZmFsc2VgIG90aGVyd2lzZQogICAqLwogIGZ1bmN0aW9uIGRyYWluKHRpbWVvdXQpIHsKICAgIHJldHVybiBuZXcgU3luY1Byb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgY291bnRlciA9IGJ1ZmZlci5sZW5ndGg7CgogICAgICBpZiAoIWNvdW50ZXIpIHsKICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTsKICAgICAgfQoKICAgICAgLy8gd2FpdCBmb3IgYHRpbWVvdXRgIG1zIGFuZCB0aGVuIHJlc29sdmUgdG8gYGZhbHNlYCAoaWYgbm90IGNhbmNlbGxlZCBmaXJzdCkKICAgICAgY29uc3QgY2FwdHVyZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgaWYgKHRpbWVvdXQgJiYgdGltZW91dCA+IDApIHsKICAgICAgICAgIHJlc29sdmUoZmFsc2UpOwogICAgICAgIH0KICAgICAgfSwgdGltZW91dCk7CgogICAgICAvLyBpZiBhbGwgcHJvbWlzZXMgcmVzb2x2ZSBpbiB0aW1lLCBjYW5jZWwgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRvIGB0cnVlYAogICAgICBidWZmZXIuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICB2b2lkIHJlc29sdmVkU3luY1Byb21pc2UoaXRlbSkudGhlbigoKSA9PiB7CiAgICAgICAgICBpZiAoIS0tY291bnRlcikgewogICAgICAgICAgICBjbGVhclRpbWVvdXQoY2FwdHVyZWRTZXRUaW1lb3V0KTsKICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9LCByZWplY3QpOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgcmV0dXJuIHsKICAgICQ6IGJ1ZmZlciwKICAgIGFkZCwKICAgIGRyYWluLAogIH07Cn0KCmNvbnN0IE9ORV9TRUNPTkRfSU5fTVMgPSAxMDAwOwoKLyoqCiAqIEEgcGFydGlhbCBkZWZpbml0aW9uIG9mIHRoZSBbUGVyZm9ybWFuY2UgV2ViIEFQSV17QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BlcmZvcm1hbmNlfQogKiBmb3IgYWNjZXNzaW5nIGEgaGlnaC1yZXNvbHV0aW9uIG1vbm90b25pYyBjbG9jay4KICovCgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIHRoZSBEYXRlIEFQSS4KICoKICogVE9ETyh2OCk6IFJldHVybiB0eXBlIHNob3VsZCBiZSByb3VuZGVkLgogKi8KZnVuY3Rpb24gZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpIHsKICByZXR1cm4gRGF0ZS5ub3coKSAvIE9ORV9TRUNPTkRfSU5fTVM7Cn0KCi8qKgogKiBSZXR1cm5zIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBQZXJmb3JtYW5jZSBBUEkgYnJvd3NlciBpbXBsZW1lbnRhdGlvbiwgb3IgdW5kZWZpbmVkIGZvciBicm93c2VycyB0aGF0IGRvIG5vdAogKiBzdXBwb3J0IHRoZSBBUEkuCiAqCiAqIFdyYXBwaW5nIHRoZSBuYXRpdmUgQVBJIHdvcmtzIGFyb3VuZCBkaWZmZXJlbmNlcyBpbiBiZWhhdmlvciBmcm9tIGRpZmZlcmVudCBicm93c2Vycy4KICovCmZ1bmN0aW9uIGNyZWF0ZVVuaXhUaW1lc3RhbXBJblNlY29uZHNGdW5jKCkgewogIGNvbnN0IHsgcGVyZm9ybWFuY2UgfSA9IEdMT0JBTF9PQkogOwogIGlmICghcGVyZm9ybWFuY2UgfHwgIXBlcmZvcm1hbmNlLm5vdykgewogICAgcmV0dXJuIGRhdGVUaW1lc3RhbXBJblNlY29uZHM7CiAgfQoKICAvLyBTb21lIGJyb3dzZXIgYW5kIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGEgdGltZU9yaWdpbiwgc28gd2UgZmFsbGJhY2sgdG8KICAvLyB1c2luZyBEYXRlLm5vdygpIHRvIGNvbXB1dGUgdGhlIHN0YXJ0aW5nIHRpbWUuCiAgY29uc3QgYXBwcm94U3RhcnRpbmdUaW1lT3JpZ2luID0gRGF0ZS5ub3coKSAtIHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IHRpbWVPcmlnaW4gPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luID09IHVuZGVmaW5lZCA/IGFwcHJveFN0YXJ0aW5nVGltZU9yaWdpbiA6IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CgogIC8vIHBlcmZvcm1hbmNlLm5vdygpIGlzIGEgbW9ub3RvbmljIGNsb2NrLCB3aGljaCBtZWFucyBpdCBzdGFydHMgYXQgMCB3aGVuIHRoZSBwcm9jZXNzIGJlZ2lucy4gVG8gZ2V0IHRoZSBjdXJyZW50CiAgLy8gd2FsbCBjbG9jayB0aW1lIChhY3R1YWwgVU5JWCB0aW1lc3RhbXApLCB3ZSBuZWVkIHRvIGFkZCB0aGUgc3RhcnRpbmcgdGltZSBvcmlnaW4gYW5kIHRoZSBjdXJyZW50IHRpbWUgZWxhcHNlZC4KICAvLwogIC8vIFRPRE86IFRoaXMgZG9lcyBub3QgYWNjb3VudCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG1vbm90b25pYyBjbG9jayB0aGF0IHBvd2VycyBwZXJmb3JtYW5jZS5ub3coKSBkcmlmdHMgZnJvbSB0aGUKICAvLyB3YWxsIGNsb2NrIHRpbWUsIHdoaWNoIGNhdXNlcyB0aGUgcmV0dXJuZWQgdGltZXN0YW1wIHRvIGJlIGluYWNjdXJhdGUuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBob3cgdG8gZGV0ZWN0IGFuZAogIC8vIGNvcnJlY3QgZm9yIHRoaXMuCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbWRuL2NvbnRlbnQvaXNzdWVzLzQ3MTMKICAvLyBTZWU6IGh0dHBzOi8vZGV2LnRvL25vYW1yL3doZW4tYS1taWxsaXNlY29uZC1pcy1ub3QtYS1taWxsaXNlY29uZC0zaDYKICByZXR1cm4gKCkgPT4gewogICAgcmV0dXJuICh0aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KCkpIC8gT05FX1NFQ09ORF9JTl9NUzsKICB9Owp9CgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIGVpdGhlciB0aGUgUGVyZm9ybWFuY2Ugb3IgRGF0ZSBBUElzLCBkZXBlbmRpbmcgb24gdGhlCiAqIGF2YWlsYWJpbGl0eSBvZiB0aGUgUGVyZm9ybWFuY2UgQVBJLgogKgogKiBCVUc6IE5vdGUgdGhhdCBiZWNhdXNlIG9mIGhvdyBicm93c2VycyBpbXBsZW1lbnQgdGhlIFBlcmZvcm1hbmNlIEFQSSwgdGhlIGNsb2NrIG1pZ2h0IHN0b3Agd2hlbiB0aGUgY29tcHV0ZXIgaXMKICogYXNsZWVwLiBUaGlzIGNyZWF0ZXMgYSBza2V3IGJldHdlZW4gYGRhdGVUaW1lc3RhbXBJblNlY29uZHNgIGFuZCBgdGltZXN0YW1wSW5TZWNvbmRzYC4gVGhlCiAqIHNrZXcgY2FuIGdyb3cgdG8gYXJiaXRyYXJ5IGFtb3VudHMgbGlrZSBkYXlzLCB3ZWVrcyBvciBtb250aHMuCiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwLgogKi8KY29uc3QgdGltZXN0YW1wSW5TZWNvbmRzID0gY3JlYXRlVW5peFRpbWVzdGFtcEluU2Vjb25kc0Z1bmMoKTsKCi8qKgogKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4gVGhpcyB2YWx1ZSBpcyBvbmx5IHVzYWJsZSBpbiBhIGJyb3dzZXIsIGFuZCBvbmx5IHdoZW4gdGhlCiAqIHBlcmZvcm1hbmNlIEFQSSBpcyBhdmFpbGFibGUuCiAqLwooKCkgPT4gewogIC8vIFVuZm9ydHVuYXRlbHkgYnJvd3NlcnMgbWF5IHJlcG9ydCBhbiBpbmFjY3VyYXRlIHRpbWUgb3JpZ2luIGRhdGEsIHRocm91Z2ggZWl0aGVyIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gb3IKICAvLyBwZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0LCB3aGljaCByZXN1bHRzIGluIHBvb3IgcmVzdWx0cyBpbiBwZXJmb3JtYW5jZSBkYXRhLiBXZSBvbmx5IHRyZWF0IHRpbWUgb3JpZ2luCiAgLy8gZGF0YSBhcyByZWxpYWJsZSBpZiB0aGV5IGFyZSB3aXRoaW4gYSByZWFzb25hYmxlIHRocmVzaG9sZCBvZiB0aGUgY3VycmVudCB0aW1lLgoKICBjb25zdCB7IHBlcmZvcm1hbmNlIH0gPSBHTE9CQUxfT0JKIDsKICBpZiAoIXBlcmZvcm1hbmNlIHx8ICFwZXJmb3JtYW5jZS5ub3cpIHsKICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQoKICBjb25zdCB0aHJlc2hvbGQgPSAzNjAwICogMTAwMDsKICBjb25zdCBwZXJmb3JtYW5jZU5vdyA9IHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IGRhdGVOb3cgPSBEYXRlLm5vdygpOwoKICAvLyBpZiB0aW1lT3JpZ2luIGlzbid0IGF2YWlsYWJsZSBzZXQgZGVsdGEgdG8gdGhyZXNob2xkIHNvIGl0IGlzbid0IHVzZWQKICBjb25zdCB0aW1lT3JpZ2luRGVsdGEgPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luCiAgICA/IE1hdGguYWJzKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZU5vdyAtIGRhdGVOb3cpCiAgICA6IHRocmVzaG9sZDsKICBjb25zdCB0aW1lT3JpZ2luSXNSZWxpYWJsZSA9IHRpbWVPcmlnaW5EZWx0YSA8IHRocmVzaG9sZDsKCiAgLy8gV2hpbGUgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4sIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4KICAvLyBpcyBub3QgYXMgd2lkZWx5IHN1cHBvcnRlZC4gTmFtZWx5LCBwZXJmb3JtYW5jZS50aW1lT3JpZ2luIGlzIHVuZGVmaW5lZCBpbiBTYWZhcmkgYXMgb2Ygd3JpdGluZy4KICAvLyBBbHNvIGFzIG9mIHdyaXRpbmcsIHBlcmZvcm1hbmNlLnRpbWluZyBpcyBub3QgYXZhaWxhYmxlIGluIFdlYiBXb3JrZXJzIGluIG1haW5zdHJlYW0gYnJvd3NlcnMsIHNvIGl0IGlzIG5vdCBhbHdheXMKICAvLyBhIHZhbGlkIGZhbGxiYWNrLiBJbiB0aGUgYWJzZW5jZSBvZiBhbiBpbml0aWFsIHRpbWUgcHJvdmlkZWQgYnkgdGhlIGJyb3dzZXIsIGZhbGxiYWNrIHRvIHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUKICAvLyBEYXRlIEFQSS4KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICBjb25zdCBuYXZpZ2F0aW9uU3RhcnQgPSBwZXJmb3JtYW5jZS50aW1pbmcgJiYgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydDsKICBjb25zdCBoYXNOYXZpZ2F0aW9uU3RhcnQgPSB0eXBlb2YgbmF2aWdhdGlvblN0YXJ0ID09PSAnbnVtYmVyJzsKICAvLyBpZiBuYXZpZ2F0aW9uU3RhcnQgaXNuJ3QgYXZhaWxhYmxlIHNldCBkZWx0YSB0byB0aHJlc2hvbGQgc28gaXQgaXNuJ3QgdXNlZAogIGNvbnN0IG5hdmlnYXRpb25TdGFydERlbHRhID0gaGFzTmF2aWdhdGlvblN0YXJ0ID8gTWF0aC5hYnMobmF2aWdhdGlvblN0YXJ0ICsgcGVyZm9ybWFuY2VOb3cgLSBkYXRlTm93KSA6IHRocmVzaG9sZDsKICBjb25zdCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlID0gbmF2aWdhdGlvblN0YXJ0RGVsdGEgPCB0aHJlc2hvbGQ7CgogIGlmICh0aW1lT3JpZ2luSXNSZWxpYWJsZSB8fCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlKSB7CiAgICAvLyBVc2UgdGhlIG1vcmUgcmVsaWFibGUgdGltZSBvcmlnaW4KICAgIGlmICh0aW1lT3JpZ2luRGVsdGEgPD0gbmF2aWdhdGlvblN0YXJ0RGVsdGEpIHsKICAgICAgcmV0dXJuIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmF2aWdhdGlvblN0YXJ0OwogICAgfQogIH0KICByZXR1cm4gZGF0ZU5vdzsKfSkoKTsKCi8qKgogKiBDcmVhdGVzIGFuIGVudmVsb3BlLgogKiBNYWtlIHN1cmUgdG8gYWx3YXlzIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgZ2VuZXJpYyB0byB0aGlzIGZ1bmN0aW9uCiAqIHNvIHRoYXQgdGhlIGVudmVsb3BlIHR5cGVzIHJlc29sdmUgY29ycmVjdGx5LgogKi8KZnVuY3Rpb24gY3JlYXRlRW52ZWxvcGUoaGVhZGVycywgaXRlbXMgPSBbXSkgewogIHJldHVybiBbaGVhZGVycywgaXRlbXNdIDsKfQoKLyoqCiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGxvb3AgdGhyb3VnaCB0aGUgaXRlbXMgYW5kIGl0ZW0gdHlwZXMgb2YgYW4gZW52ZWxvcGUuCiAqIChUaGlzIGZ1bmN0aW9uIHdhcyBtb3N0bHkgY3JlYXRlZCBiZWNhdXNlIHdvcmtpbmcgd2l0aCBlbnZlbG9wZSB0eXBlcyBpcyBwYWluZnVsIGF0IHRoZSBtb21lbnQpCiAqCiAqIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIHRydWUsIHRoZSByZXN0IG9mIHRoZSBpdGVtcyB3aWxsIGJlIHNraXBwZWQuCiAqLwpmdW5jdGlvbiBmb3JFYWNoRW52ZWxvcGVJdGVtKAogIGVudmVsb3BlLAogIGNhbGxiYWNrLAopIHsKICBjb25zdCBlbnZlbG9wZUl0ZW1zID0gZW52ZWxvcGVbMV07CgogIGZvciAoY29uc3QgZW52ZWxvcGVJdGVtIG9mIGVudmVsb3BlSXRlbXMpIHsKICAgIGNvbnN0IGVudmVsb3BlSXRlbVR5cGUgPSBlbnZlbG9wZUl0ZW1bMF0udHlwZTsKICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGVudmVsb3BlSXRlbSwgZW52ZWxvcGVJdGVtVHlwZSk7CgogICAgaWYgKHJlc3VsdCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIHJldHVybiBmYWxzZTsKfQoKLyoqCiAqIEVuY29kZSBhIHN0cmluZyB0byBVVEY4LgogKi8KZnVuY3Rpb24gZW5jb2RlVVRGOChpbnB1dCwgdGV4dEVuY29kZXIpIHsKICBjb25zdCB1dGY4ID0gdGV4dEVuY29kZXIgfHwgbmV3IFRleHRFbmNvZGVyKCk7CiAgcmV0dXJuIHV0ZjguZW5jb2RlKGlucHV0KTsKfQoKLyoqCiAqIFNlcmlhbGl6ZXMgYW4gZW52ZWxvcGUuCiAqLwpmdW5jdGlvbiBzZXJpYWxpemVFbnZlbG9wZShlbnZlbG9wZSwgdGV4dEVuY29kZXIpIHsKICBjb25zdCBbZW52SGVhZGVycywgaXRlbXNdID0gZW52ZWxvcGU7CgogIC8vIEluaXRpYWxseSB3ZSBjb25zdHJ1Y3Qgb3VyIGVudmVsb3BlIGFzIGEgc3RyaW5nIGFuZCBvbmx5IGNvbnZlcnQgdG8gYmluYXJ5IGNodW5rcyBpZiB3ZSBlbmNvdW50ZXIgYmluYXJ5IGRhdGEKICBsZXQgcGFydHMgPSBKU09OLnN0cmluZ2lmeShlbnZIZWFkZXJzKTsKCiAgZnVuY3Rpb24gYXBwZW5kKG5leHQpIHsKICAgIGlmICh0eXBlb2YgcGFydHMgPT09ICdzdHJpbmcnKSB7CiAgICAgIHBhcnRzID0gdHlwZW9mIG5leHQgPT09ICdzdHJpbmcnID8gcGFydHMgKyBuZXh0IDogW2VuY29kZVVURjgocGFydHMsIHRleHRFbmNvZGVyKSwgbmV4dF07CiAgICB9IGVsc2UgewogICAgICBwYXJ0cy5wdXNoKHR5cGVvZiBuZXh0ID09PSAnc3RyaW5nJyA/IGVuY29kZVVURjgobmV4dCwgdGV4dEVuY29kZXIpIDogbmV4dCk7CiAgICB9CiAgfQoKICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGNvbnN0IFtpdGVtSGVhZGVycywgcGF5bG9hZF0gPSBpdGVtOwoKICAgIGFwcGVuZChgXG4ke0pTT04uc3RyaW5naWZ5KGl0ZW1IZWFkZXJzKX1cbmApOwoKICAgIGlmICh0eXBlb2YgcGF5bG9hZCA9PT0gJ3N0cmluZycgfHwgcGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHsKICAgICAgYXBwZW5kKHBheWxvYWQpOwogICAgfSBlbHNlIHsKICAgICAgbGV0IHN0cmluZ2lmaWVkUGF5bG9hZDsKICAgICAgdHJ5IHsKICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIC8vIEluIGNhc2UsIGRlc3BpdGUgYWxsIG91ciBlZmZvcnRzIHRvIGtlZXAgYHBheWxvYWRgIGNpcmN1bGFyLWRlcGVuZGVuY3ktZnJlZSwgYEpTT04uc3RyaW5pZnkoKWAgc3RpbGwKICAgICAgICAvLyBmYWlscywgd2UgdHJ5IGFnYWluIGFmdGVyIG5vcm1hbGl6aW5nIGl0IGFnYWluIHdpdGggaW5maW5pdGUgbm9ybWFsaXphdGlvbiBkZXB0aC4gVGhpcyBvZiBjb3Vyc2UgaGFzIGEKICAgICAgICAvLyBwZXJmb3JtYW5jZSBpbXBhY3QgYnV0IGluIHRoaXMgY2FzZSBhIHBlcmZvcm1hbmNlIGhpdCBpcyBiZXR0ZXIgdGhhbiB0aHJvd2luZy4KICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShub3JtYWxpemUocGF5bG9hZCkpOwogICAgICB9CiAgICAgIGFwcGVuZChzdHJpbmdpZmllZFBheWxvYWQpOwogICAgfQogIH0KCiAgcmV0dXJuIHR5cGVvZiBwYXJ0cyA9PT0gJ3N0cmluZycgPyBwYXJ0cyA6IGNvbmNhdEJ1ZmZlcnMocGFydHMpOwp9CgpmdW5jdGlvbiBjb25jYXRCdWZmZXJzKGJ1ZmZlcnMpIHsKICBjb25zdCB0b3RhbExlbmd0aCA9IGJ1ZmZlcnMucmVkdWNlKChhY2MsIGJ1ZikgPT4gYWNjICsgYnVmLmxlbmd0aCwgMCk7CgogIGNvbnN0IG1lcmdlZCA9IG5ldyBVaW50OEFycmF5KHRvdGFsTGVuZ3RoKTsKICBsZXQgb2Zmc2V0ID0gMDsKICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7CiAgICBtZXJnZWQuc2V0KGJ1ZmZlciwgb2Zmc2V0KTsKICAgIG9mZnNldCArPSBidWZmZXIubGVuZ3RoOwogIH0KCiAgcmV0dXJuIG1lcmdlZDsKfQoKY29uc3QgSVRFTV9UWVBFX1RPX0RBVEFfQ0FURUdPUllfTUFQID0gewogIHNlc3Npb246ICdzZXNzaW9uJywKICBzZXNzaW9uczogJ3Nlc3Npb24nLAogIGF0dGFjaG1lbnQ6ICdhdHRhY2htZW50JywKICB0cmFuc2FjdGlvbjogJ3RyYW5zYWN0aW9uJywKICBldmVudDogJ2Vycm9yJywKICBjbGllbnRfcmVwb3J0OiAnaW50ZXJuYWwnLAogIHVzZXJfcmVwb3J0OiAnZGVmYXVsdCcsCiAgcHJvZmlsZTogJ3Byb2ZpbGUnLAogIHJlcGxheV9ldmVudDogJ3JlcGxheScsCiAgcmVwbGF5X3JlY29yZGluZzogJ3JlcGxheScsCiAgY2hlY2tfaW46ICdtb25pdG9yJywKICBmZWVkYmFjazogJ2ZlZWRiYWNrJywKICBzcGFuOiAnc3BhbicsCiAgc3RhdHNkOiAnbWV0cmljX2J1Y2tldCcsCn07CgovKioKICogTWFwcyB0aGUgdHlwZSBvZiBhbiBlbnZlbG9wZSBpdGVtIHRvIGEgZGF0YSBjYXRlZ29yeS4KICovCmZ1bmN0aW9uIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSB7CiAgcmV0dXJuIElURU1fVFlQRV9UT19EQVRBX0NBVEVHT1JZX01BUFt0eXBlXTsKfQoKLyoqIEV4dHJhY3RzIHRoZSBtaW5pbWFsIFNESyBpbmZvIGZyb20gdGhlIG1ldGFkYXRhIG9yIGFuIGV2ZW50cyAqLwpmdW5jdGlvbiBnZXRTZGtNZXRhZGF0YUZvckVudmVsb3BlSGVhZGVyKG1ldGFkYXRhT3JFdmVudCkgewogIGlmICghbWV0YWRhdGFPckV2ZW50IHx8ICFtZXRhZGF0YU9yRXZlbnQuc2RrKSB7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHsgbmFtZSwgdmVyc2lvbiB9ID0gbWV0YWRhdGFPckV2ZW50LnNkazsKICByZXR1cm4geyBuYW1lLCB2ZXJzaW9uIH07Cn0KCi8qKgogKiBDcmVhdGVzIGV2ZW50IGVudmVsb3BlIGhlYWRlcnMsIGJhc2VkIG9uIGV2ZW50LCBzZGsgaW5mbyBhbmQgdHVubmVsCiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIHBhY2thZ2UgdG8gbWFrZSBpdCBhdmFpbGFibGUgaW4gUmVwbGF5CiAqLwpmdW5jdGlvbiBjcmVhdGVFdmVudEVudmVsb3BlSGVhZGVycygKICBldmVudCwKICBzZGtJbmZvLAogIHR1bm5lbCwKICBkc24sCikgewogIGNvbnN0IGR5bmFtaWNTYW1wbGluZ0NvbnRleHQgPSBldmVudC5zZGtQcm9jZXNzaW5nTWV0YWRhdGEgJiYgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7CiAgcmV0dXJuIHsKICAgIGV2ZW50X2lkOiBldmVudC5ldmVudF9pZCAsCiAgICBzZW50X2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAuLi4oc2RrSW5mbyAmJiB7IHNkazogc2RrSW5mbyB9KSwKICAgIC4uLighIXR1bm5lbCAmJiBkc24gJiYgeyBkc246IGRzblRvU3RyaW5nKGRzbikgfSksCiAgICAuLi4oZHluYW1pY1NhbXBsaW5nQ29udGV4dCAmJiB7CiAgICAgIHRyYWNlOiBkcm9wVW5kZWZpbmVkS2V5cyh7IC4uLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQgfSksCiAgICB9KSwKICB9Owp9CgovLyBJbnRlbnRpb25hbGx5IGtlZXBpbmcgdGhlIGtleSBicm9hZCwgYXMgd2UgZG9uJ3Qga25vdyBmb3Igc3VyZSB3aGF0IHJhdGUgbGltaXQgaGVhZGVycyBnZXQgcmV0dXJuZWQgZnJvbSBiYWNrZW5kCgpjb25zdCBERUZBVUxUX1JFVFJZX0FGVEVSID0gNjAgKiAxMDAwOyAvLyA2MCBzZWNvbmRzCgovKioKICogRXh0cmFjdHMgUmV0cnktQWZ0ZXIgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCBoZWFkZXIgb3IgcmV0dXJucyBkZWZhdWx0IHZhbHVlCiAqIEBwYXJhbSBoZWFkZXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICdSZXRyeS1BZnRlcicgaGVhZGVyCiAqIEBwYXJhbSBub3cgY3VycmVudCB1bml4IHRpbWVzdGFtcAogKgogKi8KZnVuY3Rpb24gcGFyc2VSZXRyeUFmdGVySGVhZGVyKGhlYWRlciwgbm93ID0gRGF0ZS5ub3coKSkgewogIGNvbnN0IGhlYWRlckRlbGF5ID0gcGFyc2VJbnQoYCR7aGVhZGVyfWAsIDEwKTsKICBpZiAoIWlzTmFOKGhlYWRlckRlbGF5KSkgewogICAgcmV0dXJuIGhlYWRlckRlbGF5ICogMTAwMDsKICB9CgogIGNvbnN0IGhlYWRlckRhdGUgPSBEYXRlLnBhcnNlKGAke2hlYWRlcn1gKTsKICBpZiAoIWlzTmFOKGhlYWRlckRhdGUpKSB7CiAgICByZXR1cm4gaGVhZGVyRGF0ZSAtIG5vdzsKICB9CgogIHJldHVybiBERUZBVUxUX1JFVFJZX0FGVEVSOwp9CgovKioKICogR2V0cyB0aGUgdGltZSB0aGF0IHRoZSBnaXZlbiBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBmb3IgcmF0ZSBsaW1pdGluZy4KICogSW4gY2FzZSBubyBjYXRlZ29yeS1zcGVjaWZpYyBsaW1pdCBpcyBzZXQgYnV0IGEgZ2VuZXJhbCByYXRlIGxpbWl0IGFjcm9zcyBhbGwgY2F0ZWdvcmllcyBpcyBhY3RpdmUsCiAqIHRoYXQgdGltZSBpcyByZXR1cm5lZC4KICoKICogQHJldHVybiB0aGUgdGltZSBpbiBtcyB0aGF0IHRoZSBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBvciAwIGlmIHRoZXJlJ3Mgbm8gYWN0aXZlIHJhdGUgbGltaXQuCiAqLwpmdW5jdGlvbiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSB7CiAgcmV0dXJuIGxpbWl0c1tkYXRhQ2F0ZWdvcnldIHx8IGxpbWl0cy5hbGwgfHwgMDsKfQoKLyoqCiAqIENoZWNrcyBpZiBhIGNhdGVnb3J5IGlzIHJhdGUgbGltaXRlZAogKi8KZnVuY3Rpb24gaXNSYXRlTGltaXRlZChsaW1pdHMsIGRhdGFDYXRlZ29yeSwgbm93ID0gRGF0ZS5ub3coKSkgewogIHJldHVybiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSA+IG5vdzsKfQoKLyoqCiAqIFVwZGF0ZSByYXRlbGltaXRzIGZyb20gaW5jb21pbmcgaGVhZGVycy4KICoKICogQHJldHVybiB0aGUgdXBkYXRlZCBSYXRlTGltaXRzIG9iamVjdC4KICovCmZ1bmN0aW9uIHVwZGF0ZVJhdGVMaW1pdHMoCiAgbGltaXRzLAogIHsgc3RhdHVzQ29kZSwgaGVhZGVycyB9LAogIG5vdyA9IERhdGUubm93KCksCikgewogIGNvbnN0IHVwZGF0ZWRSYXRlTGltaXRzID0gewogICAgLi4ubGltaXRzLAogIH07CgogIC8vICJUaGUgbmFtZSBpcyBjYXNlLWluc2Vuc2l0aXZlLiIKICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSGVhZGVycy9nZXQKICBjb25zdCByYXRlTGltaXRIZWFkZXIgPSBoZWFkZXJzICYmIGhlYWRlcnNbJ3gtc2VudHJ5LXJhdGUtbGltaXRzJ107CiAgY29uc3QgcmV0cnlBZnRlckhlYWRlciA9IGhlYWRlcnMgJiYgaGVhZGVyc1sncmV0cnktYWZ0ZXInXTsKCiAgaWYgKHJhdGVMaW1pdEhlYWRlcikgewogICAgLyoqCiAgICAgKiByYXRlIGxpbWl0IGhlYWRlcnMgYXJlIG9mIHRoZSBmb3JtCiAgICAgKiAgICAgPGhlYWRlcj4sPGhlYWRlcj4sLi4KICAgICAqIHdoZXJlIGVhY2ggPGhlYWRlcj4gaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+OiA8Y2F0ZWdvcmllcz46IDxzY29wZT46IDxyZWFzb25fY29kZT46IDxuYW1lc3BhY2VzPgogICAgICogd2hlcmUKICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+IGlzIGEgZGVsYXkgaW4gc2Vjb25kcwogICAgICogICAgIDxjYXRlZ29yaWVzPiBpcyB0aGUgZXZlbnQgdHlwZShzKSAoZXJyb3IsIHRyYW5zYWN0aW9uLCBldGMpIGJlaW5nIHJhdGUgbGltaXRlZCBhbmQgaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICAgICAgPGNhdGVnb3J5Pjs8Y2F0ZWdvcnk+Oy4uLgogICAgICogICAgIDxzY29wZT4gaXMgd2hhdCdzIGJlaW5nIGxpbWl0ZWQgKG9yZywgcHJvamVjdCwgb3Iga2V5KSAtIGlnbm9yZWQgYnkgU0RLCiAgICAgKiAgICAgPHJlYXNvbl9jb2RlPiBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nIGxpa2UgIm9yZ19xdW90YSIgLSBpZ25vcmVkIGJ5IFNESwogICAgICogICAgIDxuYW1lc3BhY2VzPiBTZW1pY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgbWV0cmljIG5hbWVzcGFjZSBpZGVudGlmaWVycy4gRGVmaW5lcyB3aGljaCBuYW1lc3BhY2Uocykgd2lsbCBiZSBhZmZlY3RlZC4KICAgICAqICAgICAgICAgT25seSBwcmVzZW50IGlmIHJhdGUgbGltaXQgYXBwbGllcyB0byB0aGUgbWV0cmljX2J1Y2tldCBkYXRhIGNhdGVnb3J5LgogICAgICovCiAgICBmb3IgKGNvbnN0IGxpbWl0IG9mIHJhdGVMaW1pdEhlYWRlci50cmltKCkuc3BsaXQoJywnKSkgewogICAgICBjb25zdCBbcmV0cnlBZnRlciwgY2F0ZWdvcmllcywgLCAsIG5hbWVzcGFjZXNdID0gbGltaXQuc3BsaXQoJzonLCA1KTsKICAgICAgY29uc3QgaGVhZGVyRGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyLCAxMCk7CiAgICAgIGNvbnN0IGRlbGF5ID0gKCFpc05hTihoZWFkZXJEZWxheSkgPyBoZWFkZXJEZWxheSA6IDYwKSAqIDEwMDA7IC8vIDYwc2VjIGRlZmF1bHQKICAgICAgaWYgKCFjYXRlZ29yaWVzKSB7CiAgICAgICAgdXBkYXRlZFJhdGVMaW1pdHMuYWxsID0gbm93ICsgZGVsYXk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzLnNwbGl0KCc7JykpIHsKICAgICAgICAgIGlmIChjYXRlZ29yeSA9PT0gJ21ldHJpY19idWNrZXQnKSB7CiAgICAgICAgICAgIC8vIG5hbWVzcGFjZXMgd2lsbCBiZSBwcmVzZW50IHdoZW4gY2F0ZWdvcnkgPT09ICdtZXRyaWNfYnVja2V0JwogICAgICAgICAgICBpZiAoIW5hbWVzcGFjZXMgfHwgbmFtZXNwYWNlcy5zcGxpdCgnOycpLmluY2x1ZGVzKCdjdXN0b20nKSkgewogICAgICAgICAgICAgIHVwZGF0ZWRSYXRlTGltaXRzW2NhdGVnb3J5XSA9IG5vdyArIGRlbGF5OwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1cGRhdGVkUmF0ZUxpbWl0c1tjYXRlZ29yeV0gPSBub3cgKyBkZWxheTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9IGVsc2UgaWYgKHJldHJ5QWZ0ZXJIZWFkZXIpIHsKICAgIHVwZGF0ZWRSYXRlTGltaXRzLmFsbCA9IG5vdyArIHBhcnNlUmV0cnlBZnRlckhlYWRlcihyZXRyeUFmdGVySGVhZGVyLCBub3cpOwogIH0gZWxzZSBpZiAoc3RhdHVzQ29kZSA9PT0gNDI5KSB7CiAgICB1cGRhdGVkUmF0ZUxpbWl0cy5hbGwgPSBub3cgKyA2MCAqIDEwMDA7CiAgfQoKICByZXR1cm4gdXBkYXRlZFJhdGVMaW1pdHM7Cn0KCi8qKgogKiBBIG5vZGUuanMgd2F0Y2hkb2cgdGltZXIKICogQHBhcmFtIHBvbGxJbnRlcnZhbCBUaGUgaW50ZXJ2YWwgdGhhdCB3ZSBleHBlY3QgdG8gZ2V0IHBvbGxlZCBhdAogKiBAcGFyYW0gYW5yVGhyZXNob2xkIFRoZSB0aHJlc2hvbGQgZm9yIHdoZW4gd2UgY29uc2lkZXIgQU5SCiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gY2FsbCBmb3IgQU5SCiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBwb2xsYCBhbmQgYGVuYWJsZWRgIGZ1bmN0aW9ucyB7QGxpbmsgV2F0Y2hkb2dSZXR1cm59CiAqLwpmdW5jdGlvbiB3YXRjaGRvZ1RpbWVyKAogIGNyZWF0ZVRpbWVyLAogIHBvbGxJbnRlcnZhbCwKICBhbnJUaHJlc2hvbGQsCiAgY2FsbGJhY2ssCikgewogIGNvbnN0IHRpbWVyID0gY3JlYXRlVGltZXIoKTsKICBsZXQgdHJpZ2dlcmVkID0gZmFsc2U7CiAgbGV0IGVuYWJsZWQgPSB0cnVlOwoKICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICBjb25zdCBkaWZmTXMgPSB0aW1lci5nZXRUaW1lTXMoKTsKCiAgICBpZiAodHJpZ2dlcmVkID09PSBmYWxzZSAmJiBkaWZmTXMgPiBwb2xsSW50ZXJ2YWwgKyBhbnJUaHJlc2hvbGQpIHsKICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKICAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CgogICAgaWYgKGRpZmZNcyA8IHBvbGxJbnRlcnZhbCArIGFuclRocmVzaG9sZCkgewogICAgICB0cmlnZ2VyZWQgPSBmYWxzZTsKICAgIH0KICB9LCAyMCk7CgogIHJldHVybiB7CiAgICBwb2xsOiAoKSA9PiB7CiAgICAgIHRpbWVyLnJlc2V0KCk7CiAgICB9LAogICAgZW5hYmxlZDogKHN0YXRlKSA9PiB7CiAgICAgIGVuYWJsZWQgPSBzdGF0ZTsKICAgIH0sCiAgfTsKfQoKLy8gdHlwZXMgY29waWVkIGZyb20gaW5zcGVjdG9yLmQudHMKCi8qKgogKiBDb252ZXJ0cyBEZWJ1Z2dlci5DYWxsRnJhbWUgdG8gU2VudHJ5IFN0YWNrRnJhbWUKICovCmZ1bmN0aW9uIGNhbGxGcmFtZVRvU3RhY2tGcmFtZSgKICBmcmFtZSwKICB1cmwsCiAgZ2V0TW9kdWxlRnJvbUZpbGVuYW1lLAopIHsKICBjb25zdCBmaWxlbmFtZSA9IHVybCA/IHVybC5yZXBsYWNlKC9eZmlsZTpcL1wvLywgJycpIDogdW5kZWZpbmVkOwoKICAvLyBDYWxsRnJhbWUgcm93L2NvbCBhcmUgMCBiYXNlZCwgd2hlcmVhcyBTdGFja0ZyYW1lIGFyZSAxIGJhc2VkCiAgY29uc3QgY29sbm8gPSBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgKyAxIDogdW5kZWZpbmVkOwogIGNvbnN0IGxpbmVubyA9IGZyYW1lLmxvY2F0aW9uLmxpbmVOdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5saW5lTnVtYmVyICsgMSA6IHVuZGVmaW5lZDsKCiAgcmV0dXJuIGRyb3BVbmRlZmluZWRLZXlzKHsKICAgIGZpbGVuYW1lLAogICAgbW9kdWxlOiBnZXRNb2R1bGVGcm9tRmlsZW5hbWUoZmlsZW5hbWUpLAogICAgZnVuY3Rpb246IGZyYW1lLmZ1bmN0aW9uTmFtZSB8fCAnPycsCiAgICBjb2xubywKICAgIGxpbmVubywKICAgIGluX2FwcDogZmlsZW5hbWUgPyBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUpIDogdW5kZWZpbmVkLAogIH0pOwp9CgovKioKICogVGhpcyBzZXJ2ZXMgYXMgYSBidWlsZCB0aW1lIGZsYWcgdGhhdCB3aWxsIGJlIHRydWUgYnkgZGVmYXVsdCwgYnV0IGZhbHNlIGluIG5vbi1kZWJ1ZyBidWlsZHMgb3IgaWYgdXNlcnMgcmVwbGFjZSBgX19TRU5UUllfREVCVUdfX2AgaW4gdGhlaXIgZ2VuZXJhdGVkIGNvZGUuCiAqCiAqIEFUVEVOVElPTjogVGhpcyBjb25zdGFudCBtdXN0IG5ldmVyIGNyb3NzIHBhY2thZ2UgYm91bmRhcmllcyAoaS5lLiBiZSBleHBvcnRlZCkgdG8gZ3VhcmFudGVlIHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIHRyZWUgc2hha2luZy4KICovCmNvbnN0IERFQlVHX0JVSUxEID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCmNvbnN0IERFRkFVTFRfRU5WSVJPTk1FTlQgPSAncHJvZHVjdGlvbic7CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIGV2ZW50IHByb2Nlc3NvcnMuCiAqIEBkZXByZWNhdGVkIEdsb2JhbCBldmVudCBwcm9jZXNzb3JzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICovCmZ1bmN0aW9uIGdldEdsb2JhbEV2ZW50UHJvY2Vzc29ycygpIHsKICByZXR1cm4gZ2V0R2xvYmFsU2luZ2xldG9uKCdnbG9iYWxFdmVudFByb2Nlc3NvcnMnLCAoKSA9PiBbXSk7Cn0KCi8qKgogKiBQcm9jZXNzIGFuIGFycmF5IG9mIGV2ZW50IHByb2Nlc3NvcnMsIHJldHVybmluZyB0aGUgcHJvY2Vzc2VkIGV2ZW50IChvciBgbnVsbGAgaWYgdGhlIGV2ZW50IHdhcyBkcm9wcGVkKS4KICovCmZ1bmN0aW9uIG5vdGlmeUV2ZW50UHJvY2Vzc29ycygKICBwcm9jZXNzb3JzLAogIGV2ZW50LAogIGhpbnQsCiAgaW5kZXggPSAwLAopIHsKICByZXR1cm4gbmV3IFN5bmNQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGNvbnN0IHByb2Nlc3NvciA9IHByb2Nlc3NvcnNbaW5kZXhdOwogICAgaWYgKGV2ZW50ID09PSBudWxsIHx8IHR5cGVvZiBwcm9jZXNzb3IgIT09ICdmdW5jdGlvbicpIHsKICAgICAgcmVzb2x2ZShldmVudCk7CiAgICB9IGVsc2UgewogICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzb3IoeyAuLi5ldmVudCB9LCBoaW50KSA7CgogICAgICBERUJVR19CVUlMRCAmJiBwcm9jZXNzb3IuaWQgJiYgcmVzdWx0ID09PSBudWxsICYmIGxvZ2dlci5sb2coYEV2ZW50IHByb2Nlc3NvciAiJHtwcm9jZXNzb3IuaWR9IiBkcm9wcGVkIGV2ZW50YCk7CgogICAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7CiAgICAgICAgdm9pZCByZXN1bHQKICAgICAgICAgIC50aGVuKGZpbmFsID0+IG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCBmaW5hbCwgaGludCwgaW5kZXggKyAxKS50aGVuKHJlc29sdmUpKQogICAgICAgICAgLnRoZW4obnVsbCwgcmVqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2b2lkIG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCByZXN1bHQsIGhpbnQsIGluZGV4ICsgMSkKICAgICAgICAgIC50aGVuKHJlc29sdmUpCiAgICAgICAgICAudGhlbihudWxsLCByZWplY3QpOwogICAgICB9CiAgICB9CiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgbmV3IGBTZXNzaW9uYCBvYmplY3QgYnkgc2V0dGluZyBjZXJ0YWluIGRlZmF1bHQgcGFyYW1ldGVycy4gSWYgb3B0aW9uYWwgQHBhcmFtIGNvbnRleHQKICogaXMgcGFzc2VkLCB0aGUgcGFzc2VkIHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8gdGhlIHNlc3Npb24gb2JqZWN0LgogKgogKiBAcGFyYW0gY29udGV4dCAob3B0aW9uYWwpIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIHRoZSByZXR1cm5lZCBzZXNzaW9uIG9iamVjdAogKgogKiBAcmV0dXJucyBhIG5ldyBgU2Vzc2lvbmAgb2JqZWN0CiAqLwpmdW5jdGlvbiBtYWtlU2Vzc2lvbihjb250ZXh0KSB7CiAgLy8gQm90aCB0aW1lc3RhbXAgYW5kIHN0YXJ0ZWQgYXJlIGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCiAgY29uc3Qgc3RhcnRpbmdUaW1lID0gdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGNvbnN0IHNlc3Npb24gPSB7CiAgICBzaWQ6IHV1aWQ0KCksCiAgICBpbml0OiB0cnVlLAogICAgdGltZXN0YW1wOiBzdGFydGluZ1RpbWUsCiAgICBzdGFydGVkOiBzdGFydGluZ1RpbWUsCiAgICBkdXJhdGlvbjogMCwKICAgIHN0YXR1czogJ29rJywKICAgIGVycm9yczogMCwKICAgIGlnbm9yZUR1cmF0aW9uOiBmYWxzZSwKICAgIHRvSlNPTjogKCkgPT4gc2Vzc2lvblRvSlNPTihzZXNzaW9uKSwKICB9OwoKICBpZiAoY29udGV4dCkgewogICAgdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0KTsKICB9CgogIHJldHVybiBzZXNzaW9uOwp9CgovKioKICogVXBkYXRlcyBhIHNlc3Npb24gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgcGFzc2VkIGluIHRoZSBjb250ZXh0LgogKgogKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBwYXNzZWQgb2JqZWN0IGFuZCByZXR1cm5zIHZvaWQuCiAqIChIYWQgdG8gZG8gdGhpcyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBhbmQgdXBkYXRlZCBzZXNzaW9uIGJlY2F1c2UgY2xvc2luZyBhbmQgc2VuZGluZyBhIHNlc3Npb24KICogbWFrZXMgYW4gdXBkYXRlIHRvIHRoZSBzZXNzaW9uIGFmdGVyIGl0IHdhcyBwYXNzZWQgdG8gdGhlIHNlbmRpbmcgbG9naWMuCiAqIEBzZWUgQmFzZUNsaWVudC5jYXB0dXJlU2Vzc2lvbiApCiAqCiAqIEBwYXJhbSBzZXNzaW9uIHRoZSBgU2Vzc2lvbmAgdG8gdXBkYXRlCiAqIEBwYXJhbSBjb250ZXh0IHRoZSBgU2Vzc2lvbkNvbnRleHRgIGhvbGRpbmcgdGhlIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgdXBkYXRlZCBpbiBAcGFyYW0gc2Vzc2lvbgogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHkKZnVuY3Rpb24gdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0ID0ge30pIHsKICBpZiAoY29udGV4dC51c2VyKSB7CiAgICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQudXNlci5pcF9hZGRyZXNzKSB7CiAgICAgIHNlc3Npb24uaXBBZGRyZXNzID0gY29udGV4dC51c2VyLmlwX2FkZHJlc3M7CiAgICB9CgogICAgaWYgKCFzZXNzaW9uLmRpZCAmJiAhY29udGV4dC5kaWQpIHsKICAgICAgc2Vzc2lvbi5kaWQgPSBjb250ZXh0LnVzZXIuaWQgfHwgY29udGV4dC51c2VyLmVtYWlsIHx8IGNvbnRleHQudXNlci51c2VybmFtZTsKICAgIH0KICB9CgogIHNlc3Npb24udGltZXN0YW1wID0gY29udGV4dC50aW1lc3RhbXAgfHwgdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGlmIChjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbSkgewogICAgc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20gPSBjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbTsKICB9CgogIGlmIChjb250ZXh0Lmlnbm9yZUR1cmF0aW9uKSB7CiAgICBzZXNzaW9uLmlnbm9yZUR1cmF0aW9uID0gY29udGV4dC5pZ25vcmVEdXJhdGlvbjsKICB9CiAgaWYgKGNvbnRleHQuc2lkKSB7CiAgICAvLyBHb29kIGVub3VnaCB1dWlkIHZhbGlkYXRpb24uIOKAlCBLYW1pbAogICAgc2Vzc2lvbi5zaWQgPSBjb250ZXh0LnNpZC5sZW5ndGggPT09IDMyID8gY29udGV4dC5zaWQgOiB1dWlkNCgpOwogIH0KICBpZiAoY29udGV4dC5pbml0ICE9PSB1bmRlZmluZWQpIHsKICAgIHNlc3Npb24uaW5pdCA9IGNvbnRleHQuaW5pdDsKICB9CiAgaWYgKCFzZXNzaW9uLmRpZCAmJiBjb250ZXh0LmRpZCkgewogICAgc2Vzc2lvbi5kaWQgPSBgJHtjb250ZXh0LmRpZH1gOwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuc3RhcnRlZCA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uc3RhcnRlZCA9IGNvbnRleHQuc3RhcnRlZDsKICB9CiAgaWYgKHNlc3Npb24uaWdub3JlRHVyYXRpb24pIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSB1bmRlZmluZWQ7CiAgfSBlbHNlIGlmICh0eXBlb2YgY29udGV4dC5kdXJhdGlvbiA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSBjb250ZXh0LmR1cmF0aW9uOwogIH0gZWxzZSB7CiAgICBjb25zdCBkdXJhdGlvbiA9IHNlc3Npb24udGltZXN0YW1wIC0gc2Vzc2lvbi5zdGFydGVkOwogICAgc2Vzc2lvbi5kdXJhdGlvbiA9IGR1cmF0aW9uID49IDAgPyBkdXJhdGlvbiA6IDA7CiAgfQogIGlmIChjb250ZXh0LnJlbGVhc2UpIHsKICAgIHNlc3Npb24ucmVsZWFzZSA9IGNvbnRleHQucmVsZWFzZTsKICB9CiAgaWYgKGNvbnRleHQuZW52aXJvbm1lbnQpIHsKICAgIHNlc3Npb24uZW52aXJvbm1lbnQgPSBjb250ZXh0LmVudmlyb25tZW50OwogIH0KICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQuaXBBZGRyZXNzKSB7CiAgICBzZXNzaW9uLmlwQWRkcmVzcyA9IGNvbnRleHQuaXBBZGRyZXNzOwogIH0KICBpZiAoIXNlc3Npb24udXNlckFnZW50ICYmIGNvbnRleHQudXNlckFnZW50KSB7CiAgICBzZXNzaW9uLnVzZXJBZ2VudCA9IGNvbnRleHQudXNlckFnZW50OwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuZXJyb3JzID09PSAnbnVtYmVyJykgewogICAgc2Vzc2lvbi5lcnJvcnMgPSBjb250ZXh0LmVycm9yczsKICB9CiAgaWYgKGNvbnRleHQuc3RhdHVzKSB7CiAgICBzZXNzaW9uLnN0YXR1cyA9IGNvbnRleHQuc3RhdHVzOwogIH0KfQoKLyoqCiAqIENsb3NlcyBhIHNlc3Npb24gYnkgc2V0dGluZyBpdHMgc3RhdHVzIGFuZCB1cGRhdGluZyB0aGUgc2Vzc2lvbiBvYmplY3Qgd2l0aCBpdC4KICogSW50ZXJuYWxseSBjYWxscyBgdXBkYXRlU2Vzc2lvbmAgdG8gdXBkYXRlIHRoZSBwYXNzZWQgc2Vzc2lvbiBvYmplY3QuCiAqCiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHBhc3NlZCBzZXNzaW9uIChAc2VlIHVwZGF0ZVNlc3Npb24gZm9yIGV4cGxhbmF0aW9uKS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIGBTZXNzaW9uYCBvYmplY3QgdG8gYmUgY2xvc2VkCiAqIEBwYXJhbSBzdGF0dXMgdGhlIGBTZXNzaW9uU3RhdHVzYCB3aXRoIHdoaWNoIHRoZSBzZXNzaW9uIHdhcyBjbG9zZWQuIElmIHlvdSBkb24ndCBwYXNzIGEgc3RhdHVzLAogKiAgICAgICAgICAgICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBrZWVwIHRoZSBwcmV2aW91c2x5IHNldCBzdGF0dXMsIHVubGVzcyBpdCB3YXMgYCdvaydgIGluIHdoaWNoIGNhc2UKICogICAgICAgICAgICAgICBpdCBpcyBjaGFuZ2VkIHRvIGAnZXhpdGVkJ2AuCiAqLwpmdW5jdGlvbiBjbG9zZVNlc3Npb24oc2Vzc2lvbiwgc3RhdHVzKSB7CiAgbGV0IGNvbnRleHQgPSB7fTsKICBpZiAoc3RhdHVzKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXMgfTsKICB9IGVsc2UgaWYgKHNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXM6ICdleGl0ZWQnIH07CiAgfQoKICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIGNvbnRleHQpOwp9CgovKioKICogU2VyaWFsaXplcyBhIHBhc3NlZCBzZXNzaW9uIG9iamVjdCB0byBhIEpTT04gb2JqZWN0IHdpdGggYSBzbGlnaHRseSBkaWZmZXJlbnQgc3RydWN0dXJlLgogKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBTZW50cnkgYmFja2VuZCByZXF1aXJlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBzY2hlbWEgb2YgYSBzZXNzaW9uCiAqIHRoYW4gdGhlIG9uZSB0aGUgSlMgU0RLcyB1c2UgaW50ZXJuYWxseS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIHNlc3Npb24gdG8gYmUgY29udmVydGVkCiAqCiAqIEByZXR1cm5zIGEgSlNPTiBvYmplY3Qgb2YgdGhlIHBhc3NlZCBzZXNzaW9uCiAqLwpmdW5jdGlvbiBzZXNzaW9uVG9KU09OKHNlc3Npb24pIHsKICByZXR1cm4gZHJvcFVuZGVmaW5lZEtleXMoewogICAgc2lkOiBgJHtzZXNzaW9uLnNpZH1gLAogICAgaW5pdDogc2Vzc2lvbi5pbml0LAogICAgLy8gTWFrZSBzdXJlIHRoYXQgc2VjIGlzIGNvbnZlcnRlZCB0byBtcyBmb3IgZGF0ZSBjb25zdHJ1Y3RvcgogICAgc3RhcnRlZDogbmV3IERhdGUoc2Vzc2lvbi5zdGFydGVkICogMTAwMCkudG9JU09TdHJpbmcoKSwKICAgIHRpbWVzdGFtcDogbmV3IERhdGUoc2Vzc2lvbi50aW1lc3RhbXAgKiAxMDAwKS50b0lTT1N0cmluZygpLAogICAgc3RhdHVzOiBzZXNzaW9uLnN0YXR1cywKICAgIGVycm9yczogc2Vzc2lvbi5lcnJvcnMsCiAgICBkaWQ6IHR5cGVvZiBzZXNzaW9uLmRpZCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHNlc3Npb24uZGlkID09PSAnc3RyaW5nJyA/IGAke3Nlc3Npb24uZGlkfWAgOiB1bmRlZmluZWQsCiAgICBkdXJhdGlvbjogc2Vzc2lvbi5kdXJhdGlvbiwKICAgIGFibm9ybWFsX21lY2hhbmlzbTogc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20sCiAgICBhdHRyczogewogICAgICByZWxlYXNlOiBzZXNzaW9uLnJlbGVhc2UsCiAgICAgIGVudmlyb25tZW50OiBzZXNzaW9uLmVudmlyb25tZW50LAogICAgICBpcF9hZGRyZXNzOiBzZXNzaW9uLmlwQWRkcmVzcywKICAgICAgdXNlcl9hZ2VudDogc2Vzc2lvbi51c2VyQWdlbnQsCiAgICB9LAogIH0pOwp9Cgpjb25zdCBUUkFDRV9GTEFHX1NBTVBMRUQgPSAweDE7CgovKioKICogQ29udmVydCBhIHNwYW4gdG8gYSB0cmFjZSBjb250ZXh0LCB3aGljaCBjYW4gYmUgc2VudCBhcyB0aGUgYHRyYWNlYCBjb250ZXh0IGluIGFuIGV2ZW50LgogKi8KZnVuY3Rpb24gc3BhblRvVHJhY2VDb250ZXh0KHNwYW4pIHsKICBjb25zdCB7IHNwYW5JZDogc3Bhbl9pZCwgdHJhY2VJZDogdHJhY2VfaWQgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICBjb25zdCB7IGRhdGEsIG9wLCBwYXJlbnRfc3Bhbl9pZCwgc3RhdHVzLCB0YWdzLCBvcmlnaW4gfSA9IHNwYW5Ub0pTT04oc3Bhbik7CgogIHJldHVybiBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBkYXRhLAogICAgb3AsCiAgICBwYXJlbnRfc3Bhbl9pZCwKICAgIHNwYW5faWQsCiAgICBzdGF0dXMsCiAgICB0YWdzLAogICAgdHJhY2VfaWQsCiAgICBvcmlnaW4sCiAgfSk7Cn0KCi8qKgogKiBDb252ZXJ0IGEgc3BhbiB0byBhIEpTT04gcmVwcmVzZW50YXRpb24uCiAqIE5vdGUgdGhhdCBhbGwgZmllbGRzIHJldHVybmVkIGhlcmUgYXJlIG9wdGlvbmFsIGFuZCBuZWVkIHRvIGJlIGd1YXJkZWQgYWdhaW5zdC4KICoKICogTm90ZTogQmVjYXVzZSBvZiB0aGlzLCB3ZSBjdXJyZW50bHkgaGF2ZSBhIGNpcmN1bGFyIHR5cGUgZGVwZW5kZW5jeSAod2hpY2ggd2Ugb3B0ZWQgb3V0IG9mIGluIHBhY2thZ2UuanNvbikuCiAqIFRoaXMgaXMgbm90IGF2b2lkYWJsZSBhcyB3ZSBuZWVkIGBzcGFuVG9KU09OYCBpbiBgc3BhblV0aWxzLnRzYCwgd2hpY2ggaW4gdHVybiBpcyBuZWVkZWQgYnkgYHNwYW4udHNgIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICogQW5kIGBzcGFuVG9KU09OYCBuZWVkcyB0aGUgU3BhbiBjbGFzcyBmcm9tIGBzcGFuLnRzYCB0byBjaGVjayBoZXJlLgogKiBUT0RPIHY4OiBXaGVuIHdlIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBzdHVmZiBmcm9tIGBzcGFuLnRzYCwgd2UgY2FuIHJlbW92ZSB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSBhZ2Fpbi4KICovCmZ1bmN0aW9uIHNwYW5Ub0pTT04oc3BhbikgewogIGlmIChzcGFuSXNTcGFuQ2xhc3Moc3BhbikpIHsKICAgIHJldHVybiBzcGFuLmdldFNwYW5KU09OKCk7CiAgfQoKICAvLyBGYWxsYmFjazogV2UgYWxzbyBjaGVjayBmb3IgYC50b0pTT04oKWAgaGVyZS4uLgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGlmICh0eXBlb2Ygc3Bhbi50b0pTT04gPT09ICdmdW5jdGlvbicpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgcmV0dXJuIHNwYW4udG9KU09OKCk7CiAgfQoKICByZXR1cm4ge307Cn0KCi8qKgogKiBTYWRseSwgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY3kgY2hlY2tzIHdlIGNhbm5vdCBhY3R1YWxseSBpbXBvcnQgdGhlIFNwYW4gY2xhc3MgaGVyZSBhbmQgY2hlY2sgZm9yIGluc3RhbmNlb2YuCiAqIDooIFNvIGluc3RlYWQgd2UgYXBwcm94aW1hdGUgdGhpcyBieSBjaGVja2luZyBpZiBpdCBoYXMgdGhlIGBnZXRTcGFuSlNPTmAgbWV0aG9kLgogKi8KZnVuY3Rpb24gc3BhbklzU3BhbkNsYXNzKHNwYW4pIHsKICByZXR1cm4gdHlwZW9mIChzcGFuICkuZ2V0U3BhbkpTT04gPT09ICdmdW5jdGlvbic7Cn0KCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgYSBzcGFuIGlzIHNhbXBsZWQuCiAqIEluIG1vc3QgY2FzZXMsIHlvdSBzaG91bGQganVzdCB1c2UgYHNwYW4uaXNSZWNvcmRpbmcoKWAgaW5zdGVhZC4KICogSG93ZXZlciwgdGhpcyBoYXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2VtYW50aWMsIGFzIGl0IGFsc28gcmV0dXJucyBmYWxzZSBpZiB0aGUgc3BhbiBpcyBmaW5pc2hlZC4KICogU28gaW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBkaXN0aW5jdGlvbiBpcyBpbXBvcnRhbnQsIHVzZSB0aGlzIG1ldGhvZC4KICovCmZ1bmN0aW9uIHNwYW5Jc1NhbXBsZWQoc3BhbikgewogIC8vIFdlIGFsaWduIG91ciB0cmFjZSBmbGFncyB3aXRoIHRoZSBvbmVzIE9wZW5UZWxlbWV0cnkgdXNlCiAgLy8gU28gd2UgYWxzbyBjaGVjayBmb3Igc2FtcGxlZCB0aGUgc2FtZSB3YXkgdGhleSBkby4KICBjb25zdCB7IHRyYWNlRmxhZ3MgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZQogIHJldHVybiBCb29sZWFuKHRyYWNlRmxhZ3MgJiBUUkFDRV9GTEFHX1NBTVBMRUQpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIGNsaWVudC4KICovCmZ1bmN0aW9uIGdldENsaWVudCgpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICByZXR1cm4gZ2V0Q3VycmVudEh1YigpLmdldENsaWVudCgpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIHNjb3BlLgogKi8KZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkgewogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBnZXRDdXJyZW50SHViKCkuZ2V0U2NvcGUoKTsKfQoKLyoqCiAqIFJldHVybnMgdGhlIHJvb3Qgc3BhbiBvZiBhIGdpdmVuIHNwYW4uCiAqCiAqIEFzIGxvbmcgYXMgd2UgdXNlIGBUcmFuc2FjdGlvbmBzIGludGVybmFsbHksIHRoZSByZXR1cm5lZCByb290IHNwYW4KICogd2lsbCBiZSBhIGBUcmFuc2FjdGlvbmAgYnV0IGJlIGF3YXJlIHRoYXQgdGhpcyBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KICoKICogSWYgdGhlIGdpdmVuIHNwYW4gaGFzIG5vIHJvb3Qgc3BhbiBvciB0cmFuc2FjdGlvbiwgYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuCiAqLwpmdW5jdGlvbiBnZXRSb290U3BhbihzcGFuKSB7CiAgLy8gVE9ETyAodjgpOiBSZW1vdmUgdGhpcyBjaGVjayBhbmQganVzdCByZXR1cm4gc3BhbgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBzcGFuLnRyYW5zYWN0aW9uOwp9CgovKioKICogQ3JlYXRlcyBhIGR5bmFtaWMgc2FtcGxpbmcgY29udGV4dCBmcm9tIGEgY2xpZW50LgogKgogKiBEaXNwYXRjaGVzIHRoZSBgY3JlYXRlRHNjYCBsaWZlY3ljbGUgaG9vayBhcyBhIHNpZGUgZWZmZWN0LgogKi8KZnVuY3Rpb24gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoCiAgdHJhY2VfaWQsCiAgY2xpZW50LAogIHNjb3BlLAopIHsKICBjb25zdCBvcHRpb25zID0gY2xpZW50LmdldE9wdGlvbnMoKTsKCiAgY29uc3QgeyBwdWJsaWNLZXk6IHB1YmxpY19rZXkgfSA9IGNsaWVudC5nZXREc24oKSB8fCB7fTsKICAvLyBUT0RPKHY4KTogUmVtb3ZlIHNlZ21lbnQgZnJvbSBVc2VyCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgY29uc3QgeyBzZWdtZW50OiB1c2VyX3NlZ21lbnQgfSA9IChzY29wZSAmJiBzY29wZS5nZXRVc2VyKCkpIHx8IHt9OwoKICBjb25zdCBkc2MgPSBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCB8fCBERUZBVUxUX0VOVklST05NRU5ULAogICAgcmVsZWFzZTogb3B0aW9ucy5yZWxlYXNlLAogICAgdXNlcl9zZWdtZW50LAogICAgcHVibGljX2tleSwKICAgIHRyYWNlX2lkLAogIH0pIDsKCiAgY2xpZW50LmVtaXQgJiYgY2xpZW50LmVtaXQoJ2NyZWF0ZURzYycsIGRzYyk7CgogIHJldHVybiBkc2M7Cn0KCi8qKgogKiBBIFNwYW4gd2l0aCBhIGZyb3plbiBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQuCiAqLwoKLyoqCiAqIENyZWF0ZXMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQgZnJvbSBhIHNwYW4gKGFuZCBjbGllbnQgYW5kIHNjb3BlKQogKgogKiBAcGFyYW0gc3BhbiB0aGUgc3BhbiBmcm9tIHdoaWNoIGEgZmV3IHZhbHVlcyBsaWtlIHRoZSByb290IHNwYW4gbmFtZSBhbmQgc2FtcGxlIHJhdGUgYXJlIGV4dHJhY3RlZC4KICoKICogQHJldHVybnMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQKICovCmZ1bmN0aW9uIGdldER5bmFtaWNTYW1wbGluZ0NvbnRleHRGcm9tU3BhbihzcGFuKSB7CiAgY29uc3QgY2xpZW50ID0gZ2V0Q2xpZW50KCk7CiAgaWYgKCFjbGllbnQpIHsKICAgIHJldHVybiB7fTsKICB9CgogIC8vIHBhc3NpbmcgZW1pdD1mYWxzZSBoZXJlIHRvIG9ubHkgZW1pdCBsYXRlciBvbmNlIHRoZSBEU0MgaXMgYWN0dWFsbHkgcG9wdWxhdGVkCiAgY29uc3QgZHNjID0gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoc3BhblRvSlNPTihzcGFuKS50cmFjZV9pZCB8fCAnJywgY2xpZW50LCBnZXRDdXJyZW50U2NvcGUoKSk7CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIGNvbnN0IHR4biA9IGdldFJvb3RTcGFuKHNwYW4pIDsKICBpZiAoIXR4bikgewogICAgcmV0dXJuIGRzYzsKICB9CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIC8vIEZvciBub3cgd2UgbmVlZCB0byBhdm9pZCBicmVha2luZyB1c2VycyB3aG8gZGlyZWN0bHkgY3JlYXRlZCBhIHR4biB3aXRoIGEgRFNDLCB3aGVyZSB0aGlzIGZpZWxkIGlzIHN0aWxsIHNldC4KICAvLyBAc2VlIFRyYW5zYWN0aW9uIGNsYXNzIGNvbnN0cnVjdG9yCiAgY29uc3QgdjdGcm96ZW5Ec2MgPSB0eG4gJiYgdHhuLl9mcm96ZW5EeW5hbWljU2FtcGxpbmdDb250ZXh0OwogIGlmICh2N0Zyb3plbkRzYykgewogICAgcmV0dXJuIHY3RnJvemVuRHNjOwogIH0KCiAgLy8gVE9ETyAodjgpOiBSZXBsYWNlIHR4bi5tZXRhZGF0YSB3aXRoIHR4bi5hdHRyaWJ1dGVzW10KICAvLyBXZSBjYW4ndCBkbyB0aGlzIHlldCBiZWNhdXNlIGF0dHJpYnV0ZXMgYXJlbid0IGFsd2F5cyBzZXQgeWV0LgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGNvbnN0IHsgc2FtcGxlUmF0ZTogbWF5YmVTYW1wbGVSYXRlLCBzb3VyY2UgfSA9IHR4bi5tZXRhZGF0YTsKICBpZiAobWF5YmVTYW1wbGVSYXRlICE9IG51bGwpIHsKICAgIGRzYy5zYW1wbGVfcmF0ZSA9IGAke21heWJlU2FtcGxlUmF0ZX1gOwogIH0KCiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIGEgdHJhbnNhY3Rpb24gbmFtZSBpbiB0aGUgRFNDIGlmIHRoZSBzb3VyY2UgaXMgInVybCIgYmVjYXVzZSBVUkxzIG1pZ2h0IGNvbnRhaW4gUElJCiAgY29uc3QganNvblNwYW4gPSBzcGFuVG9KU09OKHR4bik7CgogIC8vIGFmdGVyIEpTT04gY29udmVyc2lvbiwgdHhuLm5hbWUgYmVjb21lcyBqc29uU3Bhbi5kZXNjcmlwdGlvbgogIGlmIChzb3VyY2UgJiYgc291cmNlICE9PSAndXJsJykgewogICAgZHNjLnRyYW5zYWN0aW9uID0ganNvblNwYW4uZGVzY3JpcHRpb247CiAgfQoKICBkc2Muc2FtcGxlZCA9IFN0cmluZyhzcGFuSXNTYW1wbGVkKHR4bikpOwoKICBjbGllbnQuZW1pdCAmJiBjbGllbnQuZW1pdCgnY3JlYXRlRHNjJywgZHNjKTsKCiAgcmV0dXJuIGRzYzsKfQoKLyoqCiAqIEFwcGxpZXMgZGF0YSBmcm9tIHRoZSBzY29wZSB0byB0aGUgZXZlbnQgYW5kIHJ1bnMgYWxsIGV2ZW50IHByb2Nlc3NvcnMgb24gaXQuCiAqLwpmdW5jdGlvbiBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7IGZpbmdlcnByaW50LCBzcGFuLCBicmVhZGNydW1icywgc2RrUHJvY2Vzc2luZ01ldGFkYXRhIH0gPSBkYXRhOwoKICAvLyBBcHBseSBnZW5lcmFsIGRhdGEKICBhcHBseURhdGFUb0V2ZW50KGV2ZW50LCBkYXRhKTsKCiAgLy8gV2Ugd2FudCB0byBzZXQgdGhlIHRyYWNlIGNvbnRleHQgZm9yIG5vcm1hbCBldmVudHMgb25seSBpZiB0aGVyZSBpc24ndCBhbHJlYWR5CiAgLy8gYSB0cmFjZSBjb250ZXh0IG9uIHRoZSBldmVudC4gVGhlcmUgaXMgYSBwcm9kdWN0IGZlYXR1cmUgaW4gcGxhY2Ugd2hlcmUgd2UgbGluawogIC8vIGVycm9ycyB3aXRoIHRyYW5zYWN0aW9uIGFuZCBpdCByZWxpZXMgb24gdGhhdC4KICBpZiAoc3BhbikgewogICAgYXBwbHlTcGFuVG9FdmVudChldmVudCwgc3Bhbik7CiAgfQoKICBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpOwogIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icyk7CiAgYXBwbHlTZGtNZXRhZGF0YVRvRXZlbnQoZXZlbnQsIHNka1Byb2Nlc3NpbmdNZXRhZGF0YSk7Cn0KCmZ1bmN0aW9uIGFwcGx5RGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7CiAgICBleHRyYSwKICAgIHRhZ3MsCiAgICB1c2VyLAogICAgY29udGV4dHMsCiAgICBsZXZlbCwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdHJhbnNhY3Rpb25OYW1lLAogIH0gPSBkYXRhOwoKICBjb25zdCBjbGVhbmVkRXh0cmEgPSBkcm9wVW5kZWZpbmVkS2V5cyhleHRyYSk7CiAgaWYgKGNsZWFuZWRFeHRyYSAmJiBPYmplY3Qua2V5cyhjbGVhbmVkRXh0cmEpLmxlbmd0aCkgewogICAgZXZlbnQuZXh0cmEgPSB7IC4uLmNsZWFuZWRFeHRyYSwgLi4uZXZlbnQuZXh0cmEgfTsKICB9CgogIGNvbnN0IGNsZWFuZWRUYWdzID0gZHJvcFVuZGVmaW5lZEtleXModGFncyk7CiAgaWYgKGNsZWFuZWRUYWdzICYmIE9iamVjdC5rZXlzKGNsZWFuZWRUYWdzKS5sZW5ndGgpIHsKICAgIGV2ZW50LnRhZ3MgPSB7IC4uLmNsZWFuZWRUYWdzLCAuLi5ldmVudC50YWdzIH07CiAgfQoKICBjb25zdCBjbGVhbmVkVXNlciA9IGRyb3BVbmRlZmluZWRLZXlzKHVzZXIpOwogIGlmIChjbGVhbmVkVXNlciAmJiBPYmplY3Qua2V5cyhjbGVhbmVkVXNlcikubGVuZ3RoKSB7CiAgICBldmVudC51c2VyID0geyAuLi5jbGVhbmVkVXNlciwgLi4uZXZlbnQudXNlciB9OwogIH0KCiAgY29uc3QgY2xlYW5lZENvbnRleHRzID0gZHJvcFVuZGVmaW5lZEtleXMoY29udGV4dHMpOwogIGlmIChjbGVhbmVkQ29udGV4dHMgJiYgT2JqZWN0LmtleXMoY2xlYW5lZENvbnRleHRzKS5sZW5ndGgpIHsKICAgIGV2ZW50LmNvbnRleHRzID0geyAuLi5jbGVhbmVkQ29udGV4dHMsIC4uLmV2ZW50LmNvbnRleHRzIH07CiAgfQoKICBpZiAobGV2ZWwpIHsKICAgIGV2ZW50LmxldmVsID0gbGV2ZWw7CiAgfQoKICBpZiAodHJhbnNhY3Rpb25OYW1lKSB7CiAgICBldmVudC50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uTmFtZTsKICB9Cn0KCmZ1bmN0aW9uIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icykgewogIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWJzID0gWy4uLihldmVudC5icmVhZGNydW1icyB8fCBbXSksIC4uLmJyZWFkY3J1bWJzXTsKICBldmVudC5icmVhZGNydW1icyA9IG1lcmdlZEJyZWFkY3J1bWJzLmxlbmd0aCA/IG1lcmdlZEJyZWFkY3J1bWJzIDogdW5kZWZpbmVkOwp9CgpmdW5jdGlvbiBhcHBseVNka01ldGFkYXRhVG9FdmVudChldmVudCwgc2RrUHJvY2Vzc2luZ01ldGFkYXRhKSB7CiAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgLi4uZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogICAgLi4uc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogIH07Cn0KCmZ1bmN0aW9uIGFwcGx5U3BhblRvRXZlbnQoZXZlbnQsIHNwYW4pIHsKICBldmVudC5jb250ZXh0cyA9IHsgdHJhY2U6IHNwYW5Ub1RyYWNlQ29udGV4dChzcGFuKSwgLi4uZXZlbnQuY29udGV4dHMgfTsKICBjb25zdCByb290U3BhbiA9IGdldFJvb3RTcGFuKHNwYW4pOwogIGlmIChyb290U3BhbikgewogICAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgICBkeW5hbWljU2FtcGxpbmdDb250ZXh0OiBnZXREeW5hbWljU2FtcGxpbmdDb250ZXh0RnJvbVNwYW4oc3BhbiksCiAgICAgIC4uLmV2ZW50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgIH07CiAgICBjb25zdCB0cmFuc2FjdGlvbk5hbWUgPSBzcGFuVG9KU09OKHJvb3RTcGFuKS5kZXNjcmlwdGlvbjsKICAgIGlmICh0cmFuc2FjdGlvbk5hbWUpIHsKICAgICAgZXZlbnQudGFncyA9IHsgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uTmFtZSwgLi4uZXZlbnQudGFncyB9OwogICAgfQogIH0KfQoKLyoqCiAqIEFwcGxpZXMgZmluZ2VycHJpbnQgZnJvbSB0aGUgc2NvcGUgdG8gdGhlIGV2ZW50IGlmIHRoZXJlJ3Mgb25lLAogKiB1c2VzIG1lc3NhZ2UgaWYgdGhlcmUncyBvbmUgaW5zdGVhZCBvciBnZXQgcmlkIG9mIGVtcHR5IGZpbmdlcnByaW50CiAqLwpmdW5jdGlvbiBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpIHsKICAvLyBNYWtlIHN1cmUgaXQncyBhbiBhcnJheSBmaXJzdCBhbmQgd2UgYWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgaW4gcGxhY2UKICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50ID8gYXJyYXlpZnkoZXZlbnQuZmluZ2VycHJpbnQpIDogW107CgogIC8vIElmIHdlIGhhdmUgc29tZXRoaW5nIG9uIHRoZSBzY29wZSwgdGhlbiBtZXJnZSBpdCB3aXRoIGV2ZW50CiAgaWYgKGZpbmdlcnByaW50KSB7CiAgICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50LmNvbmNhdChmaW5nZXJwcmludCk7CiAgfQoKICAvLyBJZiB3ZSBoYXZlIG5vIGRhdGEgYXQgYWxsLCByZW1vdmUgZW1wdHkgYXJyYXkgZGVmYXVsdAogIGlmIChldmVudC5maW5nZXJwcmludCAmJiAhZXZlbnQuZmluZ2VycHJpbnQubGVuZ3RoKSB7CiAgICBkZWxldGUgZXZlbnQuZmluZ2VycHJpbnQ7CiAgfQp9CgovKioKICogRGVmYXVsdCB2YWx1ZSBmb3IgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuCiAqLwpjb25zdCBERUZBVUxUX01BWF9CUkVBRENSVU1CUyA9IDEwMDsKCi8qKgogKiBIb2xkcyBhZGRpdGlvbmFsIGV2ZW50IGluZm9ybWF0aW9uLiB7QGxpbmsgU2NvcGUuYXBwbHlUb0V2ZW50fSB3aWxsIGJlCiAqIGNhbGxlZCBieSB0aGUgY2xpZW50IGJlZm9yZSBhbiBldmVudCB3aWxsIGJlIHNlbnQuCiAqLwpjbGFzcyBTY29wZSAgewogIC8qKiBGbGFnIGlmIG5vdGlmeWluZyBpcyBoYXBwZW5pbmcuICovCgogIC8qKiBDYWxsYmFjayBmb3IgY2xpZW50IHRvIHJlY2VpdmUgc2NvcGUgY2hhbmdlcy4gKi8KCiAgLyoqIENhbGxiYWNrIGxpc3QgdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB7QGxpbmsgYXBwbHlUb0V2ZW50fS4gKi8KCiAgLyoqIEFycmF5IG9mIGJyZWFkY3J1bWJzLiAqLwoKICAvKiogVXNlciAqLwoKICAvKiogVGFncyAqLwoKICAvKiogRXh0cmEgKi8KCiAgLyoqIENvbnRleHRzICovCgogIC8qKiBBdHRhY2htZW50cyAqLwoKICAvKiogUHJvcGFnYXRpb24gQ29udGV4dCBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAqLwoKICAvKioKICAgKiBBIHBsYWNlIHRvIHN0YXNoIGRhdGEgd2hpY2ggaXMgbmVlZGVkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIFNESydzIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUgYnV0IHdoaWNoIHNob3VsZG4ndCBnZXQKICAgKiBzZW50IHRvIFNlbnRyeQogICAqLwoKICAvKiogRmluZ2VycHJpbnQgKi8KCiAgLyoqIFNldmVyaXR5ICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCgogIC8qKgogICAqIFRyYW5zYWN0aW9uIE5hbWUKICAgKi8KCiAgLyoqIFNwYW4gKi8KCiAgLyoqIFNlc3Npb24gKi8KCiAgLyoqIFJlcXVlc3QgTW9kZSBTZXNzaW9uIFN0YXR1cyAqLwoKICAvKiogVGhlIGNsaWVudCBvbiB0aGlzIHNjb3BlICovCgogIC8vIE5PVEU6IEFueSBmaWVsZCB3aGljaCBnZXRzIGFkZGVkIGhlcmUgc2hvdWxkIGdldCBhZGRlZCBub3Qgb25seSB0byB0aGUgY29uc3RydWN0b3IgYnV0IGFsc28gdG8gdGhlIGBjbG9uZWAgbWV0aG9kLgoKICAgY29uc3RydWN0b3IoKSB7CiAgICB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzID0gW107CiAgICB0aGlzLl9ldmVudFByb2Nlc3NvcnMgPSBbXTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gW107CiAgICB0aGlzLl9hdHRhY2htZW50cyA9IFtdOwogICAgdGhpcy5fdXNlciA9IHt9OwogICAgdGhpcy5fdGFncyA9IHt9OwogICAgdGhpcy5fZXh0cmEgPSB7fTsKICAgIHRoaXMuX2NvbnRleHRzID0ge307CiAgICB0aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgPSB7fTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgfQoKICAvKioKICAgKiBJbmhlcml0IHZhbHVlcyBmcm9tIHRoZSBwYXJlbnQgc2NvcGUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzY29wZS5jbG9uZSgpYCBhbmQgYG5ldyBTY29wZSgpYCBpbnN0ZWFkLgogICAqLwogICBzdGF0aWMgY2xvbmUoc2NvcGUpIHsKICAgIHJldHVybiBzY29wZSA/IHNjb3BlLmNsb25lKCkgOiBuZXcgU2NvcGUoKTsKICB9CgogIC8qKgogICAqIENsb25lIHRoaXMgc2NvcGUgaW5zdGFuY2UuCiAgICovCiAgIGNsb25lKCkgewogICAgY29uc3QgbmV3U2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgIG5ld1Njb3BlLl9icmVhZGNydW1icyA9IFsuLi50aGlzLl9icmVhZGNydW1ic107CiAgICBuZXdTY29wZS5fdGFncyA9IHsgLi4udGhpcy5fdGFncyB9OwogICAgbmV3U2NvcGUuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSB9OwogICAgbmV3U2NvcGUuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cyB9OwogICAgbmV3U2NvcGUuX3VzZXIgPSB0aGlzLl91c2VyOwogICAgbmV3U2NvcGUuX2xldmVsID0gdGhpcy5fbGV2ZWw7CiAgICBuZXdTY29wZS5fc3BhbiA9IHRoaXMuX3NwYW47CiAgICBuZXdTY29wZS5fc2Vzc2lvbiA9IHRoaXMuX3Nlc3Npb247CiAgICBuZXdTY29wZS5fdHJhbnNhY3Rpb25OYW1lID0gdGhpcy5fdHJhbnNhY3Rpb25OYW1lOwogICAgbmV3U2NvcGUuX2ZpbmdlcnByaW50ID0gdGhpcy5fZmluZ2VycHJpbnQ7CiAgICBuZXdTY29wZS5fZXZlbnRQcm9jZXNzb3JzID0gWy4uLnRoaXMuX2V2ZW50UHJvY2Vzc29yc107CiAgICBuZXdTY29wZS5fcmVxdWVzdFNlc3Npb24gPSB0aGlzLl9yZXF1ZXN0U2Vzc2lvbjsKICAgIG5ld1Njb3BlLl9hdHRhY2htZW50cyA9IFsuLi50aGlzLl9hdHRhY2htZW50c107CiAgICBuZXdTY29wZS5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0geyAuLi50aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgfTsKICAgIG5ld1Njb3BlLl9wcm9wYWdhdGlvbkNvbnRleHQgPSB7IC4uLnRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCB9OwogICAgbmV3U2NvcGUuX2NsaWVudCA9IHRoaXMuX2NsaWVudDsKCiAgICByZXR1cm4gbmV3U2NvcGU7CiAgfQoKICAvKiogVXBkYXRlIHRoZSBjbGllbnQgb24gdGhlIHNjb3BlLiAqLwogICBzZXRDbGllbnQoY2xpZW50KSB7CiAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7CiAgfQoKICAvKioKICAgKiBHZXQgdGhlIGNsaWVudCBhc3NpZ25lZCB0byB0aGlzIHNjb3BlLgogICAqCiAgICogSXQgaXMgZ2VuZXJhbGx5IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgZ2xvYmFsIGZ1bmN0aW9uIGBTZW50cnkuZ2V0Q2xpZW50KClgIGluc3RlYWQsIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuCiAgICovCiAgIGdldENsaWVudCgpIHsKICAgIHJldHVybiB0aGlzLl9jbGllbnQ7CiAgfQoKICAvKioKICAgKiBBZGQgaW50ZXJuYWwgb24gY2hhbmdlIGxpc3RlbmVyLiBVc2VkIGZvciBzdWIgU0RLcyB0aGF0IG5lZWQgdG8gc3RvcmUgdGhlIHNjb3BlLgogICAqIEBoaWRkZW4KICAgKi8KICAgYWRkU2NvcGVMaXN0ZW5lcihjYWxsYmFjaykgewogICAgdGhpcy5fc2NvcGVMaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBhZGRFdmVudFByb2Nlc3NvcihjYWxsYmFjaykgewogICAgdGhpcy5fZXZlbnRQcm9jZXNzb3JzLnB1c2goY2FsbGJhY2spOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRVc2VyKHVzZXIpIHsKICAgIC8vIElmIG51bGwgaXMgcGFzc2VkIHdlIHdhbnQgdG8gdW5zZXQgZXZlcnl0aGluZywgYnV0IHN0aWxsIGRlZmluZSBrZXlzLAogICAgLy8gc28gdGhhdCBsYXRlciBkb3duIGluIHRoZSBwaXBlbGluZSBhbnkgZXhpc3RpbmcgdmFsdWVzIGFyZSBjbGVhcmVkLgogICAgdGhpcy5fdXNlciA9IHVzZXIgfHwgewogICAgICBlbWFpbDogdW5kZWZpbmVkLAogICAgICBpZDogdW5kZWZpbmVkLAogICAgICBpcF9hZGRyZXNzOiB1bmRlZmluZWQsCiAgICAgIHNlZ21lbnQ6IHVuZGVmaW5lZCwKICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgIH07CgogICAgaWYgKHRoaXMuX3Nlc3Npb24pIHsKICAgICAgdXBkYXRlU2Vzc2lvbih0aGlzLl9zZXNzaW9uLCB7IHVzZXIgfSk7CiAgICB9CgogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0VXNlcigpIHsKICAgIHJldHVybiB0aGlzLl91c2VyOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UmVxdWVzdFNlc3Npb24oKSB7CiAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFNlc3Npb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRSZXF1ZXN0U2Vzc2lvbihyZXF1ZXN0U2Vzc2lvbikgewogICAgdGhpcy5fcmVxdWVzdFNlc3Npb24gPSByZXF1ZXN0U2Vzc2lvbjsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgc2V0VGFncyh0YWdzKSB7CiAgICB0aGlzLl90YWdzID0gewogICAgICAuLi50aGlzLl90YWdzLAogICAgICAuLi50YWdzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldFRhZyhrZXksIHZhbHVlKSB7CiAgICB0aGlzLl90YWdzID0geyAuLi50aGlzLl90YWdzLCBba2V5XTogdmFsdWUgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIHRoaXMuX2V4dHJhID0gewogICAgICAuLi50aGlzLl9leHRyYSwKICAgICAgLi4uZXh0cmFzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgW2tleV06IGV4dHJhIH07CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRGaW5nZXJwcmludChmaW5nZXJwcmludCkgewogICAgdGhpcy5fZmluZ2VycHJpbnQgPSBmaW5nZXJwcmludDsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldExldmVsKAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICApIHsKICAgIHRoaXMuX2xldmVsID0gbGV2ZWw7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBuYW1lIG9uIHRoZSBzY29wZSBmb3IgZnV0dXJlIGV2ZW50cy4KICAgKi8KICAgc2V0VHJhbnNhY3Rpb25OYW1lKG5hbWUpIHsKICAgIHRoaXMuX3RyYW5zYWN0aW9uTmFtZSA9IG5hbWU7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRDb250ZXh0KGtleSwgY29udGV4dCkgewogICAgaWYgKGNvbnRleHQgPT09IG51bGwpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZQogICAgICBkZWxldGUgdGhpcy5fY29udGV4dHNba2V5XTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX2NvbnRleHRzW2tleV0gPSBjb250ZXh0OwogICAgfQoKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFNldHMgdGhlIFNwYW4gb24gdGhlIHNjb3BlLgogICAqIEBwYXJhbSBzcGFuIFNwYW4KICAgKiBAZGVwcmVjYXRlZCBJbnN0ZWFkIG9mIHNldHRpbmcgYSBzcGFuIG9uIGEgc2NvcGUsIHVzZSBgc3RhcnRTcGFuKClgL2BzdGFydFNwYW5NYW51YWwoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0U3BhbihzcGFuKSB7CiAgICB0aGlzLl9zcGFuID0gc3BhbjsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBTcGFuYCBpZiB0aGVyZSBpcyBvbmUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRBY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNwYW4oKSB7CiAgICByZXR1cm4gdGhpcy5fc3BhbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBUcmFuc2FjdGlvbmAgYXR0YWNoZWQgdG8gdGhlIHNjb3BlIChpZiB0aGVyZSBpcyBvbmUpLgogICAqIEBkZXByZWNhdGVkIFlvdSBzaG91bGQgbm90IHJlbHkgb24gdGhlIHRyYW5zYWN0aW9uLCBidXQganVzdCB1c2UgYHN0YXJ0U3BhbigpYCBBUElzIGluc3RlYWQuCiAgICovCiAgIGdldFRyYW5zYWN0aW9uKCkgewogICAgLy8gT2Z0ZW4sIHRoaXMgc3BhbiAoaWYgaXQgZXhpc3RzIGF0IGFsbCkgd2lsbCBiZSBhIHRyYW5zYWN0aW9uLCBidXQgaXQncyBub3QgZ3VhcmFudGVlZCB0byBiZS4gUmVnYXJkbGVzcywgaXQgd2lsbAogICAgLy8gaGF2ZSBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnRseS1hY3RpdmUgdHJhbnNhY3Rpb24uCiAgICBjb25zdCBzcGFuID0gdGhpcy5fc3BhbjsKICAgIC8vIENhbm5vdCByZXBsYWNlIHdpdGggZ2V0Um9vdFNwYW4gYmVjYXVzZSBnZXRSb290U3BhbiByZXR1cm5zIGEgc3Bhbiwgbm90IGEgdHJhbnNhY3Rpb24KICAgIC8vIEFsc28sIHRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBhbnl3YXkuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHJldHVybiBzcGFuICYmIHNwYW4udHJhbnNhY3Rpb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRTZXNzaW9uKHNlc3Npb24pIHsKICAgIGlmICghc2Vzc2lvbikgewogICAgICBkZWxldGUgdGhpcy5fc2Vzc2lvbjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX3Nlc3Npb24gPSBzZXNzaW9uOwogICAgfQogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0U2Vzc2lvbigpIHsKICAgIHJldHVybiB0aGlzLl9zZXNzaW9uOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgdXBkYXRlKGNhcHR1cmVDb250ZXh0KSB7CiAgICBpZiAoIWNhcHR1cmVDb250ZXh0KSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IHNjb3BlVG9NZXJnZSA9IHR5cGVvZiBjYXB0dXJlQ29udGV4dCA9PT0gJ2Z1bmN0aW9uJyA/IGNhcHR1cmVDb250ZXh0KHRoaXMpIDogY2FwdHVyZUNvbnRleHQ7CgogICAgaWYgKHNjb3BlVG9NZXJnZSBpbnN0YW5jZW9mIFNjb3BlKSB7CiAgICAgIGNvbnN0IHNjb3BlRGF0YSA9IHNjb3BlVG9NZXJnZS5nZXRTY29wZURhdGEoKTsKCiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlRGF0YS50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVEYXRhLmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVEYXRhLmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZURhdGEudXNlciAmJiBPYmplY3Qua2V5cyhzY29wZURhdGEudXNlcikubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5fdXNlciA9IHNjb3BlRGF0YS51c2VyOwogICAgICB9CiAgICAgIGlmIChzY29wZURhdGEubGV2ZWwpIHsKICAgICAgICB0aGlzLl9sZXZlbCA9IHNjb3BlRGF0YS5sZXZlbDsKICAgICAgfQogICAgICBpZiAoc2NvcGVEYXRhLmZpbmdlcnByaW50Lmxlbmd0aCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVEYXRhLmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZVRvTWVyZ2UuZ2V0UmVxdWVzdFNlc3Npb24oKSkgewogICAgICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gc2NvcGVUb01lcmdlLmdldFJlcXVlc3RTZXNzaW9uKCk7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlRGF0YS5wcm9wYWdhdGlvbkNvbnRleHQpIHsKICAgICAgICB0aGlzLl9wcm9wYWdhdGlvbkNvbnRleHQgPSBzY29wZURhdGEucHJvcGFnYXRpb25Db250ZXh0OwogICAgICB9CiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc2NvcGVUb01lcmdlKSkgewogICAgICBjb25zdCBzY29wZUNvbnRleHQgPSBjYXB0dXJlQ29udGV4dCA7CiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlQ29udGV4dC50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVDb250ZXh0LmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVDb250ZXh0LmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZUNvbnRleHQudXNlcikgewogICAgICAgIHRoaXMuX3VzZXIgPSBzY29wZUNvbnRleHQudXNlcjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LmxldmVsKSB7CiAgICAgICAgdGhpcy5fbGV2ZWwgPSBzY29wZUNvbnRleHQubGV2ZWw7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlQ29udGV4dC5maW5nZXJwcmludCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVDb250ZXh0LmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZUNvbnRleHQucmVxdWVzdFNlc3Npb24pIHsKICAgICAgICB0aGlzLl9yZXF1ZXN0U2Vzc2lvbiA9IHNjb3BlQ29udGV4dC5yZXF1ZXN0U2Vzc2lvbjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LnByb3BhZ2F0aW9uQ29udGV4dCkgewogICAgICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IHNjb3BlQ29udGV4dC5wcm9wYWdhdGlvbkNvbnRleHQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGNsZWFyKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX3RhZ3MgPSB7fTsKICAgIHRoaXMuX2V4dHJhID0ge307CiAgICB0aGlzLl91c2VyID0ge307CiAgICB0aGlzLl9jb250ZXh0cyA9IHt9OwogICAgdGhpcy5fbGV2ZWwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl90cmFuc2FjdGlvbk5hbWUgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9maW5nZXJwcmludCA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gdW5kZWZpbmVkOwogICAgdGhpcy5fc3BhbiA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3Nlc3Npb24gPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgdGhpcy5fYXR0YWNobWVudHMgPSBbXTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEJyZWFkY3J1bWIoYnJlYWRjcnVtYiwgbWF4QnJlYWRjcnVtYnMpIHsKICAgIGNvbnN0IG1heENydW1icyA9IHR5cGVvZiBtYXhCcmVhZGNydW1icyA9PT0gJ251bWJlcicgPyBtYXhCcmVhZGNydW1icyA6IERFRkFVTFRfTUFYX0JSRUFEQ1JVTUJTOwoKICAgIC8vIE5vIGRhdGEgaGFzIGJlZW4gY2hhbmdlZCwgc28gZG9uJ3Qgbm90aWZ5IHNjb3BlIGxpc3RlbmVycwogICAgaWYgKG1heENydW1icyA8PSAwKSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWIgPSB7CiAgICAgIHRpbWVzdGFtcDogZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpLAogICAgICAuLi5icmVhZGNydW1iLAogICAgfTsKCiAgICBjb25zdCBicmVhZGNydW1icyA9IHRoaXMuX2JyZWFkY3J1bWJzOwogICAgYnJlYWRjcnVtYnMucHVzaChtZXJnZWRCcmVhZGNydW1iKTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnMubGVuZ3RoID4gbWF4Q3J1bWJzID8gYnJlYWRjcnVtYnMuc2xpY2UoLW1heENydW1icykgOiBicmVhZGNydW1iczsKCiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwoKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0TGFzdEJyZWFkY3J1bWIoKSB7CiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnNbdGhpcy5fYnJlYWRjcnVtYnMubGVuZ3RoIC0gMV07CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBjbGVhckJyZWFkY3J1bWJzKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEF0dGFjaG1lbnQoYXR0YWNobWVudCkgewogICAgdGhpcy5fYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYGdldFNjb3BlRGF0YSgpYCBpbnN0ZWFkLgogICAqLwogICBnZXRBdHRhY2htZW50cygpIHsKICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNjb3BlRGF0YSgpOwoKICAgIHJldHVybiBkYXRhLmF0dGFjaG1lbnRzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgY2xlYXJBdHRhY2htZW50cygpIHsKICAgIHRoaXMuX2F0dGFjaG1lbnRzID0gW107CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKiBAaW5oZXJpdERvYyAqLwogICBnZXRTY29wZURhdGEoKSB7CiAgICBjb25zdCB7CiAgICAgIF9icmVhZGNydW1icywKICAgICAgX2F0dGFjaG1lbnRzLAogICAgICBfY29udGV4dHMsCiAgICAgIF90YWdzLAogICAgICBfZXh0cmEsCiAgICAgIF91c2VyLAogICAgICBfbGV2ZWwsCiAgICAgIF9maW5nZXJwcmludCwKICAgICAgX2V2ZW50UHJvY2Vzc29ycywKICAgICAgX3Byb3BhZ2F0aW9uQ29udGV4dCwKICAgICAgX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgICAgX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgX3NwYW4sCiAgICB9ID0gdGhpczsKCiAgICByZXR1cm4gewogICAgICBicmVhZGNydW1iczogX2JyZWFkY3J1bWJzLAogICAgICBhdHRhY2htZW50czogX2F0dGFjaG1lbnRzLAogICAgICBjb250ZXh0czogX2NvbnRleHRzLAogICAgICB0YWdzOiBfdGFncywKICAgICAgZXh0cmE6IF9leHRyYSwKICAgICAgdXNlcjogX3VzZXIsCiAgICAgIGxldmVsOiBfbGV2ZWwsCiAgICAgIGZpbmdlcnByaW50OiBfZmluZ2VycHJpbnQgfHwgW10sCiAgICAgIGV2ZW50UHJvY2Vzc29yczogX2V2ZW50UHJvY2Vzc29ycywKICAgICAgcHJvcGFnYXRpb25Db250ZXh0OiBfcHJvcGFnYXRpb25Db250ZXh0LAogICAgICBzZGtQcm9jZXNzaW5nTWV0YWRhdGE6IF9zZGtQcm9jZXNzaW5nTWV0YWRhdGEsCiAgICAgIHRyYW5zYWN0aW9uTmFtZTogX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgc3BhbjogX3NwYW4sCiAgICB9OwogIH0KCiAgLyoqCiAgICogQXBwbGllcyBkYXRhIGZyb20gdGhlIHNjb3BlIHRvIHRoZSBldmVudCBhbmQgcnVucyBhbGwgZXZlbnQgcHJvY2Vzc29ycyBvbiBpdC4KICAgKgogICAqIEBwYXJhbSBldmVudCBFdmVudAogICAqIEBwYXJhbSBoaW50IE9iamVjdCBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiwgZm9yIHVzZSBieSB0aGUgZXZlbnQgcHJvY2Vzc29ycy4KICAgKiBAaGlkZGVuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBhcHBseVNjb3BlRGF0YVRvRXZlbnQoKWAgZGlyZWN0bHkKICAgKi8KICAgYXBwbHlUb0V2ZW50KAogICAgZXZlbnQsCiAgICBoaW50ID0ge30sCiAgICBhZGRpdGlvbmFsRXZlbnRQcm9jZXNzb3JzID0gW10sCiAgKSB7CiAgICBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIHRoaXMuZ2V0U2NvcGVEYXRhKCkpOwoKICAgIC8vIFRPRE8gKHY4KTogVXBkYXRlIHRoaXMgb3JkZXIgdG8gYmU6IEdsb2JhbCA+IENsaWVudCA+IFNjb3BlCiAgICBjb25zdCBldmVudFByb2Nlc3NvcnMgPSBbCiAgICAgIC4uLmFkZGl0aW9uYWxFdmVudFByb2Nlc3NvcnMsCiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAuLi5nZXRHbG9iYWxFdmVudFByb2Nlc3NvcnMoKSwKICAgICAgLi4udGhpcy5fZXZlbnRQcm9jZXNzb3JzLAogICAgXTsKCiAgICByZXR1cm4gbm90aWZ5RXZlbnRQcm9jZXNzb3JzKGV2ZW50UHJvY2Vzc29ycywgZXZlbnQsIGhpbnQpOwogIH0KCiAgLyoqCiAgICogQWRkIGRhdGEgd2hpY2ggd2lsbCBiZSBhY2Nlc3NpYmxlIGR1cmluZyBldmVudCBwcm9jZXNzaW5nIGJ1dCB3b24ndCBnZXQgc2VudCB0byBTZW50cnkKICAgKi8KICAgc2V0U0RLUHJvY2Vzc2luZ01ldGFkYXRhKG5ld0RhdGEpIHsKICAgIHRoaXMuX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSA9IHsgLi4udGhpcy5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhLCAuLi5uZXdEYXRhIH07CgogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRQcm9wYWdhdGlvbkNvbnRleHQoY29udGV4dCkgewogICAgdGhpcy5fcHJvcGFnYXRpb25Db250ZXh0ID0gY29udGV4dDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UHJvcGFnYXRpb25Db250ZXh0KCkgewogICAgcmV0dXJuIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYW4gZXhjZXB0aW9uIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIGV4Y2VwdGlvbiBUaGUgZXhjZXB0aW9uIHRvIGNhcHR1cmUuCiAgICogQHBhcmFtIGhpbnQgT3B0aW5hbCBhZGRpdGlvbmFsIGRhdGEgdG8gYXR0YWNoIHRvIHRoZSBTZW50cnkgZXZlbnQuCiAgICogQHJldHVybnMgdGhlIGlkIG9mIHRoZSBjYXB0dXJlZCBTZW50cnkgZXZlbnQuCiAgICovCiAgIGNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CgogICAgaWYgKCF0aGlzLl9jbGllbnQpIHsKICAgICAgbG9nZ2VyLndhcm4oJ05vIGNsaWVudCBjb25maWd1cmVkIG9uIHNjb3BlIC0gd2lsbCBub3QgY2FwdHVyZSBleGNlcHRpb24hJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcignU2VudHJ5IHN5bnRoZXRpY0V4Y2VwdGlvbicpOwoKICAgIHRoaXMuX2NsaWVudC5jYXB0dXJlRXhjZXB0aW9uKAogICAgICBleGNlcHRpb24sCiAgICAgIHsKICAgICAgICBvcmlnaW5hbEV4Y2VwdGlvbjogZXhjZXB0aW9uLAogICAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgICAuLi5oaW50LAogICAgICAgIGV2ZW50X2lkOiBldmVudElkLAogICAgICB9LAogICAgICB0aGlzLAogICAgKTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYSBtZXNzYWdlIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gY2FwdHVyZS4KICAgKiBAcGFyYW0gbGV2ZWwgQW4gb3B0aW9uYWwgc2V2ZXJpdHkgbGV2ZWwgdG8gcmVwb3J0IHRoZSBtZXNzYWdlIHdpdGguCiAgICogQHBhcmFtIGhpbnQgT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhIHRvIGF0dGFjaCB0byB0aGUgU2VudHJ5IGV2ZW50LgogICAqIEByZXR1cm5zIHRoZSBpZCBvZiB0aGUgY2FwdHVyZWQgbWVzc2FnZS4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIG1lc3NhZ2UhJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcihtZXNzYWdlKTsKCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZU1lc3NhZ2UoCiAgICAgIG1lc3NhZ2UsCiAgICAgIGxldmVsLAogICAgICB7CiAgICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgICAgc3ludGhldGljRXhjZXB0aW9uLAogICAgICAgIC4uLmhpbnQsCiAgICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICAgIH0sCiAgICAgIHRoaXMsCiAgICApOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogQ2FwdHVyZXMgYSBtYW51YWxseSBjcmVhdGVkIGV2ZW50IGZvciB0aGlzIHNjb3BlIGFuZCBzZW5kcyBpdCB0byBTZW50cnkuCiAgICoKICAgKiBAcGFyYW0gZXhjZXB0aW9uIFRoZSBldmVudCB0byBjYXB0dXJlLgogICAqIEBwYXJhbSBoaW50IE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YSB0byBhdHRhY2ggdG8gdGhlIFNlbnRyeSBldmVudC4KICAgKiBAcmV0dXJucyB0aGUgaWQgb2YgdGhlIGNhcHR1cmVkIGV2ZW50LgogICAqLwogICBjYXB0dXJlRXZlbnQoZXZlbnQsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50IScpOwogICAgICByZXR1cm4gZXZlbnRJZDsKICAgIH0KCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0sIHRoaXMpOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogVGhpcyB3aWxsIGJlIGNhbGxlZCBvbiBldmVyeSBzZXQgY2FsbC4KICAgKi8KICAgX25vdGlmeVNjb3BlTGlzdGVuZXJzKCkgewogICAgLy8gV2UgbmVlZCB0aGlzIGNoZWNrIGZvciB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgdG8gYmUgYWJsZSB0byB3b3JrIG9uIHNjb3BlIGR1cmluZyB1cGRhdGVzCiAgICAvLyBJZiB0aGlzIGNoZWNrIGlzIG5vdCBoZXJlIHdlJ2xsIHByb2R1Y2UgZW5kbGVzcyByZWN1cnNpb24gd2hlbiBzb21ldGhpbmcgaXMgZG9uZSB3aXRoIHRoZSBzY29wZQogICAgLy8gZHVyaW5nIHRoZSBjYWxsYmFjay4KICAgIGlmICghdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzKSB7CiAgICAgIHRoaXMuX25vdGlmeWluZ0xpc3RlbmVycyA9IHRydWU7CiAgICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzLmZvckVhY2goY2FsbGJhY2sgPT4gewogICAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgICB9KTsKICAgICAgdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzID0gZmFsc2U7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBnZW5lcmF0ZVByb3BhZ2F0aW9uQ29udGV4dCgpIHsKICByZXR1cm4gewogICAgdHJhY2VJZDogdXVpZDQoKSwKICAgIHNwYW5JZDogdXVpZDQoKS5zdWJzdHJpbmcoMTYpLAogIH07Cn0KCmNvbnN0IFNES19WRVJTSU9OID0gJzcuMTIwLjQnOwoKLyoqCiAqIEFQSSBjb21wYXRpYmlsaXR5IHZlcnNpb24gb2YgdGhpcyBodWIuCiAqCiAqIFdBUk5JTkc6IFRoaXMgbnVtYmVyIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB3aGVuIHRoZSBnbG9iYWwgaW50ZXJmYWNlCiAqIGNoYW5nZXMgYW5kIG5ldyBtZXRob2RzIGFyZSBpbnRyb2R1Y2VkLgogKgogKiBAaGlkZGVuCiAqLwpjb25zdCBBUElfVkVSU0lPTiA9IHBhcnNlRmxvYXQoU0RLX1ZFUlNJT04pOwoKLyoqCiAqIERlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuIENhbiBiZSBvdmVyd3JpdHRlbgogKiB3aXRoIHtAbGluayBPcHRpb25zLm1heEJyZWFkY3J1bWJzfS4KICovCmNvbnN0IERFRkFVTFRfQlJFQURDUlVNQlMgPSAxMDA7CgovKioKICogQGRlcHJlY2F0ZWQgVGhlIGBIdWJgIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDggb2YgdGhlIFNESyBpbiBmYXZvdXIgb2YgYFNjb3BlYCBhbmQgYENsaWVudGAgb2JqZWN0cy4KICoKICogSWYgeW91IHByZXZpb3VzbHkgdXNlZCB0aGUgYEh1YmAgY2xhc3MgZGlyZWN0bHksIHJlcGxhY2UgaXQgd2l0aCBgU2NvcGVgIGFuZCBgQ2xpZW50YCBvYmplY3RzLiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNdWx0aXBsZSBTZW50cnkgSW5zdGFuY2VzXShodHRwczovL2RvY3Muc2VudHJ5LmlvL3BsYXRmb3Jtcy9qYXZhc2NyaXB0L2Jlc3QtcHJhY3RpY2VzL211bHRpcGxlLXNlbnRyeS1pbnN0YW5jZXMvKQogKiAtIFtCcm93c2VyIEV4dGVuc2lvbnNdKGh0dHBzOi8vZG9jcy5zZW50cnkuaW8vcGxhdGZvcm1zL2phdmFzY3JpcHQvYmVzdC1wcmFjdGljZXMvYnJvd3Nlci1leHRlbnNpb25zLykKICoKICogU29tZSBvZiBvdXIgQVBJcyBhcmUgdHlwZWQgd2l0aCB0aGUgSHViIGNsYXNzIGluc3RlYWQgb2YgdGhlIGludGVyZmFjZSAoZS5nLiBgZ2V0Q3VycmVudEh1YmApLiBNb3N0IG9mIHRoZW0gYXJlIGRlcHJlY2F0ZWQKICogdGhlbXNlbHZlcyBhbmQgd2lsbCBhbHNvIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA4LiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNaWdyYXRpb24gR3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvYmxvYi9kZXZlbG9wL01JR1JBVElPTi5tZCNkZXByZWNhdGUtaHViKQogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmNsYXNzIEh1YiAgewogIC8qKiBJcyBhIHtAbGluayBMYXllcn1bXSBjb250YWluaW5nIHRoZSBjbGllbnQgYW5kIHNjb3BlICovCgogIC8qKiBDb250YWlucyB0aGUgbGFzdCBldmVudCBpZCBvZiBhIGNhcHR1cmVkIGV2ZW50LiAgKi8KCiAgLyoqCiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgaHViLCB3aWxsIHB1c2ggb25lIHtAbGluayBMYXllcn0gaW50byB0aGUKICAgKiBpbnRlcm5hbCBzdGFjayBvbiBjcmVhdGlvbi4KICAgKgogICAqIEBwYXJhbSBjbGllbnQgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gc2NvcGUgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gdmVyc2lvbiBudW1iZXIsIGhpZ2hlciBudW1iZXIgbWVhbnMgaGlnaGVyIHByaW9yaXR5LgogICAqCiAgICogQGRlcHJlY2F0ZWQgSW5zdGFudGlhdGlvbiBvZiBIdWIgb2JqZWN0cyBpcyBkZXByZWNhdGVkIGFuZCB0aGUgY29uc3RydWN0b3Igd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gOCBvZiB0aGUgU0RLLgogICAqCiAgICogSWYgeW91IGFyZSBjdXJyZW50bHkgdXNpbmcgdGhlIEh1YiBmb3IgbXVsdGktY2xpZW50IHVzZSBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgaHViID0gbmV3IEh1YigpOwogICAqIGh1Yi5iaW5kQ2xpZW50KGNsaWVudCk7CiAgICogbWFrZU1haW4oaHViKQogICAqIGBgYAogICAqCiAgICogaW5zdGVhZCBpbml0aWFsaXplIHRoZSBjbGllbnQgYXMgZm9sbG93czoKICAgKgogICAqIGBgYAogICAqIC8vIE5FVwogICAqIFNlbnRyeS53aXRoSXNvbGF0aW9uU2NvcGUoKCkgPT4gewogICAqICAgIFNlbnRyeS5zZXRDdXJyZW50Q2xpZW50KGNsaWVudCk7CiAgICogICAgY2xpZW50LmluaXQoKTsKICAgKiB9KTsKICAgKiBgYGAKICAgKgogICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIEh1YiB0byBjYXB0dXJlIGV2ZW50cyBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpOwogICAqIGNvbnN0IGh1YiA9IG5ldyBIdWIoY2xpZW50KTsKICAgKiBodWIuY2FwdHVyZUV4Y2VwdGlvbigpCiAgICogYGBgCiAgICoKICAgKiBpbnN0ZWFkIGNhcHR1cmUgaXNvbGF0ZWQgZXZlbnRzIGFzIGZvbGxvd3M6CiAgICoKICAgKiBgYGAKICAgKiAvLyBORVcKICAgKiBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KCk7CiAgICogY29uc3Qgc2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgKiBzY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgKiBzY29wZS5jYXB0dXJlRXhjZXB0aW9uKCk7CiAgICogYGBgCiAgICovCiAgIGNvbnN0cnVjdG9yKAogICAgY2xpZW50LAogICAgc2NvcGUsCiAgICBpc29sYXRpb25TY29wZSwKICAgICAgX3ZlcnNpb24gPSBBUElfVkVSU0lPTiwKICApIHt0aGlzLl92ZXJzaW9uID0gX3ZlcnNpb247CiAgICBsZXQgYXNzaWduZWRTY29wZTsKICAgIGlmICghc2NvcGUpIHsKICAgICAgYXNzaWduZWRTY29wZSA9IG5ldyBTY29wZSgpOwogICAgICBhc3NpZ25lZFNjb3BlLnNldENsaWVudChjbGllbnQpOwogICAgfSBlbHNlIHsKICAgICAgYXNzaWduZWRTY29wZSA9IHNjb3BlOwogICAgfQoKICAgIGxldCBhc3NpZ25lZElzb2xhdGlvblNjb3BlOwogICAgaWYgKCFpc29sYXRpb25TY29wZSkgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gbmV3IFNjb3BlKCk7CiAgICAgIGFzc2lnbmVkSXNvbGF0aW9uU2NvcGUuc2V0Q2xpZW50KGNsaWVudCk7CiAgICB9IGVsc2UgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gaXNvbGF0aW9uU2NvcGU7CiAgICB9CgogICAgdGhpcy5fc3RhY2sgPSBbeyBzY29wZTogYXNzaWduZWRTY29wZSB9XTsKCiAgICBpZiAoY2xpZW50KSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICB0aGlzLmJpbmRDbGllbnQoY2xpZW50KTsKICAgIH0KCiAgICB0aGlzLl9pc29sYXRpb25TY29wZSA9IGFzc2lnbmVkSXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBDaGVja3MgaWYgdGhpcyBodWIncyB2ZXJzaW9uIGlzIG9sZGVyIHRoYW4gdGhlIGdpdmVuIHZlcnNpb24uCiAgICoKICAgKiBAcGFyYW0gdmVyc2lvbiBBIHZlcnNpb24gbnVtYmVyIHRvIGNvbXBhcmUgdG8uCiAgICogQHJldHVybiBUcnVlIGlmIHRoZSBnaXZlbiB2ZXJzaW9uIGlzIG5ld2VyOyBvdGhlcndpc2UgZmFsc2UuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgaXNPbGRlclRoYW4odmVyc2lvbikgewogICAgcmV0dXJuIHRoaXMuX3ZlcnNpb24gPCB2ZXJzaW9uOwogIH0KCiAgLyoqCiAgICogVGhpcyBiaW5kcyB0aGUgZ2l2ZW4gY2xpZW50IHRvIHRoZSBjdXJyZW50IHNjb3BlLgogICAqIEBwYXJhbSBjbGllbnQgQW4gU0RLIGNsaWVudCAoY2xpZW50KSBpbnN0YW5jZS4KICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgaW5pdEFuZEJpbmQoKWAgZGlyZWN0bHksIG9yIGBzZXRDdXJyZW50Q2xpZW50KClgIGFuZC9vciBgY2xpZW50LmluaXQoKWAgaW5zdGVhZC4KICAgKi8KICAgYmluZENsaWVudChjbGllbnQpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgdG9wID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgdG9wLmNsaWVudCA9IGNsaWVudDsKICAgIHRvcC5zY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKGNsaWVudCAmJiBjbGllbnQuc2V0dXBJbnRlZ3JhdGlvbnMpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIGNsaWVudC5zZXR1cEludGVncmF0aW9ucygpOwogICAgfQogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwdXNoU2NvcGUoKSB7CiAgICAvLyBXZSB3YW50IHRvIGNsb25lIHRoZSBjb250ZW50IG9mIHByZXYgc2NvcGUKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldFNjb3BlKCkuY2xvbmUoKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTdGFjaygpLnB1c2goewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY2xpZW50OiB0aGlzLmdldENsaWVudCgpLAogICAgICBzY29wZSwKICAgIH0pOwogICAgcmV0dXJuIHNjb3BlOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwb3BTY29wZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKHRoaXMuZ2V0U3RhY2soKS5sZW5ndGggPD0gMSkgcmV0dXJuIGZhbHNlOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gISF0aGlzLmdldFN0YWNrKCkucG9wKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkud2l0aFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIHdpdGhTY29wZShjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBzY29wZSA9IHRoaXMucHVzaFNjb3BlKCk7CgogICAgbGV0IG1heWJlUHJvbWlzZVJlc3VsdDsKICAgIHRyeSB7CiAgICAgIG1heWJlUHJvbWlzZVJlc3VsdCA9IGNhbGxiYWNrKHNjb3BlKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgdGhyb3cgZTsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZShtYXliZVByb21pc2VSZXN1bHQpKSB7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBpc1RoZW5hYmxlIHJldHVybnMgdGhlIHdyb25nIHR5cGUKICAgICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdC50aGVuKAogICAgICAgIHJlcyA9PiB7CiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfSwKICAgICAgICBlID0+IHsKICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAgICAgdGhpcy5wb3BTY29wZSgpOwogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9LAogICAgICApOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5wb3BTY29wZSgpOwogICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5nZXRDbGllbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0Q2xpZW50KCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLmNsaWVudCA7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBvZiB0aGUgdG9wIHN0YWNrLgogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0Q3VycmVudFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNjb3BlKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLnNjb3BlOwogIH0KCiAgLyoqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0SXNvbGF0aW9uU2NvcGUoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0SXNvbGF0aW9uU2NvcGUoKSB7CiAgICByZXR1cm4gdGhpcy5faXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBzdGFjayBmb3IgZG9tYWlucyBvciB0aGUgcHJvY2Vzcy4KICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgZ2V0U3RhY2soKSB7CiAgICByZXR1cm4gdGhpcy5fc3RhY2s7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSB0b3Btb3N0IHNjb3BlIGxheWVyIGluIHRoZSBvcmRlciBkb21haW4gPiBsb2NhbCA+IHByb2Nlc3MuCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGdldFN0YWNrVG9wKCkgewogICAgcmV0dXJuIHRoaXMuX3N0YWNrW3RoaXMuX3N0YWNrLmxlbmd0aCAtIDFdOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV4Y2VwdGlvbihleGNlcHRpb24sIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSAodGhpcy5fbGFzdEV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKSk7CiAgICBjb25zdCBzeW50aGV0aWNFeGNlcHRpb24gPSBuZXcgRXJyb3IoJ1NlbnRyeSBzeW50aGV0aWNFeGNlcHRpb24nKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLmNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCB7CiAgICAgIG9yaWdpbmFsRXhjZXB0aW9uOiBleGNlcHRpb24sCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgIGBTZW50cnkuY2FwdHVyZU1lc3NhZ2UoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UoCiAgICBtZXNzYWdlLAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICAgIGhpbnQsCiAgKSB7CiAgICBjb25zdCBldmVudElkID0gKHRoaXMuX2xhc3RFdmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCkpOwogICAgY29uc3Qgc3ludGhldGljRXhjZXB0aW9uID0gbmV3IEVycm9yKG1lc3NhZ2UpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIHsKICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5jYXB0dXJlRXZlbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV2ZW50KGV2ZW50LCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CiAgICBpZiAoIWV2ZW50LnR5cGUpIHsKICAgICAgdGhpcy5fbGFzdEV2ZW50SWQgPSBldmVudElkOwogICAgfQogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0pOwogICAgcmV0dXJuIGV2ZW50SWQ7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGxhc3RFdmVudElkKCkgewogICAgcmV0dXJuIHRoaXMuX2xhc3RFdmVudElkOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmFkZEJyZWFkY3J1bWIoKWAgaW5zdGVhZC4KICAgKi8KICAgYWRkQnJlYWRjcnVtYihicmVhZGNydW1iLCBoaW50KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwoKICAgIGlmICghY2xpZW50KSByZXR1cm47CgogICAgY29uc3QgeyBiZWZvcmVCcmVhZGNydW1iID0gbnVsbCwgbWF4QnJlYWRjcnVtYnMgPSBERUZBVUxUX0JSRUFEQ1JVTUJTIH0gPQogICAgICAoY2xpZW50LmdldE9wdGlvbnMgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgaWYgKG1heEJyZWFkY3J1bWJzIDw9IDApIHJldHVybjsKCiAgICBjb25zdCB0aW1lc3RhbXAgPSBkYXRlVGltZXN0YW1wSW5TZWNvbmRzKCk7CiAgICBjb25zdCBtZXJnZWRCcmVhZGNydW1iID0geyB0aW1lc3RhbXAsIC4uLmJyZWFkY3J1bWIgfTsKICAgIGNvbnN0IGZpbmFsQnJlYWRjcnVtYiA9IGJlZm9yZUJyZWFkY3J1bWIKICAgICAgPyAoY29uc29sZVNhbmRib3goKCkgPT4gYmVmb3JlQnJlYWRjcnVtYihtZXJnZWRCcmVhZGNydW1iLCBoaW50KSkgKQogICAgICA6IG1lcmdlZEJyZWFkY3J1bWI7CgogICAgaWYgKGZpbmFsQnJlYWRjcnVtYiA9PT0gbnVsbCkgcmV0dXJuOwoKICAgIGlmIChjbGllbnQuZW1pdCkgewogICAgICBjbGllbnQuZW1pdCgnYmVmb3JlQWRkQnJlYWRjcnVtYicsIGZpbmFsQnJlYWRjcnVtYiwgaGludCk7CiAgICB9CgogICAgLy8gVE9ETyh2OCk6IEkga25vdyB0aGlzIGNvbW1lbnQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgYmVjYXVzZSB0aGUgaHViIHdpbGwgYmUgZGVwcmVjYXRlZCBidXQgSSBzdGlsbCB3YW50ZWQgdG8KICAgIC8vIHdyaXRlIGl0IGRvd24uIEluIHRoZW9yeSwgd2Ugd291bGQgaGF2ZSB0byBhZGQgdGhlIGJyZWFkY3J1bWJzIHRvIHRoZSBpc29sYXRpb24gc2NvcGUgaGVyZSwgaG93ZXZlciwgdGhhdCB3b3VsZAogICAgLy8gZHVwbGljYXRlIGFsbCBvZiB0aGUgYnJlYWRjcnVtYnMuIFRoZXJlIHdhcyB0aGUgcG9zc2liaWxpdHkgb2YgYWRkaW5nIGJyZWFkY3J1bWJzIHRvIGJvdGgsIHRoZSBpc29sYXRpb24gc2NvcGUKICAgIC8vIGFuZCB0aGUgbm9ybWFsIHNjb3BlLCBhbmQgZGVkdXBsaWNhdGluZyBpdCBkb3duIHRoZSBsaW5lIGluIHRoZSBldmVudCBwcm9jZXNzaW5nIHBpcGVsaW5lLiBIb3dldmVyLCB0aGF0IHdvdWxkCiAgICAvLyBoYXZlIGJlZW4gdmVyeSBmcmFnaWxlLCBiZWNhdXNlIHRoZSBicmVhZGNydW1iIG9iamVjdHMgd291bGQgaGF2ZSBuZWVkZWQgdG8ga2VlcCB0aGVpciBpZGVudGl0eSBhbGwgdGhyb3VnaG91dAogICAgLy8gdGhlIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUuCiAgICAvLyBJbiB0aGUgbmV3IGltcGxlbWVudGF0aW9uLCB0aGUgdG9wIGxldmVsIGBTZW50cnkuYWRkQnJlYWRjcnVtYigpYCBzaG91bGQgT05MWSB3cml0ZSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgoKICAgIHNjb3BlLmFkZEJyZWFkY3J1bWIoZmluYWxCcmVhZGNydW1iLCBtYXhCcmVhZGNydW1icyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldFVzZXIoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VXNlcih1c2VyKSB7CiAgICAvLyBUT0RPKHY4KTogVGhlIHRvcCBsZXZlbCBgU2VudHJ5LnNldFVzZXIoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldFVzZXIodXNlcik7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRVc2VyKHVzZXIpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWdzKClgIGluc3RlYWQuCiAgICovCiAgIHNldFRhZ3ModGFncykgewogICAgLy8gVE9ETyh2OCk6IFRoZSB0b3AgbGV2ZWwgYFNlbnRyeS5zZXRUYWdzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWdzKHRhZ3MpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0VGFncyh0YWdzKTsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuc2V0RXh0cmFzKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmFzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRFeHRyYXMoZXh0cmFzKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldEV4dHJhcyhleHRyYXMpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWcoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VGFnKGtleSwgdmFsdWUpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0VGFnKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldEV4dHJhKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmEoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldEV4dHJhKGtleSwgZXh0cmEpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0RXh0cmEoa2V5LCBleHRyYSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldENvbnRleHQoKWAgaW5zdGVhZC4KICAgKi8KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICBzZXRDb250ZXh0KG5hbWUsIGNvbnRleHQpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0Q29udGV4dCgpYCBmdW5jdGlvbiBzaG91bGQgd3JpdGUgT05MWSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuc2V0Q29udGV4dChuYW1lLCBjb250ZXh0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldENvbnRleHQobmFtZSwgY29udGV4dCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRTY29wZSgpYCBkaXJlY3RseS4KICAgKi8KICAgY29uZmlndXJlU2NvcGUoY2FsbGJhY2spIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CiAgICBpZiAoY2xpZW50KSB7CiAgICAgIGNhbGxiYWNrKHNjb3BlKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgIHJ1bihjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBvbGRIdWIgPSBtYWtlTWFpbih0aGlzKTsKICAgIHRyeSB7CiAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgfSBmaW5hbGx5IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIG1ha2VNYWluKG9sZEh1Yik7CiAgICB9CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmdldENsaWVudCgpLmdldEludGVncmF0aW9uQnlOYW1lKClgIGluc3RlYWQuCiAgICovCiAgIGdldEludGVncmF0aW9uKGludGVncmF0aW9uKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KCk7CiAgICBpZiAoIWNsaWVudCkgcmV0dXJuIG51bGw7CiAgICB0cnkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgcmV0dXJuIGNsaWVudC5nZXRJbnRlZ3JhdGlvbihpbnRlZ3JhdGlvbik7CiAgICB9IGNhdGNoIChfb08pIHsKICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYENhbm5vdCByZXRyaWV2ZSBpbnRlZ3JhdGlvbiAke2ludGVncmF0aW9uLmlkfSBmcm9tIHRoZSBjdXJyZW50IEh1YmApOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIC8qKgogICAqIFN0YXJ0cyBhIG5ldyBgVHJhbnNhY3Rpb25gIGFuZCByZXR1cm5zIGl0LiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCB0byBtYW51YWwgdHJhY2luZyBpbnN0cnVtZW50YXRpb24uCiAgICoKICAgKiBBIHRyZWUgc3RydWN0dXJlIGNhbiBiZSBidWlsdCBieSBhZGRpbmcgY2hpbGQgc3BhbnMgdG8gdGhlIHRyYW5zYWN0aW9uLCBhbmQgY2hpbGQgc3BhbnMgdG8gb3RoZXIgc3BhbnMuIFRvIHN0YXJ0IGEKICAgKiBuZXcgY2hpbGQgc3BhbiB3aXRoaW4gdGhlIHRyYW5zYWN0aW9uIG9yIGFueSBzcGFuLCBjYWxsIHRoZSByZXNwZWN0aXZlIGAuc3RhcnRDaGlsZCgpYCBtZXRob2QuCiAgICoKICAgKiBFdmVyeSBjaGlsZCBzcGFuIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCwgb3RoZXJ3aXNlIHRoZSB1bmZpbmlzaGVkIHNwYW5zIGFyZSBkaXNjYXJkZWQuCiAgICoKICAgKiBUaGUgdHJhbnNhY3Rpb24gbXVzdCBiZSBmaW5pc2hlZCB3aXRoIGEgY2FsbCB0byBpdHMgYC5lbmQoKWAgbWV0aG9kLCBhdCB3aGljaCBwb2ludCB0aGUgdHJhbnNhY3Rpb24gd2l0aCBhbGwgaXRzCiAgICogZmluaXNoZWQgY2hpbGQgc3BhbnMgd2lsbCBiZSBzZW50IHRvIFNlbnRyeS4KICAgKgogICAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnRpZXMgb2YgdGhlIG5ldyBgVHJhbnNhY3Rpb25gLgogICAqIEBwYXJhbSBjdXN0b21TYW1wbGluZ0NvbnRleHQgSW5mb3JtYXRpb24gZ2l2ZW4gdG8gdGhlIHRyYW5zYWN0aW9uIHNhbXBsaW5nIGZ1bmN0aW9uIChhbG9uZyB3aXRoIGNvbnRleHQtZGVwZW5kZW50CiAgICogZGVmYXVsdCB2YWx1ZXMpLiBTZWUge0BsaW5rIE9wdGlvbnMudHJhY2VzU2FtcGxlcn0uCiAgICoKICAgKiBAcmV0dXJucyBUaGUgdHJhbnNhY3Rpb24gd2hpY2ggd2FzIGp1c3Qgc3RhcnRlZAogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzdGFydFNwYW4oKWAsIGBzdGFydFNwYW5NYW51YWwoKWAgb3IgYHN0YXJ0SW5hY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0VHJhbnNhY3Rpb24oY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KSB7CiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jYWxsRXh0ZW5zaW9uTWV0aG9kKCdzdGFydFRyYW5zYWN0aW9uJywgY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KTsKCiAgICBpZiAoREVCVUdfQlVJTEQgJiYgIXJlc3VsdCkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoKTsKICAgICAgaWYgKCFjbGllbnQpIHsKICAgICAgICBsb2dnZXIud2FybigKICAgICAgICAgICJUcmFjaW5nIGV4dGVuc2lvbiAnc3RhcnRUcmFuc2FjdGlvbicgaXMgbWlzc2luZy4gWW91IHNob3VsZCAnaW5pdCcgdGhlIFNESyBiZWZvcmUgY2FsbGluZyAnc3RhcnRUcmFuc2FjdGlvbiciLAogICAgICAgICk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbG9nZ2VyLndhcm4oYFRyYWNpbmcgZXh0ZW5zaW9uICdzdGFydFRyYW5zYWN0aW9uJyBoYXMgbm90IGJlZW4gYWRkZWQuIENhbGwgJ2FkZFRyYWNpbmdFeHRlbnNpb25zJyBiZWZvcmUgY2FsbGluZyAnaW5pdCc6ClNlbnRyeS5hZGRUcmFjaW5nRXh0ZW5zaW9ucygpOwpTZW50cnkuaW5pdCh7Li4ufSk7CmApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzcGFuVG9UcmFjZUhlYWRlcigpYCBpbnN0ZWFkLgogICAqLwogICB0cmFjZUhlYWRlcnMoKSB7CiAgICByZXR1cm4gdGhpcy5fY2FsbEV4dGVuc2lvbk1ldGhvZCgndHJhY2VIZWFkZXJzJyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIHRvcCBsZXZlbCBgY2FwdHVyZVNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGNhcHR1cmVTZXNzaW9uKGVuZFNlc3Npb24gPSBmYWxzZSkgewogICAgLy8gYm90aCBzZW5kIHRoZSB1cGRhdGUgYW5kIHB1bGwgdGhlIHNlc3Npb24gZnJvbSB0aGUgc2NvcGUKICAgIGlmIChlbmRTZXNzaW9uKSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICByZXR1cm4gdGhpcy5lbmRTZXNzaW9uKCk7CiAgICB9CgogICAgLy8gb25seSBzZW5kIHRoZSB1cGRhdGUKICAgIHRoaXMuX3NlbmRTZXNzaW9uVXBkYXRlKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSB0b3AgbGV2ZWwgYGVuZFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGVuZFNlc3Npb24oKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGxheWVyID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3Qgc2NvcGUgPSBsYXllci5zY29wZTsKICAgIGNvbnN0IHNlc3Npb24gPSBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoc2Vzc2lvbikgewogICAgICBjbG9zZVNlc3Npb24oc2Vzc2lvbik7CiAgICB9CiAgICB0aGlzLl9zZW5kU2Vzc2lvblVwZGF0ZSgpOwoKICAgIC8vIHRoZSBzZXNzaW9uIGlzIG92ZXI7IHRha2UgaXQgb2ZmIG9mIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbigpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wIGxldmVsIGBzdGFydFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0U2Vzc2lvbihjb250ZXh0KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3QgeyByZWxlYXNlLCBlbnZpcm9ubWVudCA9IERFRkFVTFRfRU5WSVJPTk1FTlQgfSA9IChjbGllbnQgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgLy8gV2lsbCBmZXRjaCB1c2VyQWdlbnQgaWYgY2FsbGVkIGZyb20gYnJvd3NlciBzZGsKICAgIGNvbnN0IHsgdXNlckFnZW50IH0gPSBHTE9CQUxfT0JKLm5hdmlnYXRvciB8fCB7fTsKCiAgICBjb25zdCBzZXNzaW9uID0gbWFrZVNlc3Npb24oewogICAgICByZWxlYXNlLAogICAgICBlbnZpcm9ubWVudCwKICAgICAgdXNlcjogc2NvcGUuZ2V0VXNlcigpLAogICAgICAuLi4odXNlckFnZW50ICYmIHsgdXNlckFnZW50IH0pLAogICAgICAuLi5jb250ZXh0LAogICAgfSk7CgogICAgLy8gRW5kIGV4aXN0aW5nIHNlc3Npb24gaWYgdGhlcmUncyBvbmUKICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gc2NvcGUuZ2V0U2Vzc2lvbiAmJiBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoY3VycmVudFNlc3Npb24gJiYgY3VycmVudFNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICAgIHVwZGF0ZVNlc3Npb24oY3VycmVudFNlc3Npb24sIHsgc3RhdHVzOiAnZXhpdGVkJyB9KTsKICAgIH0KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5lbmRTZXNzaW9uKCk7CgogICAgLy8gQWZ0ZXJ3YXJkcyB3ZSBzZXQgdGhlIG5ldyBzZXNzaW9uIG9uIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbihzZXNzaW9uKTsKCiAgICByZXR1cm4gc2Vzc2lvbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgaWYgZGVmYXVsdCBQSUkgc2hvdWxkIGJlIHNlbnQgdG8gU2VudHJ5IGFuZCBwcm9wYWdhdGVkIGluIG91cmdvaW5nIHJlcXVlc3RzCiAgICogd2hlbiBUcmFjaW5nIGlzIHVzZWQuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wLWxldmVsIGBnZXRDbGllbnQoKS5nZXRPcHRpb25zKCkuc2VuZERlZmF1bHRQaWlgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24KICAgKiBvbmx5IHVubmVjZXNzYXJpbHkgaW5jcmVhc2VkIEFQSSBzdXJmYWNlIGJ1dCBvbmx5IHdyYXBwZWQgYWNjZXNzaW5nIHRoZSBvcHRpb24uCiAgICovCiAgIHNob3VsZFNlbmREZWZhdWx0UGlpKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBjbGllbnQgPSB0aGlzLmdldENsaWVudCgpOwogICAgY29uc3Qgb3B0aW9ucyA9IGNsaWVudCAmJiBjbGllbnQuZ2V0T3B0aW9ucygpOwogICAgcmV0dXJuIEJvb2xlYW4ob3B0aW9ucyAmJiBvcHRpb25zLnNlbmREZWZhdWx0UGlpKTsKICB9CgogIC8qKgogICAqIFNlbmRzIHRoZSBjdXJyZW50IFNlc3Npb24gb24gdGhlIHNjb3BlCiAgICovCiAgIF9zZW5kU2Vzc2lvblVwZGF0ZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CgogICAgY29uc3Qgc2Vzc2lvbiA9IHNjb3BlLmdldFNlc3Npb24oKTsKICAgIGlmIChzZXNzaW9uICYmIGNsaWVudCAmJiBjbGllbnQuY2FwdHVyZVNlc3Npb24pIHsKICAgICAgY2xpZW50LmNhcHR1cmVTZXNzaW9uKHNlc3Npb24pOwogICAgfQogIH0KCiAgLyoqCiAgICogQ2FsbHMgZ2xvYmFsIGV4dGVuc2lvbiBtZXRob2QgYW5kIGJpbmRpbmcgY3VycmVudCBpbnN0YW5jZSB0byB0aGUgZnVuY3Rpb24gY2FsbAogICAqLwogIC8vIEB0cy1leHBlY3QtZXJyb3IgRnVuY3Rpb24gbGFja3MgZW5kaW5nIHJldHVybiBzdGF0ZW1lbnQgYW5kIHJldHVybiB0eXBlIGRvZXMgbm90IGluY2x1ZGUgJ3VuZGVmaW5lZCcuIHRzKDIzNjYpCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgX2NhbGxFeHRlbnNpb25NZXRob2QobWV0aG9kLCAuLi5hcmdzKSB7CiAgICBjb25zdCBjYXJyaWVyID0gZ2V0TWFpbkNhcnJpZXIoKTsKICAgIGNvbnN0IHNlbnRyeSA9IGNhcnJpZXIuX19TRU5UUllfXzsKICAgIGlmIChzZW50cnkgJiYgc2VudHJ5LmV4dGVuc2lvbnMgJiYgdHlwZW9mIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmV0dXJuIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0uYXBwbHkodGhpcywgYXJncyk7CiAgICB9CiAgICBERUJVR19CVUlMRCAmJiBsb2dnZXIud2FybihgRXh0ZW5zaW9uIG1ldGhvZCAke21ldGhvZH0gY291bGRuJ3QgYmUgZm91bmQsIGRvaW5nIG5vdGhpbmcuYCk7CiAgfQp9CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIHNoaW0gcmVnaXN0cnkuCiAqCiAqIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JsZW1hdGljLCBiZWNhdXNlIGRlc3BpdGUgYWx3YXlzIHJldHVybmluZyBhIHZhbGlkIENhcnJpZXIsCiAqIGl0IGhhcyBhbiBvcHRpb25hbCBgX19TRU5UUllfX2AgcHJvcGVydHksIHdoaWNoIHRoZW4gaW4gdHVybiByZXF1aXJlcyB1cyB0byBhbHdheXMgcGVyZm9ybSBhbiB1bm5lY2Vzc2FyeSBjaGVjawogKiBhdCB0aGUgY2FsbC1zaXRlLiBXZSBhbHdheXMgYWNjZXNzIHRoZSBjYXJyaWVyIHRocm91Z2ggdGhpcyBmdW5jdGlvbiwgc28gd2UgY2FuIGd1YXJhbnRlZSB0aGF0IGBfX1NFTlRSWV9fYCBpcyB0aGVyZS4KICoqLwpmdW5jdGlvbiBnZXRNYWluQ2FycmllcigpIHsKICBHTE9CQUxfT0JKLl9fU0VOVFJZX18gPSBHTE9CQUxfT0JKLl9fU0VOVFJZX18gfHwgewogICAgZXh0ZW5zaW9uczoge30sCiAgICBodWI6IHVuZGVmaW5lZCwKICB9OwogIHJldHVybiBHTE9CQUxfT0JKOwp9CgovKioKICogUmVwbGFjZXMgdGhlIGN1cnJlbnQgbWFpbiBodWIgd2l0aCB0aGUgcGFzc2VkIG9uZSBvbiB0aGUgZ2xvYmFsIG9iamVjdAogKgogKiBAcmV0dXJucyBUaGUgb2xkIHJlcGxhY2VkIGh1YgogKgogKiBAZGVwcmVjYXRlZCBVc2UgYHNldEN1cnJlbnRDbGllbnQoKWAgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBtYWtlTWFpbihodWIpIHsKICBjb25zdCByZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCk7CiAgY29uc3Qgb2xkSHViID0gZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpOwogIHNldEh1Yk9uQ2FycmllcihyZWdpc3RyeSwgaHViKTsKICByZXR1cm4gb2xkSHViOwp9CgovKioKICogUmV0dXJucyB0aGUgZGVmYXVsdCBodWIgaW5zdGFuY2UuCiAqCiAqIElmIGEgaHViIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiB0aGUgZ2xvYmFsIGNhcnJpZXIgYnV0IHRoaXMgbW9kdWxlCiAqIGNvbnRhaW5zIGEgbW9yZSByZWNlbnQgdmVyc2lvbiwgaXQgcmVwbGFjZXMgdGhlIHJlZ2lzdGVyZWQgdmVyc2lvbi4KICogT3RoZXJ3aXNlLCB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgaHViIHdpbGwgYmUgcmV0dXJuZWQuCiAqCiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgcmVzcGVjdGl2ZSByZXBsYWNlbWVudCBtZXRob2QgZGlyZWN0bHkgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRDdXJyZW50SHViKCkgewogIC8vIEdldCBtYWluIGNhcnJpZXIgKGdsb2JhbCBmb3IgZXZlcnkgZW52aXJvbm1lbnQpCiAgY29uc3QgcmVnaXN0cnkgPSBnZXRNYWluQ2FycmllcigpOwoKICBpZiAocmVnaXN0cnkuX19TRU5UUllfXyAmJiByZWdpc3RyeS5fX1NFTlRSWV9fLmFjcykgewogICAgY29uc3QgaHViID0gcmVnaXN0cnkuX19TRU5UUllfXy5hY3MuZ2V0Q3VycmVudEh1YigpOwoKICAgIGlmIChodWIpIHsKICAgICAgcmV0dXJuIGh1YjsKICAgIH0KICB9CgogIC8vIFJldHVybiBodWIgdGhhdCBsaXZlcyBvbiBhIGdsb2JhbCBvYmplY3QKICByZXR1cm4gZ2V0R2xvYmFsSHViKHJlZ2lzdHJ5KTsKfQoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmZ1bmN0aW9uIGdldEdsb2JhbEh1YihyZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCkpIHsKICAvLyBJZiB0aGVyZSdzIG5vIGh1Yiwgb3IgaXRzIGFuIG9sZCBBUEksIGFzc2lnbiBhIG5ldyBvbmUKCiAgaWYgKAogICAgIWhhc0h1Yk9uQ2FycmllcihyZWdpc3RyeSkgfHwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpLmlzT2xkZXJUaGFuKEFQSV9WRVJTSU9OKQogICkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBzZXRIdWJPbkNhcnJpZXIocmVnaXN0cnksIG5ldyBIdWIoKSk7CiAgfQoKICAvLyBSZXR1cm4gaHViIHRoYXQgbGl2ZXMgb24gYSBnbG9iYWwgb2JqZWN0CiAgcmV0dXJuIGdldEh1YkZyb21DYXJyaWVyKHJlZ2lzdHJ5KTsKfQoKLyoqCiAqIFRoaXMgd2lsbCB0ZWxsIHdoZXRoZXIgYSBjYXJyaWVyIGhhcyBhIGh1YiBvbiBpdCBvciBub3QKICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqLwpmdW5jdGlvbiBoYXNIdWJPbkNhcnJpZXIoY2FycmllcikgewogIHJldHVybiAhIShjYXJyaWVyICYmIGNhcnJpZXIuX19TRU5UUllfXyAmJiBjYXJyaWVyLl9fU0VOVFJZX18uaHViKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcge0BsaW5rIEh1Yn0gYW5kIGFkZCB0byB0aGUgcGFzc2VkIG9iamVjdCBvbgogKiBfX1NFTlRSWV9fLmh1Yi4KICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqIEBoaWRkZW4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRIdWJGcm9tQ2FycmllcihjYXJyaWVyKSB7CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgcmV0dXJuIGdldEdsb2JhbFNpbmdsZXRvbignaHViJywgKCkgPT4gbmV3IEh1YigpLCBjYXJyaWVyKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBzZXQgcGFzc2VkIHtAbGluayBIdWJ9IG9uIHRoZSBwYXNzZWQgb2JqZWN0J3MgX19TRU5UUllfXy5odWIgYXR0cmlidXRlCiAqIEBwYXJhbSBjYXJyaWVyIG9iamVjdAogKiBAcGFyYW0gaHViIEh1YgogKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUKICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBzZXRIdWJPbkNhcnJpZXIoY2FycmllciwgaHViKSB7CiAgaWYgKCFjYXJyaWVyKSByZXR1cm4gZmFsc2U7CiAgY29uc3QgX19TRU5UUllfXyA9IChjYXJyaWVyLl9fU0VOVFJZX18gPSBjYXJyaWVyLl9fU0VOVFJZX18gfHwge30pOwogIF9fU0VOVFJZX18uaHViID0gaHViOwogIHJldHVybiB0cnVlOwp9CgovKioKICogQXBwbHkgU2RrSW5mbyAobmFtZSwgdmVyc2lvbiwgcGFja2FnZXMsIGludGVncmF0aW9ucykgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQga2V5LgogKiBNZXJnZSB3aXRoIGV4aXN0aW5nIGRhdGEgaWYgYW55LgogKiovCmZ1bmN0aW9uIGVuaGFuY2VFdmVudFdpdGhTZGtJbmZvKGV2ZW50LCBzZGtJbmZvKSB7CiAgaWYgKCFzZGtJbmZvKSB7CiAgICByZXR1cm4gZXZlbnQ7CiAgfQogIGV2ZW50LnNkayA9IGV2ZW50LnNkayB8fCB7fTsKICBldmVudC5zZGsubmFtZSA9IGV2ZW50LnNkay5uYW1lIHx8IHNka0luZm8ubmFtZTsKICBldmVudC5zZGsudmVyc2lvbiA9IGV2ZW50LnNkay52ZXJzaW9uIHx8IHNka0luZm8udmVyc2lvbjsKICBldmVudC5zZGsuaW50ZWdyYXRpb25zID0gWy4uLihldmVudC5zZGsuaW50ZWdyYXRpb25zIHx8IFtdKSwgLi4uKHNka0luZm8uaW50ZWdyYXRpb25zIHx8IFtdKV07CiAgZXZlbnQuc2RrLnBhY2thZ2VzID0gWy4uLihldmVudC5zZGsucGFja2FnZXMgfHwgW10pLCAuLi4oc2RrSW5mby5wYWNrYWdlcyB8fCBbXSldOwogIHJldHVybiBldmVudDsKfQoKLyoqIENyZWF0ZXMgYW4gZW52ZWxvcGUgZnJvbSBhIFNlc3Npb24gKi8KZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbkVudmVsb3BlKAogIHNlc3Npb24sCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IHsKICAgIHNlbnRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgIC4uLihzZGtJbmZvICYmIHsgc2RrOiBzZGtJbmZvIH0pLAogICAgLi4uKCEhdHVubmVsICYmIGRzbiAmJiB7IGRzbjogZHNuVG9TdHJpbmcoZHNuKSB9KSwKICB9OwoKICBjb25zdCBlbnZlbG9wZUl0ZW0gPQogICAgJ2FnZ3JlZ2F0ZXMnIGluIHNlc3Npb24gPyBbeyB0eXBlOiAnc2Vzc2lvbnMnIH0sIHNlc3Npb25dIDogW3sgdHlwZTogJ3Nlc3Npb24nIH0sIHNlc3Npb24udG9KU09OKCldOwoKICByZXR1cm4gY3JlYXRlRW52ZWxvcGUoZW52ZWxvcGVIZWFkZXJzLCBbZW52ZWxvcGVJdGVtXSk7Cn0KCi8qKgogKiBDcmVhdGUgYW4gRW52ZWxvcGUgZnJvbSBhbiBldmVudC4KICovCmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RW52ZWxvcGUoCiAgZXZlbnQsCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwoKICAvKgogICAgTm90ZTogRHVlIHRvIFRTLCBldmVudC50eXBlIG1heSBiZSBgcmVwbGF5X2V2ZW50YCwgdGhlb3JldGljYWxseS4KICAgIEluIHByYWN0aWNlLCB3ZSBuZXZlciBjYWxsIGBjcmVhdGVFdmVudEVudmVsb3BlYCB3aXRoIGByZXBsYXlfZXZlbnRgIHR5cGUsCiAgICBhbmQgd2UnZCBoYXZlIHRvIGFkanV0IGEgbG9vb3Qgb2YgdHlwZXMgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHkuCiAgICBXZSB3YW50IHRvIGF2b2lkIGNhc3RpbmcgdGhpcyBhcm91bmQsIGFzIHRoYXQgY291bGQgbGVhZCB0byBidWdzIChlLmcuIHdoZW4gd2UgYWRkIGFub3RoZXIgdHlwZSkKICAgIFNvIHRoZSBzYWZlIGNob2ljZSBpcyB0byByZWFsbHkgZ3VhcmQgYWdhaW5zdCB0aGUgcmVwbGF5X2V2ZW50IHR5cGUgaGVyZS4KICAqLwogIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUgJiYgZXZlbnQudHlwZSAhPT0gJ3JlcGxheV9ldmVudCcgPyBldmVudC50eXBlIDogJ2V2ZW50JzsKCiAgZW5oYW5jZUV2ZW50V2l0aFNka0luZm8oZXZlbnQsIG1ldGFkYXRhICYmIG1ldGFkYXRhLnNkayk7CgogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IGNyZWF0ZUV2ZW50RW52ZWxvcGVIZWFkZXJzKGV2ZW50LCBzZGtJbmZvLCB0dW5uZWwsIGRzbik7CgogIC8vIFByZXZlbnQgdGhpcyBkYXRhICh3aGljaCwgaWYgaXQgZXhpc3RzLCB3YXMgdXNlZCBpbiBlYXJsaWVyIHN0ZXBzIGluIHRoZSBwcm9jZXNzaW5nIHBpcGVsaW5lKSBmcm9tIGJlaW5nIHNlbnQgdG8KICAvLyBzZW50cnkuIChOb3RlOiBPdXIgdXNlIG9mIHRoaXMgcHJvcGVydHkgY29tZXMgYW5kIGdvZXMgd2l0aCB3aGF0ZXZlciB3ZSBtaWdodCBiZSBkZWJ1Z2dpbmcsIHdoYXRldmVyIGhhY2tzIHdlIG1heQogIC8vIGhhdmUgdGVtcG9yYXJpbHkgYWRkZWQsIGV0Yy4gRXZlbiBpZiB3ZSBkb24ndCBoYXBwZW4gdG8gYmUgdXNpbmcgaXQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCBsZXQncyBub3QgZ2V0IHJpZAogIC8vIG9mIHRoaXMgYGRlbGV0ZWAsIGxlc3Qgd2UgbWlzcyBwdXR0aW5nIGl0IGJhY2sgaW4gdGhlIG5leHQgdGltZSB0aGUgcHJvcGVydHkgaXMgaW4gdXNlLikKICBkZWxldGUgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhOwoKICBjb25zdCBldmVudEl0ZW0gPSBbeyB0eXBlOiBldmVudFR5cGUgfSwgZXZlbnRdOwogIHJldHVybiBjcmVhdGVFbnZlbG9wZShlbnZlbG9wZUhlYWRlcnMsIFtldmVudEl0ZW1dKTsKfQoKY29uc3QgU0VOVFJZX0FQSV9WRVJTSU9OID0gJzcnOwoKLyoqIFJldHVybnMgdGhlIHByZWZpeCB0byBjb25zdHJ1Y3QgU2VudHJ5IGluZ2VzdGlvbiBBUEkgZW5kcG9pbnRzLiAqLwpmdW5jdGlvbiBnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKSB7CiAgY29uc3QgcHJvdG9jb2wgPSBkc24ucHJvdG9jb2wgPyBgJHtkc24ucHJvdG9jb2x9OmAgOiAnJzsKICBjb25zdCBwb3J0ID0gZHNuLnBvcnQgPyBgOiR7ZHNuLnBvcnR9YCA6ICcnOwogIHJldHVybiBgJHtwcm90b2NvbH0vLyR7ZHNuLmhvc3R9JHtwb3J0fSR7ZHNuLnBhdGggPyBgLyR7ZHNuLnBhdGh9YCA6ICcnfS9hcGkvYDsKfQoKLyoqIFJldHVybnMgdGhlIGluZ2VzdCBBUEkgZW5kcG9pbnQgZm9yIHRhcmdldC4gKi8KZnVuY3Rpb24gX2dldEluZ2VzdEVuZHBvaW50KGRzbikgewogIHJldHVybiBgJHtnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKX0ke2Rzbi5wcm9qZWN0SWR9L2VudmVsb3BlL2A7Cn0KCi8qKiBSZXR1cm5zIGEgVVJMLWVuY29kZWQgc3RyaW5nIHdpdGggYXV0aCBjb25maWcgc3VpdGFibGUgZm9yIGEgcXVlcnkgc3RyaW5nLiAqLwpmdW5jdGlvbiBfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKSB7CiAgcmV0dXJuIHVybEVuY29kZSh7CiAgICAvLyBXZSBzZW5kIG9ubHkgdGhlIG1pbmltdW0gc2V0IG9mIHJlcXVpcmVkIGluZm9ybWF0aW9uLiBTZWUKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvaXNzdWVzLzI1NzIuCiAgICBzZW50cnlfa2V5OiBkc24ucHVibGljS2V5LAogICAgc2VudHJ5X3ZlcnNpb246IFNFTlRSWV9BUElfVkVSU0lPTiwKICAgIC4uLihzZGtJbmZvICYmIHsgc2VudHJ5X2NsaWVudDogYCR7c2RrSW5mby5uYW1lfS8ke3Nka0luZm8udmVyc2lvbn1gIH0pLAogIH0pOwp9CgovKioKICogUmV0dXJucyB0aGUgZW52ZWxvcGUgZW5kcG9pbnQgVVJMIHdpdGggYXV0aCBpbiB0aGUgcXVlcnkgc3RyaW5nLgogKgogKiBTZW5kaW5nIGF1dGggYXMgcGFydCBvZiB0aGUgcXVlcnkgc3RyaW5nIGFuZCBub3QgYXMgY3VzdG9tIEhUVFAgaGVhZGVycyBhdm9pZHMgQ09SUyBwcmVmbGlnaHQgcmVxdWVzdHMuCiAqLwpmdW5jdGlvbiBnZXRFbnZlbG9wZUVuZHBvaW50V2l0aFVybEVuY29kZWRBdXRoKAogIGRzbiwKICAvLyBUT0RPICh2OCk6IFJlbW92ZSBgdHVubmVsT3JPcHRpb25zYCBpbiBmYXZvciBvZiBgb3B0aW9uc2AsIGFuZCB1c2UgdGhlIHN1YnN0aXR1dGUgY29kZSBiZWxvdwogIC8vIG9wdGlvbnM6IENsaWVudE9wdGlvbnMgPSB7fSBhcyBDbGllbnRPcHRpb25zLAogIHR1bm5lbE9yT3B0aW9ucyA9IHt9ICwKKSB7CiAgLy8gVE9ETyAodjgpOiBVc2UgdGhpcyBjb2RlIGluc3RlYWQKICAvLyBjb25zdCB7IHR1bm5lbCwgX21ldGFkYXRhID0ge30gfSA9IG9wdGlvbnM7CiAgLy8gcmV0dXJuIHR1bm5lbCA/IHR1bm5lbCA6IGAke19nZXRJbmdlc3RFbmRwb2ludChkc24pfT8ke19lbmNvZGVkQXV0aChkc24sIF9tZXRhZGF0YS5zZGspfWA7CgogIGNvbnN0IHR1bm5lbCA9IHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnID8gdHVubmVsT3JPcHRpb25zIDogdHVubmVsT3JPcHRpb25zLnR1bm5lbDsKICBjb25zdCBzZGtJbmZvID0KICAgIHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnIHx8ICF0dW5uZWxPck9wdGlvbnMuX21ldGFkYXRhID8gdW5kZWZpbmVkIDogdHVubmVsT3JPcHRpb25zLl9tZXRhZGF0YS5zZGs7CgogIHJldHVybiB0dW5uZWwgPyB0dW5uZWwgOiBgJHtfZ2V0SW5nZXN0RW5kcG9pbnQoZHNuKX0/JHtfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKX1gOwp9Cgpjb25zdCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSA9IDMwOwoKLyoqCiAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYSBTZW50cnkgYFRyYW5zcG9ydGAKICoKICogQHBhcmFtIG9wdGlvbnMKICogQHBhcmFtIG1ha2VSZXF1ZXN0CiAqLwpmdW5jdGlvbiBjcmVhdGVUcmFuc3BvcnQoCiAgb3B0aW9ucywKICBtYWtlUmVxdWVzdCwKICBidWZmZXIgPSBtYWtlUHJvbWlzZUJ1ZmZlcigKICAgIG9wdGlvbnMuYnVmZmVyU2l6ZSB8fCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSwKICApLAopIHsKICBsZXQgcmF0ZUxpbWl0cyA9IHt9OwogIGNvbnN0IGZsdXNoID0gKHRpbWVvdXQpID0+IGJ1ZmZlci5kcmFpbih0aW1lb3V0KTsKCiAgZnVuY3Rpb24gc2VuZChlbnZlbG9wZSkgewogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZUl0ZW1zID0gW107CgogICAgLy8gRHJvcCByYXRlIGxpbWl0ZWQgaXRlbXMgZnJvbSBlbnZlbG9wZQogICAgZm9yRWFjaEVudmVsb3BlSXRlbShlbnZlbG9wZSwgKGl0ZW0sIHR5cGUpID0+IHsKICAgICAgY29uc3QgZGF0YUNhdGVnb3J5ID0gZW52ZWxvcGVJdGVtVHlwZVRvRGF0YUNhdGVnb3J5KHR5cGUpOwogICAgICBpZiAoaXNSYXRlTGltaXRlZChyYXRlTGltaXRzLCBkYXRhQ2F0ZWdvcnkpKSB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudCgncmF0ZWxpbWl0X2JhY2tvZmYnLCBkYXRhQ2F0ZWdvcnksIGV2ZW50KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmaWx0ZXJlZEVudmVsb3BlSXRlbXMucHVzaChpdGVtKTsKICAgICAgfQogICAgfSk7CgogICAgLy8gU2tpcCBzZW5kaW5nIGlmIGVudmVsb3BlIGlzIGVtcHR5IGFmdGVyIGZpbHRlcmluZyBvdXQgcmF0ZSBsaW1pdGVkIGV2ZW50cwogICAgaWYgKGZpbHRlcmVkRW52ZWxvcGVJdGVtcy5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHJlc29sdmVkU3luY1Byb21pc2UoKTsKICAgIH0KCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZSA9IGNyZWF0ZUVudmVsb3BlKGVudmVsb3BlWzBdLCBmaWx0ZXJlZEVudmVsb3BlSXRlbXMgKTsKCiAgICAvLyBDcmVhdGVzIGNsaWVudCByZXBvcnQgZm9yIGVhY2ggaXRlbSBpbiBhbiBlbnZlbG9wZQogICAgY29uc3QgcmVjb3JkRW52ZWxvcGVMb3NzID0gKHJlYXNvbikgPT4gewogICAgICBmb3JFYWNoRW52ZWxvcGVJdGVtKGZpbHRlcmVkRW52ZWxvcGUsIChpdGVtLCB0eXBlKSA9PiB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudChyZWFzb24sIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSwgZXZlbnQpOwogICAgICB9KTsKICAgIH07CgogICAgY29uc3QgcmVxdWVzdFRhc2sgPSAoKSA9PgogICAgICBtYWtlUmVxdWVzdCh7IGJvZHk6IHNlcmlhbGl6ZUVudmVsb3BlKGZpbHRlcmVkRW52ZWxvcGUsIG9wdGlvbnMudGV4dEVuY29kZXIpIH0pLnRoZW4oCiAgICAgICAgcmVzcG9uc2UgPT4gewogICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB0aHJvdyBvbiBOT0sgcmVzcG9uc2VzLCBidXQgd2Ugd2FudCB0byBhdCBsZWFzdCBsb2cgdGhlbQogICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IHVuZGVmaW5lZCAmJiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXNDb2RlID49IDMwMCkpIHsKICAgICAgICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYFNlbnRyeSByZXNwb25kZWQgd2l0aCBzdGF0dXMgY29kZSAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9IHRvIHNlbnQgZXZlbnQuYCk7CiAgICAgICAgICB9CgogICAgICAgICAgcmF0ZUxpbWl0cyA9IHVwZGF0ZVJhdGVMaW1pdHMocmF0ZUxpbWl0cywgcmVzcG9uc2UpOwogICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgIH0sCiAgICAgICAgZXJyb3IgPT4gewogICAgICAgICAgcmVjb3JkRW52ZWxvcGVMb3NzKCduZXR3b3JrX2Vycm9yJyk7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9LAogICAgICApOwoKICAgIHJldHVybiBidWZmZXIuYWRkKHJlcXVlc3RUYXNrKS50aGVuKAogICAgICByZXN1bHQgPT4gcmVzdWx0LAogICAgICBlcnJvciA9PiB7CiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU2VudHJ5RXJyb3IpIHsKICAgICAgICAgIERFQlVHX0JVSUxEICYmIGxvZ2dlci5lcnJvcignU2tpcHBlZCBzZW5kaW5nIGV2ZW50IGJlY2F1c2UgYnVmZmVyIGlzIGZ1bGwuJyk7CiAgICAgICAgICByZWNvcmRFbnZlbG9wZUxvc3MoJ3F1ZXVlX292ZXJmbG93Jyk7CiAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTeW5jUHJvbWlzZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CiAgICAgIH0sCiAgICApOwogIH0KCiAgLy8gV2UgdXNlIHRoaXMgdG8gaWRlbnRpZmlmeSBpZiB0aGUgdHJhbnNwb3J0IGlzIHRoZSBiYXNlIHRyYW5zcG9ydAogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHRoaXMgYWdhaW4gYXMgd2UnbGwgbm8gbG9uZ2VyIG5lZWQgaXQKICBzZW5kLl9fc2VudHJ5X19iYXNlVHJhbnNwb3J0X18gPSB0cnVlOwoKICByZXR1cm4gewogICAgc2VuZCwKICAgIGZsdXNoLAogIH07Cn0KCmZ1bmN0aW9uIGdldEV2ZW50Rm9yRW52ZWxvcGVJdGVtKGl0ZW0sIHR5cGUpIHsKICBpZiAodHlwZSAhPT0gJ2V2ZW50JyAmJiB0eXBlICE9PSAndHJhbnNhY3Rpb24nKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbSkgPyAoaXRlbSApWzFdIDogdW5kZWZpbmVkOwp9CgovKiogbm9ybWFsaXplcyBXaW5kb3dzIHBhdGhzICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHBhdGgpIHsKICByZXR1cm4gcGF0aAogICAgLnJlcGxhY2UoL15bQS1aXTovLCAnJykgLy8gcmVtb3ZlIFdpbmRvd3Mtc3R5bGUgcHJlZml4CiAgICAucmVwbGFjZSgvXFwvZywgJy8nKTsgLy8gcmVwbGFjZSBhbGwgYFxgIGluc3RhbmNlcyB3aXRoIGAvYAp9CgovKiogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgbW9kdWxlIG5hbWUgZnJvbSBhIGZpbGVuYW1lICovCmZ1bmN0aW9uIGNyZWF0ZUdldE1vZHVsZUZyb21GaWxlbmFtZSgKICBiYXNlUGF0aCA9IHByb2Nlc3MuYXJndlsxXSA/IGRpcm5hbWUocHJvY2Vzcy5hcmd2WzFdKSA6IHByb2Nlc3MuY3dkKCksCiAgaXNXaW5kb3dzID0gc2VwID09PSAnXFwnLAopIHsKICBjb25zdCBub3JtYWxpemVkQmFzZSA9IGlzV2luZG93cyA/IG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGJhc2VQYXRoKSA6IGJhc2VQYXRoOwoKICByZXR1cm4gKGZpbGVuYW1lKSA9PiB7CiAgICBpZiAoIWZpbGVuYW1lKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBjb25zdCBub3JtYWxpemVkRmlsZW5hbWUgPSBpc1dpbmRvd3MgPyBub3JtYWxpemVXaW5kb3dzUGF0aChmaWxlbmFtZSkgOiBmaWxlbmFtZTsKCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0CiAgICBsZXQgeyBkaXIsIGJhc2U6IGZpbGUsIGV4dCB9ID0gcG9zaXgucGFyc2Uobm9ybWFsaXplZEZpbGVuYW1lKTsKCiAgICBpZiAoZXh0ID09PSAnLmpzJyB8fCBleHQgPT09ICcubWpzJyB8fCBleHQgPT09ICcuY2pzJykgewogICAgICBmaWxlID0gZmlsZS5zbGljZSgwLCBleHQubGVuZ3RoICogLTEpOwogICAgfQoKICAgIGlmICghZGlyKSB7CiAgICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlcgogICAgICBkaXIgPSAnLic7CiAgICB9CgogICAgY29uc3QgbiA9IGRpci5sYXN0SW5kZXhPZignL25vZGVfbW9kdWxlcycpOwogICAgaWYgKG4gPiAtMSkgewogICAgICByZXR1cm4gYCR7ZGlyLnNsaWNlKG4gKyAxNCkucmVwbGFjZSgvXC8vZywgJy4nKX06JHtmaWxlfWA7CiAgICB9CgogICAgLy8gTGV0J3Mgc2VlIGlmIGl0J3MgYSBwYXJ0IG9mIHRoZSBtYWluIG1vZHVsZQogICAgLy8gVG8gYmUgYSBwYXJ0IG9mIG1haW4gbW9kdWxlLCBpdCBoYXMgdG8gc2hhcmUgdGhlIHNhbWUgYmFzZQogICAgaWYgKGRpci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRCYXNlKSkgewogICAgICBsZXQgbW9kdWxlTmFtZSA9IGRpci5zbGljZShub3JtYWxpemVkQmFzZS5sZW5ndGggKyAxKS5yZXBsYWNlKC9cLy9nLCAnLicpOwoKICAgICAgaWYgKG1vZHVsZU5hbWUpIHsKICAgICAgICBtb2R1bGVOYW1lICs9ICc6JzsKICAgICAgfQogICAgICBtb2R1bGVOYW1lICs9IGZpbGU7CgogICAgICByZXR1cm4gbW9kdWxlTmFtZTsKICAgIH0KCiAgICByZXR1cm4gZmlsZTsKICB9Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlJDIobGhzLCByaHNGbikgeyBpZiAobGhzICE9IG51bGwpIHsgcmV0dXJuIGxoczsgfSBlbHNlIHsgcmV0dXJuIHJoc0ZuKCk7IH0gfS8qKgogKiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgZm9ya2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1Rvb1RhbGxOYXRlL3Byb3h5LWFnZW50cy90cmVlL2IxMzMyOTVmZDE2ZjY0NzU1NzhiNmIxNWJkOWI0ZTMzZWNiMGQwYjcKICogV2l0aCB0aGUgZm9sbG93aW5nIGxpY2VuY2U6CiAqCiAqIChUaGUgTUlUIExpY2Vuc2UpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMyBOYXRoYW4gUmFqbGljaCA8bmF0aGFuQHRvb3RhbGxuYXRlLm5ldD4qCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOioKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuKgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwoKY29uc3QgSU5URVJOQUwgPSBTeW1ib2woJ0FnZW50QmFzZUludGVybmFsU3RhdGUnKTsKCmNsYXNzIEFnZW50IGV4dGVuZHMgaHR0cC5BZ2VudCB7CgogIC8vIFNldCBieSBgaHR0cC5BZ2VudGAgLSBtaXNzaW5nIGZyb20gYEB0eXBlcy9ub2RlYAoKICBjb25zdHJ1Y3RvcihvcHRzKSB7CiAgICBzdXBlcihvcHRzKTsKICAgIHRoaXNbSU5URVJOQUxdID0ge307CiAgfQoKICAvKioKICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFuIGBodHRwYCBvciBgaHR0cHNgIHJlcXVlc3QuCiAgICovCiAgaXNTZWN1cmVFbmRwb2ludChvcHRpb25zKSB7CiAgICBpZiAob3B0aW9ucykgewogICAgICAvLyBGaXJzdCBjaGVjayB0aGUgYHNlY3VyZUVuZHBvaW50YCBwcm9wZXJ0eSBleHBsaWNpdGx5LCBzaW5jZSB0aGlzCiAgICAgIC8vIG1lYW5zIHRoYXQgYSBwYXJlbnQgYEFnZW50YCBpcyAicGFzc2luZyB0aHJvdWdoIiB0byB0aGlzIGluc3RhbmNlLgogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgICAgIGlmICh0eXBlb2YgKG9wdGlvbnMgKS5zZWN1cmVFbmRwb2ludCA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2VjdXJlRW5kcG9pbnQ7CiAgICAgIH0KCiAgICAgIC8vIElmIG5vIGV4cGxpY2l0IGBzZWN1cmVgIGVuZHBvaW50LCBjaGVjayBpZiBgcHJvdG9jb2xgIHByb3BlcnR5IGlzCiAgICAgIC8vIHNldC4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgdGhlIGNhc2Ugc2luY2UgdXNpbmcgYSBmdWxsIHN0cmluZyBVUkwKICAgICAgLy8gb3IgYFVSTGAgaW5zdGFuY2Ugc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiB1c2FnZS4KICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnByb3RvY29sID09PSAnc3RyaW5nJykgewogICAgICAgIHJldHVybiBvcHRpb25zLnByb3RvY29sID09PSAnaHR0cHM6JzsKICAgICAgfQogICAgfQoKICAgIC8vIEZpbmFsbHksIGlmIG5vIGBwcm90b2NvbGAgcHJvcGVydHkgd2FzIHNldCwgdGhlbiBmYWxsIGJhY2sgdG8KICAgIC8vIGNoZWNraW5nIHRoZSBzdGFjayB0cmFjZSBvZiB0aGUgY3VycmVudCBjYWxsIHN0YWNrLCBhbmQgdHJ5IHRvCiAgICAvLyBkZXRlY3QgdGhlICJodHRwcyIgbW9kdWxlLgogICAgY29uc3QgeyBzdGFjayB9ID0gbmV3IEVycm9yKCk7CiAgICBpZiAodHlwZW9mIHN0YWNrICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHN0YWNrLnNwbGl0KCdcbicpLnNvbWUobCA9PiBsLmluZGV4T2YoJyhodHRwcy5qczonKSAhPT0gLTEgfHwgbC5pbmRleE9mKCdub2RlOmh0dHBzOicpICE9PSAtMSk7CiAgfQoKICBjcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYikgewogICAgY29uc3QgY29ubmVjdE9wdHMgPSB7CiAgICAgIC4uLm9wdGlvbnMsCiAgICAgIHNlY3VyZUVuZHBvaW50OiB0aGlzLmlzU2VjdXJlRW5kcG9pbnQob3B0aW9ucyksCiAgICB9OwogICAgUHJvbWlzZS5yZXNvbHZlKCkKICAgICAgLnRoZW4oKCkgPT4gdGhpcy5jb25uZWN0KHJlcSwgY29ubmVjdE9wdHMpKQogICAgICAudGhlbihzb2NrZXQgPT4gewogICAgICAgIGlmIChzb2NrZXQgaW5zdGFuY2VvZiBodHRwLkFnZW50KSB7CiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBhZGRSZXF1ZXN0KClgIGlzbid0IGRlZmluZWQgaW4gYEB0eXBlcy9ub2RlYAogICAgICAgICAgcmV0dXJuIHNvY2tldC5hZGRSZXF1ZXN0KHJlcSwgY29ubmVjdE9wdHMpOwogICAgICAgIH0KICAgICAgICB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0ID0gc29ja2V0OwogICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYGNyZWF0ZVNvY2tldCgpYCBpc24ndCBkZWZpbmVkIGluIGBAdHlwZXMvbm9kZWAKICAgICAgICBzdXBlci5jcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYik7CiAgICAgIH0sIGNiKTsKICB9CgogIGNyZWF0ZUNvbm5lY3Rpb24oKSB7CiAgICBjb25zdCBzb2NrZXQgPSB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0OwogICAgdGhpc1tJTlRFUk5BTF0uY3VycmVudFNvY2tldCA9IHVuZGVmaW5lZDsKICAgIGlmICghc29ja2V0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24nKTsKICAgIH0KICAgIHJldHVybiBzb2NrZXQ7CiAgfQoKICBnZXQgZGVmYXVsdFBvcnQoKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLmRlZmF1bHRQb3J0LCAoKSA9PiAoICh0aGlzLnByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwKSkpOwogIH0KCiAgc2V0IGRlZmF1bHRQb3J0KHYpIHsKICAgIGlmICh0aGlzW0lOVEVSTkFMXSkgewogICAgICB0aGlzW0lOVEVSTkFMXS5kZWZhdWx0UG9ydCA9IHY7CiAgICB9CiAgfQoKICBnZXQgcHJvdG9jb2woKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLnByb3RvY29sLCAoKSA9PiAoICh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKSA/ICdodHRwczonIDogJ2h0dHA6JykpKTsKICB9CgogIHNldCBwcm90b2NvbCh2KSB7CiAgICBpZiAodGhpc1tJTlRFUk5BTF0pIHsKICAgICAgdGhpc1tJTlRFUk5BTF0ucHJvdG9jb2wgPSB2OwogICAgfQogIH0KfQoKZnVuY3Rpb24gZGVidWckMSguLi5hcmdzKSB7CiAgbG9nZ2VyLmxvZygnW2h0dHBzLXByb3h5LWFnZW50OnBhcnNlLXByb3h5LXJlc3BvbnNlXScsIC4uLmFyZ3MpOwp9CgpmdW5jdGlvbiBwYXJzZVByb3h5UmVzcG9uc2Uoc29ja2V0KSB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIC8vIHdlIG5lZWQgdG8gYnVmZmVyIGFueSBIVFRQIHRyYWZmaWMgdGhhdCBoYXBwZW5zIHdpdGggdGhlIHByb3h5IGJlZm9yZSB3ZSBnZXQKICAgIC8vIHRoZSBDT05ORUNUIHJlc3BvbnNlLCBzbyB0aGF0IGlmIHRoZSByZXNwb25zZSBpcyBhbnl0aGluZyBvdGhlciB0aGFuIGFuICIyMDAiCiAgICAvLyByZXNwb25zZSBjb2RlLCB0aGVuIHdlIGNhbiByZS1wbGF5IHRoZSAiZGF0YSIgZXZlbnRzIG9uIHRoZSBzb2NrZXQgb25jZSB0aGUKICAgIC8vIEhUVFAgcGFyc2VyIGlzIGhvb2tlZCB1cC4uLgogICAgbGV0IGJ1ZmZlcnNMZW5ndGggPSAwOwogICAgY29uc3QgYnVmZmVycyA9IFtdOwoKICAgIGZ1bmN0aW9uIHJlYWQoKSB7CiAgICAgIGNvbnN0IGIgPSBzb2NrZXQucmVhZCgpOwogICAgICBpZiAoYikgb25kYXRhKGIpOwogICAgICBlbHNlIHNvY2tldC5vbmNlKCdyZWFkYWJsZScsIHJlYWQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpOwogICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCByZWFkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVuZCgpIHsKICAgICAgY2xlYW51cCgpOwogICAgICBkZWJ1ZyQxKCdvbmVuZCcpOwogICAgICByZWplY3QobmV3IEVycm9yKCdQcm94eSBjb25uZWN0aW9uIGVuZGVkIGJlZm9yZSByZWNlaXZpbmcgQ09OTkVDVCByZXNwb25zZScpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVycm9yKGVycikgewogICAgICBjbGVhbnVwKCk7CiAgICAgIGRlYnVnJDEoJ29uZXJyb3IgJW8nLCBlcnIpOwogICAgICByZWplY3QoZXJyKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmRhdGEoYikgewogICAgICBidWZmZXJzLnB1c2goYik7CiAgICAgIGJ1ZmZlcnNMZW5ndGggKz0gYi5sZW5ndGg7CgogICAgICBjb25zdCBidWZmZXJlZCA9IEJ1ZmZlci5jb25jYXQoYnVmZmVycywgYnVmZmVyc0xlbmd0aCk7CiAgICAgIGNvbnN0IGVuZE9mSGVhZGVycyA9IGJ1ZmZlcmVkLmluZGV4T2YoJ1xyXG5cclxuJyk7CgogICAgICBpZiAoZW5kT2ZIZWFkZXJzID09PSAtMSkgewogICAgICAgIC8vIGtlZXAgYnVmZmVyaW5nCiAgICAgICAgZGVidWckMSgnaGF2ZSBub3QgcmVjZWl2ZWQgZW5kIG9mIEhUVFAgaGVhZGVycyB5ZXQuLi4nKTsKICAgICAgICByZWFkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjb25zdCBoZWFkZXJQYXJ0cyA9IGJ1ZmZlcmVkLnNsaWNlKDAsIGVuZE9mSGVhZGVycykudG9TdHJpbmcoJ2FzY2lpJykuc3BsaXQoJ1xyXG4nKTsKICAgICAgY29uc3QgZmlyc3RMaW5lID0gaGVhZGVyUGFydHMuc2hpZnQoKTsKICAgICAgaWYgKCFmaXJzdExpbmUpIHsKICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlJykpOwogICAgICB9CiAgICAgIGNvbnN0IGZpcnN0TGluZVBhcnRzID0gZmlyc3RMaW5lLnNwbGl0KCcgJyk7CiAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSArZmlyc3RMaW5lUGFydHNbMV07CiAgICAgIGNvbnN0IHN0YXR1c1RleHQgPSBmaXJzdExpbmVQYXJ0cy5zbGljZSgyKS5qb2luKCcgJyk7CiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7fTsKICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgaGVhZGVyUGFydHMpIHsKICAgICAgICBpZiAoIWhlYWRlcikgY29udGludWU7CiAgICAgICAgY29uc3QgZmlyc3RDb2xvbiA9IGhlYWRlci5pbmRleE9mKCc6Jyk7CiAgICAgICAgaWYgKGZpcnN0Q29sb24gPT09IC0xKSB7CiAgICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYEludmFsaWQgaGVhZGVyIGZyb20gcHJveHkgQ09OTkVDVCByZXNwb25zZTogIiR7aGVhZGVyfSJgKSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGtleSA9IGhlYWRlci5zbGljZSgwLCBmaXJzdENvbG9uKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGNvbnN0IHZhbHVlID0gaGVhZGVyLnNsaWNlKGZpcnN0Q29sb24gKyAxKS50cmltU3RhcnQoKTsKICAgICAgICBjb25zdCBjdXJyZW50ID0gaGVhZGVyc1trZXldOwogICAgICAgIGlmICh0eXBlb2YgY3VycmVudCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIGhlYWRlcnNba2V5XSA9IFtjdXJyZW50LCB2YWx1ZV07CiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7CiAgICAgICAgICBjdXJyZW50LnB1c2godmFsdWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZGVidWckMSgnZ290IHByb3h5IHNlcnZlciByZXNwb25zZTogJW8gJW8nLCBmaXJzdExpbmUsIGhlYWRlcnMpOwogICAgICBjbGVhbnVwKCk7CiAgICAgIHJlc29sdmUoewogICAgICAgIGNvbm5lY3Q6IHsKICAgICAgICAgIHN0YXR1c0NvZGUsCiAgICAgICAgICBzdGF0dXNUZXh0LAogICAgICAgICAgaGVhZGVycywKICAgICAgICB9LAogICAgICAgIGJ1ZmZlcmVkLAogICAgICB9KTsKICAgIH0KCiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25lcnJvcik7CiAgICBzb2NrZXQub24oJ2VuZCcsIG9uZW5kKTsKCiAgICByZWFkKCk7CiAgfSk7Cn0KCmZ1bmN0aW9uIF9udWxsaXNoQ29hbGVzY2UkMShsaHMsIHJoc0ZuKSB7IGlmIChsaHMgIT0gbnVsbCkgeyByZXR1cm4gbGhzOyB9IGVsc2UgeyByZXR1cm4gcmhzRm4oKTsgfSB9IGZ1bmN0aW9uIF9vcHRpb25hbENoYWluJDEob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KCmZ1bmN0aW9uIGRlYnVnKC4uLmFyZ3MpIHsKICBsb2dnZXIubG9nKCdbaHR0cHMtcHJveHktYWdlbnRdJywgLi4uYXJncyk7Cn0KCi8qKgogKiBUaGUgYEh0dHBzUHJveHlBZ2VudGAgaW1wbGVtZW50cyBhbiBIVFRQIEFnZW50IHN1YmNsYXNzIHRoYXQgY29ubmVjdHMgdG8KICogdGhlIHNwZWNpZmllZCAiSFRUUChzKSBwcm94eSBzZXJ2ZXIiIGluIG9yZGVyIHRvIHByb3h5IEhUVFBTIHJlcXVlc3RzLgogKgogKiBPdXRnb2luZyBIVFRQIHJlcXVlc3RzIGFyZSBmaXJzdCB0dW5uZWxlZCB0aHJvdWdoIHRoZSBwcm94eSBzZXJ2ZXIgdXNpbmcgdGhlCiAqIGBDT05ORUNUYCBIVFRQIHJlcXVlc3QgbWV0aG9kIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciwKICogYW5kIHRoZW4gdGhlIHByb3h5IHNlcnZlciBjb25uZWN0cyB0byB0aGUgZGVzdGluYXRpb24gdGFyZ2V0IGFuZCBpc3N1ZXMgdGhlCiAqIEhUVFAgcmVxdWVzdCBmcm9tIHRoZSBwcm94eSBzZXJ2ZXIuCiAqCiAqIGBodHRwczpgIHJlcXVlc3RzIGhhdmUgdGhlaXIgc29ja2V0IGNvbm5lY3Rpb24gdXBncmFkZWQgdG8gVExTIG9uY2UKICogdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciBoYXMgYmVlbiBlc3RhYmxpc2hlZC4KICovCmNsYXNzIEh0dHBzUHJveHlBZ2VudCBleHRlbmRzIEFnZW50IHsKICBzdGF0aWMgX19pbml0U3RhdGljKCkge3RoaXMucHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJ107IH0KCiAgY29uc3RydWN0b3IocHJveHksIG9wdHMpIHsKICAgIHN1cGVyKG9wdHMpOwogICAgdGhpcy5vcHRpb25zID0ge307CiAgICB0aGlzLnByb3h5ID0gdHlwZW9mIHByb3h5ID09PSAnc3RyaW5nJyA/IG5ldyBVUkwocHJveHkpIDogcHJveHk7CiAgICB0aGlzLnByb3h5SGVhZGVycyA9IF9udWxsaXNoQ29hbGVzY2UkMShfb3B0aW9uYWxDaGFpbiQxKFtvcHRzLCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5oZWFkZXJzXSksICgpID0+ICgge30pKTsKICAgIGRlYnVnKCdDcmVhdGluZyBuZXcgSHR0cHNQcm94eUFnZW50IGluc3RhbmNlOiAlbycsIHRoaXMucHJveHkuaHJlZik7CgogICAgLy8gVHJpbSBvZmYgdGhlIGJyYWNrZXRzIGZyb20gSVB2NiBhZGRyZXNzZXMKICAgIGNvbnN0IGhvc3QgPSAodGhpcy5wcm94eS5ob3N0bmFtZSB8fCB0aGlzLnByb3h5Lmhvc3QpLnJlcGxhY2UoL15cW3xcXSQvZywgJycpOwogICAgY29uc3QgcG9ydCA9IHRoaXMucHJveHkucG9ydCA/IHBhcnNlSW50KHRoaXMucHJveHkucG9ydCwgMTApIDogdGhpcy5wcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyA0NDMgOiA4MDsKICAgIHRoaXMuY29ubmVjdE9wdHMgPSB7CiAgICAgIC8vIEF0dGVtcHQgdG8gbmVnb3RpYXRlIGh0dHAvMS4xIGZvciBwcm94eSBzZXJ2ZXJzIHRoYXQgc3VwcG9ydCBodHRwLzIKICAgICAgQUxQTlByb3RvY29sczogWydodHRwLzEuMSddLAogICAgICAuLi4ob3B0cyA/IG9taXQob3B0cywgJ2hlYWRlcnMnKSA6IG51bGwpLAogICAgICBob3N0LAogICAgICBwb3J0LAogICAgfTsKICB9CgogIC8qKgogICAqIENhbGxlZCB3aGVuIHRoZSBub2RlLWNvcmUgSFRUUCBjbGllbnQgbGlicmFyeSBpcyBjcmVhdGluZyBhCiAgICogbmV3IEhUVFAgcmVxdWVzdC4KICAgKi8KICBhc3luYyBjb25uZWN0KHJlcSwgb3B0cykgewogICAgY29uc3QgeyBwcm94eSB9ID0gdGhpczsKCiAgICBpZiAoIW9wdHMuaG9zdCkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyAiaG9zdCIgcHJvdmlkZWQnKTsKICAgIH0KCiAgICAvLyBDcmVhdGUgYSBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgcHJveHkgc2VydmVyLgogICAgbGV0IHNvY2tldDsKICAgIGlmIChwcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicpIHsKICAgICAgZGVidWcoJ0NyZWF0aW5nIGB0bHMuU29ja2V0YDogJW8nLCB0aGlzLmNvbm5lY3RPcHRzKTsKICAgICAgY29uc3Qgc2VydmVybmFtZSA9IHRoaXMuY29ubmVjdE9wdHMuc2VydmVybmFtZSB8fCB0aGlzLmNvbm5lY3RPcHRzLmhvc3Q7CiAgICAgIHNvY2tldCA9IHRscy5jb25uZWN0KHsKICAgICAgICAuLi50aGlzLmNvbm5lY3RPcHRzLAogICAgICAgIHNlcnZlcm5hbWU6IHNlcnZlcm5hbWUgJiYgbmV0LmlzSVAoc2VydmVybmFtZSkgPyB1bmRlZmluZWQgOiBzZXJ2ZXJuYW1lLAogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGRlYnVnKCdDcmVhdGluZyBgbmV0LlNvY2tldGA6ICVvJywgdGhpcy5jb25uZWN0T3B0cyk7CiAgICAgIHNvY2tldCA9IG5ldC5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpOwogICAgfQoKICAgIGNvbnN0IGhlYWRlcnMgPQogICAgICB0eXBlb2YgdGhpcy5wcm94eUhlYWRlcnMgPT09ICdmdW5jdGlvbicgPyB0aGlzLnByb3h5SGVhZGVycygpIDogeyAuLi50aGlzLnByb3h5SGVhZGVycyB9OwogICAgY29uc3QgaG9zdCA9IG5ldC5pc0lQdjYob3B0cy5ob3N0KSA/IGBbJHtvcHRzLmhvc3R9XWAgOiBvcHRzLmhvc3Q7CiAgICBsZXQgcGF5bG9hZCA9IGBDT05ORUNUICR7aG9zdH06JHtvcHRzLnBvcnR9IEhUVFAvMS4xXHJcbmA7CgogICAgLy8gSW5qZWN0IHRoZSBgUHJveHktQXV0aG9yaXphdGlvbmAgaGVhZGVyIGlmIG5lY2Vzc2FyeS4KICAgIGlmIChwcm94eS51c2VybmFtZSB8fCBwcm94eS5wYXNzd29yZCkgewogICAgICBjb25zdCBhdXRoID0gYCR7ZGVjb2RlVVJJQ29tcG9uZW50KHByb3h5LnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQocHJveHkucGFzc3dvcmQpfWA7CiAgICAgIGhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKGF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKX1gOwogICAgfQoKICAgIGhlYWRlcnMuSG9zdCA9IGAke2hvc3R9OiR7b3B0cy5wb3J0fWA7CgogICAgaWYgKCFoZWFkZXJzWydQcm94eS1Db25uZWN0aW9uJ10pIHsKICAgICAgaGVhZGVyc1snUHJveHktQ29ubmVjdGlvbiddID0gdGhpcy5rZWVwQWxpdmUgPyAnS2VlcC1BbGl2ZScgOiAnY2xvc2UnOwogICAgfQogICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGhlYWRlcnMpKSB7CiAgICAgIHBheWxvYWQgKz0gYCR7bmFtZX06ICR7aGVhZGVyc1tuYW1lXX1cclxuYDsKICAgIH0KCiAgICBjb25zdCBwcm94eVJlc3BvbnNlUHJvbWlzZSA9IHBhcnNlUHJveHlSZXNwb25zZShzb2NrZXQpOwoKICAgIHNvY2tldC53cml0ZShgJHtwYXlsb2FkfVxyXG5gKTsKCiAgICBjb25zdCB7IGNvbm5lY3QsIGJ1ZmZlcmVkIH0gPSBhd2FpdCBwcm94eVJlc3BvbnNlUHJvbWlzZTsKICAgIHJlcS5lbWl0KCdwcm94eUNvbm5lY3QnLCBjb25uZWN0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQKICAgIC8vIEB0cy1pZ25vcmUgTm90IEV2ZW50RW1pdHRlciBpbiBOb2RlIHR5cGVzCiAgICB0aGlzLmVtaXQoJ3Byb3h5Q29ubmVjdCcsIGNvbm5lY3QsIHJlcSk7CgogICAgaWYgKGNvbm5lY3Quc3RhdHVzQ29kZSA9PT0gMjAwKSB7CiAgICAgIHJlcS5vbmNlKCdzb2NrZXQnLCByZXN1bWUpOwoKICAgICAgaWYgKG9wdHMuc2VjdXJlRW5kcG9pbnQpIHsKICAgICAgICAvLyBUaGUgcHJveHkgaXMgY29ubmVjdGluZyB0byBhIFRMUyBzZXJ2ZXIsIHNvIHVwZ3JhZGUKICAgICAgICAvLyB0aGlzIHNvY2tldCBjb25uZWN0aW9uIHRvIGEgVExTIGNvbm5lY3Rpb24uCiAgICAgICAgZGVidWcoJ1VwZ3JhZGluZyBzb2NrZXQgY29ubmVjdGlvbiB0byBUTFMnKTsKICAgICAgICBjb25zdCBzZXJ2ZXJuYW1lID0gb3B0cy5zZXJ2ZXJuYW1lIHx8IG9wdHMuaG9zdDsKICAgICAgICByZXR1cm4gdGxzLmNvbm5lY3QoewogICAgICAgICAgLi4ub21pdChvcHRzLCAnaG9zdCcsICdwYXRoJywgJ3BvcnQnKSwKICAgICAgICAgIHNvY2tldCwKICAgICAgICAgIHNlcnZlcm5hbWU6IG5ldC5pc0lQKHNlcnZlcm5hbWUpID8gdW5kZWZpbmVkIDogc2VydmVybmFtZSwKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgcmV0dXJuIHNvY2tldDsKICAgIH0KCiAgICAvLyBTb21lIG90aGVyIHN0YXR1cyBjb2RlIHRoYXQncyBub3QgMjAwLi4uIG5lZWQgdG8gcmUtcGxheSB0aGUgSFRUUAogICAgLy8gaGVhZGVyICJkYXRhIiBldmVudHMgb250byB0aGUgc29ja2V0IG9uY2UgdGhlIEhUVFAgbWFjaGluZXJ5IGlzCiAgICAvLyBhdHRhY2hlZCBzbyB0aGF0IHRoZSBub2RlIGNvcmUgYGh0dHBgIGNhbiBwYXJzZSBhbmQgaGFuZGxlIHRoZQogICAgLy8gZXJyb3Igc3RhdHVzIGNvZGUuCgogICAgLy8gQ2xvc2UgdGhlIG9yaWdpbmFsIHNvY2tldCwgYW5kIGEgbmV3ICJmYWtlIiBzb2NrZXQgaXMgcmV0dXJuZWQKICAgIC8vIGluc3RlYWQsIHNvIHRoYXQgdGhlIHByb3h5IGRvZXNuJ3QgZ2V0IHRoZSBIVFRQIHJlcXVlc3QKICAgIC8vIHdyaXR0ZW4gdG8gaXQgKHdoaWNoIG1heSBjb250YWluIGBBdXRob3JpemF0aW9uYCBoZWFkZXJzIG9yIG90aGVyCiAgICAvLyBzZW5zaXRpdmUgZGF0YSkuCiAgICAvLwogICAgLy8gU2VlOiBodHRwczovL2hhY2tlcm9uZS5jb20vcmVwb3J0cy81NDE1MDIKICAgIHNvY2tldC5kZXN0cm95KCk7CgogICAgY29uc3QgZmFrZVNvY2tldCA9IG5ldyBuZXQuU29ja2V0KHsgd3JpdGFibGU6IGZhbHNlIH0pOwogICAgZmFrZVNvY2tldC5yZWFkYWJsZSA9IHRydWU7CgogICAgLy8gTmVlZCB0byB3YWl0IGZvciB0aGUgInNvY2tldCIgZXZlbnQgdG8gcmUtcGxheSB0aGUgImRhdGEiIGV2ZW50cy4KICAgIHJlcS5vbmNlKCdzb2NrZXQnLCAocykgPT4gewogICAgICBkZWJ1ZygnUmVwbGF5aW5nIHByb3h5IGJ1ZmZlciBmb3IgZmFpbGVkIHJlcXVlc3QnKTsKICAgICAgLy8gUmVwbGF5IHRoZSAiYnVmZmVyZWQiIEJ1ZmZlciBvbnRvIHRoZSBmYWtlIGBzb2NrZXRgLCBzaW5jZSBhdAogICAgICAvLyB0aGlzIHBvaW50IHRoZSBIVFRQIG1vZHVsZSBtYWNoaW5lcnkgaGFzIGJlZW4gaG9va2VkIHVwIGZvcgogICAgICAvLyB0aGUgdXNlci4KICAgICAgcy5wdXNoKGJ1ZmZlcmVkKTsKICAgICAgcy5wdXNoKG51bGwpOwogICAgfSk7CgogICAgcmV0dXJuIGZha2VTb2NrZXQ7CiAgfQp9IEh0dHBzUHJveHlBZ2VudC5fX2luaXRTdGF0aWMoKTsKCmZ1bmN0aW9uIHJlc3VtZShzb2NrZXQpIHsKICBzb2NrZXQucmVzdW1lKCk7Cn0KCmZ1bmN0aW9uIG9taXQoCiAgb2JqLAogIC4uLmtleXMKKQoKIHsKICBjb25zdCByZXQgPSB7fQoKOwogIGxldCBrZXk7CiAgZm9yIChrZXkgaW4gb2JqKSB7CiAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkgewogICAgICByZXRba2V5XSA9IG9ialtrZXldOwogICAgfQogIH0KICByZXR1cm4gcmV0Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlKGxocywgcmhzRm4pIHsgaWYgKGxocyAhPSBudWxsKSB7IHJldHVybiBsaHM7IH0gZWxzZSB7IHJldHVybiByaHNGbigpOyB9IH0KLy8gRXN0aW1hdGVkIG1heGltdW0gc2l6ZSBmb3IgcmVhc29uYWJsZSBzdGFuZGFsb25lIGV2ZW50CmNvbnN0IEdaSVBfVEhSRVNIT0xEID0gMTAyNCAqIDMyOwoKLyoqCiAqIEdldHMgYSBzdHJlYW0gZnJvbSBhIFVpbnQ4QXJyYXkgb3Igc3RyaW5nCiAqIFJlYWRhYmxlLmZyb20gaXMgaWRlYWwgYnV0IHdhcyBhZGRlZCBpbiBub2RlLmpzIHYxMi4zLjAgYW5kIHYxMC4xNy4wCiAqLwpmdW5jdGlvbiBzdHJlYW1Gcm9tQm9keShib2R5KSB7CiAgcmV0dXJuIG5ldyBSZWFkYWJsZSh7CiAgICByZWFkKCkgewogICAgICB0aGlzLnB1c2goYm9keSk7CiAgICAgIHRoaXMucHVzaChudWxsKTsKICAgIH0sCiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgVHJhbnNwb3J0IHRoYXQgdXNlcyBuYXRpdmUgdGhlIG5hdGl2ZSAnaHR0cCcgYW5kICdodHRwcycgbW9kdWxlcyB0byBzZW5kIGV2ZW50cyB0byBTZW50cnkuCiAqLwpmdW5jdGlvbiBtYWtlTm9kZVRyYW5zcG9ydChvcHRpb25zKSB7CiAgbGV0IHVybFNlZ21lbnRzOwoKICB0cnkgewogICAgdXJsU2VnbWVudHMgPSBuZXcgVVJMKG9wdGlvbnMudXJsKTsKICB9IGNhdGNoIChlKSB7CiAgICBjb25zb2xlU2FuZGJveCgoKSA9PiB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICAgIGNvbnNvbGUud2FybigKICAgICAgICAnW0BzZW50cnkvbm9kZV06IEludmFsaWQgZHNuIG9yIHR1bm5lbCBvcHRpb24sIHdpbGwgbm90IHNlbmQgYW55IGV2ZW50cy4gVGhlIHR1bm5lbCBvcHRpb24gbXVzdCBiZSBhIGZ1bGwgVVJMIHdoZW4gdXNlZC4nLAogICAgICApOwogICAgfSk7CiAgICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsICgpID0+IFByb21pc2UucmVzb2x2ZSh7fSkpOwogIH0KCiAgY29uc3QgaXNIdHRwcyA9IHVybFNlZ21lbnRzLnByb3RvY29sID09PSAnaHR0cHM6JzsKCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHAgPT4gYG9wdGlvbnMucHJveHlgIHwgYHByb2Nlc3MuZW52Lmh0dHBfcHJveHlgCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHBzID0+IGBvcHRpb25zLnByb3h5YCB8IGBwcm9jZXNzLmVudi5odHRwc19wcm94eWAgfCBgcHJvY2Vzcy5lbnYuaHR0cF9wcm94eWAKICBjb25zdCBwcm94eSA9IGFwcGx5Tm9Qcm94eU9wdGlvbigKICAgIHVybFNlZ21lbnRzLAogICAgb3B0aW9ucy5wcm94eSB8fCAoaXNIdHRwcyA/IHByb2Nlc3MuZW52Lmh0dHBzX3Byb3h5IDogdW5kZWZpbmVkKSB8fCBwcm9jZXNzLmVudi5odHRwX3Byb3h5LAogICk7CgogIGNvbnN0IG5hdGl2ZUh0dHBNb2R1bGUgPSBpc0h0dHBzID8gaHR0cHMgOiBodHRwOwogIGNvbnN0IGtlZXBBbGl2ZSA9IG9wdGlvbnMua2VlcEFsaXZlID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG9wdGlvbnMua2VlcEFsaXZlOwoKICAvLyBUT0RPKHY3KTogRXZhbHVhdGUgaWYgd2UgY2FuIHNldCBrZWVwQWxpdmUgdG8gdHJ1ZS4gVGhpcyB3b3VsZCBpbnZvbHZlIHRlc3RpbmcgZm9yIG1lbW9yeSBsZWFrcyBpbiBvbGRlciBub2RlCiAgLy8gdmVyc2lvbnMoPj0gOCkgYXMgdGhleSBoYWQgbWVtb3J5IGxlYWtzIHdoZW4gdXNpbmcgaXQ6ICMyNTU1CiAgY29uc3QgYWdlbnQgPSBwcm94eQogICAgPyAobmV3IEh0dHBzUHJveHlBZ2VudChwcm94eSkgKQogICAgOiBuZXcgbmF0aXZlSHR0cE1vZHVsZS5BZ2VudCh7IGtlZXBBbGl2ZSwgbWF4U29ja2V0czogMzAsIHRpbWVvdXQ6IDIwMDAgfSk7CgogIGNvbnN0IHJlcXVlc3RFeGVjdXRvciA9IGNyZWF0ZVJlcXVlc3RFeGVjdXRvcihvcHRpb25zLCBfbnVsbGlzaENvYWxlc2NlKG9wdGlvbnMuaHR0cE1vZHVsZSwgKCkgPT4gKCBuYXRpdmVIdHRwTW9kdWxlKSksIGFnZW50KTsKICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsIHJlcXVlc3RFeGVjdXRvcik7Cn0KCi8qKgogKiBIb25vcnMgdGhlIGBub19wcm94eWAgZW52IHZhcmlhYmxlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgdG8gYWxsb3cgZm9yIGhvc3RzIGV4Y2x1c2lvbi4KICoKICogQHBhcmFtIHRyYW5zcG9ydFVybCBUaGUgVVJMIHRoZSB0cmFuc3BvcnQgaW50ZW5kcyB0byBzZW5kIGV2ZW50cyB0by4KICogQHBhcmFtIHByb3h5IFRoZSBjbGllbnQgY29uZmlndXJlZCBwcm94eS4KICogQHJldHVybnMgQSBwcm94eSB0aGUgdHJhbnNwb3J0IHNob3VsZCB1c2UuCiAqLwpmdW5jdGlvbiBhcHBseU5vUHJveHlPcHRpb24odHJhbnNwb3J0VXJsU2VnbWVudHMsIHByb3h5KSB7CiAgY29uc3QgeyBub19wcm94eSB9ID0gcHJvY2Vzcy5lbnY7CgogIGNvbnN0IHVybElzRXhlbXB0RnJvbVByb3h5ID0KICAgIG5vX3Byb3h5ICYmCiAgICBub19wcm94eQogICAgICAuc3BsaXQoJywnKQogICAgICAuc29tZSgKICAgICAgICBleGVtcHRpb24gPT4gdHJhbnNwb3J0VXJsU2VnbWVudHMuaG9zdC5lbmRzV2l0aChleGVtcHRpb24pIHx8IHRyYW5zcG9ydFVybFNlZ21lbnRzLmhvc3RuYW1lLmVuZHNXaXRoKGV4ZW1wdGlvbiksCiAgICAgICk7CgogIGlmICh1cmxJc0V4ZW1wdEZyb21Qcm94eSkgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9IGVsc2UgewogICAgcmV0dXJuIHByb3h5OwogIH0KfQoKLyoqCiAqIENyZWF0ZXMgYSBSZXF1ZXN0RXhlY3V0b3IgdG8gYmUgdXNlZCB3aXRoIGBjcmVhdGVUcmFuc3BvcnRgLgogKi8KZnVuY3Rpb24gY3JlYXRlUmVxdWVzdEV4ZWN1dG9yKAogIG9wdGlvbnMsCiAgaHR0cE1vZHVsZSwKICBhZ2VudCwKKSB7CiAgY29uc3QgeyBob3N0bmFtZSwgcGF0aG5hbWUsIHBvcnQsIHByb3RvY29sLCBzZWFyY2ggfSA9IG5ldyBVUkwob3B0aW9ucy51cmwpOwogIHJldHVybiBmdW5jdGlvbiBtYWtlUmVxdWVzdChyZXF1ZXN0KSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgYm9keSA9IHN0cmVhbUZyb21Cb2R5KHJlcXVlc3QuYm9keSk7CgogICAgICBjb25zdCBoZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMgfTsKCiAgICAgIGlmIChyZXF1ZXN0LmJvZHkubGVuZ3RoID4gR1pJUF9USFJFU0hPTEQpIHsKICAgICAgICBoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPSAnZ3ppcCc7CiAgICAgICAgYm9keSA9IGJvZHkucGlwZShjcmVhdGVHemlwKCkpOwogICAgICB9CgogICAgICBjb25zdCByZXEgPSBodHRwTW9kdWxlLnJlcXVlc3QoCiAgICAgICAgewogICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICBhZ2VudCwKICAgICAgICAgIGhlYWRlcnMsCiAgICAgICAgICBob3N0bmFtZSwKICAgICAgICAgIHBhdGg6IGAke3BhdGhuYW1lfSR7c2VhcmNofWAsCiAgICAgICAgICBwb3J0LAogICAgICAgICAgcHJvdG9jb2wsCiAgICAgICAgICBjYTogb3B0aW9ucy5jYUNlcnRzLAogICAgICAgIH0sCiAgICAgICAgcmVzID0+IHsKICAgICAgICAgIHJlcy5vbignZGF0YScsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMuc2V0RW5jb2RpbmcoJ3V0ZjgnKTsKCiAgICAgICAgICAvLyAiS2V5LXZhbHVlIHBhaXJzIG9mIGhlYWRlciBuYW1lcyBhbmQgdmFsdWVzLiBIZWFkZXIgbmFtZXMgYXJlIGxvd2VyLWNhc2VkLiIKICAgICAgICAgIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzCiAgICAgICAgICBjb25zdCByZXRyeUFmdGVySGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSwgKCkgPT4gKCBudWxsKSk7CiAgICAgICAgICBjb25zdCByYXRlTGltaXRzSGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sneC1zZW50cnktcmF0ZS1saW1pdHMnXSwgKCkgPT4gKCBudWxsKSk7CgogICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlcy5zdGF0dXNDb2RlLAogICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgJ3JldHJ5LWFmdGVyJzogcmV0cnlBZnRlckhlYWRlciwKICAgICAgICAgICAgICAneC1zZW50cnktcmF0ZS1saW1pdHMnOiBBcnJheS5pc0FycmF5KHJhdGVMaW1pdHNIZWFkZXIpID8gcmF0ZUxpbWl0c0hlYWRlclswXSA6IHJhdGVMaW1pdHNIZWFkZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdCk7CiAgICAgIGJvZHkucGlwZShyZXEpOwogICAgfSk7CiAgfTsKfQoKZnVuY3Rpb24gX29wdGlvbmFsQ2hhaW4ob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KY29uc3Qgb3B0aW9ucyA9IHdvcmtlckRhdGE7CmxldCBzZXNzaW9uOwpsZXQgaGFzU2VudEFuckV2ZW50ID0gZmFsc2U7CgpmdW5jdGlvbiBsb2cobXNnKSB7CiAgaWYgKG9wdGlvbnMuZGVidWcpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICBjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7bXNnfWApOwogIH0KfQoKY29uc3QgdXJsID0gZ2V0RW52ZWxvcGVFbmRwb2ludFdpdGhVcmxFbmNvZGVkQXV0aChvcHRpb25zLmRzbik7CmNvbnN0IHRyYW5zcG9ydCA9IG1ha2VOb2RlVHJhbnNwb3J0KHsKICB1cmwsCiAgcmVjb3JkRHJvcHBlZEV2ZW50OiAoKSA9PiB7CiAgICAvLwogIH0sCn0pOwoKYXN5bmMgZnVuY3Rpb24gc2VuZEFibm9ybWFsU2Vzc2lvbigpIHsKICAvLyBvZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIHNlc3Npb24gcGFzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBzZW5kIGl0IGFzIGFibm9ybWFsCiAgaWYgKHNlc3Npb24pIHsKICAgIGxvZygnU2VuZGluZyBhYm5vcm1hbCBzZXNzaW9uJyk7CiAgICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIHsgc3RhdHVzOiAnYWJub3JtYWwnLCBhYm5vcm1hbF9tZWNoYW5pc206ICdhbnJfZm9yZWdyb3VuZCcgfSk7CgogICAgY29uc3QgZW52ZWxvcGUgPSBjcmVhdGVTZXNzaW9uRW52ZWxvcGUoc2Vzc2lvbiwgb3B0aW9ucy5kc24sIG9wdGlvbnMuc2RrTWV0YWRhdGEpOwogICAgLy8gTG9nIHRoZSBlbnZlbG9wZSBzbyB0byBhaWQgaW4gdGVzdGluZwogICAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogICAgYXdhaXQgdHJhbnNwb3J0LnNlbmQoZW52ZWxvcGUpOwoKICAgIHRyeSB7CiAgICAgIC8vIE5vdGlmeSB0aGUgbWFpbiBwcm9jZXNzIHRoYXQgdGhlIHNlc3Npb24gaGFzIGVuZGVkIHNvIHRoZSBzZXNzaW9uIGNhbiBiZSBjbGVhcmVkIGZyb20gdGhlIHNjb3BlCiAgICAgIF9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5wb3N0TWVzc2FnZSwgJ2NhbGwnLCBfMyA9PiBfMygnc2Vzc2lvbi1lbmRlZCcpXSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vIGlnbm9yZQogICAgfQogIH0KfQoKbG9nKCdTdGFydGVkJyk7CgpmdW5jdGlvbiBwcmVwYXJlU3RhY2tGcmFtZXMoc3RhY2tGcmFtZXMpIHsKICBpZiAoIXN0YWNrRnJhbWVzKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgLy8gU3RyaXAgU2VudHJ5IGZyYW1lcyBhbmQgcmV2ZXJzZSB0aGUgc3RhY2sgZnJhbWVzIHNvIHRoZXkgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAgY29uc3Qgc3RyaXBwZWRGcmFtZXMgPSBzdHJpcFNlbnRyeUZyYW1lc0FuZFJldmVyc2Uoc3RhY2tGcmFtZXMpOwoKICAvLyBJZiB3ZSBoYXZlIGFuIGFwcCByb290IHBhdGgsIHJld3JpdGUgdGhlIGZpbGVuYW1lcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgYXBwIHJvb3QKICBpZiAob3B0aW9ucy5hcHBSb290UGF0aCkgewogICAgZm9yIChjb25zdCBmcmFtZSBvZiBzdHJpcHBlZEZyYW1lcykgewogICAgICBpZiAoIWZyYW1lLmZpbGVuYW1lKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIGZyYW1lLmZpbGVuYW1lID0gbm9ybWFsaXplVXJsVG9CYXNlKGZyYW1lLmZpbGVuYW1lLCBvcHRpb25zLmFwcFJvb3RQYXRoKTsKICAgIH0KICB9CgogIHJldHVybiBzdHJpcHBlZEZyYW1lczsKfQoKZnVuY3Rpb24gYXBwbHlTY29wZVRvRXZlbnQoZXZlbnQsIHNjb3BlKSB7CiAgYXBwbHlTY29wZURhdGFUb0V2ZW50KGV2ZW50LCBzY29wZSk7CgogIGlmICghX29wdGlvbmFsQ2hhaW4oW2V2ZW50LCAnYWNjZXNzJywgXzQgPT4gXzQuY29udGV4dHMsICdvcHRpb25hbEFjY2VzcycsIF81ID0+IF81LnRyYWNlXSkpIHsKICAgIGNvbnN0IHsgdHJhY2VJZCwgc3BhbklkLCBwYXJlbnRTcGFuSWQgfSA9IHNjb3BlLnByb3BhZ2F0aW9uQ29udGV4dDsKICAgIGV2ZW50LmNvbnRleHRzID0gewogICAgICB0cmFjZTogewogICAgICAgIHRyYWNlX2lkOiB0cmFjZUlkLAogICAgICAgIHNwYW5faWQ6IHNwYW5JZCwKICAgICAgICBwYXJlbnRfc3Bhbl9pZDogcGFyZW50U3BhbklkLAogICAgICB9LAogICAgICAuLi5ldmVudC5jb250ZXh0cywKICAgIH07CiAgfQp9Cgphc3luYyBmdW5jdGlvbiBzZW5kQW5yRXZlbnQoZnJhbWVzLCBzY29wZSkgewogIGlmIChoYXNTZW50QW5yRXZlbnQpIHsKICAgIHJldHVybjsKICB9CgogIGhhc1NlbnRBbnJFdmVudCA9IHRydWU7CgogIGF3YWl0IHNlbmRBYm5vcm1hbFNlc3Npb24oKTsKCiAgbG9nKCdTZW5kaW5nIGV2ZW50Jyk7CgogIGNvbnN0IGV2ZW50ID0gewogICAgZXZlbnRfaWQ6IHV1aWQ0KCksCiAgICBjb250ZXh0czogb3B0aW9ucy5jb250ZXh0cywKICAgIHJlbGVhc2U6IG9wdGlvbnMucmVsZWFzZSwKICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LAogICAgZGlzdDogb3B0aW9ucy5kaXN0LAogICAgcGxhdGZvcm06ICdub2RlJywKICAgIGxldmVsOiAnZXJyb3InLAogICAgZXhjZXB0aW9uOiB7CiAgICAgIHZhbHVlczogWwogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdBcHBsaWNhdGlvbk5vdFJlc3BvbmRpbmcnLAogICAgICAgICAgdmFsdWU6IGBBcHBsaWNhdGlvbiBOb3QgUmVzcG9uZGluZyBmb3IgYXQgbGVhc3QgJHtvcHRpb25zLmFuclRocmVzaG9sZH0gbXNgLAogICAgICAgICAgc3RhY2t0cmFjZTogeyBmcmFtZXM6IHByZXBhcmVTdGFja0ZyYW1lcyhmcmFtZXMpIH0sCiAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIFVJIGRvZXNuJ3Qgc2F5ICdDcmFzaGVkIGluJyBmb3IgdGhlIHN0YWNrIHRyYWNlCiAgICAgICAgICBtZWNoYW5pc206IHsgdHlwZTogJ0FOUicgfSwKICAgICAgICB9LAogICAgICBdLAogICAgfSwKICAgIHRhZ3M6IG9wdGlvbnMuc3RhdGljVGFncywKICB9OwoKICBpZiAoc2NvcGUpIHsKICAgIGFwcGx5U2NvcGVUb0V2ZW50KGV2ZW50LCBzY29wZSk7CiAgfQoKICBjb25zdCBlbnZlbG9wZSA9IGNyZWF0ZUV2ZW50RW52ZWxvcGUoZXZlbnQsIG9wdGlvbnMuZHNuLCBvcHRpb25zLnNka01ldGFkYXRhKTsKICAvLyBMb2cgdGhlIGVudmVsb3BlIHRvIGFpZCBpbiB0ZXN0aW5nCiAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogIGF3YWl0IHRyYW5zcG9ydC5zZW5kKGVudmVsb3BlKTsKICBhd2FpdCB0cmFuc3BvcnQuZmx1c2goMjAwMCk7CgogIC8vIERlbGF5IGZvciA1IHNlY29uZHMgc28gdGhhdCBzdGRpbyBjYW4gZmx1c2ggaW4gdGhlIG1haW4gZXZlbnQgbG9vcCBldmVyIHJlc3RhcnRzLgogIC8vIFRoaXMgaXMgbWFpbmx5IGZvciB0aGUgYmVuZWZpdCBvZiBsb2dnaW5nL2RlYnVnZ2luZyBpc3N1ZXMuCiAgc2V0VGltZW91dCgoKSA9PiB7CiAgICBwcm9jZXNzLmV4aXQoMCk7CiAgfSwgNTAwMCk7Cn0KCmxldCBkZWJ1Z2dlclBhdXNlOwoKaWYgKG9wdGlvbnMuY2FwdHVyZVN0YWNrVHJhY2UpIHsKICBsb2coJ0Nvbm5lY3RpbmcgdG8gZGVidWdnZXInKTsKCiAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKCkgOwogIHNlc3Npb24uY29ubmVjdFRvTWFpblRocmVhZCgpOwoKICBsb2coJ0Nvbm5lY3RlZCB0byBkZWJ1Z2dlcicpOwoKICAvLyBDb2xsZWN0IHNjcmlwdElkIC0+IHVybCBtYXAgc28gd2UgY2FuIGxvb2sgdXAgdGhlIGZpbGVuYW1lcyBsYXRlcgogIGNvbnN0IHNjcmlwdHMgPSBuZXcgTWFwKCk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnNjcmlwdFBhcnNlZCcsIGV2ZW50ID0+IHsKICAgIHNjcmlwdHMuc2V0KGV2ZW50LnBhcmFtcy5zY3JpcHRJZCwgZXZlbnQucGFyYW1zLnVybCk7CiAgfSk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnBhdXNlZCcsIGV2ZW50ID0+IHsKICAgIGlmIChldmVudC5wYXJhbXMucmVhc29uICE9PSAnb3RoZXInKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0cnkgewogICAgICBsb2coJ0RlYnVnZ2VyIHBhdXNlZCcpOwoKICAgICAgLy8gY29weSB0aGUgZnJhbWVzCiAgICAgIGNvbnN0IGNhbGxGcmFtZXMgPSBbLi4uZXZlbnQucGFyYW1zLmNhbGxGcmFtZXNdOwoKICAgICAgY29uc3QgZ2V0TW9kdWxlTmFtZSA9IG9wdGlvbnMuYXBwUm9vdFBhdGggPyBjcmVhdGVHZXRNb2R1bGVGcm9tRmlsZW5hbWUob3B0aW9ucy5hcHBSb290UGF0aCkgOiAoKSA9PiB1bmRlZmluZWQ7CiAgICAgIGNvbnN0IHN0YWNrRnJhbWVzID0gY2FsbEZyYW1lcy5tYXAoZnJhbWUgPT4KICAgICAgICBjYWxsRnJhbWVUb1N0YWNrRnJhbWUoZnJhbWUsIHNjcmlwdHMuZ2V0KGZyYW1lLmxvY2F0aW9uLnNjcmlwdElkKSwgZ2V0TW9kdWxlTmFtZSksCiAgICAgICk7CgogICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBpbiB0aGUgY3VycmVudGx5IHBhdXNlZCBjb250ZXh0CiAgICAgIHNlc3Npb24ucG9zdCgKICAgICAgICAnUnVudGltZS5ldmFsdWF0ZScsCiAgICAgICAgewogICAgICAgICAgLy8gR3JhYiB0aGUgdHJhY2UgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50IHNjb3BlCiAgICAgICAgICBleHByZXNzaW9uOiAnZ2xvYmFsLl9fU0VOVFJZX0dFVF9TQ09QRVNfXygpOycsCiAgICAgICAgICAvLyBEb24ndCByZS10cmlnZ2VyIHRoZSBkZWJ1Z2dlciBpZiB0aGlzIGNhdXNlcyBhbiBlcnJvcgogICAgICAgICAgc2lsZW50OiB0cnVlLAogICAgICAgICAgLy8gU2VyaWFsaXplIHRoZSByZXN1bHQgdG8ganNvbiBvdGhlcndpc2Ugb25seSBwcmltaXRpdmVzIGFyZSBzdXBwb3J0ZWQKICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCiAgICAgICAgfSwKICAgICAgICAoZXJyLCBwYXJhbSkgPT4gewogICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBsb2coYEVycm9yIGV4ZWN1dGluZyBzY3JpcHQ6ICcke2Vyci5tZXNzYWdlfSdgKTsKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zdCBzY29wZXMgPSBwYXJhbSAmJiBwYXJhbS5yZXN1bHQgPyAocGFyYW0ucmVzdWx0LnZhbHVlICkgOiB1bmRlZmluZWQ7CgogICAgICAgICAgc2Vzc2lvbi5wb3N0KCdEZWJ1Z2dlci5yZXN1bWUnKTsKICAgICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZGlzYWJsZScpOwoKICAgICAgICAgIHNlbmRBbnJFdmVudChzdGFja0ZyYW1lcywgc2NvcGVzKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuJyk7CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwogICAgfSBjYXRjaCAoZSkgewogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLnJlc3VtZScpOwogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLmRpc2FibGUnKTsKICAgICAgdGhyb3cgZTsKICAgIH0KICB9KTsKCiAgZGVidWdnZXJQYXVzZSA9ICgpID0+IHsKICAgIHRyeSB7CiAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZW5hYmxlJywgKCkgPT4gewogICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIucGF1c2UnKTsKICAgICAgfSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vCiAgICB9CiAgfTsKfQoKZnVuY3Rpb24gY3JlYXRlSHJUaW1lcigpIHsKICAvLyBUT0RPICh2OCk6IFdlIGNhbiB1c2UgcHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgYWZ0ZXIgd2UgZHJvcCBub2RlIHY4CiAgbGV0IGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKCiAgcmV0dXJuIHsKICAgIGdldFRpbWVNczogKCkgPT4gewogICAgICBjb25zdCBbc2Vjb25kcywgbmFub1NlY29uZHNdID0gcHJvY2Vzcy5ocnRpbWUobGFzdFBvbGwpOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihzZWNvbmRzICogMWUzICsgbmFub1NlY29uZHMgLyAxZTYpOwogICAgfSwKICAgIHJlc2V0OiAoKSA9PiB7CiAgICAgIGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKICAgIH0sCiAgfTsKfQoKZnVuY3Rpb24gd2F0Y2hkb2dUaW1lb3V0KCkgewogIGxvZygnV2F0Y2hkb2cgdGltZW91dCcpOwoKICBpZiAoZGVidWdnZXJQYXVzZSkgewogICAgbG9nKCdQYXVzaW5nIGRlYnVnZ2VyIHRvIGNhcHR1cmUgc3RhY2sgdHJhY2UnKTsKICAgIGRlYnVnZ2VyUGF1c2UoKTsKICB9IGVsc2UgewogICAgbG9nKCdDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlJyk7CiAgICBzZW5kQW5yRXZlbnQoKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQgb24gd2F0Y2hkb2cgdGltZW91dC4nKTsKICAgIH0pOwogIH0KfQoKY29uc3QgeyBwb2xsIH0gPSB3YXRjaGRvZ1RpbWVyKGNyZWF0ZUhyVGltZXIsIG9wdGlvbnMucG9sbEludGVydmFsLCBvcHRpb25zLmFuclRocmVzaG9sZCwgd2F0Y2hkb2dUaW1lb3V0KTsKCl9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfNiA9PiBfNi5vbiwgJ2NhbGwnLCBfNyA9PiBfNygnbWVzc2FnZScsIChtc2cpID0+IHsKICBpZiAobXNnLnNlc3Npb24pIHsKICAgIHNlc3Npb24gPSBtYWtlU2Vzc2lvbihtc2cuc2Vzc2lvbik7CiAgfQoKICBwb2xsKCk7Cn0pXSk7"},1949:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9023);const i=r(9090);const a=r(4624);const c="Console";const _consoleIntegration=()=>({name:c,setupOnce(){},setup(t){a.addConsoleInstrumentationHandler(({args:n,level:r})=>{if(i.getClient()!==t){return}i.addBreadcrumb({category:"console",level:a.severityLevelFromString(r),message:o.format.apply(undefined,n)},{input:[...n],level:r})})}});const l=i.defineIntegration(_consoleIntegration);const g=i.convertIntegrationFnToClass(c,l);n.Console=g;n.consoleIntegration=l},5587:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(5317);const a=r(9896);const c=r(857);const l=r(6928);const g=r(9023);const u=r(9090);const d=g.promisify(a.readFile);const I=g.promisify(a.readdir);const p="Context";const _nodeContextIntegration=(t={})=>{let n;const r={app:true,os:true,device:true,culture:true,cloudResource:true,...t};async function addContext(t){if(n===undefined){n=_getContexts()}const r=_updateContext(await n);t.contexts={...t.contexts,app:{...r.app,...o([t,"access",t=>t.contexts,"optionalAccess",t=>t.app])},os:{...r.os,...o([t,"access",t=>t.contexts,"optionalAccess",t=>t.os])},device:{...r.device,...o([t,"access",t=>t.contexts,"optionalAccess",t=>t.device])},culture:{...r.culture,...o([t,"access",t=>t.contexts,"optionalAccess",t=>t.culture])},cloud_resource:{...r.cloud_resource,...o([t,"access",t=>t.contexts,"optionalAccess",t=>t.cloud_resource])}};return t}async function _getContexts(){const t={};if(r.os){t.os=await getOsContext()}if(r.app){t.app=getAppContext()}if(r.device){t.device=getDeviceContext(r.device)}if(r.culture){const n=getCultureContext();if(n){t.culture=n}}if(r.cloudResource){t.cloud_resource=getCloudResourceContext()}return t}return{name:p,setupOnce(){},processEvent(t){return addContext(t)}}};const m=u.defineIntegration(_nodeContextIntegration);const C=u.convertIntegrationFnToClass(p,m);function _updateContext(t){if(o([t,"optionalAccess",t=>t.app,"optionalAccess",t=>t.app_memory])){t.app.app_memory=process.memoryUsage().rss}if(o([t,"optionalAccess",t=>t.device,"optionalAccess",t=>t.free_memory])){t.device.free_memory=c.freemem()}return t}async function getOsContext(){const t=c.platform();switch(t){case"darwin":return getDarwinInfo();case"linux":return getLinuxInfo();default:return{name:b[t]||t,version:c.release()}}}function getCultureContext(){try{if(typeof process.versions.icu!=="string"){return}const t=new Date(9e8);const n=new Intl.DateTimeFormat("es",{month:"long"});if(n.format(t)==="enero"){const t=Intl.DateTimeFormat().resolvedOptions();return{locale:t.locale,timezone:t.timeZone}}}catch(t){}return}function getAppContext(){const t=process.memoryUsage().rss;const n=new Date(Date.now()-process.uptime()*1e3).toISOString();return{app_start_time:n,app_memory:t}}function getDeviceContext(t){const n={};let r;try{r=c.uptime&&c.uptime()}catch(t){}if(typeof r==="number"){n.boot_time=new Date(Date.now()-r*1e3).toISOString()}n.arch=c.arch();if(t===true||t.memory){n.memory_size=c.totalmem();n.free_memory=c.freemem()}if(t===true||t.cpu){const t=c.cpus();if(t&&t.length){const r=t[0];n.processor_count=t.length;n.cpu_description=r.model;n.processor_frequency=r.speed}}return n}const b={aix:"IBM AIX",freebsd:"FreeBSD",openbsd:"OpenBSD",sunos:"SunOS",win32:"Windows"};const h=[{name:"fedora-release",distros:["Fedora"]},{name:"redhat-release",distros:["Red Hat Linux","Centos"]},{name:"redhat_version",distros:["Red Hat Linux"]},{name:"SuSE-release",distros:["SUSE Linux"]},{name:"lsb-release",distros:["Ubuntu Linux","Arch Linux"]},{name:"debian_version",distros:["Debian"]},{name:"debian_release",distros:["Debian"]},{name:"arch-release",distros:["Arch Linux"]},{name:"gentoo-release",distros:["Gentoo Linux"]},{name:"novell-release",distros:["SUSE Linux"]},{name:"alpine-release",distros:["Alpine Linux"]}];const f={alpine:t=>t,arch:t=>matchFirst(/distrib_release=(.*)/,t),centos:t=>matchFirst(/release ([^ ]+)/,t),debian:t=>t,fedora:t=>matchFirst(/release (..)/,t),mint:t=>matchFirst(/distrib_release=(.*)/,t),red:t=>matchFirst(/release ([^ ]+)/,t),suse:t=>matchFirst(/VERSION = (.*)\n/,t),ubuntu:t=>matchFirst(/distrib_release=(.*)/,t)};function matchFirst(t,n){const r=t.exec(n);return r?r[1]:undefined}async function getDarwinInfo(){const t={kernel_version:c.release(),name:"Mac OS X",version:`10.${Number(c.release().split(".")[0])-4}`};try{const n=await new Promise((t,n)=>{i.execFile("/usr/bin/sw_vers",(r,o)=>{if(r){n(r);return}t(o)})});t.name=matchFirst(/^ProductName:\s+(.*)$/m,n);t.version=matchFirst(/^ProductVersion:\s+(.*)$/m,n);t.build=matchFirst(/^BuildVersion:\s+(.*)$/m,n)}catch(t){}return t}function getLinuxDistroId(t){return t.split(" ")[0].toLowerCase()}async function getLinuxInfo(){const t={kernel_version:c.release(),name:"Linux"};try{const n=await I("/etc");const r=h.find(t=>n.includes(t.name));if(!r){return t}const o=l.join("/etc",r.name);const i=(await d(o,{encoding:"utf-8"})).toLowerCase();const{distros:a}=r;t.name=a.find(t=>i.indexOf(getLinuxDistroId(t))>=0)||a[0];const c=getLinuxDistroId(t.name);t.version=f[c](i)}catch(t){}return t}function getCloudResourceContext(){if(process.env.VERCEL){return{"cloud.provider":"vercel","cloud.region":process.env.VERCEL_REGION}}else if(process.env.AWS_REGION){return{"cloud.provider":"aws","cloud.region":process.env.AWS_REGION,"cloud.platform":process.env.AWS_EXECUTION_ENV}}else if(process.env.GCP_PROJECT){return{"cloud.provider":"gcp"}}else if(process.env.ALIYUN_REGION_ID){return{"cloud.provider":"alibaba_cloud","cloud.region":process.env.ALIYUN_REGION_ID}}else if(process.env.WEBSITE_SITE_NAME&&process.env.REGION_NAME){return{"cloud.provider":"azure","cloud.region":process.env.REGION_NAME}}else if(process.env.IBM_CLOUD_REGION){return{"cloud.provider":"ibm_cloud","cloud.region":process.env.IBM_CLOUD_REGION}}else if(process.env.TENCENTCLOUD_REGION){return{"cloud.provider":"tencent_cloud","cloud.region":process.env.TENCENTCLOUD_REGION,"cloud.account.id":process.env.TENCENTCLOUD_APPID,"cloud.availability_zone":process.env.TENCENTCLOUD_ZONE}}else if(process.env.NETLIFY){return{"cloud.provider":"netlify"}}else if(process.env.FLY_REGION){return{"cloud.provider":"fly.io","cloud.region":process.env.FLY_REGION}}else if(process.env.DYNO){return{"cloud.provider":"heroku"}}else{return undefined}}n.Context=C;n.getDeviceContext=getDeviceContext;n.nodeContextIntegration=m;n.readDirAsync=I;n.readFileAsync=d},164:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9896);const a=r(9090);const c=r(4624);const l=new c.LRUMap(100);const g=7;const u="ContextLines";function readTextFileAsync(t){return new Promise((n,r)=>{i.readFile(t,"utf8",(t,o)=>{if(t)r(t);else n(o)})})}const _contextLinesIntegration=(t={})=>{const n=t.frameContextLines!==undefined?t.frameContextLines:g;return{name:u,setupOnce(){},processEvent(t){return addSourceContext(t,n)}}};const d=a.defineIntegration(_contextLinesIntegration);const I=a.convertIntegrationFnToClass(u,d);async function addSourceContext(t,n){const r={};const i=[];if(n>0&&o([t,"access",t=>t.exception,"optionalAccess",t=>t.values])){for(const n of t.exception.values){if(!o([n,"access",t=>t.stacktrace,"optionalAccess",t=>t.frames])){continue}for(let t=n.stacktrace.frames.length-1;t>=0;t--){const o=n.stacktrace.frames[t];if(o.filename&&!r[o.filename]&&!l.get(o.filename)){i.push(_readSourceFile(o.filename));r[o.filename]=1}}}}if(i.length>0){await Promise.all(i)}if(n>0&&o([t,"access",t=>t.exception,"optionalAccess",t=>t.values])){for(const r of t.exception.values){if(r.stacktrace&&r.stacktrace.frames){await addSourceContextToFrames(r.stacktrace.frames,n)}}}return t}function addSourceContextToFrames(t,n){for(const r of t){if(r.filename&&r.context_line===undefined){const t=l.get(r.filename);if(t){try{c.addContextToFrame(t,r,n)}catch(t){}}}}}async function _readSourceFile(t){const n=l.get(t);if(n===null){return null}if(n!==undefined){return n}let r=null;try{const n=await readTextFileAsync(t);r=n.split("\n")}catch(t){}l.set(t,r);return r}n.ContextLines=I;n.contextLinesIntegration=d},8861:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);function isResponseObject(t){return t&&t.statusCode!==undefined}function isErrorEvent(t){return t&&t.error!==undefined}function sendErrorToSentry(t){o.captureException(t,{mechanism:{type:"hapi",handled:false,data:{function:"hapiErrorPlugin"}}})}const a={name:"SentryHapiErrorPlugin",version:o.SDK_VERSION,register:async function(t){const n=t;n.events.on("request",(t,n)=>{const r=o.getActiveTransaction();if(isErrorEvent(n)){sendErrorToSentry(n.error)}if(r){r.setStatus("internal_error");r.end()}})}};const c={name:"SentryHapiTracingPlugin",version:o.SDK_VERSION,register:async function(t){const n=t;n.ext("onPreHandler",(t,n)=>{const r=o.continueTrace({sentryTrace:t.headers["sentry-trace"]||undefined,baggage:t.headers["baggage"]||undefined},n=>o.startTransaction({...n,op:"hapi.request",name:t.route.path,description:`${t.route.method} ${t.path}`}));o.getCurrentScope().setSpan(r);return n.continue});n.ext("onPreResponse",(t,n)=>{const r=o.getActiveTransaction();if(t.response&&isResponseObject(t.response)&&r){const n=t.response;n.header("sentry-trace",o.spanToTraceHeader(r));const a=i.dynamicSamplingContextToSentryBaggageHeader(o.getDynamicSamplingContextFromSpan(r));if(a){n.header("baggage",a)}}return n.continue});n.ext("onPostHandler",(t,n)=>{const r=o.getActiveTransaction();if(r){if(t.response&&isResponseObject(t.response)){o.setHttpStatus(r,t.response.statusCode)}r.end()}return n.continue})}};const l="Hapi";const _hapiIntegration=(t={})=>{const n=t.server;return{name:l,setupOnce(){if(!n){return}i.fill(n,"start",t=>async function(){await this.register(c);await this.register(a);const n=t.apply(this);return n})}}};const g=o.defineIntegration(_hapiIntegration);const u=o.convertIntegrationFnToClass(l,g);n.Hapi=u;n.hapiErrorPlugin=a;n.hapiIntegration=g;n.hapiTracingPlugin=c},6:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(4624);const c=r(9904);const l=r(2374);const g=r(5800);const _httpIntegration=(t={})=>{const{breadcrumbs:n,tracing:r,shouldCreateSpanForRequest:o}=t;const i={breadcrumbs:n,tracing:r===false?false:a.dropUndefinedKeys({enableIfHasTracingEnabled:r===true?undefined:true,shouldCreateSpanForRequest:o})};return new Http(i)};const u=i.defineIntegration(_httpIntegration);class Http{static __initStatic(){this.id="Http"}__init(){this.name=Http.id}constructor(t={}){Http.prototype.__init.call(this);this._breadcrumbs=typeof t.breadcrumbs==="undefined"?true:t.breadcrumbs;this._tracing=!t.tracing?undefined:t.tracing===true?{}:t.tracing}setupOnce(t,n){const i=o([n,"call",t=>t(),"access",t=>t.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);const g=_shouldCreateSpans(this._tracing,i);if(!this._breadcrumbs&&!g){return}if(i&&i.instrumenter!=="sentry"){c.DEBUG_BUILD&&a.logger.log("HTTP Integration is skipped because of instrumenter configuration.");return}const u=_getShouldCreateSpanForRequest(g,this._tracing,i);const d=o([i,"optionalAccess",t=>t.tracePropagationTargets])||o([this,"access",t=>t._tracing,"optionalAccess",t=>t.tracePropagationTargets]);const I=r(8611);const p=_createWrappedRequestMethodFactory(I,this._breadcrumbs,u,d);a.fill(I,"get",p);a.fill(I,"request",p);if(l.NODE_VERSION.major>8){const t=r(5692);const n=_createWrappedRequestMethodFactory(t,this._breadcrumbs,u,d);a.fill(t,"get",n);a.fill(t,"request",n)}}}Http.__initStatic();function _createWrappedRequestMethodFactory(t,n,r,l){const u=new a.LRUMap(100);const d=new a.LRUMap(100);const shouldCreateSpan=t=>{if(r===undefined){return true}const n=u.get(t);if(n!==undefined){return n}const o=r(t);u.set(t,o);return o};const shouldAttachTraceData=t=>{if(l===undefined){return true}const n=d.get(t);if(n!==undefined){return n}const r=a.stringMatchesSomePattern(t,l);d.set(t,r);return r};function addRequestBreadcrumb(t,n,r,o){if(!i.getCurrentHub().getIntegration(Http)){return}i.addBreadcrumb({category:"http",data:{status_code:o&&o.statusCode,...n},type:"http"},{event:t,request:r,response:o})}return function wrappedRequestMethodFactory(r){return function wrappedMethod(...l){const u=g.normalizeRequestArgs(t,l);const d=u[0];const I=g.extractRawUrl(d);const p=g.extractUrl(d);const m=i.getClient();if(i.isSentryRequestUrl(p,m)){return r.apply(t,u)}const C=i.getCurrentScope();const b=i.getIsolationScope();const h=i.getActiveSpan();const f=getRequestSpanData(p,d);const y=shouldCreateSpan(I)?o([h,"optionalAccess",t=>t.startChild,"call",t=>t({op:"http.client",origin:"auto.http.node.http",description:`${f["http.method"]} ${f.url}`,data:f})]):undefined;if(m&&shouldAttachTraceData(I)){const{traceId:t,spanId:n,sampled:r,dsc:o}={...b.getPropagationContext(),...C.getPropagationContext()};const c=y?i.spanToTraceHeader(y):a.generateSentryTraceHeader(t,n,r);const l=a.dynamicSamplingContextToSentryBaggageHeader(o||(y?i.getDynamicSamplingContextFromSpan(y):i.getDynamicSamplingContextFromClient(t,m,C)));addHeadersToRequestOptions(d,p,c,l)}else{c.DEBUG_BUILD&&a.logger.log(`[Tracing] Not adding sentry-trace header to outgoing request (${p}) due to mismatching tracePropagationTargets option.`)}return r.apply(t,u).once("response",function(t){const r=this;if(n){addRequestBreadcrumb("response",f,r,t)}if(y){if(t.statusCode){i.setHttpStatus(y,t.statusCode)}y.updateName(g.cleanSpanDescription(i.spanToJSON(y).description||"",d,r)||"");y.end()}}).once("error",function(){const t=this;if(n){addRequestBreadcrumb("error",f,t)}if(y){i.setHttpStatus(y,500);y.updateName(g.cleanSpanDescription(i.spanToJSON(y).description||"",d,t)||"");y.end()}})}}}function addHeadersToRequestOptions(t,n,r,o){const i=t.headers||{};if(i["sentry-trace"]){return}c.DEBUG_BUILD&&a.logger.log(`[Tracing] Adding sentry-trace header ${r} to outgoing request to "${n}": `);t.headers={...t.headers,"sentry-trace":r,...o&&o.length>0&&{baggage:normalizeBaggageHeader(t,o)}}}function getRequestSpanData(t,n){const r=n.method||"GET";const o={url:t,"http.method":r};if(n.hash){o["http.fragment"]=n.hash.substring(1)}if(n.search){o["http.query"]=n.search.substring(1)}return o}function normalizeBaggageHeader(t,n){if(!t.headers||!t.headers.baggage){return n}else if(!n){return t.headers.baggage}else if(Array.isArray(t.headers.baggage)){return[...t.headers.baggage,n]}return[t.headers.baggage,n]}function _shouldCreateSpans(t,n){return t===undefined?false:t.enableIfHasTracingEnabled?i.hasTracingEnabled(n):true}function _getShouldCreateSpanForRequest(t,n,r){const i=t?o([n,"optionalAccess",t=>t.shouldCreateSpanForRequest])||o([r,"optionalAccess",t=>t.shouldCreateSpanForRequest]):()=>false;return i}n.Http=Http;n._getShouldCreateSpanForRequest=_getShouldCreateSpanForRequest;n._shouldCreateSpans=_shouldCreateSpans;n.httpIntegration=u},4640:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1949);const i=r(6);const a=r(731);const c=r(6617);const l=r(101);const g=r(164);const u=r(5587);const d=r(9090);const I=r(5560);const p=r(6893);const m=r(2980);const C=r(6572);const b=r(8861);n.Console=o.Console;n.Http=i.Http;n.OnUncaughtException=a.OnUncaughtException;n.OnUnhandledRejection=c.OnUnhandledRejection;n.Modules=l.Modules;n.ContextLines=g.ContextLines;n.Context=u.Context;n.RequestData=d.RequestData;n.LocalVariables=I.LocalVariables;n.Undici=p.Undici;n.Spotlight=m.Spotlight;n.Anr=C.Anr;n.Hapi=b.Hapi},4843:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function createRateLimiter(t,n,r){let o=0;let i=5;let a=0;setInterval(()=>{if(a===0){if(o>t){i*=2;r(i);if(i>86400){i=86400}a=i}}else{a-=1;if(a===0){n()}}o=0},1e3).unref();return()=>{o+=1}}function isAnonymous(t){return t!==undefined&&(t.length===0||t==="?"||t==="<anonymous>")}function functionNamesMatch(t,n){return t===n||isAnonymous(t)&&isAnonymous(n)}function hashFrames(t){if(t===undefined){return}return t.slice(-10).reduce((t,n)=>`${t},${n.function},${n.lineno},${n.colno}`,"")}function hashFromStack(t,n){if(n===undefined){return undefined}return hashFrames(t(n,1))}n.createRateLimiter=createRateLimiter;n.functionNamesMatch=functionNamesMatch;n.hashFrames=hashFrames;n.hashFromStack=hashFromStack;n.isAnonymous=isAnonymous},5560:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4943);const i=o.LocalVariablesSync;const a=o.localVariablesSyncIntegration;n.LocalVariables=i;n.localVariablesIntegration=a},4943:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(4624);const c=r(2374);const l=r(4843);function createCallbackList(t){let n=[];let r=false;function checkedComplete(o){n=[];if(r){return}r=true;t(o)}n.push(checkedComplete);function add(t){n.push(t)}function next(t){const r=n.pop()||checkedComplete;try{r(t)}catch(n){checkedComplete(t)}}return{add:add,next:next}}class AsyncSession{constructor(){const{Session:t}=r(264);this._session=new t}configureAndConnect(t,n){this._session.connect();this._session.on("Debugger.paused",n=>{t(n,()=>{this._session.post("Debugger.resume")})});this._session.post("Debugger.enable");this._session.post("Debugger.setPauseOnExceptions",{state:n?"all":"uncaught"})}setPauseOnExceptions(t){this._session.post("Debugger.setPauseOnExceptions",{state:t?"all":"uncaught"})}getLocalVariables(t,n){this._getProperties(t,t=>{const{add:r,next:i}=createCallbackList(n);for(const n of t){if(o([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.objectId])&&o([n,"optionalAccess",t=>t.value,"access",t=>t.className])==="Array"){const t=n.value.objectId;r(r=>this._unrollArray(t,n.name,r,i))}else if(o([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.objectId])&&o([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.className])==="Object"){const t=n.value.objectId;r(r=>this._unrollObject(t,n.name,r,i))}else if(o([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value])!=null||o([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.description])!=null){r(t=>this._unrollOther(n,t,i))}}i({})})}_getProperties(t,n){this._session.post("Runtime.getProperties",{objectId:t,ownProperties:true},(t,r)=>{if(t){n([])}else{n(r.result)}})}_unrollArray(t,n,r,i){this._getProperties(t,t=>{r[n]=t.filter(t=>t.name!=="length"&&!isNaN(parseInt(t.name,10))).sort((t,n)=>parseInt(t.name,10)-parseInt(n.name,10)).map(t=>o([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value]));i(r)})}_unrollObject(t,n,r,i){this._getProperties(t,t=>{r[n]=t.map(t=>[t.name,o([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value])]).reduce((t,[n,r])=>{t[n]=r;return t},{});i(r)})}_unrollOther(t,n,r){if(o([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value])!=null){n[t.name]=t.value.value}else if(o([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.description])!=null&&o([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.type])!=="function"){n[t.name]=`<${t.value.description}>`}r(n)}}function tryNewAsyncSession(){try{return new AsyncSession}catch(t){return undefined}}const g="LocalVariables";const _localVariablesSyncIntegration=(t={},n=tryNewAsyncSession())=>{const r=new a.LRUMap(20);let u;let d=false;function handlePaused(t,{params:{reason:i,data:a,callFrames:c}},g){if(i!=="exception"&&i!=="promiseRejection"){g();return}o([u,"optionalCall",t=>t()]);const d=l.hashFromStack(t,o([a,"optionalAccess",t=>t.description]));if(d==undefined){g();return}const{add:I,next:p}=createCallbackList(t=>{r.set(d,t);g()});for(let t=0;t<Math.min(c.length,5);t++){const{scopeChain:r,functionName:i,this:a}=c[t];const l=r.find(t=>t.type==="local");const g=a.className==="global"||!a.className?i:`${a.className}.${i}`;if(o([l,"optionalAccess",t=>t.object,"access",t=>t.objectId])===undefined){I(n=>{n[t]={function:g};p(n)})}else{const r=l.object.objectId;I(i=>o([n,"optionalAccess",t=>t.getLocalVariables,"call",n=>n(r,n=>{i[t]={function:g,vars:n};p(i)})]))}}p([])}function addLocalVariablesToException(t){const n=l.hashFrames(o([t,"optionalAccess",t=>t.stacktrace,"optionalAccess",t=>t.frames]));if(n===undefined){return}const i=r.remove(n);if(i===undefined){return}const a=(o([t,"access",t=>t.stacktrace,"optionalAccess",t=>t.frames])||[]).filter(t=>t.function!=="new Promise");for(let t=0;t<a.length;t++){const n=a.length-t-1;if(!a[n]||!i[t]){break}if(i[t].vars===undefined||a[n].in_app===false||!l.functionNamesMatch(a[n].function,i[t].function)){continue}a[n].vars=i[t].vars}}function addLocalVariablesToEvent(t){for(const n of o([t,"optionalAccess",t=>t.exception,"optionalAccess",t=>t.values])||[]){addLocalVariablesToException(n)}return t}return{name:g,setupOnce(){const r=i.getClient();const g=o([r,"optionalAccess",t=>t.getOptions,"call",t=>t()]);if(n&&o([g,"optionalAccess",t=>t.includeLocalVariables])){const r=c.NODE_VERSION.major<18;if(r){a.logger.log("The `LocalVariables` integration is only supported on Node >= v18.");return}const i=t.captureAllExceptions!==false;n.configureAndConnect((t,n)=>handlePaused(g.stackParser,t,n),i);if(i){const r=t.maxExceptionsPerSecond||50;u=l.createRateLimiter(r,()=>{a.logger.log("Local variables rate-limit lifted.");o([n,"optionalAccess",t=>t.setPauseOnExceptions,"call",t=>t(true)])},t=>{a.logger.log(`Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${t} seconds.`);o([n,"optionalAccess",t=>t.setPauseOnExceptions,"call",t=>t(false)])})}d=true}},processEvent(t){if(d){return addLocalVariablesToEvent(t)}return t},_getCachedFramesCount(){return r.size},_getFirstCachedFrame(){return r.values()[0]}}};const u=i.defineIntegration(_localVariablesSyncIntegration);const d=i.convertIntegrationFnToClass(g,u);n.LocalVariablesSync=d;n.createCallbackList=createCallbackList;n.localVariablesSyncIntegration=u},101:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9896);const i=r(6928);const a=r(9090);let c;const l="Modules";function getPaths(){try{return require.cache?Object.keys(require.cache):[]}catch(t){return[]}}function collectModules(){const t=require.main&&require.main.paths||[];const n=getPaths();const r={};const a={};n.forEach(n=>{let c=n;const updir=()=>{const n=c;c=i.dirname(n);if(!c||n===c||a[n]){return undefined}if(t.indexOf(c)<0){return updir()}const l=i.join(n,"package.json");a[n]=true;if(!o.existsSync(l)){return updir()}try{const t=JSON.parse(o.readFileSync(l,"utf8"));r[t.name]=t.version}catch(t){}};updir()});return r}function _getModules(){if(!c){c=collectModules()}return c}const _modulesIntegration=()=>({name:l,setupOnce(){},processEvent(t){t.modules={...t.modules,..._getModules()};return t}});const g=a.defineIntegration(_modulesIntegration);const u=a.convertIntegrationFnToClass(l,g);n.Modules=u;n.modulesIntegration=g},731:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(9904);const c=r(1441);const l="OnUncaughtException";const _onUncaughtExceptionIntegration=(t={})=>{const n={exitEvenIfOtherHandlersAreRegistered:true,...t};return{name:l,setupOnce(){},setup(t){global.process.on("uncaughtException",makeErrorHandler(t,n))}}};const g=o.defineIntegration(_onUncaughtExceptionIntegration);const u=o.convertIntegrationFnToClass(l,g);function makeErrorHandler(t,n){const r=2e3;let l=false;let g=false;let u=false;let d;const I=t.getOptions();return Object.assign(p=>{let m=c.logAndExitProcess;if(n.onFatalError){m=n.onFatalError}else if(I.onFatalError){m=I.onFatalError}const C=global.process.listeners("uncaughtException").reduce((t,n)=>{if(n.name==="domainUncaughtExceptionClear"||n.tag&&n.tag==="sentry_tracingErrorCallback"||n._errorHandler){return t}else{return t+1}},0);const b=C===0;const h=n.exitEvenIfOtherHandlersAreRegistered||b;if(!l){d=p;l=true;if(o.getClient()===t){o.captureException(p,{originalException:p,captureContext:{level:"fatal"},mechanism:{handled:false,type:"onuncaughtexception"}})}if(!u&&h){u=true;m(p)}}else{if(h){if(u){a.DEBUG_BUILD&&i.logger.warn("uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown");c.logAndExitProcess(p)}else if(!g){g=true;setTimeout(()=>{if(!u){u=true;m(d,p)}},r)}}}},{_errorHandler:true})}n.OnUncaughtException=u;n.makeErrorHandler=makeErrorHandler;n.onUncaughtExceptionIntegration=g},6617:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(1441);const c="OnUnhandledRejection";const _onUnhandledRejectionIntegration=(t={})=>{const n=t.mode||"warn";return{name:c,setupOnce(){},setup(t){global.process.on("unhandledRejection",makeUnhandledPromiseHandler(t,{mode:n}))}}};const l=o.defineIntegration(_onUnhandledRejectionIntegration);const g=o.convertIntegrationFnToClass(c,l);function makeUnhandledPromiseHandler(t,n){return function sendUnhandledPromise(r,i){if(o.getClient()!==t){return}o.captureException(r,{originalException:i,captureContext:{extra:{unhandledPromiseRejection:true}},mechanism:{handled:false,type:"onunhandledrejection"}});handleRejection(r,n)}}function handleRejection(t,n){const r="This error originated either by "+"throwing inside of an async function without a catch block, "+"or by rejecting a promise which was not handled with .catch()."+" The promise rejected with the reason:";if(n.mode==="warn"){i.consoleSandbox(()=>{console.warn(r);console.error(t&&t.stack?t.stack:t)})}else if(n.mode==="strict"){i.consoleSandbox(()=>{console.warn(r)});a.logAndExitProcess(t)}}n.OnUnhandledRejection=g;n.makeUnhandledPromiseHandler=makeUnhandledPromiseHandler;n.onUnhandledRejectionIntegration=l},2980:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8611);const i=r(7016);const a=r(9090);const c=r(4624);const l="Spotlight";const _spotlightIntegration=(t={})=>{const n={sidecarUrl:t.sidecarUrl||"http://localhost:8969/stream"};return{name:l,setupOnce(){},setup(t){if(typeof process==="object"&&process.env&&process.env.NODE_ENV!=="development"){c.logger.warn("[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?")}connectToSpotlight(t,n)}}};const g=a.defineIntegration(_spotlightIntegration);const u=a.convertIntegrationFnToClass(l,g);function connectToSpotlight(t,n){const r=parseSidecarUrl(n.sidecarUrl);if(!r){return}let o=0;if(typeof t.on!=="function"){c.logger.warn("[Spotlight] Cannot connect to spotlight due to missing method on SDK client (`client.on`)");return}t.on("beforeEnvelope",t=>{if(o>3){c.logger.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests");return}const n=c.serializeEnvelope(t);const i=getNativeHttpRequest();const a=i({method:"POST",path:r.pathname,hostname:r.hostname,port:r.port,headers:{"Content-Type":"application/x-sentry-envelope"}},t=>{t.on("data",()=>{});t.on("end",()=>{});t.setEncoding("utf8")});a.on("error",()=>{o++;c.logger.warn("[Spotlight] Failed to send envelope to Spotlight Sidecar")});a.write(n);a.end()})}function parseSidecarUrl(t){try{return new i.URL(`${t}`)}catch(n){c.logger.warn(`[Spotlight] Invalid sidecar URL: ${t}`);return undefined}}function getNativeHttpRequest(){const{request:t}=o;if(isWrapped(t)){return t.__sentry_original__}return t}function isWrapped(t){return"__sentry_original__"in t}n.Spotlight=u;n.getNativeHttpRequest=getNativeHttpRequest;n.spotlightIntegration=g},6893:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(4624);const c=r(2374);n.ChannelName=void 0;(function(t){const n="undici:request:create";t["RequestCreate"]=n;const r="undici:request:headers";t["RequestEnd"]=r;const o="undici:request:error";t["RequestError"]=o})(n.ChannelName||(n.ChannelName={}));const _nativeNodeFetchintegration=t=>new Undici(t);const l=i.defineIntegration(_nativeNodeFetchintegration);class Undici{static __initStatic(){this.id="Undici"}__init(){this.name=Undici.id}__init2(){this._createSpanUrlMap=new a.LRUMap(100)}__init3(){this._headersUrlMap=new a.LRUMap(100)}constructor(t={}){Undici.prototype.__init.call(this);Undici.prototype.__init2.call(this);Undici.prototype.__init3.call(this);Undici.prototype.__init4.call(this);Undici.prototype.__init5.call(this);Undici.prototype.__init6.call(this);this._options={breadcrumbs:t.breadcrumbs===undefined?true:t.breadcrumbs,tracing:t.tracing,shouldCreateSpanForRequest:t.shouldCreateSpanForRequest}}setupOnce(t){if(c.NODE_VERSION.major<16){return}let o;try{o=r(1637)}catch(t){}if(!o||!o.subscribe){return}o.subscribe(n.ChannelName.RequestCreate,this._onRequestCreate);o.subscribe(n.ChannelName.RequestEnd,this._onRequestEnd);o.subscribe(n.ChannelName.RequestError,this._onRequestError)}_shouldCreateSpan(t){if(this._options.tracing===false||this._options.tracing===undefined&&!i.hasTracingEnabled()){return false}if(this._options.shouldCreateSpanForRequest===undefined){return true}const n=this._createSpanUrlMap.get(t);if(n!==undefined){return n}const r=this._options.shouldCreateSpanForRequest(t);this._createSpanUrlMap.set(t,r);return r}__init4(){this._onRequestCreate=t=>{if(!o([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getIntegration,"call",t=>t(Undici)])){return}const{request:n}=t;const r=n.origin?n.origin.toString()+n.path:n.path;const c=i.getClient();if(!c){return}if(i.isSentryRequestUrl(r,c)||n.__sentry_span__!==undefined){return}const l=c.getOptions();const g=i.getCurrentScope();const u=i.getIsolationScope();const d=i.getActiveSpan();const I=this._shouldCreateSpan(r)?createRequestSpan(d,n,r):undefined;if(I){n.__sentry_span__=I}const shouldAttachTraceData=t=>{if(l.tracePropagationTargets===undefined){return true}const n=this._headersUrlMap.get(t);if(n!==undefined){return n}const r=a.stringMatchesSomePattern(t,l.tracePropagationTargets);this._headersUrlMap.set(t,r);return r};if(shouldAttachTraceData(r)){const{traceId:t,spanId:r,sampled:o,dsc:l}={...u.getPropagationContext(),...g.getPropagationContext()};const d=I?i.spanToTraceHeader(I):a.generateSentryTraceHeader(t,r,o);const p=a.dynamicSamplingContextToSentryBaggageHeader(l||(I?i.getDynamicSamplingContextFromSpan(I):i.getDynamicSamplingContextFromClient(t,c,g)));setHeadersOnRequest(n,d,p)}}}__init5(){this._onRequestEnd=t=>{if(!o([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getIntegration,"call",t=>t(Undici)])){return}const{request:n,response:r}=t;const a=n.origin?n.origin.toString()+n.path:n.path;if(i.isSentryRequestUrl(a,i.getClient())){return}const c=n.__sentry_span__;if(c){i.setHttpStatus(c,r.statusCode);c.end()}if(this._options.breadcrumbs){i.addBreadcrumb({category:"http",data:{method:n.method,status_code:r.statusCode,url:a},type:"http"},{event:"response",request:n,response:r})}}}__init6(){this._onRequestError=t=>{if(!o([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getIntegration,"call",t=>t(Undici)])){return}const{request:n}=t;const r=n.origin?n.origin.toString()+n.path:n.path;if(i.isSentryRequestUrl(r,i.getClient())){return}const a=n.__sentry_span__;if(a){a.setStatus("internal_error");a.end()}if(this._options.breadcrumbs){i.addBreadcrumb({category:"http",data:{method:n.method,url:r},level:"error",type:"http"},{event:"error",request:n})}}}}Undici.__initStatic();function setHeadersOnRequest(t,n,r){let o;if(Array.isArray(t.headers)){o=t.headers.some(t=>t==="sentry-trace")}else{const n=t.headers.split("\r\n");o=n.some(t=>t.startsWith("sentry-trace:"))}if(o){return}t.addHeader("sentry-trace",n);if(r){t.addHeader("baggage",r)}}function createRequestSpan(t,n,r){const i=a.parseUrl(r);const c=n.method||"GET";const l={"http.method":c};if(i.search){l["http.query"]=i.search}if(i.hash){l["http.fragment"]=i.hash}return o([t,"optionalAccess",t=>t.startChild,"call",t=>t({op:"http.client",origin:"auto.http.node.undici",description:`${c} ${a.getSanitizedUrlString(i)}`,data:l})])}n.Undici=Undici;n.nativeNodeFetchintegration=l},1441:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(9904);const c=2e3;function logAndExitProcess(t){i.consoleSandbox(()=>{console.error(t)});const n=o.getClient();if(n===undefined){a.DEBUG_BUILD&&i.logger.warn("No NodeClient was defined, we are exiting the process now.");global.process.exit(1)}const r=n.getOptions();const l=r&&r.shutdownTimeout&&r.shutdownTimeout>0&&r.shutdownTimeout||c;n.close(l).then(t=>{if(!t){a.DEBUG_BUILD&&i.logger.warn("We reached the timeout for emptying the request buffer, still exiting now!")}global.process.exit(1)},t=>{a.DEBUG_BUILD&&i.logger.error(t)})}n.logAndExitProcess=logAndExitProcess},5800:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(7016);const a=r(2374);function extractRawUrl(t){const{protocol:n,hostname:r,port:o}=parseRequestOptions(t);const i=t.path?t.path:"/";return`${n}//${r}${o}${i}`}function extractUrl(t){const{protocol:n,hostname:r,port:o}=parseRequestOptions(t);const i=t.pathname||"/";const a=t.auth?redactAuthority(t.auth):"";return`${n}//${a}${r}${o}${i}`}function redactAuthority(t){const[n,r]=t.split(":");return`${n?"[Filtered]":""}:${r?"[Filtered]":""}@`}function cleanSpanDescription(t,n,r){if(!t){return t}let[i,a]=t.split(" ");if(n.host&&!n.protocol){n.protocol=o([r,"optionalAccess",t=>t.agent,"optionalAccess",t=>t.protocol]);a=extractUrl(n)}if(o([a,"optionalAccess",t=>t.startsWith,"call",t=>t("///")])){a=a.slice(2)}return`${i} ${a}`}function urlToOptions(t){const n={protocol:t.protocol,hostname:typeof t.hostname==="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,hash:t.hash,search:t.search,pathname:t.pathname,path:`${t.pathname||""}${t.search||""}`,href:t.href};if(t.port!==""){n.port=Number(t.port)}if(t.username||t.password){n.auth=`${t.username}:${t.password}`}return n}function normalizeRequestArgs(t,n){let r,c;if(typeof n[n.length-1]==="function"){r=n.pop()}if(typeof n[0]==="string"){c=urlToOptions(new i.URL(n[0]))}else if(n[0]instanceof i.URL){c=urlToOptions(n[0])}else{c=n[0];try{const t=new i.URL(c.path||"",`${c.protocol||"http:"}//${c.hostname}`);c={pathname:t.pathname,search:t.search,hash:t.hash,...c}}catch(t){}}if(n.length===2){c={...c,...n[1]}}if(c.protocol===undefined){if(a.NODE_VERSION.major>8){c.protocol=o([o([t,"optionalAccess",t=>t.globalAgent]),"optionalAccess",t=>t.protocol])||o([c.agent,"optionalAccess",t=>t.protocol])||o([c._defaultAgent,"optionalAccess",t=>t.protocol])}else{c.protocol=o([c.agent,"optionalAccess",t=>t.protocol])||o([c._defaultAgent,"optionalAccess",t=>t.protocol])||o([o([t,"optionalAccess",t=>t.globalAgent]),"optionalAccess",t=>t.protocol])}}if(r){return[c,r]}else{return[c]}}function parseRequestOptions(t){const n=t.protocol||"";const r=t.hostname||t.host||"";const o=!t.port||t.port===80||t.port===443||/^(.*):(\d+)$/.test(r)?"":`:${t.port}`;return{protocol:n,hostname:r,port:o}}n.cleanSpanDescription=cleanSpanDescription;n.extractRawUrl=extractRawUrl;n.extractUrl=extractUrl;n.normalizeRequestArgs=normalizeRequestArgs;n.urlToOptions=urlToOptions},7900:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6928);const i=r(4624);function normalizeWindowsPath(t){return t.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function createGetModuleFromFilename(t=(process.argv[1]?i.dirname(process.argv[1]):process.cwd()),n=o.sep==="\\"){const r=n?normalizeWindowsPath(t):t;return t=>{if(!t){return}const i=n?normalizeWindowsPath(t):t;let{dir:a,base:c,ext:l}=o.posix.parse(i);if(l===".js"||l===".mjs"||l===".cjs"){c=c.slice(0,l.length*-1)}if(!a){a="."}const g=a.lastIndexOf("/node_modules");if(g>-1){return`${a.slice(g+14).replace(/\//g,".")}:${c}`}if(a.startsWith(r)){let t=a.slice(r.length+1).replace(/\//g,".");if(t){t+=":"}t+=c;return t}return c}}n.createGetModuleFromFilename=createGetModuleFromFilename},2374:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=o.parseSemver(process.versions.node);n.NODE_VERSION=i},6232:(t,n,r)=>{var{_nullishCoalesce:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(8611);r(5692);const a=Symbol("AgentBaseInternalState");class Agent extends i.Agent{constructor(t){super(t);this[a]={}}isSecureEndpoint(t){if(t){if(typeof t.secureEndpoint==="boolean"){return t.secureEndpoint}if(typeof t.protocol==="string"){return t.protocol==="https:"}}const{stack:n}=new Error;if(typeof n!=="string")return false;return n.split("\n").some(t=>t.indexOf("(https.js:")!==-1||t.indexOf("node:https:")!==-1)}createSocket(t,n,r){const o={...n,secureEndpoint:this.isSecureEndpoint(n)};Promise.resolve().then(()=>this.connect(t,o)).then(c=>{if(c instanceof i.Agent){return c.addRequest(t,o)}this[a].currentSocket=c;super.createSocket(t,n,r)},r)}createConnection(){const t=this[a].currentSocket;this[a].currentSocket=undefined;if(!t){throw new Error("No socket was returned in the `connect()` function")}return t}get defaultPort(){return o(this[a].defaultPort,()=>this.protocol==="https:"?443:80)}set defaultPort(t){if(this[a]){this[a].defaultPort=t}}get protocol(){return o(this[a].protocol,()=>this.isSecureEndpoint()?"https:":"http:")}set protocol(t){if(this[a]){this[a].protocol=t}}}n.Agent=Agent},5949:(t,n,r)=>{var{_nullishCoalesce:o,_optionalChain:i}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const a=r(9278);const c=r(4756);const l=r(7016);const g=r(4624);const u=r(6232);const d=r(8431);function debug(...t){g.logger.log("[https-proxy-agent]",...t)}class HttpsProxyAgent extends u.Agent{static __initStatic(){this.protocols=["http","https"]}constructor(t,n){super(n);this.options={};this.proxy=typeof t==="string"?new l.URL(t):t;this.proxyHeaders=o(i([n,"optionalAccess",t=>t.headers]),()=>({}));debug("Creating new HttpsProxyAgent instance: %o",this.proxy.href);const r=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,"");const a=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...n?omit(n,"headers"):null,host:r,port:a}}async connect(t,n){const{proxy:r}=this;if(!n.host){throw new TypeError('No "host" provided')}let o;if(r.protocol==="https:"){debug("Creating `tls.Socket`: %o",this.connectOpts);const t=this.connectOpts.servername||this.connectOpts.host;o=c.connect({...this.connectOpts,servername:t&&a.isIP(t)?undefined:t})}else{debug("Creating `net.Socket`: %o",this.connectOpts);o=a.connect(this.connectOpts)}const i=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders};const l=a.isIPv6(n.host)?`[${n.host}]`:n.host;let g=`CONNECT ${l}:${n.port} HTTP/1.1\r\n`;if(r.username||r.password){const t=`${decodeURIComponent(r.username)}:${decodeURIComponent(r.password)}`;i["Proxy-Authorization"]=`Basic ${Buffer.from(t).toString("base64")}`}i.Host=`${l}:${n.port}`;if(!i["Proxy-Connection"]){i["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close"}for(const t of Object.keys(i)){g+=`${t}: ${i[t]}\r\n`}const u=d.parseProxyResponse(o);o.write(`${g}\r\n`);const{connect:I,buffered:p}=await u;t.emit("proxyConnect",I);this.emit("proxyConnect",I,t);if(I.statusCode===200){t.once("socket",resume);if(n.secureEndpoint){debug("Upgrading socket connection to TLS");const t=n.servername||n.host;return c.connect({...omit(n,"host","path","port"),socket:o,servername:a.isIP(t)?undefined:t})}return o}o.destroy();const m=new a.Socket({writable:false});m.readable=true;t.once("socket",t=>{debug("Replaying proxy buffer for failed request");t.push(p);t.push(null)});return m}}HttpsProxyAgent.__initStatic();function resume(t){t.resume()}function omit(t,...n){const r={};let o;for(o in t){if(!n.includes(o)){r[o]=t[o]}}return r}n.HttpsProxyAgent=HttpsProxyAgent},8431:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function debug(...t){o.logger.log("[https-proxy-agent:parse-proxy-response]",...t)}function parseProxyResponse(t){return new Promise((n,r)=>{let o=0;const i=[];function read(){const n=t.read();if(n)ondata(n);else t.once("readable",read)}function cleanup(){t.removeListener("end",onend);t.removeListener("error",onerror);t.removeListener("readable",read)}function onend(){cleanup();debug("onend");r(new Error("Proxy connection ended before receiving CONNECT response"))}function onerror(t){cleanup();debug("onerror %o",t);r(t)}function ondata(a){i.push(a);o+=a.length;const c=Buffer.concat(i,o);const l=c.indexOf("\r\n\r\n");if(l===-1){debug("have not received end of HTTP headers yet...");read();return}const g=c.slice(0,l).toString("ascii").split("\r\n");const u=g.shift();if(!u){t.destroy();return r(new Error("No header received from proxy CONNECT response"))}const d=u.split(" ");const I=+d[1];const p=d.slice(2).join(" ");const m={};for(const n of g){if(!n)continue;const o=n.indexOf(":");if(o===-1){t.destroy();return r(new Error(`Invalid header from proxy CONNECT response: "${n}"`))}const i=n.slice(0,o).toLowerCase();const a=n.slice(o+1).trimStart();const c=m[i];if(typeof c==="string"){m[i]=[c,a]}else if(Array.isArray(c)){c.push(a)}else{m[i]=a}}debug("got proxy server response: %o %o",u,m);cleanup();n({connect:{statusCode:I,statusText:p,headers:m},buffered:c})}t.on("error",onerror);t.on("end",onend);read()})}n.parseProxyResponse=parseProxyResponse},2550:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);function extractRequestData(t,n){return o.extractRequestData(t,{include:n})}function parseRequest(t,n,r={}){return o.addRequestDataToEvent(t,n,{include:r})}n.extractRequestData=extractRequestData;n.parseRequest=parseRequest},1062:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(4624);const c=r(7813);const l=r(8235);const g=r(1949);const u=r(5587);const d=r(164);const I=r(6);const p=r(5560);const m=r(101);const C=r(731);const b=r(6617);const h=r(2980);const f=r(6893);const y=r(7900);const G=r(7397);const B=[i.inboundFiltersIntegration(),i.functionToStringIntegration(),i.linkedErrorsIntegration(),i.requestDataIntegration(),g.consoleIntegration(),I.httpIntegration(),f.nativeNodeFetchintegration(),C.onUncaughtExceptionIntegration(),b.onUnhandledRejectionIntegration(),d.contextLinesIntegration(),p.localVariablesIntegration(),u.nodeContextIntegration(),m.modulesIntegration()];function getDefaultIntegrations(t){const n=i.getMainCarrier();const r=o([n,"access",t=>t.__SENTRY__,"optionalAccess",t=>t.integrations])||[];return[...B,...r]}function init(t={}){c.setNodeAsyncContextStrategy();if(t.defaultIntegrations===undefined){t.defaultIntegrations=getDefaultIntegrations()}if(t.dsn===undefined&&process.env.SENTRY_DSN){t.dsn=process.env.SENTRY_DSN}const n=process.env.SENTRY_TRACES_SAMPLE_RATE;if(t.tracesSampleRate===undefined&&n){const r=parseFloat(n);if(isFinite(r)){t.tracesSampleRate=r}}if(t.release===undefined){const n=getSentryRelease();if(n!==undefined){t.release=n}else{t.autoSessionTracking=false}}if(t.environment===undefined&&process.env.SENTRY_ENVIRONMENT){t.environment=process.env.SENTRY_ENVIRONMENT}if(t.autoSessionTracking===undefined&&t.dsn!==undefined){t.autoSessionTracking=true}if(t.instrumenter===undefined){t.instrumenter="sentry"}const r={...t,stackParser:a.stackParserFromStackParserOptions(t.stackParser||A),integrations:i.getIntegrationsToSetup(t),transport:t.transport||G.makeNodeTransport};i.initAndBind(t.clientClass||l.NodeClient,r);if(t.autoSessionTracking){startSessionTracking()}updateScopeFromEnvVariables();if(t.spotlight){const n=i.getClient();if(n&&n.addIntegration){const r=n.getOptions().integrations;for(const t of r){n.addIntegration(t)}n.addIntegration(h.spotlightIntegration({sidecarUrl:typeof t.spotlight==="string"?t.spotlight:undefined}))}}}function isAutoSessionTrackingEnabled(t){if(t===undefined){return false}const n=t&&t.getOptions();if(n&&n.autoSessionTracking!==undefined){return n.autoSessionTracking}return false}function getSentryRelease(t){if(process.env.SENTRY_RELEASE){return process.env.SENTRY_RELEASE}if(a.GLOBAL_OBJ.SENTRY_RELEASE&&a.GLOBAL_OBJ.SENTRY_RELEASE.id){return a.GLOBAL_OBJ.SENTRY_RELEASE.id}return process.env.GITHUB_SHA||process.env.COMMIT_REF||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA||process.env.CF_PAGES_COMMIT_SHA||t}const A=a.createStackParser(a.nodeStackLineParser(y.createGetModuleFromFilename()));function startSessionTracking(){i.startSession();process.on("beforeExit",()=>{const t=i.getIsolationScope().getSession();const n=["exited","crashed"];if(t&&!n.includes(t.status)){i.endSession()}})}function updateScopeFromEnvVariables(){const t=(process.env.SENTRY_USE_ENVIRONMENT||"").toLowerCase();if(!["false","n","no","off","0"].includes(t)){const t=process.env.SENTRY_TRACE;const n=process.env.SENTRY_BAGGAGE;const r=a.propagationContextFromHeaders(t,n);i.getCurrentScope().setPropagationContext(r)}}n.defaultIntegrations=B;n.defaultStackParser=A;n.getDefaultIntegrations=getDefaultIntegrations;n.getSentryRelease=getSentryRelease;n.init=init;n.isAutoSessionTrackingEnabled=isAutoSessionTrackingEnabled},9903:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9062);const i=r(4624);function autoDiscoverNodePerformanceMonitoringIntegrations(){const t=o.lazyLoadedNodePerformanceMonitoringIntegrations.map(t=>{try{return t()}catch(t){return undefined}}).filter(t=>!!t);if(t.length===0){i.logger.warn("Performance monitoring integrations could not be automatically loaded.")}return t.filter(t=>!!t.loadDependency())}n.autoDiscoverNodePerformanceMonitoringIntegrations=autoDiscoverNodePerformanceMonitoringIntegrations},7892:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9062);n.Apollo=o.Apollo;n.Express=o.Express;n.GraphQL=o.GraphQL;n.Mongo=o.Mongo;n.Mysql=o.Mysql;n.Postgres=o.Postgres;n.Prisma=o.Prisma},7397:(t,n,r)=>{var{_nullishCoalesce:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(8611);const a=r(5692);const c=r(2203);const l=r(7016);const g=r(3106);const u=r(9090);const d=r(4624);const I=r(5949);const p=1024*32;function streamFromBody(t){return new c.Readable({read(){this.push(t);this.push(null)}})}function makeNodeTransport(t){let n;try{n=new l.URL(t.url)}catch(n){d.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")});return u.createTransport(t,()=>Promise.resolve({}))}const r=n.protocol==="https:";const c=applyNoProxyOption(n,t.proxy||(r?process.env.https_proxy:undefined)||process.env.http_proxy);const g=r?a:i;const p=t.keepAlive===undefined?false:t.keepAlive;const m=c?new I.HttpsProxyAgent(c):new g.Agent({keepAlive:p,maxSockets:30,timeout:2e3});const C=createRequestExecutor(t,o(t.httpModule,()=>g),m);return u.createTransport(t,C)}function applyNoProxyOption(t,n){const{no_proxy:r}=process.env;const o=r&&r.split(",").some(n=>t.host.endsWith(n)||t.hostname.endsWith(n));if(o){return undefined}else{return n}}function createRequestExecutor(t,n,r){const{hostname:i,pathname:a,port:c,protocol:u,search:d}=new l.URL(t.url);return function makeRequest(l){return new Promise((I,m)=>{let C=streamFromBody(l.body);const b={...t.headers};if(l.body.length>p){b["content-encoding"]="gzip";C=C.pipe(g.createGzip())}const h=n.request({method:"POST",agent:r,headers:b,hostname:i,path:`${a}${d}`,port:c,protocol:u,ca:t.caCerts},t=>{t.on("data",()=>{});t.on("end",()=>{});t.setEncoding("utf8");const n=o(t.headers["retry-after"],()=>null);const r=o(t.headers["x-sentry-rate-limits"],()=>null);I({statusCode:t.statusCode,headers:{"retry-after":n,"x-sentry-rate-limits":Array.isArray(r)?r[0]:r}})});h.on("error",m);C.pipe(h)})}}n.makeNodeTransport=makeNodeTransport},2995:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(4624);function trpcMiddleware(t={}){return function({path:n,type:r,next:c,rawInput:l}){const g=o([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);const u=i.getCurrentScope().getTransaction();if(u){u.updateName(`trpc/${n}`);u.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,"route");u.op="rpc.server";const c={procedure_type:r};if(t.attachRpcInput!==undefined?t.attachRpcInput:o([g,"optionalAccess",t=>t.sendDefaultPii])){c.input=a.normalize(l)}u.setContext("trpc",c)}function captureIfError(t){if(!t.ok){i.captureException(t.error,{mechanism:{handled:false,data:{function:"trpcMiddleware"}}})}}let d;try{d=c()}catch(t){i.captureException(t,{mechanism:{handled:false,data:{function:"trpcMiddleware"}}});throw t}if(a.isThenable(d)){Promise.resolve(d).then(t=>{captureIfError(t)},t=>{i.captureException(t,{mechanism:{handled:false,data:{function:"trpcMiddleware"}}})})}else{captureIfError(d)}return d}}n.trpcMiddleware=trpcMiddleware},9715:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9896);const i=r(6928);function deepReadDirSync(t){const n=i.resolve(t);if(!o.existsSync(n)){throw new Error(`Cannot read contents of ${n}. Directory does not exist.`)}if(!o.statSync(n).isDirectory()){throw new Error(`Cannot read contents of ${n}, because it is not a directory.`)}const deepReadCurrentDir=t=>o.readdirSync(t).reduce((n,r)=>{const a=i.join(t,r);if(o.statSync(a).isDirectory()){return n.concat(deepReadCurrentDir(a))}n.push(a);return n},[]);return deepReadCurrentDir(n).map(t=>i.relative(n,t))}n.deepReadDirSync=deepReadDirSync},9891:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1846);const i=r(1071);function applyAggregateErrorsToEvent(t,n,r=250,i,a,c,l){if(!c.exception||!c.exception.values||!l||!o.isInstanceOf(l.originalException,Error)){return}const g=c.exception.values.length>0?c.exception.values[c.exception.values.length-1]:undefined;if(g){c.exception.values=truncateAggregateExceptions(aggregateExceptionsFromError(t,n,a,l.originalException,i,c.exception.values,g,0),r)}}function aggregateExceptionsFromError(t,n,r,i,a,c,l,g){if(c.length>=r+1){return c}let u=[...c];if(o.isInstanceOf(i[a],Error)){applyExceptionGroupFieldsForParentException(l,g);const o=t(n,i[a]);const c=u.length;applyExceptionGroupFieldsForChildException(o,a,c,g);u=aggregateExceptionsFromError(t,n,r,i[a],a,[o,...u],o,c)}if(Array.isArray(i.errors)){i.errors.forEach((i,c)=>{if(o.isInstanceOf(i,Error)){applyExceptionGroupFieldsForParentException(l,g);const o=t(n,i);const d=u.length;applyExceptionGroupFieldsForChildException(o,`errors[${c}]`,d,g);u=aggregateExceptionsFromError(t,n,r,i,a,[o,...u],o,d)}})}return u}function applyExceptionGroupFieldsForParentException(t,n){t.mechanism=t.mechanism||{type:"generic",handled:true};t.mechanism={...t.mechanism,...t.type==="AggregateError"&&{is_exception_group:true},exception_id:n}}function applyExceptionGroupFieldsForChildException(t,n,r,o){t.mechanism=t.mechanism||{type:"generic",handled:true};t.mechanism={...t.mechanism,type:"chained",source:n,exception_id:r,parent_id:o}}function truncateAggregateExceptions(t,n){return t.map(t=>{if(t.value){t.value=i.truncate(t.value,n)}return t})}n.applyAggregateErrorsToEvent=applyAggregateErrorsToEvent},899:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6309);const i=r(4171);function watchdogTimer(t,n,r,o){const i=t();let a=false;let c=true;setInterval(()=>{const t=i.getTimeMs();if(a===false&&t>n+r){a=true;if(c){o()}}if(t<n+r){a=false}},20);return{poll:()=>{i.reset()},enabled:t=>{c=t}}}function callFrameToStackFrame(t,n,r){const a=n?n.replace(/^file:\/\//,""):undefined;const c=t.location.columnNumber?t.location.columnNumber+1:undefined;const l=t.location.lineNumber?t.location.lineNumber+1:undefined;return o.dropUndefinedKeys({filename:a,module:r(a),function:t.functionName||"?",colno:c,lineno:l,in_app:a?i.filenameIsInApp(a):undefined})}n.callFrameToStackFrame=callFrameToStackFrame;n.watchdogTimer=watchdogTimer},4486:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4462);const i=r(1846);const a=r(9550);const c="baggage";const l="sentry-";const g=/^sentry-/;const u=8192;function baggageHeaderToDynamicSamplingContext(t){if(!i.isString(t)&&!Array.isArray(t)){return undefined}let n={};if(Array.isArray(t)){n=t.reduce((t,n)=>{const r=baggageHeaderToObject(n);for(const n of Object.keys(r)){t[n]=r[n]}return t},{})}else{if(!t){return undefined}n=baggageHeaderToObject(t)}const r=Object.entries(n).reduce((t,[n,r])=>{if(n.match(g)){const o=n.slice(l.length);t[o]=r}return t},{});if(Object.keys(r).length>0){return r}else{return undefined}}function dynamicSamplingContextToSentryBaggageHeader(t){if(!t){return undefined}const n=Object.entries(t).reduce((t,[n,r])=>{if(r){t[`${l}${n}`]=r}return t},{});return objectToBaggageHeader(n)}function baggageHeaderToObject(t){return t.split(",").map(t=>t.split("=").map(t=>decodeURIComponent(t.trim()))).reduce((t,[n,r])=>{t[n]=r;return t},{})}function objectToBaggageHeader(t){if(Object.keys(t).length===0){return undefined}return Object.entries(t).reduce((t,[n,r],i)=>{const c=`${encodeURIComponent(n)}=${encodeURIComponent(r)}`;const l=i===0?c:`${t},${c}`;if(l.length>u){o.DEBUG_BUILD&&a.logger.warn(`Not adding key: ${n} with val: ${r} to baggage header due to exceeding baggage size limits.`);return t}else{return l}},"")}n.BAGGAGE_HEADER_NAME=c;n.MAX_BAGGAGE_STRING_LENGTH=u;n.SENTRY_BAGGAGE_KEY_PREFIX=l;n.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=g;n.baggageHeaderToDynamicSamplingContext=baggageHeaderToDynamicSamplingContext;n.dynamicSamplingContextToSentryBaggageHeader=dynamicSamplingContextToSentryBaggageHeader},4812:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1846);const i=r(5395);const a=i.getGlobalObject();const c=80;function htmlTreeAsString(t,n={}){if(!t){return"<unknown>"}try{let r=t;const o=5;const i=[];let a=0;let l=0;const g=" > ";const u=g.length;let d;const I=Array.isArray(n)?n:n.keyAttrs;const p=!Array.isArray(n)&&n.maxStringLength||c;while(r&&a++<o){d=_htmlElementAsString(r,I);if(d==="html"||a>1&&l+i.length*u+d.length>=p){break}i.push(d);l+=d.length;r=r.parentNode}return i.reverse().join(g)}catch(t){return"<unknown>"}}function _htmlElementAsString(t,n){const r=t;const i=[];let c;let l;let g;let u;let d;if(!r||!r.tagName){return""}if(a.HTMLElement){if(r instanceof HTMLElement&&r.dataset&&r.dataset["sentryComponent"]){return r.dataset["sentryComponent"]}}i.push(r.tagName.toLowerCase());const I=n&&n.length?n.filter(t=>r.getAttribute(t)).map(t=>[t,r.getAttribute(t)]):null;if(I&&I.length){I.forEach(t=>{i.push(`[${t[0]}="${t[1]}"]`)})}else{if(r.id){i.push(`#${r.id}`)}c=r.className;if(c&&o.isString(c)){l=c.split(/\s+/);for(d=0;d<l.length;d++){i.push(`.${l[d]}`)}}}const p=["aria-label","type","name","title","alt"];for(d=0;d<p.length;d++){g=p[d];u=r.getAttribute(g);if(u){i.push(`[${g}="${u}"]`)}}return i.join("")}function getLocationHref(){try{return a.document.location.href}catch(t){return""}}function getDomElement(t){if(a.document&&a.document.querySelector){return a.document.querySelector(t)}return null}function getComponentName(t){if(!a.HTMLElement){return null}let n=t;const r=5;for(let t=0;t<r;t++){if(!n){return null}if(n instanceof HTMLElement&&n.dataset["sentryComponent"]){return n.dataset["sentryComponent"]}n=n.parentNode}return null}n.getComponentName=getComponentName;n.getDomElement=getDomElement;n.getLocationHref=getLocationHref;n.htmlTreeAsString=htmlTreeAsString},8140:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(122);async function _asyncNullishCoalesce(t,n){return o._nullishCoalesce(t,n)}n._asyncNullishCoalesce=_asyncNullishCoalesce},1589:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});async function _asyncOptionalChain(t){let n=undefined;let r=t[0];let o=1;while(o<t.length){const i=t[o];const a=t[o+1];o+=2;if((i==="optionalAccess"||i==="optionalCall")&&r==null){return}if(i==="access"||i==="optionalAccess"){n=r;r=await a(r)}else if(i==="call"||i==="optionalCall"){r=await a((...t)=>r.call(n,...t));n=undefined}}return r}n._asyncOptionalChain=_asyncOptionalChain},7630:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1589);async function _asyncOptionalChainDelete(t){const n=await o._asyncOptionalChain(t);return n==null?true:n}n._asyncOptionalChainDelete=_asyncOptionalChainDelete},122:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function _nullishCoalesce(t,n){return t!=null?t:n()}n._nullishCoalesce=_nullishCoalesce},2239:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function _optionalChain(t){let n=undefined;let r=t[0];let o=1;while(o<t.length){const i=t[o];const a=t[o+1];o+=2;if((i==="optionalAccess"||i==="optionalCall")&&r==null){return}if(i==="access"||i==="optionalAccess"){n=r;r=a(r)}else if(i==="call"||i==="optionalCall"){r=a((...t)=>r.call(n,...t));n=undefined}}return r}n._optionalChain=_optionalChain},8480:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2239);function _optionalChainDelete(t){const n=o._optionalChain(t);return n==null?true:n}n._optionalChainDelete=_optionalChainDelete},8982:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function makeFifoCache(t){let n=[];let r={};return{add(o,i){while(n.length>=t){const t=n.shift();if(t!==undefined){delete r[t]}}if(r[o]){this.delete(o)}n.push(o);r[o]=i},clear(){r={};n=[]},get(t){return r[t]},size(){return n.length},delete(t){if(!r[t]){return false}delete r[t];for(let r=0;r<n.length;r++){if(n[r]===t){n.splice(r,1);break}}return true}}}n.makeFifoCache=makeFifoCache},9419:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6110);const i=r(5315);function createClientReportEnvelope(t,n,r){const a=[{type:"client_report"},{timestamp:r||i.dateTimestampInSeconds(),discarded_events:t}];return o.createEnvelope(n?{dsn:n}:{},[a])}n.createClientReportEnvelope=createClientReportEnvelope},5124:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parseCookie(t){const n={};let r=0;while(r<t.length){const o=t.indexOf("=",r);if(o===-1){break}let i=t.indexOf(";",r);if(i===-1){i=t.length}else if(i<o){r=t.lastIndexOf(";",o-1)+1;continue}const a=t.slice(r,o).trim();if(undefined===n[a]){let r=t.slice(o+1,i).trim();if(r.charCodeAt(0)===34){r=r.slice(1,-1)}try{n[a]=r.indexOf("%")!==-1?decodeURIComponent(r):r}catch(t){n[a]=r}}r=i+1}return n}n.parseCookie=parseCookie},4462:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=r},5301:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4462);const i=r(9550);const a=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function isValidProtocol(t){return t==="http"||t==="https"}function dsnToString(t,n=false){const{host:r,path:o,pass:i,port:a,projectId:c,protocol:l,publicKey:g}=t;return`${l}://${g}${n&&i?`:${i}`:""}`+`@${r}${a?`:${a}`:""}/${o?`${o}/`:o}${c}`}function dsnFromString(t){const n=a.exec(t);if(!n){i.consoleSandbox(()=>{console.error(`Invalid Sentry Dsn: ${t}`)});return undefined}const[r,o,c="",l,g="",u]=n.slice(1);let d="";let I=u;const p=I.split("/");if(p.length>1){d=p.slice(0,-1).join("/");I=p.pop()}if(I){const t=I.match(/^\d+/);if(t){I=t[0]}}return dsnFromComponents({host:l,pass:c,path:d,projectId:I,port:g,protocol:r,publicKey:o})}function dsnFromComponents(t){return{protocol:t.protocol,publicKey:t.publicKey||"",pass:t.pass||"",host:t.host,port:t.port||"",path:t.path||"",projectId:t.projectId}}function validateDsn(t){if(!o.DEBUG_BUILD){return true}const{port:n,projectId:r,protocol:a}=t;const c=["protocol","publicKey","host","projectId"];const l=c.find(n=>{if(!t[n]){i.logger.error(`Invalid Sentry Dsn: ${n} missing`);return true}return false});if(l){return false}if(!r.match(/^\d+$/)){i.logger.error(`Invalid Sentry Dsn: Invalid projectId ${r}`);return false}if(!isValidProtocol(a)){i.logger.error(`Invalid Sentry Dsn: Invalid protocol ${a}`);return false}if(n&&isNaN(parseInt(n,10))){i.logger.error(`Invalid Sentry Dsn: Invalid port ${n}`);return false}return true}function makeDsn(t){const n=typeof t==="string"?dsnFromString(t):dsnFromComponents(t);if(!n||!validateDsn(n)){return undefined}return n}n.dsnFromString=dsnFromString;n.dsnToString=dsnToString;n.makeDsn=makeDsn},2299:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isBrowserBundle(){return typeof __SENTRY_BROWSER_BUNDLE__!=="undefined"&&!!__SENTRY_BROWSER_BUNDLE__}function getSDKSource(){return"npm"}n.getSDKSource=getSDKSource;n.isBrowserBundle=isBrowserBundle},6110:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5301);const i=r(7843);const a=r(6309);function createEnvelope(t,n=[]){return[t,n]}function addItemToEnvelope(t,n){const[r,o]=t;return[r,[...o,n]]}function forEachEnvelopeItem(t,n){const r=t[1];for(const t of r){const r=t[0].type;const o=n(t,r);if(o){return true}}return false}function envelopeContainsItemType(t,n){return forEachEnvelopeItem(t,(t,r)=>n.includes(r))}function encodeUTF8(t,n){const r=n||new TextEncoder;return r.encode(t)}function serializeEnvelope(t,n){const[r,o]=t;let a=JSON.stringify(r);function append(t){if(typeof a==="string"){a=typeof t==="string"?a+t:[encodeUTF8(a,n),t]}else{a.push(typeof t==="string"?encodeUTF8(t,n):t)}}for(const t of o){const[n,r]=t;append(`\n${JSON.stringify(n)}\n`);if(typeof r==="string"||r instanceof Uint8Array){append(r)}else{let t;try{t=JSON.stringify(r)}catch(n){t=JSON.stringify(i.normalize(r))}append(t)}}return typeof a==="string"?a:concatBuffers(a)}function concatBuffers(t){const n=t.reduce((t,n)=>t+n.length,0);const r=new Uint8Array(n);let o=0;for(const n of t){r.set(n,o);o+=n.length}return r}function parseEnvelope(t,n,r){let o=typeof t==="string"?n.encode(t):t;function readBinary(t){const n=o.subarray(0,t);o=o.subarray(t+1);return n}function readJson(){let t=o.indexOf(10);if(t<0){t=o.length}return JSON.parse(r.decode(readBinary(t)))}const i=readJson();const a=[];while(o.length){const t=readJson();const n=typeof t.length==="number"?t.length:undefined;a.push([t,n?readBinary(n):readJson()])}return[i,a]}function createAttachmentEnvelopeItem(t,n){const r=typeof t.data==="string"?encodeUTF8(t.data,n):t.data;return[a.dropUndefinedKeys({type:"attachment",length:r.length,filename:t.filename,content_type:t.contentType,attachment_type:t.attachmentType}),r]}const c={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",statsd:"metric_bucket"};function envelopeItemTypeToDataCategory(t){return c[t]}function getSdkMetadataForEnvelopeHeader(t){if(!t||!t.sdk){return}const{name:n,version:r}=t.sdk;return{name:n,version:r}}function createEventEnvelopeHeaders(t,n,r,i){const c=t.sdkProcessingMetadata&&t.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:t.event_id,sent_at:(new Date).toISOString(),...n&&{sdk:n},...!!r&&i&&{dsn:o.dsnToString(i)},...c&&{trace:a.dropUndefinedKeys({...c})}}}n.addItemToEnvelope=addItemToEnvelope;n.createAttachmentEnvelopeItem=createAttachmentEnvelopeItem;n.createEnvelope=createEnvelope;n.createEventEnvelopeHeaders=createEventEnvelopeHeaders;n.envelopeContainsItemType=envelopeContainsItemType;n.envelopeItemTypeToDataCategory=envelopeItemTypeToDataCategory;n.forEachEnvelopeItem=forEachEnvelopeItem;n.getSdkMetadataForEnvelopeHeader=getSdkMetadataForEnvelopeHeader;n.parseEnvelope=parseEnvelope;n.serializeEnvelope=serializeEnvelope},2930:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});class SentryError extends Error{constructor(t,n="warn"){super(t);this.message=t;this.name=new.target.prototype.constructor.name;Object.setPrototypeOf(this,new.target.prototype);this.logLevel=n}}n.SentryError=SentryError},617:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1846);const i=r(7562);const a=r(7843);const c=r(6309);function parseStackFrames(t,n){return t(n.stack||"",1)}function exceptionFromError(t,n){const r={type:n.name||n.constructor.name,value:n.message};const o=parseStackFrames(t,n);if(o.length){r.stacktrace={frames:o}}return r}function getMessageForObject(t){if("name"in t&&typeof t.name==="string"){let n=`'${t.name}' captured as exception`;if("message"in t&&typeof t.message==="string"){n+=` with message '${t.message}'`}return n}else if("message"in t&&typeof t.message==="string"){return t.message}else{return`Object captured as exception with keys: ${c.extractExceptionKeysForMessage(t)}`}}function eventFromUnknownInput(t,n,r,c){const l=typeof t==="function"?t().getClient():t;let g=r;const u=c&&c.data&&c.data.mechanism;const d=u||{handled:true,type:"generic"};let I;if(!o.isError(r)){if(o.isPlainObject(r)){const t=l&&l.getOptions().normalizeDepth;I={["__serialized__"]:a.normalizeToSize(r,t)};const n=getMessageForObject(r);g=c&&c.syntheticException||new Error(n);g.message=n}else{g=c&&c.syntheticException||new Error(r);g.message=r}d.synthetic=true}const p={exception:{values:[exceptionFromError(n,g)]}};if(I){p.extra=I}i.addExceptionTypeValue(p,undefined,undefined);i.addExceptionMechanism(p,d);return{...p,event_id:c&&c.event_id}}function eventFromMessage(t,n,r="info",i,a){const c={event_id:i&&i.event_id,level:r};if(a&&i&&i.syntheticException){const r=parseStackFrames(t,i.syntheticException);if(r.length){c.exception={values:[{value:n,stacktrace:{frames:r}}]}}}if(o.isParameterizedString(n)){const{__sentry_template_string__:t,__sentry_template_values__:r}=n;c.logentry={message:t,params:r};return c}c.message=n;return c}n.eventFromMessage=eventFromMessage;n.eventFromUnknownInput=eventFromUnknownInput;n.exceptionFromError=exceptionFromError;n.parseStackFrames=parseStackFrames},4624:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9891);const i=r(4812);const a=r(5301);const c=r(2930);const l=r(5395);const g=r(592);const u=r(1846);const d=r(9356);const I=r(9550);const p=r(6600);const m=r(7562);const C=r(4270);const b=r(7843);const h=r(6309);const f=r(3833);const y=r(9875);const G=r(7869);const B=r(3013);const A=r(811);const Z=r(1071);const S=r(2866);const v=r(2360);const W=r(5315);const R=r(1970);const _=r(2299);const V=r(6110);const H=r(9419);const N=r(1173);const E=r(4486);const T=r(1329);const Y=r(590);const X=r(8982);const F=r(617);const w=r(899);const K=r(8690);const k=r(8140);const U=r(1589);const J=r(7630);const x=r(122);const L=r(2239);const z=r(8480);const O=r(2269);const M=r(4192);const D=r(2950);const j=r(4776);const P=r(852);const Q=r(3631);const q=r(6303);const $=r(6004);const ee=r(4171);const te=r(9043);const ne=r(3047);n.applyAggregateErrorsToEvent=o.applyAggregateErrorsToEvent;n.getComponentName=i.getComponentName;n.getDomElement=i.getDomElement;n.getLocationHref=i.getLocationHref;n.htmlTreeAsString=i.htmlTreeAsString;n.dsnFromString=a.dsnFromString;n.dsnToString=a.dsnToString;n.makeDsn=a.makeDsn;n.SentryError=c.SentryError;n.GLOBAL_OBJ=l.GLOBAL_OBJ;n.getGlobalObject=l.getGlobalObject;n.getGlobalSingleton=l.getGlobalSingleton;n.addInstrumentationHandler=g.addInstrumentationHandler;n.isDOMError=u.isDOMError;n.isDOMException=u.isDOMException;n.isElement=u.isElement;n.isError=u.isError;n.isErrorEvent=u.isErrorEvent;n.isEvent=u.isEvent;n.isInstanceOf=u.isInstanceOf;n.isNaN=u.isNaN;n.isParameterizedString=u.isParameterizedString;n.isPlainObject=u.isPlainObject;n.isPrimitive=u.isPrimitive;n.isRegExp=u.isRegExp;n.isString=u.isString;n.isSyntheticEvent=u.isSyntheticEvent;n.isThenable=u.isThenable;n.isVueViewModel=u.isVueViewModel;n.isBrowser=d.isBrowser;n.CONSOLE_LEVELS=I.CONSOLE_LEVELS;n.consoleSandbox=I.consoleSandbox;n.logger=I.logger;n.originalConsoleMethods=I.originalConsoleMethods;n.memoBuilder=p.memoBuilder;n.addContextToFrame=m.addContextToFrame;n.addExceptionMechanism=m.addExceptionMechanism;n.addExceptionTypeValue=m.addExceptionTypeValue;n.arrayify=m.arrayify;n.checkOrSetAlreadyCaught=m.checkOrSetAlreadyCaught;n.getEventDescription=m.getEventDescription;n.parseSemver=m.parseSemver;n.uuid4=m.uuid4;n.dynamicRequire=C.dynamicRequire;n.isNodeEnv=C.isNodeEnv;n.loadModule=C.loadModule;n.normalize=b.normalize;n.normalizeToSize=b.normalizeToSize;n.normalizeUrlToBase=b.normalizeUrlToBase;n.walk=b.walk;n.addNonEnumerableProperty=h.addNonEnumerableProperty;n.convertToPlainObject=h.convertToPlainObject;n.dropUndefinedKeys=h.dropUndefinedKeys;n.extractExceptionKeysForMessage=h.extractExceptionKeysForMessage;n.fill=h.fill;n.getOriginalFunction=h.getOriginalFunction;n.markFunctionWrapped=h.markFunctionWrapped;n.objectify=h.objectify;n.urlEncode=h.urlEncode;n.basename=f.basename;n.dirname=f.dirname;n.isAbsolute=f.isAbsolute;n.join=f.join;n.normalizePath=f.normalizePath;n.relative=f.relative;n.resolve=f.resolve;n.makePromiseBuffer=y.makePromiseBuffer;n.DEFAULT_USER_INCLUDES=G.DEFAULT_USER_INCLUDES;n.addRequestDataToEvent=G.addRequestDataToEvent;n.addRequestDataToTransaction=G.addRequestDataToTransaction;n.extractPathForTransaction=G.extractPathForTransaction;n.extractRequestData=G.extractRequestData;n.winterCGHeadersToDict=G.winterCGHeadersToDict;n.winterCGRequestToRequestData=G.winterCGRequestToRequestData;n.severityFromString=B.severityFromString;n.severityLevelFromString=B.severityLevelFromString;n.validSeverityLevels=B.validSeverityLevels;n.createStackParser=A.createStackParser;n.getFunctionName=A.getFunctionName;n.nodeStackLineParser=A.nodeStackLineParser;n.stackParserFromStackParserOptions=A.stackParserFromStackParserOptions;n.stripSentryFramesAndReverse=A.stripSentryFramesAndReverse;n.isMatchingPattern=Z.isMatchingPattern;n.safeJoin=Z.safeJoin;n.snipLine=Z.snipLine;n.stringMatchesSomePattern=Z.stringMatchesSomePattern;n.truncate=Z.truncate;n.isNativeFetch=S.isNativeFetch;n.supportsDOMError=S.supportsDOMError;n.supportsDOMException=S.supportsDOMException;n.supportsErrorEvent=S.supportsErrorEvent;n.supportsFetch=S.supportsFetch;n.supportsNativeFetch=S.supportsNativeFetch;n.supportsReferrerPolicy=S.supportsReferrerPolicy;n.supportsReportingObserver=S.supportsReportingObserver;n.SyncPromise=v.SyncPromise;n.rejectedSyncPromise=v.rejectedSyncPromise;n.resolvedSyncPromise=v.resolvedSyncPromise;Object.defineProperty(n,"_browserPerformanceTimeOriginMode",{enumerable:true,get:()=>W._browserPerformanceTimeOriginMode});n.browserPerformanceTimeOrigin=W.browserPerformanceTimeOrigin;n.dateTimestampInSeconds=W.dateTimestampInSeconds;n.timestampInSeconds=W.timestampInSeconds;n.timestampWithMs=W.timestampWithMs;n.TRACEPARENT_REGEXP=R.TRACEPARENT_REGEXP;n.extractTraceparentData=R.extractTraceparentData;n.generateSentryTraceHeader=R.generateSentryTraceHeader;n.propagationContextFromHeaders=R.propagationContextFromHeaders;n.tracingContextFromHeaders=R.tracingContextFromHeaders;n.getSDKSource=_.getSDKSource;n.isBrowserBundle=_.isBrowserBundle;n.addItemToEnvelope=V.addItemToEnvelope;n.createAttachmentEnvelopeItem=V.createAttachmentEnvelopeItem;n.createEnvelope=V.createEnvelope;n.createEventEnvelopeHeaders=V.createEventEnvelopeHeaders;n.envelopeContainsItemType=V.envelopeContainsItemType;n.envelopeItemTypeToDataCategory=V.envelopeItemTypeToDataCategory;n.forEachEnvelopeItem=V.forEachEnvelopeItem;n.getSdkMetadataForEnvelopeHeader=V.getSdkMetadataForEnvelopeHeader;n.parseEnvelope=V.parseEnvelope;n.serializeEnvelope=V.serializeEnvelope;n.createClientReportEnvelope=H.createClientReportEnvelope;n.DEFAULT_RETRY_AFTER=N.DEFAULT_RETRY_AFTER;n.disabledUntil=N.disabledUntil;n.isRateLimited=N.isRateLimited;n.parseRetryAfterHeader=N.parseRetryAfterHeader;n.updateRateLimits=N.updateRateLimits;n.BAGGAGE_HEADER_NAME=E.BAGGAGE_HEADER_NAME;n.MAX_BAGGAGE_STRING_LENGTH=E.MAX_BAGGAGE_STRING_LENGTH;n.SENTRY_BAGGAGE_KEY_PREFIX=E.SENTRY_BAGGAGE_KEY_PREFIX;n.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=E.SENTRY_BAGGAGE_KEY_PREFIX_REGEX;n.baggageHeaderToDynamicSamplingContext=E.baggageHeaderToDynamicSamplingContext;n.dynamicSamplingContextToSentryBaggageHeader=E.dynamicSamplingContextToSentryBaggageHeader;n.getNumberOfUrlSegments=T.getNumberOfUrlSegments;n.getSanitizedUrlString=T.getSanitizedUrlString;n.parseUrl=T.parseUrl;n.stripUrlQueryAndFragment=T.stripUrlQueryAndFragment;n.addOrUpdateIntegration=Y.addOrUpdateIntegration;n.makeFifoCache=X.makeFifoCache;n.eventFromMessage=F.eventFromMessage;n.eventFromUnknownInput=F.eventFromUnknownInput;n.exceptionFromError=F.exceptionFromError;n.parseStackFrames=F.parseStackFrames;n.callFrameToStackFrame=w.callFrameToStackFrame;n.watchdogTimer=w.watchdogTimer;n.LRUMap=K.LRUMap;n._asyncNullishCoalesce=k._asyncNullishCoalesce;n._asyncOptionalChain=U._asyncOptionalChain;n._asyncOptionalChainDelete=J._asyncOptionalChainDelete;n._nullishCoalesce=x._nullishCoalesce;n._optionalChain=L._optionalChain;n._optionalChainDelete=z._optionalChainDelete;n.addConsoleInstrumentationHandler=O.addConsoleInstrumentationHandler;n.addClickKeypressInstrumentationHandler=M.addClickKeypressInstrumentationHandler;n.SENTRY_XHR_DATA_KEY=D.SENTRY_XHR_DATA_KEY;n.addXhrInstrumentationHandler=D.addXhrInstrumentationHandler;n.addFetchInstrumentationHandler=j.addFetchInstrumentationHandler;n.addHistoryInstrumentationHandler=P.addHistoryInstrumentationHandler;n.addGlobalErrorInstrumentationHandler=Q.addGlobalErrorInstrumentationHandler;n.addGlobalUnhandledRejectionInstrumentationHandler=q.addGlobalUnhandledRejectionInstrumentationHandler;n.resetInstrumentationHandlers=$.resetInstrumentationHandlers;n.filenameIsInApp=ee.filenameIsInApp;n.escapeStringForRegex=te.escapeStringForRegex;n.supportsHistory=ne.supportsHistory},6004:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4462);const i=r(9550);const a=r(811);const c={};const l={};function addHandler(t,n){c[t]=c[t]||[];c[t].push(n)}function resetInstrumentationHandlers(){Object.keys(c).forEach(t=>{c[t]=undefined})}function maybeInstrument(t,n){if(!l[t]){n();l[t]=true}}function triggerHandlers(t,n){const r=t&&c[t];if(!r){return}for(const c of r){try{c(n)}catch(n){o.DEBUG_BUILD&&i.logger.error(`Error while triggering instrumentation handler.\nType: ${t}\nName: ${a.getFunctionName(c)}\nError:`,n)}}}n.addHandler=addHandler;n.maybeInstrument=maybeInstrument;n.resetInstrumentationHandlers=resetInstrumentationHandlers;n.triggerHandlers=triggerHandlers},2269:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9550);const i=r(6309);const a=r(5395);const c=r(6004);function addConsoleInstrumentationHandler(t){const n="console";c.addHandler(n,t);c.maybeInstrument(n,instrumentConsole)}function instrumentConsole(){if(!("console"in a.GLOBAL_OBJ)){return}o.CONSOLE_LEVELS.forEach(function(t){if(!(t in a.GLOBAL_OBJ.console)){return}i.fill(a.GLOBAL_OBJ.console,t,function(n){o.originalConsoleMethods[t]=n;return function(...n){const r={args:n,level:t};c.triggerHandlers("console",r);const i=o.originalConsoleMethods[t];i&&i.apply(a.GLOBAL_OBJ.console,n)}})})}n.addConsoleInstrumentationHandler=addConsoleInstrumentationHandler},4192:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(7562);const i=r(6309);const a=r(5395);const c=r(6004);const l=a.GLOBAL_OBJ;const g=1e3;let u;let d;let I;function addClickKeypressInstrumentationHandler(t){const n="dom";c.addHandler(n,t);c.maybeInstrument(n,instrumentDOM)}function instrumentDOM(){if(!l.document){return}const t=c.triggerHandlers.bind(null,"dom");const n=makeDOMEventHandler(t,true);l.document.addEventListener("click",n,false);l.document.addEventListener("keypress",n,false);["EventTarget","Node"].forEach(n=>{const r=l[n]&&l[n].prototype;if(!r||!r.hasOwnProperty||!r.hasOwnProperty("addEventListener")){return}i.fill(r,"addEventListener",function(n){return function(r,o,i){if(r==="click"||r=="keypress"){try{const o=this;const a=o.__sentry_instrumentation_handlers__=o.__sentry_instrumentation_handlers__||{};const c=a[r]=a[r]||{refCount:0};if(!c.handler){const o=makeDOMEventHandler(t);c.handler=o;n.call(this,r,o,i)}c.refCount++}catch(t){}}return n.call(this,r,o,i)}});i.fill(r,"removeEventListener",function(t){return function(n,r,o){if(n==="click"||n=="keypress"){try{const r=this;const i=r.__sentry_instrumentation_handlers__||{};const a=i[n];if(a){a.refCount--;if(a.refCount<=0){t.call(this,n,a.handler,o);a.handler=undefined;delete i[n]}if(Object.keys(i).length===0){delete r.__sentry_instrumentation_handlers__}}}catch(t){}}return t.call(this,n,r,o)}})})}function isSimilarToLastCapturedEvent(t){if(t.type!==d){return false}try{if(!t.target||t.target._sentryId!==I){return false}}catch(t){}return true}function shouldSkipDOMEvent(t,n){if(t!=="keypress"){return false}if(!n||!n.tagName){return true}if(n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.isContentEditable){return false}return true}function makeDOMEventHandler(t,n=false){return r=>{if(!r||r["_sentryCaptured"]){return}const a=getEventTarget(r);if(shouldSkipDOMEvent(r.type,a)){return}i.addNonEnumerableProperty(r,"_sentryCaptured",true);if(a&&!a._sentryId){i.addNonEnumerableProperty(a,"_sentryId",o.uuid4())}const c=r.type==="keypress"?"input":r.type;if(!isSimilarToLastCapturedEvent(r)){const o={event:r,name:c,global:n};t(o);d=r.type;I=a?a._sentryId:undefined}clearTimeout(u);u=l.setTimeout(()=>{I=undefined;d=undefined},g)}}function getEventTarget(t){try{return t.target}catch(t){return null}}n.addClickKeypressInstrumentationHandler=addClickKeypressInstrumentationHandler;n.instrumentDOM=instrumentDOM},4776:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6309);const i=r(2866);const a=r(5395);const c=r(6004);function addFetchInstrumentationHandler(t){const n="fetch";c.addHandler(n,t);c.maybeInstrument(n,instrumentFetch)}function instrumentFetch(){if(!i.supportsNativeFetch()){return}o.fill(a.GLOBAL_OBJ,"fetch",function(t){return function(...n){const{method:r,url:o}=parseFetchArgs(n);const i={args:n,fetchData:{method:r,url:o},startTimestamp:Date.now()};c.triggerHandlers("fetch",{...i});return t.apply(a.GLOBAL_OBJ,n).then(t=>{const n={...i,endTimestamp:Date.now(),response:t};c.triggerHandlers("fetch",n);return t},t=>{const n={...i,endTimestamp:Date.now(),error:t};c.triggerHandlers("fetch",n);throw t})}})}function hasProp(t,n){return!!t&&typeof t==="object"&&!!t[n]}function getUrlFromResource(t){if(typeof t==="string"){return t}if(!t){return""}if(hasProp(t,"url")){return t.url}if(t.toString){return t.toString()}return""}function parseFetchArgs(t){if(t.length===0){return{method:"GET",url:""}}if(t.length===2){const[n,r]=t;return{url:getUrlFromResource(n),method:hasProp(r,"method")?String(r.method).toUpperCase():"GET"}}const n=t[0];return{url:getUrlFromResource(n),method:hasProp(n,"method")?String(n.method).toUpperCase():"GET"}}n.addFetchInstrumentationHandler=addFetchInstrumentationHandler;n.parseFetchArgs=parseFetchArgs},3631:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5395);const i=r(6004);let a=null;function addGlobalErrorInstrumentationHandler(t){const n="error";i.addHandler(n,t);i.maybeInstrument(n,instrumentError)}function instrumentError(){a=o.GLOBAL_OBJ.onerror;o.GLOBAL_OBJ.onerror=function(t,n,r,o,c){const l={column:o,error:c,line:r,msg:t,url:n};i.triggerHandlers("error",l);if(a&&!a.__SENTRY_LOADER__){return a.apply(this,arguments)}return false};o.GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__=true}n.addGlobalErrorInstrumentationHandler=addGlobalErrorInstrumentationHandler},6303:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5395);const i=r(6004);let a=null;function addGlobalUnhandledRejectionInstrumentationHandler(t){const n="unhandledrejection";i.addHandler(n,t);i.maybeInstrument(n,instrumentUnhandledRejection)}function instrumentUnhandledRejection(){a=o.GLOBAL_OBJ.onunhandledrejection;o.GLOBAL_OBJ.onunhandledrejection=function(t){const n=t;i.triggerHandlers("unhandledrejection",n);if(a&&!a.__SENTRY_LOADER__){return a.apply(this,arguments)}return true};o.GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__=true}n.addGlobalUnhandledRejectionInstrumentationHandler=addGlobalUnhandledRejectionInstrumentationHandler},852:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6309);r(4462);r(9550);const i=r(5395);const a=r(3047);const c=r(6004);const l=i.GLOBAL_OBJ;let g;function addHistoryInstrumentationHandler(t){const n="history";c.addHandler(n,t);c.maybeInstrument(n,instrumentHistory)}function instrumentHistory(){if(!a.supportsHistory()){return}const t=l.onpopstate;l.onpopstate=function(...n){const r=l.location.href;const o=g;g=r;const i={from:o,to:r};c.triggerHandlers("history",i);if(t){try{return t.apply(this,n)}catch(t){}}};function historyReplacementFunction(t){return function(...n){const r=n.length>2?n[2]:undefined;if(r){const t=g;const n=String(r);g=n;const o={from:t,to:n};c.triggerHandlers("history",o)}return t.apply(this,n)}}o.fill(l.history,"pushState",historyReplacementFunction);o.fill(l.history,"replaceState",historyReplacementFunction)}n.addHistoryInstrumentationHandler=addHistoryInstrumentationHandler},592:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4462);const i=r(9550);const a=r(2269);const c=r(4192);const l=r(4776);const g=r(3631);const u=r(6303);const d=r(852);const I=r(2950);function addInstrumentationHandler(t,n){switch(t){case"console":return a.addConsoleInstrumentationHandler(n);case"dom":return c.addClickKeypressInstrumentationHandler(n);case"xhr":return I.addXhrInstrumentationHandler(n);case"fetch":return l.addFetchInstrumentationHandler(n);case"history":return d.addHistoryInstrumentationHandler(n);case"error":return g.addGlobalErrorInstrumentationHandler(n);case"unhandledrejection":return u.addGlobalUnhandledRejectionInstrumentationHandler(n);default:o.DEBUG_BUILD&&i.logger.warn("unknown instrumentation type:",t)}}n.addConsoleInstrumentationHandler=a.addConsoleInstrumentationHandler;n.addClickKeypressInstrumentationHandler=c.addClickKeypressInstrumentationHandler;n.addFetchInstrumentationHandler=l.addFetchInstrumentationHandler;n.addGlobalErrorInstrumentationHandler=g.addGlobalErrorInstrumentationHandler;n.addGlobalUnhandledRejectionInstrumentationHandler=u.addGlobalUnhandledRejectionInstrumentationHandler;n.addHistoryInstrumentationHandler=d.addHistoryInstrumentationHandler;n.SENTRY_XHR_DATA_KEY=I.SENTRY_XHR_DATA_KEY;n.addXhrInstrumentationHandler=I.addXhrInstrumentationHandler;n.addInstrumentationHandler=addInstrumentationHandler},2950:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1846);const i=r(6309);const a=r(5395);const c=r(6004);const l=a.GLOBAL_OBJ;const g="__sentry_xhr_v3__";function addXhrInstrumentationHandler(t){const n="xhr";c.addHandler(n,t);c.maybeInstrument(n,instrumentXHR)}function instrumentXHR(){if(!l.XMLHttpRequest){return}const t=XMLHttpRequest.prototype;i.fill(t,"open",function(t){return function(...n){const r=Date.now();const a=o.isString(n[0])?n[0].toUpperCase():undefined;const l=parseUrl(n[1]);if(!a||!l){return t.apply(this,n)}this[g]={method:a,url:l,request_headers:{}};if(a==="POST"&&l.match(/sentry_key/)){this.__sentry_own_request__=true}const onreadystatechangeHandler=()=>{const t=this[g];if(!t){return}if(this.readyState===4){try{t.status_code=this.status}catch(t){}const n={args:[a,l],endTimestamp:Date.now(),startTimestamp:r,xhr:this};c.triggerHandlers("xhr",n)}};if("onreadystatechange"in this&&typeof this.onreadystatechange==="function"){i.fill(this,"onreadystatechange",function(t){return function(...n){onreadystatechangeHandler();return t.apply(this,n)}})}else{this.addEventListener("readystatechange",onreadystatechangeHandler)}i.fill(this,"setRequestHeader",function(t){return function(...n){const[r,i]=n;const a=this[g];if(a&&o.isString(r)&&o.isString(i)){a.request_headers[r.toLowerCase()]=i}return t.apply(this,n)}});return t.apply(this,n)}});i.fill(t,"send",function(t){return function(...n){const r=this[g];if(!r){return t.apply(this,n)}if(n[0]!==undefined){r.body=n[0]}const o={args:[r.method,r.url],startTimestamp:Date.now(),xhr:this};c.triggerHandlers("xhr",o);return t.apply(this,n)}})}function parseUrl(t){if(o.isString(t)){return t}try{return t.toString()}catch(t){}return undefined}n.SENTRY_XHR_DATA_KEY=g;n.addXhrInstrumentationHandler=addXhrInstrumentationHandler;n.instrumentXHR=instrumentXHR},1846:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=Object.prototype.toString;function isError(t){switch(r.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return true;default:return isInstanceOf(t,Error)}}function isBuiltin(t,n){return r.call(t)===`[object ${n}]`}function isErrorEvent(t){return isBuiltin(t,"ErrorEvent")}function isDOMError(t){return isBuiltin(t,"DOMError")}function isDOMException(t){return isBuiltin(t,"DOMException")}function isString(t){return isBuiltin(t,"String")}function isParameterizedString(t){return typeof t==="object"&&t!==null&&"__sentry_template_string__"in t&&"__sentry_template_values__"in t}function isPrimitive(t){return t===null||isParameterizedString(t)||typeof t!=="object"&&typeof t!=="function"}function isPlainObject(t){return isBuiltin(t,"Object")}function isEvent(t){return typeof Event!=="undefined"&&isInstanceOf(t,Event)}function isElement(t){return typeof Element!=="undefined"&&isInstanceOf(t,Element)}function isRegExp(t){return isBuiltin(t,"RegExp")}function isThenable(t){return Boolean(t&&t.then&&typeof t.then==="function")}function isSyntheticEvent(t){return isPlainObject(t)&&"nativeEvent"in t&&"preventDefault"in t&&"stopPropagation"in t}function isNaN(t){return typeof t==="number"&&t!==t}function isInstanceOf(t,n){try{return t instanceof n}catch(t){return false}}function isVueViewModel(t){return!!(typeof t==="object"&&t!==null&&(t.__isVue||t._isVue))}n.isDOMError=isDOMError;n.isDOMException=isDOMException;n.isElement=isElement;n.isError=isError;n.isErrorEvent=isErrorEvent;n.isEvent=isEvent;n.isInstanceOf=isInstanceOf;n.isNaN=isNaN;n.isParameterizedString=isParameterizedString;n.isPlainObject=isPlainObject;n.isPrimitive=isPrimitive;n.isRegExp=isRegExp;n.isString=isString;n.isSyntheticEvent=isSyntheticEvent;n.isThenable=isThenable;n.isVueViewModel=isVueViewModel},9356:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4270);const i=r(5395);function isBrowser(){return typeof window!=="undefined"&&(!o.isNodeEnv()||isElectronNodeRenderer())}function isElectronNodeRenderer(){return i.GLOBAL_OBJ.process!==undefined&&i.GLOBAL_OBJ.process.type==="renderer"}n.isBrowser=isBrowser},9550:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4462);const i=r(5395);const a="Sentry Logger ";const c=["debug","info","warn","error","log","assert","trace"];const l={};function consoleSandbox(t){if(!("console"in i.GLOBAL_OBJ)){return t()}const n=i.GLOBAL_OBJ.console;const r={};const o=Object.keys(l);o.forEach(t=>{const o=l[t];r[t]=n[t];n[t]=o});try{return t()}finally{o.forEach(t=>{n[t]=r[t]})}}function makeLogger(){let t=false;const n={enable:()=>{t=true},disable:()=>{t=false},isEnabled:()=>t};if(o.DEBUG_BUILD){c.forEach(r=>{n[r]=(...n)=>{if(t){consoleSandbox(()=>{i.GLOBAL_OBJ.console[r](`${a}[${r}]:`,...n)})}}})}else{c.forEach(t=>{n[t]=()=>undefined})}return n}const g=makeLogger();n.CONSOLE_LEVELS=c;n.consoleSandbox=consoleSandbox;n.logger=g;n.originalConsoleMethods=l},8690:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});class LRUMap{constructor(t){this._maxSize=t;this._cache=new Map}get size(){return this._cache.size}get(t){const n=this._cache.get(t);if(n===undefined){return undefined}this._cache.delete(t);this._cache.set(t,n);return n}set(t,n){if(this._cache.size>=this._maxSize){this._cache.delete(this._cache.keys().next().value)}this._cache.set(t,n)}remove(t){const n=this._cache.get(t);if(n){this._cache.delete(t)}return n}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){const t=[];this._cache.forEach(n=>t.push(n));return t}}n.LRUMap=LRUMap},6600:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function memoBuilder(){const t=typeof WeakSet==="function";const n=t?new WeakSet:[];function memoize(r){if(t){if(n.has(r)){return true}n.add(r);return false}for(let t=0;t<n.length;t++){const o=n[t];if(o===r){return true}}n.push(r);return false}function unmemoize(r){if(t){n.delete(r)}else{for(let t=0;t<n.length;t++){if(n[t]===r){n.splice(t,1);break}}}}return[memoize,unmemoize]}n.memoBuilder=memoBuilder},7562:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6309);const i=r(1071);const a=r(5395);function uuid4(){const t=a.GLOBAL_OBJ;const n=t.crypto||t.msCrypto;let getRandomByte=()=>Math.random()*16;try{if(n&&n.randomUUID){return n.randomUUID().replace(/-/g,"")}if(n&&n.getRandomValues){getRandomByte=()=>{const t=new Uint8Array(1);n.getRandomValues(t);return t[0]}}}catch(t){}return([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,t=>(t^(getRandomByte()&15)>>t/4).toString(16))}function getFirstException(t){return t.exception&&t.exception.values?t.exception.values[0]:undefined}function getEventDescription(t){const{message:n,event_id:r}=t;if(n){return n}const o=getFirstException(t);if(o){if(o.type&&o.value){return`${o.type}: ${o.value}`}return o.type||o.value||r||"<unknown>"}return r||"<unknown>"}function addExceptionTypeValue(t,n,r){const o=t.exception=t.exception||{};const i=o.values=o.values||[];const a=i[0]=i[0]||{};if(!a.value){a.value=n||""}if(!a.type){a.type=r||"Error"}}function addExceptionMechanism(t,n){const r=getFirstException(t);if(!r){return}const o={type:"generic",handled:true};const i=r.mechanism;r.mechanism={...o,...i,...n};if(n&&"data"in n){const t={...i&&i.data,...n.data};r.mechanism.data=t}}const c=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;function parseSemver(t){const n=t.match(c)||[];const r=parseInt(n[1],10);const o=parseInt(n[2],10);const i=parseInt(n[3],10);return{buildmetadata:n[5],major:isNaN(r)?undefined:r,minor:isNaN(o)?undefined:o,patch:isNaN(i)?undefined:i,prerelease:n[4]}}function addContextToFrame(t,n,r=5){if(n.lineno===undefined){return}const o=t.length;const a=Math.max(Math.min(o-1,n.lineno-1),0);n.pre_context=t.slice(Math.max(0,a-r),a).map(t=>i.snipLine(t,0));n.context_line=i.snipLine(t[Math.min(o-1,a)],n.colno||0);n.post_context=t.slice(Math.min(a+1,o),a+1+r).map(t=>i.snipLine(t,0))}function checkOrSetAlreadyCaught(t){if(t&&t.__sentry_captured__){return true}try{o.addNonEnumerableProperty(t,"__sentry_captured__",true)}catch(t){}return false}function arrayify(t){return Array.isArray(t)?t:[t]}n.addContextToFrame=addContextToFrame;n.addExceptionMechanism=addExceptionMechanism;n.addExceptionTypeValue=addExceptionTypeValue;n.arrayify=arrayify;n.checkOrSetAlreadyCaught=checkOrSetAlreadyCaught;n.getEventDescription=getEventDescription;n.parseSemver=parseSemver;n.uuid4=uuid4},4171:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function filenameIsInApp(t,n=false){const r=n||t&&!t.startsWith("/")&&!t.match(/^[A-Z]:/)&&!t.startsWith(".")&&!t.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//);return!r&&t!==undefined&&!t.includes("node_modules/")}function node(t){const n=/^\s*[-]{4,}$/;const r=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;return o=>{const i=o.match(r);if(i){let n;let r;let o;let a;let c;if(i[1]){o=i[1];let t=o.lastIndexOf(".");if(o[t-1]==="."){t--}if(t>0){n=o.slice(0,t);r=o.slice(t+1);const i=n.indexOf(".Module");if(i>0){o=o.slice(i+1);n=n.slice(0,i)}}a=undefined}if(r){a=n;c=r}if(r==="<anonymous>"){c=undefined;o=undefined}if(o===undefined){c=c||"<anonymous>";o=a?`${a}.${c}`:c}let l=i[2]&&i[2].startsWith("file://")?i[2].slice(7):i[2];const g=i[5]==="native";if(l&&l.match(/\/[A-Z]:/)){l=l.slice(1)}if(!l&&i[5]&&!g){l=i[5]}return{filename:l,module:t?t(l):undefined,function:o,lineno:parseInt(i[3],10)||undefined,colno:parseInt(i[4],10)||undefined,in_app:filenameIsInApp(l,g)}}if(o.match(n)){return{filename:o}}return undefined}}n.filenameIsInApp=filenameIsInApp;n.node=node},4270:(t,n,r)=>{t=r.nmd(t);Object.defineProperty(n,"__esModule",{value:true});const o=r(2299);function isNodeEnv(){return!o.isBrowserBundle()&&Object.prototype.toString.call(typeof process!=="undefined"?process:0)==="[object process]"}function dynamicRequire(t,n){return t.require(n)}function loadModule(n){let r;try{r=dynamicRequire(t,n)}catch(t){}try{const{cwd:o}=dynamicRequire(t,"process");r=dynamicRequire(t,`${o()}/node_modules/${n}`)}catch(t){}return r}n.dynamicRequire=dynamicRequire;n.isNodeEnv=isNodeEnv;n.loadModule=loadModule},7843:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1846);const i=r(6600);const a=r(6309);const c=r(811);function normalize(t,n=100,r=+Infinity){try{return visit("",t,n,r)}catch(t){return{ERROR:`**non-serializable** (${t})`}}}function normalizeToSize(t,n=3,r=100*1024){const o=normalize(t,n);if(jsonSize(o)>r){return normalizeToSize(t,n-1,r)}return o}function visit(t,n,r=+Infinity,c=+Infinity,l=i.memoBuilder()){const[g,u]=l;if(n==null||["number","boolean","string"].includes(typeof n)&&!o.isNaN(n)){return n}const d=stringifyValue(t,n);if(!d.startsWith("[object ")){return d}if(n["__sentry_skip_normalization__"]){return n}const I=typeof n["__sentry_override_normalization_depth__"]==="number"?n["__sentry_override_normalization_depth__"]:r;if(I===0){return d.replace("object ","")}if(g(n)){return"[Circular ~]"}const p=n;if(p&&typeof p.toJSON==="function"){try{const t=p.toJSON();return visit("",t,I-1,c,l)}catch(t){}}const m=Array.isArray(n)?[]:{};let C=0;const b=a.convertToPlainObject(n);for(const t in b){if(!Object.prototype.hasOwnProperty.call(b,t)){continue}if(C>=c){m[t]="[MaxProperties ~]";break}const n=b[t];m[t]=visit(t,n,I-1,c,l);C++}u(n);return m}function stringifyValue(t,n){try{if(t==="domain"&&n&&typeof n==="object"&&n._events){return"[Domain]"}if(t==="domainEmitter"){return"[DomainEmitter]"}if(typeof global!=="undefined"&&n===global){return"[Global]"}if(typeof window!=="undefined"&&n===window){return"[Window]"}if(typeof document!=="undefined"&&n===document){return"[Document]"}if(o.isVueViewModel(n)){return"[VueViewModel]"}if(o.isSyntheticEvent(n)){return"[SyntheticEvent]"}if(typeof n==="number"&&n!==n){return"[NaN]"}if(typeof n==="function"){return`[Function: ${c.getFunctionName(n)}]`}if(typeof n==="symbol"){return`[${String(n)}]`}if(typeof n==="bigint"){return`[BigInt: ${String(n)}]`}const r=getConstructorName(n);if(/^HTML(\w*)Element$/.test(r)){return`[HTMLElement: ${r}]`}return`[object ${r}]`}catch(t){return`**non-serializable** (${t})`}}function getConstructorName(t){const n=Object.getPrototypeOf(t);return n?n.constructor.name:"null prototype"}function utf8Length(t){return~-encodeURI(t).split(/%..|./).length}function jsonSize(t){return utf8Length(JSON.stringify(t))}function normalizeUrlToBase(t,n){const r=n.replace(/\\/g,"/").replace(/[|\\{}()[\]^$+*?.]/g,"\\$&");let o=t;try{o=decodeURI(t)}catch(t){}return o.replace(/\\/g,"/").replace(/webpack:\/?/g,"").replace(new RegExp(`(file://)?/*${r}/*`,"ig"),"app:///")}n.normalize=normalize;n.normalizeToSize=normalizeToSize;n.normalizeUrlToBase=normalizeUrlToBase;n.walk=visit},6309:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4812);const i=r(4462);const a=r(1846);const c=r(9550);const l=r(1071);function fill(t,n,r){if(!(n in t)){return}const o=t[n];const i=r(o);if(typeof i==="function"){markFunctionWrapped(i,o)}t[n]=i}function addNonEnumerableProperty(t,n,r){try{Object.defineProperty(t,n,{value:r,writable:true,configurable:true})}catch(r){i.DEBUG_BUILD&&c.logger.log(`Failed to add non-enumerable property "${n}" to object`,t)}}function markFunctionWrapped(t,n){try{const r=n.prototype||{};t.prototype=n.prototype=r;addNonEnumerableProperty(t,"__sentry_original__",n)}catch(t){}}function getOriginalFunction(t){return t.__sentry_original__}function urlEncode(t){return Object.keys(t).map(n=>`${encodeURIComponent(n)}=${encodeURIComponent(t[n])}`).join("&")}function convertToPlainObject(t){if(a.isError(t)){return{message:t.message,name:t.name,stack:t.stack,...getOwnProperties(t)}}else if(a.isEvent(t)){const n={type:t.type,target:serializeEventTarget(t.target),currentTarget:serializeEventTarget(t.currentTarget),...getOwnProperties(t)};if(typeof CustomEvent!=="undefined"&&a.isInstanceOf(t,CustomEvent)){n.detail=t.detail}return n}else{return t}}function serializeEventTarget(t){try{return a.isElement(t)?o.htmlTreeAsString(t):Object.prototype.toString.call(t)}catch(t){return"<unknown>"}}function getOwnProperties(t){if(typeof t==="object"&&t!==null){const n={};for(const r in t){if(Object.prototype.hasOwnProperty.call(t,r)){n[r]=t[r]}}return n}else{return{}}}function extractExceptionKeysForMessage(t,n=40){const r=Object.keys(convertToPlainObject(t));r.sort();if(!r.length){return"[object has no keys]"}if(r[0].length>=n){return l.truncate(r[0],n)}for(let t=r.length;t>0;t--){const o=r.slice(0,t).join(", ");if(o.length>n){continue}if(t===r.length){return o}return l.truncate(o,n)}return""}function dropUndefinedKeys(t){const n=new Map;return _dropUndefinedKeys(t,n)}function _dropUndefinedKeys(t,n){if(isPojo(t)){const r=n.get(t);if(r!==undefined){return r}const o={};n.set(t,o);for(const r of Object.keys(t)){if(typeof t[r]!=="undefined"){o[r]=_dropUndefinedKeys(t[r],n)}}return o}if(Array.isArray(t)){const r=n.get(t);if(r!==undefined){return r}const o=[];n.set(t,o);t.forEach(t=>{o.push(_dropUndefinedKeys(t,n))});return o}return t}function isPojo(t){if(!a.isPlainObject(t)){return false}try{const n=Object.getPrototypeOf(t).constructor.name;return!n||n==="Object"}catch(t){return true}}function objectify(t){let n;switch(true){case t===undefined||t===null:n=new String(t);break;case typeof t==="symbol"||typeof t==="bigint":n=Object(t);break;case a.isPrimitive(t):n=new t.constructor(t);break;default:n=t;break}return n}n.addNonEnumerableProperty=addNonEnumerableProperty;n.convertToPlainObject=convertToPlainObject;n.dropUndefinedKeys=dropUndefinedKeys;n.extractExceptionKeysForMessage=extractExceptionKeysForMessage;n.fill=fill;n.getOriginalFunction=getOriginalFunction;n.markFunctionWrapped=markFunctionWrapped;n.objectify=objectify;n.urlEncode=urlEncode},3833:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function normalizeArray(t,n){let r=0;for(let n=t.length-1;n>=0;n--){const o=t[n];if(o==="."){t.splice(n,1)}else if(o===".."){t.splice(n,1);r++}else if(r){t.splice(n,1);r--}}if(n){for(;r--;r){t.unshift("..")}}return t}const r=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function splitPath(t){const n=t.length>1024?`<truncated>${t.slice(-1024)}`:t;const o=r.exec(n);return o?o.slice(1):[]}function resolve(...t){let n="";let r=false;for(let o=t.length-1;o>=-1&&!r;o--){const i=o>=0?t[o]:"/";if(!i){continue}n=`${i}/${n}`;r=i.charAt(0)==="/"}n=normalizeArray(n.split("/").filter(t=>!!t),!r).join("/");return(r?"/":"")+n||"."}function trim(t){let n=0;for(;n<t.length;n++){if(t[n]!==""){break}}let r=t.length-1;for(;r>=0;r--){if(t[r]!==""){break}}if(n>r){return[]}return t.slice(n,r-n+1)}function relative(t,n){t=resolve(t).slice(1);n=resolve(n).slice(1);const r=trim(t.split("/"));const o=trim(n.split("/"));const i=Math.min(r.length,o.length);let a=i;for(let t=0;t<i;t++){if(r[t]!==o[t]){a=t;break}}let c=[];for(let t=a;t<r.length;t++){c.push("..")}c=c.concat(o.slice(a));return c.join("/")}function normalizePath(t){const n=isAbsolute(t);const r=t.slice(-1)==="/";let o=normalizeArray(t.split("/").filter(t=>!!t),!n).join("/");if(!o&&!n){o="."}if(o&&r){o+="/"}return(n?"/":"")+o}function isAbsolute(t){return t.charAt(0)==="/"}function join(...t){return normalizePath(t.join("/"))}function dirname(t){const n=splitPath(t);const r=n[0];let o=n[1];if(!r&&!o){return"."}if(o){o=o.slice(0,o.length-1)}return r+o}function basename(t,n){let r=splitPath(t)[2];if(n&&r.slice(n.length*-1)===n){r=r.slice(0,r.length-n.length)}return r}n.basename=basename;n.dirname=dirname;n.isAbsolute=isAbsolute;n.join=join;n.normalizePath=normalizePath;n.relative=relative;n.resolve=resolve},9875:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2930);const i=r(2360);function makePromiseBuffer(t){const n=[];function isReady(){return t===undefined||n.length<t}function remove(t){return n.splice(n.indexOf(t),1)[0]}function add(t){if(!isReady()){return i.rejectedSyncPromise(new o.SentryError("Not adding Promise because buffer limit was reached."))}const r=t();if(n.indexOf(r)===-1){n.push(r)}void r.then(()=>remove(r)).then(null,()=>remove(r).then(null,()=>{}));return r}function drain(t){return new i.SyncPromise((r,o)=>{let a=n.length;if(!a){return r(true)}const c=setTimeout(()=>{if(t&&t>0){r(false)}},t);n.forEach(t=>{void i.resolvedSyncPromise(t).then(()=>{if(! --a){clearTimeout(c);r(true)}},o)})})}return{$:n,add:add,drain:drain}}n.makePromiseBuffer=makePromiseBuffer},1173:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=60*1e3;function parseRetryAfterHeader(t,n=Date.now()){const o=parseInt(`${t}`,10);if(!isNaN(o)){return o*1e3}const i=Date.parse(`${t}`);if(!isNaN(i)){return i-n}return r}function disabledUntil(t,n){return t[n]||t.all||0}function isRateLimited(t,n,r=Date.now()){return disabledUntil(t,n)>r}function updateRateLimits(t,{statusCode:n,headers:r},o=Date.now()){const i={...t};const a=r&&r["x-sentry-rate-limits"];const c=r&&r["retry-after"];if(a){for(const t of a.trim().split(",")){const[n,r,,,a]=t.split(":",5);const c=parseInt(n,10);const l=(!isNaN(c)?c:60)*1e3;if(!r){i.all=o+l}else{for(const t of r.split(";")){if(t==="metric_bucket"){if(!a||a.split(";").includes("custom")){i[t]=o+l}}else{i[t]=o+l}}}}}else if(c){i.all=o+parseRetryAfterHeader(c,o)}else if(n===429){i.all=o+60*1e3}return i}n.DEFAULT_RETRY_AFTER=r;n.disabledUntil=disabledUntil;n.isRateLimited=isRateLimited;n.parseRetryAfterHeader=parseRetryAfterHeader;n.updateRateLimits=updateRateLimits},7869:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5124);const i=r(4462);const a=r(1846);const c=r(9550);const l=r(7843);const g=r(1329);const u={ip:false,request:true,transaction:true,user:true};const d=["cookies","data","headers","method","query_string","url"];const I=["id","username","email"];function addRequestDataToTransaction(t,n,r){if(!t)return;if(!t.metadata.source||t.metadata.source==="url"){const[r,o]=extractPathForTransaction(n,{path:true,method:true});t.updateName(r);t.setMetadata({source:o})}t.setAttribute("url",n.originalUrl||n.url);if(n.baseUrl){t.setAttribute("baseUrl",n.baseUrl)}t.setData("query",extractQueryParams(n,r))}function extractPathForTransaction(t,n={}){const r=t.method&&t.method.toUpperCase();let o="";let i="url";if(n.customRoute||t.route){o=n.customRoute||`${t.baseUrl||""}${t.route&&t.route.path}`;i="route"}else if(t.originalUrl||t.url){o=g.stripUrlQueryAndFragment(t.originalUrl||t.url||"")}let a="";if(n.method&&r){a+=r}if(n.method&&n.path){a+=" "}if(n.path&&o){a+=o}return[a,i]}function extractTransaction(t,n){switch(n){case"path":{return extractPathForTransaction(t,{path:true})[0]}case"handler":{return t.route&&t.route.stack&&t.route.stack[0]&&t.route.stack[0].name||"<anonymous>"}case"methodPath":default:{const n=t._reconstructedRoute?t._reconstructedRoute:undefined;return extractPathForTransaction(t,{path:true,method:true,customRoute:n})[0]}}}function extractUserData(t,n){const r={};const o=Array.isArray(n)?n:I;o.forEach(n=>{if(t&&n in t){r[n]=t[n]}});return r}function extractRequestData(t,n){const{include:r=d,deps:i}=n||{};const c={};const g=t.headers||{};const u=t.method;const I=g.host||t.hostname||t.host||"<no host>";const p=t.protocol==="https"||t.socket&&t.socket.encrypted?"https":"http";const m=t.originalUrl||t.url||"";const C=m.startsWith(p)?m:`${p}://${I}${m}`;r.forEach(n=>{switch(n){case"headers":{c.headers=g;if(!r.includes("cookies")){delete c.headers.cookie}break}case"method":{c.method=u;break}case"url":{c.url=C;break}case"cookies":{c.cookies=t.cookies||g.cookie&&o.parseCookie(g.cookie)||{};break}case"query_string":{c.query_string=extractQueryParams(t,i);break}case"data":{if(u==="GET"||u==="HEAD"){break}if(t.body!==undefined){c.data=a.isString(t.body)?t.body:JSON.stringify(l.normalize(t.body))}break}default:{if({}.hasOwnProperty.call(t,n)){c[n]=t[n]}}}});return c}function addRequestDataToEvent(t,n,r){const o={...u,...r&&r.include};if(o.request){const i=Array.isArray(o.request)?extractRequestData(n,{include:o.request,deps:r&&r.deps}):extractRequestData(n,{deps:r&&r.deps});t.request={...t.request,...i}}if(o.user){const r=n.user&&a.isPlainObject(n.user)?extractUserData(n.user,o.user):{};if(Object.keys(r).length){t.user={...t.user,...r}}}if(o.ip){const r=n.ip||n.socket&&n.socket.remoteAddress;if(r){t.user={...t.user,ip_address:r}}}if(o.transaction&&!t.transaction){t.transaction=extractTransaction(n,o.transaction)}return t}function extractQueryParams(t,n){let r=t.originalUrl||t.url||"";if(!r){return}if(r.startsWith("/")){r=`http://dogs.are.great${r}`}try{return t.query||typeof URL!=="undefined"&&new URL(r).search.slice(1)||n&&n.url&&n.url.parse(r).query||undefined}catch(t){return undefined}}function winterCGHeadersToDict(t){const n={};try{t.forEach((t,r)=>{if(typeof t==="string"){n[r]=t}})}catch(t){i.DEBUG_BUILD&&c.logger.warn("Sentry failed extracting headers from a request object. If you see this, please file an issue.")}return n}function winterCGRequestToRequestData(t){const n=winterCGHeadersToDict(t.headers);return{method:t.method,url:t.url,headers:n}}n.DEFAULT_USER_INCLUDES=I;n.addRequestDataToEvent=addRequestDataToEvent;n.addRequestDataToTransaction=addRequestDataToTransaction;n.extractPathForTransaction=extractPathForTransaction;n.extractRequestData=extractRequestData;n.winterCGHeadersToDict=winterCGHeadersToDict;n.winterCGRequestToRequestData=winterCGRequestToRequestData},3013:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=["fatal","error","warning","log","info","debug"];function severityFromString(t){return severityLevelFromString(t)}function severityLevelFromString(t){return t==="warn"?"warning":r.includes(t)?t:"log"}n.severityFromString=severityFromString;n.severityLevelFromString=severityLevelFromString;n.validSeverityLevels=r},811:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4171);const i=50;const a=/\(error: (.*)\)/;const c=/captureMessage|captureException/;function createStackParser(...t){const n=t.sort((t,n)=>t[0]-n[0]).map(t=>t[1]);return(t,r=0)=>{const o=[];const c=t.split("\n");for(let t=r;t<c.length;t++){const r=c[t];if(r.length>1024){continue}const l=a.test(r)?r.replace(a,"$1"):r;if(l.match(/\S*Error: /)){continue}for(const t of n){const n=t(l);if(n){o.push(n);break}}if(o.length>=i){break}}return stripSentryFramesAndReverse(o)}}function stackParserFromStackParserOptions(t){if(Array.isArray(t)){return createStackParser(...t)}return t}function stripSentryFramesAndReverse(t){if(!t.length){return[]}const n=Array.from(t);if(/sentryWrapped/.test(n[n.length-1].function||"")){n.pop()}n.reverse();if(c.test(n[n.length-1].function||"")){n.pop();if(c.test(n[n.length-1].function||"")){n.pop()}}return n.slice(0,i).map(t=>({...t,filename:t.filename||n[n.length-1].filename,function:t.function||"?"}))}const l="<anonymous>";function getFunctionName(t){try{if(!t||typeof t!=="function"){return l}return t.name||l}catch(t){return l}}function nodeStackLineParser(t){return[90,o.node(t)]}n.filenameIsInApp=o.filenameIsInApp;n.createStackParser=createStackParser;n.getFunctionName=getFunctionName;n.nodeStackLineParser=nodeStackLineParser;n.stackParserFromStackParserOptions=stackParserFromStackParserOptions;n.stripSentryFramesAndReverse=stripSentryFramesAndReverse},1071:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1846);function truncate(t,n=0){if(typeof t!=="string"||n===0){return t}return t.length<=n?t:`${t.slice(0,n)}...`}function snipLine(t,n){let r=t;const o=r.length;if(o<=150){return r}if(n>o){n=o}let i=Math.max(n-60,0);if(i<5){i=0}let a=Math.min(i+140,o);if(a>o-5){a=o}if(a===o){i=Math.max(a-140,0)}r=r.slice(i,a);if(i>0){r=`'{snip} ${r}`}if(a<o){r+=" {snip}"}return r}function safeJoin(t,n){if(!Array.isArray(t)){return""}const r=[];for(let n=0;n<t.length;n++){const i=t[n];try{if(o.isVueViewModel(i)){r.push("[VueViewModel]")}else{r.push(String(i))}}catch(t){r.push("[value cannot be serialized]")}}return r.join(n)}function isMatchingPattern(t,n,r=false){if(!o.isString(t)){return false}if(o.isRegExp(n)){return n.test(t)}if(o.isString(n)){return r?t===n:t.includes(n)}return false}function stringMatchesSomePattern(t,n=[],r=false){return n.some(n=>isMatchingPattern(t,n,r))}n.isMatchingPattern=isMatchingPattern;n.safeJoin=safeJoin;n.snipLine=snipLine;n.stringMatchesSomePattern=stringMatchesSomePattern;n.truncate=truncate},2866:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4462);const i=r(9550);const a=r(5395);const c=a.getGlobalObject();function supportsErrorEvent(){try{new ErrorEvent("");return true}catch(t){return false}}function supportsDOMError(){try{new DOMError("");return true}catch(t){return false}}function supportsDOMException(){try{new DOMException("");return true}catch(t){return false}}function supportsFetch(){if(!("fetch"in c)){return false}try{new Headers;new Request("http://www.example.com");new Response;return true}catch(t){return false}}function isNativeFetch(t){return t&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(t.toString())}function supportsNativeFetch(){if(typeof EdgeRuntime==="string"){return true}if(!supportsFetch()){return false}if(isNativeFetch(c.fetch)){return true}let t=false;const n=c.document;if(n&&typeof n.createElement==="function"){try{const r=n.createElement("iframe");r.hidden=true;n.head.appendChild(r);if(r.contentWindow&&r.contentWindow.fetch){t=isNativeFetch(r.contentWindow.fetch)}n.head.removeChild(r)}catch(t){o.DEBUG_BUILD&&i.logger.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",t)}}return t}function supportsReportingObserver(){return"ReportingObserver"in c}function supportsReferrerPolicy(){if(!supportsFetch()){return false}try{new Request("_",{referrerPolicy:"origin"});return true}catch(t){return false}}n.isNativeFetch=isNativeFetch;n.supportsDOMError=supportsDOMError;n.supportsDOMException=supportsDOMException;n.supportsErrorEvent=supportsErrorEvent;n.supportsFetch=supportsFetch;n.supportsNativeFetch=supportsNativeFetch;n.supportsReferrerPolicy=supportsReferrerPolicy;n.supportsReportingObserver=supportsReportingObserver},2360:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1846);var i;(function(t){const n=0;t[t["PENDING"]=n]="PENDING";const r=1;t[t["RESOLVED"]=r]="RESOLVED";const o=2;t[t["REJECTED"]=o]="REJECTED"})(i||(i={}));function resolvedSyncPromise(t){return new SyncPromise(n=>{n(t)})}function rejectedSyncPromise(t){return new SyncPromise((n,r)=>{r(t)})}class SyncPromise{constructor(t){SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);this._state=i.PENDING;this._handlers=[];try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}then(t,n){return new SyncPromise((r,o)=>{this._handlers.push([false,n=>{if(!t){r(n)}else{try{r(t(n))}catch(t){o(t)}}},t=>{if(!n){o(t)}else{try{r(n(t))}catch(t){o(t)}}}]);this._executeHandlers()})}catch(t){return this.then(t=>t,t)}finally(t){return new SyncPromise((n,r)=>{let o;let i;return this.then(n=>{i=false;o=n;if(t){t()}},n=>{i=true;o=n;if(t){t()}}).then(()=>{if(i){r(o);return}n(o)})})}__init(){this._resolve=t=>{this._setResult(i.RESOLVED,t)}}__init2(){this._reject=t=>{this._setResult(i.REJECTED,t)}}__init3(){this._setResult=(t,n)=>{if(this._state!==i.PENDING){return}if(o.isThenable(n)){void n.then(this._resolve,this._reject);return}this._state=t;this._value=n;this._executeHandlers()}}__init4(){this._executeHandlers=()=>{if(this._state===i.PENDING){return}const t=this._handlers.slice();this._handlers=[];t.forEach(t=>{if(t[0]){return}if(this._state===i.RESOLVED){t[1](this._value)}if(this._state===i.REJECTED){t[2](this._value)}t[0]=true})}}}n.SyncPromise=SyncPromise;n.rejectedSyncPromise=rejectedSyncPromise;n.resolvedSyncPromise=resolvedSyncPromise},5315:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5395);const i=1e3;function dateTimestampInSeconds(){return Date.now()/i}function createUnixTimestampInSecondsFunc(){const{performance:t}=o.GLOBAL_OBJ;if(!t||!t.now){return dateTimestampInSeconds}const n=Date.now()-t.now();const r=t.timeOrigin==undefined?n:t.timeOrigin;return()=>(r+t.now())/i}const a=createUnixTimestampInSecondsFunc();const c=a;n._browserPerformanceTimeOriginMode=void 0;const l=(()=>{const{performance:t}=o.GLOBAL_OBJ;if(!t||!t.now){n._browserPerformanceTimeOriginMode="none";return undefined}const r=3600*1e3;const i=t.now();const a=Date.now();const c=t.timeOrigin?Math.abs(t.timeOrigin+i-a):r;const l=c<r;const g=t.timing&&t.timing.navigationStart;const u=typeof g==="number";const d=u?Math.abs(g+i-a):r;const I=d<r;if(l||I){if(c<=d){n._browserPerformanceTimeOriginMode="timeOrigin";return t.timeOrigin}else{n._browserPerformanceTimeOriginMode="navigationStart";return g}}n._browserPerformanceTimeOriginMode="dateNow";return a})();n.browserPerformanceTimeOrigin=l;n.dateTimestampInSeconds=dateTimestampInSeconds;n.timestampInSeconds=a;n.timestampWithMs=c},1970:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4486);const i=r(7562);const a=new RegExp("^[ \\t]*"+"([0-9a-f]{32})?"+"-?([0-9a-f]{16})?"+"-?([01])?"+"[ \\t]*$");function extractTraceparentData(t){if(!t){return undefined}const n=t.match(a);if(!n){return undefined}let r;if(n[3]==="1"){r=true}else if(n[3]==="0"){r=false}return{traceId:n[1],parentSampled:r,parentSpanId:n[2]}}function tracingContextFromHeaders(t,n){const r=extractTraceparentData(t);const a=o.baggageHeaderToDynamicSamplingContext(n);const{traceId:c,parentSpanId:l,parentSampled:g}=r||{};if(!r){return{traceparentData:r,dynamicSamplingContext:undefined,propagationContext:{traceId:c||i.uuid4(),spanId:i.uuid4().substring(16)}}}else{return{traceparentData:r,dynamicSamplingContext:a||{},propagationContext:{traceId:c||i.uuid4(),parentSpanId:l||i.uuid4().substring(16),spanId:i.uuid4().substring(16),sampled:g,dsc:a||{}}}}}function propagationContextFromHeaders(t,n){const r=extractTraceparentData(t);const a=o.baggageHeaderToDynamicSamplingContext(n);const{traceId:c,parentSpanId:l,parentSampled:g}=r||{};if(!r){return{traceId:c||i.uuid4(),spanId:i.uuid4().substring(16)}}else{return{traceId:c||i.uuid4(),parentSpanId:l||i.uuid4().substring(16),spanId:i.uuid4().substring(16),sampled:g,dsc:a||{}}}}function generateSentryTraceHeader(t=i.uuid4(),n=i.uuid4().substring(16),r){let o="";if(r!==undefined){o=r?"-1":"-0"}return`${t}-${n}${o}`}n.TRACEPARENT_REGEXP=a;n.extractTraceparentData=extractTraceparentData;n.generateSentryTraceHeader=generateSentryTraceHeader;n.propagationContextFromHeaders=propagationContextFromHeaders;n.tracingContextFromHeaders=tracingContextFromHeaders},1329:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parseUrl(t){if(!t){return{}}const n=t.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!n){return{}}const r=n[6]||"";const o=n[8]||"";return{host:n[4],path:n[5],protocol:n[2],search:r,hash:o,relative:n[5]+r+o}}function stripUrlQueryAndFragment(t){return t.split(/[\?#]/,1)[0]}function getNumberOfUrlSegments(t){return t.split(/\\?\//).filter(t=>t.length>0&&t!==",").length}function getSanitizedUrlString(t){const{protocol:n,host:r,path:o}=t;const i=r&&r.replace(/^.*@/,"[filtered]:[filtered]@").replace(/(:80)$/,"").replace(/(:443)$/,"")||"";return`${n?`${n}://`:""}${i}${o}`}n.getNumberOfUrlSegments=getNumberOfUrlSegments;n.getSanitizedUrlString=getSanitizedUrlString;n.parseUrl=parseUrl;n.stripUrlQueryAndFragment=stripUrlQueryAndFragment},590:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function setNestedKey(t,n,r){const o=n.match(/([a-z_]+)\.(.*)/i);if(o===null){t[n]=r}else{const n=t[o[1]];setNestedKey(n,o[2],r)}}function addOrUpdateIntegration(t,n,r={}){return Array.isArray(n)?addOrUpdateIntegrationInArray(t,n,r):addOrUpdateIntegrationInFunction(t,n,r)}function addOrUpdateIntegrationInArray(t,n,r){const o=n.find(n=>n.name===t.name);if(o){for(const[t,n]of Object.entries(r)){setNestedKey(o,t,n)}return n}return[...n,t]}function addOrUpdateIntegrationInFunction(t,n,r){const wrapper=o=>{const i=n(o);if(t.allowExclusionByUser){const n=i.find(n=>n.name===t.name);if(!n){return i}}return addOrUpdateIntegrationInArray(t,i,r)};return wrapper}n.addOrUpdateIntegration=addOrUpdateIntegration},9043:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function escapeStringForRegex(t){return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}n.escapeStringForRegex=escapeStringForRegex},3047:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5395);const i=o.getGlobalObject();function supportsHistory(){const t=i.chrome;const n=t&&t.app&&t.app.runtime;const r="history"in i&&!!i.history.pushState&&!!i.history.replaceState;return!n&&r}n.supportsHistory=supportsHistory},5395:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isGlobalObj(t){return t&&t.Math==Math?t:undefined}const r=typeof globalThis=="object"&&isGlobalObj(globalThis)||typeof window=="object"&&isGlobalObj(window)||typeof self=="object"&&isGlobalObj(self)||typeof global=="object"&&isGlobalObj(global)||function(){return this}()||{};function getGlobalObject(){return r}function getGlobalSingleton(t,n,o){const i=o||r;const a=i.__SENTRY__=i.__SENTRY__||{};const c=a[t]||(a[t]=n());return c}n.GLOBAL_OBJ=r;n.getGlobalObject=getGlobalObject;n.getGlobalSingleton=getGlobalSingleton},6709:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2667);const i=r(9014);function applyAggregateErrorsToEvent(t,n,r=250,i,a,c,l){if(!c.exception||!c.exception.values||!l||!o.isInstanceOf(l.originalException,Error)){return}const g=c.exception.values.length>0?c.exception.values[c.exception.values.length-1]:undefined;if(g){c.exception.values=truncateAggregateExceptions(aggregateExceptionsFromError(t,n,a,l.originalException,i,c.exception.values,g,0),r)}}function aggregateExceptionsFromError(t,n,r,i,a,c,l,g){if(c.length>=r+1){return c}let u=[...c];if(o.isInstanceOf(i[a],Error)){applyExceptionGroupFieldsForParentException(l,g);const o=t(n,i[a]);const c=u.length;applyExceptionGroupFieldsForChildException(o,a,c,g);u=aggregateExceptionsFromError(t,n,r,i[a],a,[o,...u],o,c)}if(Array.isArray(i.errors)){i.errors.forEach((i,c)=>{if(o.isInstanceOf(i,Error)){applyExceptionGroupFieldsForParentException(l,g);const o=t(n,i);const d=u.length;applyExceptionGroupFieldsForChildException(o,`errors[${c}]`,d,g);u=aggregateExceptionsFromError(t,n,r,i,a,[o,...u],o,d)}})}return u}function applyExceptionGroupFieldsForParentException(t,n){t.mechanism=t.mechanism||{type:"generic",handled:true};t.mechanism={...t.mechanism,...t.type==="AggregateError"&&{is_exception_group:true},exception_id:n}}function applyExceptionGroupFieldsForChildException(t,n,r,o){t.mechanism=t.mechanism||{type:"generic",handled:true};t.mechanism={...t.mechanism,type:"chained",source:n,exception_id:r,parent_id:o}}function truncateAggregateExceptions(t,n){return t.map(t=>{if(t.value){t.value=i.truncate(t.value,n)}return t})}n.applyAggregateErrorsToEvent=applyAggregateErrorsToEvent},272:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1486);const i=r(7256);const a=r(8846);function watchdogTimer(t,n,r,o){const i=t();let a=false;let c=true;setInterval(()=>{const t=i.getTimeMs();if(a===false&&t>n+r){a=true;if(c){o()}}if(t<n+r){a=false}},20);return{poll:()=>{i.reset()},enabled:t=>{c=t}}}function callFrameToStackFrame(t,n,r){const c=n?n.replace(/^file:\/\//,""):undefined;const l=t.location.columnNumber?t.location.columnNumber+1:undefined;const g=t.location.lineNumber?t.location.lineNumber+1:undefined;return i.dropUndefinedKeys({filename:c,module:r(c),function:t.functionName||a.UNKNOWN_FUNCTION,colno:l,lineno:g,in_app:c?o.filenameIsInApp(c):undefined})}n.callFrameToStackFrame=callFrameToStackFrame;n.watchdogTimer=watchdogTimer},2121:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8741);const i=r(2667);const a=r(399);const c="baggage";const l="sentry-";const g=/^sentry-/;const u=8192;function baggageHeaderToDynamicSamplingContext(t){const n=parseBaggageHeader(t);if(!n){return undefined}const r=Object.entries(n).reduce((t,[n,r])=>{if(n.match(g)){const o=n.slice(l.length);t[o]=r}return t},{});if(Object.keys(r).length>0){return r}else{return undefined}}function dynamicSamplingContextToSentryBaggageHeader(t){if(!t){return undefined}const n=Object.entries(t).reduce((t,[n,r])=>{if(r){t[`${l}${n}`]=r}return t},{});return objectToBaggageHeader(n)}function parseBaggageHeader(t){if(!t||!i.isString(t)&&!Array.isArray(t)){return undefined}if(Array.isArray(t)){return t.reduce((t,n)=>{const r=baggageHeaderToObject(n);for(const n of Object.keys(r)){t[n]=r[n]}return t},{})}return baggageHeaderToObject(t)}function baggageHeaderToObject(t){return t.split(",").map(t=>t.split("=").map(t=>decodeURIComponent(t.trim()))).reduce((t,[n,r])=>{t[n]=r;return t},{})}function objectToBaggageHeader(t){if(Object.keys(t).length===0){return undefined}return Object.entries(t).reduce((t,[n,r],i)=>{const c=`${encodeURIComponent(n)}=${encodeURIComponent(r)}`;const l=i===0?c:`${t},${c}`;if(l.length>u){o.DEBUG_BUILD&&a.logger.warn(`Not adding key: ${n} with val: ${r} to baggage header due to exceeding baggage size limits.`);return t}else{return l}},"")}n.BAGGAGE_HEADER_NAME=c;n.MAX_BAGGAGE_STRING_LENGTH=u;n.SENTRY_BAGGAGE_KEY_PREFIX=l;n.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=g;n.baggageHeaderToDynamicSamplingContext=baggageHeaderToDynamicSamplingContext;n.dynamicSamplingContextToSentryBaggageHeader=dynamicSamplingContextToSentryBaggageHeader;n.parseBaggageHeader=parseBaggageHeader},5691:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2667);const i=r(8020);const a=i.GLOBAL_OBJ;const c=80;function htmlTreeAsString(t,n={}){if(!t){return"<unknown>"}try{let r=t;const o=5;const i=[];let a=0;let l=0;const g=" > ";const u=g.length;let d;const I=Array.isArray(n)?n:n.keyAttrs;const p=!Array.isArray(n)&&n.maxStringLength||c;while(r&&a++<o){d=_htmlElementAsString(r,I);if(d==="html"||a>1&&l+i.length*u+d.length>=p){break}i.push(d);l+=d.length;r=r.parentNode}return i.reverse().join(g)}catch(t){return"<unknown>"}}function _htmlElementAsString(t,n){const r=t;const i=[];let c;let l;let g;let u;let d;if(!r||!r.tagName){return""}if(a.HTMLElement){if(r instanceof HTMLElement&&r.dataset){if(r.dataset["sentryComponent"]){return r.dataset["sentryComponent"]}if(r.dataset["sentryElement"]){return r.dataset["sentryElement"]}}}i.push(r.tagName.toLowerCase());const I=n&&n.length?n.filter(t=>r.getAttribute(t)).map(t=>[t,r.getAttribute(t)]):null;if(I&&I.length){I.forEach(t=>{i.push(`[${t[0]}="${t[1]}"]`)})}else{if(r.id){i.push(`#${r.id}`)}c=r.className;if(c&&o.isString(c)){l=c.split(/\s+/);for(d=0;d<l.length;d++){i.push(`.${l[d]}`)}}}const p=["aria-label","type","name","title","alt"];for(d=0;d<p.length;d++){g=p[d];u=r.getAttribute(g);if(u){i.push(`[${g}="${u}"]`)}}return i.join("")}function getLocationHref(){try{return a.document.location.href}catch(t){return""}}function getDomElement(t){if(a.document&&a.document.querySelector){return a.document.querySelector(t)}return null}function getComponentName(t){if(!a.HTMLElement){return null}let n=t;const r=5;for(let t=0;t<r;t++){if(!n){return null}if(n instanceof HTMLElement){if(n.dataset["sentryComponent"]){return n.dataset["sentryComponent"]}if(n.dataset["sentryElement"]){return n.dataset["sentryElement"]}}n=n.parentNode}return null}n.getComponentName=getComponentName;n.getDomElement=getDomElement;n.getLocationHref=getLocationHref;n.htmlTreeAsString=htmlTreeAsString},1793:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(7565);async function _asyncNullishCoalesce(t,n){return o._nullishCoalesce(t,n)}n._asyncNullishCoalesce=_asyncNullishCoalesce},2368:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});async function _asyncOptionalChain(t){let n=undefined;let r=t[0];let o=1;while(o<t.length){const i=t[o];const a=t[o+1];o+=2;if((i==="optionalAccess"||i==="optionalCall")&&r==null){return}if(i==="access"||i==="optionalAccess"){n=r;r=await a(r)}else if(i==="call"||i==="optionalCall"){r=await a((...t)=>r.call(n,...t));n=undefined}}return r}n._asyncOptionalChain=_asyncOptionalChain},8007:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2368);async function _asyncOptionalChainDelete(t){const n=await o._asyncOptionalChain(t);return n==null?true:n}n._asyncOptionalChainDelete=_asyncOptionalChainDelete},7565:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function _nullishCoalesce(t,n){return t!=null?t:n()}n._nullishCoalesce=_nullishCoalesce},812:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function _optionalChain(t){let n=undefined;let r=t[0];let o=1;while(o<t.length){const i=t[o];const a=t[o+1];o+=2;if((i==="optionalAccess"||i==="optionalCall")&&r==null){return}if(i==="access"||i==="optionalAccess"){n=r;r=a(r)}else if(i==="call"||i==="optionalCall"){r=a((...t)=>r.call(n,...t));n=undefined}}return r}n._optionalChain=_optionalChain},9331:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(812);function _optionalChainDelete(t){const n=o._optionalChain(t);return n==null?true:n}n._optionalChainDelete=_optionalChainDelete},6833:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function makeFifoCache(t){let n=[];let r={};return{add(o,i){while(n.length>=t){const t=n.shift();if(t!==undefined){delete r[t]}}if(r[o]){this.delete(o)}n.push(o);r[o]=i},clear(){r={};n=[]},get(t){return r[t]},size(){return n.length},delete(t){if(!r[t]){return false}delete r[t];for(let r=0;r<n.length;r++){if(n[r]===t){n.splice(r,1);break}}return true}}}n.makeFifoCache=makeFifoCache},5278:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(487);const i=r(8742);function createClientReportEnvelope(t,n,r){const a=[{type:"client_report"},{timestamp:r||i.dateTimestampInSeconds(),discarded_events:t}];return o.createEnvelope(n?{dsn:n}:{},[a])}n.createClientReportEnvelope=createClientReportEnvelope},5797:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parseCookie(t){const n={};let r=0;while(r<t.length){const o=t.indexOf("=",r);if(o===-1){break}let i=t.indexOf(";",r);if(i===-1){i=t.length}else if(i<o){r=t.lastIndexOf(";",o-1)+1;continue}const a=t.slice(r,o).trim();if(undefined===n[a]){let r=t.slice(o+1,i).trim();if(r.charCodeAt(0)===34){r=r.slice(1,-1)}try{n[a]=r.indexOf("%")!==-1?decodeURIComponent(r):r}catch(t){n[a]=r}}r=i+1}return n}n.parseCookie=parseCookie},8741:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=r},6886:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8741);const i=r(399);const a=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function isValidProtocol(t){return t==="http"||t==="https"}function dsnToString(t,n=false){const{host:r,path:o,pass:i,port:a,projectId:c,protocol:l,publicKey:g}=t;return`${l}://${g}${n&&i?`:${i}`:""}`+`@${r}${a?`:${a}`:""}/${o?`${o}/`:o}${c}`}function dsnFromString(t){const n=a.exec(t);if(!n){i.consoleSandbox(()=>{console.error(`Invalid Sentry Dsn: ${t}`)});return undefined}const[r,o,c="",l,g="",u]=n.slice(1);let d="";let I=u;const p=I.split("/");if(p.length>1){d=p.slice(0,-1).join("/");I=p.pop()}if(I){const t=I.match(/^\d+/);if(t){I=t[0]}}return dsnFromComponents({host:l,pass:c,path:d,projectId:I,port:g,protocol:r,publicKey:o})}function dsnFromComponents(t){return{protocol:t.protocol,publicKey:t.publicKey||"",pass:t.pass||"",host:t.host,port:t.port||"",path:t.path||"",projectId:t.projectId}}function validateDsn(t){if(!o.DEBUG_BUILD){return true}const{port:n,projectId:r,protocol:a}=t;const c=["protocol","publicKey","host","projectId"];const l=c.find(n=>{if(!t[n]){i.logger.error(`Invalid Sentry Dsn: ${n} missing`);return true}return false});if(l){return false}if(!r.match(/^\d+$/)){i.logger.error(`Invalid Sentry Dsn: Invalid projectId ${r}`);return false}if(!isValidProtocol(a)){i.logger.error(`Invalid Sentry Dsn: Invalid protocol ${a}`);return false}if(n&&isNaN(parseInt(n,10))){i.logger.error(`Invalid Sentry Dsn: Invalid port ${n}`);return false}return true}function makeDsn(t){const n=typeof t==="string"?dsnFromString(t):dsnFromComponents(t);if(!n||!validateDsn(n)){return undefined}return n}n.dsnFromString=dsnFromString;n.dsnToString=dsnToString;n.makeDsn=makeDsn},6112:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isBrowserBundle(){return typeof __SENTRY_BROWSER_BUNDLE__!=="undefined"&&!!__SENTRY_BROWSER_BUNDLE__}function getSDKSource(){return"npm"}n.getSDKSource=getSDKSource;n.isBrowserBundle=isBrowserBundle},487:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6886);const i=r(676);const a=r(7256);const c=r(8020);function createEnvelope(t,n=[]){return[t,n]}function addItemToEnvelope(t,n){const[r,o]=t;return[r,[...o,n]]}function forEachEnvelopeItem(t,n){const r=t[1];for(const t of r){const r=t[0].type;const o=n(t,r);if(o){return true}}return false}function envelopeContainsItemType(t,n){return forEachEnvelopeItem(t,(t,r)=>n.includes(r))}function encodeUTF8(t){return c.GLOBAL_OBJ.__SENTRY__&&c.GLOBAL_OBJ.__SENTRY__.encodePolyfill?c.GLOBAL_OBJ.__SENTRY__.encodePolyfill(t):(new TextEncoder).encode(t)}function decodeUTF8(t){return c.GLOBAL_OBJ.__SENTRY__&&c.GLOBAL_OBJ.__SENTRY__.decodePolyfill?c.GLOBAL_OBJ.__SENTRY__.decodePolyfill(t):(new TextDecoder).decode(t)}function serializeEnvelope(t){const[n,r]=t;let o=JSON.stringify(n);function append(t){if(typeof o==="string"){o=typeof t==="string"?o+t:[encodeUTF8(o),t]}else{o.push(typeof t==="string"?encodeUTF8(t):t)}}for(const t of r){const[n,r]=t;append(`\n${JSON.stringify(n)}\n`);if(typeof r==="string"||r instanceof Uint8Array){append(r)}else{let t;try{t=JSON.stringify(r)}catch(n){t=JSON.stringify(i.normalize(r))}append(t)}}return typeof o==="string"?o:concatBuffers(o)}function concatBuffers(t){const n=t.reduce((t,n)=>t+n.length,0);const r=new Uint8Array(n);let o=0;for(const n of t){r.set(n,o);o+=n.length}return r}function parseEnvelope(t){let n=typeof t==="string"?encodeUTF8(t):t;function readBinary(t){const r=n.subarray(0,t);n=n.subarray(t+1);return r}function readJson(){let t=n.indexOf(10);if(t<0){t=n.length}return JSON.parse(decodeUTF8(readBinary(t)))}const r=readJson();const o=[];while(n.length){const t=readJson();const n=typeof t.length==="number"?t.length:undefined;o.push([t,n?readBinary(n):readJson()])}return[r,o]}function createSpanEnvelopeItem(t){const n={type:"span"};return[n,t]}function createAttachmentEnvelopeItem(t){const n=typeof t.data==="string"?encodeUTF8(t.data):t.data;return[a.dropUndefinedKeys({type:"attachment",length:n.length,filename:t.filename,content_type:t.contentType,attachment_type:t.attachmentType}),n]}const l={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",statsd:"metric_bucket"};function envelopeItemTypeToDataCategory(t){return l[t]}function getSdkMetadataForEnvelopeHeader(t){if(!t||!t.sdk){return}const{name:n,version:r}=t.sdk;return{name:n,version:r}}function createEventEnvelopeHeaders(t,n,r,i){const c=t.sdkProcessingMetadata&&t.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:t.event_id,sent_at:(new Date).toISOString(),...n&&{sdk:n},...!!r&&i&&{dsn:o.dsnToString(i)},...c&&{trace:a.dropUndefinedKeys({...c})}}}n.addItemToEnvelope=addItemToEnvelope;n.createAttachmentEnvelopeItem=createAttachmentEnvelopeItem;n.createEnvelope=createEnvelope;n.createEventEnvelopeHeaders=createEventEnvelopeHeaders;n.createSpanEnvelopeItem=createSpanEnvelopeItem;n.envelopeContainsItemType=envelopeContainsItemType;n.envelopeItemTypeToDataCategory=envelopeItemTypeToDataCategory;n.forEachEnvelopeItem=forEachEnvelopeItem;n.getSdkMetadataForEnvelopeHeader=getSdkMetadataForEnvelopeHeader;n.parseEnvelope=parseEnvelope;n.serializeEnvelope=serializeEnvelope},5989:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});class SentryError extends Error{constructor(t,n="warn"){super(t);this.message=t;this.name=new.target.prototype.constructor.name;Object.setPrototypeOf(this,new.target.prototype);this.logLevel=n}}n.SentryError=SentryError},2816:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2667);const i=r(6235);const a=r(676);const c=r(7256);function parseStackFrames(t,n){return t(n.stack||"",1)}function exceptionFromError(t,n){const r={type:n.name||n.constructor.name,value:n.message};const o=parseStackFrames(t,n);if(o.length){r.stacktrace={frames:o}}return r}function getErrorPropertyFromObject(t){for(const n in t){if(Object.prototype.hasOwnProperty.call(t,n)){const r=t[n];if(r instanceof Error){return r}}}return undefined}function getMessageForObject(t){if("name"in t&&typeof t.name==="string"){let n=`'${t.name}' captured as exception`;if("message"in t&&typeof t.message==="string"){n+=` with message '${t.message}'`}return n}else if("message"in t&&typeof t.message==="string"){return t.message}const n=c.extractExceptionKeysForMessage(t);if(o.isErrorEvent(t)){return`Event \`ErrorEvent\` captured as exception with message \`${t.message}\``}const r=getObjectClassName(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}function getObjectClassName(t){try{const n=Object.getPrototypeOf(t);return n?n.constructor.name:undefined}catch(t){}}function getException(t,n,r,i){if(o.isError(r)){return[r,undefined]}n.synthetic=true;if(o.isPlainObject(r)){const n=t&&t.getOptions().normalizeDepth;const o={["__serialized__"]:a.normalizeToSize(r,n)};const c=getErrorPropertyFromObject(r);if(c){return[c,o]}const l=getMessageForObject(r);const g=i&&i.syntheticException||new Error(l);g.message=l;return[g,o]}const c=i&&i.syntheticException||new Error(r);c.message=`${r}`;return[c,undefined]}function eventFromUnknownInput(t,n,r,o){const a=o&&o.data&&o.data.mechanism;const c=a||{handled:true,type:"generic"};const[l,g]=getException(t,c,r,o);const u={exception:{values:[exceptionFromError(n,l)]}};if(g){u.extra=g}i.addExceptionTypeValue(u,undefined,undefined);i.addExceptionMechanism(u,c);return{...u,event_id:o&&o.event_id}}function eventFromMessage(t,n,r="info",i,a){const c={event_id:i&&i.event_id,level:r};if(a&&i&&i.syntheticException){const r=parseStackFrames(t,i.syntheticException);if(r.length){c.exception={values:[{value:n,stacktrace:{frames:r}}]}}}if(o.isParameterizedString(n)){const{__sentry_template_string__:t,__sentry_template_values__:r}=n;c.logentry={message:t,params:r};return c}c.message=n;return c}n.eventFromMessage=eventFromMessage;n.eventFromUnknownInput=eventFromUnknownInput;n.exceptionFromError=exceptionFromError;n.parseStackFrames=parseStackFrames},1655:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6709);const i=r(5691);const a=r(6886);const c=r(5989);const l=r(8020);const g=r(1612);const u=r(4650);const d=r(8878);const I=r(7192);const p=r(2476);const m=r(2667);const C=r(2483);const b=r(399);const h=r(3857);const f=r(6235);const y=r(1495);const G=r(676);const B=r(7256);const A=r(7528);const Z=r(256);const S=r(5006);const v=r(1688);const W=r(8846);const R=r(1486);const _=r(9014);const V=r(1831);const H=r(9227);const N=r(8742);const E=r(3393);const T=r(6112);const Y=r(487);const X=r(5278);const F=r(7822);const w=r(2121);const K=r(4494);const k=r(6833);const U=r(2816);const J=r(272);const x=r(3178);const L=r(1793);const z=r(2368);const O=r(8007);const M=r(7565);const D=r(812);const j=r(9331);const P=r(7958);const Q=r(4503);const q=r(6856);const $=r(4382);n.applyAggregateErrorsToEvent=o.applyAggregateErrorsToEvent;n.getComponentName=i.getComponentName;n.getDomElement=i.getDomElement;n.getLocationHref=i.getLocationHref;n.htmlTreeAsString=i.htmlTreeAsString;n.dsnFromString=a.dsnFromString;n.dsnToString=a.dsnToString;n.makeDsn=a.makeDsn;n.SentryError=c.SentryError;n.GLOBAL_OBJ=l.GLOBAL_OBJ;n.getGlobalSingleton=l.getGlobalSingleton;n.addConsoleInstrumentationHandler=g.addConsoleInstrumentationHandler;n.addFetchInstrumentationHandler=u.addFetchInstrumentationHandler;n.addGlobalErrorInstrumentationHandler=d.addGlobalErrorInstrumentationHandler;n.addGlobalUnhandledRejectionInstrumentationHandler=I.addGlobalUnhandledRejectionInstrumentationHandler;n.addHandler=p.addHandler;n.maybeInstrument=p.maybeInstrument;n.resetInstrumentationHandlers=p.resetInstrumentationHandlers;n.triggerHandlers=p.triggerHandlers;n.isDOMError=m.isDOMError;n.isDOMException=m.isDOMException;n.isElement=m.isElement;n.isError=m.isError;n.isErrorEvent=m.isErrorEvent;n.isEvent=m.isEvent;n.isInstanceOf=m.isInstanceOf;n.isParameterizedString=m.isParameterizedString;n.isPlainObject=m.isPlainObject;n.isPrimitive=m.isPrimitive;n.isRegExp=m.isRegExp;n.isString=m.isString;n.isSyntheticEvent=m.isSyntheticEvent;n.isThenable=m.isThenable;n.isVueViewModel=m.isVueViewModel;n.isBrowser=C.isBrowser;n.CONSOLE_LEVELS=b.CONSOLE_LEVELS;n.consoleSandbox=b.consoleSandbox;n.logger=b.logger;n.originalConsoleMethods=b.originalConsoleMethods;n.memoBuilder=h.memoBuilder;n.addContextToFrame=f.addContextToFrame;n.addExceptionMechanism=f.addExceptionMechanism;n.addExceptionTypeValue=f.addExceptionTypeValue;n.arrayify=f.arrayify;n.checkOrSetAlreadyCaught=f.checkOrSetAlreadyCaught;n.getEventDescription=f.getEventDescription;n.parseSemver=f.parseSemver;n.uuid4=f.uuid4;n.dynamicRequire=y.dynamicRequire;n.isNodeEnv=y.isNodeEnv;n.loadModule=y.loadModule;n.normalize=G.normalize;n.normalizeToSize=G.normalizeToSize;n.normalizeUrlToBase=G.normalizeUrlToBase;n.addNonEnumerableProperty=B.addNonEnumerableProperty;n.convertToPlainObject=B.convertToPlainObject;n.dropUndefinedKeys=B.dropUndefinedKeys;n.extractExceptionKeysForMessage=B.extractExceptionKeysForMessage;n.fill=B.fill;n.getOriginalFunction=B.getOriginalFunction;n.markFunctionWrapped=B.markFunctionWrapped;n.objectify=B.objectify;n.urlEncode=B.urlEncode;n.basename=A.basename;n.dirname=A.dirname;n.isAbsolute=A.isAbsolute;n.join=A.join;n.normalizePath=A.normalizePath;n.relative=A.relative;n.resolve=A.resolve;n.makePromiseBuffer=Z.makePromiseBuffer;n.DEFAULT_USER_INCLUDES=S.DEFAULT_USER_INCLUDES;n.addRequestDataToEvent=S.addRequestDataToEvent;n.extractPathForTransaction=S.extractPathForTransaction;n.extractRequestData=S.extractRequestData;n.winterCGHeadersToDict=S.winterCGHeadersToDict;n.winterCGRequestToRequestData=S.winterCGRequestToRequestData;n.severityLevelFromString=v.severityLevelFromString;n.validSeverityLevels=v.validSeverityLevels;n.UNKNOWN_FUNCTION=W.UNKNOWN_FUNCTION;n.createStackParser=W.createStackParser;n.getFunctionName=W.getFunctionName;n.stackParserFromStackParserOptions=W.stackParserFromStackParserOptions;n.stripSentryFramesAndReverse=W.stripSentryFramesAndReverse;n.filenameIsInApp=R.filenameIsInApp;n.node=R.node;n.nodeStackLineParser=R.nodeStackLineParser;n.isMatchingPattern=_.isMatchingPattern;n.safeJoin=_.safeJoin;n.snipLine=_.snipLine;n.stringMatchesSomePattern=_.stringMatchesSomePattern;n.truncate=_.truncate;n.isNativeFunction=V.isNativeFunction;n.supportsDOMError=V.supportsDOMError;n.supportsDOMException=V.supportsDOMException;n.supportsErrorEvent=V.supportsErrorEvent;n.supportsFetch=V.supportsFetch;n.supportsNativeFetch=V.supportsNativeFetch;n.supportsReferrerPolicy=V.supportsReferrerPolicy;n.supportsReportingObserver=V.supportsReportingObserver;n.SyncPromise=H.SyncPromise;n.rejectedSyncPromise=H.rejectedSyncPromise;n.resolvedSyncPromise=H.resolvedSyncPromise;Object.defineProperty(n,"_browserPerformanceTimeOriginMode",{enumerable:true,get:()=>N._browserPerformanceTimeOriginMode});n.browserPerformanceTimeOrigin=N.browserPerformanceTimeOrigin;n.dateTimestampInSeconds=N.dateTimestampInSeconds;n.timestampInSeconds=N.timestampInSeconds;n.TRACEPARENT_REGEXP=E.TRACEPARENT_REGEXP;n.extractTraceparentData=E.extractTraceparentData;n.generateSentryTraceHeader=E.generateSentryTraceHeader;n.propagationContextFromHeaders=E.propagationContextFromHeaders;n.getSDKSource=T.getSDKSource;n.isBrowserBundle=T.isBrowserBundle;n.addItemToEnvelope=Y.addItemToEnvelope;n.createAttachmentEnvelopeItem=Y.createAttachmentEnvelopeItem;n.createEnvelope=Y.createEnvelope;n.createEventEnvelopeHeaders=Y.createEventEnvelopeHeaders;n.createSpanEnvelopeItem=Y.createSpanEnvelopeItem;n.envelopeContainsItemType=Y.envelopeContainsItemType;n.envelopeItemTypeToDataCategory=Y.envelopeItemTypeToDataCategory;n.forEachEnvelopeItem=Y.forEachEnvelopeItem;n.getSdkMetadataForEnvelopeHeader=Y.getSdkMetadataForEnvelopeHeader;n.parseEnvelope=Y.parseEnvelope;n.serializeEnvelope=Y.serializeEnvelope;n.createClientReportEnvelope=X.createClientReportEnvelope;n.DEFAULT_RETRY_AFTER=F.DEFAULT_RETRY_AFTER;n.disabledUntil=F.disabledUntil;n.isRateLimited=F.isRateLimited;n.parseRetryAfterHeader=F.parseRetryAfterHeader;n.updateRateLimits=F.updateRateLimits;n.BAGGAGE_HEADER_NAME=w.BAGGAGE_HEADER_NAME;n.MAX_BAGGAGE_STRING_LENGTH=w.MAX_BAGGAGE_STRING_LENGTH;n.SENTRY_BAGGAGE_KEY_PREFIX=w.SENTRY_BAGGAGE_KEY_PREFIX;n.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=w.SENTRY_BAGGAGE_KEY_PREFIX_REGEX;n.baggageHeaderToDynamicSamplingContext=w.baggageHeaderToDynamicSamplingContext;n.dynamicSamplingContextToSentryBaggageHeader=w.dynamicSamplingContextToSentryBaggageHeader;n.parseBaggageHeader=w.parseBaggageHeader;n.getNumberOfUrlSegments=K.getNumberOfUrlSegments;n.getSanitizedUrlString=K.getSanitizedUrlString;n.parseUrl=K.parseUrl;n.stripUrlQueryAndFragment=K.stripUrlQueryAndFragment;n.makeFifoCache=k.makeFifoCache;n.eventFromMessage=U.eventFromMessage;n.eventFromUnknownInput=U.eventFromUnknownInput;n.exceptionFromError=U.exceptionFromError;n.parseStackFrames=U.parseStackFrames;n.callFrameToStackFrame=J.callFrameToStackFrame;n.watchdogTimer=J.watchdogTimer;n.LRUMap=x.LRUMap;n._asyncNullishCoalesce=L._asyncNullishCoalesce;n._asyncOptionalChain=z._asyncOptionalChain;n._asyncOptionalChainDelete=O._asyncOptionalChainDelete;n._nullishCoalesce=M._nullishCoalesce;n._optionalChain=D._optionalChain;n._optionalChainDelete=j._optionalChainDelete;n.generatePropagationContext=P.generatePropagationContext;n.SDK_VERSION=Q.SDK_VERSION;n.escapeStringForRegex=q.escapeStringForRegex;n.supportsHistory=$.supportsHistory},1612:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(399);const i=r(7256);const a=r(8020);const c=r(2476);function addConsoleInstrumentationHandler(t){const n="console";c.addHandler(n,t);c.maybeInstrument(n,instrumentConsole)}function instrumentConsole(){if(!("console"in a.GLOBAL_OBJ)){return}o.CONSOLE_LEVELS.forEach(function(t){if(!(t in a.GLOBAL_OBJ.console)){return}i.fill(a.GLOBAL_OBJ.console,t,function(n){o.originalConsoleMethods[t]=n;return function(...n){const r={args:n,level:t};c.triggerHandlers("console",r);const i=o.originalConsoleMethods[t];i&&i.apply(a.GLOBAL_OBJ.console,n)}})})}n.addConsoleInstrumentationHandler=addConsoleInstrumentationHandler},4650:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(7256);const i=r(1831);const a=r(8742);const c=r(8020);const l=r(2476);function addFetchInstrumentationHandler(t){const n="fetch";l.addHandler(n,t);l.maybeInstrument(n,instrumentFetch)}function instrumentFetch(){if(!i.supportsNativeFetch()){return}o.fill(c.GLOBAL_OBJ,"fetch",function(t){return function(...n){const{method:r,url:o}=parseFetchArgs(n);const i={args:n,fetchData:{method:r,url:o},startTimestamp:a.timestampInSeconds()*1e3};l.triggerHandlers("fetch",{...i});return t.apply(c.GLOBAL_OBJ,n).then(t=>{const n={...i,endTimestamp:a.timestampInSeconds()*1e3,response:t};l.triggerHandlers("fetch",n);return t},t=>{const n={...i,endTimestamp:a.timestampInSeconds()*1e3,error:t};l.triggerHandlers("fetch",n);throw t})}})}function hasProp(t,n){return!!t&&typeof t==="object"&&!!t[n]}function getUrlFromResource(t){if(typeof t==="string"){return t}if(!t){return""}if(hasProp(t,"url")){return t.url}if(t.toString){return t.toString()}return""}function parseFetchArgs(t){if(t.length===0){return{method:"GET",url:""}}if(t.length===2){const[n,r]=t;return{url:getUrlFromResource(n),method:hasProp(r,"method")?String(r.method).toUpperCase():"GET"}}const n=t[0];return{url:getUrlFromResource(n),method:hasProp(n,"method")?String(n.method).toUpperCase():"GET"}}n.addFetchInstrumentationHandler=addFetchInstrumentationHandler;n.parseFetchArgs=parseFetchArgs},8878:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8020);const i=r(2476);let a=null;function addGlobalErrorInstrumentationHandler(t){const n="error";i.addHandler(n,t);i.maybeInstrument(n,instrumentError)}function instrumentError(){a=o.GLOBAL_OBJ.onerror;o.GLOBAL_OBJ.onerror=function(t,n,r,o,c){const l={column:o,error:c,line:r,msg:t,url:n};i.triggerHandlers("error",l);if(a&&!a.__SENTRY_LOADER__){return a.apply(this,arguments)}return false};o.GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__=true}n.addGlobalErrorInstrumentationHandler=addGlobalErrorInstrumentationHandler},7192:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8020);const i=r(2476);let a=null;function addGlobalUnhandledRejectionInstrumentationHandler(t){const n="unhandledrejection";i.addHandler(n,t);i.maybeInstrument(n,instrumentUnhandledRejection)}function instrumentUnhandledRejection(){a=o.GLOBAL_OBJ.onunhandledrejection;o.GLOBAL_OBJ.onunhandledrejection=function(t){const n=t;i.triggerHandlers("unhandledrejection",n);if(a&&!a.__SENTRY_LOADER__){return a.apply(this,arguments)}return true};o.GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__=true}n.addGlobalUnhandledRejectionInstrumentationHandler=addGlobalUnhandledRejectionInstrumentationHandler},2476:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8741);const i=r(399);const a=r(8846);const c={};const l={};function addHandler(t,n){c[t]=c[t]||[];c[t].push(n)}function resetInstrumentationHandlers(){Object.keys(c).forEach(t=>{c[t]=undefined})}function maybeInstrument(t,n){if(!l[t]){n();l[t]=true}}function triggerHandlers(t,n){const r=t&&c[t];if(!r){return}for(const c of r){try{c(n)}catch(n){o.DEBUG_BUILD&&i.logger.error(`Error while triggering instrumentation handler.\nType: ${t}\nName: ${a.getFunctionName(c)}\nError:`,n)}}}n.addHandler=addHandler;n.maybeInstrument=maybeInstrument;n.resetInstrumentationHandlers=resetInstrumentationHandlers;n.triggerHandlers=triggerHandlers},2667:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=Object.prototype.toString;function isError(t){switch(r.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return true;default:return isInstanceOf(t,Error)}}function isBuiltin(t,n){return r.call(t)===`[object ${n}]`}function isErrorEvent(t){return isBuiltin(t,"ErrorEvent")}function isDOMError(t){return isBuiltin(t,"DOMError")}function isDOMException(t){return isBuiltin(t,"DOMException")}function isString(t){return isBuiltin(t,"String")}function isParameterizedString(t){return typeof t==="object"&&t!==null&&"__sentry_template_string__"in t&&"__sentry_template_values__"in t}function isPrimitive(t){return t===null||isParameterizedString(t)||typeof t!=="object"&&typeof t!=="function"}function isPlainObject(t){return isBuiltin(t,"Object")}function isEvent(t){return typeof Event!=="undefined"&&isInstanceOf(t,Event)}function isElement(t){return typeof Element!=="undefined"&&isInstanceOf(t,Element)}function isRegExp(t){return isBuiltin(t,"RegExp")}function isThenable(t){return Boolean(t&&t.then&&typeof t.then==="function")}function isSyntheticEvent(t){return isPlainObject(t)&&"nativeEvent"in t&&"preventDefault"in t&&"stopPropagation"in t}function isInstanceOf(t,n){try{return t instanceof n}catch(t){return false}}function isVueViewModel(t){return!!(typeof t==="object"&&t!==null&&(t.__isVue||t._isVue))}n.isDOMError=isDOMError;n.isDOMException=isDOMException;n.isElement=isElement;n.isError=isError;n.isErrorEvent=isErrorEvent;n.isEvent=isEvent;n.isInstanceOf=isInstanceOf;n.isParameterizedString=isParameterizedString;n.isPlainObject=isPlainObject;n.isPrimitive=isPrimitive;n.isRegExp=isRegExp;n.isString=isString;n.isSyntheticEvent=isSyntheticEvent;n.isThenable=isThenable;n.isVueViewModel=isVueViewModel},2483:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1495);const i=r(8020);function isBrowser(){return typeof window!=="undefined"&&(!o.isNodeEnv()||isElectronNodeRenderer())}function isElectronNodeRenderer(){return i.GLOBAL_OBJ.process!==undefined&&i.GLOBAL_OBJ.process.type==="renderer"}n.isBrowser=isBrowser},399:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8741);const i=r(8020);const a="Sentry Logger ";const c=["debug","info","warn","error","log","assert","trace"];const l={};function consoleSandbox(t){if(!("console"in i.GLOBAL_OBJ)){return t()}const n=i.GLOBAL_OBJ.console;const r={};const o=Object.keys(l);o.forEach(t=>{const o=l[t];r[t]=n[t];n[t]=o});try{return t()}finally{o.forEach(t=>{n[t]=r[t]})}}function makeLogger(){let t=false;const n={enable:()=>{t=true},disable:()=>{t=false},isEnabled:()=>t};if(o.DEBUG_BUILD){c.forEach(r=>{n[r]=(...n)=>{if(t){consoleSandbox(()=>{i.GLOBAL_OBJ.console[r](`${a}[${r}]:`,...n)})}}})}else{c.forEach(t=>{n[t]=()=>undefined})}return n}const g=makeLogger();n.CONSOLE_LEVELS=c;n.consoleSandbox=consoleSandbox;n.logger=g;n.originalConsoleMethods=l},3178:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});class LRUMap{constructor(t){this._maxSize=t;this._cache=new Map}get size(){return this._cache.size}get(t){const n=this._cache.get(t);if(n===undefined){return undefined}this._cache.delete(t);this._cache.set(t,n);return n}set(t,n){if(this._cache.size>=this._maxSize){this._cache.delete(this._cache.keys().next().value)}this._cache.set(t,n)}remove(t){const n=this._cache.get(t);if(n){this._cache.delete(t)}return n}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){const t=[];this._cache.forEach(n=>t.push(n));return t}}n.LRUMap=LRUMap},3857:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function memoBuilder(){const t=typeof WeakSet==="function";const n=t?new WeakSet:[];function memoize(r){if(t){if(n.has(r)){return true}n.add(r);return false}for(let t=0;t<n.length;t++){const o=n[t];if(o===r){return true}}n.push(r);return false}function unmemoize(r){if(t){n.delete(r)}else{for(let t=0;t<n.length;t++){if(n[t]===r){n.splice(t,1);break}}}}return[memoize,unmemoize]}n.memoBuilder=memoBuilder},6235:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(7256);const i=r(9014);const a=r(8020);function uuid4(){const t=a.GLOBAL_OBJ;const n=t.crypto||t.msCrypto;let getRandomByte=()=>Math.random()*16;try{if(n&&n.randomUUID){return n.randomUUID().replace(/-/g,"")}if(n&&n.getRandomValues){getRandomByte=()=>{const t=new Uint8Array(1);n.getRandomValues(t);return t[0]}}}catch(t){}return([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,t=>(t^(getRandomByte()&15)>>t/4).toString(16))}function getFirstException(t){return t.exception&&t.exception.values?t.exception.values[0]:undefined}function getEventDescription(t){const{message:n,event_id:r}=t;if(n){return n}const o=getFirstException(t);if(o){if(o.type&&o.value){return`${o.type}: ${o.value}`}return o.type||o.value||r||"<unknown>"}return r||"<unknown>"}function addExceptionTypeValue(t,n,r){const o=t.exception=t.exception||{};const i=o.values=o.values||[];const a=i[0]=i[0]||{};if(!a.value){a.value=n||""}if(!a.type){a.type=r||"Error"}}function addExceptionMechanism(t,n){const r=getFirstException(t);if(!r){return}const o={type:"generic",handled:true};const i=r.mechanism;r.mechanism={...o,...i,...n};if(n&&"data"in n){const t={...i&&i.data,...n.data};r.mechanism.data=t}}const c=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;function parseSemver(t){const n=t.match(c)||[];const r=parseInt(n[1],10);const o=parseInt(n[2],10);const i=parseInt(n[3],10);return{buildmetadata:n[5],major:isNaN(r)?undefined:r,minor:isNaN(o)?undefined:o,patch:isNaN(i)?undefined:i,prerelease:n[4]}}function addContextToFrame(t,n,r=5){if(n.lineno===undefined){return}const o=t.length;const a=Math.max(Math.min(o-1,n.lineno-1),0);n.pre_context=t.slice(Math.max(0,a-r),a).map(t=>i.snipLine(t,0));n.context_line=i.snipLine(t[Math.min(o-1,a)],n.colno||0);n.post_context=t.slice(Math.min(a+1,o),a+1+r).map(t=>i.snipLine(t,0))}function checkOrSetAlreadyCaught(t){if(t&&t.__sentry_captured__){return true}try{o.addNonEnumerableProperty(t,"__sentry_captured__",true)}catch(t){}return false}function arrayify(t){return Array.isArray(t)?t:[t]}n.addContextToFrame=addContextToFrame;n.addExceptionMechanism=addExceptionMechanism;n.addExceptionTypeValue=addExceptionTypeValue;n.arrayify=arrayify;n.checkOrSetAlreadyCaught=checkOrSetAlreadyCaught;n.getEventDescription=getEventDescription;n.parseSemver=parseSemver;n.uuid4=uuid4},1486:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8846);function filenameIsInApp(t,n=false){const r=n||t&&!t.startsWith("/")&&!t.match(/^[A-Z]:/)&&!t.startsWith(".")&&!t.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//);return!r&&t!==undefined&&!t.includes("node_modules/")}function node(t){const n=/^\s*[-]{4,}$/;const r=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;return i=>{const a=i.match(r);if(a){let n;let r;let i;let c;let l;if(a[1]){i=a[1];let t=i.lastIndexOf(".");if(i[t-1]==="."){t--}if(t>0){n=i.slice(0,t);r=i.slice(t+1);const o=n.indexOf(".Module");if(o>0){i=i.slice(o+1);n=n.slice(0,o)}}c=undefined}if(r){c=n;l=r}if(r==="<anonymous>"){l=undefined;i=undefined}if(i===undefined){l=l||o.UNKNOWN_FUNCTION;i=c?`${c}.${l}`:l}let g=a[2]&&a[2].startsWith("file://")?a[2].slice(7):a[2];const u=a[5]==="native";if(g&&g.match(/\/[A-Z]:/)){g=g.slice(1)}if(!g&&a[5]&&!u){g=a[5]}return{filename:g,module:t?t(g):undefined,function:i,lineno:parseInt(a[3],10)||undefined,colno:parseInt(a[4],10)||undefined,in_app:filenameIsInApp(g,u)}}if(i.match(n)){return{filename:i}}return undefined}}function nodeStackLineParser(t){return[90,node(t)]}n.filenameIsInApp=filenameIsInApp;n.node=node;n.nodeStackLineParser=nodeStackLineParser},1495:(t,n,r)=>{t=r.nmd(t);Object.defineProperty(n,"__esModule",{value:true});const o=r(6112);function isNodeEnv(){return!o.isBrowserBundle()&&Object.prototype.toString.call(typeof process!=="undefined"?process:0)==="[object process]"}function dynamicRequire(t,n){return t.require(n)}function loadModule(n){let r;try{r=dynamicRequire(t,n)}catch(t){}try{const{cwd:o}=dynamicRequire(t,"process");r=dynamicRequire(t,`${o()}/node_modules/${n}`)}catch(t){}return r}n.dynamicRequire=dynamicRequire;n.isNodeEnv=isNodeEnv;n.loadModule=loadModule},676:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2667);const i=r(3857);const a=r(7256);const c=r(8846);function normalize(t,n=100,r=+Infinity){try{return visit("",t,n,r)}catch(t){return{ERROR:`**non-serializable** (${t})`}}}function normalizeToSize(t,n=3,r=100*1024){const o=normalize(t,n);if(jsonSize(o)>r){return normalizeToSize(t,n-1,r)}return o}function visit(t,n,r=+Infinity,o=+Infinity,c=i.memoBuilder()){const[l,g]=c;if(n==null||["number","boolean","string"].includes(typeof n)&&!Number.isNaN(n)){return n}const u=stringifyValue(t,n);if(!u.startsWith("[object ")){return u}if(n["__sentry_skip_normalization__"]){return n}const d=typeof n["__sentry_override_normalization_depth__"]==="number"?n["__sentry_override_normalization_depth__"]:r;if(d===0){return u.replace("object ","")}if(l(n)){return"[Circular ~]"}const I=n;if(I&&typeof I.toJSON==="function"){try{const t=I.toJSON();return visit("",t,d-1,o,c)}catch(t){}}const p=Array.isArray(n)?[]:{};let m=0;const C=a.convertToPlainObject(n);for(const t in C){if(!Object.prototype.hasOwnProperty.call(C,t)){continue}if(m>=o){p[t]="[MaxProperties ~]";break}const n=C[t];p[t]=visit(t,n,d-1,o,c);m++}g(n);return p}function stringifyValue(t,n){try{if(t==="domain"&&n&&typeof n==="object"&&n._events){return"[Domain]"}if(t==="domainEmitter"){return"[DomainEmitter]"}if(typeof global!=="undefined"&&n===global){return"[Global]"}if(typeof window!=="undefined"&&n===window){return"[Window]"}if(typeof document!=="undefined"&&n===document){return"[Document]"}if(o.isVueViewModel(n)){return"[VueViewModel]"}if(o.isSyntheticEvent(n)){return"[SyntheticEvent]"}if(typeof n==="number"&&n!==n){return"[NaN]"}if(typeof n==="function"){return`[Function: ${c.getFunctionName(n)}]`}if(typeof n==="symbol"){return`[${String(n)}]`}if(typeof n==="bigint"){return`[BigInt: ${String(n)}]`}const r=getConstructorName(n);if(/^HTML(\w*)Element$/.test(r)){return`[HTMLElement: ${r}]`}return`[object ${r}]`}catch(t){return`**non-serializable** (${t})`}}function getConstructorName(t){const n=Object.getPrototypeOf(t);return n?n.constructor.name:"null prototype"}function utf8Length(t){return~-encodeURI(t).split(/%..|./).length}function jsonSize(t){return utf8Length(JSON.stringify(t))}function normalizeUrlToBase(t,n){const r=n.replace(/\\/g,"/").replace(/[|\\{}()[\]^$+*?.]/g,"\\$&");let o=t;try{o=decodeURI(t)}catch(t){}return o.replace(/\\/g,"/").replace(/webpack:\/?/g,"").replace(new RegExp(`(file://)?/*${r}/*`,"ig"),"app:///")}n.normalize=normalize;n.normalizeToSize=normalizeToSize;n.normalizeUrlToBase=normalizeUrlToBase},7256:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5691);const i=r(8741);const a=r(2667);const c=r(399);const l=r(9014);function fill(t,n,r){if(!(n in t)){return}const o=t[n];const i=r(o);if(typeof i==="function"){markFunctionWrapped(i,o)}t[n]=i}function addNonEnumerableProperty(t,n,r){try{Object.defineProperty(t,n,{value:r,writable:true,configurable:true})}catch(r){i.DEBUG_BUILD&&c.logger.log(`Failed to add non-enumerable property "${n}" to object`,t)}}function markFunctionWrapped(t,n){try{const r=n.prototype||{};t.prototype=n.prototype=r;addNonEnumerableProperty(t,"__sentry_original__",n)}catch(t){}}function getOriginalFunction(t){return t.__sentry_original__}function urlEncode(t){return Object.keys(t).map(n=>`${encodeURIComponent(n)}=${encodeURIComponent(t[n])}`).join("&")}function convertToPlainObject(t){if(a.isError(t)){return{message:t.message,name:t.name,stack:t.stack,...getOwnProperties(t)}}else if(a.isEvent(t)){const n={type:t.type,target:serializeEventTarget(t.target),currentTarget:serializeEventTarget(t.currentTarget),...getOwnProperties(t)};if(typeof CustomEvent!=="undefined"&&a.isInstanceOf(t,CustomEvent)){n.detail=t.detail}return n}else{return t}}function serializeEventTarget(t){try{return a.isElement(t)?o.htmlTreeAsString(t):Object.prototype.toString.call(t)}catch(t){return"<unknown>"}}function getOwnProperties(t){if(typeof t==="object"&&t!==null){const n={};for(const r in t){if(Object.prototype.hasOwnProperty.call(t,r)){n[r]=t[r]}}return n}else{return{}}}function extractExceptionKeysForMessage(t,n=40){const r=Object.keys(convertToPlainObject(t));r.sort();if(!r.length){return"[object has no keys]"}if(r[0].length>=n){return l.truncate(r[0],n)}for(let t=r.length;t>0;t--){const o=r.slice(0,t).join(", ");if(o.length>n){continue}if(t===r.length){return o}return l.truncate(o,n)}return""}function dropUndefinedKeys(t){const n=new Map;return _dropUndefinedKeys(t,n)}function _dropUndefinedKeys(t,n){if(isPojo(t)){const r=n.get(t);if(r!==undefined){return r}const o={};n.set(t,o);for(const r of Object.keys(t)){if(typeof t[r]!=="undefined"){o[r]=_dropUndefinedKeys(t[r],n)}}return o}if(Array.isArray(t)){const r=n.get(t);if(r!==undefined){return r}const o=[];n.set(t,o);t.forEach(t=>{o.push(_dropUndefinedKeys(t,n))});return o}return t}function isPojo(t){if(!a.isPlainObject(t)){return false}try{const n=Object.getPrototypeOf(t).constructor.name;return!n||n==="Object"}catch(t){return true}}function objectify(t){let n;switch(true){case t===undefined||t===null:n=new String(t);break;case typeof t==="symbol"||typeof t==="bigint":n=Object(t);break;case a.isPrimitive(t):n=new t.constructor(t);break;default:n=t;break}return n}n.addNonEnumerableProperty=addNonEnumerableProperty;n.convertToPlainObject=convertToPlainObject;n.dropUndefinedKeys=dropUndefinedKeys;n.extractExceptionKeysForMessage=extractExceptionKeysForMessage;n.fill=fill;n.getOriginalFunction=getOriginalFunction;n.markFunctionWrapped=markFunctionWrapped;n.objectify=objectify;n.urlEncode=urlEncode},7528:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function normalizeArray(t,n){let r=0;for(let n=t.length-1;n>=0;n--){const o=t[n];if(o==="."){t.splice(n,1)}else if(o===".."){t.splice(n,1);r++}else if(r){t.splice(n,1);r--}}if(n){for(;r--;r){t.unshift("..")}}return t}const r=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function splitPath(t){const n=t.length>1024?`<truncated>${t.slice(-1024)}`:t;const o=r.exec(n);return o?o.slice(1):[]}function resolve(...t){let n="";let r=false;for(let o=t.length-1;o>=-1&&!r;o--){const i=o>=0?t[o]:"/";if(!i){continue}n=`${i}/${n}`;r=i.charAt(0)==="/"}n=normalizeArray(n.split("/").filter(t=>!!t),!r).join("/");return(r?"/":"")+n||"."}function trim(t){let n=0;for(;n<t.length;n++){if(t[n]!==""){break}}let r=t.length-1;for(;r>=0;r--){if(t[r]!==""){break}}if(n>r){return[]}return t.slice(n,r-n+1)}function relative(t,n){t=resolve(t).slice(1);n=resolve(n).slice(1);const r=trim(t.split("/"));const o=trim(n.split("/"));const i=Math.min(r.length,o.length);let a=i;for(let t=0;t<i;t++){if(r[t]!==o[t]){a=t;break}}let c=[];for(let t=a;t<r.length;t++){c.push("..")}c=c.concat(o.slice(a));return c.join("/")}function normalizePath(t){const n=isAbsolute(t);const r=t.slice(-1)==="/";let o=normalizeArray(t.split("/").filter(t=>!!t),!n).join("/");if(!o&&!n){o="."}if(o&&r){o+="/"}return(n?"/":"")+o}function isAbsolute(t){return t.charAt(0)==="/"}function join(...t){return normalizePath(t.join("/"))}function dirname(t){const n=splitPath(t);const r=n[0];let o=n[1];if(!r&&!o){return"."}if(o){o=o.slice(0,o.length-1)}return r+o}function basename(t,n){let r=splitPath(t)[2];if(n&&r.slice(n.length*-1)===n){r=r.slice(0,r.length-n.length)}return r}n.basename=basename;n.dirname=dirname;n.isAbsolute=isAbsolute;n.join=join;n.normalizePath=normalizePath;n.relative=relative;n.resolve=resolve},256:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5989);const i=r(9227);function makePromiseBuffer(t){const n=[];function isReady(){return t===undefined||n.length<t}function remove(t){return n.splice(n.indexOf(t),1)[0]}function add(t){if(!isReady()){return i.rejectedSyncPromise(new o.SentryError("Not adding Promise because buffer limit was reached."))}const r=t();if(n.indexOf(r)===-1){n.push(r)}void r.then(()=>remove(r)).then(null,()=>remove(r).then(null,()=>{}));return r}function drain(t){return new i.SyncPromise((r,o)=>{let a=n.length;if(!a){return r(true)}const c=setTimeout(()=>{if(t&&t>0){r(false)}},t);n.forEach(t=>{void i.resolvedSyncPromise(t).then(()=>{if(! --a){clearTimeout(c);r(true)}},o)})})}return{$:n,add:add,drain:drain}}n.makePromiseBuffer=makePromiseBuffer},7958:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(6235);function generatePropagationContext(){return{traceId:o.uuid4(),spanId:o.uuid4().substring(16)}}n.generatePropagationContext=generatePropagationContext},7822:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=60*1e3;function parseRetryAfterHeader(t,n=Date.now()){const o=parseInt(`${t}`,10);if(!isNaN(o)){return o*1e3}const i=Date.parse(`${t}`);if(!isNaN(i)){return i-n}return r}function disabledUntil(t,n){return t[n]||t.all||0}function isRateLimited(t,n,r=Date.now()){return disabledUntil(t,n)>r}function updateRateLimits(t,{statusCode:n,headers:r},o=Date.now()){const i={...t};const a=r&&r["x-sentry-rate-limits"];const c=r&&r["retry-after"];if(a){for(const t of a.trim().split(",")){const[n,r,,,a]=t.split(":",5);const c=parseInt(n,10);const l=(!isNaN(c)?c:60)*1e3;if(!r){i.all=o+l}else{for(const t of r.split(";")){if(t==="metric_bucket"){if(!a||a.split(";").includes("custom")){i[t]=o+l}}else{i[t]=o+l}}}}}else if(c){i.all=o+parseRetryAfterHeader(c,o)}else if(n===429){i.all=o+60*1e3}return i}n.DEFAULT_RETRY_AFTER=r;n.disabledUntil=disabledUntil;n.isRateLimited=isRateLimited;n.parseRetryAfterHeader=parseRetryAfterHeader;n.updateRateLimits=updateRateLimits},5006:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(5797);const i=r(8741);const a=r(2667);const c=r(399);const l=r(676);const g=r(4494);const u={ip:false,request:true,transaction:true,user:true};const d=["cookies","data","headers","method","query_string","url"];const I=["id","username","email"];function extractPathForTransaction(t,n={}){const r=t.method&&t.method.toUpperCase();let o="";let i="url";if(n.customRoute||t.route){o=n.customRoute||`${t.baseUrl||""}${t.route&&t.route.path}`;i="route"}else if(t.originalUrl||t.url){o=g.stripUrlQueryAndFragment(t.originalUrl||t.url||"")}let a="";if(n.method&&r){a+=r}if(n.method&&n.path){a+=" "}if(n.path&&o){a+=o}return[a,i]}function extractTransaction(t,n){switch(n){case"path":{return extractPathForTransaction(t,{path:true})[0]}case"handler":{return t.route&&t.route.stack&&t.route.stack[0]&&t.route.stack[0].name||"<anonymous>"}case"methodPath":default:{const n=t._reconstructedRoute?t._reconstructedRoute:undefined;return extractPathForTransaction(t,{path:true,method:true,customRoute:n})[0]}}}function extractUserData(t,n){const r={};const o=Array.isArray(n)?n:I;o.forEach(n=>{if(t&&n in t){r[n]=t[n]}});return r}function extractRequestData(t,n){const{include:r=d}=n||{};const i={};const c=t.headers||{};const g=t.method;const u=c.host||t.hostname||t.host||"<no host>";const I=t.protocol==="https"||t.socket&&t.socket.encrypted?"https":"http";const p=t.originalUrl||t.url||"";const m=p.startsWith(I)?p:`${I}://${u}${p}`;r.forEach(n=>{switch(n){case"headers":{i.headers=c;if(!r.includes("cookies")){delete i.headers.cookie}break}case"method":{i.method=g;break}case"url":{i.url=m;break}case"cookies":{i.cookies=t.cookies||c.cookie&&o.parseCookie(c.cookie)||{};break}case"query_string":{i.query_string=extractQueryParams(t);break}case"data":{if(g==="GET"||g==="HEAD"){break}if(t.body!==undefined){i.data=a.isString(t.body)?t.body:JSON.stringify(l.normalize(t.body))}break}default:{if({}.hasOwnProperty.call(t,n)){i[n]=t[n]}}}});return i}function addRequestDataToEvent(t,n,r){const o={...u,...r&&r.include};if(o.request){const r=Array.isArray(o.request)?extractRequestData(n,{include:o.request}):extractRequestData(n);t.request={...t.request,...r}}if(o.user){const r=n.user&&a.isPlainObject(n.user)?extractUserData(n.user,o.user):{};if(Object.keys(r).length){t.user={...t.user,...r}}}if(o.ip){const r=n.ip||n.socket&&n.socket.remoteAddress;if(r){t.user={...t.user,ip_address:r}}}if(o.transaction&&!t.transaction&&t.type==="transaction"){t.transaction=extractTransaction(n,o.transaction)}return t}function extractQueryParams(t){let n=t.originalUrl||t.url||"";if(!n){return}if(n.startsWith("/")){n=`http://dogs.are.great${n}`}try{const r=t.query||new URL(n).search.slice(1);return r.length?r:undefined}catch(t){return undefined}}function winterCGHeadersToDict(t){const n={};try{t.forEach((t,r)=>{if(typeof t==="string"){n[r]=t}})}catch(t){i.DEBUG_BUILD&&c.logger.warn("Sentry failed extracting headers from a request object. If you see this, please file an issue.")}return n}function winterCGRequestToRequestData(t){const n=winterCGHeadersToDict(t.headers);return{method:t.method,url:t.url,headers:n}}n.DEFAULT_USER_INCLUDES=I;n.addRequestDataToEvent=addRequestDataToEvent;n.extractPathForTransaction=extractPathForTransaction;n.extractRequestData=extractRequestData;n.winterCGHeadersToDict=winterCGHeadersToDict;n.winterCGRequestToRequestData=winterCGRequestToRequestData},1688:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=["fatal","error","warning","log","info","debug"];function severityLevelFromString(t){return t==="warn"?"warning":r.includes(t)?t:"log"}n.severityLevelFromString=severityLevelFromString;n.validSeverityLevels=r},8846:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=50;const o="?";const i=/\(error: (.*)\)/;const a=/captureMessage|captureException/;function createStackParser(...t){const n=t.sort((t,n)=>t[0]-n[0]).map(t=>t[1]);return(t,o=0,a=0)=>{const c=[];const l=t.split("\n");for(let t=o;t<l.length;t++){const o=l[t];if(o.length>1024){continue}const g=i.test(o)?o.replace(i,"$1"):o;if(g.match(/\S*Error: /)){continue}for(const t of n){const n=t(g);if(n){c.push(n);break}}if(c.length>=r+a){break}}return stripSentryFramesAndReverse(c.slice(a))}}function stackParserFromStackParserOptions(t){if(Array.isArray(t)){return createStackParser(...t)}return t}function stripSentryFramesAndReverse(t){if(!t.length){return[]}const n=Array.from(t);if(/sentryWrapped/.test(n[n.length-1].function||"")){n.pop()}n.reverse();if(a.test(n[n.length-1].function||"")){n.pop();if(a.test(n[n.length-1].function||"")){n.pop()}}return n.slice(0,r).map(t=>({...t,filename:t.filename||n[n.length-1].filename,function:t.function||o}))}const c="<anonymous>";function getFunctionName(t){try{if(!t||typeof t!=="function"){return c}return t.name||c}catch(t){return c}}n.UNKNOWN_FUNCTION=o;n.createStackParser=createStackParser;n.getFunctionName=getFunctionName;n.stackParserFromStackParserOptions=stackParserFromStackParserOptions;n.stripSentryFramesAndReverse=stripSentryFramesAndReverse},9014:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2667);function truncate(t,n=0){if(typeof t!=="string"||n===0){return t}return t.length<=n?t:`${t.slice(0,n)}...`}function snipLine(t,n){let r=t;const o=r.length;if(o<=150){return r}if(n>o){n=o}let i=Math.max(n-60,0);if(i<5){i=0}let a=Math.min(i+140,o);if(a>o-5){a=o}if(a===o){i=Math.max(a-140,0)}r=r.slice(i,a);if(i>0){r=`'{snip} ${r}`}if(a<o){r+=" {snip}"}return r}function safeJoin(t,n){if(!Array.isArray(t)){return""}const r=[];for(let n=0;n<t.length;n++){const i=t[n];try{if(o.isVueViewModel(i)){r.push("[VueViewModel]")}else{r.push(String(i))}}catch(t){r.push("[value cannot be serialized]")}}return r.join(n)}function isMatchingPattern(t,n,r=false){if(!o.isString(t)){return false}if(o.isRegExp(n)){return n.test(t)}if(o.isString(n)){return r?t===n:t.includes(n)}return false}function stringMatchesSomePattern(t,n=[],r=false){return n.some(n=>isMatchingPattern(t,n,r))}n.isMatchingPattern=isMatchingPattern;n.safeJoin=safeJoin;n.snipLine=snipLine;n.stringMatchesSomePattern=stringMatchesSomePattern;n.truncate=truncate},1831:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8741);const i=r(399);const a=r(8020);const c=a.GLOBAL_OBJ;function supportsErrorEvent(){try{new ErrorEvent("");return true}catch(t){return false}}function supportsDOMError(){try{new DOMError("");return true}catch(t){return false}}function supportsDOMException(){try{new DOMException("");return true}catch(t){return false}}function supportsFetch(){if(!("fetch"in c)){return false}try{new Headers;new Request("http://www.example.com");new Response;return true}catch(t){return false}}function isNativeFunction(t){return t&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(t.toString())}function supportsNativeFetch(){if(typeof EdgeRuntime==="string"){return true}if(!supportsFetch()){return false}if(isNativeFunction(c.fetch)){return true}let t=false;const n=c.document;if(n&&typeof n.createElement==="function"){try{const r=n.createElement("iframe");r.hidden=true;n.head.appendChild(r);if(r.contentWindow&&r.contentWindow.fetch){t=isNativeFunction(r.contentWindow.fetch)}n.head.removeChild(r)}catch(t){o.DEBUG_BUILD&&i.logger.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",t)}}return t}function supportsReportingObserver(){return"ReportingObserver"in c}function supportsReferrerPolicy(){if(!supportsFetch()){return false}try{new Request("_",{referrerPolicy:"origin"});return true}catch(t){return false}}n.isNativeFunction=isNativeFunction;n.supportsDOMError=supportsDOMError;n.supportsDOMException=supportsDOMException;n.supportsErrorEvent=supportsErrorEvent;n.supportsFetch=supportsFetch;n.supportsNativeFetch=supportsNativeFetch;n.supportsReferrerPolicy=supportsReferrerPolicy;n.supportsReportingObserver=supportsReportingObserver},9227:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2667);var i;(function(t){const n=0;t[t["PENDING"]=n]="PENDING";const r=1;t[t["RESOLVED"]=r]="RESOLVED";const o=2;t[t["REJECTED"]=o]="REJECTED"})(i||(i={}));function resolvedSyncPromise(t){return new SyncPromise(n=>{n(t)})}function rejectedSyncPromise(t){return new SyncPromise((n,r)=>{r(t)})}class SyncPromise{constructor(t){SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);this._state=i.PENDING;this._handlers=[];try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}then(t,n){return new SyncPromise((r,o)=>{this._handlers.push([false,n=>{if(!t){r(n)}else{try{r(t(n))}catch(t){o(t)}}},t=>{if(!n){o(t)}else{try{r(n(t))}catch(t){o(t)}}}]);this._executeHandlers()})}catch(t){return this.then(t=>t,t)}finally(t){return new SyncPromise((n,r)=>{let o;let i;return this.then(n=>{i=false;o=n;if(t){t()}},n=>{i=true;o=n;if(t){t()}}).then(()=>{if(i){r(o);return}n(o)})})}__init(){this._resolve=t=>{this._setResult(i.RESOLVED,t)}}__init2(){this._reject=t=>{this._setResult(i.REJECTED,t)}}__init3(){this._setResult=(t,n)=>{if(this._state!==i.PENDING){return}if(o.isThenable(n)){void n.then(this._resolve,this._reject);return}this._state=t;this._value=n;this._executeHandlers()}}__init4(){this._executeHandlers=()=>{if(this._state===i.PENDING){return}const t=this._handlers.slice();this._handlers=[];t.forEach(t=>{if(t[0]){return}if(this._state===i.RESOLVED){t[1](this._value)}if(this._state===i.REJECTED){t[2](this._value)}t[0]=true})}}}n.SyncPromise=SyncPromise;n.rejectedSyncPromise=rejectedSyncPromise;n.resolvedSyncPromise=resolvedSyncPromise},8742:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8020);const i=1e3;function dateTimestampInSeconds(){return Date.now()/i}function createUnixTimestampInSecondsFunc(){const{performance:t}=o.GLOBAL_OBJ;if(!t||!t.now){return dateTimestampInSeconds}const n=Date.now()-t.now();const r=t.timeOrigin==undefined?n:t.timeOrigin;return()=>(r+t.now())/i}const a=createUnixTimestampInSecondsFunc();n._browserPerformanceTimeOriginMode=void 0;const c=(()=>{const{performance:t}=o.GLOBAL_OBJ;if(!t||!t.now){n._browserPerformanceTimeOriginMode="none";return undefined}const r=3600*1e3;const i=t.now();const a=Date.now();const c=t.timeOrigin?Math.abs(t.timeOrigin+i-a):r;const l=c<r;const g=t.timing&&t.timing.navigationStart;const u=typeof g==="number";const d=u?Math.abs(g+i-a):r;const I=d<r;if(l||I){if(c<=d){n._browserPerformanceTimeOriginMode="timeOrigin";return t.timeOrigin}else{n._browserPerformanceTimeOriginMode="navigationStart";return g}}n._browserPerformanceTimeOriginMode="dateNow";return a})();n.browserPerformanceTimeOrigin=c;n.dateTimestampInSeconds=dateTimestampInSeconds;n.timestampInSeconds=a},3393:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(2121);const i=r(6235);const a=new RegExp("^[ \\t]*"+"([0-9a-f]{32})?"+"-?([0-9a-f]{16})?"+"-?([01])?"+"[ \\t]*$");function extractTraceparentData(t){if(!t){return undefined}const n=t.match(a);if(!n){return undefined}let r;if(n[3]==="1"){r=true}else if(n[3]==="0"){r=false}return{traceId:n[1],parentSampled:r,parentSpanId:n[2]}}function propagationContextFromHeaders(t,n){const r=extractTraceparentData(t);const a=o.baggageHeaderToDynamicSamplingContext(n);const{traceId:c,parentSpanId:l,parentSampled:g}=r||{};if(!r){return{traceId:c||i.uuid4(),spanId:i.uuid4().substring(16)}}else{return{traceId:c||i.uuid4(),parentSpanId:l||i.uuid4().substring(16),spanId:i.uuid4().substring(16),sampled:g,dsc:a||{}}}}function generateSentryTraceHeader(t=i.uuid4(),n=i.uuid4().substring(16),r){let o="";if(r!==undefined){o=r?"-1":"-0"}return`${t}-${n}${o}`}n.TRACEPARENT_REGEXP=a;n.extractTraceparentData=extractTraceparentData;n.generateSentryTraceHeader=generateSentryTraceHeader;n.propagationContextFromHeaders=propagationContextFromHeaders},4494:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parseUrl(t){if(!t){return{}}const n=t.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!n){return{}}const r=n[6]||"";const o=n[8]||"";return{host:n[4],path:n[5],protocol:n[2],search:r,hash:o,relative:n[5]+r+o}}function stripUrlQueryAndFragment(t){return t.split(/[\?#]/,1)[0]}function getNumberOfUrlSegments(t){return t.split(/\\?\//).filter(t=>t.length>0&&t!==",").length}function getSanitizedUrlString(t){const{protocol:n,host:r,path:o}=t;const i=r&&r.replace(/^.*@/,"[filtered]:[filtered]@").replace(/(:80)$/,"").replace(/(:443)$/,"")||"";return`${n?`${n}://`:""}${i}${o}`}n.getNumberOfUrlSegments=getNumberOfUrlSegments;n.getSanitizedUrlString=getSanitizedUrlString;n.parseUrl=parseUrl;n.stripUrlQueryAndFragment=stripUrlQueryAndFragment},6856:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function escapeStringForRegex(t){return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}n.escapeStringForRegex=escapeStringForRegex},4382:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(8020);const i=o.GLOBAL_OBJ;function supportsHistory(){const t=i.chrome;const n=t&&t.app&&t.app.runtime;const r="history"in i&&!!i.history.pushState&&!!i.history.replaceState;return!n&&r}n.supportsHistory=supportsHistory},4503:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r="8.7.0";n.SDK_VERSION=r},8020:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4503);const i=globalThis;function getGlobalSingleton(t,n,r){const a=r||i;const c=a.__SENTRY__=a.__SENTRY__||{};const l=c[o.SDK_VERSION]=c[o.SDK_VERSION]||{};return l[t]||(l[t]=n())}n.GLOBAL_OBJ=i;n.getGlobalSingleton=getGlobalSingleton},414:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(5472);const c=r(1884);function registerBackgroundTabDetection(){if(c.WINDOW.document){c.WINDOW.document.addEventListener("visibilitychange",()=>{const t=o.getActiveTransaction();if(c.WINDOW.document.hidden&&t){const n="cancelled";const{op:r,status:c}=o.spanToJSON(t);a.DEBUG_BUILD&&i.logger.log(`[Tracing] Transaction: ${n} -> since tab moved to the background, op: ${r}`);if(!c){t.setStatus(n)}t.setTag("visibilitychange","document.hidden");t.end()}})}else{a.DEBUG_BUILD&&i.logger.warn("[Tracing] Could not set up background tab detection due to lack of global document")}}n.registerBackgroundTabDetection=registerBackgroundTabDetection},6157:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(5472);const c=r(414);const l=r(2516);const g=r(5703);const u=r(3312);const d=r(1884);const I="BrowserTracing";const p={...o.TRACING_DEFAULTS,instrumentNavigation:true,instrumentPageLoad:true,markBackgroundSpan:true,enableLongTask:true,enableInp:false,interactionsSampleRate:1,_experiments:{},...u.defaultRequestInstrumentationOptions};const browserTracingIntegration=(t={})=>{const n=a.DEBUG_BUILD?!!(t.tracePropagationTargets||t.tracingOrigins):false;o.addTracingExtensions();if(!t.tracePropagationTargets&&t.tracingOrigins){t.tracePropagationTargets=t.tracingOrigins}const r={...p,...t};const l=g.startTrackingWebVitals();const m={};if(r.enableInp){g.startTrackingINP(m,r.interactionsSampleRate)}if(r.enableLongTask){g.startTrackingLongTasks()}if(r._experiments.enableInteractions){g.startTrackingInteractions()}const C={name:undefined,context:undefined};function _createRouteTransaction(t){const n=o.getCurrentHub();const{beforeStartSpan:c,idleTimeout:u,finalTimeout:I,heartbeatInterval:p}=r;const m=t.op==="pageload";let b;if(m){const n=m?getMetaContent("sentry-trace"):"";const r=m?getMetaContent("baggage"):undefined;const{traceId:o,dsc:a,parentSpanId:c,sampled:l}=i.propagationContextFromHeaders(n,r);b={traceId:o,parentSpanId:c,parentSampled:l,...t,metadata:{...t.metadata,dynamicSamplingContext:a},trimEnd:true}}else{b={trimEnd:true,...t}}const h=c?c(b):b;h.metadata=h.name!==b.name?{...h.metadata,source:"custom"}:h.metadata;C.name=h.name;C.context=h;if(h.sampled===false){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Will not send ${h.op} transaction because of beforeNavigate.`)}a.DEBUG_BUILD&&i.logger.log(`[Tracing] Starting ${h.op} transaction on scope`);const{location:f}=d.WINDOW;const y=o.startIdleTransaction(n,h,u,I,true,{location:f},p,m);if(m&&d.WINDOW.document){d.WINDOW.document.addEventListener("readystatechange",()=>{if(["interactive","complete"].includes(d.WINDOW.document.readyState)){y.sendAutoFinishSignal()}});if(["interactive","complete"].includes(d.WINDOW.document.readyState)){y.sendAutoFinishSignal()}}y.registerBeforeFinishCallback(t=>{l();g.addPerformanceEntries(t)});return y}return{name:I,setupOnce:()=>{},afterAllSetup(t){const l=t.getOptions();const{markBackgroundSpan:g,traceFetch:I,traceXHR:p,shouldCreateSpanForRequest:b,enableHTTPTimings:h,_experiments:f}=r;const y=l&&l.tracePropagationTargets;const G=y||r.tracePropagationTargets;if(a.DEBUG_BUILD&&n&&y){i.logger.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.")}let B;let A=d.WINDOW.location&&d.WINDOW.location.href;if(t.on){t.on("startNavigationSpan",t=>{if(B){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Finishing current transaction with op: ${o.spanToJSON(B).op}`);B.end()}B=_createRouteTransaction({op:"navigation",...t})});t.on("startPageLoadSpan",t=>{if(B){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Finishing current transaction with op: ${o.spanToJSON(B).op}`);B.end()}B=_createRouteTransaction({op:"pageload",...t})})}if(r.instrumentPageLoad&&t.emit&&d.WINDOW.location){const n={name:d.WINDOW.location.pathname,startTimestamp:i.browserPerformanceTimeOrigin?i.browserPerformanceTimeOrigin/1e3:undefined,origin:"auto.pageload.browser",attributes:{[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"}};startBrowserTracingPageLoadSpan(t,n)}if(r.instrumentNavigation&&t.emit&&d.WINDOW.location){i.addHistoryInstrumentationHandler(({to:n,from:r})=>{if(r===undefined&&A&&A.indexOf(n)!==-1){A=undefined;return}if(r!==n){A=undefined;const n={name:d.WINDOW.location.pathname,origin:"auto.navigation.browser",attributes:{[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"}};startBrowserTracingNavigationSpan(t,n)}})}if(g){c.registerBackgroundTabDetection()}if(f.enableInteractions){registerInteractionListener(r,C)}if(r.enableInp){registerInpInteractionListener(m,C)}u.instrumentOutgoingRequests({traceFetch:I,traceXHR:p,tracePropagationTargets:G,shouldCreateSpanForRequest:b,enableHTTPTimings:h})},options:r}};function startBrowserTracingPageLoadSpan(t,n){if(!t.emit){return}t.emit("startPageLoadSpan",n);const r=o.getActiveSpan();const i=r&&o.spanToJSON(r).op;return i==="pageload"?r:undefined}function startBrowserTracingNavigationSpan(t,n){if(!t.emit){return}t.emit("startNavigationSpan",n);const r=o.getActiveSpan();const i=r&&o.spanToJSON(r).op;return i==="navigation"?r:undefined}function getMetaContent(t){const n=i.getDomElement(`meta[name=${t}]`);return n?n.getAttribute("content"):undefined}function registerInteractionListener(t,n){let r;const registerInteractionTransaction=()=>{const{idleTimeout:c,finalTimeout:l,heartbeatInterval:g}=t;const u="ui.action.click";const I=o.getActiveTransaction();if(I&&I.op&&["navigation","pageload"].includes(I.op)){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${u} transaction because a pageload or navigation transaction is in progress.`);return undefined}if(r){r.setFinishReason("interactionInterrupted");r.end();r=undefined}if(!n.name){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${u} transaction because _latestRouteName is missing.`);return undefined}const{location:p}=d.WINDOW;const m={name:n.name,op:u,trimEnd:true,data:{[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:n.context?getSource(n.context):"url"}};r=o.startIdleTransaction(o.getCurrentHub(),m,c,l,true,{location:p},g)};["click"].forEach(t=>{if(d.WINDOW.document){addEventListener(t,registerInteractionTransaction,{once:false,capture:true})}})}function isPerformanceEventTiming(t){return"duration"in t}const m=10;function registerInpInteractionListener(t,n){const handleEntries=({entries:r})=>{const i=o.getClient();const a=i!==undefined&&i.getIntegrationByName!==undefined?i.getIntegrationByName("Replay"):undefined;const c=a!==undefined?a.getReplayId():undefined;const l=o.getActiveTransaction();const g=o.getCurrentScope();const u=g!==undefined?g.getUser():undefined;r.forEach(r=>{if(isPerformanceEventTiming(r)){const o=r.interactionId;if(o===undefined){return}const i=t[o];const a=r.duration;const g=r.startTime;const d=Object.keys(t);const I=d.length>0?d.reduce((n,r)=>t[n].duration<t[r].duration?n:r):undefined;if(r.entryType==="first-input"){const n=d.map(n=>t[n]).some(t=>t.duration===a&&t.startTime===g);if(n){return}}if(!o){return}if(i){i.duration=Math.max(i.duration,a)}else if(d.length<m||I===undefined||a>t[I].duration){const r=n.name;const i=n.context;if(r&&i){if(I&&Object.keys(t).length>=m){delete t[I]}t[o]={routeName:r,duration:a,parentContext:i,user:u,activeTransaction:l,replayId:c,startTime:g}}}}})};l.addPerformanceInstrumentationHandler("event",handleEntries);l.addPerformanceInstrumentationHandler("first-input",handleEntries)}function getSource(t){const n=t.attributes&&t.attributes[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const r=t.data&&t.data[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const i=t.metadata&&t.metadata.source;return n||r||i}n.BROWSER_TRACING_INTEGRATION_ID=I;n.browserTracingIntegration=browserTracingIntegration;n.getMetaContent=getMetaContent;n.startBrowserTracingNavigationSpan=startBrowserTracingNavigationSpan;n.startBrowserTracingPageLoadSpan=startBrowserTracingPageLoadSpan},7255:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(5472);const c=r(414);const l=r(2516);const g=r(5703);const u=r(3312);const d=r(5436);const I=r(1884);const p="BrowserTracing";const m={...o.TRACING_DEFAULTS,markBackgroundTransactions:true,routingInstrumentation:d.instrumentRoutingWithDefaults,startTransactionOnLocationChange:true,startTransactionOnPageLoad:true,enableLongTask:true,enableInp:false,interactionsSampleRate:1,_experiments:{},...u.defaultRequestInstrumentationOptions};const C=10;class BrowserTracing{constructor(t){this.name=p;this._hasSetTracePropagationTargets=false;o.addTracingExtensions();if(a.DEBUG_BUILD){this._hasSetTracePropagationTargets=!!(t&&(t.tracePropagationTargets||t.tracingOrigins))}this.options={...m,...t};if(this.options._experiments.enableLongTask!==undefined){this.options.enableLongTask=this.options._experiments.enableLongTask}if(t&&!t.tracePropagationTargets&&t.tracingOrigins){this.options.tracePropagationTargets=t.tracingOrigins}this._collectWebVitals=g.startTrackingWebVitals();this._interactionIdToRouteNameMapping={};if(this.options.enableInp){g.startTrackingINP(this._interactionIdToRouteNameMapping,this.options.interactionsSampleRate)}if(this.options.enableLongTask){g.startTrackingLongTasks()}if(this.options._experiments.enableInteractions){g.startTrackingInteractions()}this._latestRoute={name:undefined,context:undefined}}setupOnce(t,n){this._getCurrentHub=n;const r=n();const o=r.getClient();const l=o&&o.getOptions();const{routingInstrumentation:g,startTransactionOnLocationChange:d,startTransactionOnPageLoad:I,markBackgroundTransactions:p,traceFetch:m,traceXHR:C,shouldCreateSpanForRequest:b,enableHTTPTimings:h,_experiments:f}=this.options;const y=l&&l.tracePropagationTargets;const G=y||this.options.tracePropagationTargets;if(a.DEBUG_BUILD&&this._hasSetTracePropagationTargets&&y){i.logger.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.")}g(t=>{const r=this._createRouteTransaction(t);this.options._experiments.onStartRouteTransaction&&this.options._experiments.onStartRouteTransaction(r,t,n);return r},I,d);if(p){c.registerBackgroundTabDetection()}if(f.enableInteractions){this._registerInteractionListener()}if(this.options.enableInp){this._registerInpInteractionListener()}u.instrumentOutgoingRequests({traceFetch:m,traceXHR:C,tracePropagationTargets:G,shouldCreateSpanForRequest:b,enableHTTPTimings:h})}_createRouteTransaction(t){if(!this._getCurrentHub){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${t.op} transaction because _getCurrentHub is invalid.`);return undefined}const n=this._getCurrentHub();const{beforeNavigate:r,idleTimeout:c,finalTimeout:l,heartbeatInterval:u}=this.options;const d=t.op==="pageload";let p;if(d){const n=d?getMetaContent("sentry-trace"):"";const r=d?getMetaContent("baggage"):undefined;const{traceId:o,dsc:a,parentSpanId:c,sampled:l}=i.propagationContextFromHeaders(n,r);p={traceId:o,parentSpanId:c,parentSampled:l,...t,metadata:{...t.metadata,dynamicSamplingContext:a},trimEnd:true}}else{p={trimEnd:true,...t}}const m=typeof r==="function"?r(p):p;const C=m===undefined?{...p,sampled:false}:m;C.metadata=C.name!==p.name?{...C.metadata,source:"custom"}:C.metadata;this._latestRoute.name=C.name;this._latestRoute.context=C;if(C.sampled===false){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Will not send ${C.op} transaction because of beforeNavigate.`)}a.DEBUG_BUILD&&i.logger.log(`[Tracing] Starting ${C.op} transaction on scope`);const{location:b}=I.WINDOW;const h=o.startIdleTransaction(n,C,c,l,true,{location:b},u,d);if(d){if(I.WINDOW.document){I.WINDOW.document.addEventListener("readystatechange",()=>{if(["interactive","complete"].includes(I.WINDOW.document.readyState)){h.sendAutoFinishSignal()}});if(["interactive","complete"].includes(I.WINDOW.document.readyState)){h.sendAutoFinishSignal()}}}h.registerBeforeFinishCallback(t=>{this._collectWebVitals();g.addPerformanceEntries(t)});return h}_registerInteractionListener(){let t;const registerInteractionTransaction=()=>{const{idleTimeout:n,finalTimeout:r,heartbeatInterval:c}=this.options;const l="ui.action.click";const g=o.getActiveTransaction();if(g&&g.op&&["navigation","pageload"].includes(g.op)){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${l} transaction because a pageload or navigation transaction is in progress.`);return undefined}if(t){t.setFinishReason("interactionInterrupted");t.end();t=undefined}if(!this._getCurrentHub){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${l} transaction because _getCurrentHub is invalid.`);return undefined}if(!this._latestRoute.name){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${l} transaction because _latestRouteName is missing.`);return undefined}const u=this._getCurrentHub();const{location:d}=I.WINDOW;const p={name:this._latestRoute.name,op:l,trimEnd:true,data:{[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:this._latestRoute.context?getSource(this._latestRoute.context):"url"}};t=o.startIdleTransaction(u,p,n,r,true,{location:d},c)};["click"].forEach(t=>{if(I.WINDOW.document){addEventListener(t,registerInteractionTransaction,{once:false,capture:true})}})}_registerInpInteractionListener(){const handleEntries=({entries:t})=>{const n=o.getClient();const r=n!==undefined&&n.getIntegrationByName!==undefined?n.getIntegrationByName("Replay"):undefined;const i=r!==undefined?r.getReplayId():undefined;const a=o.getActiveTransaction();const c=o.getCurrentScope();const l=c!==undefined?c.getUser():undefined;t.forEach(t=>{if(isPerformanceEventTiming(t)){const n=t.interactionId;if(n===undefined){return}const r=this._interactionIdToRouteNameMapping[n];const o=t.duration;const c=t.startTime;const g=Object.keys(this._interactionIdToRouteNameMapping);const u=g.length>0?g.reduce((t,n)=>this._interactionIdToRouteNameMapping[t].duration<this._interactionIdToRouteNameMapping[n].duration?t:n):undefined;if(t.entryType==="first-input"){const t=g.map(t=>this._interactionIdToRouteNameMapping[t]).some(t=>t.duration===o&&t.startTime===c);if(t){return}}if(!n){return}if(r){r.duration=Math.max(r.duration,o)}else if(g.length<C||u===undefined||o>this._interactionIdToRouteNameMapping[u].duration){const t=this._latestRoute.name;const r=this._latestRoute.context;if(t&&r){if(u&&Object.keys(this._interactionIdToRouteNameMapping).length>=C){delete this._interactionIdToRouteNameMapping[u]}this._interactionIdToRouteNameMapping[n]={routeName:t,duration:o,parentContext:r,user:l,activeTransaction:a,replayId:i,startTime:c}}}}})};l.addPerformanceInstrumentationHandler("event",handleEntries);l.addPerformanceInstrumentationHandler("first-input",handleEntries)}}function getMetaContent(t){const n=i.getDomElement(`meta[name=${t}]`);return n?n.getAttribute("content"):undefined}function getSource(t){const n=t.attributes&&t.attributes[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const r=t.data&&t.data[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const i=t.metadata&&t.metadata.source;return n||r||i}function isPerformanceEventTiming(t){return"duration"in t}n.BROWSER_TRACING_INTEGRATION_ID=p;n.BrowserTracing=BrowserTracing;n.getMetaContent=getMetaContent},2516:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(5472);const a=r(6434);const c=r(2977);const l=r(4779);const g=r(3701);const u=r(4296);const d=r(2255);const I={};const p={};let m;let C;let b;let h;let f;function addClsInstrumentationHandler(t,n=false){return addMetricObserver("cls",t,instrumentCls,m,n)}function addLcpInstrumentationHandler(t,n=false){return addMetricObserver("lcp",t,instrumentLcp,b,n)}function addTtfbInstrumentationHandler(t){return addMetricObserver("ttfb",t,instrumentTtfb,h)}function addFidInstrumentationHandler(t){return addMetricObserver("fid",t,instrumentFid,C)}function addInpInstrumentationHandler(t){return addMetricObserver("inp",t,instrumentInp,f)}function addPerformanceInstrumentationHandler(t,n){addHandler(t,n);if(!p[t]){instrumentPerformanceObserver(t);p[t]=true}return getCleanupCallback(t,n)}function triggerHandlers(t,n){const r=I[t];if(!r||!r.length){return}for(const a of r){try{a(n)}catch(n){i.DEBUG_BUILD&&o.logger.error(`Error while triggering instrumentation handler.\nType: ${t}\nName: ${o.getFunctionName(a)}\nError:`,n)}}}function instrumentCls(){return a.onCLS(t=>{triggerHandlers("cls",{metric:t});m=t},{reportAllChanges:true})}function instrumentFid(){return c.onFID(t=>{triggerHandlers("fid",{metric:t});C=t})}function instrumentLcp(){return g.onLCP(t=>{triggerHandlers("lcp",{metric:t});b=t})}function instrumentTtfb(){return d.onTTFB(t=>{triggerHandlers("ttfb",{metric:t});h=t})}function instrumentInp(){return l.onINP(t=>{triggerHandlers("inp",{metric:t});f=t})}function addMetricObserver(t,n,r,o,i=false){addHandler(t,n);let a;if(!p[t]){a=r();p[t]=true}if(o){n({metric:o})}return getCleanupCallback(t,n,i?a:undefined)}function instrumentPerformanceObserver(t){const n={};if(t==="event"){n.durationThreshold=0}u.observe(t,n=>{triggerHandlers(t,{entries:n})},n)}function addHandler(t,n){I[t]=I[t]||[];I[t].push(n)}function getCleanupCallback(t,n,r){return()=>{if(r){r()}const o=I[t];if(!o){return}const i=o.indexOf(n);if(i!==-1){o.splice(i,1)}}}n.addClsInstrumentationHandler=addClsInstrumentationHandler;n.addFidInstrumentationHandler=addFidInstrumentationHandler;n.addInpInstrumentationHandler=addInpInstrumentationHandler;n.addLcpInstrumentationHandler=addLcpInstrumentationHandler;n.addPerformanceInstrumentationHandler=addPerformanceInstrumentationHandler;n.addTtfbInstrumentationHandler=addTtfbInstrumentationHandler},5703:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(5472);const c=r(2516);const l=r(1884);const g=r(2642);const u=r(9762);const d=r(3904);const I=2147483647;function msToSec(t){return t/1e3}function getBrowserPerformanceAPI(){return l.WINDOW&&l.WINDOW.addEventListener&&l.WINDOW.performance}let p=0;let m={};let C;let b;function startTrackingWebVitals(){const t=getBrowserPerformanceAPI();if(t&&i.browserPerformanceTimeOrigin){if(t.mark){l.WINDOW.performance.mark("sentry-tracing-init")}const n=_trackFID();const r=_trackCLS();const o=_trackLCP();const i=_trackTtfb();return()=>{n();r();o();i()}}return()=>undefined}function startTrackingLongTasks(){c.addPerformanceInstrumentationHandler("longtask",({entries:t})=>{for(const n of t){const t=o.getActiveTransaction();if(!t){return}const r=msToSec(i.browserPerformanceTimeOrigin+n.startTime);const a=msToSec(n.duration);t.startChild({description:"Main UI thread blocked",op:"ui.long-task",origin:"auto.ui.browser.metrics",startTimestamp:r,endTimestamp:r+a})}})}function startTrackingInteractions(){c.addPerformanceInstrumentationHandler("event",({entries:t})=>{for(const n of t){const t=o.getActiveTransaction();if(!t){return}if(n.name==="click"){const r=msToSec(i.browserPerformanceTimeOrigin+n.startTime);const o=msToSec(n.duration);const a={description:i.htmlTreeAsString(n.target),op:`ui.interaction.${n.name}`,origin:"auto.ui.browser.metrics",startTimestamp:r,endTimestamp:r+o};const c=i.getComponentName(n.target);if(c){a.attributes={"ui.component_name":c}}t.startChild(a)}}})}function startTrackingINP(t,n){const r=getBrowserPerformanceAPI();if(r&&i.browserPerformanceTimeOrigin){const r=_trackINP(t,n);return()=>{r()}}return()=>undefined}function _trackCLS(){return c.addClsInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding CLS");m["cls"]={value:t.value,unit:""};b=n},true)}function _trackLCP(){return c.addLcpInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding LCP");m["lcp"]={value:t.value,unit:"millisecond"};C=n},true)}function _trackFID(){return c.addFidInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}const r=msToSec(i.browserPerformanceTimeOrigin);const o=msToSec(n.startTime);a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding FID");m["fid"]={value:t.value,unit:"millisecond"};m["mark.fid"]={value:r+o,unit:"second"}})}function _trackTtfb(){return c.addTtfbInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding TTFB");m["ttfb"]={value:t.value,unit:"millisecond"}})}const h={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"};function _trackINP(t,n){return c.addInpInstrumentationHandler(({metric:r})=>{if(r.value===undefined){return}const c=r.entries.find(t=>t.duration===r.value&&h[t.name]!==undefined);const l=o.getClient();if(!c||!l){return}const g=h[c.name];const u=l.getOptions();const d=msToSec(i.browserPerformanceTimeOrigin+c.startTime);const I=msToSec(r.value);const p=c.interactionId!==undefined?t[c.interactionId]:undefined;if(p===undefined){return}const{routeName:m,parentContext:C,activeTransaction:b,user:f,replayId:y}=p;const G=f!==undefined?f.email||f.id||f.ip_address:undefined;const B=b!==undefined?b.getProfileId():undefined;const A=new o.Span({startTimestamp:d,endTimestamp:d+I,op:`ui.interaction.${g}`,name:i.htmlTreeAsString(c.target),attributes:{release:u.release,environment:u.environment,transaction:m,...G!==undefined&&G!==""?{user:G}:{},...B!==undefined?{profile_id:B}:{},...y!==undefined?{replay_id:y}:{}},exclusiveTime:r.value,measurements:{inp:{value:r.value,unit:"millisecond"}}});const Z=getSampleRate(C,u,n);if(!Z){return}if(Math.random()<Z){const t=A?o.createSpanEnvelope([A],l.getDsn()):undefined;const n=l&&l.getTransport();if(n&&t){n.send(t).then(null,t=>{a.DEBUG_BUILD&&i.logger.error("Error while sending interaction:",t)})}return}})}function addPerformanceEntries(t){const n=getBrowserPerformanceAPI();if(!n||!l.WINDOW.performance.getEntries||!i.browserPerformanceTimeOrigin){return}a.DEBUG_BUILD&&i.logger.log("[Tracing] Adding & adjusting spans using Performance API");const r=msToSec(i.browserPerformanceTimeOrigin);const c=n.getEntries();const{op:d,start_timestamp:I}=o.spanToJSON(t);c.slice(p).forEach(n=>{const o=msToSec(n.startTime);const c=msToSec(n.duration);if(t.op==="navigation"&&I&&r+o<I){return}switch(n.entryType){case"navigation":{_addNavigationSpans(t,n,r);break}case"mark":case"paint":case"measure":{_addMeasureSpans(t,n,o,c,r);const l=g.getVisibilityWatcher();const u=n.startTime<l.firstHiddenTime;if(n.name==="first-paint"&&u){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding FP");m["fp"]={value:n.startTime,unit:"millisecond"}}if(n.name==="first-contentful-paint"&&u){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding FCP");m["fcp"]={value:n.startTime,unit:"millisecond"}}break}case"resource":{_addResourceSpans(t,n,n.name,o,c,r);break}}});p=Math.max(c.length-1,0);_trackNavigator(t);if(d==="pageload"){_addTtfbRequestTimeToMeasurements(m);["fcp","fp","lcp"].forEach(t=>{if(!m[t]||!I||r>=I){return}const n=m[t].value;const o=r+msToSec(n);const c=Math.abs((o-I)*1e3);const l=c-n;a.DEBUG_BUILD&&i.logger.log(`[Measurements] Normalized ${t} from ${n} to ${c} (${l})`);m[t].value=c});const n=m["mark.fid"];if(n&&m["fid"]){u._startChild(t,{description:"first input delay",endTimestamp:n.value+msToSec(m["fid"].value),op:"ui.action",origin:"auto.ui.browser.metrics",startTimestamp:n.value});delete m["mark.fid"]}if(!("fcp"in m)){delete m.cls}Object.keys(m).forEach(t=>{o.setMeasurement(t,m[t].value,m[t].unit)});_tagMetricInfo(t)}C=undefined;b=undefined;m={}}function _addMeasureSpans(t,n,r,o,i){const a=i+r;const c=a+o;u._startChild(t,{description:n.name,endTimestamp:c,op:n.entryType,origin:"auto.resource.browser.metrics",startTimestamp:a});return a}function _addNavigationSpans(t,n,r){["unloadEvent","redirect","domContentLoadedEvent","loadEvent","connect"].forEach(o=>{_addPerformanceNavigationTiming(t,n,o,r)});_addPerformanceNavigationTiming(t,n,"secureConnection",r,"TLS/SSL","connectEnd");_addPerformanceNavigationTiming(t,n,"fetch",r,"cache","domainLookupStart");_addPerformanceNavigationTiming(t,n,"domainLookup",r,"DNS");_addRequest(t,n,r)}function _addPerformanceNavigationTiming(t,n,r,o,i,a){const c=a?n[a]:n[`${r}End`];const l=n[`${r}Start`];if(!l||!c){return}u._startChild(t,{op:"browser",origin:"auto.browser.browser.metrics",description:i||r,startTimestamp:o+msToSec(l),endTimestamp:o+msToSec(c)})}function _addRequest(t,n,r){if(n.responseEnd){u._startChild(t,{op:"browser",origin:"auto.browser.browser.metrics",description:"request",startTimestamp:r+msToSec(n.requestStart),endTimestamp:r+msToSec(n.responseEnd)});u._startChild(t,{op:"browser",origin:"auto.browser.browser.metrics",description:"response",startTimestamp:r+msToSec(n.responseStart),endTimestamp:r+msToSec(n.responseEnd)})}}function _addResourceSpans(t,n,r,o,a,c){if(n.initiatorType==="xmlhttprequest"||n.initiatorType==="fetch"){return}const g=i.parseUrl(r);const d={};setResourceEntrySizeData(d,n,"transferSize","http.response_transfer_size");setResourceEntrySizeData(d,n,"encodedBodySize","http.response_content_length");setResourceEntrySizeData(d,n,"decodedBodySize","http.decoded_response_content_length");if("renderBlockingStatus"in n){d["resource.render_blocking_status"]=n.renderBlockingStatus}if(g.protocol){d["url.scheme"]=g.protocol.split(":").pop()}if(g.host){d["server.address"]=g.host}d["url.same_origin"]=r.includes(l.WINDOW.location.origin);const I=c+o;const p=I+a;u._startChild(t,{description:r.replace(l.WINDOW.location.origin,""),endTimestamp:p,op:n.initiatorType?`resource.${n.initiatorType}`:"resource.other",origin:"auto.resource.browser.metrics",startTimestamp:I,data:d})}function _trackNavigator(t){const n=l.WINDOW.navigator;if(!n){return}const r=n.connection;if(r){if(r.effectiveType){t.setTag("effectiveConnectionType",r.effectiveType)}if(r.type){t.setTag("connectionType",r.type)}if(u.isMeasurementValue(r.rtt)){m["connection.rtt"]={value:r.rtt,unit:"millisecond"}}}if(u.isMeasurementValue(n.deviceMemory)){t.setTag("deviceMemory",`${n.deviceMemory} GB`)}if(u.isMeasurementValue(n.hardwareConcurrency)){t.setTag("hardwareConcurrency",String(n.hardwareConcurrency))}}function _tagMetricInfo(t){if(C){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding LCP Data");if(C.element){t.setTag("lcp.element",i.htmlTreeAsString(C.element))}if(C.id){t.setTag("lcp.id",C.id)}if(C.url){t.setTag("lcp.url",C.url.trim().slice(0,200))}t.setTag("lcp.size",C.size)}if(b&&b.sources){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding CLS Data");b.sources.forEach((n,r)=>t.setTag(`cls.source.${r+1}`,i.htmlTreeAsString(n.node)))}}function setResourceEntrySizeData(t,n,r,o){const i=n[r];if(i!=null&&i<I){t[o]=i}}function _addTtfbRequestTimeToMeasurements(t){const n=d.getNavigationEntry();if(!n){return}const{responseStart:r,requestStart:o}=n;if(o<=r){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding TTFB Request Time");t["ttfb.requestTime"]={value:r-o,unit:"millisecond"}}}function getSampleRate(t,n,r){if(!o.hasTracingEnabled(n)){return false}let c;if(t!==undefined&&typeof n.tracesSampler==="function"){c=n.tracesSampler({transactionContext:t,name:t.name,parentSampled:t.parentSampled,attributes:{...t.data,...t.attributes},location:l.WINDOW.location})}else if(t!==undefined&&t.sampled!==undefined){c=t.sampled}else if(typeof n.tracesSampleRate!=="undefined"){c=n.tracesSampleRate}else{c=1}if(!o.isValidSampleRate(c)){a.DEBUG_BUILD&&i.logger.warn("[Tracing] Discarding interaction span because of invalid sample rate.");return false}if(c===true){return r}else if(c===false){return 0}return c*r}n._addMeasureSpans=_addMeasureSpans;n._addResourceSpans=_addResourceSpans;n.addPerformanceEntries=addPerformanceEntries;n.startTrackingINP=startTrackingINP;n.startTrackingInteractions=startTrackingInteractions;n.startTrackingLongTasks=startTrackingLongTasks;n.startTrackingWebVitals=startTrackingWebVitals},9762:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isMeasurementValue(t){return typeof t==="number"&&isFinite(t)}function _startChild(t,{startTimestamp:n,...r}){if(n&&t.startTimestamp>n){t.startTimestamp=n}return t.startChild({startTimestamp:n,...r})}n._startChild=_startChild;n.isMeasurementValue=isMeasurementValue},3312:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(2446);const c=r(2516);const l=r(1884);const g=["localhost",/^\/(?!\/)/];const u={traceFetch:true,traceXHR:true,enableHTTPTimings:true,tracingOrigins:g,tracePropagationTargets:g};function instrumentOutgoingRequests(t){const{traceFetch:n,traceXHR:r,tracePropagationTargets:o,tracingOrigins:c,shouldCreateSpanForRequest:l,enableHTTPTimings:g}={traceFetch:u.traceFetch,traceXHR:u.traceXHR,...t};const d=typeof l==="function"?l:t=>true;const shouldAttachHeadersWithTargets=t=>shouldAttachHeaders(t,o||c);const I={};if(n){i.addFetchInstrumentationHandler(t=>{const n=a.instrumentFetchRequest(t,d,shouldAttachHeadersWithTargets,I);if(n){const r=getFullURL(t.fetchData.url);const o=r?i.parseUrl(r).host:undefined;n.setAttributes({"http.url":r,"server.address":o})}if(g&&n){addHTTPTimings(n)}})}if(r){i.addXhrInstrumentationHandler(t=>{const n=xhrCallback(t,d,shouldAttachHeadersWithTargets,I);if(g&&n){addHTTPTimings(n)}})}}function isPerformanceResourceTiming(t){return t.entryType==="resource"&&"initiatorType"in t&&typeof t.nextHopProtocol==="string"&&(t.initiatorType==="fetch"||t.initiatorType==="xmlhttprequest")}function addHTTPTimings(t){const{url:n}=o.spanToJSON(t).data||{};if(!n||typeof n!=="string"){return}const r=c.addPerformanceInstrumentationHandler("resource",({entries:o})=>{o.forEach(o=>{if(isPerformanceResourceTiming(o)&&o.name.endsWith(n)){const n=resourceTimingEntryToSpanData(o);n.forEach(n=>t.setAttribute(...n));setTimeout(r)}})})}function extractNetworkProtocol(t){let n="unknown";let r="unknown";let o="";for(const i of t){if(i==="/"){[n,r]=t.split("/");break}if(!isNaN(Number(i))){n=o==="h"?"http":o;r=t.split(o)[1];break}o+=i}if(o===t){n=o}return{name:n,version:r}}function getAbsoluteTime(t=0){return((i.browserPerformanceTimeOrigin||performance.timeOrigin)+t)/1e3}function resourceTimingEntryToSpanData(t){const{name:n,version:r}=extractNetworkProtocol(t.nextHopProtocol);const o=[];o.push(["network.protocol.version",r],["network.protocol.name",n]);if(!i.browserPerformanceTimeOrigin){return o}return[...o,["http.request.redirect_start",getAbsoluteTime(t.redirectStart)],["http.request.fetch_start",getAbsoluteTime(t.fetchStart)],["http.request.domain_lookup_start",getAbsoluteTime(t.domainLookupStart)],["http.request.domain_lookup_end",getAbsoluteTime(t.domainLookupEnd)],["http.request.connect_start",getAbsoluteTime(t.connectStart)],["http.request.secure_connection_start",getAbsoluteTime(t.secureConnectionStart)],["http.request.connection_end",getAbsoluteTime(t.connectEnd)],["http.request.request_start",getAbsoluteTime(t.requestStart)],["http.request.response_start",getAbsoluteTime(t.responseStart)],["http.request.response_end",getAbsoluteTime(t.responseEnd)]]}function shouldAttachHeaders(t,n){return i.stringMatchesSomePattern(t,n||g)}function xhrCallback(t,n,r,a){const c=t.xhr;const l=c&&c[i.SENTRY_XHR_DATA_KEY];if(!o.hasTracingEnabled()||!c||c.__sentry_own_request__||!l){return undefined}const g=n(l.url);if(t.endTimestamp&&g){const t=c.__sentry_xhr_span_id__;if(!t)return;const n=a[t];if(n&&l.status_code!==undefined){o.setHttpStatus(n,l.status_code);n.end();delete a[t]}return undefined}const u=o.getCurrentScope();const d=o.getIsolationScope();const I=getFullURL(l.url);const p=I?i.parseUrl(I).host:undefined;const m=g?o.startInactiveSpan({name:`${l.method} ${l.url}`,onlyIfParent:true,attributes:{type:"xhr","http.method":l.method,"http.url":I,url:l.url,"server.address":p,[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser"},op:"http.client"}):undefined;if(m){c.__sentry_xhr_span_id__=m.spanContext().spanId;a[c.__sentry_xhr_span_id__]=m}const C=o.getClient();if(c.setRequestHeader&&r(l.url)&&C){const{traceId:t,spanId:n,sampled:r,dsc:a}={...d.getPropagationContext(),...u.getPropagationContext()};const l=m?o.spanToTraceHeader(m):i.generateSentryTraceHeader(t,n,r);const g=i.dynamicSamplingContextToSentryBaggageHeader(a||(m?o.getDynamicSamplingContextFromSpan(m):o.getDynamicSamplingContextFromClient(t,C,u)));setHeaderOnXhr(c,l,g)}return m}function setHeaderOnXhr(t,n,r){try{t.setRequestHeader("sentry-trace",n);if(r){t.setRequestHeader(i.BAGGAGE_HEADER_NAME,r)}}catch(t){}}function getFullURL(t){try{const n=new URL(t,l.WINDOW.location.origin);return n.href}catch(t){return undefined}}n.DEFAULT_TRACE_PROPAGATION_TARGETS=g;n.defaultRequestInstrumentationOptions=u;n.extractNetworkProtocol=extractNetworkProtocol;n.instrumentOutgoingRequests=instrumentOutgoingRequests;n.shouldAttachHeaders=shouldAttachHeaders;n.xhrCallback=xhrCallback},5436:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=r(5472);const a=r(1884);function instrumentRoutingWithDefaults(t,n=true,r=true){if(!a.WINDOW||!a.WINDOW.location){i.DEBUG_BUILD&&o.logger.warn("Could not initialize routing instrumentation due to invalid location");return}let c=a.WINDOW.location.href;let l;if(n){l=t({name:a.WINDOW.location.pathname,startTimestamp:o.browserPerformanceTimeOrigin?o.browserPerformanceTimeOrigin/1e3:undefined,op:"pageload",origin:"auto.pageload.browser",metadata:{source:"url"}})}if(r){o.addHistoryInstrumentationHandler(({to:n,from:r})=>{if(r===undefined&&c&&c.indexOf(n)!==-1){c=undefined;return}if(r!==n){c=undefined;if(l){i.DEBUG_BUILD&&o.logger.log(`[Tracing] Finishing current transaction with op: ${l.op}`);l.end()}l=t({name:a.WINDOW.location.pathname,op:"navigation",origin:"auto.navigation.browser",metadata:{source:"url"}})}})}}n.instrumentRoutingWithDefaults=instrumentRoutingWithDefaults},1884:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=o.GLOBAL_OBJ;n.WINDOW=i},6434:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1372);const i=r(3608);const a=r(4296);const c=r(4359);const onCLS=(t,n={})=>{const r=i.initMetric("CLS",0);let l;let g=0;let u=[];const handleEntries=t=>{t.forEach(t=>{if(!t.hadRecentInput){const n=u[0];const o=u[u.length-1];if(g&&u.length!==0&&t.startTime-o.startTime<1e3&&t.startTime-n.startTime<5e3){g+=t.value;u.push(t)}else{g=t.value;u=[t]}if(g>r.value){r.value=g;r.entries=u;if(l){l()}}}})};const d=a.observe("layout-shift",handleEntries);if(d){l=o.bindReporter(t,r,n.reportAllChanges);const stopListening=()=>{handleEntries(d.takeRecords());l(true)};c.onHidden(stopListening);return stopListening}return};n.onCLS=onCLS},2977:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1372);const i=r(2642);const a=r(3608);const c=r(4296);const l=r(4359);const onFID=t=>{const n=i.getVisibilityWatcher();const r=a.initMetric("FID");let g;const handleEntry=t=>{if(t.startTime<n.firstHiddenTime){r.value=t.processingStart-t.startTime;r.entries.push(t);g(true)}};const handleEntries=t=>{t.forEach(handleEntry)};const u=c.observe("first-input",handleEntries);g=o.bindReporter(t,r);if(u){l.onHidden(()=>{handleEntries(u.takeRecords());u.disconnect()},true)}};n.onFID=onFID},4779:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1372);const i=r(3608);const a=r(4296);const c=r(4359);const l=r(8179);const getInteractionCountForNavigation=()=>l.getInteractionCount();const g=10;const u=[];const d={};const processEntry=t=>{const n=u[u.length-1];const r=d[t.interactionId];if(r||u.length<g||t.duration>n.latency){if(r){r.entries.push(t);r.latency=Math.max(r.latency,t.duration)}else{const n={id:t.interactionId,latency:t.duration,entries:[t]};d[n.id]=n;u.push(n)}u.sort((t,n)=>n.latency-t.latency);u.splice(g).forEach(t=>{delete d[t.id]})}};const estimateP98LongestInteraction=()=>{const t=Math.min(u.length-1,Math.floor(getInteractionCountForNavigation()/50));return u[t]};const onINP=(t,n)=>{n=n||{};l.initInteractionCountPolyfill();const r=i.initMetric("INP");let g;const handleEntries=t=>{t.forEach(t=>{if(t.interactionId){processEntry(t)}if(t.entryType==="first-input"){const n=!u.some(n=>n.entries.some(n=>t.duration===n.duration&&t.startTime===n.startTime));if(n){processEntry(t)}}});const n=estimateP98LongestInteraction();if(n&&n.latency!==r.value){r.value=n.latency;r.entries=n.entries;g()}};const d=a.observe("event",handleEntries,{durationThreshold:n.durationThreshold||40});g=o.bindReporter(t,r,n.reportAllChanges);if(d){d.observe({type:"first-input",buffered:true});c.onHidden(()=>{handleEntries(d.takeRecords());if(r.value<0&&getInteractionCountForNavigation()>0){r.value=0;r.entries=[]}g(true)})}};n.onINP=onINP},3701:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1884);const i=r(1372);const a=r(4762);const c=r(2642);const l=r(3608);const g=r(4296);const u=r(4359);const d={};const onLCP=t=>{const n=c.getVisibilityWatcher();const r=l.initMetric("LCP");let I;const handleEntries=t=>{const o=t[t.length-1];if(o){const t=Math.max(o.startTime-a.getActivationStart(),0);if(t<n.firstHiddenTime){r.value=t;r.entries=[o];I()}}};const p=g.observe("largest-contentful-paint",handleEntries);if(p){I=i.bindReporter(t,r);const stopListening=()=>{if(!d[r.id]){handleEntries(p.takeRecords());p.disconnect();d[r.id]=true;I(true)}};["keydown","click"].forEach(t=>{if(o.WINDOW.document){addEventListener(t,stopListening,{once:true,capture:true})}});u.onHidden(stopListening,true);return stopListening}return};n.onLCP=onLCP},1372:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const bindReporter=(t,n,r)=>{let o;let i;return a=>{if(n.value>=0){if(a||r){i=n.value-(o||0);if(i||o===undefined){o=n.value;n.delta=i;t(n)}}}}};n.bindReporter=bindReporter},3283:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const generateUniqueID=()=>`v3-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`;n.generateUniqueID=generateUniqueID},4762:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(3904);const getActivationStart=()=>{const t=o.getNavigationEntry();return t&&t.activationStart||0};n.getActivationStart=getActivationStart},3904:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1884);const getNavigationEntryFromPerformanceTiming=()=>{const t=o.WINDOW.performance.timing;const n=o.WINDOW.performance.navigation.type;const r={entryType:"navigation",startTime:0,type:n==2?"back_forward":n===1?"reload":"navigate"};for(const n in t){if(n!=="navigationStart"&&n!=="toJSON"){r[n]=Math.max(t[n]-t.navigationStart,0)}}return r};const getNavigationEntry=()=>{if(o.WINDOW.__WEB_VITALS_POLYFILL__){return o.WINDOW.performance&&(performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]||getNavigationEntryFromPerformanceTiming())}else{return o.WINDOW.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]}};n.getNavigationEntry=getNavigationEntry},2642:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1884);const i=r(4359);let a=-1;const initHiddenTime=()=>{if(o.WINDOW.document&&o.WINDOW.document.visibilityState){a=o.WINDOW.document.visibilityState==="hidden"&&!o.WINDOW.document.prerendering?0:Infinity}};const trackChanges=()=>{i.onHidden(({timeStamp:t})=>{a=t},true)};const getVisibilityWatcher=()=>{if(a<0){initHiddenTime();trackChanges()}return{get firstHiddenTime(){return a}}};n.getVisibilityWatcher=getVisibilityWatcher},3608:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1884);const i=r(3283);const a=r(4762);const c=r(3904);const initMetric=(t,n)=>{const r=c.getNavigationEntry();let l="navigate";if(r){if(o.WINDOW.document&&o.WINDOW.document.prerendering||a.getActivationStart()>0){l="prerender"}else{l=r.type.replace(/_/g,"-")}}return{name:t,value:typeof n==="undefined"?-1:n,rating:"good",delta:0,entries:[],id:i.generateUniqueID(),navigationType:l}};n.initMetric=initMetric},4296:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const observe=(t,n,r)=>{try{if(PerformanceObserver.supportedEntryTypes.includes(t)){const o=new PerformanceObserver(t=>{n(t.getEntries())});o.observe({type:t,buffered:true,...r});return o}}catch(t){}return};n.observe=observe},4359:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1884);const onHidden=(t,n)=>{const onHiddenOrPageHide=r=>{if(r.type==="pagehide"||o.WINDOW.document.visibilityState==="hidden"){t(r);if(n){removeEventListener("visibilitychange",onHiddenOrPageHide,true);removeEventListener("pagehide",onHiddenOrPageHide,true)}}};if(o.WINDOW.document){addEventListener("visibilitychange",onHiddenOrPageHide,true);addEventListener("pagehide",onHiddenOrPageHide,true)}};n.onHidden=onHidden},8179:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(4296);let i=0;let a=Infinity;let c=0;const updateEstimate=t=>{t.forEach(t=>{if(t.interactionId){a=Math.min(a,t.interactionId);c=Math.max(c,t.interactionId);i=c?(c-a)/7+1:0}})};let l;const getInteractionCount=()=>l?i:performance.interactionCount||0;const initInteractionCountPolyfill=()=>{if("interactionCount"in performance||l)return;l=o.observe("event",updateEstimate,{type:"event",buffered:true,durationThreshold:0})};n.getInteractionCount=getInteractionCount;n.initInteractionCountPolyfill=initInteractionCountPolyfill},2255:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(1884);const i=r(1372);const a=r(4762);const c=r(3904);const l=r(3608);const whenReady=t=>{if(!o.WINDOW.document){return}if(o.WINDOW.document.prerendering){addEventListener("prerenderingchange",()=>whenReady(t),true)}else if(o.WINDOW.document.readyState!=="complete"){addEventListener("load",()=>whenReady(t),true)}else{setTimeout(t,0)}};const onTTFB=(t,n)=>{n=n||{};const r=l.initMetric("TTFB");const o=i.bindReporter(t,r,n.reportAllChanges);whenReady(()=>{const t=c.getNavigationEntry();if(t){r.value=Math.max(t.responseStart-a.getActivationStart(),0);if(r.value<0||r.value>performance.now())return;r.entries=[t];o(true)}})};n.onTTFB=onTTFB},5472:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const r=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=r},2446:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);function instrumentFetchRequest(t,n,r,a,c="auto.http.browser"){if(!o.hasTracingEnabled()||!t.fetchData){return undefined}const l=n(t.fetchData.url);if(t.endTimestamp&&l){const n=t.fetchData.__span;if(!n)return;const r=a[n];if(r){endSpan(r,t);delete a[n]}return undefined}const g=o.getCurrentScope();const u=o.getClient();const{method:d,url:I}=t.fetchData;const p=getFullURL(I);const m=p?i.parseUrl(p).host:undefined;const C=l?o.startInactiveSpan({name:`${d} ${I}`,onlyIfParent:true,attributes:{url:I,type:"fetch","http.method":d,"http.url":p,"server.address":m,[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:c},op:"http.client"}):undefined;if(C){t.fetchData.__span=C.spanContext().spanId;a[C.spanContext().spanId]=C}if(r(t.fetchData.url)&&u){const n=t.args[0];t.args[1]=t.args[1]||{};const r=t.args[1];r.headers=addTracingHeadersToFetchRequest(n,u,g,r,C)}return C}function addTracingHeadersToFetchRequest(t,n,r,a,c){const l=c||r.getSpan();const g=o.getIsolationScope();const{traceId:u,spanId:d,sampled:I,dsc:p}={...g.getPropagationContext(),...r.getPropagationContext()};const m=l?o.spanToTraceHeader(l):i.generateSentryTraceHeader(u,d,I);const C=i.dynamicSamplingContextToSentryBaggageHeader(p||(l?o.getDynamicSamplingContextFromSpan(l):o.getDynamicSamplingContextFromClient(u,n,r)));const b=a.headers||(typeof Request!=="undefined"&&i.isInstanceOf(t,Request)?t.headers:undefined);if(!b){return{"sentry-trace":m,baggage:C}}else if(typeof Headers!=="undefined"&&i.isInstanceOf(b,Headers)){const t=new Headers(b);t.append("sentry-trace",m);if(C){t.append(i.BAGGAGE_HEADER_NAME,C)}return t}else if(Array.isArray(b)){const t=[...b,["sentry-trace",m]];if(C){t.push([i.BAGGAGE_HEADER_NAME,C])}return t}else{const t="baggage"in b?b.baggage:undefined;const n=[];if(Array.isArray(t)){n.push(...t)}else if(t){n.push(t)}if(C){n.push(C)}return{...b,"sentry-trace":m,baggage:n.length>0?n.join(","):undefined}}}function getFullURL(t){try{const n=new URL(t);return n.href}catch(t){return undefined}}function endSpan(t,n){if(n.response){o.setHttpStatus(t,n.response.status);const r=n.response&&n.response.headers&&n.response.headers.get("content-length");if(r){const n=parseInt(r);if(n>0){t.setAttribute("http.response_content_length",n)}}}else if(n.error){t.setStatus("internal_error")}t.end()}n.addTracingHeadersToFetchRequest=addTracingHeadersToFetchRequest;n.instrumentFetchRequest=instrumentFetchRequest},8346:(t,n,r)=>{t=r.nmd(t);Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);function _autoloadDatabaseIntegrations(){const n=o.getMainCarrier();if(!n.__SENTRY__){return}const r={mongodb(){const n=i.dynamicRequire(t,"./node/integrations/mongo");return new n.Mongo},mongoose(){const n=i.dynamicRequire(t,"./node/integrations/mongo");return new n.Mongo},mysql(){const n=i.dynamicRequire(t,"./node/integrations/mysql");return new n.Mysql},pg(){const n=i.dynamicRequire(t,"./node/integrations/postgres");return new n.Postgres}};const a=Object.keys(r).filter(t=>!!i.loadModule(t)).map(t=>{try{return r[t]()}catch(t){return undefined}}).filter(t=>t);if(a.length>0){n.__SENTRY__.integrations=[...n.__SENTRY__.integrations||[],...a]}}function addExtensionMethods(){o.addTracingExtensions();if(i.isNodeEnv()){_autoloadDatabaseIntegrations()}}n.addExtensionMethods=addExtensionMethods},9062:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(7039);const c=r(3848);const l=r(9461);const g=r(7411);const u=r(3639);const d=r(8998);const I=r(2968);const p=r(1113);const m=r(7255);const C=r(6157);const b=r(3312);const h=r(2516);const f=r(2446);const y=r(8346);n.IdleTransaction=o.IdleTransaction;n.Span=o.Span;n.SpanStatus=o.SpanStatus;n.Transaction=o.Transaction;n.extractTraceparentData=o.extractTraceparentData;n.getActiveTransaction=o.getActiveTransaction;n.hasTracingEnabled=o.hasTracingEnabled;n.spanStatusfromHttpCode=o.spanStatusfromHttpCode;n.startIdleTransaction=o.startIdleTransaction;n.TRACEPARENT_REGEXP=i.TRACEPARENT_REGEXP;n.stripUrlQueryAndFragment=i.stripUrlQueryAndFragment;n.Express=a.Express;n.Postgres=c.Postgres;n.Mysql=l.Mysql;n.Mongo=g.Mongo;n.Prisma=u.Prisma;n.GraphQL=d.GraphQL;n.Apollo=I.Apollo;n.lazyLoadedNodePerformanceMonitoringIntegrations=p.lazyLoadedNodePerformanceMonitoringIntegrations;n.BROWSER_TRACING_INTEGRATION_ID=m.BROWSER_TRACING_INTEGRATION_ID;n.BrowserTracing=m.BrowserTracing;n.browserTracingIntegration=C.browserTracingIntegration;n.startBrowserTracingNavigationSpan=C.startBrowserTracingNavigationSpan;n.startBrowserTracingPageLoadSpan=C.startBrowserTracingPageLoadSpan;n.defaultRequestInstrumentationOptions=b.defaultRequestInstrumentationOptions;n.instrumentOutgoingRequests=b.instrumentOutgoingRequests;n.addClsInstrumentationHandler=h.addClsInstrumentationHandler;n.addFidInstrumentationHandler=h.addFidInstrumentationHandler;n.addLcpInstrumentationHandler=h.addLcpInstrumentationHandler;n.addPerformanceInstrumentationHandler=h.addPerformanceInstrumentationHandler;n.addTracingHeadersToFetchRequest=f.addTracingHeadersToFetchRequest;n.instrumentFetchRequest=f.instrumentFetchRequest;n.addExtensionMethods=y.addExtensionMethods},2968:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(4624);const a=r(5472);const c=r(565);class Apollo{static __initStatic(){this.id="Apollo"}constructor(t={useNestjs:false}){this.name=Apollo.id;this._useNest=!!t.useNestjs}loadDependency(){if(this._useNest){this._module=this._module||i.loadModule("@nestjs/graphql")}else{this._module=this._module||i.loadModule("apollo-server-core")}return this._module}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Apollo Integration is skipped because of instrumenter configuration.");return}if(this._useNest){const t=this.loadDependency();if(!t){a.DEBUG_BUILD&&i.logger.error("Apollo-NestJS Integration was unable to require @nestjs/graphql package.");return}i.fill(t.GraphQLFactory.prototype,"mergeWithSchema",function(t){return function(...r){i.fill(this.resolversExplorerService,"explore",function(t){return function(){const r=i.arrayify(t.call(this));const o=instrumentResolvers(r,n);return o}});return t.call(this,...r)}})}else{const t=this.loadDependency();if(!t){a.DEBUG_BUILD&&i.logger.error("Apollo Integration was unable to require apollo-server-core package.");return}i.fill(t.ApolloServerBase.prototype,"constructSchema",function(t){return function(){if(!this.config.resolvers){if(a.DEBUG_BUILD){if(this.config.schema){i.logger.warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property."+"If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead.");i.logger.warn()}else if(this.config.modules){i.logger.warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property.")}i.logger.error("Skipping tracing as no resolvers found on the `ApolloServer` instance.")}return t.call(this)}const r=i.arrayify(this.config.resolvers);this.config.resolvers=instrumentResolvers(r,n);return t.call(this)}})}}}Apollo.__initStatic();function instrumentResolvers(t,n){return t.map(t=>{Object.keys(t).forEach(r=>{Object.keys(t[r]).forEach(o=>{if(typeof t[r][o]!=="function"){return}wrapResolver(t,r,o,n)})});return t})}function wrapResolver(t,n,r,a){i.fill(t[n],r,function(t){return function(...c){const l=a().getScope();const g=l.getSpan();const u=o([g,"optionalAccess",t=>t.startChild,"call",t=>t({description:`${n}.${r}`,op:"graphql.resolve",origin:"auto.graphql.apollo"})]);const d=t.call(this,...c);if(i.isThenable(d)){return d.then(t=>{o([u,"optionalAccess",t=>t.end,"call",t=>t()]);return t})}o([u,"optionalAccess",t=>t.end,"call",t=>t()]);return d}})}n.Apollo=Apollo},7039:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(9090);const a=r(4624);const c=r(5472);const l=r(565);class Express{static __initStatic(){this.id="Express"}constructor(t={}){this.name=Express.id;this._router=t.router||t.app;this._methods=(Array.isArray(t.methods)?t.methods:[]).concat("use")}setupOnce(t,n){if(!this._router){c.DEBUG_BUILD&&a.logger.error("ExpressIntegration is missing an Express instance");return}if(l.shouldDisableAutoInstrumentation(n)){c.DEBUG_BUILD&&a.logger.log("Express Integration is skipped because of instrumenter configuration.");return}instrumentMiddlewares(this._router,this._methods);instrumentRouter(this._router)}}Express.__initStatic();function wrap(t,n){const r=t.length;switch(r){case 2:{return function(r,o){const i=o.__sentry_transaction;if(i){const r=i.startChild({description:t.name,op:`middleware.express.${n}`,origin:"auto.middleware.express"});o.once("finish",()=>{r.end()})}return t.call(this,r,o)}}case 3:{return function(r,i,a){const c=i.__sentry_transaction;const l=o([c,"optionalAccess",t=>t.startChild,"call",r=>r({description:t.name,op:`middleware.express.${n}`,origin:"auto.middleware.express"})]);t.call(this,r,i,function(...t){o([l,"optionalAccess",t=>t.end,"call",t=>t()]);a.call(this,...t)})}}case 4:{return function(r,i,a,c){const l=a.__sentry_transaction;const g=o([l,"optionalAccess",t=>t.startChild,"call",r=>r({description:t.name,op:`middleware.express.${n}`,origin:"auto.middleware.express"})]);t.call(this,r,i,a,function(...t){o([g,"optionalAccess",t=>t.end,"call",t=>t()]);c.call(this,...t)})}}default:{throw new Error(`Express middleware takes 2-4 arguments. Got: ${r}`)}}}function wrapMiddlewareArgs(t,n){return t.map(t=>{if(typeof t==="function"){return wrap(t,n)}if(Array.isArray(t)){return t.map(t=>{if(typeof t==="function"){return wrap(t,n)}return t})}return t})}function patchMiddleware(t,n){const r=t[n];t[n]=function(...t){return r.call(this,...wrapMiddlewareArgs(t,n))};return t}function instrumentMiddlewares(t,n=[]){n.forEach(n=>patchMiddleware(t,n))}function instrumentRouter(t){const n="settings"in t;if(n&&t._router===undefined&&t.lazyrouter){t.lazyrouter()}const r=n?t._router:t;if(!r){c.DEBUG_BUILD&&a.logger.debug("Cannot instrument router for URL Parameterization (did not find a valid router).");c.DEBUG_BUILD&&a.logger.debug("Routing instrumentation is currently only supported in Express 4.");return}const o=Object.getPrototypeOf(r);const l=o.process_params;o.process_params=function process_params(t,n,r,o,c){if(!r._reconstructedRoute){r._reconstructedRoute=""}const{layerRoutePath:g,isRegex:u,isArray:d,numExtraSegments:I}=getLayerRoutePathInfo(t);if(g||u||d){r._hasParameters=true}let p;if(g){p=g}else{p=preventDuplicateSegments(r.originalUrl,r._reconstructedRoute,t.path)||""}const m=p.split("/").filter(t=>t.length>0&&(u||d||!t.includes("*"))).join("/");if(m&&m.length>0){r._reconstructedRoute+=`/${m}${u?"/":""}`}const C=a.getNumberOfUrlSegments(a.stripUrlQueryAndFragment(r.originalUrl||""))+I;const b=a.getNumberOfUrlSegments(r._reconstructedRoute);if(C===b){if(!r._hasParameters){if(r._reconstructedRoute!==r.originalUrl){r._reconstructedRoute=r.originalUrl?a.stripUrlQueryAndFragment(r.originalUrl):r.originalUrl}}const t=o.__sentry_transaction;const n=t&&i.spanToJSON(t).data||{};if(t&&n[i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]!=="custom"){const n=r._reconstructedRoute||"/";const[o,c]=a.extractPathForTransaction(r,{path:true,method:true,customRoute:n});t.updateName(o);t.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c)}}return l.call(this,t,n,r,o,c)}}const extractOriginalRoute=(t,n,r)=>{if(!t||!n||!r||Object.keys(r).length===0||o([r,"access",t=>t[0],"optionalAccess",t=>t.offset])===undefined||o([r,"access",t=>t[0],"optionalAccess",t=>t.offset])===null){return undefined}const i=r.sort((t,n)=>t.offset-n.offset);const a=new RegExp(n,`${n.flags}d`);const c=a.exec(t);if(!c||!c.indices){return undefined}const[,...l]=c.indices;if(l.length!==i.length){return undefined}let g=t;let u=0;l.forEach((t,n)=>{if(t){const[r,o]=t;const a=g.substring(0,r-u);const c=`:${i[n].name}`;const l=g.substring(o-u);g=a+c+l;u=u+(o-r-c.length)}});return g};function getLayerRoutePathInfo(t){let n=o([t,"access",t=>t.route,"optionalAccess",t=>t.path]);const r=a.isRegExp(n);const i=Array.isArray(n);if(!n){const[r]=a.GLOBAL_OBJ.process.versions.node.split(".").map(Number);if(r>=16){n=extractOriginalRoute(t.path,t.regexp,t.keys)}}if(!n){return{isRegex:r,isArray:i,numExtraSegments:0}}const c=i?Math.max(getNumberOfArrayUrlSegments(n)-a.getNumberOfUrlSegments(t.path||""),0):0;const l=getLayerRoutePathString(i,n);return{layerRoutePath:l,isRegex:r,isArray:i,numExtraSegments:c}}function getNumberOfArrayUrlSegments(t){return t.reduce((t,n)=>t+a.getNumberOfUrlSegments(n.toString()),0)}function getLayerRoutePathString(t,n){if(t){return n.map(t=>t.toString()).join(",")}return n&&n.toString()}function preventDuplicateSegments(t,n,r){const i=a.stripUrlQueryAndFragment(t||"");const c=o([i,"optionalAccess",t=>t.split,"call",t=>t("/"),"access",t=>t.filter,"call",t=>t(t=>!!t)]);let l=0;const g=o([n,"optionalAccess",t=>t.split,"call",t=>t("/"),"access",t=>t.filter,"call",t=>t(t=>!!t),"access",t=>t.length])||0;const u=o([r,"optionalAccess",t=>t.split,"call",t=>t("/"),"access",t=>t.filter,"call",t=>t(t=>{if(o([c,"optionalAccess",t=>t[g+l]])===t){l+=1;return true}return false}),"access",t=>t.join,"call",t=>t("/")]);return u}n.Express=Express;n.extractOriginalRoute=extractOriginalRoute;n.preventDuplicateSegments=preventDuplicateSegments},8998:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(4624);const a=r(5472);const c=r(565);class GraphQL{static __initStatic(){this.id="GraphQL"}constructor(){this.name=GraphQL.id}loadDependency(){return this._module=this._module||i.loadModule("graphql/execution/execute.js")}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("GraphQL Integration is skipped because of instrumenter configuration.");return}const r=this.loadDependency();if(!r){a.DEBUG_BUILD&&i.logger.error("GraphQL Integration was unable to require graphql/execution package.");return}i.fill(r,"execute",function(t){return function(...r){const a=n().getScope();const c=a.getSpan();const l=o([c,"optionalAccess",t=>t.startChild,"call",t=>t({description:"execute",op:"graphql.execute",origin:"auto.graphql.graphql"})]);o([a,"optionalAccess",t=>t.setSpan,"call",t=>t(l)]);const g=t.call(this,...r);if(i.isThenable(g)){return g.then(t=>{o([l,"optionalAccess",t=>t.end,"call",t=>t()]);o([a,"optionalAccess",t=>t.setSpan,"call",t=>t(c)]);return t})}o([l,"optionalAccess",t=>t.end,"call",t=>t()]);o([a,"optionalAccess",t=>t.setSpan,"call",t=>t(c)]);return g}})}}GraphQL.__initStatic();n.GraphQL=GraphQL},1113:(t,n,r)=>{t=r.nmd(t);Object.defineProperty(n,"__esModule",{value:true});const o=r(4624);const i=[()=>{const n=o.dynamicRequire(t,"./apollo");return new n.Apollo},()=>{const n=o.dynamicRequire(t,"./apollo");return new n.Apollo({useNestjs:true})},()=>{const n=o.dynamicRequire(t,"./graphql");return new n.GraphQL},()=>{const n=o.dynamicRequire(t,"./mongo");return new n.Mongo},()=>{const n=o.dynamicRequire(t,"./mongo");return new n.Mongo({mongoose:true})},()=>{const n=o.dynamicRequire(t,"./mysql");return new n.Mysql},()=>{const n=o.dynamicRequire(t,"./postgres");return new n.Postgres}];n.lazyLoadedNodePerformanceMonitoringIntegrations=i},7411:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(4624);const a=r(5472);const c=r(565);const l=["aggregate","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","drop","dropIndex","dropIndexes","estimatedDocumentCount","find","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexes","indexExists","indexInformation","initializeOrderedBulkOp","insertMany","insertOne","isCapped","mapReduce","options","parallelCollectionScan","rename","replaceOne","stats","updateMany","updateOne"];const g={bulkWrite:["operations"],countDocuments:["query"],createIndex:["fieldOrSpec"],createIndexes:["indexSpecs"],deleteMany:["filter"],deleteOne:["filter"],distinct:["key","query"],dropIndex:["indexName"],find:["query"],findOne:["query"],findOneAndDelete:["filter"],findOneAndReplace:["filter","replacement"],findOneAndUpdate:["filter","update"],indexExists:["indexes"],insertMany:["docs"],insertOne:["doc"],mapReduce:["map","reduce"],rename:["newName"],replaceOne:["filter","doc"],updateMany:["filter","update"],updateOne:["filter","update"]};function isCursor(t){return t&&typeof t==="object"&&t.once&&typeof t.once==="function"}class Mongo{static __initStatic(){this.id="Mongo"}constructor(t={}){this.name=Mongo.id;this._operations=Array.isArray(t.operations)?t.operations:l;this._describeOperations="describeOperations"in t?t.describeOperations:true;this._useMongoose=!!t.useMongoose}loadDependency(){const t=this._useMongoose?"mongoose":"mongodb";return this._module=this._module||i.loadModule(t)}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Mongo Integration is skipped because of instrumenter configuration.");return}const r=this.loadDependency();if(!r){const t=this._useMongoose?"mongoose":"mongodb";a.DEBUG_BUILD&&i.logger.error(`Mongo Integration was unable to require \`${t}\` package.`);return}this._instrumentOperations(r.Collection,this._operations,n)}_instrumentOperations(t,n,r){n.forEach(n=>this._patchOperation(t,n,r))}_patchOperation(t,n,r){if(!(n in t.prototype))return;const a=this._getSpanContextFromOperationArguments.bind(this);i.fill(t.prototype,n,function(t){return function(...c){const l=c[c.length-1];const g=r();const u=g.getScope();const d=g.getClient();const I=u.getSpan();const p=o([d,"optionalAccess",t=>t.getOptions,"call",t=>t(),"access",t=>t.sendDefaultPii]);if(typeof l!=="function"||n==="mapReduce"&&c.length===2){const r=o([I,"optionalAccess",t=>t.startChild,"call",t=>t(a(this,n,c,p))]);const l=t.call(this,...c);if(i.isThenable(l)){return l.then(t=>{o([r,"optionalAccess",t=>t.end,"call",t=>t()]);return t})}else if(isCursor(l)){const t=l;try{t.once("close",()=>{o([r,"optionalAccess",t=>t.end,"call",t=>t()])})}catch(t){o([r,"optionalAccess",t=>t.end,"call",t=>t()])}return t}else{o([r,"optionalAccess",t=>t.end,"call",t=>t()]);return l}}const m=o([I,"optionalAccess",t=>t.startChild,"call",t=>t(a(this,n,c.slice(0,-1)))]);return t.call(this,...c.slice(0,-1),function(t,n){o([m,"optionalAccess",t=>t.end,"call",t=>t()]);l(t,n)})}})}_getSpanContextFromOperationArguments(t,n,r,o=false){const i={"db.system":"mongodb","db.name":t.dbName,"db.operation":n,"db.mongodb.collection":t.collectionName};const a={op:"db",origin:"auto.db.mongo",description:n,data:i};const c=g[n];const l=Array.isArray(this._describeOperations)?this._describeOperations.includes(n):this._describeOperations;if(!c||!l||!o){return a}try{if(n==="mapReduce"){const[t,n]=r;i[c[0]]=typeof t==="string"?t:t.name||"<anonymous>";i[c[1]]=typeof n==="string"?n:n.name||"<anonymous>"}else{for(let t=0;t<c.length;t++){i[`db.mongodb.${c[t]}`]=JSON.stringify(r[t])}}}catch(t){}return a}}Mongo.__initStatic();n.Mongo=Mongo},9461:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(4624);const a=r(5472);const c=r(565);class Mysql{static __initStatic(){this.id="Mysql"}constructor(){this.name=Mysql.id}loadDependency(){return this._module=this._module||i.loadModule("mysql/lib/Connection.js")}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Mysql Integration is skipped because of instrumenter configuration.");return}const r=this.loadDependency();if(!r){a.DEBUG_BUILD&&i.logger.error("Mysql Integration was unable to require `mysql` package.");return}let l=undefined;try{r.prototype.connect=new Proxy(r.prototype.connect,{apply(t,n,r){if(!l){l=n.config}return t.apply(n,r)}})}catch(t){a.DEBUG_BUILD&&i.logger.error("Mysql Integration was unable to instrument `mysql` config.")}function spanDataFromConfig(){if(!l){return{}}return{"server.address":l.host,"server.port":l.port,"db.user":l.user}}function finishSpan(t){if(!t){return}const n=spanDataFromConfig();Object.keys(n).forEach(r=>{t.setAttribute(r,n[r])});t.end()}i.fill(r,"createQuery",function(t){return function(r,i,a){const c=n().getScope();const l=c.getSpan();const g=o([l,"optionalAccess",t=>t.startChild,"call",t=>t({description:typeof r==="string"?r:r.sql,op:"db",origin:"auto.db.mysql",data:{"db.system":"mysql"}})]);if(typeof a==="function"){return t.call(this,r,i,function(t,n,r){finishSpan(g);a(t,n,r)})}if(typeof i==="function"){return t.call(this,r,function(t,n,r){finishSpan(g);i(t,n,r)})}const u=t.call(this,r,i);u.on("end",()=>{finishSpan(g)});return u}})}}Mysql.__initStatic();n.Mysql=Mysql},3848:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});const i=r(4624);const a=r(5472);const c=r(565);class Postgres{static __initStatic(){this.id="Postgres"}constructor(t={}){this.name=Postgres.id;this._usePgNative=!!t.usePgNative;this._module=t.module}loadDependency(){return this._module=this._module||i.loadModule("pg")}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Postgres Integration is skipped because of instrumenter configuration.");return}const r=this.loadDependency();if(!r){a.DEBUG_BUILD&&i.logger.error("Postgres Integration was unable to require `pg` package.");return}const l=this._usePgNative?o([r,"access",t=>t.native,"optionalAccess",t=>t.Client]):r.Client;if(!l){a.DEBUG_BUILD&&i.logger.error("Postgres Integration was unable to access 'pg-native' bindings.");return}i.fill(l.prototype,"query",function(t){return function(r,a,c){const l=n().getScope();const g=l.getSpan();const u={"db.system":"postgresql"};try{if(this.database){u["db.name"]=this.database}if(this.host){u["server.address"]=this.host}if(this.port){u["server.port"]=this.port}if(this.user){u["db.user"]=this.user}}catch(t){}const d=o([g,"optionalAccess",t=>t.startChild,"call",t=>t({description:typeof r==="string"?r:r.text,op:"db",origin:"auto.db.postgres",data:u})]);if(typeof c==="function"){return t.call(this,r,a,function(t,n){o([d,"optionalAccess",t=>t.end,"call",t=>t()]);c(t,n)})}if(typeof a==="function"){return t.call(this,r,function(t,n){o([d,"optionalAccess",t=>t.end,"call",t=>t()]);a(t,n)})}const I=typeof a!=="undefined"?t.call(this,r,a):t.call(this,r);if(i.isThenable(I)){return I.then(t=>{o([d,"optionalAccess",t=>t.end,"call",t=>t()]);return t})}o([d,"optionalAccess",t=>t.end,"call",t=>t()]);return I}})}}Postgres.__initStatic();n.Postgres=Postgres},3639:(t,n,r)=>{Object.defineProperty(n,"__esModule",{value:true});const o=r(9090);const i=r(4624);const a=r(5472);const c=r(565);function isValidPrismaClient(t){return!!t&&!!t["$use"]}class Prisma{static __initStatic(){this.id="Prisma"}constructor(t={}){this.name=Prisma.id;if(isValidPrismaClient(t.client)&&!t.client._sentryInstrumented){i.addNonEnumerableProperty(t.client,"_sentryInstrumented",true);const n={};try{const r=t.client._engineConfig;if(r){const{activeProvider:t,clientVersion:o}=r;if(t){n["db.system"]=t}if(o){n["db.prisma.version"]=o}}}catch(t){}t.client.$use((t,r)=>{if(c.shouldDisableAutoInstrumentation(o.getCurrentHub)){return r(t)}const i=t.action;const a=t.model;return o.startSpan({name:a?`${a} ${i}`:i,onlyIfParent:true,op:"db.prisma",attributes:{[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.db.prisma"},data:{...n,"db.operation":i}},()=>r(t))})}else{a.DEBUG_BUILD&&i.logger.warn("Unsupported Prisma client provided to PrismaIntegration. Provided client:",t.client)}}setupOnce(){}}Prisma.__initStatic();n.Prisma=Prisma},565:(t,n,r)=>{var{_optionalChain:o}=r(4624);Object.defineProperty(n,"__esModule",{value:true});function shouldDisableAutoInstrumentation(t){const n=o([t,"call",t=>t(),"access",t=>t.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);const r=o([n,"optionalAccess",t=>t.instrumenter])||"sentry";return r!=="sentry"}n.shouldDisableAutoInstrumentation=shouldDisableAutoInstrumentation},9509:function(t,n,r){"use strict";var o=this&&this.__createBinding||(Object.create?function(t,n,r,o){if(o===undefined)o=r;var i=Object.getOwnPropertyDescriptor(n,r);if(!i||("get"in i?!n.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return n[r]}}}Object.defineProperty(t,o,i)}:function(t,n,r,o){if(o===undefined)o=r;t[o]=n[r]});var i=this&&this.__setModuleDefault||(Object.create?function(t,n){Object.defineProperty(t,"default",{enumerable:true,value:n})}:function(t,n){t["default"]=n});var a=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r in t)if(r!=="default"&&Object.prototype.hasOwnProperty.call(t,r))o(n,t,r);i(n,t);return n};Object.defineProperty(n,"__esModule",{value:true});n.init=n.normalizeEnvironment=void 0;const c=a(r(3986));const l=r(8278);const g={production:"prod",staging:"prev",development:"dev",test:"test"};function normalizeEnvironment(t){var n;return(n=g[t])!==null&&n!==void 0?n:t}n.normalizeEnvironment=normalizeEnvironment;function init(t){const n=Object.assign(Object.assign({},t),{environment:normalizeEnvironment(t.environment)});c.init({dsn:`https://${t.projectId}@o0.ingest.sentry.io/0`,transport:(0,l.makeApmTransport)(n),release:n.release,environment:n.environment,tracesSampleRate:0,normalizeDepth:n.normalizeDepth})}n.init=init},8233:(t,n,r)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.convertSentryBody=void 0;const o=r(831);const i=r(8955);function convertSentryBody(t,n){const r=t.split("\n").filter(Boolean);if(r.length<3)return null;const i=JSON.parse(r[0]);const a=[];let c;for(let t=1;t+1<r.length;t+=2){const n=JSON.parse(r[t]);const o=JSON.parse(r[t+1]);if(n.type==="event"){const t=o;if(!c)c=t;const n=sentryEventToApm(t);if(n)a.push(n)}else if(n.type==="transaction"){const t=sentryTransactionToApm(o);if(t)a.push(t)}}if(a.length===0)return null;return{meta:(0,o.buildApmMeta)(n,i,c),events:a}}n.convertSentryBody=convertSentryBody;function sentryEventToApm(t){var n,r,o,a,c,l,g,u,d,I,p,m,C,b,h,f,y,G,B,A,Z,S;const v=t.timestamp?Math.round(t.timestamp*1e3):Date.now();if((r=(n=t.exception)===null||n===void 0?void 0:n.values)===null||r===void 0?void 0:r.length){const n=t.exception.values[t.exception.values.length-1];if(!n)return null;const r=Object.assign(Object.assign({},(o=t.extra)!==null&&o!==void 0?o:{}),(l=(c=(a=t.contexts)===null||a===void 0?void 0:a.trace)===null||c===void 0?void 0:c.data)!==null&&l!==void 0?l:{});const Z=Object.assign({},(g=t.tags)!==null&&g!==void 0?g:{});if(t.server_name)Z["server_name"]=t.server_name;return{id:(u=t.event_id)!==null&&u!==void 0?u:(0,i.generateId)(),ts:v,type:"error",payload:{type:(d=n.type)!==null&&d!==void 0?d:"Error",message:(I=n.value)!==null&&I!==void 0?I:"",stackTrace:{frames:[...(m=(p=n.stacktrace)===null||p===void 0?void 0:p.frames)!==null&&m!==void 0?m:[]].reverse()},mechanism:(b=(C=n.mechanism)===null||C===void 0?void 0:C.type)!==null&&b!==void 0?b:"generic",fingerprint:t.fingerprint,traceId:(f=(h=t.contexts)===null||h===void 0?void 0:h.trace)===null||f===void 0?void 0:f.trace_id,spanId:(G=(y=t.contexts)===null||y===void 0?void 0:y.trace)===null||G===void 0?void 0:G.span_id,breadcrumbs:(A=(B=t.breadcrumbs)===null||B===void 0?void 0:B.values)!==null&&A!==void 0?A:[],data:Object.keys(r).length>0?r:undefined,tags:Object.keys(Z).length>0?Z:undefined}}}if(t.message){const n=Object.assign({},(Z=t.tags)!==null&&Z!==void 0?Z:{});if(t.server_name)n["server_name"]=t.server_name;return{id:(S=t.event_id)!==null&&S!==void 0?S:(0,i.generateId)(),ts:v,type:"log",payload:{type:"custom",level:sentryLogLevelToApm(t.level),message:t.message,data:t.extra&&Object.keys(t.extra).length>0?Object.assign({},t.extra):undefined,tags:Object.keys(n).length>0?n:undefined}}}return null}function sentryTransactionToApm(t){var n,r,o,a,c,l,g,u,d,I,p,m,C,b,h,f,y,G,B,A,Z,S;if(((r=(n=t.contexts)===null||n===void 0?void 0:n.trace)===null||r===void 0?void 0:r.op)!=="http.server")return null;const v=t.request;let W=null;if(v===null||v===void 0?void 0:v.url){try{W=new URL(v.url,"http://localhost")}catch(t){}}const R=(c=(a=(o=t.contexts)===null||o===void 0?void 0:o.response)===null||a===void 0?void 0:a.status_code)!==null&&c!==void 0?c:0;return{id:(l=t.event_id)!==null&&l!==void 0?l:(0,i.generateId)(),ts:Math.round(((u=(g=t.start_timestamp)!==null&&g!==void 0?g:t.timestamp)!==null&&u!==void 0?u:0)*1e3),type:"request",payload:{method:(I=(d=v===null||v===void 0?void 0:v.method)===null||d===void 0?void 0:d.toUpperCase())!==null&&I!==void 0?I:"GET",host:(p=W===null||W===void 0?void 0:W.hostname)!==null&&p!==void 0?p:"",flavor:"http",schema:(C=(m=W===null||W===void 0?void 0:W.protocol)===null||m===void 0?void 0:m.replace(":",""))!==null&&C!==void 0?C:"http",path:(b=W===null||W===void 0?void 0:W.pathname)!==null&&b!==void 0?b:"",query:(h=W===null||W===void 0?void 0:W.search)!==null&&h!==void 0?h:"",endTs:Math.round(((f=t.timestamp)!==null&&f!==void 0?f:0)*1e3),statusCode:String(R),errorCode:null,traceId:(B=(G=(y=t.contexts)===null||y===void 0?void 0:y.trace)===null||G===void 0?void 0:G.trace_id)!==null&&B!==void 0?B:"",spanId:(S=(Z=(A=t.contexts)===null||A===void 0?void 0:A.trace)===null||Z===void 0?void 0:Z.span_id)!==null&&S!==void 0?S:"",ok:R>0&&R<400}}}function sentryLogLevelToApm(t){var n;const r={fatal:"error",error:"error",warning:"warn",log:"info",info:"info",debug:"debug"};return(n=r[t!==null&&t!==void 0?t:"info"])!==null&&n!==void 0?n:"info"}},6904:function(t,n,r){"use strict";var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(n,"__esModule",{value:true});n.sendToApm=void 0;const i=o(r(5692));const a=o(r(8611));function sendToApm(t,n){return new Promise(r=>{const o=JSON.stringify(n);const c=new URL(t);const l=c.protocol==="https:";const g=l?i.default:a.default;const u=g.request({hostname:c.hostname,port:c.port||(l?443:80),path:c.pathname,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(o)},timeout:5e3},t=>{t.resume();r()});u.on("error",()=>r());u.on("timeout",()=>{u.destroy();r()});u.write(o);u.end()})}n.sendToApm=sendToApm},8278:function(t,n,r){"use strict";var o=this&&this.__awaiter||function(t,n,r,o){function adopt(t){return t instanceof r?t:new r(function(n){n(t)})}return new(r||(r=Promise))(function(r,i){function fulfilled(t){try{step(o.next(t))}catch(t){i(t)}}function rejected(t){try{step(o["throw"](t))}catch(t){i(t)}}function step(t){t.done?r(t.value):adopt(t.value).then(fulfilled,rejected)}step((o=o.apply(t,n||[])).next())})};Object.defineProperty(n,"__esModule",{value:true});n.makeApmTransport=void 0;const i=r(1251);const a=r(8233);const c=r(6904);const l=r(8676);function makeApmTransport(t){return n=>{const r=t.endpoint?`${t.endpoint.replace(/\/$/,"")}/front/api/${t.projectId}/envelope`:(0,l.buildReportUrl)(t.projectId);function makeRequest(n){return o(this,void 0,void 0,function*(){try{const o=typeof n.body==="string"?n.body:"";const i=(0,a.convertSentryBody)(o,t);if(i){yield(0,c.sendToApm)(r,i)}}catch(t){}return{statusCode:200}})}return(0,i.createTransport)(n,makeRequest)}}n.makeApmTransport=makeApmTransport},8676:(t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.buildReportUrl=void 0;const r="apm.myshopline.com";function buildReportUrl(t){return`https://${r}/front/api/${t}/envelope`}n.buildReportUrl=buildReportUrl},8955:(t,n,r)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.generateId=void 0;function generateId(){if(typeof crypto!=="undefined"&&typeof crypto.randomUUID==="function"){return crypto.randomUUID().replace(/-/g,"")}const{randomBytes:t}=r(6982);return t(16).toString("hex")}n.generateId=generateId},831:function(t,n,r){"use strict";var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(n,"__esModule",{value:true});n.buildApmMeta=n.getProcessSessionId=n.getProcessClientId=void 0;const i=o(r(857));const a=r(7163);const c=r(8955);let l=null;let g=null;function getProcessClientId(){if(!l)l=(0,c.generateId)();return l}n.getProcessClientId=getProcessClientId;function getProcessSessionId(){if(!g)g=(0,c.generateId)();return g}n.getProcessSessionId=getProcessSessionId;function buildApmMeta(t,n,r){var o,c,l;const g=r===null||r===void 0?void 0:r.contexts;const u=g===null||g===void 0?void 0:g["os"];const d=g===null||g===void 0?void 0:g["device"];const I=(o=n["sdk"])!==null&&o!==void 0?o:{};let p;if(u===null||u===void 0?void 0:u["name"]){p=String(u["name"]);if(u["version"])p+=` ${u["version"]}`;if(u["kernel_version"])p+=` (${u["kernel_version"]})`}const m=d&&Object.keys(d).length>0?Object.assign({},d):undefined;const C=r===null||r===void 0?void 0:r["tags"];const b=r===null||r===void 0?void 0:r["extra"];return{session:{id:getProcessClientId(),tabId:getProcessSessionId()},page:{url:`node://${i.default.hostname()}/${process.pid}`,path:`/${process.title||"node"}`},uid:(c=t.uid)!==null&&c!==void 0?c:null,app:{id:t.projectId,release:t.release,environment:t.environment},browser:{userAgent:`Node.js/${process.version}`},sdk:{name:"@sl/logger-apm-node",version:a.SDK_VERSION,integrations:(l=I.integrations)!==null&&l!==void 0?l:[]},platform:"node",os:p,device_info:m,tags:C,data:b}}n.buildApmMeta=buildApmMeta},7163:(t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.SDK_VERSION=n.SDK_NAME=void 0;n.SDK_NAME="@sl/logger-apm-node";n.SDK_VERSION="1.0.1"},8843:t=>{
|
|
3
|
+
n.base64WorkerScript="aW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJ2luc3BlY3Rvcic7CmltcG9ydCB7IHdvcmtlckRhdGEsIHBhcmVudFBvcnQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcyc7CmltcG9ydCB7IHBvc2l4LCBzZXAgfSBmcm9tICdwYXRoJzsKaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJzsKaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnOwppbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7CmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7CmltcG9ydCB7IGNyZWF0ZUd6aXAgfSBmcm9tICd6bGliJzsKaW1wb3J0ICogYXMgbmV0IGZyb20gJ25ldCc7CmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnOwoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZApjb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIG9uZSBvZiBhIGZldyBFcnJvciBvciBFcnJvci1saWtlCiAqIHtAbGluayBpc0Vycm9yfS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXJyb3Iod2F0KSB7CiAgc3dpdGNoIChvYmplY3RUb1N0cmluZy5jYWxsKHdhdCkpIHsKICAgIGNhc2UgJ1tvYmplY3QgRXJyb3JdJzoKICAgIGNhc2UgJ1tvYmplY3QgRXhjZXB0aW9uXSc6CiAgICBjYXNlICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nOgogICAgICByZXR1cm4gdHJ1ZTsKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiBpc0luc3RhbmNlT2Yod2F0LCBFcnJvcik7CiAgfQp9Ci8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgZ2l2ZW4gYnVpbHQtaW4gY2xhc3MuCiAqCiAqIEBwYXJhbSB3YXQgVGhlIHZhbHVlIHRvIGJlIGNoZWNrZWQKICogQHBhcmFtIGNsYXNzTmFtZQogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0J1aWx0aW4od2F0LCBjbGFzc05hbWUpIHsKICByZXR1cm4gb2JqZWN0VG9TdHJpbmcuY2FsbCh3YXQpID09PSBgW29iamVjdCAke2NsYXNzTmFtZX1dYDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIHN0cmluZwogKiB7QGxpbmsgaXNTdHJpbmd9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNTdHJpbmcod2F0KSB7CiAgcmV0dXJuIGlzQnVpbHRpbih3YXQsICdTdHJpbmcnKTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBvYmplY3QgbGl0ZXJhbCwgb3IgYSBjbGFzcyBpbnN0YW5jZS4KICoge0BsaW5rIGlzUGxhaW5PYmplY3R9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh3YXQpIHsKICByZXR1cm4gaXNCdWlsdGluKHdhdCwgJ09iamVjdCcpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEV2ZW50IGluc3RhbmNlCiAqIHtAbGluayBpc0V2ZW50fS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXZlbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHdhdCwgRXZlbnQpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEVsZW1lbnQgaW5zdGFuY2UKICoge0BsaW5rIGlzRWxlbWVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0VsZW1lbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBpc0luc3RhbmNlT2Yod2F0LCBFbGVtZW50KTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlIGhhcyBhIHRoZW4gZnVuY3Rpb24uCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKi8KZnVuY3Rpb24gaXNUaGVuYWJsZSh3YXQpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgcmV0dXJuIEJvb2xlYW4od2F0ICYmIHdhdC50aGVuICYmIHR5cGVvZiB3YXQudGhlbiA9PT0gJ2Z1bmN0aW9uJyk7Cn0KCi8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSdzIHR5cGUgaXMgYSBTeW50aGV0aWNFdmVudAogKiB7QGxpbmsgaXNTeW50aGV0aWNFdmVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1N5bnRoZXRpY0V2ZW50KHdhdCkgewogIHJldHVybiBpc1BsYWluT2JqZWN0KHdhdCkgJiYgJ25hdGl2ZUV2ZW50JyBpbiB3YXQgJiYgJ3ByZXZlbnREZWZhdWx0JyBpbiB3YXQgJiYgJ3N0b3BQcm9wYWdhdGlvbicgaW4gd2F0Owp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUgaXMgTmFOCiAqIHtAbGluayBpc05hTn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc05hTiQxKHdhdCkgewogIHJldHVybiB0eXBlb2Ygd2F0ID09PSAnbnVtYmVyJyAmJiB3YXQgIT09IHdhdDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiBwcm92aWRlZCBjb25zdHJ1Y3Rvci4KICoge0BsaW5rIGlzSW5zdGFuY2VPZn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcGFyYW0gYmFzZSBBIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgaW4gYSBjaGVjay4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNJbnN0YW5jZU9mKHdhdCwgYmFzZSkgewogIHRyeSB7CiAgICByZXR1cm4gd2F0IGluc3RhbmNlb2YgYmFzZTsKICB9IGNhdGNoIChfZSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIFZ1ZSBWaWV3TW9kZWwuCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1Z1ZVZpZXdNb2RlbCh3YXQpIHsKICAvLyBOb3QgdXNpbmcgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBiZWNhdXNlIGluIFZ1ZSAzIGl0IHdvdWxkIHJlYWQgdGhlIGluc3RhbmNlJ3MgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykgcHJvcGVydHkuCiAgcmV0dXJuICEhKHR5cGVvZiB3YXQgPT09ICdvYmplY3QnICYmIHdhdCAhPT0gbnVsbCAmJiAoKHdhdCApLl9faXNWdWUgfHwgKHdhdCApLl9pc1Z1ZSkpOwp9CgovKiogSW50ZXJuYWwgZ2xvYmFsIHdpdGggY29tbW9uIHByb3BlcnRpZXMgYW5kIFNlbnRyeSBleHRlbnNpb25zICAqLwoKLy8gVGhlIGNvZGUgYmVsb3cgZm9yICdpc0dsb2JhbE9iaicgYW5kICdHTE9CQUxfT0JKJyB3YXMgY29waWVkIGZyb20gY29yZS1qcyBiZWZvcmUgbW9kaWZpY2F0aW9uCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvMWI5NDRkZjU1MjgyY2RjOTljOTBkYjVmNDllYjBiNmVkYTJjYzBhMy9wYWNrYWdlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMKLy8gY29yZS1qcyBoYXMgdGhlIGZvbGxvd2luZyBsaWNlbmNlOgovLwovLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYKLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQovLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAovLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgovLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgovLyBUSEUgU09GVFdBUkUuCgovKiogUmV0dXJucyAnb2JqJyBpZiBpdCdzIHRoZSBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWQgKi8KZnVuY3Rpb24gaXNHbG9iYWxPYmoob2JqKSB7CiAgcmV0dXJuIG9iaiAmJiBvYmouTWF0aCA9PSBNYXRoID8gb2JqIDogdW5kZWZpbmVkOwp9CgovKiogR2V0J3MgdGhlIGdsb2JhbCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IEphdmFTY3JpcHQgcnVudGltZSAqLwpjb25zdCBHTE9CQUxfT0JKID0KICAodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgaXNHbG9iYWxPYmooZ2xvYmFsVGhpcykpIHx8CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscwogICh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHdpbmRvdykpIHx8CiAgKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHNlbGYpKSB8fAogICh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKGdsb2JhbCkpIHx8CiAgKGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH0pKCkgfHwKICB7fTsKCi8qKgogKiBAZGVwcmVjYXRlZCBVc2UgR0xPQkFMX09CSiBpbnN0ZWFkIG9yIFdJTkRPVyBmcm9tIEBzZW50cnkvYnJvd3Nlci4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjgKICovCmZ1bmN0aW9uIGdldEdsb2JhbE9iamVjdCgpIHsKICByZXR1cm4gR0xPQkFMX09CSiA7Cn0KCi8qKgogKiBSZXR1cm5zIGEgZ2xvYmFsIHNpbmdsZXRvbiBjb250YWluZWQgaW4gdGhlIGdsb2JhbCBgX19TRU5UUllfX2Agb2JqZWN0LgogKgogKiBJZiB0aGUgc2luZ2xldG9uIGRvZXNuJ3QgYWxyZWFkeSBleGlzdCBpbiBgX19TRU5UUllfX2AsIGl0IHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUgZ2l2ZW4gZmFjdG9yeQogKiBmdW5jdGlvbiBhbmQgYWRkZWQgdG8gdGhlIGBfX1NFTlRSWV9fYCBvYmplY3QuCiAqCiAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24gb24gX19TRU5UUllfXwogKiBAcGFyYW0gY3JlYXRvciBjcmVhdG9yIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBzaW5nbGV0b24gaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0IG9uIGBfX1NFTlRSWV9fYAogKiBAcGFyYW0gb2JqIChPcHRpb25hbCkgVGhlIGdsb2JhbCBvYmplY3Qgb24gd2hpY2ggdG8gbG9vayBmb3IgYF9fU0VOVFJZX19gLCBpZiBub3QgYEdMT0JBTF9PQkpgJ3MgcmV0dXJuIHZhbHVlCiAqIEByZXR1cm5zIHRoZSBzaW5nbGV0b24KICovCmZ1bmN0aW9uIGdldEdsb2JhbFNpbmdsZXRvbihuYW1lLCBjcmVhdG9yLCBvYmopIHsKICBjb25zdCBnYmwgPSAob2JqIHx8IEdMT0JBTF9PQkopIDsKICBjb25zdCBfX1NFTlRSWV9fID0gKGdibC5fX1NFTlRSWV9fID0gZ2JsLl9fU0VOVFJZX18gfHwge30pOwogIGNvbnN0IHNpbmdsZXRvbiA9IF9fU0VOVFJZX19bbmFtZV0gfHwgKF9fU0VOVFJZX19bbmFtZV0gPSBjcmVhdG9yKCkpOwogIHJldHVybiBzaW5nbGV0b247Cn0KCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpjb25zdCBXSU5ET1cgPSBnZXRHbG9iYWxPYmplY3QoKTsKCmNvbnN0IERFRkFVTFRfTUFYX1NUUklOR19MRU5HVEggPSA4MDsKCi8qKgogKiBHaXZlbiBhIGNoaWxkIERPTSBlbGVtZW50LCByZXR1cm5zIGEgcXVlcnktc2VsZWN0b3Igc3RhdGVtZW50IGRlc2NyaWJpbmcgdGhhdAogKiBhbmQgaXRzIGFuY2VzdG9ycwogKiBlLmcuIFtIVE1MRWxlbWVudF0gPT4gYm9keSA+IGRpdiA+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gaHRtbFRyZWVBc1N0cmluZygKICBlbGVtLAogIG9wdGlvbnMgPSB7fSwKKSB7CiAgaWYgKCFlbGVtKSB7CiAgICByZXR1cm4gJzx1bmtub3duPic7CiAgfQoKICAvLyB0cnkvY2F0Y2ggYm90aDoKICAvLyAtIGFjY2Vzc2luZyBldmVudC50YXJnZXQgKHNlZSBnZXRzZW50cnkvcmF2ZW4tanMjODM4LCAjNzY4KQogIC8vIC0gYGh0bWxUcmVlQXNTdHJpbmdgIGJlY2F1c2UgaXQncyBjb21wbGV4LCBhbmQganVzdCBhY2Nlc3NpbmcgdGhlIERPTSBpbmNvcnJlY3RseQogIC8vIC0gY2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCiAgdHJ5IHsKICAgIGxldCBjdXJyZW50RWxlbSA9IGVsZW0gOwogICAgY29uc3QgTUFYX1RSQVZFUlNFX0hFSUdIVCA9IDU7CiAgICBjb25zdCBvdXQgPSBbXTsKICAgIGxldCBoZWlnaHQgPSAwOwogICAgbGV0IGxlbiA9IDA7CiAgICBjb25zdCBzZXBhcmF0b3IgPSAnID4gJzsKICAgIGNvbnN0IHNlcExlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7CiAgICBsZXQgbmV4dFN0cjsKICAgIGNvbnN0IGtleUF0dHJzID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBvcHRpb25zLmtleUF0dHJzOwogICAgY29uc3QgbWF4U3RyaW5nTGVuZ3RoID0gKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoKSB8fCBERUZBVUxUX01BWF9TVFJJTkdfTEVOR1RIOwoKICAgIHdoaWxlIChjdXJyZW50RWxlbSAmJiBoZWlnaHQrKyA8IE1BWF9UUkFWRVJTRV9IRUlHSFQpIHsKICAgICAgbmV4dFN0ciA9IF9odG1sRWxlbWVudEFzU3RyaW5nKGN1cnJlbnRFbGVtLCBrZXlBdHRycyk7CiAgICAgIC8vIGJhaWwgb3V0IGlmCiAgICAgIC8vIC0gbmV4dFN0ciBpcyB0aGUgJ2h0bWwnIGVsZW1lbnQKICAgICAgLy8gLSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgdGhhdCB3b3VsZCBiZSBjcmVhdGVkIGV4Y2VlZHMgbWF4U3RyaW5nTGVuZ3RoCiAgICAgIC8vICAgKGlnbm9yZSB0aGlzIGxpbWl0IGlmIHdlIGFyZSBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uKQogICAgICBpZiAobmV4dFN0ciA9PT0gJ2h0bWwnIHx8IChoZWlnaHQgPiAxICYmIGxlbiArIG91dC5sZW5ndGggKiBzZXBMZW5ndGggKyBuZXh0U3RyLmxlbmd0aCA+PSBtYXhTdHJpbmdMZW5ndGgpKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIG91dC5wdXNoKG5leHRTdHIpOwoKICAgICAgbGVuICs9IG5leHRTdHIubGVuZ3RoOwogICAgICBjdXJyZW50RWxlbSA9IGN1cnJlbnRFbGVtLnBhcmVudE5vZGU7CiAgICB9CgogICAgcmV0dXJuIG91dC5yZXZlcnNlKCkuam9pbihzZXBhcmF0b3IpOwogIH0gY2F0Y2ggKF9vTykgewogICAgcmV0dXJuICc8dW5rbm93bj4nOwogIH0KfQoKLyoqCiAqIFJldHVybnMgYSBzaW1wbGUsIHF1ZXJ5LXNlbGVjdG9yIHJlcHJlc2VudGF0aW9uIG9mIGEgRE9NIGVsZW1lbnQKICogZS5nLiBbSFRNTEVsZW1lbnRdID0+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gX2h0bWxFbGVtZW50QXNTdHJpbmcoZWwsIGtleUF0dHJzKSB7CiAgY29uc3QgZWxlbSA9IGVsCgo7CgogIGNvbnN0IG91dCA9IFtdOwogIGxldCBjbGFzc05hbWU7CiAgbGV0IGNsYXNzZXM7CiAgbGV0IGtleTsKICBsZXQgYXR0cjsKICBsZXQgaTsKCiAgaWYgKCFlbGVtIHx8ICFlbGVtLnRhZ05hbWUpIHsKICAgIHJldHVybiAnJzsKICB9CgogIC8vIEB0cy1leHBlY3QtZXJyb3IgV0lORE9XIGhhcyBIVE1MRWxlbWVudAogIGlmIChXSU5ET1cuSFRNTEVsZW1lbnQpIHsKICAgIC8vIElmIHVzaW5nIHRoZSBjb21wb25lbnQgbmFtZSBhbm5vdGF0aW9uIHBsdWdpbiwgdGhpcyB2YWx1ZSBtYXkgYmUgYXZhaWxhYmxlIG9uIHRoZSBET00gbm9kZQogICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBlbGVtLmRhdGFzZXQgJiYgZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXSkgewogICAgICByZXR1cm4gZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXTsKICAgIH0KICB9CgogIG91dC5wdXNoKGVsZW0udGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKCiAgLy8gUGFpcnMgb2YgYXR0cmlidXRlIGtleXMgZGVmaW5lZCBpbiBgc2VyaWFsaXplQXR0cmlidXRlYCBhbmQgdGhlaXIgdmFsdWVzIG9uIGVsZW1lbnQuCiAgY29uc3Qga2V5QXR0clBhaXJzID0KICAgIGtleUF0dHJzICYmIGtleUF0dHJzLmxlbmd0aAogICAgICA/IGtleUF0dHJzLmZpbHRlcihrZXlBdHRyID0+IGVsZW0uZ2V0QXR0cmlidXRlKGtleUF0dHIpKS5tYXAoa2V5QXR0ciA9PiBba2V5QXR0ciwgZWxlbS5nZXRBdHRyaWJ1dGUoa2V5QXR0cildKQogICAgICA6IG51bGw7CgogIGlmIChrZXlBdHRyUGFpcnMgJiYga2V5QXR0clBhaXJzLmxlbmd0aCkgewogICAga2V5QXR0clBhaXJzLmZvckVhY2goa2V5QXR0clBhaXIgPT4gewogICAgICBvdXQucHVzaChgWyR7a2V5QXR0clBhaXJbMF19PSIke2tleUF0dHJQYWlyWzFdfSJdYCk7CiAgICB9KTsKICB9IGVsc2UgewogICAgaWYgKGVsZW0uaWQpIHsKICAgICAgb3V0LnB1c2goYCMke2VsZW0uaWR9YCk7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdAogICAgY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWU7CiAgICBpZiAoY2xhc3NOYW1lICYmIGlzU3RyaW5nKGNsYXNzTmFtZSkpIHsKICAgICAgY2xhc3NlcyA9IGNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3V0LnB1c2goYC4ke2NsYXNzZXNbaV19YCk7CiAgICAgIH0KICAgIH0KICB9CiAgY29uc3QgYWxsb3dlZEF0dHJzID0gWydhcmlhLWxhYmVsJywgJ3R5cGUnLCAnbmFtZScsICd0aXRsZScsICdhbHQnXTsKICBmb3IgKGkgPSAwOyBpIDwgYWxsb3dlZEF0dHJzLmxlbmd0aDsgaSsrKSB7CiAgICBrZXkgPSBhbGxvd2VkQXR0cnNbaV07CiAgICBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoa2V5KTsKICAgIGlmIChhdHRyKSB7CiAgICAgIG91dC5wdXNoKGBbJHtrZXl9PSIke2F0dHJ9Il1gKTsKICAgIH0KICB9CiAgcmV0dXJuIG91dC5qb2luKCcnKTsKfQoKLyoqCiAqIFRoaXMgc2VydmVzIGFzIGEgYnVpbGQgdGltZSBmbGFnIHRoYXQgd2lsbCBiZSB0cnVlIGJ5IGRlZmF1bHQsIGJ1dCBmYWxzZSBpbiBub24tZGVidWcgYnVpbGRzIG9yIGlmIHVzZXJzIHJlcGxhY2UgYF9fU0VOVFJZX0RFQlVHX19gIGluIHRoZWlyIGdlbmVyYXRlZCBjb2RlLgogKgogKiBBVFRFTlRJT046IFRoaXMgY29uc3RhbnQgbXVzdCBuZXZlciBjcm9zcyBwYWNrYWdlIGJvdW5kYXJpZXMgKGkuZS4gYmUgZXhwb3J0ZWQpIHRvIGd1YXJhbnRlZSB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciB0cmVlIHNoYWtpbmcuCiAqLwpjb25zdCBERUJVR19CVUlMRCQxID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCi8qKiBQcmVmaXggZm9yIGxvZ2dpbmcgc3RyaW5ncyAqLwpjb25zdCBQUkVGSVggPSAnU2VudHJ5IExvZ2dlciAnOwoKY29uc3QgQ09OU09MRV9MRVZFTFMgPSBbCiAgJ2RlYnVnJywKICAnaW5mbycsCiAgJ3dhcm4nLAogICdlcnJvcicsCiAgJ2xvZycsCiAgJ2Fzc2VydCcsCiAgJ3RyYWNlJywKXSA7CgovKiogVGhpcyBtYXkgYmUgbXV0YXRlZCBieSB0aGUgY29uc29sZSBpbnN0cnVtZW50YXRpb24uICovCmNvbnN0IG9yaWdpbmFsQ29uc29sZU1ldGhvZHMKCiA9IHt9OwoKLyoqIEpTRG9jICovCgovKioKICogVGVtcG9yYXJpbHkgZGlzYWJsZSBzZW50cnkgY29uc29sZSBpbnN0cnVtZW50YXRpb25zLgogKgogKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIHJ1biBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBgY29uc29sZWAgbWVzc2FnZXMKICogQHJldHVybnMgVGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrCiAqLwpmdW5jdGlvbiBjb25zb2xlU2FuZGJveChjYWxsYmFjaykgewogIGlmICghKCdjb25zb2xlJyBpbiBHTE9CQUxfT0JKKSkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfQoKICBjb25zdCBjb25zb2xlID0gR0xPQkFMX09CSi5jb25zb2xlIDsKICBjb25zdCB3cmFwcGVkRnVuY3MgPSB7fTsKCiAgY29uc3Qgd3JhcHBlZExldmVscyA9IE9iamVjdC5rZXlzKG9yaWdpbmFsQ29uc29sZU1ldGhvZHMpIDsKCiAgLy8gUmVzdG9yZSBhbGwgd3JhcHBlZCBjb25zb2xlIG1ldGhvZHMKICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgY29uc3Qgb3JpZ2luYWxDb25zb2xlTWV0aG9kID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kc1tsZXZlbF0gOwogICAgd3JhcHBlZEZ1bmNzW2xldmVsXSA9IGNvbnNvbGVbbGV2ZWxdIDsKICAgIGNvbnNvbGVbbGV2ZWxdID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kOwogIH0pOwoKICB0cnkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfSBmaW5hbGx5IHsKICAgIC8vIFJldmVydCByZXN0b3JhdGlvbiB0byB3cmFwcGVkIHN0YXRlCiAgICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgICBjb25zb2xlW2xldmVsXSA9IHdyYXBwZWRGdW5jc1tsZXZlbF0gOwogICAgfSk7CiAgfQp9CgpmdW5jdGlvbiBtYWtlTG9nZ2VyKCkgewogIGxldCBlbmFibGVkID0gZmFsc2U7CiAgY29uc3QgbG9nZ2VyID0gewogICAgZW5hYmxlOiAoKSA9PiB7CiAgICAgIGVuYWJsZWQgPSB0cnVlOwogICAgfSwKICAgIGRpc2FibGU6ICgpID0+IHsKICAgICAgZW5hYmxlZCA9IGZhbHNlOwogICAgfSwKICAgIGlzRW5hYmxlZDogKCkgPT4gZW5hYmxlZCwKICB9OwoKICBpZiAoREVCVUdfQlVJTEQkMSkgewogICAgQ09OU09MRV9MRVZFTFMuZm9yRWFjaChuYW1lID0+IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgICAgbG9nZ2VyW25hbWVdID0gKC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICAgY29uc29sZVNhbmRib3goKCkgPT4gewogICAgICAgICAgICBHTE9CQUxfT0JKLmNvbnNvbGVbbmFtZV0oYCR7UFJFRklYfVske25hbWV9XTpgLCAuLi5hcmdzKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfTsKICAgIH0pOwogIH0gZWxzZSB7CiAgICBDT05TT0xFX0xFVkVMUy5mb3JFYWNoKG5hbWUgPT4gewogICAgICBsb2dnZXJbbmFtZV0gPSAoKSA9PiB1bmRlZmluZWQ7CiAgICB9KTsKICB9CgogIHJldHVybiBsb2dnZXIgOwp9Cgpjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKCk7CgovKioKICogUmVuZGVycyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHNuLgogKgogKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcmVuZGVyIHRoZSBwdWJsaWMgcmVwcmVzZW50YXRpb24gd2l0aG91dCB0aGUgcGFzc3dvcmQKICogY29tcG9uZW50LiBUbyBnZXQgdGhlIGRlcHJlY2F0ZWQgcHJpdmF0ZSByZXByZXNlbnRhdGlvbiwgc2V0IGB3aXRoUGFzc3dvcmRgCiAqIHRvIHRydWUuCiAqCiAqIEBwYXJhbSB3aXRoUGFzc3dvcmQgV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHBhc3N3b3JkIHdpbGwgYmUgaW5jbHVkZWQuCiAqLwpmdW5jdGlvbiBkc25Ub1N0cmluZyhkc24sIHdpdGhQYXNzd29yZCA9IGZhbHNlKSB7CiAgY29uc3QgeyBob3N0LCBwYXRoLCBwYXNzLCBwb3J0LCBwcm9qZWN0SWQsIHByb3RvY29sLCBwdWJsaWNLZXkgfSA9IGRzbjsKICByZXR1cm4gKAogICAgYCR7cHJvdG9jb2x9Oi8vJHtwdWJsaWNLZXl9JHt3aXRoUGFzc3dvcmQgJiYgcGFzcyA/IGA6JHtwYXNzfWAgOiAnJ31gICsKICAgIGBAJHtob3N0fSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30vJHtwYXRoID8gYCR7cGF0aH0vYCA6IHBhdGh9JHtwcm9qZWN0SWR9YAogICk7Cn0KCi8qKiBBbiBlcnJvciBlbWl0dGVkIGJ5IFNlbnRyeSBTREtzIGFuZCByZWxhdGVkIHV0aWxpdGllcy4gKi8KY2xhc3MgU2VudHJ5RXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGlzIGVycm9yIGluc3RhbmNlLiAqLwoKICAgY29uc3RydWN0b3IoIG1lc3NhZ2UsIGxvZ0xldmVsID0gJ3dhcm4nKSB7CiAgICBzdXBlcihtZXNzYWdlKTt0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgdGhpcy5uYW1lID0gbmV3LnRhcmdldC5wcm90b3R5cGUuY29uc3RydWN0b3IubmFtZTsKICAgIC8vIFRoaXMgc2V0cyB0aGUgcHJvdG90eXBlIHRvIGJlIGBFcnJvcmAsIG5vdCBgU2VudHJ5RXJyb3JgLiBJdCdzIHVuY2xlYXIgd2h5IHdlIGRvIHRoaXMsIGJ1dCBjb21tZW50aW5nIHRoaXMgbGluZQogICAgLy8gb3V0IGNhdXNlcyB2YXJpb3VzIChzZWVtaW5nbHkgdG90YWxseSB1bnJlbGF0ZWQpIHBsYXl3cmlnaHQgdGVzdHMgY29uc2lzdGVudGx5IHRpbWUgb3V0LiBGWUksIHRoaXMgbWFrZXMKICAgIC8vIGluc3RhbmNlcyBvZiBgU2VudHJ5RXJyb3JgIGZhaWwgYG9iaiBpbnN0YW5jZW9mIFNlbnRyeUVycm9yYCBjaGVja3MuCiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOwogICAgdGhpcy5sb2dMZXZlbCA9IGxvZ0xldmVsOwogIH0KfQoKLyoqCiAqIEVuY29kZXMgZ2l2ZW4gb2JqZWN0IGludG8gdXJsLWZyaWVuZGx5IGZvcm1hdAogKgogKiBAcGFyYW0gb2JqZWN0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHNlcmlhbGl6YWJsZSB2YWx1ZXMKICogQHJldHVybnMgc3RyaW5nIEVuY29kZWQKICovCmZ1bmN0aW9uIHVybEVuY29kZShvYmplY3QpIHsKICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KQogICAgLm1hcChrZXkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9iamVjdFtrZXldKX1gKQogICAgLmpvaW4oJyYnKTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYW55IGBFcnJvcmAgb3IgYEV2ZW50YCBpbnRvIGEgcGxhaW4gb2JqZWN0IHdpdGggYWxsIG9mIHRoZWlyIGVudW1lcmFibGUgcHJvcGVydGllcywgYW5kIHNvbWUgb2YgdGhlaXIKICogbm9uLWVudW1lcmFibGUgcHJvcGVydGllcyBhdHRhY2hlZC4KICoKICogQHBhcmFtIHZhbHVlIEluaXRpYWwgc291cmNlIHRoYXQgd2UgaGF2ZSB0byB0cmFuc2Zvcm0gaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHVzYWJsZSBieSB0aGUgc2VyaWFsaXplcgogKiBAcmV0dXJucyBBbiBFdmVudCBvciBFcnJvciB0dXJuZWQgaW50byBhbiBvYmplY3QgLSBvciB0aGUgdmFsdWUgYXJndXJtZW50IGl0c2VsZiwgd2hlbiB2YWx1ZSBpcyBuZWl0aGVyIGFuIEV2ZW50IG5vcgogKiAgYW4gRXJyb3IuCiAqLwpmdW5jdGlvbiBjb252ZXJ0VG9QbGFpbk9iamVjdCgKICB2YWx1ZSwKKQoKIHsKICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKICAgIHJldHVybiB7CiAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsCiAgICAgIG5hbWU6IHZhbHVlLm5hbWUsCiAgICAgIHN0YWNrOiB2YWx1ZS5zdGFjaywKICAgICAgLi4uZ2V0T3duUHJvcGVydGllcyh2YWx1ZSksCiAgICB9OwogIH0gZWxzZSBpZiAoaXNFdmVudCh2YWx1ZSkpIHsKICAgIGNvbnN0IG5ld09iagoKID0gewogICAgICB0eXBlOiB2YWx1ZS50eXBlLAogICAgICB0YXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLnRhcmdldCksCiAgICAgIGN1cnJlbnRUYXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLmN1cnJlbnRUYXJnZXQpLAogICAgICAuLi5nZXRPd25Qcm9wZXJ0aWVzKHZhbHVlKSwKICAgIH07CgogICAgaWYgKHR5cGVvZiBDdXN0b21FdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHZhbHVlLCBDdXN0b21FdmVudCkpIHsKICAgICAgbmV3T2JqLmRldGFpbCA9IHZhbHVlLmRldGFpbDsKICAgIH0KCiAgICByZXR1cm4gbmV3T2JqOwogIH0gZWxzZSB7CiAgICByZXR1cm4gdmFsdWU7CiAgfQp9CgovKiogQ3JlYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGFyZ2V0IG9mIGFuIGBFdmVudGAgb2JqZWN0ICovCmZ1bmN0aW9uIHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHRhcmdldCkgewogIHRyeSB7CiAgICByZXR1cm4gaXNFbGVtZW50KHRhcmdldCkgPyBodG1sVHJlZUFzU3RyaW5nKHRhcmdldCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGFyZ2V0KTsKICB9IGNhdGNoIChfb08pIHsKICAgIHJldHVybiAnPHVua25vd24+JzsKICB9Cn0KCi8qKiBGaWx0ZXJzIG91dCBhbGwgYnV0IGFuIG9iamVjdCdzIG93biBwcm9wZXJ0aWVzICovCmZ1bmN0aW9uIGdldE93blByb3BlcnRpZXMob2JqKSB7CiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkgewogICAgY29uc3QgZXh0cmFjdGVkUHJvcHMgPSB7fTsKICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqKSB7CiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wZXJ0eSkpIHsKICAgICAgICBleHRyYWN0ZWRQcm9wc1twcm9wZXJ0eV0gPSAob2JqIClbcHJvcGVydHldOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZXh0cmFjdGVkUHJvcHM7CiAgfSBlbHNlIHsKICAgIHJldHVybiB7fTsKICB9Cn0KCi8qKgogKiBHaXZlbiBhbnkgb2JqZWN0LCByZXR1cm4gYSBuZXcgb2JqZWN0IGhhdmluZyByZW1vdmVkIGFsbCBmaWVsZHMgd2hvc2UgdmFsdWUgd2FzIGB1bmRlZmluZWRgLgogKiBXb3JrcyByZWN1cnNpdmVseSBvbiBvYmplY3RzIGFuZCBhcnJheXMuCiAqCiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBrZWVwcyBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSByZXR1cm5lZCBvYmplY3QuCiAqLwpmdW5jdGlvbiBkcm9wVW5kZWZpbmVkS2V5cyhpbnB1dFZhbHVlKSB7CiAgLy8gVGhpcyBtYXAga2VlcHMgdHJhY2sgb2Ygd2hhdCBhbHJlYWR5IHZpc2l0ZWQgbm9kZXMgbWFwIHRvLgogIC8vIE91ciBTZXQgLSBiYXNlZCBtZW1vQnVpbGRlciBkb2Vzbid0IHdvcmsgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gdGhlIG91dHB1dCBvYmplY3QgdG8gaGF2ZSB0aGUgc2FtZSBjaXJjdWxhcgogIC8vIHJlZmVyZW5jZXMgYXMgdGhlIGlucHV0IG9iamVjdC4KICBjb25zdCBtZW1vaXphdGlvbk1hcCA9IG5ldyBNYXAoKTsKCiAgLy8gVGhpcyBmdW5jdGlvbiBqdXN0IHByb3hpZXMgYF9kcm9wVW5kZWZpbmVkS2V5c2AgdG8ga2VlcCB0aGUgYG1lbW9CdWlsZGVyYCBvdXQgb2YgdGhpcyBmdW5jdGlvbidzIEFQSQogIHJldHVybiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApOwp9CgpmdW5jdGlvbiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApIHsKICBpZiAoaXNQb2pvKGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBvYmplY3QgaXQgd2FzIG1hcHBlZCB0byBpbiB0aGUgbmV3IG9iamVjdAogICAgY29uc3QgbWVtb1ZhbCA9IG1lbW9pemF0aW9uTWFwLmdldChpbnB1dFZhbHVlKTsKICAgIGlmIChtZW1vVmFsICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIG1lbW9WYWwgOwogICAgfQoKICAgIGNvbnN0IHJldHVyblZhbHVlID0ge307CiAgICAvLyBTdG9yZSB0aGUgbWFwcGluZyBvZiB0aGlzIHZhbHVlIGluIGNhc2Ugd2UgdmlzaXQgaXQgYWdhaW4sIGluIGNhc2Ugb2YgY2lyY3VsYXIgZGF0YQogICAgbWVtb2l6YXRpb25NYXAuc2V0KGlucHV0VmFsdWUsIHJldHVyblZhbHVlKTsKCiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbnB1dFZhbHVlKSkgewogICAgICBpZiAodHlwZW9mIGlucHV0VmFsdWVba2V5XSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICByZXR1cm5WYWx1ZVtrZXldID0gX2Ryb3BVbmRlZmluZWRLZXlzKGlucHV0VmFsdWVba2V5XSwgbWVtb2l6YXRpb25NYXApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIGlmIChBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBhcnJheSBpdCB3YXMgbWFwcGVkIHRvIGluIHRoZSBuZXcgb2JqZWN0CiAgICBjb25zdCBtZW1vVmFsID0gbWVtb2l6YXRpb25NYXAuZ2V0KGlucHV0VmFsdWUpOwogICAgaWYgKG1lbW9WYWwgIT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm4gbWVtb1ZhbCA7CiAgICB9CgogICAgY29uc3QgcmV0dXJuVmFsdWUgPSBbXTsKICAgIC8vIFN0b3JlIHRoZSBtYXBwaW5nIG9mIHRoaXMgdmFsdWUgaW4gY2FzZSB3ZSB2aXNpdCBpdCBhZ2FpbiwgaW4gY2FzZSBvZiBjaXJjdWxhciBkYXRhCiAgICBtZW1vaXphdGlvbk1hcC5zZXQoaW5wdXRWYWx1ZSwgcmV0dXJuVmFsdWUpOwoKICAgIGlucHV0VmFsdWUuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgICByZXR1cm5WYWx1ZS5wdXNoKF9kcm9wVW5kZWZpbmVkS2V5cyhpdGVtLCBtZW1vaXphdGlvbk1hcCkpOwogICAgfSk7CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIHJldHVybiBpbnB1dFZhbHVlOwp9CgpmdW5jdGlvbiBpc1Bvam8oaW5wdXQpIHsKICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXQpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICB0cnkgewogICAgY29uc3QgbmFtZSA9IChPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXQpICkuY29uc3RydWN0b3IubmFtZTsKICAgIHJldHVybiAhbmFtZSB8fCBuYW1lID09PSAnT2JqZWN0JzsKICB9IGNhdGNoIChlKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn0KCi8qKgogKiBEb2VzIHRoaXMgZmlsZW5hbWUgbG9vayBsaWtlIGl0J3MgcGFydCBvZiB0aGUgYXBwIGNvZGU/CiAqLwpmdW5jdGlvbiBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUsIGlzTmF0aXZlID0gZmFsc2UpIHsKICBjb25zdCBpc0ludGVybmFsID0KICAgIGlzTmF0aXZlIHx8CiAgICAoZmlsZW5hbWUgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSBsaW51eCBwYXRoCiAgICAgICFmaWxlbmFtZS5zdGFydHNXaXRoKCcvJykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSB3aW5kb3dzIHBhdGgKICAgICAgIWZpbGVuYW1lLm1hdGNoKC9eW0EtWl06LykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgdGhlIHBhdGggaXMgc3RhcnRpbmcgd2l0aCBhIGRvdAogICAgICAhZmlsZW5hbWUuc3RhcnRzV2l0aCgnLicpICYmCiAgICAgIC8vIEl0J3Mgbm90IGludGVybmFsIGlmIHRoZSBmcmFtZSBoYXMgYSBwcm90b2NvbC4gSW4gbm9kZSwgdGhpcyBpcyB1c3VhbGx5IHRoZSBjYXNlIGlmIHRoZSBmaWxlIGdvdCBwcmUtcHJvY2Vzc2VkIHdpdGggYSBidW5kbGVyIGxpa2Ugd2VicGFjawogICAgICAhZmlsZW5hbWUubWF0Y2goL15bYS16QS1aXShbYS16QS1aMC05LlwtK10pKjpcL1wvLykpOyAvLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM2NDE3ODIKCiAgLy8gaW5fYXBwIGlzIGFsbCB0aGF0J3Mgbm90IGFuIGludGVybmFsIE5vZGUgZnVuY3Rpb24gb3IgYSBtb2R1bGUgd2l0aGluIG5vZGVfbW9kdWxlcwogIC8vIG5vdGUgdGhhdCBpc05hdGl2ZSBhcHBlYXJzIHRvIHJldHVybiB0cnVlIGV2ZW4gZm9yIG5vZGUgY29yZSBsaWJyYXJpZXMKICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9yYXZlbi1ub2RlL2lzc3Vlcy8xNzYKCiAgcmV0dXJuICFpc0ludGVybmFsICYmIGZpbGVuYW1lICE9PSB1bmRlZmluZWQgJiYgIWZpbGVuYW1lLmluY2x1ZGVzKCdub2RlX21vZHVsZXMvJyk7Cn0KCmNvbnN0IFNUQUNLVFJBQ0VfRlJBTUVfTElNSVQgPSA1MDsKY29uc3QgU1RSSVBfRlJBTUVfUkVHRVhQID0gL2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vOwoKLyoqCiAqIFJlbW92ZXMgU2VudHJ5IGZyYW1lcyBmcm9tIHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgc3RhY2sgaWYgcHJlc2VudCBhbmQgZW5mb3JjZXMgYSBsaW1pdCBvZiBtYXggbnVtYmVyIG9mIGZyYW1lcy4KICogQXNzdW1lcyBzdGFjayBpbnB1dCBpcyBvcmRlcmVkIGZyb20gdG9wIHRvIGJvdHRvbSBhbmQgcmV0dXJucyB0aGUgcmV2ZXJzZSByZXByZXNlbnRhdGlvbiBzbyBjYWxsIHNpdGUgb2YgdGhlCiAqIGZ1bmN0aW9uIHRoYXQgY2F1c2VkIHRoZSBjcmFzaCBpcyB0aGUgbGFzdCBmcmFtZSBpbiB0aGUgYXJyYXkuCiAqIEBoaWRkZW4KICovCmZ1bmN0aW9uIHN0cmlwU2VudHJ5RnJhbWVzQW5kUmV2ZXJzZShzdGFjaykgewogIGlmICghc3RhY2subGVuZ3RoKSB7CiAgICByZXR1cm4gW107CiAgfQoKICBjb25zdCBsb2NhbFN0YWNrID0gQXJyYXkuZnJvbShzdGFjayk7CgogIC8vIElmIHN0YWNrIHN0YXJ0cyB3aXRoIG9uZSBvZiBvdXIgQVBJIGNhbGxzLCByZW1vdmUgaXQgKHN0YXJ0cywgbWVhbmluZyBpdCdzIHRoZSB0b3Agb2YgdGhlIHN0YWNrIC0gYWthIGxhc3QgY2FsbCkKICBpZiAoL3NlbnRyeVdyYXBwZWQvLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgbG9jYWxTdGFjay5wb3AoKTsKICB9CgogIC8vIFJldmVyc2luZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcm9jZWR1cmUgYWxsb3dzIHVzIHRvIGp1c3QgcG9wIHRoZSB2YWx1ZXMgb2ZmIHRoZSBzdGFjawogIGxvY2FsU3RhY2sucmV2ZXJzZSgpOwoKICAvLyBJZiBzdGFjayBlbmRzIHdpdGggb25lIG9mIG91ciBpbnRlcm5hbCBBUEkgY2FsbHMsIHJlbW92ZSBpdCAoZW5kcywgbWVhbmluZyBpdCdzIHRoZSBib3R0b20gb2YgdGhlIHN0YWNrIC0gYWthIHRvcC1tb3N0IGNhbGwpCiAgaWYgKFNUUklQX0ZSQU1FX1JFR0VYUC50ZXN0KGxvY2FsU3RhY2tbbG9jYWxTdGFjay5sZW5ndGggLSAxXS5mdW5jdGlvbiB8fCAnJykpIHsKICAgIGxvY2FsU3RhY2sucG9wKCk7CgogICAgLy8gV2hlbiB1c2luZyBzeW50aGV0aWMgZXZlbnRzLCB3ZSB3aWxsIGhhdmUgYSAyIGxldmVscyBkZWVwIHN0YWNrLCBhcyBgbmV3IEVycm9yKCdTZW50cnkgc3ludGhldGljRXhjZXB0aW9uJylgCiAgICAvLyBpcyBwcm9kdWNlZCB3aXRoaW4gdGhlIGh1YiBpdHNlbGYsIG1ha2luZyBpdDoKICAgIC8vCiAgICAvLyAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKCkKICAgIC8vICAgZ2V0Q3VycmVudEh1YigpLmNhcHR1cmVFeGNlcHRpb24oKQogICAgLy8KICAgIC8vIGluc3RlYWQgb2YganVzdCB0aGUgdG9wIGBTZW50cnlgIGNhbGwgaXRzZWxmLgogICAgLy8gVGhpcyBmb3JjZXMgdXMgdG8gcG9zc2libHkgc3RyaXAgYW4gYWRkaXRpb25hbCBmcmFtZSBpbiB0aGUgZXhhY3Qgc2FtZSB3YXMgYXMgYWJvdmUuCiAgICBpZiAoU1RSSVBfRlJBTUVfUkVHRVhQLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgICBsb2NhbFN0YWNrLnBvcCgpOwogICAgfQogIH0KCiAgcmV0dXJuIGxvY2FsU3RhY2suc2xpY2UoMCwgU1RBQ0tUUkFDRV9GUkFNRV9MSU1JVCkubWFwKGZyYW1lID0+ICh7CiAgICAuLi5mcmFtZSwKICAgIGZpbGVuYW1lOiBmcmFtZS5maWxlbmFtZSB8fCBsb2NhbFN0YWNrW2xvY2FsU3RhY2subGVuZ3RoIC0gMV0uZmlsZW5hbWUsCiAgICBmdW5jdGlvbjogZnJhbWUuZnVuY3Rpb24gfHwgJz8nLAogIH0pKTsKfQoKY29uc3QgZGVmYXVsdEZ1bmN0aW9uTmFtZSA9ICc8YW5vbnltb3VzPic7CgovKioKICogU2FmZWx5IGV4dHJhY3QgZnVuY3Rpb24gbmFtZSBmcm9tIGl0c2VsZgogKi8KZnVuY3Rpb24gZ2V0RnVuY3Rpb25OYW1lKGZuKSB7CiAgdHJ5IHsKICAgIGlmICghZm4gfHwgdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogICAgfQogICAgcmV0dXJuIGZuLm5hbWUgfHwgZGVmYXVsdEZ1bmN0aW9uTmFtZTsKICB9IGNhdGNoIChlKSB7CiAgICAvLyBKdXN0IGFjY2Vzc2luZyBjdXN0b20gcHJvcHMgaW4gc29tZSBTZWxlbml1bSBlbnZpcm9ubWVudHMKICAgIC8vIGNhbiBjYXVzZSBhICJQZXJtaXNzaW9uIGRlbmllZCIgZXhjZXB0aW9uIChzZWUgcmF2ZW4tanMjNDk1KS4KICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogIH0KfQoKLyoqCiAqIFVVSUQ0IGdlbmVyYXRvcgogKgogKiBAcmV0dXJucyBzdHJpbmcgR2VuZXJhdGVkIFVVSUQ0LgogKi8KZnVuY3Rpb24gdXVpZDQoKSB7CiAgY29uc3QgZ2JsID0gR0xPQkFMX09CSiA7CiAgY29uc3QgY3J5cHRvID0gZ2JsLmNyeXB0byB8fCBnYmwubXNDcnlwdG87CgogIGxldCBnZXRSYW5kb21CeXRlID0gKCkgPT4gTWF0aC5yYW5kb20oKSAqIDE2OwogIHRyeSB7CiAgICBpZiAoY3J5cHRvICYmIGNyeXB0by5yYW5kb21VVUlEKSB7CiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpLnJlcGxhY2UoLy0vZywgJycpOwogICAgfQogICAgaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7CiAgICAgIGdldFJhbmRvbUJ5dGUgPSAoKSA9PiB7CiAgICAgICAgLy8gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBtaWdodCByZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhlIHR5cGVkIGFycmF5CiAgICAgICAgLy8gaW4gb2xkIENocm9taXVtIHZlcnNpb25zIChlLmcuIDIzLjAuMTIzNS4wICgxNTE0MjIpKQogICAgICAgIC8vIEhvd2V2ZXIsIGB0eXBlZEFycmF5YCBpcyBzdGlsbCBmaWxsZWQgaW4tcGxhY2UuCiAgICAgICAgLy8gQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3J5cHRvL2dldFJhbmRvbVZhbHVlcyN0eXBlZGFycmF5CiAgICAgICAgY29uc3QgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KDEpOwogICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModHlwZWRBcnJheSk7CiAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlbMF07CiAgICAgIH07CiAgICB9CiAgfSBjYXRjaCAoXykgewogICAgLy8gc29tZSBydW50aW1lcyBjYW4gY3Jhc2ggaW52b2tpbmcgY3J5cHRvCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy84OTM1CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9ob3ctdG8tY3JlYXRlLWEtZ3VpZC11dWlkLWluLWphdmFzY3JpcHQvMjExNzUyMyMyMTE3NTIzCiAgLy8gQ29uY2F0ZW5hdGluZyB0aGUgZm9sbG93aW5nIG51bWJlcnMgYXMgc3RyaW5ncyByZXN1bHRzIGluICcxMDAwMDAwMDEwMDA0MDAwODAwMDEwMDAwMDAwMDAwMCcKICByZXR1cm4gKChbMWU3XSApICsgMWUzICsgNGUzICsgOGUzICsgMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgYyA9PgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UKICAgICgoYyApIF4gKChnZXRSYW5kb21CeXRlKCkgJiAxNSkgPj4gKChjICkgLyA0KSkpLnRvU3RyaW5nKDE2KSwKICApOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGlucHV0IGlzIGFscmVhZHkgYW4gYXJyYXksIGFuZCBpZiBpdCBpc24ndCwgd3JhcHMgaXQgaW4gb25lLgogKgogKiBAcGFyYW0gbWF5YmVBcnJheSBJbnB1dCB0byB0dXJuIGludG8gYW4gYXJyYXksIGlmIG5lY2Vzc2FyeQogKiBAcmV0dXJucyBUaGUgaW5wdXQsIGlmIGFscmVhZHkgYW4gYXJyYXksIG9yIGFuIGFycmF5IHdpdGggdGhlIGlucHV0IGFzIHRoZSBvbmx5IGVsZW1lbnQsIGlmIG5vdAogKi8KZnVuY3Rpb24gYXJyYXlpZnkobWF5YmVBcnJheSkgewogIHJldHVybiBBcnJheS5pc0FycmF5KG1heWJlQXJyYXkpID8gbWF5YmVBcnJheSA6IFttYXliZUFycmF5XTsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzICovCi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi8KCi8qKgogKiBIZWxwZXIgdG8gZGVjeWNsZSBqc29uIG9iamVjdHMKICovCmZ1bmN0aW9uIG1lbW9CdWlsZGVyKCkgewogIGNvbnN0IGhhc1dlYWtTZXQgPSB0eXBlb2YgV2Vha1NldCA9PT0gJ2Z1bmN0aW9uJzsKICBjb25zdCBpbm5lciA9IGhhc1dlYWtTZXQgPyBuZXcgV2Vha1NldCgpIDogW107CiAgZnVuY3Rpb24gbWVtb2l6ZShvYmopIHsKICAgIGlmIChoYXNXZWFrU2V0KSB7CiAgICAgIGlmIChpbm5lci5oYXMob2JqKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIGlubmVyLmFkZChvYmopOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2YKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHsKICAgICAgY29uc3QgdmFsdWUgPSBpbm5lcltpXTsKICAgICAgaWYgKHZhbHVlID09PSBvYmopIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQogICAgaW5uZXIucHVzaChvYmopOwogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gdW5tZW1vaXplKG9iaikgewogICAgaWYgKGhhc1dlYWtTZXQpIHsKICAgICAgaW5uZXIuZGVsZXRlKG9iaik7CiAgICB9IGVsc2UgewogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlubmVyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGlubmVyW2ldID09PSBvYmopIHsKICAgICAgICAgIGlubmVyLnNwbGljZShpLCAxKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICByZXR1cm4gW21lbW9pemUsIHVubWVtb2l6ZV07Cn0KCi8qKgogKiBSZWN1cnNpdmVseSBub3JtYWxpemVzIHRoZSBnaXZlbiBvYmplY3QuCiAqCiAqIC0gQ3JlYXRlcyBhIGNvcHkgdG8gcHJldmVudCBvcmlnaW5hbCBpbnB1dCBtdXRhdGlvbgogKiAtIFNraXBzIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMKICogLSBXaGVuIHN0cmluZ2lmeWluZywgY2FsbHMgYHRvSlNPTmAgaWYgaW1wbGVtZW50ZWQKICogLSBSZW1vdmVzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICogLSBUcmFuc2xhdGVzIG5vbi1zZXJpYWxpemFibGUgdmFsdWVzIChgdW5kZWZpbmVkYC9gTmFOYC9mdW5jdGlvbnMpIHRvIHNlcmlhbGl6YWJsZSBmb3JtYXQKICogLSBUcmFuc2xhdGVzIGtub3duIGdsb2JhbCBvYmplY3RzL2NsYXNzZXMgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25zCiAqIC0gVGFrZXMgY2FyZSBvZiBgRXJyb3JgIG9iamVjdCBzZXJpYWxpemF0aW9uCiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgZGVwdGggb2YgZmluYWwgb3V0cHV0CiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgbnVtYmVyIG9mIHByb3BlcnRpZXMvZWxlbWVudHMgaW5jbHVkZWQgaW4gYW55IHNpbmdsZSBvYmplY3QvYXJyYXkKICoKICogQHBhcmFtIGlucHV0IFRoZSBvYmplY3QgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGRlcHRoIFRoZSBtYXggZGVwdGggdG8gd2hpY2ggdG8gbm9ybWFsaXplIHRoZSBvYmplY3QuIChBbnl0aGluZyBkZWVwZXIgc3RyaW5naWZpZWQgd2hvbGUuKQogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBvciBwcm9wZXJ0aWVzIHRvIGJlIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgYXJyYXkgb3IKICogb2JqZWN0IGluIHRoZSBub3JtYWxsaXplZCBvdXRwdXQuCiAqIEByZXR1cm5zIEEgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QsIG9yIGAiKipub24tc2VyaWFsaXphYmxlKioiYCBpZiBhbnkgZXJyb3JzIGFyZSB0aHJvd24gZHVyaW5nIG5vcm1hbGl6YXRpb24uCiAqLwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQpmdW5jdGlvbiBub3JtYWxpemUoaW5wdXQsIGRlcHRoID0gMTAwLCBtYXhQcm9wZXJ0aWVzID0gK0luZmluaXR5KSB7CiAgdHJ5IHsKICAgIC8vIHNpbmNlIHdlJ3JlIGF0IHRoZSBvdXRlcm1vc3QgbGV2ZWwsIHdlIGRvbid0IHByb3ZpZGUgYSBrZXkKICAgIHJldHVybiB2aXNpdCgnJywgaW5wdXQsIGRlcHRoLCBtYXhQcm9wZXJ0aWVzKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiB7IEVSUk9SOiBgKipub24tc2VyaWFsaXphYmxlKiogKCR7ZXJyfSlgIH07CiAgfQp9CgovKioKICogVmlzaXRzIGEgbm9kZSB0byBwZXJmb3JtIG5vcm1hbGl6YXRpb24gb24gaXQKICoKICogQHBhcmFtIGtleSBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5vZGUKICogQHBhcmFtIHZhbHVlIFRoZSBub2RlIHRvIGJlIHZpc2l0ZWQKICogQHBhcmFtIGRlcHRoIE9wdGlvbmFsIG51bWJlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aAogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBPcHRpb25hbCBtYXhpbXVtIG51bWJlciBvZiBwcm9wZXJ0aWVzL2VsZW1lbnRzIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgb2JqZWN0L2FycmF5CiAqIEBwYXJhbSBtZW1vIE9wdGlvbmFsIE1lbW8gY2xhc3MgaGFuZGxpbmcgZGVjeWNsaW5nCiAqLwpmdW5jdGlvbiB2aXNpdCgKICBrZXksCiAgdmFsdWUsCiAgZGVwdGggPSArSW5maW5pdHksCiAgbWF4UHJvcGVydGllcyA9ICtJbmZpbml0eSwKICBtZW1vID0gbWVtb0J1aWxkZXIoKSwKKSB7CiAgY29uc3QgW21lbW9pemUsIHVubWVtb2l6ZV0gPSBtZW1vOwoKICAvLyBHZXQgdGhlIHNpbXBsZSBjYXNlcyBvdXQgb2YgdGhlIHdheSBmaXJzdAogIGlmICgKICAgIHZhbHVlID09IG51bGwgfHwgLy8gdGhpcyBtYXRjaGVzIG51bGwgYW5kIHVuZGVmaW5lZCAtPiBlcWVxIG5vdCBlcWVxZXEKICAgIChbJ251bWJlcicsICdib29sZWFuJywgJ3N0cmluZyddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkgJiYgIWlzTmFOJDEodmFsdWUpKQogICkgewogICAgcmV0dXJuIHZhbHVlIDsKICB9CgogIGNvbnN0IHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5VmFsdWUoa2V5LCB2YWx1ZSk7CgogIC8vIEFueXRoaW5nIHdlIGNvdWxkIHBvdGVudGlhbGx5IGRpZyBpbnRvIG1vcmUgKG9iamVjdHMgb3IgYXJyYXlzKSB3aWxsIGhhdmUgY29tZSBiYWNrIGFzIGAiW29iamVjdCBYWFhYXSJgLgogIC8vIEV2ZXJ5dGhpbmcgZWxzZSB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIHNlcmlhbGl6ZWQsIHNvIGlmIHdlIGRvbid0IHNlZSB0aGF0IHBhdHRlcm4sIHdlJ3JlIGRvbmUuCiAgaWYgKCFzdHJpbmdpZmllZC5zdGFydHNXaXRoKCdbb2JqZWN0ICcpKSB7CiAgICByZXR1cm4gc3RyaW5naWZpZWQ7CiAgfQoKICAvLyBGcm9tIGhlcmUgb24sIHdlIGNhbiBhc3NlcnQgdGhhdCBgdmFsdWVgIGlzIGVpdGhlciBhbiBvYmplY3Qgb3IgYW4gYXJyYXkuCgogIC8vIERvIG5vdCBub3JtYWxpemUgb2JqZWN0cyB0aGF0IHdlIGtub3cgaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gQXMgYSBnZW5lcmFsIHJ1bGUsIHRoZQogIC8vICJfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyIgcHJvcGVydHkgc2hvdWxkIG9ubHkgYmUgdXNlZCBzcGFyaW5nbHkgYW5kIG9ubHkgc2hvdWxkIG9ubHkgYmUgc2V0IG9uIG9iamVjdHMgdGhhdAogIC8vIGhhdmUgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuCiAgaWYgKCh2YWx1ZSApWydfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyddKSB7CiAgICByZXR1cm4gdmFsdWUgOwogIH0KCiAgLy8gV2UgY2FuIHNldCBgX19zZW50cnlfb3ZlcnJpZGVfbm9ybWFsaXphdGlvbl9kZXB0aF9fYCBvbiBhbiBvYmplY3QgdG8gZW5zdXJlIHRoYXQgZnJvbSB0aGVyZQogIC8vIFdlIGtlZXAgYSBjZXJ0YWluIGFtb3VudCBvZiBkZXB0aC4KICAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseSwgZS5nLiB3ZSB1c2UgaXQgZm9yIHRoZSByZWR1eCBpbnRlZ3JhdGlvbiB0byBlbnN1cmUgd2UgZ2V0IGEgY2VydGFpbiBhbW91bnQgb2Ygc3RhdGUuCiAgY29uc3QgcmVtYWluaW5nRGVwdGggPQogICAgdHlwZW9mICh2YWx1ZSApWydfX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18nXSA9PT0gJ251bWJlcicKICAgICAgPyAoKHZhbHVlIClbJ19fc2VudHJ5X292ZXJyaWRlX25vcm1hbGl6YXRpb25fZGVwdGhfXyddICkKICAgICAgOiBkZXB0aDsKCiAgLy8gV2UncmUgYWxzbyBkb25lIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIG1heCBkZXB0aAogIGlmIChyZW1haW5pbmdEZXB0aCA9PT0gMCkgewogICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGBzZXJpYWxpemVkYCBpcyBhIHN0cmluZyBvZiB0aGUgZm9ybSBgIltvYmplY3QgWFhYWF0iYC4gQ2xlYW4gaXQgdXAgc28gaXQncyBqdXN0IGAiW1hYWFhdImAuCiAgICByZXR1cm4gc3RyaW5naWZpZWQucmVwbGFjZSgnb2JqZWN0ICcsICcnKTsKICB9CgogIC8vIElmIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGlzIGJyYW5jaCwgYmFpbCBvdXQsIGFzIGl0J3MgY2lyY3VsYXIgcmVmZXJlbmNlLiBJZiBub3QsIG5vdGUgdGhhdCB3ZSdyZSBzZWVpbmcgaXQgbm93LgogIGlmIChtZW1vaXplKHZhbHVlKSkgewogICAgcmV0dXJuICdbQ2lyY3VsYXIgfl0nOwogIH0KCiAgLy8gSWYgdGhlIHZhbHVlIGhhcyBhIGB0b0pTT05gIG1ldGhvZCwgd2UgY2FsbCBpdCB0byBleHRyYWN0IG1vcmUgaW5mb3JtYXRpb24KICBjb25zdCB2YWx1ZVdpdGhUb0pTT04gPSB2YWx1ZSA7CiAgaWYgKHZhbHVlV2l0aFRvSlNPTiAmJiB0eXBlb2YgdmFsdWVXaXRoVG9KU09OLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgewogICAgdHJ5IHsKICAgICAgY29uc3QganNvblZhbHVlID0gdmFsdWVXaXRoVG9KU09OLnRvSlNPTigpOwogICAgICAvLyBXZSBuZWVkIHRvIG5vcm1hbGl6ZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGAudG9KU09OKClgIGluIGNhc2UgaXQgaGFzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgICAgcmV0dXJuIHZpc2l0KCcnLCBqc29uVmFsdWUsIHJlbWFpbmluZ0RlcHRoIC0gMSwgbWF4UHJvcGVydGllcywgbWVtbyk7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgLy8gcGFzcyAoVGhlIGJ1aWx0LWluIGB0b0pTT05gIGZhaWxlZCwgYnV0IHdlIGNhbiBzdGlsbCB0cnkgdG8gZG8gaXQgb3Vyc2VsdmVzKQogICAgfQogIH0KCiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHdlIGVpdGhlciBoYXZlIGFuIG9iamVjdCBvciBhbiBhcnJheSwgd2UgaGF2ZW4ndCBzZWVuIGl0IGJlZm9yZSwgYW5kIHdlJ3JlIGdvaW5nIHRvIHJlY3Vyc2UKICAvLyBiZWNhdXNlIHdlIGhhdmVuJ3QgeWV0IHJlYWNoZWQgdGhlIG1heCBkZXB0aC4gQ3JlYXRlIGFuIGFjY3VtdWxhdG9yIHRvIGhvbGQgdGhlIHJlc3VsdHMgb2YgdmlzaXRpbmcgZWFjaAogIC8vIHByb3BlcnR5L2VudHJ5LCBhbmQga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHdlIGFkZCB0byBpdC4KICBjb25zdCBub3JtYWxpemVkID0gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gW10gOiB7fSkgOwogIGxldCBudW1BZGRlZCA9IDA7CgogIC8vIEJlZm9yZSB3ZSBiZWdpbiwgY29udmVydGBFcnJvcmAgYW5kYEV2ZW50YCBpbnN0YW5jZXMgaW50byBwbGFpbiBvYmplY3RzLCBzaW5jZSBzb21lIG9mIGVhY2ggb2YgdGhlaXIgcmVsZXZhbnQKICAvLyBwcm9wZXJ0aWVzIGFyZSBub24tZW51bWVyYWJsZSBhbmQgb3RoZXJ3aXNlIHdvdWxkIGdldCBtaXNzZWQuCiAgY29uc3QgdmlzaXRhYmxlID0gY29udmVydFRvUGxhaW5PYmplY3QodmFsdWUgKTsKCiAgZm9yIChjb25zdCB2aXNpdEtleSBpbiB2aXNpdGFibGUpIHsKICAgIC8vIEF2b2lkIGl0ZXJhdGluZyBvdmVyIGZpZWxkcyBpbiB0aGUgcHJvdG90eXBlIGlmIHRoZXkndmUgc29tZWhvdyBiZWVuIGV4cG9zZWQgdG8gZW51bWVyYXRpb24uCiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2aXNpdGFibGUsIHZpc2l0S2V5KSkgewogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAobnVtQWRkZWQgPj0gbWF4UHJvcGVydGllcykgewogICAgICBub3JtYWxpemVkW3Zpc2l0S2V5XSA9ICdbTWF4UHJvcGVydGllcyB+XSc7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFJlY3Vyc2l2ZWx5IHZpc2l0IGFsbCB0aGUgY2hpbGQgbm9kZXMKICAgIGNvbnN0IHZpc2l0VmFsdWUgPSB2aXNpdGFibGVbdmlzaXRLZXldOwogICAgbm9ybWFsaXplZFt2aXNpdEtleV0gPSB2aXNpdCh2aXNpdEtleSwgdmlzaXRWYWx1ZSwgcmVtYWluaW5nRGVwdGggLSAxLCBtYXhQcm9wZXJ0aWVzLCBtZW1vKTsKCiAgICBudW1BZGRlZCsrOwogIH0KCiAgLy8gT25jZSB3ZSd2ZSB2aXNpdGVkIGFsbCB0aGUgYnJhbmNoZXMsIHJlbW92ZSB0aGUgcGFyZW50IGZyb20gbWVtbyBzdG9yYWdlCiAgdW5tZW1vaXplKHZhbHVlKTsKCiAgLy8gUmV0dXJuIGFjY3VtdWxhdGVkIHZhbHVlcwogIHJldHVybiBub3JtYWxpemVkOwp9CgovKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovCi8qKgogKiBTdHJpbmdpZnkgdGhlIGdpdmVuIHZhbHVlLiBIYW5kbGVzIHZhcmlvdXMga25vd24gc3BlY2lhbCB2YWx1ZXMgYW5kIHR5cGVzLgogKgogKiBOb3QgbWVhbnQgdG8gYmUgdXNlZCBvbiBzaW1wbGUgcHJpbWl0aXZlcyB3aGljaCBhbHJlYWR5IGhhdmUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24sIGFzIGl0IHdpbGwsIGZvciBleGFtcGxlLCB0dXJuCiAqIHRoZSBudW1iZXIgMTIzMSBpbnRvICJbT2JqZWN0IE51bWJlcl0iLCBub3Igb24gYG51bGxgLCBhcyBpdCB3aWxsIHRocm93LgogKgogKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHN0cmluZ2lmeQogKiBAcmV0dXJucyBBIHN0cmluZ2lmaWVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiB2YWx1ZQogKi8KZnVuY3Rpb24gc3RyaW5naWZ5VmFsdWUoCiAga2V5LAogIC8vIHRoaXMgdHlwZSBpcyBhIHRpbnkgYml0IG9mIGEgY2hlYXQsIHNpbmNlIHRoaXMgZnVuY3Rpb24gZG9lcyBoYW5kbGUgTmFOICh3aGljaCBpcyB0ZWNobmljYWxseSBhIG51bWJlciksIGJ1dCBmb3IKICAvLyBvdXIgaW50ZXJuYWwgdXNlLCBpdCdsbCBkbwogIHZhbHVlLAopIHsKICB0cnkgewogICAgaWYgKGtleSA9PT0gJ2RvbWFpbicgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAodmFsdWUgKS5fZXZlbnRzKSB7CiAgICAgIHJldHVybiAnW0RvbWFpbl0nOwogICAgfQoKICAgIGlmIChrZXkgPT09ICdkb21haW5FbWl0dGVyJykgewogICAgICByZXR1cm4gJ1tEb21haW5FbWl0dGVyXSc7CiAgICB9CgogICAgLy8gSXQncyBzYWZlIHRvIHVzZSBgZ2xvYmFsYCwgYHdpbmRvd2AsIGFuZCBgZG9jdW1lbnRgIGhlcmUgaW4gdGhpcyBtYW5uZXIsIGFzIHdlIGFyZSBhc3NlcnRpbmcgdXNpbmcgYHR5cGVvZmAgZmlyc3QKICAgIC8vIHdoaWNoIHdvbid0IHRocm93IGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgoKICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gZ2xvYmFsKSB7CiAgICAgIHJldHVybiAnW0dsb2JhbF0nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gd2luZG93KSB7CiAgICAgIHJldHVybiAnW1dpbmRvd10nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlID09PSBkb2N1bWVudCkgewogICAgICByZXR1cm4gJ1tEb2N1bWVudF0nOwogICAgfQoKICAgIGlmIChpc1Z1ZVZpZXdNb2RlbCh2YWx1ZSkpIHsKICAgICAgcmV0dXJuICdbVnVlVmlld01vZGVsXSc7CiAgICB9CgogICAgLy8gUmVhY3QncyBTeW50aGV0aWNFdmVudCB0aGluZ3kKICAgIGlmIChpc1N5bnRoZXRpY0V2ZW50KHZhbHVlKSkgewogICAgICByZXR1cm4gJ1tTeW50aGV0aWNFdmVudF0nOwogICAgfQoKICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSB2YWx1ZSkgewogICAgICByZXR1cm4gJ1tOYU5dJzsKICAgIH0KCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBgW0Z1bmN0aW9uOiAke2dldEZ1bmN0aW9uTmFtZSh2YWx1ZSl9XWA7CiAgICB9CgogICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcpIHsKICAgICAgcmV0dXJuIGBbJHtTdHJpbmcodmFsdWUpfV1gOwogICAgfQoKICAgIC8vIHN0cmluZ2lmaWVkIEJpZ0ludHMgYXJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gcmVndWxhciBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGxhYmVsIHRoZW0gdG8gYXZvaWQgY29uZnVzaW9uCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JykgewogICAgICByZXR1cm4gYFtCaWdJbnQ6ICR7U3RyaW5nKHZhbHVlKX1dYDsKICAgIH0KCiAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBrbm9ja2VkIG91dCBhbGwgdGhlIHNwZWNpYWwgY2FzZXMgYW5kIHRoZSBwcmltaXRpdmVzLCBhbGwgd2UgaGF2ZSBsZWZ0IGFyZSBvYmplY3RzLiBTaW1wbHkgY2FzdGluZwogICAgLy8gdGhlbSB0byBzdHJpbmdzIG1lYW5zIHRoYXQgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2hpY2ggaGF2ZW4ndCBkZWZpbmVkIHRoZWlyIGB0b1N0cmluZ1RhZ2Agd2lsbCBqdXN0IGNvbWUgb3V0IGFzCiAgICAvLyBgIltvYmplY3QgT2JqZWN0XSJgLiBJZiB3ZSBpbnN0ZWFkIGxvb2sgYXQgdGhlIGNvbnN0cnVjdG9yJ3MgbmFtZSAod2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG5hbWUgb2YgdGhlIGNsYXNzKSwKICAgIC8vIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCBvbmx5IHBsYWluIG9iamVjdHMgY29tZSBvdXQgdGhhdCB3YXkuCiAgICBjb25zdCBvYmpOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKTsKCiAgICAvLyBIYW5kbGUgSFRNTCBFbGVtZW50cwogICAgaWYgKC9eSFRNTChcdyopRWxlbWVudCQvLnRlc3Qob2JqTmFtZSkpIHsKICAgICAgcmV0dXJuIGBbSFRNTEVsZW1lbnQ6ICR7b2JqTmFtZX1dYDsKICAgIH0KCiAgICByZXR1cm4gYFtvYmplY3QgJHtvYmpOYW1lfV1gOwogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIGAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHtlcnJ9KWA7CiAgfQp9Ci8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqLwoKZnVuY3Rpb24gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKSB7CiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTsKCiAgcmV0dXJuIHByb3RvdHlwZSA/IHByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lIDogJ251bGwgcHJvdG90eXBlJzsKfQoKLyoqCiAqIE5vcm1hbGl6ZXMgVVJMcyBpbiBleGNlcHRpb25zIGFuZCBzdGFja3RyYWNlcyB0byBhIGJhc2UgcGF0aCBzbyBTZW50cnkgY2FuIGZpbmdlcnByaW50CiAqIGFjcm9zcyBwbGF0Zm9ybXMgYW5kIHdvcmtpbmcgZGlyZWN0b3J5LgogKgogKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGJhc2VQYXRoIFRoZSBhcHBsaWNhdGlvbiBiYXNlIHBhdGguCiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIFVSTC4KICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVVybFRvQmFzZSh1cmwsIGJhc2VQYXRoKSB7CiAgY29uc3QgZXNjYXBlZEJhc2UgPSBiYXNlUGF0aAogICAgLy8gQmFja3NsYXNoIHRvIGZvcndhcmQKICAgIC5yZXBsYWNlKC9cXC9nLCAnLycpCiAgICAvLyBFc2NhcGUgUmVnRXhwIHNwZWNpYWwgY2hhcmFjdGVycwogICAgLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrKj8uXS9nLCAnXFwkJicpOwoKICBsZXQgbmV3VXJsID0gdXJsOwogIHRyeSB7CiAgICBuZXdVcmwgPSBkZWNvZGVVUkkodXJsKTsKICB9IGNhdGNoIChfT28pIHsKICAgIC8vIFNvbWV0aW1lIHRoaXMgYnJlYWtzCiAgfQogIHJldHVybiAoCiAgICBuZXdVcmwKICAgICAgLnJlcGxhY2UoL1xcL2csICcvJykKICAgICAgLnJlcGxhY2UoL3dlYnBhY2s6XC8/L2csICcnKSAvLyBSZW1vdmUgaW50ZXJtZWRpYXRlIGJhc2UgcGF0aAogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHNlbnRyeS1pbnRlcm5hbC9zZGsvbm8tcmVnZXhwLWNvbnN0cnVjdG9yCiAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYChmaWxlOi8vKT8vKiR7ZXNjYXBlZEJhc2V9LypgLCAnaWcnKSwgJ2FwcDovLy8nKQogICk7Cn0KCi8vIFNsaWdodGx5IG1vZGlmaWVkIChubyBJRTggc3VwcG9ydCwgRVM2KSBhbmQgdHJhbnNjcmliZWQgdG8gVHlwZVNjcmlwdAoKLy8gU3BsaXQgYSBmaWxlbmFtZSBpbnRvIFtyb290LCBkaXIsIGJhc2VuYW1lLCBleHRdLCB1bml4IHZlcnNpb24KLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy4KY29uc3Qgc3BsaXRQYXRoUmUgPSAvXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87Ci8qKiBKU0RvYyAqLwpmdW5jdGlvbiBzcGxpdFBhdGgoZmlsZW5hbWUpIHsKICAvLyBUcnVuY2F0ZSBmaWxlcyBuYW1lcyBncmVhdGVyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIHRvIGF2b2lkIHJlZ2V4IGRvcwogIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvcHVsbC84NzM3I2Rpc2N1c3Npb25fcjEyODU3MTkxNzIKICBjb25zdCB0cnVuY2F0ZWQgPSBmaWxlbmFtZS5sZW5ndGggPiAxMDI0ID8gYDx0cnVuY2F0ZWQ+JHtmaWxlbmFtZS5zbGljZSgtMTAyNCl9YCA6IGZpbGVuYW1lOwogIGNvbnN0IHBhcnRzID0gc3BsaXRQYXRoUmUuZXhlYyh0cnVuY2F0ZWQpOwogIHJldHVybiBwYXJ0cyA/IHBhcnRzLnNsaWNlKDEpIDogW107Cn0KCi8qKiBKU0RvYyAqLwpmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHsKICBjb25zdCByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCk7CiAgY29uc3Qgcm9vdCA9IHJlc3VsdFswXTsKICBsZXQgZGlyID0gcmVzdWx0WzFdOwoKICBpZiAoIXJvb3QgJiYgIWRpcikgewogICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyCiAgICByZXR1cm4gJy4nOwogIH0KCiAgaWYgKGRpcikgewogICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2gKICAgIGRpciA9IGRpci5zbGljZSgwLCBkaXIubGVuZ3RoIC0gMSk7CiAgfQoKICByZXR1cm4gcm9vdCArIGRpcjsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlICovCgovKiogU3luY1Byb21pc2UgaW50ZXJuYWwgc3RhdGVzICovCnZhciBTdGF0ZXM7IChmdW5jdGlvbiAoU3RhdGVzKSB7CiAgLyoqIFBlbmRpbmcgKi8KICBjb25zdCBQRU5ESU5HID0gMDsgU3RhdGVzW1N0YXRlc1siUEVORElORyJdID0gUEVORElOR10gPSAiUEVORElORyI7CiAgLyoqIFJlc29sdmVkIC8gT0sgKi8KICBjb25zdCBSRVNPTFZFRCA9IDE7IFN0YXRlc1tTdGF0ZXNbIlJFU09MVkVEIl0gPSBSRVNPTFZFRF0gPSAiUkVTT0xWRUQiOwogIC8qKiBSZWplY3RlZCAvIEVycm9yICovCiAgY29uc3QgUkVKRUNURUQgPSAyOyBTdGF0ZXNbU3RhdGVzWyJSRUpFQ1RFRCJdID0gUkVKRUNURURdID0gIlJFSkVDVEVEIjsKfSkoU3RhdGVzIHx8IChTdGF0ZXMgPSB7fSkpOwoKLy8gT3ZlcmxvYWRzIHNvIHdlIGNhbiBjYWxsIHJlc29sdmVkU3luY1Byb21pc2Ugd2l0aG91dCBhcmd1bWVudHMgYW5kIGdlbmVyaWMgYXJndW1lbnQKCi8qKgogKiBDcmVhdGVzIGEgcmVzb2x2ZWQgc3luYyBwcm9taXNlLgogKgogKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVzb2x2ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZXNvbHZlZFN5bmNQcm9taXNlKHZhbHVlKSB7CiAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZShyZXNvbHZlID0+IHsKICAgIHJlc29sdmUodmFsdWUpOwogIH0pOwp9CgovKioKICogQ3JlYXRlcyBhIHJlamVjdGVkIHN5bmMgcHJvbWlzZS4KICoKICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byByZWplY3QgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVqZWN0ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZWplY3RlZFN5bmNQcm9taXNlKHJlYXNvbikgewogIHJldHVybiBuZXcgU3luY1Byb21pc2UoKF8sIHJlamVjdCkgPT4gewogICAgcmVqZWN0KHJlYXNvbik7CiAgfSk7Cn0KCi8qKgogKiBUaGVuYWJsZSBjbGFzcyB0aGF0IGJlaGF2ZXMgbGlrZSBhIFByb21pc2UgYW5kIGZvbGxvd3MgaXQncyBpbnRlcmZhY2UKICogYnV0IGlzIG5vdCBhc3luYyBpbnRlcm5hbGx5CiAqLwpjbGFzcyBTeW5jUHJvbWlzZSB7CgogICBjb25zdHJ1Y3RvcigKICAgIGV4ZWN1dG9yLAogICkge1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTtTeW5jUHJvbWlzZS5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpO1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQzLmNhbGwodGhpcyk7U3luY1Byb21pc2UucHJvdG90eXBlLl9faW5pdDQuY2FsbCh0aGlzKTsKICAgIHRoaXMuX3N0YXRlID0gU3RhdGVzLlBFTkRJTkc7CiAgICB0aGlzLl9oYW5kbGVycyA9IFtdOwoKICAgIHRyeSB7CiAgICAgIGV4ZWN1dG9yKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMuX3JlamVjdChlKTsKICAgIH0KICB9CgogIC8qKiBKU0RvYyAqLwogICB0aGVuKAogICAgb25mdWxmaWxsZWQsCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIHRoaXMuX2hhbmRsZXJzLnB1c2goWwogICAgICAgIGZhbHNlLAogICAgICAgIHJlc3VsdCA9PiB7CiAgICAgICAgICBpZiAoIW9uZnVsZmlsbGVkKSB7CiAgICAgICAgICAgIC8vIFRPRE86IMKvXF8o44OEKV8vwq8KICAgICAgICAgICAgLy8gVE9ETzogRklYTUUKICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbmZ1bGZpbGxlZChyZXN1bHQpKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVhc29uID0+IHsKICAgICAgICAgIGlmICghb25yZWplY3RlZCkgewogICAgICAgICAgICByZWplY3QocmVhc29uKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkKHJlYXNvbikpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgcmVqZWN0KGUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgXSk7CiAgICAgIHRoaXMuX2V4ZWN1dGVIYW5kbGVycygpOwogICAgfSk7CiAgfQoKICAvKiogSlNEb2MgKi8KICAgY2F0Y2goCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIHRoaXMudGhlbih2YWwgPT4gdmFsLCBvbnJlamVjdGVkKTsKICB9CgogIC8qKiBKU0RvYyAqLwogICBmaW5hbGx5KG9uZmluYWxseSkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIGxldCB2YWw7CiAgICAgIGxldCBpc1JlamVjdGVkOwoKICAgICAgcmV0dXJuIHRoaXMudGhlbigKICAgICAgICB2YWx1ZSA9PiB7CiAgICAgICAgICBpc1JlamVjdGVkID0gZmFsc2U7CiAgICAgICAgICB2YWwgPSB2YWx1ZTsKICAgICAgICAgIGlmIChvbmZpbmFsbHkpIHsKICAgICAgICAgICAgb25maW5hbGx5KCk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZWFzb24gPT4gewogICAgICAgICAgaXNSZWplY3RlZCA9IHRydWU7CiAgICAgICAgICB2YWwgPSByZWFzb247CiAgICAgICAgICBpZiAob25maW5hbGx5KSB7CiAgICAgICAgICAgIG9uZmluYWxseSgpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICkudGhlbigoKSA9PiB7CiAgICAgICAgaWYgKGlzUmVqZWN0ZWQpIHsKICAgICAgICAgIHJlamVjdCh2YWwpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmVzb2x2ZSh2YWwgKTsKICAgICAgfSk7CiAgICB9KTsKICB9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0KCkge3RoaXMuX3Jlc29sdmUgPSAodmFsdWUpID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVTT0xWRUQsIHZhbHVlKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQyKCkge3RoaXMuX3JlamVjdCA9IChyZWFzb24pID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVKRUNURUQsIHJlYXNvbik7CiAgfTt9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0MygpIHt0aGlzLl9zZXRSZXN1bHQgPSAoc3RhdGUsIHZhbHVlKSA9PiB7CiAgICBpZiAodGhpcy5fc3RhdGUgIT09IFN0YXRlcy5QRU5ESU5HKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZSh2YWx1ZSkpIHsKICAgICAgdm9pZCAodmFsdWUgKS50aGVuKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlOwogICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKCiAgICB0aGlzLl9leGVjdXRlSGFuZGxlcnMoKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQ0KCkge3RoaXMuX2V4ZWN1dGVIYW5kbGVycyA9ICgpID0+IHsKICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlBFTkRJTkcpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNvbnN0IGNhY2hlZEhhbmRsZXJzID0gdGhpcy5faGFuZGxlcnMuc2xpY2UoKTsKICAgIHRoaXMuX2hhbmRsZXJzID0gW107CgogICAgY2FjaGVkSGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHsKICAgICAgaWYgKGhhbmRsZXJbMF0pIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlJFU09MVkVEKSB7CiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlcwogICAgICAgIGhhbmRsZXJbMV0odGhpcy5fdmFsdWUgKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSBTdGF0ZXMuUkVKRUNURUQpIHsKICAgICAgICBoYW5kbGVyWzJdKHRoaXMuX3ZhbHVlKTsKICAgICAgfQoKICAgICAgaGFuZGxlclswXSA9IHRydWU7CiAgICB9KTsKICB9O30KfQoKLyoqCiAqIENyZWF0ZXMgYW4gbmV3IFByb21pc2VCdWZmZXIgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBsaW1pdAogKiBAcGFyYW0gbGltaXQgbWF4IG51bWJlciBvZiBwcm9taXNlcyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIGJ1ZmZlcgogKi8KZnVuY3Rpb24gbWFrZVByb21pc2VCdWZmZXIobGltaXQpIHsKICBjb25zdCBidWZmZXIgPSBbXTsKCiAgZnVuY3Rpb24gaXNSZWFkeSgpIHsKICAgIHJldHVybiBsaW1pdCA9PT0gdW5kZWZpbmVkIHx8IGJ1ZmZlci5sZW5ndGggPCBsaW1pdDsKICB9CgogIC8qKgogICAqIFJlbW92ZSBhIHByb21pc2UgZnJvbSB0aGUgcXVldWUuCiAgICoKICAgKiBAcGFyYW0gdGFzayBDYW4gYmUgYW55IFByb21pc2VMaWtlPFQ+CiAgICogQHJldHVybnMgUmVtb3ZlZCBwcm9taXNlLgogICAqLwogIGZ1bmN0aW9uIHJlbW92ZSh0YXNrKSB7CiAgICByZXR1cm4gYnVmZmVyLnNwbGljZShidWZmZXIuaW5kZXhPZih0YXNrKSwgMSlbMF07CiAgfQoKICAvKioKICAgKiBBZGQgYSBwcm9taXNlIChyZXByZXNlbnRpbmcgYW4gaW4tZmxpZ2h0IGFjdGlvbikgdG8gdGhlIHF1ZXVlLCBhbmQgc2V0IGl0IHRvIHJlbW92ZSBpdHNlbGYgb24gZnVsZmlsbG1lbnQuCiAgICoKICAgKiBAcGFyYW0gdGFza1Byb2R1Y2VyIEEgZnVuY3Rpb24gcHJvZHVjaW5nIGFueSBQcm9taXNlTGlrZTxUPjsgSW4gcHJldmlvdXMgdmVyc2lvbnMgdGhpcyB1c2VkIHRvIGJlIGB0YXNrOgogICAqICAgICAgICBQcm9taXNlTGlrZTxUPmAsIGJ1dCB1bmRlciB0aGF0IG1vZGVsLCBQcm9taXNlcyB3ZXJlIGluc3RhbnRseSBjcmVhdGVkIG9uIHRoZSBjYWxsLXNpdGUgYW5kIHRoZWlyIGV4ZWN1dG9yCiAgICogICAgICAgIGZ1bmN0aW9ucyB0aGVyZWZvcmUgcmFuIGltbWVkaWF0ZWx5LiBUaHVzLCBldmVuIGlmIHRoZSBidWZmZXIgd2FzIGZ1bGwsIHRoZSBhY3Rpb24gc3RpbGwgaGFwcGVuZWQuIEJ5CiAgICogICAgICAgIHJlcXVpcmluZyB0aGUgcHJvbWlzZSB0byBiZSB3cmFwcGVkIGluIGEgZnVuY3Rpb24sIHdlIGNhbiBkZWZlciBwcm9taXNlIGNyZWF0aW9uIHVudGlsIGFmdGVyIHRoZSBidWZmZXIKICAgKiAgICAgICAgbGltaXQgY2hlY2suCiAgICogQHJldHVybnMgVGhlIG9yaWdpbmFsIHByb21pc2UuCiAgICovCiAgZnVuY3Rpb24gYWRkKHRhc2tQcm9kdWNlcikgewogICAgaWYgKCFpc1JlYWR5KCkpIHsKICAgICAgcmV0dXJuIHJlamVjdGVkU3luY1Byb21pc2UobmV3IFNlbnRyeUVycm9yKCdOb3QgYWRkaW5nIFByb21pc2UgYmVjYXVzZSBidWZmZXIgbGltaXQgd2FzIHJlYWNoZWQuJykpOwogICAgfQoKICAgIC8vIHN0YXJ0IHRoZSB0YXNrIGFuZCBhZGQgaXRzIHByb21pc2UgdG8gdGhlIHF1ZXVlCiAgICBjb25zdCB0YXNrID0gdGFza1Byb2R1Y2VyKCk7CiAgICBpZiAoYnVmZmVyLmluZGV4T2YodGFzaykgPT09IC0xKSB7CiAgICAgIGJ1ZmZlci5wdXNoKHRhc2spOwogICAgfQogICAgdm9pZCB0YXNrCiAgICAgIC50aGVuKCgpID0+IHJlbW92ZSh0YXNrKSkKICAgICAgLy8gVXNlIGB0aGVuKG51bGwsIHJlamVjdGlvbkhhbmRsZXIpYCByYXRoZXIgdGhhbiBgY2F0Y2gocmVqZWN0aW9uSGFuZGxlcilgIHNvIHRoYXQgd2UgY2FuIHVzZSBgUHJvbWlzZUxpa2VgCiAgICAgIC8vIHJhdGhlciB0aGFuIGBQcm9taXNlYC4gYFByb21pc2VMaWtlYCBkb2Vzbid0IGhhdmUgYSBgLmNhdGNoYCBtZXRob2QsIG1ha2luZyBpdHMgcG9seWZpbGwgc21hbGxlci4gKEVTNSBkaWRuJ3QKICAgICAgLy8gaGF2ZSBwcm9taXNlcywgc28gVFMgaGFzIHRvIHBvbHlmaWxsIHdoZW4gZG93bi1jb21waWxpbmcuKQogICAgICAudGhlbihudWxsLCAoKSA9PgogICAgICAgIHJlbW92ZSh0YXNrKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYWRkIGFub3RoZXIgY2F0Y2ggaGVyZSBiZWNhdXNlIGByZW1vdmUoKWAgc3RhcnRzIGEgbmV3IHByb21pc2UgY2hhaW4uCiAgICAgICAgfSksCiAgICAgICk7CiAgICByZXR1cm4gdGFzazsKICB9CgogIC8qKgogICAqIFdhaXQgZm9yIGFsbCBwcm9taXNlcyBpbiB0aGUgcXVldWUgdG8gcmVzb2x2ZSBvciBmb3IgdGltZW91dCB0byBleHBpcmUsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4KICAgKgogICAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lLCBpbiBtcywgYWZ0ZXIgd2hpY2ggdG8gcmVzb2x2ZSB0byBgZmFsc2VgIGlmIHRoZSBxdWV1ZSBpcyBzdGlsbCBub24tZW1wdHkuIFBhc3NpbmcgYDBgIChvcgogICAqIG5vdCBwYXNzaW5nIGFueXRoaW5nKSB3aWxsIG1ha2UgdGhlIHByb21pc2Ugd2FpdCBhcyBsb25nIGFzIGl0IHRha2VzIGZvciB0aGUgcXVldWUgdG8gZHJhaW4gYmVmb3JlIHJlc29sdmluZyB0bwogICAqIGB0cnVlYC4KICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHRvIGB0cnVlYCBpZiB0aGUgcXVldWUgaXMgYWxyZWFkeSBlbXB0eSBvciBkcmFpbnMgYmVmb3JlIHRoZSB0aW1lb3V0LCBhbmQKICAgKiBgZmFsc2VgIG90aGVyd2lzZQogICAqLwogIGZ1bmN0aW9uIGRyYWluKHRpbWVvdXQpIHsKICAgIHJldHVybiBuZXcgU3luY1Byb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgY291bnRlciA9IGJ1ZmZlci5sZW5ndGg7CgogICAgICBpZiAoIWNvdW50ZXIpIHsKICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTsKICAgICAgfQoKICAgICAgLy8gd2FpdCBmb3IgYHRpbWVvdXRgIG1zIGFuZCB0aGVuIHJlc29sdmUgdG8gYGZhbHNlYCAoaWYgbm90IGNhbmNlbGxlZCBmaXJzdCkKICAgICAgY29uc3QgY2FwdHVyZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgaWYgKHRpbWVvdXQgJiYgdGltZW91dCA+IDApIHsKICAgICAgICAgIHJlc29sdmUoZmFsc2UpOwogICAgICAgIH0KICAgICAgfSwgdGltZW91dCk7CgogICAgICAvLyBpZiBhbGwgcHJvbWlzZXMgcmVzb2x2ZSBpbiB0aW1lLCBjYW5jZWwgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRvIGB0cnVlYAogICAgICBidWZmZXIuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICB2b2lkIHJlc29sdmVkU3luY1Byb21pc2UoaXRlbSkudGhlbigoKSA9PiB7CiAgICAgICAgICBpZiAoIS0tY291bnRlcikgewogICAgICAgICAgICBjbGVhclRpbWVvdXQoY2FwdHVyZWRTZXRUaW1lb3V0KTsKICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9LCByZWplY3QpOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgcmV0dXJuIHsKICAgICQ6IGJ1ZmZlciwKICAgIGFkZCwKICAgIGRyYWluLAogIH07Cn0KCmNvbnN0IE9ORV9TRUNPTkRfSU5fTVMgPSAxMDAwOwoKLyoqCiAqIEEgcGFydGlhbCBkZWZpbml0aW9uIG9mIHRoZSBbUGVyZm9ybWFuY2UgV2ViIEFQSV17QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BlcmZvcm1hbmNlfQogKiBmb3IgYWNjZXNzaW5nIGEgaGlnaC1yZXNvbHV0aW9uIG1vbm90b25pYyBjbG9jay4KICovCgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIHRoZSBEYXRlIEFQSS4KICoKICogVE9ETyh2OCk6IFJldHVybiB0eXBlIHNob3VsZCBiZSByb3VuZGVkLgogKi8KZnVuY3Rpb24gZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpIHsKICByZXR1cm4gRGF0ZS5ub3coKSAvIE9ORV9TRUNPTkRfSU5fTVM7Cn0KCi8qKgogKiBSZXR1cm5zIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBQZXJmb3JtYW5jZSBBUEkgYnJvd3NlciBpbXBsZW1lbnRhdGlvbiwgb3IgdW5kZWZpbmVkIGZvciBicm93c2VycyB0aGF0IGRvIG5vdAogKiBzdXBwb3J0IHRoZSBBUEkuCiAqCiAqIFdyYXBwaW5nIHRoZSBuYXRpdmUgQVBJIHdvcmtzIGFyb3VuZCBkaWZmZXJlbmNlcyBpbiBiZWhhdmlvciBmcm9tIGRpZmZlcmVudCBicm93c2Vycy4KICovCmZ1bmN0aW9uIGNyZWF0ZVVuaXhUaW1lc3RhbXBJblNlY29uZHNGdW5jKCkgewogIGNvbnN0IHsgcGVyZm9ybWFuY2UgfSA9IEdMT0JBTF9PQkogOwogIGlmICghcGVyZm9ybWFuY2UgfHwgIXBlcmZvcm1hbmNlLm5vdykgewogICAgcmV0dXJuIGRhdGVUaW1lc3RhbXBJblNlY29uZHM7CiAgfQoKICAvLyBTb21lIGJyb3dzZXIgYW5kIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGEgdGltZU9yaWdpbiwgc28gd2UgZmFsbGJhY2sgdG8KICAvLyB1c2luZyBEYXRlLm5vdygpIHRvIGNvbXB1dGUgdGhlIHN0YXJ0aW5nIHRpbWUuCiAgY29uc3QgYXBwcm94U3RhcnRpbmdUaW1lT3JpZ2luID0gRGF0ZS5ub3coKSAtIHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IHRpbWVPcmlnaW4gPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luID09IHVuZGVmaW5lZCA/IGFwcHJveFN0YXJ0aW5nVGltZU9yaWdpbiA6IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CgogIC8vIHBlcmZvcm1hbmNlLm5vdygpIGlzIGEgbW9ub3RvbmljIGNsb2NrLCB3aGljaCBtZWFucyBpdCBzdGFydHMgYXQgMCB3aGVuIHRoZSBwcm9jZXNzIGJlZ2lucy4gVG8gZ2V0IHRoZSBjdXJyZW50CiAgLy8gd2FsbCBjbG9jayB0aW1lIChhY3R1YWwgVU5JWCB0aW1lc3RhbXApLCB3ZSBuZWVkIHRvIGFkZCB0aGUgc3RhcnRpbmcgdGltZSBvcmlnaW4gYW5kIHRoZSBjdXJyZW50IHRpbWUgZWxhcHNlZC4KICAvLwogIC8vIFRPRE86IFRoaXMgZG9lcyBub3QgYWNjb3VudCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG1vbm90b25pYyBjbG9jayB0aGF0IHBvd2VycyBwZXJmb3JtYW5jZS5ub3coKSBkcmlmdHMgZnJvbSB0aGUKICAvLyB3YWxsIGNsb2NrIHRpbWUsIHdoaWNoIGNhdXNlcyB0aGUgcmV0dXJuZWQgdGltZXN0YW1wIHRvIGJlIGluYWNjdXJhdGUuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBob3cgdG8gZGV0ZWN0IGFuZAogIC8vIGNvcnJlY3QgZm9yIHRoaXMuCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbWRuL2NvbnRlbnQvaXNzdWVzLzQ3MTMKICAvLyBTZWU6IGh0dHBzOi8vZGV2LnRvL25vYW1yL3doZW4tYS1taWxsaXNlY29uZC1pcy1ub3QtYS1taWxsaXNlY29uZC0zaDYKICByZXR1cm4gKCkgPT4gewogICAgcmV0dXJuICh0aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KCkpIC8gT05FX1NFQ09ORF9JTl9NUzsKICB9Owp9CgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIGVpdGhlciB0aGUgUGVyZm9ybWFuY2Ugb3IgRGF0ZSBBUElzLCBkZXBlbmRpbmcgb24gdGhlCiAqIGF2YWlsYWJpbGl0eSBvZiB0aGUgUGVyZm9ybWFuY2UgQVBJLgogKgogKiBCVUc6IE5vdGUgdGhhdCBiZWNhdXNlIG9mIGhvdyBicm93c2VycyBpbXBsZW1lbnQgdGhlIFBlcmZvcm1hbmNlIEFQSSwgdGhlIGNsb2NrIG1pZ2h0IHN0b3Agd2hlbiB0aGUgY29tcHV0ZXIgaXMKICogYXNsZWVwLiBUaGlzIGNyZWF0ZXMgYSBza2V3IGJldHdlZW4gYGRhdGVUaW1lc3RhbXBJblNlY29uZHNgIGFuZCBgdGltZXN0YW1wSW5TZWNvbmRzYC4gVGhlCiAqIHNrZXcgY2FuIGdyb3cgdG8gYXJiaXRyYXJ5IGFtb3VudHMgbGlrZSBkYXlzLCB3ZWVrcyBvciBtb250aHMuCiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwLgogKi8KY29uc3QgdGltZXN0YW1wSW5TZWNvbmRzID0gY3JlYXRlVW5peFRpbWVzdGFtcEluU2Vjb25kc0Z1bmMoKTsKCi8qKgogKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4gVGhpcyB2YWx1ZSBpcyBvbmx5IHVzYWJsZSBpbiBhIGJyb3dzZXIsIGFuZCBvbmx5IHdoZW4gdGhlCiAqIHBlcmZvcm1hbmNlIEFQSSBpcyBhdmFpbGFibGUuCiAqLwooKCkgPT4gewogIC8vIFVuZm9ydHVuYXRlbHkgYnJvd3NlcnMgbWF5IHJlcG9ydCBhbiBpbmFjY3VyYXRlIHRpbWUgb3JpZ2luIGRhdGEsIHRocm91Z2ggZWl0aGVyIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gb3IKICAvLyBwZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0LCB3aGljaCByZXN1bHRzIGluIHBvb3IgcmVzdWx0cyBpbiBwZXJmb3JtYW5jZSBkYXRhLiBXZSBvbmx5IHRyZWF0IHRpbWUgb3JpZ2luCiAgLy8gZGF0YSBhcyByZWxpYWJsZSBpZiB0aGV5IGFyZSB3aXRoaW4gYSByZWFzb25hYmxlIHRocmVzaG9sZCBvZiB0aGUgY3VycmVudCB0aW1lLgoKICBjb25zdCB7IHBlcmZvcm1hbmNlIH0gPSBHTE9CQUxfT0JKIDsKICBpZiAoIXBlcmZvcm1hbmNlIHx8ICFwZXJmb3JtYW5jZS5ub3cpIHsKICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQoKICBjb25zdCB0aHJlc2hvbGQgPSAzNjAwICogMTAwMDsKICBjb25zdCBwZXJmb3JtYW5jZU5vdyA9IHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IGRhdGVOb3cgPSBEYXRlLm5vdygpOwoKICAvLyBpZiB0aW1lT3JpZ2luIGlzbid0IGF2YWlsYWJsZSBzZXQgZGVsdGEgdG8gdGhyZXNob2xkIHNvIGl0IGlzbid0IHVzZWQKICBjb25zdCB0aW1lT3JpZ2luRGVsdGEgPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luCiAgICA/IE1hdGguYWJzKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZU5vdyAtIGRhdGVOb3cpCiAgICA6IHRocmVzaG9sZDsKICBjb25zdCB0aW1lT3JpZ2luSXNSZWxpYWJsZSA9IHRpbWVPcmlnaW5EZWx0YSA8IHRocmVzaG9sZDsKCiAgLy8gV2hpbGUgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4sIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4KICAvLyBpcyBub3QgYXMgd2lkZWx5IHN1cHBvcnRlZC4gTmFtZWx5LCBwZXJmb3JtYW5jZS50aW1lT3JpZ2luIGlzIHVuZGVmaW5lZCBpbiBTYWZhcmkgYXMgb2Ygd3JpdGluZy4KICAvLyBBbHNvIGFzIG9mIHdyaXRpbmcsIHBlcmZvcm1hbmNlLnRpbWluZyBpcyBub3QgYXZhaWxhYmxlIGluIFdlYiBXb3JrZXJzIGluIG1haW5zdHJlYW0gYnJvd3NlcnMsIHNvIGl0IGlzIG5vdCBhbHdheXMKICAvLyBhIHZhbGlkIGZhbGxiYWNrLiBJbiB0aGUgYWJzZW5jZSBvZiBhbiBpbml0aWFsIHRpbWUgcHJvdmlkZWQgYnkgdGhlIGJyb3dzZXIsIGZhbGxiYWNrIHRvIHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUKICAvLyBEYXRlIEFQSS4KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICBjb25zdCBuYXZpZ2F0aW9uU3RhcnQgPSBwZXJmb3JtYW5jZS50aW1pbmcgJiYgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydDsKICBjb25zdCBoYXNOYXZpZ2F0aW9uU3RhcnQgPSB0eXBlb2YgbmF2aWdhdGlvblN0YXJ0ID09PSAnbnVtYmVyJzsKICAvLyBpZiBuYXZpZ2F0aW9uU3RhcnQgaXNuJ3QgYXZhaWxhYmxlIHNldCBkZWx0YSB0byB0aHJlc2hvbGQgc28gaXQgaXNuJ3QgdXNlZAogIGNvbnN0IG5hdmlnYXRpb25TdGFydERlbHRhID0gaGFzTmF2aWdhdGlvblN0YXJ0ID8gTWF0aC5hYnMobmF2aWdhdGlvblN0YXJ0ICsgcGVyZm9ybWFuY2VOb3cgLSBkYXRlTm93KSA6IHRocmVzaG9sZDsKICBjb25zdCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlID0gbmF2aWdhdGlvblN0YXJ0RGVsdGEgPCB0aHJlc2hvbGQ7CgogIGlmICh0aW1lT3JpZ2luSXNSZWxpYWJsZSB8fCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlKSB7CiAgICAvLyBVc2UgdGhlIG1vcmUgcmVsaWFibGUgdGltZSBvcmlnaW4KICAgIGlmICh0aW1lT3JpZ2luRGVsdGEgPD0gbmF2aWdhdGlvblN0YXJ0RGVsdGEpIHsKICAgICAgcmV0dXJuIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmF2aWdhdGlvblN0YXJ0OwogICAgfQogIH0KICByZXR1cm4gZGF0ZU5vdzsKfSkoKTsKCi8qKgogKiBDcmVhdGVzIGFuIGVudmVsb3BlLgogKiBNYWtlIHN1cmUgdG8gYWx3YXlzIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgZ2VuZXJpYyB0byB0aGlzIGZ1bmN0aW9uCiAqIHNvIHRoYXQgdGhlIGVudmVsb3BlIHR5cGVzIHJlc29sdmUgY29ycmVjdGx5LgogKi8KZnVuY3Rpb24gY3JlYXRlRW52ZWxvcGUoaGVhZGVycywgaXRlbXMgPSBbXSkgewogIHJldHVybiBbaGVhZGVycywgaXRlbXNdIDsKfQoKLyoqCiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGxvb3AgdGhyb3VnaCB0aGUgaXRlbXMgYW5kIGl0ZW0gdHlwZXMgb2YgYW4gZW52ZWxvcGUuCiAqIChUaGlzIGZ1bmN0aW9uIHdhcyBtb3N0bHkgY3JlYXRlZCBiZWNhdXNlIHdvcmtpbmcgd2l0aCBlbnZlbG9wZSB0eXBlcyBpcyBwYWluZnVsIGF0IHRoZSBtb21lbnQpCiAqCiAqIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIHRydWUsIHRoZSByZXN0IG9mIHRoZSBpdGVtcyB3aWxsIGJlIHNraXBwZWQuCiAqLwpmdW5jdGlvbiBmb3JFYWNoRW52ZWxvcGVJdGVtKAogIGVudmVsb3BlLAogIGNhbGxiYWNrLAopIHsKICBjb25zdCBlbnZlbG9wZUl0ZW1zID0gZW52ZWxvcGVbMV07CgogIGZvciAoY29uc3QgZW52ZWxvcGVJdGVtIG9mIGVudmVsb3BlSXRlbXMpIHsKICAgIGNvbnN0IGVudmVsb3BlSXRlbVR5cGUgPSBlbnZlbG9wZUl0ZW1bMF0udHlwZTsKICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGVudmVsb3BlSXRlbSwgZW52ZWxvcGVJdGVtVHlwZSk7CgogICAgaWYgKHJlc3VsdCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIHJldHVybiBmYWxzZTsKfQoKLyoqCiAqIEVuY29kZSBhIHN0cmluZyB0byBVVEY4LgogKi8KZnVuY3Rpb24gZW5jb2RlVVRGOChpbnB1dCwgdGV4dEVuY29kZXIpIHsKICBjb25zdCB1dGY4ID0gdGV4dEVuY29kZXIgfHwgbmV3IFRleHRFbmNvZGVyKCk7CiAgcmV0dXJuIHV0ZjguZW5jb2RlKGlucHV0KTsKfQoKLyoqCiAqIFNlcmlhbGl6ZXMgYW4gZW52ZWxvcGUuCiAqLwpmdW5jdGlvbiBzZXJpYWxpemVFbnZlbG9wZShlbnZlbG9wZSwgdGV4dEVuY29kZXIpIHsKICBjb25zdCBbZW52SGVhZGVycywgaXRlbXNdID0gZW52ZWxvcGU7CgogIC8vIEluaXRpYWxseSB3ZSBjb25zdHJ1Y3Qgb3VyIGVudmVsb3BlIGFzIGEgc3RyaW5nIGFuZCBvbmx5IGNvbnZlcnQgdG8gYmluYXJ5IGNodW5rcyBpZiB3ZSBlbmNvdW50ZXIgYmluYXJ5IGRhdGEKICBsZXQgcGFydHMgPSBKU09OLnN0cmluZ2lmeShlbnZIZWFkZXJzKTsKCiAgZnVuY3Rpb24gYXBwZW5kKG5leHQpIHsKICAgIGlmICh0eXBlb2YgcGFydHMgPT09ICdzdHJpbmcnKSB7CiAgICAgIHBhcnRzID0gdHlwZW9mIG5leHQgPT09ICdzdHJpbmcnID8gcGFydHMgKyBuZXh0IDogW2VuY29kZVVURjgocGFydHMsIHRleHRFbmNvZGVyKSwgbmV4dF07CiAgICB9IGVsc2UgewogICAgICBwYXJ0cy5wdXNoKHR5cGVvZiBuZXh0ID09PSAnc3RyaW5nJyA/IGVuY29kZVVURjgobmV4dCwgdGV4dEVuY29kZXIpIDogbmV4dCk7CiAgICB9CiAgfQoKICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGNvbnN0IFtpdGVtSGVhZGVycywgcGF5bG9hZF0gPSBpdGVtOwoKICAgIGFwcGVuZChgXG4ke0pTT04uc3RyaW5naWZ5KGl0ZW1IZWFkZXJzKX1cbmApOwoKICAgIGlmICh0eXBlb2YgcGF5bG9hZCA9PT0gJ3N0cmluZycgfHwgcGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHsKICAgICAgYXBwZW5kKHBheWxvYWQpOwogICAgfSBlbHNlIHsKICAgICAgbGV0IHN0cmluZ2lmaWVkUGF5bG9hZDsKICAgICAgdHJ5IHsKICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIC8vIEluIGNhc2UsIGRlc3BpdGUgYWxsIG91ciBlZmZvcnRzIHRvIGtlZXAgYHBheWxvYWRgIGNpcmN1bGFyLWRlcGVuZGVuY3ktZnJlZSwgYEpTT04uc3RyaW5pZnkoKWAgc3RpbGwKICAgICAgICAvLyBmYWlscywgd2UgdHJ5IGFnYWluIGFmdGVyIG5vcm1hbGl6aW5nIGl0IGFnYWluIHdpdGggaW5maW5pdGUgbm9ybWFsaXphdGlvbiBkZXB0aC4gVGhpcyBvZiBjb3Vyc2UgaGFzIGEKICAgICAgICAvLyBwZXJmb3JtYW5jZSBpbXBhY3QgYnV0IGluIHRoaXMgY2FzZSBhIHBlcmZvcm1hbmNlIGhpdCBpcyBiZXR0ZXIgdGhhbiB0aHJvd2luZy4KICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShub3JtYWxpemUocGF5bG9hZCkpOwogICAgICB9CiAgICAgIGFwcGVuZChzdHJpbmdpZmllZFBheWxvYWQpOwogICAgfQogIH0KCiAgcmV0dXJuIHR5cGVvZiBwYXJ0cyA9PT0gJ3N0cmluZycgPyBwYXJ0cyA6IGNvbmNhdEJ1ZmZlcnMocGFydHMpOwp9CgpmdW5jdGlvbiBjb25jYXRCdWZmZXJzKGJ1ZmZlcnMpIHsKICBjb25zdCB0b3RhbExlbmd0aCA9IGJ1ZmZlcnMucmVkdWNlKChhY2MsIGJ1ZikgPT4gYWNjICsgYnVmLmxlbmd0aCwgMCk7CgogIGNvbnN0IG1lcmdlZCA9IG5ldyBVaW50OEFycmF5KHRvdGFsTGVuZ3RoKTsKICBsZXQgb2Zmc2V0ID0gMDsKICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7CiAgICBtZXJnZWQuc2V0KGJ1ZmZlciwgb2Zmc2V0KTsKICAgIG9mZnNldCArPSBidWZmZXIubGVuZ3RoOwogIH0KCiAgcmV0dXJuIG1lcmdlZDsKfQoKY29uc3QgSVRFTV9UWVBFX1RPX0RBVEFfQ0FURUdPUllfTUFQID0gewogIHNlc3Npb246ICdzZXNzaW9uJywKICBzZXNzaW9uczogJ3Nlc3Npb24nLAogIGF0dGFjaG1lbnQ6ICdhdHRhY2htZW50JywKICB0cmFuc2FjdGlvbjogJ3RyYW5zYWN0aW9uJywKICBldmVudDogJ2Vycm9yJywKICBjbGllbnRfcmVwb3J0OiAnaW50ZXJuYWwnLAogIHVzZXJfcmVwb3J0OiAnZGVmYXVsdCcsCiAgcHJvZmlsZTogJ3Byb2ZpbGUnLAogIHJlcGxheV9ldmVudDogJ3JlcGxheScsCiAgcmVwbGF5X3JlY29yZGluZzogJ3JlcGxheScsCiAgY2hlY2tfaW46ICdtb25pdG9yJywKICBmZWVkYmFjazogJ2ZlZWRiYWNrJywKICBzcGFuOiAnc3BhbicsCiAgc3RhdHNkOiAnbWV0cmljX2J1Y2tldCcsCn07CgovKioKICogTWFwcyB0aGUgdHlwZSBvZiBhbiBlbnZlbG9wZSBpdGVtIHRvIGEgZGF0YSBjYXRlZ29yeS4KICovCmZ1bmN0aW9uIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSB7CiAgcmV0dXJuIElURU1fVFlQRV9UT19EQVRBX0NBVEVHT1JZX01BUFt0eXBlXTsKfQoKLyoqIEV4dHJhY3RzIHRoZSBtaW5pbWFsIFNESyBpbmZvIGZyb20gdGhlIG1ldGFkYXRhIG9yIGFuIGV2ZW50cyAqLwpmdW5jdGlvbiBnZXRTZGtNZXRhZGF0YUZvckVudmVsb3BlSGVhZGVyKG1ldGFkYXRhT3JFdmVudCkgewogIGlmICghbWV0YWRhdGFPckV2ZW50IHx8ICFtZXRhZGF0YU9yRXZlbnQuc2RrKSB7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHsgbmFtZSwgdmVyc2lvbiB9ID0gbWV0YWRhdGFPckV2ZW50LnNkazsKICByZXR1cm4geyBuYW1lLCB2ZXJzaW9uIH07Cn0KCi8qKgogKiBDcmVhdGVzIGV2ZW50IGVudmVsb3BlIGhlYWRlcnMsIGJhc2VkIG9uIGV2ZW50LCBzZGsgaW5mbyBhbmQgdHVubmVsCiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIHBhY2thZ2UgdG8gbWFrZSBpdCBhdmFpbGFibGUgaW4gUmVwbGF5CiAqLwpmdW5jdGlvbiBjcmVhdGVFdmVudEVudmVsb3BlSGVhZGVycygKICBldmVudCwKICBzZGtJbmZvLAogIHR1bm5lbCwKICBkc24sCikgewogIGNvbnN0IGR5bmFtaWNTYW1wbGluZ0NvbnRleHQgPSBldmVudC5zZGtQcm9jZXNzaW5nTWV0YWRhdGEgJiYgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7CiAgcmV0dXJuIHsKICAgIGV2ZW50X2lkOiBldmVudC5ldmVudF9pZCAsCiAgICBzZW50X2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAuLi4oc2RrSW5mbyAmJiB7IHNkazogc2RrSW5mbyB9KSwKICAgIC4uLighIXR1bm5lbCAmJiBkc24gJiYgeyBkc246IGRzblRvU3RyaW5nKGRzbikgfSksCiAgICAuLi4oZHluYW1pY1NhbXBsaW5nQ29udGV4dCAmJiB7CiAgICAgIHRyYWNlOiBkcm9wVW5kZWZpbmVkS2V5cyh7IC4uLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQgfSksCiAgICB9KSwKICB9Owp9CgovLyBJbnRlbnRpb25hbGx5IGtlZXBpbmcgdGhlIGtleSBicm9hZCwgYXMgd2UgZG9uJ3Qga25vdyBmb3Igc3VyZSB3aGF0IHJhdGUgbGltaXQgaGVhZGVycyBnZXQgcmV0dXJuZWQgZnJvbSBiYWNrZW5kCgpjb25zdCBERUZBVUxUX1JFVFJZX0FGVEVSID0gNjAgKiAxMDAwOyAvLyA2MCBzZWNvbmRzCgovKioKICogRXh0cmFjdHMgUmV0cnktQWZ0ZXIgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCBoZWFkZXIgb3IgcmV0dXJucyBkZWZhdWx0IHZhbHVlCiAqIEBwYXJhbSBoZWFkZXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICdSZXRyeS1BZnRlcicgaGVhZGVyCiAqIEBwYXJhbSBub3cgY3VycmVudCB1bml4IHRpbWVzdGFtcAogKgogKi8KZnVuY3Rpb24gcGFyc2VSZXRyeUFmdGVySGVhZGVyKGhlYWRlciwgbm93ID0gRGF0ZS5ub3coKSkgewogIGNvbnN0IGhlYWRlckRlbGF5ID0gcGFyc2VJbnQoYCR7aGVhZGVyfWAsIDEwKTsKICBpZiAoIWlzTmFOKGhlYWRlckRlbGF5KSkgewogICAgcmV0dXJuIGhlYWRlckRlbGF5ICogMTAwMDsKICB9CgogIGNvbnN0IGhlYWRlckRhdGUgPSBEYXRlLnBhcnNlKGAke2hlYWRlcn1gKTsKICBpZiAoIWlzTmFOKGhlYWRlckRhdGUpKSB7CiAgICByZXR1cm4gaGVhZGVyRGF0ZSAtIG5vdzsKICB9CgogIHJldHVybiBERUZBVUxUX1JFVFJZX0FGVEVSOwp9CgovKioKICogR2V0cyB0aGUgdGltZSB0aGF0IHRoZSBnaXZlbiBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBmb3IgcmF0ZSBsaW1pdGluZy4KICogSW4gY2FzZSBubyBjYXRlZ29yeS1zcGVjaWZpYyBsaW1pdCBpcyBzZXQgYnV0IGEgZ2VuZXJhbCByYXRlIGxpbWl0IGFjcm9zcyBhbGwgY2F0ZWdvcmllcyBpcyBhY3RpdmUsCiAqIHRoYXQgdGltZSBpcyByZXR1cm5lZC4KICoKICogQHJldHVybiB0aGUgdGltZSBpbiBtcyB0aGF0IHRoZSBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBvciAwIGlmIHRoZXJlJ3Mgbm8gYWN0aXZlIHJhdGUgbGltaXQuCiAqLwpmdW5jdGlvbiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSB7CiAgcmV0dXJuIGxpbWl0c1tkYXRhQ2F0ZWdvcnldIHx8IGxpbWl0cy5hbGwgfHwgMDsKfQoKLyoqCiAqIENoZWNrcyBpZiBhIGNhdGVnb3J5IGlzIHJhdGUgbGltaXRlZAogKi8KZnVuY3Rpb24gaXNSYXRlTGltaXRlZChsaW1pdHMsIGRhdGFDYXRlZ29yeSwgbm93ID0gRGF0ZS5ub3coKSkgewogIHJldHVybiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSA+IG5vdzsKfQoKLyoqCiAqIFVwZGF0ZSByYXRlbGltaXRzIGZyb20gaW5jb21pbmcgaGVhZGVycy4KICoKICogQHJldHVybiB0aGUgdXBkYXRlZCBSYXRlTGltaXRzIG9iamVjdC4KICovCmZ1bmN0aW9uIHVwZGF0ZVJhdGVMaW1pdHMoCiAgbGltaXRzLAogIHsgc3RhdHVzQ29kZSwgaGVhZGVycyB9LAogIG5vdyA9IERhdGUubm93KCksCikgewogIGNvbnN0IHVwZGF0ZWRSYXRlTGltaXRzID0gewogICAgLi4ubGltaXRzLAogIH07CgogIC8vICJUaGUgbmFtZSBpcyBjYXNlLWluc2Vuc2l0aXZlLiIKICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSGVhZGVycy9nZXQKICBjb25zdCByYXRlTGltaXRIZWFkZXIgPSBoZWFkZXJzICYmIGhlYWRlcnNbJ3gtc2VudHJ5LXJhdGUtbGltaXRzJ107CiAgY29uc3QgcmV0cnlBZnRlckhlYWRlciA9IGhlYWRlcnMgJiYgaGVhZGVyc1sncmV0cnktYWZ0ZXInXTsKCiAgaWYgKHJhdGVMaW1pdEhlYWRlcikgewogICAgLyoqCiAgICAgKiByYXRlIGxpbWl0IGhlYWRlcnMgYXJlIG9mIHRoZSBmb3JtCiAgICAgKiAgICAgPGhlYWRlcj4sPGhlYWRlcj4sLi4KICAgICAqIHdoZXJlIGVhY2ggPGhlYWRlcj4gaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+OiA8Y2F0ZWdvcmllcz46IDxzY29wZT46IDxyZWFzb25fY29kZT46IDxuYW1lc3BhY2VzPgogICAgICogd2hlcmUKICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+IGlzIGEgZGVsYXkgaW4gc2Vjb25kcwogICAgICogICAgIDxjYXRlZ29yaWVzPiBpcyB0aGUgZXZlbnQgdHlwZShzKSAoZXJyb3IsIHRyYW5zYWN0aW9uLCBldGMpIGJlaW5nIHJhdGUgbGltaXRlZCBhbmQgaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICAgICAgPGNhdGVnb3J5Pjs8Y2F0ZWdvcnk+Oy4uLgogICAgICogICAgIDxzY29wZT4gaXMgd2hhdCdzIGJlaW5nIGxpbWl0ZWQgKG9yZywgcHJvamVjdCwgb3Iga2V5KSAtIGlnbm9yZWQgYnkgU0RLCiAgICAgKiAgICAgPHJlYXNvbl9jb2RlPiBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nIGxpa2UgIm9yZ19xdW90YSIgLSBpZ25vcmVkIGJ5IFNESwogICAgICogICAgIDxuYW1lc3BhY2VzPiBTZW1pY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgbWV0cmljIG5hbWVzcGFjZSBpZGVudGlmaWVycy4gRGVmaW5lcyB3aGljaCBuYW1lc3BhY2Uocykgd2lsbCBiZSBhZmZlY3RlZC4KICAgICAqICAgICAgICAgT25seSBwcmVzZW50IGlmIHJhdGUgbGltaXQgYXBwbGllcyB0byB0aGUgbWV0cmljX2J1Y2tldCBkYXRhIGNhdGVnb3J5LgogICAgICovCiAgICBmb3IgKGNvbnN0IGxpbWl0IG9mIHJhdGVMaW1pdEhlYWRlci50cmltKCkuc3BsaXQoJywnKSkgewogICAgICBjb25zdCBbcmV0cnlBZnRlciwgY2F0ZWdvcmllcywgLCAsIG5hbWVzcGFjZXNdID0gbGltaXQuc3BsaXQoJzonLCA1KTsKICAgICAgY29uc3QgaGVhZGVyRGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyLCAxMCk7CiAgICAgIGNvbnN0IGRlbGF5ID0gKCFpc05hTihoZWFkZXJEZWxheSkgPyBoZWFkZXJEZWxheSA6IDYwKSAqIDEwMDA7IC8vIDYwc2VjIGRlZmF1bHQKICAgICAgaWYgKCFjYXRlZ29yaWVzKSB7CiAgICAgICAgdXBkYXRlZFJhdGVMaW1pdHMuYWxsID0gbm93ICsgZGVsYXk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzLnNwbGl0KCc7JykpIHsKICAgICAgICAgIGlmIChjYXRlZ29yeSA9PT0gJ21ldHJpY19idWNrZXQnKSB7CiAgICAgICAgICAgIC8vIG5hbWVzcGFjZXMgd2lsbCBiZSBwcmVzZW50IHdoZW4gY2F0ZWdvcnkgPT09ICdtZXRyaWNfYnVja2V0JwogICAgICAgICAgICBpZiAoIW5hbWVzcGFjZXMgfHwgbmFtZXNwYWNlcy5zcGxpdCgnOycpLmluY2x1ZGVzKCdjdXN0b20nKSkgewogICAgICAgICAgICAgIHVwZGF0ZWRSYXRlTGltaXRzW2NhdGVnb3J5XSA9IG5vdyArIGRlbGF5OwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1cGRhdGVkUmF0ZUxpbWl0c1tjYXRlZ29yeV0gPSBub3cgKyBkZWxheTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9IGVsc2UgaWYgKHJldHJ5QWZ0ZXJIZWFkZXIpIHsKICAgIHVwZGF0ZWRSYXRlTGltaXRzLmFsbCA9IG5vdyArIHBhcnNlUmV0cnlBZnRlckhlYWRlcihyZXRyeUFmdGVySGVhZGVyLCBub3cpOwogIH0gZWxzZSBpZiAoc3RhdHVzQ29kZSA9PT0gNDI5KSB7CiAgICB1cGRhdGVkUmF0ZUxpbWl0cy5hbGwgPSBub3cgKyA2MCAqIDEwMDA7CiAgfQoKICByZXR1cm4gdXBkYXRlZFJhdGVMaW1pdHM7Cn0KCi8qKgogKiBBIG5vZGUuanMgd2F0Y2hkb2cgdGltZXIKICogQHBhcmFtIHBvbGxJbnRlcnZhbCBUaGUgaW50ZXJ2YWwgdGhhdCB3ZSBleHBlY3QgdG8gZ2V0IHBvbGxlZCBhdAogKiBAcGFyYW0gYW5yVGhyZXNob2xkIFRoZSB0aHJlc2hvbGQgZm9yIHdoZW4gd2UgY29uc2lkZXIgQU5SCiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gY2FsbCBmb3IgQU5SCiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBwb2xsYCBhbmQgYGVuYWJsZWRgIGZ1bmN0aW9ucyB7QGxpbmsgV2F0Y2hkb2dSZXR1cm59CiAqLwpmdW5jdGlvbiB3YXRjaGRvZ1RpbWVyKAogIGNyZWF0ZVRpbWVyLAogIHBvbGxJbnRlcnZhbCwKICBhbnJUaHJlc2hvbGQsCiAgY2FsbGJhY2ssCikgewogIGNvbnN0IHRpbWVyID0gY3JlYXRlVGltZXIoKTsKICBsZXQgdHJpZ2dlcmVkID0gZmFsc2U7CiAgbGV0IGVuYWJsZWQgPSB0cnVlOwoKICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICBjb25zdCBkaWZmTXMgPSB0aW1lci5nZXRUaW1lTXMoKTsKCiAgICBpZiAodHJpZ2dlcmVkID09PSBmYWxzZSAmJiBkaWZmTXMgPiBwb2xsSW50ZXJ2YWwgKyBhbnJUaHJlc2hvbGQpIHsKICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKICAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CgogICAgaWYgKGRpZmZNcyA8IHBvbGxJbnRlcnZhbCArIGFuclRocmVzaG9sZCkgewogICAgICB0cmlnZ2VyZWQgPSBmYWxzZTsKICAgIH0KICB9LCAyMCk7CgogIHJldHVybiB7CiAgICBwb2xsOiAoKSA9PiB7CiAgICAgIHRpbWVyLnJlc2V0KCk7CiAgICB9LAogICAgZW5hYmxlZDogKHN0YXRlKSA9PiB7CiAgICAgIGVuYWJsZWQgPSBzdGF0ZTsKICAgIH0sCiAgfTsKfQoKLy8gdHlwZXMgY29waWVkIGZyb20gaW5zcGVjdG9yLmQudHMKCi8qKgogKiBDb252ZXJ0cyBEZWJ1Z2dlci5DYWxsRnJhbWUgdG8gU2VudHJ5IFN0YWNrRnJhbWUKICovCmZ1bmN0aW9uIGNhbGxGcmFtZVRvU3RhY2tGcmFtZSgKICBmcmFtZSwKICB1cmwsCiAgZ2V0TW9kdWxlRnJvbUZpbGVuYW1lLAopIHsKICBjb25zdCBmaWxlbmFtZSA9IHVybCA/IHVybC5yZXBsYWNlKC9eZmlsZTpcL1wvLywgJycpIDogdW5kZWZpbmVkOwoKICAvLyBDYWxsRnJhbWUgcm93L2NvbCBhcmUgMCBiYXNlZCwgd2hlcmVhcyBTdGFja0ZyYW1lIGFyZSAxIGJhc2VkCiAgY29uc3QgY29sbm8gPSBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgKyAxIDogdW5kZWZpbmVkOwogIGNvbnN0IGxpbmVubyA9IGZyYW1lLmxvY2F0aW9uLmxpbmVOdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5saW5lTnVtYmVyICsgMSA6IHVuZGVmaW5lZDsKCiAgcmV0dXJuIGRyb3BVbmRlZmluZWRLZXlzKHsKICAgIGZpbGVuYW1lLAogICAgbW9kdWxlOiBnZXRNb2R1bGVGcm9tRmlsZW5hbWUoZmlsZW5hbWUpLAogICAgZnVuY3Rpb246IGZyYW1lLmZ1bmN0aW9uTmFtZSB8fCAnPycsCiAgICBjb2xubywKICAgIGxpbmVubywKICAgIGluX2FwcDogZmlsZW5hbWUgPyBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUpIDogdW5kZWZpbmVkLAogIH0pOwp9CgovKioKICogVGhpcyBzZXJ2ZXMgYXMgYSBidWlsZCB0aW1lIGZsYWcgdGhhdCB3aWxsIGJlIHRydWUgYnkgZGVmYXVsdCwgYnV0IGZhbHNlIGluIG5vbi1kZWJ1ZyBidWlsZHMgb3IgaWYgdXNlcnMgcmVwbGFjZSBgX19TRU5UUllfREVCVUdfX2AgaW4gdGhlaXIgZ2VuZXJhdGVkIGNvZGUuCiAqCiAqIEFUVEVOVElPTjogVGhpcyBjb25zdGFudCBtdXN0IG5ldmVyIGNyb3NzIHBhY2thZ2UgYm91bmRhcmllcyAoaS5lLiBiZSBleHBvcnRlZCkgdG8gZ3VhcmFudGVlIHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIHRyZWUgc2hha2luZy4KICovCmNvbnN0IERFQlVHX0JVSUxEID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCmNvbnN0IERFRkFVTFRfRU5WSVJPTk1FTlQgPSAncHJvZHVjdGlvbic7CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIGV2ZW50IHByb2Nlc3NvcnMuCiAqIEBkZXByZWNhdGVkIEdsb2JhbCBldmVudCBwcm9jZXNzb3JzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICovCmZ1bmN0aW9uIGdldEdsb2JhbEV2ZW50UHJvY2Vzc29ycygpIHsKICByZXR1cm4gZ2V0R2xvYmFsU2luZ2xldG9uKCdnbG9iYWxFdmVudFByb2Nlc3NvcnMnLCAoKSA9PiBbXSk7Cn0KCi8qKgogKiBQcm9jZXNzIGFuIGFycmF5IG9mIGV2ZW50IHByb2Nlc3NvcnMsIHJldHVybmluZyB0aGUgcHJvY2Vzc2VkIGV2ZW50IChvciBgbnVsbGAgaWYgdGhlIGV2ZW50IHdhcyBkcm9wcGVkKS4KICovCmZ1bmN0aW9uIG5vdGlmeUV2ZW50UHJvY2Vzc29ycygKICBwcm9jZXNzb3JzLAogIGV2ZW50LAogIGhpbnQsCiAgaW5kZXggPSAwLAopIHsKICByZXR1cm4gbmV3IFN5bmNQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGNvbnN0IHByb2Nlc3NvciA9IHByb2Nlc3NvcnNbaW5kZXhdOwogICAgaWYgKGV2ZW50ID09PSBudWxsIHx8IHR5cGVvZiBwcm9jZXNzb3IgIT09ICdmdW5jdGlvbicpIHsKICAgICAgcmVzb2x2ZShldmVudCk7CiAgICB9IGVsc2UgewogICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzb3IoeyAuLi5ldmVudCB9LCBoaW50KSA7CgogICAgICBERUJVR19CVUlMRCAmJiBwcm9jZXNzb3IuaWQgJiYgcmVzdWx0ID09PSBudWxsICYmIGxvZ2dlci5sb2coYEV2ZW50IHByb2Nlc3NvciAiJHtwcm9jZXNzb3IuaWR9IiBkcm9wcGVkIGV2ZW50YCk7CgogICAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7CiAgICAgICAgdm9pZCByZXN1bHQKICAgICAgICAgIC50aGVuKGZpbmFsID0+IG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCBmaW5hbCwgaGludCwgaW5kZXggKyAxKS50aGVuKHJlc29sdmUpKQogICAgICAgICAgLnRoZW4obnVsbCwgcmVqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2b2lkIG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCByZXN1bHQsIGhpbnQsIGluZGV4ICsgMSkKICAgICAgICAgIC50aGVuKHJlc29sdmUpCiAgICAgICAgICAudGhlbihudWxsLCByZWplY3QpOwogICAgICB9CiAgICB9CiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgbmV3IGBTZXNzaW9uYCBvYmplY3QgYnkgc2V0dGluZyBjZXJ0YWluIGRlZmF1bHQgcGFyYW1ldGVycy4gSWYgb3B0aW9uYWwgQHBhcmFtIGNvbnRleHQKICogaXMgcGFzc2VkLCB0aGUgcGFzc2VkIHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8gdGhlIHNlc3Npb24gb2JqZWN0LgogKgogKiBAcGFyYW0gY29udGV4dCAob3B0aW9uYWwpIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIHRoZSByZXR1cm5lZCBzZXNzaW9uIG9iamVjdAogKgogKiBAcmV0dXJucyBhIG5ldyBgU2Vzc2lvbmAgb2JqZWN0CiAqLwpmdW5jdGlvbiBtYWtlU2Vzc2lvbihjb250ZXh0KSB7CiAgLy8gQm90aCB0aW1lc3RhbXAgYW5kIHN0YXJ0ZWQgYXJlIGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCiAgY29uc3Qgc3RhcnRpbmdUaW1lID0gdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGNvbnN0IHNlc3Npb24gPSB7CiAgICBzaWQ6IHV1aWQ0KCksCiAgICBpbml0OiB0cnVlLAogICAgdGltZXN0YW1wOiBzdGFydGluZ1RpbWUsCiAgICBzdGFydGVkOiBzdGFydGluZ1RpbWUsCiAgICBkdXJhdGlvbjogMCwKICAgIHN0YXR1czogJ29rJywKICAgIGVycm9yczogMCwKICAgIGlnbm9yZUR1cmF0aW9uOiBmYWxzZSwKICAgIHRvSlNPTjogKCkgPT4gc2Vzc2lvblRvSlNPTihzZXNzaW9uKSwKICB9OwoKICBpZiAoY29udGV4dCkgewogICAgdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0KTsKICB9CgogIHJldHVybiBzZXNzaW9uOwp9CgovKioKICogVXBkYXRlcyBhIHNlc3Npb24gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgcGFzc2VkIGluIHRoZSBjb250ZXh0LgogKgogKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBwYXNzZWQgb2JqZWN0IGFuZCByZXR1cm5zIHZvaWQuCiAqIChIYWQgdG8gZG8gdGhpcyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBhbmQgdXBkYXRlZCBzZXNzaW9uIGJlY2F1c2UgY2xvc2luZyBhbmQgc2VuZGluZyBhIHNlc3Npb24KICogbWFrZXMgYW4gdXBkYXRlIHRvIHRoZSBzZXNzaW9uIGFmdGVyIGl0IHdhcyBwYXNzZWQgdG8gdGhlIHNlbmRpbmcgbG9naWMuCiAqIEBzZWUgQmFzZUNsaWVudC5jYXB0dXJlU2Vzc2lvbiApCiAqCiAqIEBwYXJhbSBzZXNzaW9uIHRoZSBgU2Vzc2lvbmAgdG8gdXBkYXRlCiAqIEBwYXJhbSBjb250ZXh0IHRoZSBgU2Vzc2lvbkNvbnRleHRgIGhvbGRpbmcgdGhlIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgdXBkYXRlZCBpbiBAcGFyYW0gc2Vzc2lvbgogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHkKZnVuY3Rpb24gdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0ID0ge30pIHsKICBpZiAoY29udGV4dC51c2VyKSB7CiAgICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQudXNlci5pcF9hZGRyZXNzKSB7CiAgICAgIHNlc3Npb24uaXBBZGRyZXNzID0gY29udGV4dC51c2VyLmlwX2FkZHJlc3M7CiAgICB9CgogICAgaWYgKCFzZXNzaW9uLmRpZCAmJiAhY29udGV4dC5kaWQpIHsKICAgICAgc2Vzc2lvbi5kaWQgPSBjb250ZXh0LnVzZXIuaWQgfHwgY29udGV4dC51c2VyLmVtYWlsIHx8IGNvbnRleHQudXNlci51c2VybmFtZTsKICAgIH0KICB9CgogIHNlc3Npb24udGltZXN0YW1wID0gY29udGV4dC50aW1lc3RhbXAgfHwgdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGlmIChjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbSkgewogICAgc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20gPSBjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbTsKICB9CgogIGlmIChjb250ZXh0Lmlnbm9yZUR1cmF0aW9uKSB7CiAgICBzZXNzaW9uLmlnbm9yZUR1cmF0aW9uID0gY29udGV4dC5pZ25vcmVEdXJhdGlvbjsKICB9CiAgaWYgKGNvbnRleHQuc2lkKSB7CiAgICAvLyBHb29kIGVub3VnaCB1dWlkIHZhbGlkYXRpb24uIOKAlCBLYW1pbAogICAgc2Vzc2lvbi5zaWQgPSBjb250ZXh0LnNpZC5sZW5ndGggPT09IDMyID8gY29udGV4dC5zaWQgOiB1dWlkNCgpOwogIH0KICBpZiAoY29udGV4dC5pbml0ICE9PSB1bmRlZmluZWQpIHsKICAgIHNlc3Npb24uaW5pdCA9IGNvbnRleHQuaW5pdDsKICB9CiAgaWYgKCFzZXNzaW9uLmRpZCAmJiBjb250ZXh0LmRpZCkgewogICAgc2Vzc2lvbi5kaWQgPSBgJHtjb250ZXh0LmRpZH1gOwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuc3RhcnRlZCA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uc3RhcnRlZCA9IGNvbnRleHQuc3RhcnRlZDsKICB9CiAgaWYgKHNlc3Npb24uaWdub3JlRHVyYXRpb24pIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSB1bmRlZmluZWQ7CiAgfSBlbHNlIGlmICh0eXBlb2YgY29udGV4dC5kdXJhdGlvbiA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSBjb250ZXh0LmR1cmF0aW9uOwogIH0gZWxzZSB7CiAgICBjb25zdCBkdXJhdGlvbiA9IHNlc3Npb24udGltZXN0YW1wIC0gc2Vzc2lvbi5zdGFydGVkOwogICAgc2Vzc2lvbi5kdXJhdGlvbiA9IGR1cmF0aW9uID49IDAgPyBkdXJhdGlvbiA6IDA7CiAgfQogIGlmIChjb250ZXh0LnJlbGVhc2UpIHsKICAgIHNlc3Npb24ucmVsZWFzZSA9IGNvbnRleHQucmVsZWFzZTsKICB9CiAgaWYgKGNvbnRleHQuZW52aXJvbm1lbnQpIHsKICAgIHNlc3Npb24uZW52aXJvbm1lbnQgPSBjb250ZXh0LmVudmlyb25tZW50OwogIH0KICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQuaXBBZGRyZXNzKSB7CiAgICBzZXNzaW9uLmlwQWRkcmVzcyA9IGNvbnRleHQuaXBBZGRyZXNzOwogIH0KICBpZiAoIXNlc3Npb24udXNlckFnZW50ICYmIGNvbnRleHQudXNlckFnZW50KSB7CiAgICBzZXNzaW9uLnVzZXJBZ2VudCA9IGNvbnRleHQudXNlckFnZW50OwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuZXJyb3JzID09PSAnbnVtYmVyJykgewogICAgc2Vzc2lvbi5lcnJvcnMgPSBjb250ZXh0LmVycm9yczsKICB9CiAgaWYgKGNvbnRleHQuc3RhdHVzKSB7CiAgICBzZXNzaW9uLnN0YXR1cyA9IGNvbnRleHQuc3RhdHVzOwogIH0KfQoKLyoqCiAqIENsb3NlcyBhIHNlc3Npb24gYnkgc2V0dGluZyBpdHMgc3RhdHVzIGFuZCB1cGRhdGluZyB0aGUgc2Vzc2lvbiBvYmplY3Qgd2l0aCBpdC4KICogSW50ZXJuYWxseSBjYWxscyBgdXBkYXRlU2Vzc2lvbmAgdG8gdXBkYXRlIHRoZSBwYXNzZWQgc2Vzc2lvbiBvYmplY3QuCiAqCiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHBhc3NlZCBzZXNzaW9uIChAc2VlIHVwZGF0ZVNlc3Npb24gZm9yIGV4cGxhbmF0aW9uKS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIGBTZXNzaW9uYCBvYmplY3QgdG8gYmUgY2xvc2VkCiAqIEBwYXJhbSBzdGF0dXMgdGhlIGBTZXNzaW9uU3RhdHVzYCB3aXRoIHdoaWNoIHRoZSBzZXNzaW9uIHdhcyBjbG9zZWQuIElmIHlvdSBkb24ndCBwYXNzIGEgc3RhdHVzLAogKiAgICAgICAgICAgICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBrZWVwIHRoZSBwcmV2aW91c2x5IHNldCBzdGF0dXMsIHVubGVzcyBpdCB3YXMgYCdvaydgIGluIHdoaWNoIGNhc2UKICogICAgICAgICAgICAgICBpdCBpcyBjaGFuZ2VkIHRvIGAnZXhpdGVkJ2AuCiAqLwpmdW5jdGlvbiBjbG9zZVNlc3Npb24oc2Vzc2lvbiwgc3RhdHVzKSB7CiAgbGV0IGNvbnRleHQgPSB7fTsKICBpZiAoc3RhdHVzKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXMgfTsKICB9IGVsc2UgaWYgKHNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXM6ICdleGl0ZWQnIH07CiAgfQoKICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIGNvbnRleHQpOwp9CgovKioKICogU2VyaWFsaXplcyBhIHBhc3NlZCBzZXNzaW9uIG9iamVjdCB0byBhIEpTT04gb2JqZWN0IHdpdGggYSBzbGlnaHRseSBkaWZmZXJlbnQgc3RydWN0dXJlLgogKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBTZW50cnkgYmFja2VuZCByZXF1aXJlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBzY2hlbWEgb2YgYSBzZXNzaW9uCiAqIHRoYW4gdGhlIG9uZSB0aGUgSlMgU0RLcyB1c2UgaW50ZXJuYWxseS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIHNlc3Npb24gdG8gYmUgY29udmVydGVkCiAqCiAqIEByZXR1cm5zIGEgSlNPTiBvYmplY3Qgb2YgdGhlIHBhc3NlZCBzZXNzaW9uCiAqLwpmdW5jdGlvbiBzZXNzaW9uVG9KU09OKHNlc3Npb24pIHsKICByZXR1cm4gZHJvcFVuZGVmaW5lZEtleXMoewogICAgc2lkOiBgJHtzZXNzaW9uLnNpZH1gLAogICAgaW5pdDogc2Vzc2lvbi5pbml0LAogICAgLy8gTWFrZSBzdXJlIHRoYXQgc2VjIGlzIGNvbnZlcnRlZCB0byBtcyBmb3IgZGF0ZSBjb25zdHJ1Y3RvcgogICAgc3RhcnRlZDogbmV3IERhdGUoc2Vzc2lvbi5zdGFydGVkICogMTAwMCkudG9JU09TdHJpbmcoKSwKICAgIHRpbWVzdGFtcDogbmV3IERhdGUoc2Vzc2lvbi50aW1lc3RhbXAgKiAxMDAwKS50b0lTT1N0cmluZygpLAogICAgc3RhdHVzOiBzZXNzaW9uLnN0YXR1cywKICAgIGVycm9yczogc2Vzc2lvbi5lcnJvcnMsCiAgICBkaWQ6IHR5cGVvZiBzZXNzaW9uLmRpZCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHNlc3Npb24uZGlkID09PSAnc3RyaW5nJyA/IGAke3Nlc3Npb24uZGlkfWAgOiB1bmRlZmluZWQsCiAgICBkdXJhdGlvbjogc2Vzc2lvbi5kdXJhdGlvbiwKICAgIGFibm9ybWFsX21lY2hhbmlzbTogc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20sCiAgICBhdHRyczogewogICAgICByZWxlYXNlOiBzZXNzaW9uLnJlbGVhc2UsCiAgICAgIGVudmlyb25tZW50OiBzZXNzaW9uLmVudmlyb25tZW50LAogICAgICBpcF9hZGRyZXNzOiBzZXNzaW9uLmlwQWRkcmVzcywKICAgICAgdXNlcl9hZ2VudDogc2Vzc2lvbi51c2VyQWdlbnQsCiAgICB9LAogIH0pOwp9Cgpjb25zdCBUUkFDRV9GTEFHX1NBTVBMRUQgPSAweDE7CgovKioKICogQ29udmVydCBhIHNwYW4gdG8gYSB0cmFjZSBjb250ZXh0LCB3aGljaCBjYW4gYmUgc2VudCBhcyB0aGUgYHRyYWNlYCBjb250ZXh0IGluIGFuIGV2ZW50LgogKi8KZnVuY3Rpb24gc3BhblRvVHJhY2VDb250ZXh0KHNwYW4pIHsKICBjb25zdCB7IHNwYW5JZDogc3Bhbl9pZCwgdHJhY2VJZDogdHJhY2VfaWQgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICBjb25zdCB7IGRhdGEsIG9wLCBwYXJlbnRfc3Bhbl9pZCwgc3RhdHVzLCB0YWdzLCBvcmlnaW4gfSA9IHNwYW5Ub0pTT04oc3Bhbik7CgogIHJldHVybiBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBkYXRhLAogICAgb3AsCiAgICBwYXJlbnRfc3Bhbl9pZCwKICAgIHNwYW5faWQsCiAgICBzdGF0dXMsCiAgICB0YWdzLAogICAgdHJhY2VfaWQsCiAgICBvcmlnaW4sCiAgfSk7Cn0KCi8qKgogKiBDb252ZXJ0IGEgc3BhbiB0byBhIEpTT04gcmVwcmVzZW50YXRpb24uCiAqIE5vdGUgdGhhdCBhbGwgZmllbGRzIHJldHVybmVkIGhlcmUgYXJlIG9wdGlvbmFsIGFuZCBuZWVkIHRvIGJlIGd1YXJkZWQgYWdhaW5zdC4KICoKICogTm90ZTogQmVjYXVzZSBvZiB0aGlzLCB3ZSBjdXJyZW50bHkgaGF2ZSBhIGNpcmN1bGFyIHR5cGUgZGVwZW5kZW5jeSAod2hpY2ggd2Ugb3B0ZWQgb3V0IG9mIGluIHBhY2thZ2UuanNvbikuCiAqIFRoaXMgaXMgbm90IGF2b2lkYWJsZSBhcyB3ZSBuZWVkIGBzcGFuVG9KU09OYCBpbiBgc3BhblV0aWxzLnRzYCwgd2hpY2ggaW4gdHVybiBpcyBuZWVkZWQgYnkgYHNwYW4udHNgIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICogQW5kIGBzcGFuVG9KU09OYCBuZWVkcyB0aGUgU3BhbiBjbGFzcyBmcm9tIGBzcGFuLnRzYCB0byBjaGVjayBoZXJlLgogKiBUT0RPIHY4OiBXaGVuIHdlIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBzdHVmZiBmcm9tIGBzcGFuLnRzYCwgd2UgY2FuIHJlbW92ZSB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSBhZ2Fpbi4KICovCmZ1bmN0aW9uIHNwYW5Ub0pTT04oc3BhbikgewogIGlmIChzcGFuSXNTcGFuQ2xhc3Moc3BhbikpIHsKICAgIHJldHVybiBzcGFuLmdldFNwYW5KU09OKCk7CiAgfQoKICAvLyBGYWxsYmFjazogV2UgYWxzbyBjaGVjayBmb3IgYC50b0pTT04oKWAgaGVyZS4uLgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGlmICh0eXBlb2Ygc3Bhbi50b0pTT04gPT09ICdmdW5jdGlvbicpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgcmV0dXJuIHNwYW4udG9KU09OKCk7CiAgfQoKICByZXR1cm4ge307Cn0KCi8qKgogKiBTYWRseSwgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY3kgY2hlY2tzIHdlIGNhbm5vdCBhY3R1YWxseSBpbXBvcnQgdGhlIFNwYW4gY2xhc3MgaGVyZSBhbmQgY2hlY2sgZm9yIGluc3RhbmNlb2YuCiAqIDooIFNvIGluc3RlYWQgd2UgYXBwcm94aW1hdGUgdGhpcyBieSBjaGVja2luZyBpZiBpdCBoYXMgdGhlIGBnZXRTcGFuSlNPTmAgbWV0aG9kLgogKi8KZnVuY3Rpb24gc3BhbklzU3BhbkNsYXNzKHNwYW4pIHsKICByZXR1cm4gdHlwZW9mIChzcGFuICkuZ2V0U3BhbkpTT04gPT09ICdmdW5jdGlvbic7Cn0KCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgYSBzcGFuIGlzIHNhbXBsZWQuCiAqIEluIG1vc3QgY2FzZXMsIHlvdSBzaG91bGQganVzdCB1c2UgYHNwYW4uaXNSZWNvcmRpbmcoKWAgaW5zdGVhZC4KICogSG93ZXZlciwgdGhpcyBoYXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2VtYW50aWMsIGFzIGl0IGFsc28gcmV0dXJucyBmYWxzZSBpZiB0aGUgc3BhbiBpcyBmaW5pc2hlZC4KICogU28gaW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBkaXN0aW5jdGlvbiBpcyBpbXBvcnRhbnQsIHVzZSB0aGlzIG1ldGhvZC4KICovCmZ1bmN0aW9uIHNwYW5Jc1NhbXBsZWQoc3BhbikgewogIC8vIFdlIGFsaWduIG91ciB0cmFjZSBmbGFncyB3aXRoIHRoZSBvbmVzIE9wZW5UZWxlbWV0cnkgdXNlCiAgLy8gU28gd2UgYWxzbyBjaGVjayBmb3Igc2FtcGxlZCB0aGUgc2FtZSB3YXkgdGhleSBkby4KICBjb25zdCB7IHRyYWNlRmxhZ3MgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZQogIHJldHVybiBCb29sZWFuKHRyYWNlRmxhZ3MgJiBUUkFDRV9GTEFHX1NBTVBMRUQpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIGNsaWVudC4KICovCmZ1bmN0aW9uIGdldENsaWVudCgpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICByZXR1cm4gZ2V0Q3VycmVudEh1YigpLmdldENsaWVudCgpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIHNjb3BlLgogKi8KZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkgewogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBnZXRDdXJyZW50SHViKCkuZ2V0U2NvcGUoKTsKfQoKLyoqCiAqIFJldHVybnMgdGhlIHJvb3Qgc3BhbiBvZiBhIGdpdmVuIHNwYW4uCiAqCiAqIEFzIGxvbmcgYXMgd2UgdXNlIGBUcmFuc2FjdGlvbmBzIGludGVybmFsbHksIHRoZSByZXR1cm5lZCByb290IHNwYW4KICogd2lsbCBiZSBhIGBUcmFuc2FjdGlvbmAgYnV0IGJlIGF3YXJlIHRoYXQgdGhpcyBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KICoKICogSWYgdGhlIGdpdmVuIHNwYW4gaGFzIG5vIHJvb3Qgc3BhbiBvciB0cmFuc2FjdGlvbiwgYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuCiAqLwpmdW5jdGlvbiBnZXRSb290U3BhbihzcGFuKSB7CiAgLy8gVE9ETyAodjgpOiBSZW1vdmUgdGhpcyBjaGVjayBhbmQganVzdCByZXR1cm4gc3BhbgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBzcGFuLnRyYW5zYWN0aW9uOwp9CgovKioKICogQ3JlYXRlcyBhIGR5bmFtaWMgc2FtcGxpbmcgY29udGV4dCBmcm9tIGEgY2xpZW50LgogKgogKiBEaXNwYXRjaGVzIHRoZSBgY3JlYXRlRHNjYCBsaWZlY3ljbGUgaG9vayBhcyBhIHNpZGUgZWZmZWN0LgogKi8KZnVuY3Rpb24gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoCiAgdHJhY2VfaWQsCiAgY2xpZW50LAogIHNjb3BlLAopIHsKICBjb25zdCBvcHRpb25zID0gY2xpZW50LmdldE9wdGlvbnMoKTsKCiAgY29uc3QgeyBwdWJsaWNLZXk6IHB1YmxpY19rZXkgfSA9IGNsaWVudC5nZXREc24oKSB8fCB7fTsKICAvLyBUT0RPKHY4KTogUmVtb3ZlIHNlZ21lbnQgZnJvbSBVc2VyCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgY29uc3QgeyBzZWdtZW50OiB1c2VyX3NlZ21lbnQgfSA9IChzY29wZSAmJiBzY29wZS5nZXRVc2VyKCkpIHx8IHt9OwoKICBjb25zdCBkc2MgPSBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCB8fCBERUZBVUxUX0VOVklST05NRU5ULAogICAgcmVsZWFzZTogb3B0aW9ucy5yZWxlYXNlLAogICAgdXNlcl9zZWdtZW50LAogICAgcHVibGljX2tleSwKICAgIHRyYWNlX2lkLAogIH0pIDsKCiAgY2xpZW50LmVtaXQgJiYgY2xpZW50LmVtaXQoJ2NyZWF0ZURzYycsIGRzYyk7CgogIHJldHVybiBkc2M7Cn0KCi8qKgogKiBBIFNwYW4gd2l0aCBhIGZyb3plbiBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQuCiAqLwoKLyoqCiAqIENyZWF0ZXMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQgZnJvbSBhIHNwYW4gKGFuZCBjbGllbnQgYW5kIHNjb3BlKQogKgogKiBAcGFyYW0gc3BhbiB0aGUgc3BhbiBmcm9tIHdoaWNoIGEgZmV3IHZhbHVlcyBsaWtlIHRoZSByb290IHNwYW4gbmFtZSBhbmQgc2FtcGxlIHJhdGUgYXJlIGV4dHJhY3RlZC4KICoKICogQHJldHVybnMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQKICovCmZ1bmN0aW9uIGdldER5bmFtaWNTYW1wbGluZ0NvbnRleHRGcm9tU3BhbihzcGFuKSB7CiAgY29uc3QgY2xpZW50ID0gZ2V0Q2xpZW50KCk7CiAgaWYgKCFjbGllbnQpIHsKICAgIHJldHVybiB7fTsKICB9CgogIC8vIHBhc3NpbmcgZW1pdD1mYWxzZSBoZXJlIHRvIG9ubHkgZW1pdCBsYXRlciBvbmNlIHRoZSBEU0MgaXMgYWN0dWFsbHkgcG9wdWxhdGVkCiAgY29uc3QgZHNjID0gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoc3BhblRvSlNPTihzcGFuKS50cmFjZV9pZCB8fCAnJywgY2xpZW50LCBnZXRDdXJyZW50U2NvcGUoKSk7CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIGNvbnN0IHR4biA9IGdldFJvb3RTcGFuKHNwYW4pIDsKICBpZiAoIXR4bikgewogICAgcmV0dXJuIGRzYzsKICB9CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIC8vIEZvciBub3cgd2UgbmVlZCB0byBhdm9pZCBicmVha2luZyB1c2VycyB3aG8gZGlyZWN0bHkgY3JlYXRlZCBhIHR4biB3aXRoIGEgRFNDLCB3aGVyZSB0aGlzIGZpZWxkIGlzIHN0aWxsIHNldC4KICAvLyBAc2VlIFRyYW5zYWN0aW9uIGNsYXNzIGNvbnN0cnVjdG9yCiAgY29uc3QgdjdGcm96ZW5Ec2MgPSB0eG4gJiYgdHhuLl9mcm96ZW5EeW5hbWljU2FtcGxpbmdDb250ZXh0OwogIGlmICh2N0Zyb3plbkRzYykgewogICAgcmV0dXJuIHY3RnJvemVuRHNjOwogIH0KCiAgLy8gVE9ETyAodjgpOiBSZXBsYWNlIHR4bi5tZXRhZGF0YSB3aXRoIHR4bi5hdHRyaWJ1dGVzW10KICAvLyBXZSBjYW4ndCBkbyB0aGlzIHlldCBiZWNhdXNlIGF0dHJpYnV0ZXMgYXJlbid0IGFsd2F5cyBzZXQgeWV0LgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGNvbnN0IHsgc2FtcGxlUmF0ZTogbWF5YmVTYW1wbGVSYXRlLCBzb3VyY2UgfSA9IHR4bi5tZXRhZGF0YTsKICBpZiAobWF5YmVTYW1wbGVSYXRlICE9IG51bGwpIHsKICAgIGRzYy5zYW1wbGVfcmF0ZSA9IGAke21heWJlU2FtcGxlUmF0ZX1gOwogIH0KCiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIGEgdHJhbnNhY3Rpb24gbmFtZSBpbiB0aGUgRFNDIGlmIHRoZSBzb3VyY2UgaXMgInVybCIgYmVjYXVzZSBVUkxzIG1pZ2h0IGNvbnRhaW4gUElJCiAgY29uc3QganNvblNwYW4gPSBzcGFuVG9KU09OKHR4bik7CgogIC8vIGFmdGVyIEpTT04gY29udmVyc2lvbiwgdHhuLm5hbWUgYmVjb21lcyBqc29uU3Bhbi5kZXNjcmlwdGlvbgogIGlmIChzb3VyY2UgJiYgc291cmNlICE9PSAndXJsJykgewogICAgZHNjLnRyYW5zYWN0aW9uID0ganNvblNwYW4uZGVzY3JpcHRpb247CiAgfQoKICBkc2Muc2FtcGxlZCA9IFN0cmluZyhzcGFuSXNTYW1wbGVkKHR4bikpOwoKICBjbGllbnQuZW1pdCAmJiBjbGllbnQuZW1pdCgnY3JlYXRlRHNjJywgZHNjKTsKCiAgcmV0dXJuIGRzYzsKfQoKLyoqCiAqIEFwcGxpZXMgZGF0YSBmcm9tIHRoZSBzY29wZSB0byB0aGUgZXZlbnQgYW5kIHJ1bnMgYWxsIGV2ZW50IHByb2Nlc3NvcnMgb24gaXQuCiAqLwpmdW5jdGlvbiBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7IGZpbmdlcnByaW50LCBzcGFuLCBicmVhZGNydW1icywgc2RrUHJvY2Vzc2luZ01ldGFkYXRhIH0gPSBkYXRhOwoKICAvLyBBcHBseSBnZW5lcmFsIGRhdGEKICBhcHBseURhdGFUb0V2ZW50KGV2ZW50LCBkYXRhKTsKCiAgLy8gV2Ugd2FudCB0byBzZXQgdGhlIHRyYWNlIGNvbnRleHQgZm9yIG5vcm1hbCBldmVudHMgb25seSBpZiB0aGVyZSBpc24ndCBhbHJlYWR5CiAgLy8gYSB0cmFjZSBjb250ZXh0IG9uIHRoZSBldmVudC4gVGhlcmUgaXMgYSBwcm9kdWN0IGZlYXR1cmUgaW4gcGxhY2Ugd2hlcmUgd2UgbGluawogIC8vIGVycm9ycyB3aXRoIHRyYW5zYWN0aW9uIGFuZCBpdCByZWxpZXMgb24gdGhhdC4KICBpZiAoc3BhbikgewogICAgYXBwbHlTcGFuVG9FdmVudChldmVudCwgc3Bhbik7CiAgfQoKICBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpOwogIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icyk7CiAgYXBwbHlTZGtNZXRhZGF0YVRvRXZlbnQoZXZlbnQsIHNka1Byb2Nlc3NpbmdNZXRhZGF0YSk7Cn0KCmZ1bmN0aW9uIGFwcGx5RGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7CiAgICBleHRyYSwKICAgIHRhZ3MsCiAgICB1c2VyLAogICAgY29udGV4dHMsCiAgICBsZXZlbCwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdHJhbnNhY3Rpb25OYW1lLAogIH0gPSBkYXRhOwoKICBjb25zdCBjbGVhbmVkRXh0cmEgPSBkcm9wVW5kZWZpbmVkS2V5cyhleHRyYSk7CiAgaWYgKGNsZWFuZWRFeHRyYSAmJiBPYmplY3Qua2V5cyhjbGVhbmVkRXh0cmEpLmxlbmd0aCkgewogICAgZXZlbnQuZXh0cmEgPSB7IC4uLmNsZWFuZWRFeHRyYSwgLi4uZXZlbnQuZXh0cmEgfTsKICB9CgogIGNvbnN0IGNsZWFuZWRUYWdzID0gZHJvcFVuZGVmaW5lZEtleXModGFncyk7CiAgaWYgKGNsZWFuZWRUYWdzICYmIE9iamVjdC5rZXlzKGNsZWFuZWRUYWdzKS5sZW5ndGgpIHsKICAgIGV2ZW50LnRhZ3MgPSB7IC4uLmNsZWFuZWRUYWdzLCAuLi5ldmVudC50YWdzIH07CiAgfQoKICBjb25zdCBjbGVhbmVkVXNlciA9IGRyb3BVbmRlZmluZWRLZXlzKHVzZXIpOwogIGlmIChjbGVhbmVkVXNlciAmJiBPYmplY3Qua2V5cyhjbGVhbmVkVXNlcikubGVuZ3RoKSB7CiAgICBldmVudC51c2VyID0geyAuLi5jbGVhbmVkVXNlciwgLi4uZXZlbnQudXNlciB9OwogIH0KCiAgY29uc3QgY2xlYW5lZENvbnRleHRzID0gZHJvcFVuZGVmaW5lZEtleXMoY29udGV4dHMpOwogIGlmIChjbGVhbmVkQ29udGV4dHMgJiYgT2JqZWN0LmtleXMoY2xlYW5lZENvbnRleHRzKS5sZW5ndGgpIHsKICAgIGV2ZW50LmNvbnRleHRzID0geyAuLi5jbGVhbmVkQ29udGV4dHMsIC4uLmV2ZW50LmNvbnRleHRzIH07CiAgfQoKICBpZiAobGV2ZWwpIHsKICAgIGV2ZW50LmxldmVsID0gbGV2ZWw7CiAgfQoKICBpZiAodHJhbnNhY3Rpb25OYW1lKSB7CiAgICBldmVudC50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uTmFtZTsKICB9Cn0KCmZ1bmN0aW9uIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icykgewogIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWJzID0gWy4uLihldmVudC5icmVhZGNydW1icyB8fCBbXSksIC4uLmJyZWFkY3J1bWJzXTsKICBldmVudC5icmVhZGNydW1icyA9IG1lcmdlZEJyZWFkY3J1bWJzLmxlbmd0aCA/IG1lcmdlZEJyZWFkY3J1bWJzIDogdW5kZWZpbmVkOwp9CgpmdW5jdGlvbiBhcHBseVNka01ldGFkYXRhVG9FdmVudChldmVudCwgc2RrUHJvY2Vzc2luZ01ldGFkYXRhKSB7CiAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgLi4uZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogICAgLi4uc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogIH07Cn0KCmZ1bmN0aW9uIGFwcGx5U3BhblRvRXZlbnQoZXZlbnQsIHNwYW4pIHsKICBldmVudC5jb250ZXh0cyA9IHsgdHJhY2U6IHNwYW5Ub1RyYWNlQ29udGV4dChzcGFuKSwgLi4uZXZlbnQuY29udGV4dHMgfTsKICBjb25zdCByb290U3BhbiA9IGdldFJvb3RTcGFuKHNwYW4pOwogIGlmIChyb290U3BhbikgewogICAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgICBkeW5hbWljU2FtcGxpbmdDb250ZXh0OiBnZXREeW5hbWljU2FtcGxpbmdDb250ZXh0RnJvbVNwYW4oc3BhbiksCiAgICAgIC4uLmV2ZW50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgIH07CiAgICBjb25zdCB0cmFuc2FjdGlvbk5hbWUgPSBzcGFuVG9KU09OKHJvb3RTcGFuKS5kZXNjcmlwdGlvbjsKICAgIGlmICh0cmFuc2FjdGlvbk5hbWUpIHsKICAgICAgZXZlbnQudGFncyA9IHsgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uTmFtZSwgLi4uZXZlbnQudGFncyB9OwogICAgfQogIH0KfQoKLyoqCiAqIEFwcGxpZXMgZmluZ2VycHJpbnQgZnJvbSB0aGUgc2NvcGUgdG8gdGhlIGV2ZW50IGlmIHRoZXJlJ3Mgb25lLAogKiB1c2VzIG1lc3NhZ2UgaWYgdGhlcmUncyBvbmUgaW5zdGVhZCBvciBnZXQgcmlkIG9mIGVtcHR5IGZpbmdlcnByaW50CiAqLwpmdW5jdGlvbiBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpIHsKICAvLyBNYWtlIHN1cmUgaXQncyBhbiBhcnJheSBmaXJzdCBhbmQgd2UgYWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgaW4gcGxhY2UKICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50ID8gYXJyYXlpZnkoZXZlbnQuZmluZ2VycHJpbnQpIDogW107CgogIC8vIElmIHdlIGhhdmUgc29tZXRoaW5nIG9uIHRoZSBzY29wZSwgdGhlbiBtZXJnZSBpdCB3aXRoIGV2ZW50CiAgaWYgKGZpbmdlcnByaW50KSB7CiAgICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50LmNvbmNhdChmaW5nZXJwcmludCk7CiAgfQoKICAvLyBJZiB3ZSBoYXZlIG5vIGRhdGEgYXQgYWxsLCByZW1vdmUgZW1wdHkgYXJyYXkgZGVmYXVsdAogIGlmIChldmVudC5maW5nZXJwcmludCAmJiAhZXZlbnQuZmluZ2VycHJpbnQubGVuZ3RoKSB7CiAgICBkZWxldGUgZXZlbnQuZmluZ2VycHJpbnQ7CiAgfQp9CgovKioKICogRGVmYXVsdCB2YWx1ZSBmb3IgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuCiAqLwpjb25zdCBERUZBVUxUX01BWF9CUkVBRENSVU1CUyA9IDEwMDsKCi8qKgogKiBIb2xkcyBhZGRpdGlvbmFsIGV2ZW50IGluZm9ybWF0aW9uLiB7QGxpbmsgU2NvcGUuYXBwbHlUb0V2ZW50fSB3aWxsIGJlCiAqIGNhbGxlZCBieSB0aGUgY2xpZW50IGJlZm9yZSBhbiBldmVudCB3aWxsIGJlIHNlbnQuCiAqLwpjbGFzcyBTY29wZSAgewogIC8qKiBGbGFnIGlmIG5vdGlmeWluZyBpcyBoYXBwZW5pbmcuICovCgogIC8qKiBDYWxsYmFjayBmb3IgY2xpZW50IHRvIHJlY2VpdmUgc2NvcGUgY2hhbmdlcy4gKi8KCiAgLyoqIENhbGxiYWNrIGxpc3QgdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB7QGxpbmsgYXBwbHlUb0V2ZW50fS4gKi8KCiAgLyoqIEFycmF5IG9mIGJyZWFkY3J1bWJzLiAqLwoKICAvKiogVXNlciAqLwoKICAvKiogVGFncyAqLwoKICAvKiogRXh0cmEgKi8KCiAgLyoqIENvbnRleHRzICovCgogIC8qKiBBdHRhY2htZW50cyAqLwoKICAvKiogUHJvcGFnYXRpb24gQ29udGV4dCBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAqLwoKICAvKioKICAgKiBBIHBsYWNlIHRvIHN0YXNoIGRhdGEgd2hpY2ggaXMgbmVlZGVkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIFNESydzIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUgYnV0IHdoaWNoIHNob3VsZG4ndCBnZXQKICAgKiBzZW50IHRvIFNlbnRyeQogICAqLwoKICAvKiogRmluZ2VycHJpbnQgKi8KCiAgLyoqIFNldmVyaXR5ICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCgogIC8qKgogICAqIFRyYW5zYWN0aW9uIE5hbWUKICAgKi8KCiAgLyoqIFNwYW4gKi8KCiAgLyoqIFNlc3Npb24gKi8KCiAgLyoqIFJlcXVlc3QgTW9kZSBTZXNzaW9uIFN0YXR1cyAqLwoKICAvKiogVGhlIGNsaWVudCBvbiB0aGlzIHNjb3BlICovCgogIC8vIE5PVEU6IEFueSBmaWVsZCB3aGljaCBnZXRzIGFkZGVkIGhlcmUgc2hvdWxkIGdldCBhZGRlZCBub3Qgb25seSB0byB0aGUgY29uc3RydWN0b3IgYnV0IGFsc28gdG8gdGhlIGBjbG9uZWAgbWV0aG9kLgoKICAgY29uc3RydWN0b3IoKSB7CiAgICB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzID0gW107CiAgICB0aGlzLl9ldmVudFByb2Nlc3NvcnMgPSBbXTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gW107CiAgICB0aGlzLl9hdHRhY2htZW50cyA9IFtdOwogICAgdGhpcy5fdXNlciA9IHt9OwogICAgdGhpcy5fdGFncyA9IHt9OwogICAgdGhpcy5fZXh0cmEgPSB7fTsKICAgIHRoaXMuX2NvbnRleHRzID0ge307CiAgICB0aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgPSB7fTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgfQoKICAvKioKICAgKiBJbmhlcml0IHZhbHVlcyBmcm9tIHRoZSBwYXJlbnQgc2NvcGUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzY29wZS5jbG9uZSgpYCBhbmQgYG5ldyBTY29wZSgpYCBpbnN0ZWFkLgogICAqLwogICBzdGF0aWMgY2xvbmUoc2NvcGUpIHsKICAgIHJldHVybiBzY29wZSA/IHNjb3BlLmNsb25lKCkgOiBuZXcgU2NvcGUoKTsKICB9CgogIC8qKgogICAqIENsb25lIHRoaXMgc2NvcGUgaW5zdGFuY2UuCiAgICovCiAgIGNsb25lKCkgewogICAgY29uc3QgbmV3U2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgIG5ld1Njb3BlLl9icmVhZGNydW1icyA9IFsuLi50aGlzLl9icmVhZGNydW1ic107CiAgICBuZXdTY29wZS5fdGFncyA9IHsgLi4udGhpcy5fdGFncyB9OwogICAgbmV3U2NvcGUuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSB9OwogICAgbmV3U2NvcGUuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cyB9OwogICAgbmV3U2NvcGUuX3VzZXIgPSB0aGlzLl91c2VyOwogICAgbmV3U2NvcGUuX2xldmVsID0gdGhpcy5fbGV2ZWw7CiAgICBuZXdTY29wZS5fc3BhbiA9IHRoaXMuX3NwYW47CiAgICBuZXdTY29wZS5fc2Vzc2lvbiA9IHRoaXMuX3Nlc3Npb247CiAgICBuZXdTY29wZS5fdHJhbnNhY3Rpb25OYW1lID0gdGhpcy5fdHJhbnNhY3Rpb25OYW1lOwogICAgbmV3U2NvcGUuX2ZpbmdlcnByaW50ID0gdGhpcy5fZmluZ2VycHJpbnQ7CiAgICBuZXdTY29wZS5fZXZlbnRQcm9jZXNzb3JzID0gWy4uLnRoaXMuX2V2ZW50UHJvY2Vzc29yc107CiAgICBuZXdTY29wZS5fcmVxdWVzdFNlc3Npb24gPSB0aGlzLl9yZXF1ZXN0U2Vzc2lvbjsKICAgIG5ld1Njb3BlLl9hdHRhY2htZW50cyA9IFsuLi50aGlzLl9hdHRhY2htZW50c107CiAgICBuZXdTY29wZS5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0geyAuLi50aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgfTsKICAgIG5ld1Njb3BlLl9wcm9wYWdhdGlvbkNvbnRleHQgPSB7IC4uLnRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCB9OwogICAgbmV3U2NvcGUuX2NsaWVudCA9IHRoaXMuX2NsaWVudDsKCiAgICByZXR1cm4gbmV3U2NvcGU7CiAgfQoKICAvKiogVXBkYXRlIHRoZSBjbGllbnQgb24gdGhlIHNjb3BlLiAqLwogICBzZXRDbGllbnQoY2xpZW50KSB7CiAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7CiAgfQoKICAvKioKICAgKiBHZXQgdGhlIGNsaWVudCBhc3NpZ25lZCB0byB0aGlzIHNjb3BlLgogICAqCiAgICogSXQgaXMgZ2VuZXJhbGx5IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgZ2xvYmFsIGZ1bmN0aW9uIGBTZW50cnkuZ2V0Q2xpZW50KClgIGluc3RlYWQsIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuCiAgICovCiAgIGdldENsaWVudCgpIHsKICAgIHJldHVybiB0aGlzLl9jbGllbnQ7CiAgfQoKICAvKioKICAgKiBBZGQgaW50ZXJuYWwgb24gY2hhbmdlIGxpc3RlbmVyLiBVc2VkIGZvciBzdWIgU0RLcyB0aGF0IG5lZWQgdG8gc3RvcmUgdGhlIHNjb3BlLgogICAqIEBoaWRkZW4KICAgKi8KICAgYWRkU2NvcGVMaXN0ZW5lcihjYWxsYmFjaykgewogICAgdGhpcy5fc2NvcGVMaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBhZGRFdmVudFByb2Nlc3NvcihjYWxsYmFjaykgewogICAgdGhpcy5fZXZlbnRQcm9jZXNzb3JzLnB1c2goY2FsbGJhY2spOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRVc2VyKHVzZXIpIHsKICAgIC8vIElmIG51bGwgaXMgcGFzc2VkIHdlIHdhbnQgdG8gdW5zZXQgZXZlcnl0aGluZywgYnV0IHN0aWxsIGRlZmluZSBrZXlzLAogICAgLy8gc28gdGhhdCBsYXRlciBkb3duIGluIHRoZSBwaXBlbGluZSBhbnkgZXhpc3RpbmcgdmFsdWVzIGFyZSBjbGVhcmVkLgogICAgdGhpcy5fdXNlciA9IHVzZXIgfHwgewogICAgICBlbWFpbDogdW5kZWZpbmVkLAogICAgICBpZDogdW5kZWZpbmVkLAogICAgICBpcF9hZGRyZXNzOiB1bmRlZmluZWQsCiAgICAgIHNlZ21lbnQ6IHVuZGVmaW5lZCwKICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgIH07CgogICAgaWYgKHRoaXMuX3Nlc3Npb24pIHsKICAgICAgdXBkYXRlU2Vzc2lvbih0aGlzLl9zZXNzaW9uLCB7IHVzZXIgfSk7CiAgICB9CgogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0VXNlcigpIHsKICAgIHJldHVybiB0aGlzLl91c2VyOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UmVxdWVzdFNlc3Npb24oKSB7CiAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFNlc3Npb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRSZXF1ZXN0U2Vzc2lvbihyZXF1ZXN0U2Vzc2lvbikgewogICAgdGhpcy5fcmVxdWVzdFNlc3Npb24gPSByZXF1ZXN0U2Vzc2lvbjsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgc2V0VGFncyh0YWdzKSB7CiAgICB0aGlzLl90YWdzID0gewogICAgICAuLi50aGlzLl90YWdzLAogICAgICAuLi50YWdzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldFRhZyhrZXksIHZhbHVlKSB7CiAgICB0aGlzLl90YWdzID0geyAuLi50aGlzLl90YWdzLCBba2V5XTogdmFsdWUgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIHRoaXMuX2V4dHJhID0gewogICAgICAuLi50aGlzLl9leHRyYSwKICAgICAgLi4uZXh0cmFzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgW2tleV06IGV4dHJhIH07CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRGaW5nZXJwcmludChmaW5nZXJwcmludCkgewogICAgdGhpcy5fZmluZ2VycHJpbnQgPSBmaW5nZXJwcmludDsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldExldmVsKAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICApIHsKICAgIHRoaXMuX2xldmVsID0gbGV2ZWw7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBuYW1lIG9uIHRoZSBzY29wZSBmb3IgZnV0dXJlIGV2ZW50cy4KICAgKi8KICAgc2V0VHJhbnNhY3Rpb25OYW1lKG5hbWUpIHsKICAgIHRoaXMuX3RyYW5zYWN0aW9uTmFtZSA9IG5hbWU7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRDb250ZXh0KGtleSwgY29udGV4dCkgewogICAgaWYgKGNvbnRleHQgPT09IG51bGwpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZQogICAgICBkZWxldGUgdGhpcy5fY29udGV4dHNba2V5XTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX2NvbnRleHRzW2tleV0gPSBjb250ZXh0OwogICAgfQoKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFNldHMgdGhlIFNwYW4gb24gdGhlIHNjb3BlLgogICAqIEBwYXJhbSBzcGFuIFNwYW4KICAgKiBAZGVwcmVjYXRlZCBJbnN0ZWFkIG9mIHNldHRpbmcgYSBzcGFuIG9uIGEgc2NvcGUsIHVzZSBgc3RhcnRTcGFuKClgL2BzdGFydFNwYW5NYW51YWwoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0U3BhbihzcGFuKSB7CiAgICB0aGlzLl9zcGFuID0gc3BhbjsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBTcGFuYCBpZiB0aGVyZSBpcyBvbmUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRBY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNwYW4oKSB7CiAgICByZXR1cm4gdGhpcy5fc3BhbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBUcmFuc2FjdGlvbmAgYXR0YWNoZWQgdG8gdGhlIHNjb3BlIChpZiB0aGVyZSBpcyBvbmUpLgogICAqIEBkZXByZWNhdGVkIFlvdSBzaG91bGQgbm90IHJlbHkgb24gdGhlIHRyYW5zYWN0aW9uLCBidXQganVzdCB1c2UgYHN0YXJ0U3BhbigpYCBBUElzIGluc3RlYWQuCiAgICovCiAgIGdldFRyYW5zYWN0aW9uKCkgewogICAgLy8gT2Z0ZW4sIHRoaXMgc3BhbiAoaWYgaXQgZXhpc3RzIGF0IGFsbCkgd2lsbCBiZSBhIHRyYW5zYWN0aW9uLCBidXQgaXQncyBub3QgZ3VhcmFudGVlZCB0byBiZS4gUmVnYXJkbGVzcywgaXQgd2lsbAogICAgLy8gaGF2ZSBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnRseS1hY3RpdmUgdHJhbnNhY3Rpb24uCiAgICBjb25zdCBzcGFuID0gdGhpcy5fc3BhbjsKICAgIC8vIENhbm5vdCByZXBsYWNlIHdpdGggZ2V0Um9vdFNwYW4gYmVjYXVzZSBnZXRSb290U3BhbiByZXR1cm5zIGEgc3Bhbiwgbm90IGEgdHJhbnNhY3Rpb24KICAgIC8vIEFsc28sIHRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBhbnl3YXkuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHJldHVybiBzcGFuICYmIHNwYW4udHJhbnNhY3Rpb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRTZXNzaW9uKHNlc3Npb24pIHsKICAgIGlmICghc2Vzc2lvbikgewogICAgICBkZWxldGUgdGhpcy5fc2Vzc2lvbjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX3Nlc3Npb24gPSBzZXNzaW9uOwogICAgfQogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0U2Vzc2lvbigpIHsKICAgIHJldHVybiB0aGlzLl9zZXNzaW9uOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgdXBkYXRlKGNhcHR1cmVDb250ZXh0KSB7CiAgICBpZiAoIWNhcHR1cmVDb250ZXh0KSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IHNjb3BlVG9NZXJnZSA9IHR5cGVvZiBjYXB0dXJlQ29udGV4dCA9PT0gJ2Z1bmN0aW9uJyA/IGNhcHR1cmVDb250ZXh0KHRoaXMpIDogY2FwdHVyZUNvbnRleHQ7CgogICAgaWYgKHNjb3BlVG9NZXJnZSBpbnN0YW5jZW9mIFNjb3BlKSB7CiAgICAgIGNvbnN0IHNjb3BlRGF0YSA9IHNjb3BlVG9NZXJnZS5nZXRTY29wZURhdGEoKTsKCiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlRGF0YS50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVEYXRhLmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVEYXRhLmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZURhdGEudXNlciAmJiBPYmplY3Qua2V5cyhzY29wZURhdGEudXNlcikubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5fdXNlciA9IHNjb3BlRGF0YS51c2VyOwogICAgICB9CiAgICAgIGlmIChzY29wZURhdGEubGV2ZWwpIHsKICAgICAgICB0aGlzLl9sZXZlbCA9IHNjb3BlRGF0YS5sZXZlbDsKICAgICAgfQogICAgICBpZiAoc2NvcGVEYXRhLmZpbmdlcnByaW50Lmxlbmd0aCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVEYXRhLmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZVRvTWVyZ2UuZ2V0UmVxdWVzdFNlc3Npb24oKSkgewogICAgICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gc2NvcGVUb01lcmdlLmdldFJlcXVlc3RTZXNzaW9uKCk7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlRGF0YS5wcm9wYWdhdGlvbkNvbnRleHQpIHsKICAgICAgICB0aGlzLl9wcm9wYWdhdGlvbkNvbnRleHQgPSBzY29wZURhdGEucHJvcGFnYXRpb25Db250ZXh0OwogICAgICB9CiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc2NvcGVUb01lcmdlKSkgewogICAgICBjb25zdCBzY29wZUNvbnRleHQgPSBjYXB0dXJlQ29udGV4dCA7CiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlQ29udGV4dC50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVDb250ZXh0LmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVDb250ZXh0LmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZUNvbnRleHQudXNlcikgewogICAgICAgIHRoaXMuX3VzZXIgPSBzY29wZUNvbnRleHQudXNlcjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LmxldmVsKSB7CiAgICAgICAgdGhpcy5fbGV2ZWwgPSBzY29wZUNvbnRleHQubGV2ZWw7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlQ29udGV4dC5maW5nZXJwcmludCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVDb250ZXh0LmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZUNvbnRleHQucmVxdWVzdFNlc3Npb24pIHsKICAgICAgICB0aGlzLl9yZXF1ZXN0U2Vzc2lvbiA9IHNjb3BlQ29udGV4dC5yZXF1ZXN0U2Vzc2lvbjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LnByb3BhZ2F0aW9uQ29udGV4dCkgewogICAgICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IHNjb3BlQ29udGV4dC5wcm9wYWdhdGlvbkNvbnRleHQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGNsZWFyKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX3RhZ3MgPSB7fTsKICAgIHRoaXMuX2V4dHJhID0ge307CiAgICB0aGlzLl91c2VyID0ge307CiAgICB0aGlzLl9jb250ZXh0cyA9IHt9OwogICAgdGhpcy5fbGV2ZWwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl90cmFuc2FjdGlvbk5hbWUgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9maW5nZXJwcmludCA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gdW5kZWZpbmVkOwogICAgdGhpcy5fc3BhbiA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3Nlc3Npb24gPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgdGhpcy5fYXR0YWNobWVudHMgPSBbXTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEJyZWFkY3J1bWIoYnJlYWRjcnVtYiwgbWF4QnJlYWRjcnVtYnMpIHsKICAgIGNvbnN0IG1heENydW1icyA9IHR5cGVvZiBtYXhCcmVhZGNydW1icyA9PT0gJ251bWJlcicgPyBtYXhCcmVhZGNydW1icyA6IERFRkFVTFRfTUFYX0JSRUFEQ1JVTUJTOwoKICAgIC8vIE5vIGRhdGEgaGFzIGJlZW4gY2hhbmdlZCwgc28gZG9uJ3Qgbm90aWZ5IHNjb3BlIGxpc3RlbmVycwogICAgaWYgKG1heENydW1icyA8PSAwKSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWIgPSB7CiAgICAgIHRpbWVzdGFtcDogZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpLAogICAgICAuLi5icmVhZGNydW1iLAogICAgfTsKCiAgICBjb25zdCBicmVhZGNydW1icyA9IHRoaXMuX2JyZWFkY3J1bWJzOwogICAgYnJlYWRjcnVtYnMucHVzaChtZXJnZWRCcmVhZGNydW1iKTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnMubGVuZ3RoID4gbWF4Q3J1bWJzID8gYnJlYWRjcnVtYnMuc2xpY2UoLW1heENydW1icykgOiBicmVhZGNydW1iczsKCiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwoKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0TGFzdEJyZWFkY3J1bWIoKSB7CiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnNbdGhpcy5fYnJlYWRjcnVtYnMubGVuZ3RoIC0gMV07CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBjbGVhckJyZWFkY3J1bWJzKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEF0dGFjaG1lbnQoYXR0YWNobWVudCkgewogICAgdGhpcy5fYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYGdldFNjb3BlRGF0YSgpYCBpbnN0ZWFkLgogICAqLwogICBnZXRBdHRhY2htZW50cygpIHsKICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNjb3BlRGF0YSgpOwoKICAgIHJldHVybiBkYXRhLmF0dGFjaG1lbnRzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgY2xlYXJBdHRhY2htZW50cygpIHsKICAgIHRoaXMuX2F0dGFjaG1lbnRzID0gW107CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKiBAaW5oZXJpdERvYyAqLwogICBnZXRTY29wZURhdGEoKSB7CiAgICBjb25zdCB7CiAgICAgIF9icmVhZGNydW1icywKICAgICAgX2F0dGFjaG1lbnRzLAogICAgICBfY29udGV4dHMsCiAgICAgIF90YWdzLAogICAgICBfZXh0cmEsCiAgICAgIF91c2VyLAogICAgICBfbGV2ZWwsCiAgICAgIF9maW5nZXJwcmludCwKICAgICAgX2V2ZW50UHJvY2Vzc29ycywKICAgICAgX3Byb3BhZ2F0aW9uQ29udGV4dCwKICAgICAgX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgICAgX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgX3NwYW4sCiAgICB9ID0gdGhpczsKCiAgICByZXR1cm4gewogICAgICBicmVhZGNydW1iczogX2JyZWFkY3J1bWJzLAogICAgICBhdHRhY2htZW50czogX2F0dGFjaG1lbnRzLAogICAgICBjb250ZXh0czogX2NvbnRleHRzLAogICAgICB0YWdzOiBfdGFncywKICAgICAgZXh0cmE6IF9leHRyYSwKICAgICAgdXNlcjogX3VzZXIsCiAgICAgIGxldmVsOiBfbGV2ZWwsCiAgICAgIGZpbmdlcnByaW50OiBfZmluZ2VycHJpbnQgfHwgW10sCiAgICAgIGV2ZW50UHJvY2Vzc29yczogX2V2ZW50UHJvY2Vzc29ycywKICAgICAgcHJvcGFnYXRpb25Db250ZXh0OiBfcHJvcGFnYXRpb25Db250ZXh0LAogICAgICBzZGtQcm9jZXNzaW5nTWV0YWRhdGE6IF9zZGtQcm9jZXNzaW5nTWV0YWRhdGEsCiAgICAgIHRyYW5zYWN0aW9uTmFtZTogX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgc3BhbjogX3NwYW4sCiAgICB9OwogIH0KCiAgLyoqCiAgICogQXBwbGllcyBkYXRhIGZyb20gdGhlIHNjb3BlIHRvIHRoZSBldmVudCBhbmQgcnVucyBhbGwgZXZlbnQgcHJvY2Vzc29ycyBvbiBpdC4KICAgKgogICAqIEBwYXJhbSBldmVudCBFdmVudAogICAqIEBwYXJhbSBoaW50IE9iamVjdCBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiwgZm9yIHVzZSBieSB0aGUgZXZlbnQgcHJvY2Vzc29ycy4KICAgKiBAaGlkZGVuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBhcHBseVNjb3BlRGF0YVRvRXZlbnQoKWAgZGlyZWN0bHkKICAgKi8KICAgYXBwbHlUb0V2ZW50KAogICAgZXZlbnQsCiAgICBoaW50ID0ge30sCiAgICBhZGRpdGlvbmFsRXZlbnRQcm9jZXNzb3JzID0gW10sCiAgKSB7CiAgICBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIHRoaXMuZ2V0U2NvcGVEYXRhKCkpOwoKICAgIC8vIFRPRE8gKHY4KTogVXBkYXRlIHRoaXMgb3JkZXIgdG8gYmU6IEdsb2JhbCA+IENsaWVudCA+IFNjb3BlCiAgICBjb25zdCBldmVudFByb2Nlc3NvcnMgPSBbCiAgICAgIC4uLmFkZGl0aW9uYWxFdmVudFByb2Nlc3NvcnMsCiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAuLi5nZXRHbG9iYWxFdmVudFByb2Nlc3NvcnMoKSwKICAgICAgLi4udGhpcy5fZXZlbnRQcm9jZXNzb3JzLAogICAgXTsKCiAgICByZXR1cm4gbm90aWZ5RXZlbnRQcm9jZXNzb3JzKGV2ZW50UHJvY2Vzc29ycywgZXZlbnQsIGhpbnQpOwogIH0KCiAgLyoqCiAgICogQWRkIGRhdGEgd2hpY2ggd2lsbCBiZSBhY2Nlc3NpYmxlIGR1cmluZyBldmVudCBwcm9jZXNzaW5nIGJ1dCB3b24ndCBnZXQgc2VudCB0byBTZW50cnkKICAgKi8KICAgc2V0U0RLUHJvY2Vzc2luZ01ldGFkYXRhKG5ld0RhdGEpIHsKICAgIHRoaXMuX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSA9IHsgLi4udGhpcy5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhLCAuLi5uZXdEYXRhIH07CgogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRQcm9wYWdhdGlvbkNvbnRleHQoY29udGV4dCkgewogICAgdGhpcy5fcHJvcGFnYXRpb25Db250ZXh0ID0gY29udGV4dDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UHJvcGFnYXRpb25Db250ZXh0KCkgewogICAgcmV0dXJuIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYW4gZXhjZXB0aW9uIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIGV4Y2VwdGlvbiBUaGUgZXhjZXB0aW9uIHRvIGNhcHR1cmUuCiAgICogQHBhcmFtIGhpbnQgT3B0aW5hbCBhZGRpdGlvbmFsIGRhdGEgdG8gYXR0YWNoIHRvIHRoZSBTZW50cnkgZXZlbnQuCiAgICogQHJldHVybnMgdGhlIGlkIG9mIHRoZSBjYXB0dXJlZCBTZW50cnkgZXZlbnQuCiAgICovCiAgIGNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CgogICAgaWYgKCF0aGlzLl9jbGllbnQpIHsKICAgICAgbG9nZ2VyLndhcm4oJ05vIGNsaWVudCBjb25maWd1cmVkIG9uIHNjb3BlIC0gd2lsbCBub3QgY2FwdHVyZSBleGNlcHRpb24hJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcignU2VudHJ5IHN5bnRoZXRpY0V4Y2VwdGlvbicpOwoKICAgIHRoaXMuX2NsaWVudC5jYXB0dXJlRXhjZXB0aW9uKAogICAgICBleGNlcHRpb24sCiAgICAgIHsKICAgICAgICBvcmlnaW5hbEV4Y2VwdGlvbjogZXhjZXB0aW9uLAogICAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgICAuLi5oaW50LAogICAgICAgIGV2ZW50X2lkOiBldmVudElkLAogICAgICB9LAogICAgICB0aGlzLAogICAgKTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYSBtZXNzYWdlIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gY2FwdHVyZS4KICAgKiBAcGFyYW0gbGV2ZWwgQW4gb3B0aW9uYWwgc2V2ZXJpdHkgbGV2ZWwgdG8gcmVwb3J0IHRoZSBtZXNzYWdlIHdpdGguCiAgICogQHBhcmFtIGhpbnQgT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhIHRvIGF0dGFjaCB0byB0aGUgU2VudHJ5IGV2ZW50LgogICAqIEByZXR1cm5zIHRoZSBpZCBvZiB0aGUgY2FwdHVyZWQgbWVzc2FnZS4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIG1lc3NhZ2UhJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcihtZXNzYWdlKTsKCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZU1lc3NhZ2UoCiAgICAgIG1lc3NhZ2UsCiAgICAgIGxldmVsLAogICAgICB7CiAgICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgICAgc3ludGhldGljRXhjZXB0aW9uLAogICAgICAgIC4uLmhpbnQsCiAgICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICAgIH0sCiAgICAgIHRoaXMsCiAgICApOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogQ2FwdHVyZXMgYSBtYW51YWxseSBjcmVhdGVkIGV2ZW50IGZvciB0aGlzIHNjb3BlIGFuZCBzZW5kcyBpdCB0byBTZW50cnkuCiAgICoKICAgKiBAcGFyYW0gZXhjZXB0aW9uIFRoZSBldmVudCB0byBjYXB0dXJlLgogICAqIEBwYXJhbSBoaW50IE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YSB0byBhdHRhY2ggdG8gdGhlIFNlbnRyeSBldmVudC4KICAgKiBAcmV0dXJucyB0aGUgaWQgb2YgdGhlIGNhcHR1cmVkIGV2ZW50LgogICAqLwogICBjYXB0dXJlRXZlbnQoZXZlbnQsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50IScpOwogICAgICByZXR1cm4gZXZlbnRJZDsKICAgIH0KCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0sIHRoaXMpOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogVGhpcyB3aWxsIGJlIGNhbGxlZCBvbiBldmVyeSBzZXQgY2FsbC4KICAgKi8KICAgX25vdGlmeVNjb3BlTGlzdGVuZXJzKCkgewogICAgLy8gV2UgbmVlZCB0aGlzIGNoZWNrIGZvciB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgdG8gYmUgYWJsZSB0byB3b3JrIG9uIHNjb3BlIGR1cmluZyB1cGRhdGVzCiAgICAvLyBJZiB0aGlzIGNoZWNrIGlzIG5vdCBoZXJlIHdlJ2xsIHByb2R1Y2UgZW5kbGVzcyByZWN1cnNpb24gd2hlbiBzb21ldGhpbmcgaXMgZG9uZSB3aXRoIHRoZSBzY29wZQogICAgLy8gZHVyaW5nIHRoZSBjYWxsYmFjay4KICAgIGlmICghdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzKSB7CiAgICAgIHRoaXMuX25vdGlmeWluZ0xpc3RlbmVycyA9IHRydWU7CiAgICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzLmZvckVhY2goY2FsbGJhY2sgPT4gewogICAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgICB9KTsKICAgICAgdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzID0gZmFsc2U7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBnZW5lcmF0ZVByb3BhZ2F0aW9uQ29udGV4dCgpIHsKICByZXR1cm4gewogICAgdHJhY2VJZDogdXVpZDQoKSwKICAgIHNwYW5JZDogdXVpZDQoKS5zdWJzdHJpbmcoMTYpLAogIH07Cn0KCmNvbnN0IFNES19WRVJTSU9OID0gJzcuMTIwLjQnOwoKLyoqCiAqIEFQSSBjb21wYXRpYmlsaXR5IHZlcnNpb24gb2YgdGhpcyBodWIuCiAqCiAqIFdBUk5JTkc6IFRoaXMgbnVtYmVyIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB3aGVuIHRoZSBnbG9iYWwgaW50ZXJmYWNlCiAqIGNoYW5nZXMgYW5kIG5ldyBtZXRob2RzIGFyZSBpbnRyb2R1Y2VkLgogKgogKiBAaGlkZGVuCiAqLwpjb25zdCBBUElfVkVSU0lPTiA9IHBhcnNlRmxvYXQoU0RLX1ZFUlNJT04pOwoKLyoqCiAqIERlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuIENhbiBiZSBvdmVyd3JpdHRlbgogKiB3aXRoIHtAbGluayBPcHRpb25zLm1heEJyZWFkY3J1bWJzfS4KICovCmNvbnN0IERFRkFVTFRfQlJFQURDUlVNQlMgPSAxMDA7CgovKioKICogQGRlcHJlY2F0ZWQgVGhlIGBIdWJgIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDggb2YgdGhlIFNESyBpbiBmYXZvdXIgb2YgYFNjb3BlYCBhbmQgYENsaWVudGAgb2JqZWN0cy4KICoKICogSWYgeW91IHByZXZpb3VzbHkgdXNlZCB0aGUgYEh1YmAgY2xhc3MgZGlyZWN0bHksIHJlcGxhY2UgaXQgd2l0aCBgU2NvcGVgIGFuZCBgQ2xpZW50YCBvYmplY3RzLiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNdWx0aXBsZSBTZW50cnkgSW5zdGFuY2VzXShodHRwczovL2RvY3Muc2VudHJ5LmlvL3BsYXRmb3Jtcy9qYXZhc2NyaXB0L2Jlc3QtcHJhY3RpY2VzL211bHRpcGxlLXNlbnRyeS1pbnN0YW5jZXMvKQogKiAtIFtCcm93c2VyIEV4dGVuc2lvbnNdKGh0dHBzOi8vZG9jcy5zZW50cnkuaW8vcGxhdGZvcm1zL2phdmFzY3JpcHQvYmVzdC1wcmFjdGljZXMvYnJvd3Nlci1leHRlbnNpb25zLykKICoKICogU29tZSBvZiBvdXIgQVBJcyBhcmUgdHlwZWQgd2l0aCB0aGUgSHViIGNsYXNzIGluc3RlYWQgb2YgdGhlIGludGVyZmFjZSAoZS5nLiBgZ2V0Q3VycmVudEh1YmApLiBNb3N0IG9mIHRoZW0gYXJlIGRlcHJlY2F0ZWQKICogdGhlbXNlbHZlcyBhbmQgd2lsbCBhbHNvIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA4LiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNaWdyYXRpb24gR3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvYmxvYi9kZXZlbG9wL01JR1JBVElPTi5tZCNkZXByZWNhdGUtaHViKQogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmNsYXNzIEh1YiAgewogIC8qKiBJcyBhIHtAbGluayBMYXllcn1bXSBjb250YWluaW5nIHRoZSBjbGllbnQgYW5kIHNjb3BlICovCgogIC8qKiBDb250YWlucyB0aGUgbGFzdCBldmVudCBpZCBvZiBhIGNhcHR1cmVkIGV2ZW50LiAgKi8KCiAgLyoqCiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgaHViLCB3aWxsIHB1c2ggb25lIHtAbGluayBMYXllcn0gaW50byB0aGUKICAgKiBpbnRlcm5hbCBzdGFjayBvbiBjcmVhdGlvbi4KICAgKgogICAqIEBwYXJhbSBjbGllbnQgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gc2NvcGUgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gdmVyc2lvbiBudW1iZXIsIGhpZ2hlciBudW1iZXIgbWVhbnMgaGlnaGVyIHByaW9yaXR5LgogICAqCiAgICogQGRlcHJlY2F0ZWQgSW5zdGFudGlhdGlvbiBvZiBIdWIgb2JqZWN0cyBpcyBkZXByZWNhdGVkIGFuZCB0aGUgY29uc3RydWN0b3Igd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gOCBvZiB0aGUgU0RLLgogICAqCiAgICogSWYgeW91IGFyZSBjdXJyZW50bHkgdXNpbmcgdGhlIEh1YiBmb3IgbXVsdGktY2xpZW50IHVzZSBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgaHViID0gbmV3IEh1YigpOwogICAqIGh1Yi5iaW5kQ2xpZW50KGNsaWVudCk7CiAgICogbWFrZU1haW4oaHViKQogICAqIGBgYAogICAqCiAgICogaW5zdGVhZCBpbml0aWFsaXplIHRoZSBjbGllbnQgYXMgZm9sbG93czoKICAgKgogICAqIGBgYAogICAqIC8vIE5FVwogICAqIFNlbnRyeS53aXRoSXNvbGF0aW9uU2NvcGUoKCkgPT4gewogICAqICAgIFNlbnRyeS5zZXRDdXJyZW50Q2xpZW50KGNsaWVudCk7CiAgICogICAgY2xpZW50LmluaXQoKTsKICAgKiB9KTsKICAgKiBgYGAKICAgKgogICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIEh1YiB0byBjYXB0dXJlIGV2ZW50cyBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpOwogICAqIGNvbnN0IGh1YiA9IG5ldyBIdWIoY2xpZW50KTsKICAgKiBodWIuY2FwdHVyZUV4Y2VwdGlvbigpCiAgICogYGBgCiAgICoKICAgKiBpbnN0ZWFkIGNhcHR1cmUgaXNvbGF0ZWQgZXZlbnRzIGFzIGZvbGxvd3M6CiAgICoKICAgKiBgYGAKICAgKiAvLyBORVcKICAgKiBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KCk7CiAgICogY29uc3Qgc2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgKiBzY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgKiBzY29wZS5jYXB0dXJlRXhjZXB0aW9uKCk7CiAgICogYGBgCiAgICovCiAgIGNvbnN0cnVjdG9yKAogICAgY2xpZW50LAogICAgc2NvcGUsCiAgICBpc29sYXRpb25TY29wZSwKICAgICAgX3ZlcnNpb24gPSBBUElfVkVSU0lPTiwKICApIHt0aGlzLl92ZXJzaW9uID0gX3ZlcnNpb247CiAgICBsZXQgYXNzaWduZWRTY29wZTsKICAgIGlmICghc2NvcGUpIHsKICAgICAgYXNzaWduZWRTY29wZSA9IG5ldyBTY29wZSgpOwogICAgICBhc3NpZ25lZFNjb3BlLnNldENsaWVudChjbGllbnQpOwogICAgfSBlbHNlIHsKICAgICAgYXNzaWduZWRTY29wZSA9IHNjb3BlOwogICAgfQoKICAgIGxldCBhc3NpZ25lZElzb2xhdGlvblNjb3BlOwogICAgaWYgKCFpc29sYXRpb25TY29wZSkgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gbmV3IFNjb3BlKCk7CiAgICAgIGFzc2lnbmVkSXNvbGF0aW9uU2NvcGUuc2V0Q2xpZW50KGNsaWVudCk7CiAgICB9IGVsc2UgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gaXNvbGF0aW9uU2NvcGU7CiAgICB9CgogICAgdGhpcy5fc3RhY2sgPSBbeyBzY29wZTogYXNzaWduZWRTY29wZSB9XTsKCiAgICBpZiAoY2xpZW50KSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICB0aGlzLmJpbmRDbGllbnQoY2xpZW50KTsKICAgIH0KCiAgICB0aGlzLl9pc29sYXRpb25TY29wZSA9IGFzc2lnbmVkSXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBDaGVja3MgaWYgdGhpcyBodWIncyB2ZXJzaW9uIGlzIG9sZGVyIHRoYW4gdGhlIGdpdmVuIHZlcnNpb24uCiAgICoKICAgKiBAcGFyYW0gdmVyc2lvbiBBIHZlcnNpb24gbnVtYmVyIHRvIGNvbXBhcmUgdG8uCiAgICogQHJldHVybiBUcnVlIGlmIHRoZSBnaXZlbiB2ZXJzaW9uIGlzIG5ld2VyOyBvdGhlcndpc2UgZmFsc2UuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgaXNPbGRlclRoYW4odmVyc2lvbikgewogICAgcmV0dXJuIHRoaXMuX3ZlcnNpb24gPCB2ZXJzaW9uOwogIH0KCiAgLyoqCiAgICogVGhpcyBiaW5kcyB0aGUgZ2l2ZW4gY2xpZW50IHRvIHRoZSBjdXJyZW50IHNjb3BlLgogICAqIEBwYXJhbSBjbGllbnQgQW4gU0RLIGNsaWVudCAoY2xpZW50KSBpbnN0YW5jZS4KICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgaW5pdEFuZEJpbmQoKWAgZGlyZWN0bHksIG9yIGBzZXRDdXJyZW50Q2xpZW50KClgIGFuZC9vciBgY2xpZW50LmluaXQoKWAgaW5zdGVhZC4KICAgKi8KICAgYmluZENsaWVudChjbGllbnQpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgdG9wID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgdG9wLmNsaWVudCA9IGNsaWVudDsKICAgIHRvcC5zY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKGNsaWVudCAmJiBjbGllbnQuc2V0dXBJbnRlZ3JhdGlvbnMpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIGNsaWVudC5zZXR1cEludGVncmF0aW9ucygpOwogICAgfQogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwdXNoU2NvcGUoKSB7CiAgICAvLyBXZSB3YW50IHRvIGNsb25lIHRoZSBjb250ZW50IG9mIHByZXYgc2NvcGUKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldFNjb3BlKCkuY2xvbmUoKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTdGFjaygpLnB1c2goewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY2xpZW50OiB0aGlzLmdldENsaWVudCgpLAogICAgICBzY29wZSwKICAgIH0pOwogICAgcmV0dXJuIHNjb3BlOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwb3BTY29wZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKHRoaXMuZ2V0U3RhY2soKS5sZW5ndGggPD0gMSkgcmV0dXJuIGZhbHNlOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gISF0aGlzLmdldFN0YWNrKCkucG9wKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkud2l0aFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIHdpdGhTY29wZShjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBzY29wZSA9IHRoaXMucHVzaFNjb3BlKCk7CgogICAgbGV0IG1heWJlUHJvbWlzZVJlc3VsdDsKICAgIHRyeSB7CiAgICAgIG1heWJlUHJvbWlzZVJlc3VsdCA9IGNhbGxiYWNrKHNjb3BlKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgdGhyb3cgZTsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZShtYXliZVByb21pc2VSZXN1bHQpKSB7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBpc1RoZW5hYmxlIHJldHVybnMgdGhlIHdyb25nIHR5cGUKICAgICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdC50aGVuKAogICAgICAgIHJlcyA9PiB7CiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfSwKICAgICAgICBlID0+IHsKICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAgICAgdGhpcy5wb3BTY29wZSgpOwogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9LAogICAgICApOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5wb3BTY29wZSgpOwogICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5nZXRDbGllbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0Q2xpZW50KCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLmNsaWVudCA7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBvZiB0aGUgdG9wIHN0YWNrLgogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0Q3VycmVudFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNjb3BlKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLnNjb3BlOwogIH0KCiAgLyoqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0SXNvbGF0aW9uU2NvcGUoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0SXNvbGF0aW9uU2NvcGUoKSB7CiAgICByZXR1cm4gdGhpcy5faXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBzdGFjayBmb3IgZG9tYWlucyBvciB0aGUgcHJvY2Vzcy4KICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgZ2V0U3RhY2soKSB7CiAgICByZXR1cm4gdGhpcy5fc3RhY2s7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSB0b3Btb3N0IHNjb3BlIGxheWVyIGluIHRoZSBvcmRlciBkb21haW4gPiBsb2NhbCA+IHByb2Nlc3MuCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGdldFN0YWNrVG9wKCkgewogICAgcmV0dXJuIHRoaXMuX3N0YWNrW3RoaXMuX3N0YWNrLmxlbmd0aCAtIDFdOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV4Y2VwdGlvbihleGNlcHRpb24sIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSAodGhpcy5fbGFzdEV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKSk7CiAgICBjb25zdCBzeW50aGV0aWNFeGNlcHRpb24gPSBuZXcgRXJyb3IoJ1NlbnRyeSBzeW50aGV0aWNFeGNlcHRpb24nKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLmNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCB7CiAgICAgIG9yaWdpbmFsRXhjZXB0aW9uOiBleGNlcHRpb24sCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgIGBTZW50cnkuY2FwdHVyZU1lc3NhZ2UoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UoCiAgICBtZXNzYWdlLAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICAgIGhpbnQsCiAgKSB7CiAgICBjb25zdCBldmVudElkID0gKHRoaXMuX2xhc3RFdmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCkpOwogICAgY29uc3Qgc3ludGhldGljRXhjZXB0aW9uID0gbmV3IEVycm9yKG1lc3NhZ2UpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIHsKICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5jYXB0dXJlRXZlbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV2ZW50KGV2ZW50LCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CiAgICBpZiAoIWV2ZW50LnR5cGUpIHsKICAgICAgdGhpcy5fbGFzdEV2ZW50SWQgPSBldmVudElkOwogICAgfQogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0pOwogICAgcmV0dXJuIGV2ZW50SWQ7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGxhc3RFdmVudElkKCkgewogICAgcmV0dXJuIHRoaXMuX2xhc3RFdmVudElkOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmFkZEJyZWFkY3J1bWIoKWAgaW5zdGVhZC4KICAgKi8KICAgYWRkQnJlYWRjcnVtYihicmVhZGNydW1iLCBoaW50KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwoKICAgIGlmICghY2xpZW50KSByZXR1cm47CgogICAgY29uc3QgeyBiZWZvcmVCcmVhZGNydW1iID0gbnVsbCwgbWF4QnJlYWRjcnVtYnMgPSBERUZBVUxUX0JSRUFEQ1JVTUJTIH0gPQogICAgICAoY2xpZW50LmdldE9wdGlvbnMgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgaWYgKG1heEJyZWFkY3J1bWJzIDw9IDApIHJldHVybjsKCiAgICBjb25zdCB0aW1lc3RhbXAgPSBkYXRlVGltZXN0YW1wSW5TZWNvbmRzKCk7CiAgICBjb25zdCBtZXJnZWRCcmVhZGNydW1iID0geyB0aW1lc3RhbXAsIC4uLmJyZWFkY3J1bWIgfTsKICAgIGNvbnN0IGZpbmFsQnJlYWRjcnVtYiA9IGJlZm9yZUJyZWFkY3J1bWIKICAgICAgPyAoY29uc29sZVNhbmRib3goKCkgPT4gYmVmb3JlQnJlYWRjcnVtYihtZXJnZWRCcmVhZGNydW1iLCBoaW50KSkgKQogICAgICA6IG1lcmdlZEJyZWFkY3J1bWI7CgogICAgaWYgKGZpbmFsQnJlYWRjcnVtYiA9PT0gbnVsbCkgcmV0dXJuOwoKICAgIGlmIChjbGllbnQuZW1pdCkgewogICAgICBjbGllbnQuZW1pdCgnYmVmb3JlQWRkQnJlYWRjcnVtYicsIGZpbmFsQnJlYWRjcnVtYiwgaGludCk7CiAgICB9CgogICAgLy8gVE9ETyh2OCk6IEkga25vdyB0aGlzIGNvbW1lbnQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgYmVjYXVzZSB0aGUgaHViIHdpbGwgYmUgZGVwcmVjYXRlZCBidXQgSSBzdGlsbCB3YW50ZWQgdG8KICAgIC8vIHdyaXRlIGl0IGRvd24uIEluIHRoZW9yeSwgd2Ugd291bGQgaGF2ZSB0byBhZGQgdGhlIGJyZWFkY3J1bWJzIHRvIHRoZSBpc29sYXRpb24gc2NvcGUgaGVyZSwgaG93ZXZlciwgdGhhdCB3b3VsZAogICAgLy8gZHVwbGljYXRlIGFsbCBvZiB0aGUgYnJlYWRjcnVtYnMuIFRoZXJlIHdhcyB0aGUgcG9zc2liaWxpdHkgb2YgYWRkaW5nIGJyZWFkY3J1bWJzIHRvIGJvdGgsIHRoZSBpc29sYXRpb24gc2NvcGUKICAgIC8vIGFuZCB0aGUgbm9ybWFsIHNjb3BlLCBhbmQgZGVkdXBsaWNhdGluZyBpdCBkb3duIHRoZSBsaW5lIGluIHRoZSBldmVudCBwcm9jZXNzaW5nIHBpcGVsaW5lLiBIb3dldmVyLCB0aGF0IHdvdWxkCiAgICAvLyBoYXZlIGJlZW4gdmVyeSBmcmFnaWxlLCBiZWNhdXNlIHRoZSBicmVhZGNydW1iIG9iamVjdHMgd291bGQgaGF2ZSBuZWVkZWQgdG8ga2VlcCB0aGVpciBpZGVudGl0eSBhbGwgdGhyb3VnaG91dAogICAgLy8gdGhlIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUuCiAgICAvLyBJbiB0aGUgbmV3IGltcGxlbWVudGF0aW9uLCB0aGUgdG9wIGxldmVsIGBTZW50cnkuYWRkQnJlYWRjcnVtYigpYCBzaG91bGQgT05MWSB3cml0ZSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgoKICAgIHNjb3BlLmFkZEJyZWFkY3J1bWIoZmluYWxCcmVhZGNydW1iLCBtYXhCcmVhZGNydW1icyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldFVzZXIoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VXNlcih1c2VyKSB7CiAgICAvLyBUT0RPKHY4KTogVGhlIHRvcCBsZXZlbCBgU2VudHJ5LnNldFVzZXIoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldFVzZXIodXNlcik7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRVc2VyKHVzZXIpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWdzKClgIGluc3RlYWQuCiAgICovCiAgIHNldFRhZ3ModGFncykgewogICAgLy8gVE9ETyh2OCk6IFRoZSB0b3AgbGV2ZWwgYFNlbnRyeS5zZXRUYWdzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWdzKHRhZ3MpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0VGFncyh0YWdzKTsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuc2V0RXh0cmFzKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmFzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRFeHRyYXMoZXh0cmFzKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldEV4dHJhcyhleHRyYXMpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWcoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VGFnKGtleSwgdmFsdWUpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0VGFnKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldEV4dHJhKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmEoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldEV4dHJhKGtleSwgZXh0cmEpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0RXh0cmEoa2V5LCBleHRyYSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldENvbnRleHQoKWAgaW5zdGVhZC4KICAgKi8KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICBzZXRDb250ZXh0KG5hbWUsIGNvbnRleHQpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0Q29udGV4dCgpYCBmdW5jdGlvbiBzaG91bGQgd3JpdGUgT05MWSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuc2V0Q29udGV4dChuYW1lLCBjb250ZXh0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldENvbnRleHQobmFtZSwgY29udGV4dCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRTY29wZSgpYCBkaXJlY3RseS4KICAgKi8KICAgY29uZmlndXJlU2NvcGUoY2FsbGJhY2spIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CiAgICBpZiAoY2xpZW50KSB7CiAgICAgIGNhbGxiYWNrKHNjb3BlKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgIHJ1bihjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBvbGRIdWIgPSBtYWtlTWFpbih0aGlzKTsKICAgIHRyeSB7CiAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgfSBmaW5hbGx5IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIG1ha2VNYWluKG9sZEh1Yik7CiAgICB9CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmdldENsaWVudCgpLmdldEludGVncmF0aW9uQnlOYW1lKClgIGluc3RlYWQuCiAgICovCiAgIGdldEludGVncmF0aW9uKGludGVncmF0aW9uKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KCk7CiAgICBpZiAoIWNsaWVudCkgcmV0dXJuIG51bGw7CiAgICB0cnkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgcmV0dXJuIGNsaWVudC5nZXRJbnRlZ3JhdGlvbihpbnRlZ3JhdGlvbik7CiAgICB9IGNhdGNoIChfb08pIHsKICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYENhbm5vdCByZXRyaWV2ZSBpbnRlZ3JhdGlvbiAke2ludGVncmF0aW9uLmlkfSBmcm9tIHRoZSBjdXJyZW50IEh1YmApOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIC8qKgogICAqIFN0YXJ0cyBhIG5ldyBgVHJhbnNhY3Rpb25gIGFuZCByZXR1cm5zIGl0LiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCB0byBtYW51YWwgdHJhY2luZyBpbnN0cnVtZW50YXRpb24uCiAgICoKICAgKiBBIHRyZWUgc3RydWN0dXJlIGNhbiBiZSBidWlsdCBieSBhZGRpbmcgY2hpbGQgc3BhbnMgdG8gdGhlIHRyYW5zYWN0aW9uLCBhbmQgY2hpbGQgc3BhbnMgdG8gb3RoZXIgc3BhbnMuIFRvIHN0YXJ0IGEKICAgKiBuZXcgY2hpbGQgc3BhbiB3aXRoaW4gdGhlIHRyYW5zYWN0aW9uIG9yIGFueSBzcGFuLCBjYWxsIHRoZSByZXNwZWN0aXZlIGAuc3RhcnRDaGlsZCgpYCBtZXRob2QuCiAgICoKICAgKiBFdmVyeSBjaGlsZCBzcGFuIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCwgb3RoZXJ3aXNlIHRoZSB1bmZpbmlzaGVkIHNwYW5zIGFyZSBkaXNjYXJkZWQuCiAgICoKICAgKiBUaGUgdHJhbnNhY3Rpb24gbXVzdCBiZSBmaW5pc2hlZCB3aXRoIGEgY2FsbCB0byBpdHMgYC5lbmQoKWAgbWV0aG9kLCBhdCB3aGljaCBwb2ludCB0aGUgdHJhbnNhY3Rpb24gd2l0aCBhbGwgaXRzCiAgICogZmluaXNoZWQgY2hpbGQgc3BhbnMgd2lsbCBiZSBzZW50IHRvIFNlbnRyeS4KICAgKgogICAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnRpZXMgb2YgdGhlIG5ldyBgVHJhbnNhY3Rpb25gLgogICAqIEBwYXJhbSBjdXN0b21TYW1wbGluZ0NvbnRleHQgSW5mb3JtYXRpb24gZ2l2ZW4gdG8gdGhlIHRyYW5zYWN0aW9uIHNhbXBsaW5nIGZ1bmN0aW9uIChhbG9uZyB3aXRoIGNvbnRleHQtZGVwZW5kZW50CiAgICogZGVmYXVsdCB2YWx1ZXMpLiBTZWUge0BsaW5rIE9wdGlvbnMudHJhY2VzU2FtcGxlcn0uCiAgICoKICAgKiBAcmV0dXJucyBUaGUgdHJhbnNhY3Rpb24gd2hpY2ggd2FzIGp1c3Qgc3RhcnRlZAogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzdGFydFNwYW4oKWAsIGBzdGFydFNwYW5NYW51YWwoKWAgb3IgYHN0YXJ0SW5hY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0VHJhbnNhY3Rpb24oY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KSB7CiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jYWxsRXh0ZW5zaW9uTWV0aG9kKCdzdGFydFRyYW5zYWN0aW9uJywgY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KTsKCiAgICBpZiAoREVCVUdfQlVJTEQgJiYgIXJlc3VsdCkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoKTsKICAgICAgaWYgKCFjbGllbnQpIHsKICAgICAgICBsb2dnZXIud2FybigKICAgICAgICAgICJUcmFjaW5nIGV4dGVuc2lvbiAnc3RhcnRUcmFuc2FjdGlvbicgaXMgbWlzc2luZy4gWW91IHNob3VsZCAnaW5pdCcgdGhlIFNESyBiZWZvcmUgY2FsbGluZyAnc3RhcnRUcmFuc2FjdGlvbiciLAogICAgICAgICk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbG9nZ2VyLndhcm4oYFRyYWNpbmcgZXh0ZW5zaW9uICdzdGFydFRyYW5zYWN0aW9uJyBoYXMgbm90IGJlZW4gYWRkZWQuIENhbGwgJ2FkZFRyYWNpbmdFeHRlbnNpb25zJyBiZWZvcmUgY2FsbGluZyAnaW5pdCc6ClNlbnRyeS5hZGRUcmFjaW5nRXh0ZW5zaW9ucygpOwpTZW50cnkuaW5pdCh7Li4ufSk7CmApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzcGFuVG9UcmFjZUhlYWRlcigpYCBpbnN0ZWFkLgogICAqLwogICB0cmFjZUhlYWRlcnMoKSB7CiAgICByZXR1cm4gdGhpcy5fY2FsbEV4dGVuc2lvbk1ldGhvZCgndHJhY2VIZWFkZXJzJyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIHRvcCBsZXZlbCBgY2FwdHVyZVNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGNhcHR1cmVTZXNzaW9uKGVuZFNlc3Npb24gPSBmYWxzZSkgewogICAgLy8gYm90aCBzZW5kIHRoZSB1cGRhdGUgYW5kIHB1bGwgdGhlIHNlc3Npb24gZnJvbSB0aGUgc2NvcGUKICAgIGlmIChlbmRTZXNzaW9uKSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICByZXR1cm4gdGhpcy5lbmRTZXNzaW9uKCk7CiAgICB9CgogICAgLy8gb25seSBzZW5kIHRoZSB1cGRhdGUKICAgIHRoaXMuX3NlbmRTZXNzaW9uVXBkYXRlKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSB0b3AgbGV2ZWwgYGVuZFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGVuZFNlc3Npb24oKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGxheWVyID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3Qgc2NvcGUgPSBsYXllci5zY29wZTsKICAgIGNvbnN0IHNlc3Npb24gPSBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoc2Vzc2lvbikgewogICAgICBjbG9zZVNlc3Npb24oc2Vzc2lvbik7CiAgICB9CiAgICB0aGlzLl9zZW5kU2Vzc2lvblVwZGF0ZSgpOwoKICAgIC8vIHRoZSBzZXNzaW9uIGlzIG92ZXI7IHRha2UgaXQgb2ZmIG9mIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbigpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wIGxldmVsIGBzdGFydFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0U2Vzc2lvbihjb250ZXh0KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3QgeyByZWxlYXNlLCBlbnZpcm9ubWVudCA9IERFRkFVTFRfRU5WSVJPTk1FTlQgfSA9IChjbGllbnQgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgLy8gV2lsbCBmZXRjaCB1c2VyQWdlbnQgaWYgY2FsbGVkIGZyb20gYnJvd3NlciBzZGsKICAgIGNvbnN0IHsgdXNlckFnZW50IH0gPSBHTE9CQUxfT0JKLm5hdmlnYXRvciB8fCB7fTsKCiAgICBjb25zdCBzZXNzaW9uID0gbWFrZVNlc3Npb24oewogICAgICByZWxlYXNlLAogICAgICBlbnZpcm9ubWVudCwKICAgICAgdXNlcjogc2NvcGUuZ2V0VXNlcigpLAogICAgICAuLi4odXNlckFnZW50ICYmIHsgdXNlckFnZW50IH0pLAogICAgICAuLi5jb250ZXh0LAogICAgfSk7CgogICAgLy8gRW5kIGV4aXN0aW5nIHNlc3Npb24gaWYgdGhlcmUncyBvbmUKICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gc2NvcGUuZ2V0U2Vzc2lvbiAmJiBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoY3VycmVudFNlc3Npb24gJiYgY3VycmVudFNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICAgIHVwZGF0ZVNlc3Npb24oY3VycmVudFNlc3Npb24sIHsgc3RhdHVzOiAnZXhpdGVkJyB9KTsKICAgIH0KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5lbmRTZXNzaW9uKCk7CgogICAgLy8gQWZ0ZXJ3YXJkcyB3ZSBzZXQgdGhlIG5ldyBzZXNzaW9uIG9uIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbihzZXNzaW9uKTsKCiAgICByZXR1cm4gc2Vzc2lvbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgaWYgZGVmYXVsdCBQSUkgc2hvdWxkIGJlIHNlbnQgdG8gU2VudHJ5IGFuZCBwcm9wYWdhdGVkIGluIG91cmdvaW5nIHJlcXVlc3RzCiAgICogd2hlbiBUcmFjaW5nIGlzIHVzZWQuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wLWxldmVsIGBnZXRDbGllbnQoKS5nZXRPcHRpb25zKCkuc2VuZERlZmF1bHRQaWlgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24KICAgKiBvbmx5IHVubmVjZXNzYXJpbHkgaW5jcmVhc2VkIEFQSSBzdXJmYWNlIGJ1dCBvbmx5IHdyYXBwZWQgYWNjZXNzaW5nIHRoZSBvcHRpb24uCiAgICovCiAgIHNob3VsZFNlbmREZWZhdWx0UGlpKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBjbGllbnQgPSB0aGlzLmdldENsaWVudCgpOwogICAgY29uc3Qgb3B0aW9ucyA9IGNsaWVudCAmJiBjbGllbnQuZ2V0T3B0aW9ucygpOwogICAgcmV0dXJuIEJvb2xlYW4ob3B0aW9ucyAmJiBvcHRpb25zLnNlbmREZWZhdWx0UGlpKTsKICB9CgogIC8qKgogICAqIFNlbmRzIHRoZSBjdXJyZW50IFNlc3Npb24gb24gdGhlIHNjb3BlCiAgICovCiAgIF9zZW5kU2Vzc2lvblVwZGF0ZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CgogICAgY29uc3Qgc2Vzc2lvbiA9IHNjb3BlLmdldFNlc3Npb24oKTsKICAgIGlmIChzZXNzaW9uICYmIGNsaWVudCAmJiBjbGllbnQuY2FwdHVyZVNlc3Npb24pIHsKICAgICAgY2xpZW50LmNhcHR1cmVTZXNzaW9uKHNlc3Npb24pOwogICAgfQogIH0KCiAgLyoqCiAgICogQ2FsbHMgZ2xvYmFsIGV4dGVuc2lvbiBtZXRob2QgYW5kIGJpbmRpbmcgY3VycmVudCBpbnN0YW5jZSB0byB0aGUgZnVuY3Rpb24gY2FsbAogICAqLwogIC8vIEB0cy1leHBlY3QtZXJyb3IgRnVuY3Rpb24gbGFja3MgZW5kaW5nIHJldHVybiBzdGF0ZW1lbnQgYW5kIHJldHVybiB0eXBlIGRvZXMgbm90IGluY2x1ZGUgJ3VuZGVmaW5lZCcuIHRzKDIzNjYpCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgX2NhbGxFeHRlbnNpb25NZXRob2QobWV0aG9kLCAuLi5hcmdzKSB7CiAgICBjb25zdCBjYXJyaWVyID0gZ2V0TWFpbkNhcnJpZXIoKTsKICAgIGNvbnN0IHNlbnRyeSA9IGNhcnJpZXIuX19TRU5UUllfXzsKICAgIGlmIChzZW50cnkgJiYgc2VudHJ5LmV4dGVuc2lvbnMgJiYgdHlwZW9mIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmV0dXJuIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0uYXBwbHkodGhpcywgYXJncyk7CiAgICB9CiAgICBERUJVR19CVUlMRCAmJiBsb2dnZXIud2FybihgRXh0ZW5zaW9uIG1ldGhvZCAke21ldGhvZH0gY291bGRuJ3QgYmUgZm91bmQsIGRvaW5nIG5vdGhpbmcuYCk7CiAgfQp9CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIHNoaW0gcmVnaXN0cnkuCiAqCiAqIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JsZW1hdGljLCBiZWNhdXNlIGRlc3BpdGUgYWx3YXlzIHJldHVybmluZyBhIHZhbGlkIENhcnJpZXIsCiAqIGl0IGhhcyBhbiBvcHRpb25hbCBgX19TRU5UUllfX2AgcHJvcGVydHksIHdoaWNoIHRoZW4gaW4gdHVybiByZXF1aXJlcyB1cyB0byBhbHdheXMgcGVyZm9ybSBhbiB1bm5lY2Vzc2FyeSBjaGVjawogKiBhdCB0aGUgY2FsbC1zaXRlLiBXZSBhbHdheXMgYWNjZXNzIHRoZSBjYXJyaWVyIHRocm91Z2ggdGhpcyBmdW5jdGlvbiwgc28gd2UgY2FuIGd1YXJhbnRlZSB0aGF0IGBfX1NFTlRSWV9fYCBpcyB0aGVyZS4KICoqLwpmdW5jdGlvbiBnZXRNYWluQ2FycmllcigpIHsKICBHTE9CQUxfT0JKLl9fU0VOVFJZX18gPSBHTE9CQUxfT0JKLl9fU0VOVFJZX18gfHwgewogICAgZXh0ZW5zaW9uczoge30sCiAgICBodWI6IHVuZGVmaW5lZCwKICB9OwogIHJldHVybiBHTE9CQUxfT0JKOwp9CgovKioKICogUmVwbGFjZXMgdGhlIGN1cnJlbnQgbWFpbiBodWIgd2l0aCB0aGUgcGFzc2VkIG9uZSBvbiB0aGUgZ2xvYmFsIG9iamVjdAogKgogKiBAcmV0dXJucyBUaGUgb2xkIHJlcGxhY2VkIGh1YgogKgogKiBAZGVwcmVjYXRlZCBVc2UgYHNldEN1cnJlbnRDbGllbnQoKWAgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBtYWtlTWFpbihodWIpIHsKICBjb25zdCByZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCk7CiAgY29uc3Qgb2xkSHViID0gZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpOwogIHNldEh1Yk9uQ2FycmllcihyZWdpc3RyeSwgaHViKTsKICByZXR1cm4gb2xkSHViOwp9CgovKioKICogUmV0dXJucyB0aGUgZGVmYXVsdCBodWIgaW5zdGFuY2UuCiAqCiAqIElmIGEgaHViIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiB0aGUgZ2xvYmFsIGNhcnJpZXIgYnV0IHRoaXMgbW9kdWxlCiAqIGNvbnRhaW5zIGEgbW9yZSByZWNlbnQgdmVyc2lvbiwgaXQgcmVwbGFjZXMgdGhlIHJlZ2lzdGVyZWQgdmVyc2lvbi4KICogT3RoZXJ3aXNlLCB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgaHViIHdpbGwgYmUgcmV0dXJuZWQuCiAqCiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgcmVzcGVjdGl2ZSByZXBsYWNlbWVudCBtZXRob2QgZGlyZWN0bHkgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRDdXJyZW50SHViKCkgewogIC8vIEdldCBtYWluIGNhcnJpZXIgKGdsb2JhbCBmb3IgZXZlcnkgZW52aXJvbm1lbnQpCiAgY29uc3QgcmVnaXN0cnkgPSBnZXRNYWluQ2FycmllcigpOwoKICBpZiAocmVnaXN0cnkuX19TRU5UUllfXyAmJiByZWdpc3RyeS5fX1NFTlRSWV9fLmFjcykgewogICAgY29uc3QgaHViID0gcmVnaXN0cnkuX19TRU5UUllfXy5hY3MuZ2V0Q3VycmVudEh1YigpOwoKICAgIGlmIChodWIpIHsKICAgICAgcmV0dXJuIGh1YjsKICAgIH0KICB9CgogIC8vIFJldHVybiBodWIgdGhhdCBsaXZlcyBvbiBhIGdsb2JhbCBvYmplY3QKICByZXR1cm4gZ2V0R2xvYmFsSHViKHJlZ2lzdHJ5KTsKfQoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmZ1bmN0aW9uIGdldEdsb2JhbEh1YihyZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCkpIHsKICAvLyBJZiB0aGVyZSdzIG5vIGh1Yiwgb3IgaXRzIGFuIG9sZCBBUEksIGFzc2lnbiBhIG5ldyBvbmUKCiAgaWYgKAogICAgIWhhc0h1Yk9uQ2FycmllcihyZWdpc3RyeSkgfHwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpLmlzT2xkZXJUaGFuKEFQSV9WRVJTSU9OKQogICkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBzZXRIdWJPbkNhcnJpZXIocmVnaXN0cnksIG5ldyBIdWIoKSk7CiAgfQoKICAvLyBSZXR1cm4gaHViIHRoYXQgbGl2ZXMgb24gYSBnbG9iYWwgb2JqZWN0CiAgcmV0dXJuIGdldEh1YkZyb21DYXJyaWVyKHJlZ2lzdHJ5KTsKfQoKLyoqCiAqIFRoaXMgd2lsbCB0ZWxsIHdoZXRoZXIgYSBjYXJyaWVyIGhhcyBhIGh1YiBvbiBpdCBvciBub3QKICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqLwpmdW5jdGlvbiBoYXNIdWJPbkNhcnJpZXIoY2FycmllcikgewogIHJldHVybiAhIShjYXJyaWVyICYmIGNhcnJpZXIuX19TRU5UUllfXyAmJiBjYXJyaWVyLl9fU0VOVFJZX18uaHViKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcge0BsaW5rIEh1Yn0gYW5kIGFkZCB0byB0aGUgcGFzc2VkIG9iamVjdCBvbgogKiBfX1NFTlRSWV9fLmh1Yi4KICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqIEBoaWRkZW4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRIdWJGcm9tQ2FycmllcihjYXJyaWVyKSB7CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgcmV0dXJuIGdldEdsb2JhbFNpbmdsZXRvbignaHViJywgKCkgPT4gbmV3IEh1YigpLCBjYXJyaWVyKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBzZXQgcGFzc2VkIHtAbGluayBIdWJ9IG9uIHRoZSBwYXNzZWQgb2JqZWN0J3MgX19TRU5UUllfXy5odWIgYXR0cmlidXRlCiAqIEBwYXJhbSBjYXJyaWVyIG9iamVjdAogKiBAcGFyYW0gaHViIEh1YgogKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUKICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBzZXRIdWJPbkNhcnJpZXIoY2FycmllciwgaHViKSB7CiAgaWYgKCFjYXJyaWVyKSByZXR1cm4gZmFsc2U7CiAgY29uc3QgX19TRU5UUllfXyA9IChjYXJyaWVyLl9fU0VOVFJZX18gPSBjYXJyaWVyLl9fU0VOVFJZX18gfHwge30pOwogIF9fU0VOVFJZX18uaHViID0gaHViOwogIHJldHVybiB0cnVlOwp9CgovKioKICogQXBwbHkgU2RrSW5mbyAobmFtZSwgdmVyc2lvbiwgcGFja2FnZXMsIGludGVncmF0aW9ucykgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQga2V5LgogKiBNZXJnZSB3aXRoIGV4aXN0aW5nIGRhdGEgaWYgYW55LgogKiovCmZ1bmN0aW9uIGVuaGFuY2VFdmVudFdpdGhTZGtJbmZvKGV2ZW50LCBzZGtJbmZvKSB7CiAgaWYgKCFzZGtJbmZvKSB7CiAgICByZXR1cm4gZXZlbnQ7CiAgfQogIGV2ZW50LnNkayA9IGV2ZW50LnNkayB8fCB7fTsKICBldmVudC5zZGsubmFtZSA9IGV2ZW50LnNkay5uYW1lIHx8IHNka0luZm8ubmFtZTsKICBldmVudC5zZGsudmVyc2lvbiA9IGV2ZW50LnNkay52ZXJzaW9uIHx8IHNka0luZm8udmVyc2lvbjsKICBldmVudC5zZGsuaW50ZWdyYXRpb25zID0gWy4uLihldmVudC5zZGsuaW50ZWdyYXRpb25zIHx8IFtdKSwgLi4uKHNka0luZm8uaW50ZWdyYXRpb25zIHx8IFtdKV07CiAgZXZlbnQuc2RrLnBhY2thZ2VzID0gWy4uLihldmVudC5zZGsucGFja2FnZXMgfHwgW10pLCAuLi4oc2RrSW5mby5wYWNrYWdlcyB8fCBbXSldOwogIHJldHVybiBldmVudDsKfQoKLyoqIENyZWF0ZXMgYW4gZW52ZWxvcGUgZnJvbSBhIFNlc3Npb24gKi8KZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbkVudmVsb3BlKAogIHNlc3Npb24sCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IHsKICAgIHNlbnRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgIC4uLihzZGtJbmZvICYmIHsgc2RrOiBzZGtJbmZvIH0pLAogICAgLi4uKCEhdHVubmVsICYmIGRzbiAmJiB7IGRzbjogZHNuVG9TdHJpbmcoZHNuKSB9KSwKICB9OwoKICBjb25zdCBlbnZlbG9wZUl0ZW0gPQogICAgJ2FnZ3JlZ2F0ZXMnIGluIHNlc3Npb24gPyBbeyB0eXBlOiAnc2Vzc2lvbnMnIH0sIHNlc3Npb25dIDogW3sgdHlwZTogJ3Nlc3Npb24nIH0sIHNlc3Npb24udG9KU09OKCldOwoKICByZXR1cm4gY3JlYXRlRW52ZWxvcGUoZW52ZWxvcGVIZWFkZXJzLCBbZW52ZWxvcGVJdGVtXSk7Cn0KCi8qKgogKiBDcmVhdGUgYW4gRW52ZWxvcGUgZnJvbSBhbiBldmVudC4KICovCmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RW52ZWxvcGUoCiAgZXZlbnQsCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwoKICAvKgogICAgTm90ZTogRHVlIHRvIFRTLCBldmVudC50eXBlIG1heSBiZSBgcmVwbGF5X2V2ZW50YCwgdGhlb3JldGljYWxseS4KICAgIEluIHByYWN0aWNlLCB3ZSBuZXZlciBjYWxsIGBjcmVhdGVFdmVudEVudmVsb3BlYCB3aXRoIGByZXBsYXlfZXZlbnRgIHR5cGUsCiAgICBhbmQgd2UnZCBoYXZlIHRvIGFkanV0IGEgbG9vb3Qgb2YgdHlwZXMgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHkuCiAgICBXZSB3YW50IHRvIGF2b2lkIGNhc3RpbmcgdGhpcyBhcm91bmQsIGFzIHRoYXQgY291bGQgbGVhZCB0byBidWdzIChlLmcuIHdoZW4gd2UgYWRkIGFub3RoZXIgdHlwZSkKICAgIFNvIHRoZSBzYWZlIGNob2ljZSBpcyB0byByZWFsbHkgZ3VhcmQgYWdhaW5zdCB0aGUgcmVwbGF5X2V2ZW50IHR5cGUgaGVyZS4KICAqLwogIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUgJiYgZXZlbnQudHlwZSAhPT0gJ3JlcGxheV9ldmVudCcgPyBldmVudC50eXBlIDogJ2V2ZW50JzsKCiAgZW5oYW5jZUV2ZW50V2l0aFNka0luZm8oZXZlbnQsIG1ldGFkYXRhICYmIG1ldGFkYXRhLnNkayk7CgogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IGNyZWF0ZUV2ZW50RW52ZWxvcGVIZWFkZXJzKGV2ZW50LCBzZGtJbmZvLCB0dW5uZWwsIGRzbik7CgogIC8vIFByZXZlbnQgdGhpcyBkYXRhICh3aGljaCwgaWYgaXQgZXhpc3RzLCB3YXMgdXNlZCBpbiBlYXJsaWVyIHN0ZXBzIGluIHRoZSBwcm9jZXNzaW5nIHBpcGVsaW5lKSBmcm9tIGJlaW5nIHNlbnQgdG8KICAvLyBzZW50cnkuIChOb3RlOiBPdXIgdXNlIG9mIHRoaXMgcHJvcGVydHkgY29tZXMgYW5kIGdvZXMgd2l0aCB3aGF0ZXZlciB3ZSBtaWdodCBiZSBkZWJ1Z2dpbmcsIHdoYXRldmVyIGhhY2tzIHdlIG1heQogIC8vIGhhdmUgdGVtcG9yYXJpbHkgYWRkZWQsIGV0Yy4gRXZlbiBpZiB3ZSBkb24ndCBoYXBwZW4gdG8gYmUgdXNpbmcgaXQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCBsZXQncyBub3QgZ2V0IHJpZAogIC8vIG9mIHRoaXMgYGRlbGV0ZWAsIGxlc3Qgd2UgbWlzcyBwdXR0aW5nIGl0IGJhY2sgaW4gdGhlIG5leHQgdGltZSB0aGUgcHJvcGVydHkgaXMgaW4gdXNlLikKICBkZWxldGUgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhOwoKICBjb25zdCBldmVudEl0ZW0gPSBbeyB0eXBlOiBldmVudFR5cGUgfSwgZXZlbnRdOwogIHJldHVybiBjcmVhdGVFbnZlbG9wZShlbnZlbG9wZUhlYWRlcnMsIFtldmVudEl0ZW1dKTsKfQoKY29uc3QgU0VOVFJZX0FQSV9WRVJTSU9OID0gJzcnOwoKLyoqIFJldHVybnMgdGhlIHByZWZpeCB0byBjb25zdHJ1Y3QgU2VudHJ5IGluZ2VzdGlvbiBBUEkgZW5kcG9pbnRzLiAqLwpmdW5jdGlvbiBnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKSB7CiAgY29uc3QgcHJvdG9jb2wgPSBkc24ucHJvdG9jb2wgPyBgJHtkc24ucHJvdG9jb2x9OmAgOiAnJzsKICBjb25zdCBwb3J0ID0gZHNuLnBvcnQgPyBgOiR7ZHNuLnBvcnR9YCA6ICcnOwogIHJldHVybiBgJHtwcm90b2NvbH0vLyR7ZHNuLmhvc3R9JHtwb3J0fSR7ZHNuLnBhdGggPyBgLyR7ZHNuLnBhdGh9YCA6ICcnfS9hcGkvYDsKfQoKLyoqIFJldHVybnMgdGhlIGluZ2VzdCBBUEkgZW5kcG9pbnQgZm9yIHRhcmdldC4gKi8KZnVuY3Rpb24gX2dldEluZ2VzdEVuZHBvaW50KGRzbikgewogIHJldHVybiBgJHtnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKX0ke2Rzbi5wcm9qZWN0SWR9L2VudmVsb3BlL2A7Cn0KCi8qKiBSZXR1cm5zIGEgVVJMLWVuY29kZWQgc3RyaW5nIHdpdGggYXV0aCBjb25maWcgc3VpdGFibGUgZm9yIGEgcXVlcnkgc3RyaW5nLiAqLwpmdW5jdGlvbiBfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKSB7CiAgcmV0dXJuIHVybEVuY29kZSh7CiAgICAvLyBXZSBzZW5kIG9ubHkgdGhlIG1pbmltdW0gc2V0IG9mIHJlcXVpcmVkIGluZm9ybWF0aW9uLiBTZWUKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvaXNzdWVzLzI1NzIuCiAgICBzZW50cnlfa2V5OiBkc24ucHVibGljS2V5LAogICAgc2VudHJ5X3ZlcnNpb246IFNFTlRSWV9BUElfVkVSU0lPTiwKICAgIC4uLihzZGtJbmZvICYmIHsgc2VudHJ5X2NsaWVudDogYCR7c2RrSW5mby5uYW1lfS8ke3Nka0luZm8udmVyc2lvbn1gIH0pLAogIH0pOwp9CgovKioKICogUmV0dXJucyB0aGUgZW52ZWxvcGUgZW5kcG9pbnQgVVJMIHdpdGggYXV0aCBpbiB0aGUgcXVlcnkgc3RyaW5nLgogKgogKiBTZW5kaW5nIGF1dGggYXMgcGFydCBvZiB0aGUgcXVlcnkgc3RyaW5nIGFuZCBub3QgYXMgY3VzdG9tIEhUVFAgaGVhZGVycyBhdm9pZHMgQ09SUyBwcmVmbGlnaHQgcmVxdWVzdHMuCiAqLwpmdW5jdGlvbiBnZXRFbnZlbG9wZUVuZHBvaW50V2l0aFVybEVuY29kZWRBdXRoKAogIGRzbiwKICAvLyBUT0RPICh2OCk6IFJlbW92ZSBgdHVubmVsT3JPcHRpb25zYCBpbiBmYXZvciBvZiBgb3B0aW9uc2AsIGFuZCB1c2UgdGhlIHN1YnN0aXR1dGUgY29kZSBiZWxvdwogIC8vIG9wdGlvbnM6IENsaWVudE9wdGlvbnMgPSB7fSBhcyBDbGllbnRPcHRpb25zLAogIHR1bm5lbE9yT3B0aW9ucyA9IHt9ICwKKSB7CiAgLy8gVE9ETyAodjgpOiBVc2UgdGhpcyBjb2RlIGluc3RlYWQKICAvLyBjb25zdCB7IHR1bm5lbCwgX21ldGFkYXRhID0ge30gfSA9IG9wdGlvbnM7CiAgLy8gcmV0dXJuIHR1bm5lbCA/IHR1bm5lbCA6IGAke19nZXRJbmdlc3RFbmRwb2ludChkc24pfT8ke19lbmNvZGVkQXV0aChkc24sIF9tZXRhZGF0YS5zZGspfWA7CgogIGNvbnN0IHR1bm5lbCA9IHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnID8gdHVubmVsT3JPcHRpb25zIDogdHVubmVsT3JPcHRpb25zLnR1bm5lbDsKICBjb25zdCBzZGtJbmZvID0KICAgIHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnIHx8ICF0dW5uZWxPck9wdGlvbnMuX21ldGFkYXRhID8gdW5kZWZpbmVkIDogdHVubmVsT3JPcHRpb25zLl9tZXRhZGF0YS5zZGs7CgogIHJldHVybiB0dW5uZWwgPyB0dW5uZWwgOiBgJHtfZ2V0SW5nZXN0RW5kcG9pbnQoZHNuKX0/JHtfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKX1gOwp9Cgpjb25zdCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSA9IDMwOwoKLyoqCiAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYSBTZW50cnkgYFRyYW5zcG9ydGAKICoKICogQHBhcmFtIG9wdGlvbnMKICogQHBhcmFtIG1ha2VSZXF1ZXN0CiAqLwpmdW5jdGlvbiBjcmVhdGVUcmFuc3BvcnQoCiAgb3B0aW9ucywKICBtYWtlUmVxdWVzdCwKICBidWZmZXIgPSBtYWtlUHJvbWlzZUJ1ZmZlcigKICAgIG9wdGlvbnMuYnVmZmVyU2l6ZSB8fCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSwKICApLAopIHsKICBsZXQgcmF0ZUxpbWl0cyA9IHt9OwogIGNvbnN0IGZsdXNoID0gKHRpbWVvdXQpID0+IGJ1ZmZlci5kcmFpbih0aW1lb3V0KTsKCiAgZnVuY3Rpb24gc2VuZChlbnZlbG9wZSkgewogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZUl0ZW1zID0gW107CgogICAgLy8gRHJvcCByYXRlIGxpbWl0ZWQgaXRlbXMgZnJvbSBlbnZlbG9wZQogICAgZm9yRWFjaEVudmVsb3BlSXRlbShlbnZlbG9wZSwgKGl0ZW0sIHR5cGUpID0+IHsKICAgICAgY29uc3QgZGF0YUNhdGVnb3J5ID0gZW52ZWxvcGVJdGVtVHlwZVRvRGF0YUNhdGVnb3J5KHR5cGUpOwogICAgICBpZiAoaXNSYXRlTGltaXRlZChyYXRlTGltaXRzLCBkYXRhQ2F0ZWdvcnkpKSB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudCgncmF0ZWxpbWl0X2JhY2tvZmYnLCBkYXRhQ2F0ZWdvcnksIGV2ZW50KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmaWx0ZXJlZEVudmVsb3BlSXRlbXMucHVzaChpdGVtKTsKICAgICAgfQogICAgfSk7CgogICAgLy8gU2tpcCBzZW5kaW5nIGlmIGVudmVsb3BlIGlzIGVtcHR5IGFmdGVyIGZpbHRlcmluZyBvdXQgcmF0ZSBsaW1pdGVkIGV2ZW50cwogICAgaWYgKGZpbHRlcmVkRW52ZWxvcGVJdGVtcy5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHJlc29sdmVkU3luY1Byb21pc2UoKTsKICAgIH0KCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZSA9IGNyZWF0ZUVudmVsb3BlKGVudmVsb3BlWzBdLCBmaWx0ZXJlZEVudmVsb3BlSXRlbXMgKTsKCiAgICAvLyBDcmVhdGVzIGNsaWVudCByZXBvcnQgZm9yIGVhY2ggaXRlbSBpbiBhbiBlbnZlbG9wZQogICAgY29uc3QgcmVjb3JkRW52ZWxvcGVMb3NzID0gKHJlYXNvbikgPT4gewogICAgICBmb3JFYWNoRW52ZWxvcGVJdGVtKGZpbHRlcmVkRW52ZWxvcGUsIChpdGVtLCB0eXBlKSA9PiB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudChyZWFzb24sIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSwgZXZlbnQpOwogICAgICB9KTsKICAgIH07CgogICAgY29uc3QgcmVxdWVzdFRhc2sgPSAoKSA9PgogICAgICBtYWtlUmVxdWVzdCh7IGJvZHk6IHNlcmlhbGl6ZUVudmVsb3BlKGZpbHRlcmVkRW52ZWxvcGUsIG9wdGlvbnMudGV4dEVuY29kZXIpIH0pLnRoZW4oCiAgICAgICAgcmVzcG9uc2UgPT4gewogICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB0aHJvdyBvbiBOT0sgcmVzcG9uc2VzLCBidXQgd2Ugd2FudCB0byBhdCBsZWFzdCBsb2cgdGhlbQogICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IHVuZGVmaW5lZCAmJiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXNDb2RlID49IDMwMCkpIHsKICAgICAgICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYFNlbnRyeSByZXNwb25kZWQgd2l0aCBzdGF0dXMgY29kZSAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9IHRvIHNlbnQgZXZlbnQuYCk7CiAgICAgICAgICB9CgogICAgICAgICAgcmF0ZUxpbWl0cyA9IHVwZGF0ZVJhdGVMaW1pdHMocmF0ZUxpbWl0cywgcmVzcG9uc2UpOwogICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgIH0sCiAgICAgICAgZXJyb3IgPT4gewogICAgICAgICAgcmVjb3JkRW52ZWxvcGVMb3NzKCduZXR3b3JrX2Vycm9yJyk7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9LAogICAgICApOwoKICAgIHJldHVybiBidWZmZXIuYWRkKHJlcXVlc3RUYXNrKS50aGVuKAogICAgICByZXN1bHQgPT4gcmVzdWx0LAogICAgICBlcnJvciA9PiB7CiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU2VudHJ5RXJyb3IpIHsKICAgICAgICAgIERFQlVHX0JVSUxEICYmIGxvZ2dlci5lcnJvcignU2tpcHBlZCBzZW5kaW5nIGV2ZW50IGJlY2F1c2UgYnVmZmVyIGlzIGZ1bGwuJyk7CiAgICAgICAgICByZWNvcmRFbnZlbG9wZUxvc3MoJ3F1ZXVlX292ZXJmbG93Jyk7CiAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTeW5jUHJvbWlzZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CiAgICAgIH0sCiAgICApOwogIH0KCiAgLy8gV2UgdXNlIHRoaXMgdG8gaWRlbnRpZmlmeSBpZiB0aGUgdHJhbnNwb3J0IGlzIHRoZSBiYXNlIHRyYW5zcG9ydAogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHRoaXMgYWdhaW4gYXMgd2UnbGwgbm8gbG9uZ2VyIG5lZWQgaXQKICBzZW5kLl9fc2VudHJ5X19iYXNlVHJhbnNwb3J0X18gPSB0cnVlOwoKICByZXR1cm4gewogICAgc2VuZCwKICAgIGZsdXNoLAogIH07Cn0KCmZ1bmN0aW9uIGdldEV2ZW50Rm9yRW52ZWxvcGVJdGVtKGl0ZW0sIHR5cGUpIHsKICBpZiAodHlwZSAhPT0gJ2V2ZW50JyAmJiB0eXBlICE9PSAndHJhbnNhY3Rpb24nKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbSkgPyAoaXRlbSApWzFdIDogdW5kZWZpbmVkOwp9CgovKiogbm9ybWFsaXplcyBXaW5kb3dzIHBhdGhzICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHBhdGgpIHsKICByZXR1cm4gcGF0aAogICAgLnJlcGxhY2UoL15bQS1aXTovLCAnJykgLy8gcmVtb3ZlIFdpbmRvd3Mtc3R5bGUgcHJlZml4CiAgICAucmVwbGFjZSgvXFwvZywgJy8nKTsgLy8gcmVwbGFjZSBhbGwgYFxgIGluc3RhbmNlcyB3aXRoIGAvYAp9CgovKiogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgbW9kdWxlIG5hbWUgZnJvbSBhIGZpbGVuYW1lICovCmZ1bmN0aW9uIGNyZWF0ZUdldE1vZHVsZUZyb21GaWxlbmFtZSgKICBiYXNlUGF0aCA9IHByb2Nlc3MuYXJndlsxXSA/IGRpcm5hbWUocHJvY2Vzcy5hcmd2WzFdKSA6IHByb2Nlc3MuY3dkKCksCiAgaXNXaW5kb3dzID0gc2VwID09PSAnXFwnLAopIHsKICBjb25zdCBub3JtYWxpemVkQmFzZSA9IGlzV2luZG93cyA/IG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGJhc2VQYXRoKSA6IGJhc2VQYXRoOwoKICByZXR1cm4gKGZpbGVuYW1lKSA9PiB7CiAgICBpZiAoIWZpbGVuYW1lKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBjb25zdCBub3JtYWxpemVkRmlsZW5hbWUgPSBpc1dpbmRvd3MgPyBub3JtYWxpemVXaW5kb3dzUGF0aChmaWxlbmFtZSkgOiBmaWxlbmFtZTsKCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0CiAgICBsZXQgeyBkaXIsIGJhc2U6IGZpbGUsIGV4dCB9ID0gcG9zaXgucGFyc2Uobm9ybWFsaXplZEZpbGVuYW1lKTsKCiAgICBpZiAoZXh0ID09PSAnLmpzJyB8fCBleHQgPT09ICcubWpzJyB8fCBleHQgPT09ICcuY2pzJykgewogICAgICBmaWxlID0gZmlsZS5zbGljZSgwLCBleHQubGVuZ3RoICogLTEpOwogICAgfQoKICAgIGlmICghZGlyKSB7CiAgICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlcgogICAgICBkaXIgPSAnLic7CiAgICB9CgogICAgY29uc3QgbiA9IGRpci5sYXN0SW5kZXhPZignL25vZGVfbW9kdWxlcycpOwogICAgaWYgKG4gPiAtMSkgewogICAgICByZXR1cm4gYCR7ZGlyLnNsaWNlKG4gKyAxNCkucmVwbGFjZSgvXC8vZywgJy4nKX06JHtmaWxlfWA7CiAgICB9CgogICAgLy8gTGV0J3Mgc2VlIGlmIGl0J3MgYSBwYXJ0IG9mIHRoZSBtYWluIG1vZHVsZQogICAgLy8gVG8gYmUgYSBwYXJ0IG9mIG1haW4gbW9kdWxlLCBpdCBoYXMgdG8gc2hhcmUgdGhlIHNhbWUgYmFzZQogICAgaWYgKGRpci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRCYXNlKSkgewogICAgICBsZXQgbW9kdWxlTmFtZSA9IGRpci5zbGljZShub3JtYWxpemVkQmFzZS5sZW5ndGggKyAxKS5yZXBsYWNlKC9cLy9nLCAnLicpOwoKICAgICAgaWYgKG1vZHVsZU5hbWUpIHsKICAgICAgICBtb2R1bGVOYW1lICs9ICc6JzsKICAgICAgfQogICAgICBtb2R1bGVOYW1lICs9IGZpbGU7CgogICAgICByZXR1cm4gbW9kdWxlTmFtZTsKICAgIH0KCiAgICByZXR1cm4gZmlsZTsKICB9Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlJDIobGhzLCByaHNGbikgeyBpZiAobGhzICE9IG51bGwpIHsgcmV0dXJuIGxoczsgfSBlbHNlIHsgcmV0dXJuIHJoc0ZuKCk7IH0gfS8qKgogKiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgZm9ya2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1Rvb1RhbGxOYXRlL3Byb3h5LWFnZW50cy90cmVlL2IxMzMyOTVmZDE2ZjY0NzU1NzhiNmIxNWJkOWI0ZTMzZWNiMGQwYjcKICogV2l0aCB0aGUgZm9sbG93aW5nIGxpY2VuY2U6CiAqCiAqIChUaGUgTUlUIExpY2Vuc2UpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMyBOYXRoYW4gUmFqbGljaCA8bmF0aGFuQHRvb3RhbGxuYXRlLm5ldD4qCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOioKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuKgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwoKY29uc3QgSU5URVJOQUwgPSBTeW1ib2woJ0FnZW50QmFzZUludGVybmFsU3RhdGUnKTsKCmNsYXNzIEFnZW50IGV4dGVuZHMgaHR0cC5BZ2VudCB7CgogIC8vIFNldCBieSBgaHR0cC5BZ2VudGAgLSBtaXNzaW5nIGZyb20gYEB0eXBlcy9ub2RlYAoKICBjb25zdHJ1Y3RvcihvcHRzKSB7CiAgICBzdXBlcihvcHRzKTsKICAgIHRoaXNbSU5URVJOQUxdID0ge307CiAgfQoKICAvKioKICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFuIGBodHRwYCBvciBgaHR0cHNgIHJlcXVlc3QuCiAgICovCiAgaXNTZWN1cmVFbmRwb2ludChvcHRpb25zKSB7CiAgICBpZiAob3B0aW9ucykgewogICAgICAvLyBGaXJzdCBjaGVjayB0aGUgYHNlY3VyZUVuZHBvaW50YCBwcm9wZXJ0eSBleHBsaWNpdGx5LCBzaW5jZSB0aGlzCiAgICAgIC8vIG1lYW5zIHRoYXQgYSBwYXJlbnQgYEFnZW50YCBpcyAicGFzc2luZyB0aHJvdWdoIiB0byB0aGlzIGluc3RhbmNlLgogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgICAgIGlmICh0eXBlb2YgKG9wdGlvbnMgKS5zZWN1cmVFbmRwb2ludCA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2VjdXJlRW5kcG9pbnQ7CiAgICAgIH0KCiAgICAgIC8vIElmIG5vIGV4cGxpY2l0IGBzZWN1cmVgIGVuZHBvaW50LCBjaGVjayBpZiBgcHJvdG9jb2xgIHByb3BlcnR5IGlzCiAgICAgIC8vIHNldC4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgdGhlIGNhc2Ugc2luY2UgdXNpbmcgYSBmdWxsIHN0cmluZyBVUkwKICAgICAgLy8gb3IgYFVSTGAgaW5zdGFuY2Ugc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiB1c2FnZS4KICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnByb3RvY29sID09PSAnc3RyaW5nJykgewogICAgICAgIHJldHVybiBvcHRpb25zLnByb3RvY29sID09PSAnaHR0cHM6JzsKICAgICAgfQogICAgfQoKICAgIC8vIEZpbmFsbHksIGlmIG5vIGBwcm90b2NvbGAgcHJvcGVydHkgd2FzIHNldCwgdGhlbiBmYWxsIGJhY2sgdG8KICAgIC8vIGNoZWNraW5nIHRoZSBzdGFjayB0cmFjZSBvZiB0aGUgY3VycmVudCBjYWxsIHN0YWNrLCBhbmQgdHJ5IHRvCiAgICAvLyBkZXRlY3QgdGhlICJodHRwcyIgbW9kdWxlLgogICAgY29uc3QgeyBzdGFjayB9ID0gbmV3IEVycm9yKCk7CiAgICBpZiAodHlwZW9mIHN0YWNrICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHN0YWNrLnNwbGl0KCdcbicpLnNvbWUobCA9PiBsLmluZGV4T2YoJyhodHRwcy5qczonKSAhPT0gLTEgfHwgbC5pbmRleE9mKCdub2RlOmh0dHBzOicpICE9PSAtMSk7CiAgfQoKICBjcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYikgewogICAgY29uc3QgY29ubmVjdE9wdHMgPSB7CiAgICAgIC4uLm9wdGlvbnMsCiAgICAgIHNlY3VyZUVuZHBvaW50OiB0aGlzLmlzU2VjdXJlRW5kcG9pbnQob3B0aW9ucyksCiAgICB9OwogICAgUHJvbWlzZS5yZXNvbHZlKCkKICAgICAgLnRoZW4oKCkgPT4gdGhpcy5jb25uZWN0KHJlcSwgY29ubmVjdE9wdHMpKQogICAgICAudGhlbihzb2NrZXQgPT4gewogICAgICAgIGlmIChzb2NrZXQgaW5zdGFuY2VvZiBodHRwLkFnZW50KSB7CiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBhZGRSZXF1ZXN0KClgIGlzbid0IGRlZmluZWQgaW4gYEB0eXBlcy9ub2RlYAogICAgICAgICAgcmV0dXJuIHNvY2tldC5hZGRSZXF1ZXN0KHJlcSwgY29ubmVjdE9wdHMpOwogICAgICAgIH0KICAgICAgICB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0ID0gc29ja2V0OwogICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYGNyZWF0ZVNvY2tldCgpYCBpc24ndCBkZWZpbmVkIGluIGBAdHlwZXMvbm9kZWAKICAgICAgICBzdXBlci5jcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYik7CiAgICAgIH0sIGNiKTsKICB9CgogIGNyZWF0ZUNvbm5lY3Rpb24oKSB7CiAgICBjb25zdCBzb2NrZXQgPSB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0OwogICAgdGhpc1tJTlRFUk5BTF0uY3VycmVudFNvY2tldCA9IHVuZGVmaW5lZDsKICAgIGlmICghc29ja2V0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24nKTsKICAgIH0KICAgIHJldHVybiBzb2NrZXQ7CiAgfQoKICBnZXQgZGVmYXVsdFBvcnQoKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLmRlZmF1bHRQb3J0LCAoKSA9PiAoICh0aGlzLnByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwKSkpOwogIH0KCiAgc2V0IGRlZmF1bHRQb3J0KHYpIHsKICAgIGlmICh0aGlzW0lOVEVSTkFMXSkgewogICAgICB0aGlzW0lOVEVSTkFMXS5kZWZhdWx0UG9ydCA9IHY7CiAgICB9CiAgfQoKICBnZXQgcHJvdG9jb2woKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLnByb3RvY29sLCAoKSA9PiAoICh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKSA/ICdodHRwczonIDogJ2h0dHA6JykpKTsKICB9CgogIHNldCBwcm90b2NvbCh2KSB7CiAgICBpZiAodGhpc1tJTlRFUk5BTF0pIHsKICAgICAgdGhpc1tJTlRFUk5BTF0ucHJvdG9jb2wgPSB2OwogICAgfQogIH0KfQoKZnVuY3Rpb24gZGVidWckMSguLi5hcmdzKSB7CiAgbG9nZ2VyLmxvZygnW2h0dHBzLXByb3h5LWFnZW50OnBhcnNlLXByb3h5LXJlc3BvbnNlXScsIC4uLmFyZ3MpOwp9CgpmdW5jdGlvbiBwYXJzZVByb3h5UmVzcG9uc2Uoc29ja2V0KSB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIC8vIHdlIG5lZWQgdG8gYnVmZmVyIGFueSBIVFRQIHRyYWZmaWMgdGhhdCBoYXBwZW5zIHdpdGggdGhlIHByb3h5IGJlZm9yZSB3ZSBnZXQKICAgIC8vIHRoZSBDT05ORUNUIHJlc3BvbnNlLCBzbyB0aGF0IGlmIHRoZSByZXNwb25zZSBpcyBhbnl0aGluZyBvdGhlciB0aGFuIGFuICIyMDAiCiAgICAvLyByZXNwb25zZSBjb2RlLCB0aGVuIHdlIGNhbiByZS1wbGF5IHRoZSAiZGF0YSIgZXZlbnRzIG9uIHRoZSBzb2NrZXQgb25jZSB0aGUKICAgIC8vIEhUVFAgcGFyc2VyIGlzIGhvb2tlZCB1cC4uLgogICAgbGV0IGJ1ZmZlcnNMZW5ndGggPSAwOwogICAgY29uc3QgYnVmZmVycyA9IFtdOwoKICAgIGZ1bmN0aW9uIHJlYWQoKSB7CiAgICAgIGNvbnN0IGIgPSBzb2NrZXQucmVhZCgpOwogICAgICBpZiAoYikgb25kYXRhKGIpOwogICAgICBlbHNlIHNvY2tldC5vbmNlKCdyZWFkYWJsZScsIHJlYWQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpOwogICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCByZWFkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVuZCgpIHsKICAgICAgY2xlYW51cCgpOwogICAgICBkZWJ1ZyQxKCdvbmVuZCcpOwogICAgICByZWplY3QobmV3IEVycm9yKCdQcm94eSBjb25uZWN0aW9uIGVuZGVkIGJlZm9yZSByZWNlaXZpbmcgQ09OTkVDVCByZXNwb25zZScpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVycm9yKGVycikgewogICAgICBjbGVhbnVwKCk7CiAgICAgIGRlYnVnJDEoJ29uZXJyb3IgJW8nLCBlcnIpOwogICAgICByZWplY3QoZXJyKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmRhdGEoYikgewogICAgICBidWZmZXJzLnB1c2goYik7CiAgICAgIGJ1ZmZlcnNMZW5ndGggKz0gYi5sZW5ndGg7CgogICAgICBjb25zdCBidWZmZXJlZCA9IEJ1ZmZlci5jb25jYXQoYnVmZmVycywgYnVmZmVyc0xlbmd0aCk7CiAgICAgIGNvbnN0IGVuZE9mSGVhZGVycyA9IGJ1ZmZlcmVkLmluZGV4T2YoJ1xyXG5cclxuJyk7CgogICAgICBpZiAoZW5kT2ZIZWFkZXJzID09PSAtMSkgewogICAgICAgIC8vIGtlZXAgYnVmZmVyaW5nCiAgICAgICAgZGVidWckMSgnaGF2ZSBub3QgcmVjZWl2ZWQgZW5kIG9mIEhUVFAgaGVhZGVycyB5ZXQuLi4nKTsKICAgICAgICByZWFkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjb25zdCBoZWFkZXJQYXJ0cyA9IGJ1ZmZlcmVkLnNsaWNlKDAsIGVuZE9mSGVhZGVycykudG9TdHJpbmcoJ2FzY2lpJykuc3BsaXQoJ1xyXG4nKTsKICAgICAgY29uc3QgZmlyc3RMaW5lID0gaGVhZGVyUGFydHMuc2hpZnQoKTsKICAgICAgaWYgKCFmaXJzdExpbmUpIHsKICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlJykpOwogICAgICB9CiAgICAgIGNvbnN0IGZpcnN0TGluZVBhcnRzID0gZmlyc3RMaW5lLnNwbGl0KCcgJyk7CiAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSArZmlyc3RMaW5lUGFydHNbMV07CiAgICAgIGNvbnN0IHN0YXR1c1RleHQgPSBmaXJzdExpbmVQYXJ0cy5zbGljZSgyKS5qb2luKCcgJyk7CiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7fTsKICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgaGVhZGVyUGFydHMpIHsKICAgICAgICBpZiAoIWhlYWRlcikgY29udGludWU7CiAgICAgICAgY29uc3QgZmlyc3RDb2xvbiA9IGhlYWRlci5pbmRleE9mKCc6Jyk7CiAgICAgICAgaWYgKGZpcnN0Q29sb24gPT09IC0xKSB7CiAgICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYEludmFsaWQgaGVhZGVyIGZyb20gcHJveHkgQ09OTkVDVCByZXNwb25zZTogIiR7aGVhZGVyfSJgKSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGtleSA9IGhlYWRlci5zbGljZSgwLCBmaXJzdENvbG9uKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGNvbnN0IHZhbHVlID0gaGVhZGVyLnNsaWNlKGZpcnN0Q29sb24gKyAxKS50cmltU3RhcnQoKTsKICAgICAgICBjb25zdCBjdXJyZW50ID0gaGVhZGVyc1trZXldOwogICAgICAgIGlmICh0eXBlb2YgY3VycmVudCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIGhlYWRlcnNba2V5XSA9IFtjdXJyZW50LCB2YWx1ZV07CiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7CiAgICAgICAgICBjdXJyZW50LnB1c2godmFsdWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZGVidWckMSgnZ290IHByb3h5IHNlcnZlciByZXNwb25zZTogJW8gJW8nLCBmaXJzdExpbmUsIGhlYWRlcnMpOwogICAgICBjbGVhbnVwKCk7CiAgICAgIHJlc29sdmUoewogICAgICAgIGNvbm5lY3Q6IHsKICAgICAgICAgIHN0YXR1c0NvZGUsCiAgICAgICAgICBzdGF0dXNUZXh0LAogICAgICAgICAgaGVhZGVycywKICAgICAgICB9LAogICAgICAgIGJ1ZmZlcmVkLAogICAgICB9KTsKICAgIH0KCiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25lcnJvcik7CiAgICBzb2NrZXQub24oJ2VuZCcsIG9uZW5kKTsKCiAgICByZWFkKCk7CiAgfSk7Cn0KCmZ1bmN0aW9uIF9udWxsaXNoQ29hbGVzY2UkMShsaHMsIHJoc0ZuKSB7IGlmIChsaHMgIT0gbnVsbCkgeyByZXR1cm4gbGhzOyB9IGVsc2UgeyByZXR1cm4gcmhzRm4oKTsgfSB9IGZ1bmN0aW9uIF9vcHRpb25hbENoYWluJDEob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KCmZ1bmN0aW9uIGRlYnVnKC4uLmFyZ3MpIHsKICBsb2dnZXIubG9nKCdbaHR0cHMtcHJveHktYWdlbnRdJywgLi4uYXJncyk7Cn0KCi8qKgogKiBUaGUgYEh0dHBzUHJveHlBZ2VudGAgaW1wbGVtZW50cyBhbiBIVFRQIEFnZW50IHN1YmNsYXNzIHRoYXQgY29ubmVjdHMgdG8KICogdGhlIHNwZWNpZmllZCAiSFRUUChzKSBwcm94eSBzZXJ2ZXIiIGluIG9yZGVyIHRvIHByb3h5IEhUVFBTIHJlcXVlc3RzLgogKgogKiBPdXRnb2luZyBIVFRQIHJlcXVlc3RzIGFyZSBmaXJzdCB0dW5uZWxlZCB0aHJvdWdoIHRoZSBwcm94eSBzZXJ2ZXIgdXNpbmcgdGhlCiAqIGBDT05ORUNUYCBIVFRQIHJlcXVlc3QgbWV0aG9kIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciwKICogYW5kIHRoZW4gdGhlIHByb3h5IHNlcnZlciBjb25uZWN0cyB0byB0aGUgZGVzdGluYXRpb24gdGFyZ2V0IGFuZCBpc3N1ZXMgdGhlCiAqIEhUVFAgcmVxdWVzdCBmcm9tIHRoZSBwcm94eSBzZXJ2ZXIuCiAqCiAqIGBodHRwczpgIHJlcXVlc3RzIGhhdmUgdGhlaXIgc29ja2V0IGNvbm5lY3Rpb24gdXBncmFkZWQgdG8gVExTIG9uY2UKICogdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciBoYXMgYmVlbiBlc3RhYmxpc2hlZC4KICovCmNsYXNzIEh0dHBzUHJveHlBZ2VudCBleHRlbmRzIEFnZW50IHsKICBzdGF0aWMgX19pbml0U3RhdGljKCkge3RoaXMucHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJ107IH0KCiAgY29uc3RydWN0b3IocHJveHksIG9wdHMpIHsKICAgIHN1cGVyKG9wdHMpOwogICAgdGhpcy5vcHRpb25zID0ge307CiAgICB0aGlzLnByb3h5ID0gdHlwZW9mIHByb3h5ID09PSAnc3RyaW5nJyA/IG5ldyBVUkwocHJveHkpIDogcHJveHk7CiAgICB0aGlzLnByb3h5SGVhZGVycyA9IF9udWxsaXNoQ29hbGVzY2UkMShfb3B0aW9uYWxDaGFpbiQxKFtvcHRzLCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5oZWFkZXJzXSksICgpID0+ICgge30pKTsKICAgIGRlYnVnKCdDcmVhdGluZyBuZXcgSHR0cHNQcm94eUFnZW50IGluc3RhbmNlOiAlbycsIHRoaXMucHJveHkuaHJlZik7CgogICAgLy8gVHJpbSBvZmYgdGhlIGJyYWNrZXRzIGZyb20gSVB2NiBhZGRyZXNzZXMKICAgIGNvbnN0IGhvc3QgPSAodGhpcy5wcm94eS5ob3N0bmFtZSB8fCB0aGlzLnByb3h5Lmhvc3QpLnJlcGxhY2UoL15cW3xcXSQvZywgJycpOwogICAgY29uc3QgcG9ydCA9IHRoaXMucHJveHkucG9ydCA/IHBhcnNlSW50KHRoaXMucHJveHkucG9ydCwgMTApIDogdGhpcy5wcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyA0NDMgOiA4MDsKICAgIHRoaXMuY29ubmVjdE9wdHMgPSB7CiAgICAgIC8vIEF0dGVtcHQgdG8gbmVnb3RpYXRlIGh0dHAvMS4xIGZvciBwcm94eSBzZXJ2ZXJzIHRoYXQgc3VwcG9ydCBodHRwLzIKICAgICAgQUxQTlByb3RvY29sczogWydodHRwLzEuMSddLAogICAgICAuLi4ob3B0cyA/IG9taXQob3B0cywgJ2hlYWRlcnMnKSA6IG51bGwpLAogICAgICBob3N0LAogICAgICBwb3J0LAogICAgfTsKICB9CgogIC8qKgogICAqIENhbGxlZCB3aGVuIHRoZSBub2RlLWNvcmUgSFRUUCBjbGllbnQgbGlicmFyeSBpcyBjcmVhdGluZyBhCiAgICogbmV3IEhUVFAgcmVxdWVzdC4KICAgKi8KICBhc3luYyBjb25uZWN0KHJlcSwgb3B0cykgewogICAgY29uc3QgeyBwcm94eSB9ID0gdGhpczsKCiAgICBpZiAoIW9wdHMuaG9zdCkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyAiaG9zdCIgcHJvdmlkZWQnKTsKICAgIH0KCiAgICAvLyBDcmVhdGUgYSBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgcHJveHkgc2VydmVyLgogICAgbGV0IHNvY2tldDsKICAgIGlmIChwcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicpIHsKICAgICAgZGVidWcoJ0NyZWF0aW5nIGB0bHMuU29ja2V0YDogJW8nLCB0aGlzLmNvbm5lY3RPcHRzKTsKICAgICAgY29uc3Qgc2VydmVybmFtZSA9IHRoaXMuY29ubmVjdE9wdHMuc2VydmVybmFtZSB8fCB0aGlzLmNvbm5lY3RPcHRzLmhvc3Q7CiAgICAgIHNvY2tldCA9IHRscy5jb25uZWN0KHsKICAgICAgICAuLi50aGlzLmNvbm5lY3RPcHRzLAogICAgICAgIHNlcnZlcm5hbWU6IHNlcnZlcm5hbWUgJiYgbmV0LmlzSVAoc2VydmVybmFtZSkgPyB1bmRlZmluZWQgOiBzZXJ2ZXJuYW1lLAogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGRlYnVnKCdDcmVhdGluZyBgbmV0LlNvY2tldGA6ICVvJywgdGhpcy5jb25uZWN0T3B0cyk7CiAgICAgIHNvY2tldCA9IG5ldC5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpOwogICAgfQoKICAgIGNvbnN0IGhlYWRlcnMgPQogICAgICB0eXBlb2YgdGhpcy5wcm94eUhlYWRlcnMgPT09ICdmdW5jdGlvbicgPyB0aGlzLnByb3h5SGVhZGVycygpIDogeyAuLi50aGlzLnByb3h5SGVhZGVycyB9OwogICAgY29uc3QgaG9zdCA9IG5ldC5pc0lQdjYob3B0cy5ob3N0KSA/IGBbJHtvcHRzLmhvc3R9XWAgOiBvcHRzLmhvc3Q7CiAgICBsZXQgcGF5bG9hZCA9IGBDT05ORUNUICR7aG9zdH06JHtvcHRzLnBvcnR9IEhUVFAvMS4xXHJcbmA7CgogICAgLy8gSW5qZWN0IHRoZSBgUHJveHktQXV0aG9yaXphdGlvbmAgaGVhZGVyIGlmIG5lY2Vzc2FyeS4KICAgIGlmIChwcm94eS51c2VybmFtZSB8fCBwcm94eS5wYXNzd29yZCkgewogICAgICBjb25zdCBhdXRoID0gYCR7ZGVjb2RlVVJJQ29tcG9uZW50KHByb3h5LnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQocHJveHkucGFzc3dvcmQpfWA7CiAgICAgIGhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKGF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKX1gOwogICAgfQoKICAgIGhlYWRlcnMuSG9zdCA9IGAke2hvc3R9OiR7b3B0cy5wb3J0fWA7CgogICAgaWYgKCFoZWFkZXJzWydQcm94eS1Db25uZWN0aW9uJ10pIHsKICAgICAgaGVhZGVyc1snUHJveHktQ29ubmVjdGlvbiddID0gdGhpcy5rZWVwQWxpdmUgPyAnS2VlcC1BbGl2ZScgOiAnY2xvc2UnOwogICAgfQogICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGhlYWRlcnMpKSB7CiAgICAgIHBheWxvYWQgKz0gYCR7bmFtZX06ICR7aGVhZGVyc1tuYW1lXX1cclxuYDsKICAgIH0KCiAgICBjb25zdCBwcm94eVJlc3BvbnNlUHJvbWlzZSA9IHBhcnNlUHJveHlSZXNwb25zZShzb2NrZXQpOwoKICAgIHNvY2tldC53cml0ZShgJHtwYXlsb2FkfVxyXG5gKTsKCiAgICBjb25zdCB7IGNvbm5lY3QsIGJ1ZmZlcmVkIH0gPSBhd2FpdCBwcm94eVJlc3BvbnNlUHJvbWlzZTsKICAgIHJlcS5lbWl0KCdwcm94eUNvbm5lY3QnLCBjb25uZWN0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQKICAgIC8vIEB0cy1pZ25vcmUgTm90IEV2ZW50RW1pdHRlciBpbiBOb2RlIHR5cGVzCiAgICB0aGlzLmVtaXQoJ3Byb3h5Q29ubmVjdCcsIGNvbm5lY3QsIHJlcSk7CgogICAgaWYgKGNvbm5lY3Quc3RhdHVzQ29kZSA9PT0gMjAwKSB7CiAgICAgIHJlcS5vbmNlKCdzb2NrZXQnLCByZXN1bWUpOwoKICAgICAgaWYgKG9wdHMuc2VjdXJlRW5kcG9pbnQpIHsKICAgICAgICAvLyBUaGUgcHJveHkgaXMgY29ubmVjdGluZyB0byBhIFRMUyBzZXJ2ZXIsIHNvIHVwZ3JhZGUKICAgICAgICAvLyB0aGlzIHNvY2tldCBjb25uZWN0aW9uIHRvIGEgVExTIGNvbm5lY3Rpb24uCiAgICAgICAgZGVidWcoJ1VwZ3JhZGluZyBzb2NrZXQgY29ubmVjdGlvbiB0byBUTFMnKTsKICAgICAgICBjb25zdCBzZXJ2ZXJuYW1lID0gb3B0cy5zZXJ2ZXJuYW1lIHx8IG9wdHMuaG9zdDsKICAgICAgICByZXR1cm4gdGxzLmNvbm5lY3QoewogICAgICAgICAgLi4ub21pdChvcHRzLCAnaG9zdCcsICdwYXRoJywgJ3BvcnQnKSwKICAgICAgICAgIHNvY2tldCwKICAgICAgICAgIHNlcnZlcm5hbWU6IG5ldC5pc0lQKHNlcnZlcm5hbWUpID8gdW5kZWZpbmVkIDogc2VydmVybmFtZSwKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgcmV0dXJuIHNvY2tldDsKICAgIH0KCiAgICAvLyBTb21lIG90aGVyIHN0YXR1cyBjb2RlIHRoYXQncyBub3QgMjAwLi4uIG5lZWQgdG8gcmUtcGxheSB0aGUgSFRUUAogICAgLy8gaGVhZGVyICJkYXRhIiBldmVudHMgb250byB0aGUgc29ja2V0IG9uY2UgdGhlIEhUVFAgbWFjaGluZXJ5IGlzCiAgICAvLyBhdHRhY2hlZCBzbyB0aGF0IHRoZSBub2RlIGNvcmUgYGh0dHBgIGNhbiBwYXJzZSBhbmQgaGFuZGxlIHRoZQogICAgLy8gZXJyb3Igc3RhdHVzIGNvZGUuCgogICAgLy8gQ2xvc2UgdGhlIG9yaWdpbmFsIHNvY2tldCwgYW5kIGEgbmV3ICJmYWtlIiBzb2NrZXQgaXMgcmV0dXJuZWQKICAgIC8vIGluc3RlYWQsIHNvIHRoYXQgdGhlIHByb3h5IGRvZXNuJ3QgZ2V0IHRoZSBIVFRQIHJlcXVlc3QKICAgIC8vIHdyaXR0ZW4gdG8gaXQgKHdoaWNoIG1heSBjb250YWluIGBBdXRob3JpemF0aW9uYCBoZWFkZXJzIG9yIG90aGVyCiAgICAvLyBzZW5zaXRpdmUgZGF0YSkuCiAgICAvLwogICAgLy8gU2VlOiBodHRwczovL2hhY2tlcm9uZS5jb20vcmVwb3J0cy81NDE1MDIKICAgIHNvY2tldC5kZXN0cm95KCk7CgogICAgY29uc3QgZmFrZVNvY2tldCA9IG5ldyBuZXQuU29ja2V0KHsgd3JpdGFibGU6IGZhbHNlIH0pOwogICAgZmFrZVNvY2tldC5yZWFkYWJsZSA9IHRydWU7CgogICAgLy8gTmVlZCB0byB3YWl0IGZvciB0aGUgInNvY2tldCIgZXZlbnQgdG8gcmUtcGxheSB0aGUgImRhdGEiIGV2ZW50cy4KICAgIHJlcS5vbmNlKCdzb2NrZXQnLCAocykgPT4gewogICAgICBkZWJ1ZygnUmVwbGF5aW5nIHByb3h5IGJ1ZmZlciBmb3IgZmFpbGVkIHJlcXVlc3QnKTsKICAgICAgLy8gUmVwbGF5IHRoZSAiYnVmZmVyZWQiIEJ1ZmZlciBvbnRvIHRoZSBmYWtlIGBzb2NrZXRgLCBzaW5jZSBhdAogICAgICAvLyB0aGlzIHBvaW50IHRoZSBIVFRQIG1vZHVsZSBtYWNoaW5lcnkgaGFzIGJlZW4gaG9va2VkIHVwIGZvcgogICAgICAvLyB0aGUgdXNlci4KICAgICAgcy5wdXNoKGJ1ZmZlcmVkKTsKICAgICAgcy5wdXNoKG51bGwpOwogICAgfSk7CgogICAgcmV0dXJuIGZha2VTb2NrZXQ7CiAgfQp9IEh0dHBzUHJveHlBZ2VudC5fX2luaXRTdGF0aWMoKTsKCmZ1bmN0aW9uIHJlc3VtZShzb2NrZXQpIHsKICBzb2NrZXQucmVzdW1lKCk7Cn0KCmZ1bmN0aW9uIG9taXQoCiAgb2JqLAogIC4uLmtleXMKKQoKIHsKICBjb25zdCByZXQgPSB7fQoKOwogIGxldCBrZXk7CiAgZm9yIChrZXkgaW4gb2JqKSB7CiAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkgewogICAgICByZXRba2V5XSA9IG9ialtrZXldOwogICAgfQogIH0KICByZXR1cm4gcmV0Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlKGxocywgcmhzRm4pIHsgaWYgKGxocyAhPSBudWxsKSB7IHJldHVybiBsaHM7IH0gZWxzZSB7IHJldHVybiByaHNGbigpOyB9IH0KLy8gRXN0aW1hdGVkIG1heGltdW0gc2l6ZSBmb3IgcmVhc29uYWJsZSBzdGFuZGFsb25lIGV2ZW50CmNvbnN0IEdaSVBfVEhSRVNIT0xEID0gMTAyNCAqIDMyOwoKLyoqCiAqIEdldHMgYSBzdHJlYW0gZnJvbSBhIFVpbnQ4QXJyYXkgb3Igc3RyaW5nCiAqIFJlYWRhYmxlLmZyb20gaXMgaWRlYWwgYnV0IHdhcyBhZGRlZCBpbiBub2RlLmpzIHYxMi4zLjAgYW5kIHYxMC4xNy4wCiAqLwpmdW5jdGlvbiBzdHJlYW1Gcm9tQm9keShib2R5KSB7CiAgcmV0dXJuIG5ldyBSZWFkYWJsZSh7CiAgICByZWFkKCkgewogICAgICB0aGlzLnB1c2goYm9keSk7CiAgICAgIHRoaXMucHVzaChudWxsKTsKICAgIH0sCiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgVHJhbnNwb3J0IHRoYXQgdXNlcyBuYXRpdmUgdGhlIG5hdGl2ZSAnaHR0cCcgYW5kICdodHRwcycgbW9kdWxlcyB0byBzZW5kIGV2ZW50cyB0byBTZW50cnkuCiAqLwpmdW5jdGlvbiBtYWtlTm9kZVRyYW5zcG9ydChvcHRpb25zKSB7CiAgbGV0IHVybFNlZ21lbnRzOwoKICB0cnkgewogICAgdXJsU2VnbWVudHMgPSBuZXcgVVJMKG9wdGlvbnMudXJsKTsKICB9IGNhdGNoIChlKSB7CiAgICBjb25zb2xlU2FuZGJveCgoKSA9PiB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICAgIGNvbnNvbGUud2FybigKICAgICAgICAnW0BzZW50cnkvbm9kZV06IEludmFsaWQgZHNuIG9yIHR1bm5lbCBvcHRpb24sIHdpbGwgbm90IHNlbmQgYW55IGV2ZW50cy4gVGhlIHR1bm5lbCBvcHRpb24gbXVzdCBiZSBhIGZ1bGwgVVJMIHdoZW4gdXNlZC4nLAogICAgICApOwogICAgfSk7CiAgICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsICgpID0+IFByb21pc2UucmVzb2x2ZSh7fSkpOwogIH0KCiAgY29uc3QgaXNIdHRwcyA9IHVybFNlZ21lbnRzLnByb3RvY29sID09PSAnaHR0cHM6JzsKCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHAgPT4gYG9wdGlvbnMucHJveHlgIHwgYHByb2Nlc3MuZW52Lmh0dHBfcHJveHlgCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHBzID0+IGBvcHRpb25zLnByb3h5YCB8IGBwcm9jZXNzLmVudi5odHRwc19wcm94eWAgfCBgcHJvY2Vzcy5lbnYuaHR0cF9wcm94eWAKICBjb25zdCBwcm94eSA9IGFwcGx5Tm9Qcm94eU9wdGlvbigKICAgIHVybFNlZ21lbnRzLAogICAgb3B0aW9ucy5wcm94eSB8fCAoaXNIdHRwcyA/IHByb2Nlc3MuZW52Lmh0dHBzX3Byb3h5IDogdW5kZWZpbmVkKSB8fCBwcm9jZXNzLmVudi5odHRwX3Byb3h5LAogICk7CgogIGNvbnN0IG5hdGl2ZUh0dHBNb2R1bGUgPSBpc0h0dHBzID8gaHR0cHMgOiBodHRwOwogIGNvbnN0IGtlZXBBbGl2ZSA9IG9wdGlvbnMua2VlcEFsaXZlID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG9wdGlvbnMua2VlcEFsaXZlOwoKICAvLyBUT0RPKHY3KTogRXZhbHVhdGUgaWYgd2UgY2FuIHNldCBrZWVwQWxpdmUgdG8gdHJ1ZS4gVGhpcyB3b3VsZCBpbnZvbHZlIHRlc3RpbmcgZm9yIG1lbW9yeSBsZWFrcyBpbiBvbGRlciBub2RlCiAgLy8gdmVyc2lvbnMoPj0gOCkgYXMgdGhleSBoYWQgbWVtb3J5IGxlYWtzIHdoZW4gdXNpbmcgaXQ6ICMyNTU1CiAgY29uc3QgYWdlbnQgPSBwcm94eQogICAgPyAobmV3IEh0dHBzUHJveHlBZ2VudChwcm94eSkgKQogICAgOiBuZXcgbmF0aXZlSHR0cE1vZHVsZS5BZ2VudCh7IGtlZXBBbGl2ZSwgbWF4U29ja2V0czogMzAsIHRpbWVvdXQ6IDIwMDAgfSk7CgogIGNvbnN0IHJlcXVlc3RFeGVjdXRvciA9IGNyZWF0ZVJlcXVlc3RFeGVjdXRvcihvcHRpb25zLCBfbnVsbGlzaENvYWxlc2NlKG9wdGlvbnMuaHR0cE1vZHVsZSwgKCkgPT4gKCBuYXRpdmVIdHRwTW9kdWxlKSksIGFnZW50KTsKICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsIHJlcXVlc3RFeGVjdXRvcik7Cn0KCi8qKgogKiBIb25vcnMgdGhlIGBub19wcm94eWAgZW52IHZhcmlhYmxlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgdG8gYWxsb3cgZm9yIGhvc3RzIGV4Y2x1c2lvbi4KICoKICogQHBhcmFtIHRyYW5zcG9ydFVybCBUaGUgVVJMIHRoZSB0cmFuc3BvcnQgaW50ZW5kcyB0byBzZW5kIGV2ZW50cyB0by4KICogQHBhcmFtIHByb3h5IFRoZSBjbGllbnQgY29uZmlndXJlZCBwcm94eS4KICogQHJldHVybnMgQSBwcm94eSB0aGUgdHJhbnNwb3J0IHNob3VsZCB1c2UuCiAqLwpmdW5jdGlvbiBhcHBseU5vUHJveHlPcHRpb24odHJhbnNwb3J0VXJsU2VnbWVudHMsIHByb3h5KSB7CiAgY29uc3QgeyBub19wcm94eSB9ID0gcHJvY2Vzcy5lbnY7CgogIGNvbnN0IHVybElzRXhlbXB0RnJvbVByb3h5ID0KICAgIG5vX3Byb3h5ICYmCiAgICBub19wcm94eQogICAgICAuc3BsaXQoJywnKQogICAgICAuc29tZSgKICAgICAgICBleGVtcHRpb24gPT4gdHJhbnNwb3J0VXJsU2VnbWVudHMuaG9zdC5lbmRzV2l0aChleGVtcHRpb24pIHx8IHRyYW5zcG9ydFVybFNlZ21lbnRzLmhvc3RuYW1lLmVuZHNXaXRoKGV4ZW1wdGlvbiksCiAgICAgICk7CgogIGlmICh1cmxJc0V4ZW1wdEZyb21Qcm94eSkgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9IGVsc2UgewogICAgcmV0dXJuIHByb3h5OwogIH0KfQoKLyoqCiAqIENyZWF0ZXMgYSBSZXF1ZXN0RXhlY3V0b3IgdG8gYmUgdXNlZCB3aXRoIGBjcmVhdGVUcmFuc3BvcnRgLgogKi8KZnVuY3Rpb24gY3JlYXRlUmVxdWVzdEV4ZWN1dG9yKAogIG9wdGlvbnMsCiAgaHR0cE1vZHVsZSwKICBhZ2VudCwKKSB7CiAgY29uc3QgeyBob3N0bmFtZSwgcGF0aG5hbWUsIHBvcnQsIHByb3RvY29sLCBzZWFyY2ggfSA9IG5ldyBVUkwob3B0aW9ucy51cmwpOwogIHJldHVybiBmdW5jdGlvbiBtYWtlUmVxdWVzdChyZXF1ZXN0KSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgYm9keSA9IHN0cmVhbUZyb21Cb2R5KHJlcXVlc3QuYm9keSk7CgogICAgICBjb25zdCBoZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMgfTsKCiAgICAgIGlmIChyZXF1ZXN0LmJvZHkubGVuZ3RoID4gR1pJUF9USFJFU0hPTEQpIHsKICAgICAgICBoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPSAnZ3ppcCc7CiAgICAgICAgYm9keSA9IGJvZHkucGlwZShjcmVhdGVHemlwKCkpOwogICAgICB9CgogICAgICBjb25zdCByZXEgPSBodHRwTW9kdWxlLnJlcXVlc3QoCiAgICAgICAgewogICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICBhZ2VudCwKICAgICAgICAgIGhlYWRlcnMsCiAgICAgICAgICBob3N0bmFtZSwKICAgICAgICAgIHBhdGg6IGAke3BhdGhuYW1lfSR7c2VhcmNofWAsCiAgICAgICAgICBwb3J0LAogICAgICAgICAgcHJvdG9jb2wsCiAgICAgICAgICBjYTogb3B0aW9ucy5jYUNlcnRzLAogICAgICAgIH0sCiAgICAgICAgcmVzID0+IHsKICAgICAgICAgIHJlcy5vbignZGF0YScsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMuc2V0RW5jb2RpbmcoJ3V0ZjgnKTsKCiAgICAgICAgICAvLyAiS2V5LXZhbHVlIHBhaXJzIG9mIGhlYWRlciBuYW1lcyBhbmQgdmFsdWVzLiBIZWFkZXIgbmFtZXMgYXJlIGxvd2VyLWNhc2VkLiIKICAgICAgICAgIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzCiAgICAgICAgICBjb25zdCByZXRyeUFmdGVySGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSwgKCkgPT4gKCBudWxsKSk7CiAgICAgICAgICBjb25zdCByYXRlTGltaXRzSGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sneC1zZW50cnktcmF0ZS1saW1pdHMnXSwgKCkgPT4gKCBudWxsKSk7CgogICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlcy5zdGF0dXNDb2RlLAogICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgJ3JldHJ5LWFmdGVyJzogcmV0cnlBZnRlckhlYWRlciwKICAgICAgICAgICAgICAneC1zZW50cnktcmF0ZS1saW1pdHMnOiBBcnJheS5pc0FycmF5KHJhdGVMaW1pdHNIZWFkZXIpID8gcmF0ZUxpbWl0c0hlYWRlclswXSA6IHJhdGVMaW1pdHNIZWFkZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdCk7CiAgICAgIGJvZHkucGlwZShyZXEpOwogICAgfSk7CiAgfTsKfQoKZnVuY3Rpb24gX29wdGlvbmFsQ2hhaW4ob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KY29uc3Qgb3B0aW9ucyA9IHdvcmtlckRhdGE7CmxldCBzZXNzaW9uOwpsZXQgaGFzU2VudEFuckV2ZW50ID0gZmFsc2U7CgpmdW5jdGlvbiBsb2cobXNnKSB7CiAgaWYgKG9wdGlvbnMuZGVidWcpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICBjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7bXNnfWApOwogIH0KfQoKY29uc3QgdXJsID0gZ2V0RW52ZWxvcGVFbmRwb2ludFdpdGhVcmxFbmNvZGVkQXV0aChvcHRpb25zLmRzbik7CmNvbnN0IHRyYW5zcG9ydCA9IG1ha2VOb2RlVHJhbnNwb3J0KHsKICB1cmwsCiAgcmVjb3JkRHJvcHBlZEV2ZW50OiAoKSA9PiB7CiAgICAvLwogIH0sCn0pOwoKYXN5bmMgZnVuY3Rpb24gc2VuZEFibm9ybWFsU2Vzc2lvbigpIHsKICAvLyBvZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIHNlc3Npb24gcGFzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBzZW5kIGl0IGFzIGFibm9ybWFsCiAgaWYgKHNlc3Npb24pIHsKICAgIGxvZygnU2VuZGluZyBhYm5vcm1hbCBzZXNzaW9uJyk7CiAgICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIHsgc3RhdHVzOiAnYWJub3JtYWwnLCBhYm5vcm1hbF9tZWNoYW5pc206ICdhbnJfZm9yZWdyb3VuZCcgfSk7CgogICAgY29uc3QgZW52ZWxvcGUgPSBjcmVhdGVTZXNzaW9uRW52ZWxvcGUoc2Vzc2lvbiwgb3B0aW9ucy5kc24sIG9wdGlvbnMuc2RrTWV0YWRhdGEpOwogICAgLy8gTG9nIHRoZSBlbnZlbG9wZSBzbyB0byBhaWQgaW4gdGVzdGluZwogICAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogICAgYXdhaXQgdHJhbnNwb3J0LnNlbmQoZW52ZWxvcGUpOwoKICAgIHRyeSB7CiAgICAgIC8vIE5vdGlmeSB0aGUgbWFpbiBwcm9jZXNzIHRoYXQgdGhlIHNlc3Npb24gaGFzIGVuZGVkIHNvIHRoZSBzZXNzaW9uIGNhbiBiZSBjbGVhcmVkIGZyb20gdGhlIHNjb3BlCiAgICAgIF9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5wb3N0TWVzc2FnZSwgJ2NhbGwnLCBfMyA9PiBfMygnc2Vzc2lvbi1lbmRlZCcpXSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vIGlnbm9yZQogICAgfQogIH0KfQoKbG9nKCdTdGFydGVkJyk7CgpmdW5jdGlvbiBwcmVwYXJlU3RhY2tGcmFtZXMoc3RhY2tGcmFtZXMpIHsKICBpZiAoIXN0YWNrRnJhbWVzKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgLy8gU3RyaXAgU2VudHJ5IGZyYW1lcyBhbmQgcmV2ZXJzZSB0aGUgc3RhY2sgZnJhbWVzIHNvIHRoZXkgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAgY29uc3Qgc3RyaXBwZWRGcmFtZXMgPSBzdHJpcFNlbnRyeUZyYW1lc0FuZFJldmVyc2Uoc3RhY2tGcmFtZXMpOwoKICAvLyBJZiB3ZSBoYXZlIGFuIGFwcCByb290IHBhdGgsIHJld3JpdGUgdGhlIGZpbGVuYW1lcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgYXBwIHJvb3QKICBpZiAob3B0aW9ucy5hcHBSb290UGF0aCkgewogICAgZm9yIChjb25zdCBmcmFtZSBvZiBzdHJpcHBlZEZyYW1lcykgewogICAgICBpZiAoIWZyYW1lLmZpbGVuYW1lKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIGZyYW1lLmZpbGVuYW1lID0gbm9ybWFsaXplVXJsVG9CYXNlKGZyYW1lLmZpbGVuYW1lLCBvcHRpb25zLmFwcFJvb3RQYXRoKTsKICAgIH0KICB9CgogIHJldHVybiBzdHJpcHBlZEZyYW1lczsKfQoKZnVuY3Rpb24gYXBwbHlTY29wZVRvRXZlbnQoZXZlbnQsIHNjb3BlKSB7CiAgYXBwbHlTY29wZURhdGFUb0V2ZW50KGV2ZW50LCBzY29wZSk7CgogIGlmICghX29wdGlvbmFsQ2hhaW4oW2V2ZW50LCAnYWNjZXNzJywgXzQgPT4gXzQuY29udGV4dHMsICdvcHRpb25hbEFjY2VzcycsIF81ID0+IF81LnRyYWNlXSkpIHsKICAgIGNvbnN0IHsgdHJhY2VJZCwgc3BhbklkLCBwYXJlbnRTcGFuSWQgfSA9IHNjb3BlLnByb3BhZ2F0aW9uQ29udGV4dDsKICAgIGV2ZW50LmNvbnRleHRzID0gewogICAgICB0cmFjZTogewogICAgICAgIHRyYWNlX2lkOiB0cmFjZUlkLAogICAgICAgIHNwYW5faWQ6IHNwYW5JZCwKICAgICAgICBwYXJlbnRfc3Bhbl9pZDogcGFyZW50U3BhbklkLAogICAgICB9LAogICAgICAuLi5ldmVudC5jb250ZXh0cywKICAgIH07CiAgfQp9Cgphc3luYyBmdW5jdGlvbiBzZW5kQW5yRXZlbnQoZnJhbWVzLCBzY29wZSkgewogIGlmIChoYXNTZW50QW5yRXZlbnQpIHsKICAgIHJldHVybjsKICB9CgogIGhhc1NlbnRBbnJFdmVudCA9IHRydWU7CgogIGF3YWl0IHNlbmRBYm5vcm1hbFNlc3Npb24oKTsKCiAgbG9nKCdTZW5kaW5nIGV2ZW50Jyk7CgogIGNvbnN0IGV2ZW50ID0gewogICAgZXZlbnRfaWQ6IHV1aWQ0KCksCiAgICBjb250ZXh0czogb3B0aW9ucy5jb250ZXh0cywKICAgIHJlbGVhc2U6IG9wdGlvbnMucmVsZWFzZSwKICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LAogICAgZGlzdDogb3B0aW9ucy5kaXN0LAogICAgcGxhdGZvcm06ICdub2RlJywKICAgIGxldmVsOiAnZXJyb3InLAogICAgZXhjZXB0aW9uOiB7CiAgICAgIHZhbHVlczogWwogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdBcHBsaWNhdGlvbk5vdFJlc3BvbmRpbmcnLAogICAgICAgICAgdmFsdWU6IGBBcHBsaWNhdGlvbiBOb3QgUmVzcG9uZGluZyBmb3IgYXQgbGVhc3QgJHtvcHRpb25zLmFuclRocmVzaG9sZH0gbXNgLAogICAgICAgICAgc3RhY2t0cmFjZTogeyBmcmFtZXM6IHByZXBhcmVTdGFja0ZyYW1lcyhmcmFtZXMpIH0sCiAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIFVJIGRvZXNuJ3Qgc2F5ICdDcmFzaGVkIGluJyBmb3IgdGhlIHN0YWNrIHRyYWNlCiAgICAgICAgICBtZWNoYW5pc206IHsgdHlwZTogJ0FOUicgfSwKICAgICAgICB9LAogICAgICBdLAogICAgfSwKICAgIHRhZ3M6IG9wdGlvbnMuc3RhdGljVGFncywKICB9OwoKICBpZiAoc2NvcGUpIHsKICAgIGFwcGx5U2NvcGVUb0V2ZW50KGV2ZW50LCBzY29wZSk7CiAgfQoKICBjb25zdCBlbnZlbG9wZSA9IGNyZWF0ZUV2ZW50RW52ZWxvcGUoZXZlbnQsIG9wdGlvbnMuZHNuLCBvcHRpb25zLnNka01ldGFkYXRhKTsKICAvLyBMb2cgdGhlIGVudmVsb3BlIHRvIGFpZCBpbiB0ZXN0aW5nCiAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogIGF3YWl0IHRyYW5zcG9ydC5zZW5kKGVudmVsb3BlKTsKICBhd2FpdCB0cmFuc3BvcnQuZmx1c2goMjAwMCk7CgogIC8vIERlbGF5IGZvciA1IHNlY29uZHMgc28gdGhhdCBzdGRpbyBjYW4gZmx1c2ggaW4gdGhlIG1haW4gZXZlbnQgbG9vcCBldmVyIHJlc3RhcnRzLgogIC8vIFRoaXMgaXMgbWFpbmx5IGZvciB0aGUgYmVuZWZpdCBvZiBsb2dnaW5nL2RlYnVnZ2luZyBpc3N1ZXMuCiAgc2V0VGltZW91dCgoKSA9PiB7CiAgICBwcm9jZXNzLmV4aXQoMCk7CiAgfSwgNTAwMCk7Cn0KCmxldCBkZWJ1Z2dlclBhdXNlOwoKaWYgKG9wdGlvbnMuY2FwdHVyZVN0YWNrVHJhY2UpIHsKICBsb2coJ0Nvbm5lY3RpbmcgdG8gZGVidWdnZXInKTsKCiAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKCkgOwogIHNlc3Npb24uY29ubmVjdFRvTWFpblRocmVhZCgpOwoKICBsb2coJ0Nvbm5lY3RlZCB0byBkZWJ1Z2dlcicpOwoKICAvLyBDb2xsZWN0IHNjcmlwdElkIC0+IHVybCBtYXAgc28gd2UgY2FuIGxvb2sgdXAgdGhlIGZpbGVuYW1lcyBsYXRlcgogIGNvbnN0IHNjcmlwdHMgPSBuZXcgTWFwKCk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnNjcmlwdFBhcnNlZCcsIGV2ZW50ID0+IHsKICAgIHNjcmlwdHMuc2V0KGV2ZW50LnBhcmFtcy5zY3JpcHRJZCwgZXZlbnQucGFyYW1zLnVybCk7CiAgfSk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnBhdXNlZCcsIGV2ZW50ID0+IHsKICAgIGlmIChldmVudC5wYXJhbXMucmVhc29uICE9PSAnb3RoZXInKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0cnkgewogICAgICBsb2coJ0RlYnVnZ2VyIHBhdXNlZCcpOwoKICAgICAgLy8gY29weSB0aGUgZnJhbWVzCiAgICAgIGNvbnN0IGNhbGxGcmFtZXMgPSBbLi4uZXZlbnQucGFyYW1zLmNhbGxGcmFtZXNdOwoKICAgICAgY29uc3QgZ2V0TW9kdWxlTmFtZSA9IG9wdGlvbnMuYXBwUm9vdFBhdGggPyBjcmVhdGVHZXRNb2R1bGVGcm9tRmlsZW5hbWUob3B0aW9ucy5hcHBSb290UGF0aCkgOiAoKSA9PiB1bmRlZmluZWQ7CiAgICAgIGNvbnN0IHN0YWNrRnJhbWVzID0gY2FsbEZyYW1lcy5tYXAoZnJhbWUgPT4KICAgICAgICBjYWxsRnJhbWVUb1N0YWNrRnJhbWUoZnJhbWUsIHNjcmlwdHMuZ2V0KGZyYW1lLmxvY2F0aW9uLnNjcmlwdElkKSwgZ2V0TW9kdWxlTmFtZSksCiAgICAgICk7CgogICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBpbiB0aGUgY3VycmVudGx5IHBhdXNlZCBjb250ZXh0CiAgICAgIHNlc3Npb24ucG9zdCgKICAgICAgICAnUnVudGltZS5ldmFsdWF0ZScsCiAgICAgICAgewogICAgICAgICAgLy8gR3JhYiB0aGUgdHJhY2UgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50IHNjb3BlCiAgICAgICAgICBleHByZXNzaW9uOiAnZ2xvYmFsLl9fU0VOVFJZX0dFVF9TQ09QRVNfXygpOycsCiAgICAgICAgICAvLyBEb24ndCByZS10cmlnZ2VyIHRoZSBkZWJ1Z2dlciBpZiB0aGlzIGNhdXNlcyBhbiBlcnJvcgogICAgICAgICAgc2lsZW50OiB0cnVlLAogICAgICAgICAgLy8gU2VyaWFsaXplIHRoZSByZXN1bHQgdG8ganNvbiBvdGhlcndpc2Ugb25seSBwcmltaXRpdmVzIGFyZSBzdXBwb3J0ZWQKICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCiAgICAgICAgfSwKICAgICAgICAoZXJyLCBwYXJhbSkgPT4gewogICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBsb2coYEVycm9yIGV4ZWN1dGluZyBzY3JpcHQ6ICcke2Vyci5tZXNzYWdlfSdgKTsKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zdCBzY29wZXMgPSBwYXJhbSAmJiBwYXJhbS5yZXN1bHQgPyAocGFyYW0ucmVzdWx0LnZhbHVlICkgOiB1bmRlZmluZWQ7CgogICAgICAgICAgc2Vzc2lvbi5wb3N0KCdEZWJ1Z2dlci5yZXN1bWUnKTsKICAgICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZGlzYWJsZScpOwoKICAgICAgICAgIHNlbmRBbnJFdmVudChzdGFja0ZyYW1lcywgc2NvcGVzKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuJyk7CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwogICAgfSBjYXRjaCAoZSkgewogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLnJlc3VtZScpOwogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLmRpc2FibGUnKTsKICAgICAgdGhyb3cgZTsKICAgIH0KICB9KTsKCiAgZGVidWdnZXJQYXVzZSA9ICgpID0+IHsKICAgIHRyeSB7CiAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZW5hYmxlJywgKCkgPT4gewogICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIucGF1c2UnKTsKICAgICAgfSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vCiAgICB9CiAgfTsKfQoKZnVuY3Rpb24gY3JlYXRlSHJUaW1lcigpIHsKICAvLyBUT0RPICh2OCk6IFdlIGNhbiB1c2UgcHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgYWZ0ZXIgd2UgZHJvcCBub2RlIHY4CiAgbGV0IGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKCiAgcmV0dXJuIHsKICAgIGdldFRpbWVNczogKCkgPT4gewogICAgICBjb25zdCBbc2Vjb25kcywgbmFub1NlY29uZHNdID0gcHJvY2Vzcy5ocnRpbWUobGFzdFBvbGwpOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihzZWNvbmRzICogMWUzICsgbmFub1NlY29uZHMgLyAxZTYpOwogICAgfSwKICAgIHJlc2V0OiAoKSA9PiB7CiAgICAgIGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKICAgIH0sCiAgfTsKfQoKZnVuY3Rpb24gd2F0Y2hkb2dUaW1lb3V0KCkgewogIGxvZygnV2F0Y2hkb2cgdGltZW91dCcpOwoKICBpZiAoZGVidWdnZXJQYXVzZSkgewogICAgbG9nKCdQYXVzaW5nIGRlYnVnZ2VyIHRvIGNhcHR1cmUgc3RhY2sgdHJhY2UnKTsKICAgIGRlYnVnZ2VyUGF1c2UoKTsKICB9IGVsc2UgewogICAgbG9nKCdDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlJyk7CiAgICBzZW5kQW5yRXZlbnQoKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQgb24gd2F0Y2hkb2cgdGltZW91dC4nKTsKICAgIH0pOwogIH0KfQoKY29uc3QgeyBwb2xsIH0gPSB3YXRjaGRvZ1RpbWVyKGNyZWF0ZUhyVGltZXIsIG9wdGlvbnMucG9sbEludGVydmFsLCBvcHRpb25zLmFuclRocmVzaG9sZCwgd2F0Y2hkb2dUaW1lb3V0KTsKCl9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfNiA9PiBfNi5vbiwgJ2NhbGwnLCBfNyA9PiBfNygnbWVzc2FnZScsIChtc2cpID0+IHsKICBpZiAobXNnLnNlc3Npb24pIHsKICAgIHNlc3Npb24gPSBtYWtlU2Vzc2lvbihtc2cuc2Vzc2lvbik7CiAgfQoKICBwb2xsKCk7Cn0pXSk7"},1949:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9023);const i=o(9090);const a=o(4624);const c="Console";const _consoleIntegration=()=>({name:c,setupOnce(){},setup(t){a.addConsoleInstrumentationHandler(({args:n,level:o})=>{if(i.getClient()!==t){return}i.addBreadcrumb({category:"console",level:a.severityLevelFromString(o),message:r.format.apply(undefined,n)},{input:[...n],level:o})})}});const g=i.defineIntegration(_consoleIntegration);const l=i.convertIntegrationFnToClass(c,g);n.Console=l;n.consoleIntegration=g},5587:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(5317);const a=o(9896);const c=o(857);const g=o(6928);const l=o(9023);const d=o(9090);const u=l.promisify(a.readFile);const I=l.promisify(a.readdir);const C="Context";const _nodeContextIntegration=(t={})=>{let n;const o={app:true,os:true,device:true,culture:true,cloudResource:true,...t};async function addContext(t){if(n===undefined){n=_getContexts()}const o=_updateContext(await n);t.contexts={...t.contexts,app:{...o.app,...r([t,"access",t=>t.contexts,"optionalAccess",t=>t.app])},os:{...o.os,...r([t,"access",t=>t.contexts,"optionalAccess",t=>t.os])},device:{...o.device,...r([t,"access",t=>t.contexts,"optionalAccess",t=>t.device])},culture:{...o.culture,...r([t,"access",t=>t.contexts,"optionalAccess",t=>t.culture])},cloud_resource:{...o.cloud_resource,...r([t,"access",t=>t.contexts,"optionalAccess",t=>t.cloud_resource])}};return t}async function _getContexts(){const t={};if(o.os){t.os=await getOsContext()}if(o.app){t.app=getAppContext()}if(o.device){t.device=getDeviceContext(o.device)}if(o.culture){const n=getCultureContext();if(n){t.culture=n}}if(o.cloudResource){t.cloud_resource=getCloudResourceContext()}return t}return{name:C,setupOnce(){},processEvent(t){return addContext(t)}}};const p=d.defineIntegration(_nodeContextIntegration);const m=d.convertIntegrationFnToClass(C,p);function _updateContext(t){if(r([t,"optionalAccess",t=>t.app,"optionalAccess",t=>t.app_memory])){t.app.app_memory=process.memoryUsage().rss}if(r([t,"optionalAccess",t=>t.device,"optionalAccess",t=>t.free_memory])){t.device.free_memory=c.freemem()}return t}async function getOsContext(){const t=c.platform();switch(t){case"darwin":return getDarwinInfo();case"linux":return getLinuxInfo();default:return{name:b[t]||t,version:c.release()}}}function getCultureContext(){try{if(typeof process.versions.icu!=="string"){return}const t=new Date(9e8);const n=new Intl.DateTimeFormat("es",{month:"long"});if(n.format(t)==="enero"){const t=Intl.DateTimeFormat().resolvedOptions();return{locale:t.locale,timezone:t.timeZone}}}catch(t){}return}function getAppContext(){const t=process.memoryUsage().rss;const n=new Date(Date.now()-process.uptime()*1e3).toISOString();return{app_start_time:n,app_memory:t}}function getDeviceContext(t){const n={};let o;try{o=c.uptime&&c.uptime()}catch(t){}if(typeof o==="number"){n.boot_time=new Date(Date.now()-o*1e3).toISOString()}n.arch=c.arch();if(t===true||t.memory){n.memory_size=c.totalmem();n.free_memory=c.freemem()}if(t===true||t.cpu){const t=c.cpus();if(t&&t.length){const o=t[0];n.processor_count=t.length;n.cpu_description=o.model;n.processor_frequency=o.speed}}return n}const b={aix:"IBM AIX",freebsd:"FreeBSD",openbsd:"OpenBSD",sunos:"SunOS",win32:"Windows"};const h=[{name:"fedora-release",distros:["Fedora"]},{name:"redhat-release",distros:["Red Hat Linux","Centos"]},{name:"redhat_version",distros:["Red Hat Linux"]},{name:"SuSE-release",distros:["SUSE Linux"]},{name:"lsb-release",distros:["Ubuntu Linux","Arch Linux"]},{name:"debian_version",distros:["Debian"]},{name:"debian_release",distros:["Debian"]},{name:"arch-release",distros:["Arch Linux"]},{name:"gentoo-release",distros:["Gentoo Linux"]},{name:"novell-release",distros:["SUSE Linux"]},{name:"alpine-release",distros:["Alpine Linux"]}];const G={alpine:t=>t,arch:t=>matchFirst(/distrib_release=(.*)/,t),centos:t=>matchFirst(/release ([^ ]+)/,t),debian:t=>t,fedora:t=>matchFirst(/release (..)/,t),mint:t=>matchFirst(/distrib_release=(.*)/,t),red:t=>matchFirst(/release ([^ ]+)/,t),suse:t=>matchFirst(/VERSION = (.*)\n/,t),ubuntu:t=>matchFirst(/distrib_release=(.*)/,t)};function matchFirst(t,n){const o=t.exec(n);return o?o[1]:undefined}async function getDarwinInfo(){const t={kernel_version:c.release(),name:"Mac OS X",version:`10.${Number(c.release().split(".")[0])-4}`};try{const n=await new Promise((t,n)=>{i.execFile("/usr/bin/sw_vers",(o,r)=>{if(o){n(o);return}t(r)})});t.name=matchFirst(/^ProductName:\s+(.*)$/m,n);t.version=matchFirst(/^ProductVersion:\s+(.*)$/m,n);t.build=matchFirst(/^BuildVersion:\s+(.*)$/m,n)}catch(t){}return t}function getLinuxDistroId(t){return t.split(" ")[0].toLowerCase()}async function getLinuxInfo(){const t={kernel_version:c.release(),name:"Linux"};try{const n=await I("/etc");const o=h.find(t=>n.includes(t.name));if(!o){return t}const r=g.join("/etc",o.name);const i=(await u(r,{encoding:"utf-8"})).toLowerCase();const{distros:a}=o;t.name=a.find(t=>i.indexOf(getLinuxDistroId(t))>=0)||a[0];const c=getLinuxDistroId(t.name);t.version=G[c](i)}catch(t){}return t}function getCloudResourceContext(){if(process.env.VERCEL){return{"cloud.provider":"vercel","cloud.region":process.env.VERCEL_REGION}}else if(process.env.AWS_REGION){return{"cloud.provider":"aws","cloud.region":process.env.AWS_REGION,"cloud.platform":process.env.AWS_EXECUTION_ENV}}else if(process.env.GCP_PROJECT){return{"cloud.provider":"gcp"}}else if(process.env.ALIYUN_REGION_ID){return{"cloud.provider":"alibaba_cloud","cloud.region":process.env.ALIYUN_REGION_ID}}else if(process.env.WEBSITE_SITE_NAME&&process.env.REGION_NAME){return{"cloud.provider":"azure","cloud.region":process.env.REGION_NAME}}else if(process.env.IBM_CLOUD_REGION){return{"cloud.provider":"ibm_cloud","cloud.region":process.env.IBM_CLOUD_REGION}}else if(process.env.TENCENTCLOUD_REGION){return{"cloud.provider":"tencent_cloud","cloud.region":process.env.TENCENTCLOUD_REGION,"cloud.account.id":process.env.TENCENTCLOUD_APPID,"cloud.availability_zone":process.env.TENCENTCLOUD_ZONE}}else if(process.env.NETLIFY){return{"cloud.provider":"netlify"}}else if(process.env.FLY_REGION){return{"cloud.provider":"fly.io","cloud.region":process.env.FLY_REGION}}else if(process.env.DYNO){return{"cloud.provider":"heroku"}}else{return undefined}}n.Context=m;n.getDeviceContext=getDeviceContext;n.nodeContextIntegration=p;n.readDirAsync=I;n.readFileAsync=u},164:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9896);const a=o(9090);const c=o(4624);const g=new c.LRUMap(100);const l=7;const d="ContextLines";function readTextFileAsync(t){return new Promise((n,o)=>{i.readFile(t,"utf8",(t,r)=>{if(t)o(t);else n(r)})})}const _contextLinesIntegration=(t={})=>{const n=t.frameContextLines!==undefined?t.frameContextLines:l;return{name:d,setupOnce(){},processEvent(t){return addSourceContext(t,n)}}};const u=a.defineIntegration(_contextLinesIntegration);const I=a.convertIntegrationFnToClass(d,u);async function addSourceContext(t,n){const o={};const i=[];if(n>0&&r([t,"access",t=>t.exception,"optionalAccess",t=>t.values])){for(const n of t.exception.values){if(!r([n,"access",t=>t.stacktrace,"optionalAccess",t=>t.frames])){continue}for(let t=n.stacktrace.frames.length-1;t>=0;t--){const r=n.stacktrace.frames[t];if(r.filename&&!o[r.filename]&&!g.get(r.filename)){i.push(_readSourceFile(r.filename));o[r.filename]=1}}}}if(i.length>0){await Promise.all(i)}if(n>0&&r([t,"access",t=>t.exception,"optionalAccess",t=>t.values])){for(const o of t.exception.values){if(o.stacktrace&&o.stacktrace.frames){await addSourceContextToFrames(o.stacktrace.frames,n)}}}return t}function addSourceContextToFrames(t,n){for(const o of t){if(o.filename&&o.context_line===undefined){const t=g.get(o.filename);if(t){try{c.addContextToFrame(t,o,n)}catch(t){}}}}}async function _readSourceFile(t){const n=g.get(t);if(n===null){return null}if(n!==undefined){return n}let o=null;try{const n=await readTextFileAsync(t);o=n.split("\n")}catch(t){}g.set(t,o);return o}n.ContextLines=I;n.contextLinesIntegration=u},8861:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);function isResponseObject(t){return t&&t.statusCode!==undefined}function isErrorEvent(t){return t&&t.error!==undefined}function sendErrorToSentry(t){r.captureException(t,{mechanism:{type:"hapi",handled:false,data:{function:"hapiErrorPlugin"}}})}const a={name:"SentryHapiErrorPlugin",version:r.SDK_VERSION,register:async function(t){const n=t;n.events.on("request",(t,n)=>{const o=r.getActiveTransaction();if(isErrorEvent(n)){sendErrorToSentry(n.error)}if(o){o.setStatus("internal_error");o.end()}})}};const c={name:"SentryHapiTracingPlugin",version:r.SDK_VERSION,register:async function(t){const n=t;n.ext("onPreHandler",(t,n)=>{const o=r.continueTrace({sentryTrace:t.headers["sentry-trace"]||undefined,baggage:t.headers["baggage"]||undefined},n=>r.startTransaction({...n,op:"hapi.request",name:t.route.path,description:`${t.route.method} ${t.path}`}));r.getCurrentScope().setSpan(o);return n.continue});n.ext("onPreResponse",(t,n)=>{const o=r.getActiveTransaction();if(t.response&&isResponseObject(t.response)&&o){const n=t.response;n.header("sentry-trace",r.spanToTraceHeader(o));const a=i.dynamicSamplingContextToSentryBaggageHeader(r.getDynamicSamplingContextFromSpan(o));if(a){n.header("baggage",a)}}return n.continue});n.ext("onPostHandler",(t,n)=>{const o=r.getActiveTransaction();if(o){if(t.response&&isResponseObject(t.response)){r.setHttpStatus(o,t.response.statusCode)}o.end()}return n.continue})}};const g="Hapi";const _hapiIntegration=(t={})=>{const n=t.server;return{name:g,setupOnce(){if(!n){return}i.fill(n,"start",t=>async function(){await this.register(c);await this.register(a);const n=t.apply(this);return n})}}};const l=r.defineIntegration(_hapiIntegration);const d=r.convertIntegrationFnToClass(g,l);n.Hapi=d;n.hapiErrorPlugin=a;n.hapiIntegration=l;n.hapiTracingPlugin=c},6:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(4624);const c=o(9904);const g=o(2374);const l=o(5800);const _httpIntegration=(t={})=>{const{breadcrumbs:n,tracing:o,shouldCreateSpanForRequest:r}=t;const i={breadcrumbs:n,tracing:o===false?false:a.dropUndefinedKeys({enableIfHasTracingEnabled:o===true?undefined:true,shouldCreateSpanForRequest:r})};return new Http(i)};const d=i.defineIntegration(_httpIntegration);class Http{static __initStatic(){this.id="Http"}__init(){this.name=Http.id}constructor(t={}){Http.prototype.__init.call(this);this._breadcrumbs=typeof t.breadcrumbs==="undefined"?true:t.breadcrumbs;this._tracing=!t.tracing?undefined:t.tracing===true?{}:t.tracing}setupOnce(t,n){const i=r([n,"call",t=>t(),"access",t=>t.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);const l=_shouldCreateSpans(this._tracing,i);if(!this._breadcrumbs&&!l){return}if(i&&i.instrumenter!=="sentry"){c.DEBUG_BUILD&&a.logger.log("HTTP Integration is skipped because of instrumenter configuration.");return}const d=_getShouldCreateSpanForRequest(l,this._tracing,i);const u=r([i,"optionalAccess",t=>t.tracePropagationTargets])||r([this,"access",t=>t._tracing,"optionalAccess",t=>t.tracePropagationTargets]);const I=o(8611);const C=_createWrappedRequestMethodFactory(I,this._breadcrumbs,d,u);a.fill(I,"get",C);a.fill(I,"request",C);if(g.NODE_VERSION.major>8){const t=o(5692);const n=_createWrappedRequestMethodFactory(t,this._breadcrumbs,d,u);a.fill(t,"get",n);a.fill(t,"request",n)}}}Http.__initStatic();function _createWrappedRequestMethodFactory(t,n,o,g){const d=new a.LRUMap(100);const u=new a.LRUMap(100);const shouldCreateSpan=t=>{if(o===undefined){return true}const n=d.get(t);if(n!==undefined){return n}const r=o(t);d.set(t,r);return r};const shouldAttachTraceData=t=>{if(g===undefined){return true}const n=u.get(t);if(n!==undefined){return n}const o=a.stringMatchesSomePattern(t,g);u.set(t,o);return o};function addRequestBreadcrumb(t,n,o,r){if(!i.getCurrentHub().getIntegration(Http)){return}i.addBreadcrumb({category:"http",data:{status_code:r&&r.statusCode,...n},type:"http"},{event:t,request:o,response:r})}return function wrappedRequestMethodFactory(o){return function wrappedMethod(...g){const d=l.normalizeRequestArgs(t,g);const u=d[0];const I=l.extractRawUrl(u);const C=l.extractUrl(u);const p=i.getClient();if(i.isSentryRequestUrl(C,p)){return o.apply(t,d)}const m=i.getCurrentScope();const b=i.getIsolationScope();const h=i.getActiveSpan();const G=getRequestSpanData(C,u);const Z=shouldCreateSpan(I)?r([h,"optionalAccess",t=>t.startChild,"call",t=>t({op:"http.client",origin:"auto.http.node.http",description:`${G["http.method"]} ${G.url}`,data:G})]):undefined;if(p&&shouldAttachTraceData(I)){const{traceId:t,spanId:n,sampled:o,dsc:r}={...b.getPropagationContext(),...m.getPropagationContext()};const c=Z?i.spanToTraceHeader(Z):a.generateSentryTraceHeader(t,n,o);const g=a.dynamicSamplingContextToSentryBaggageHeader(r||(Z?i.getDynamicSamplingContextFromSpan(Z):i.getDynamicSamplingContextFromClient(t,p,m)));addHeadersToRequestOptions(u,C,c,g)}else{c.DEBUG_BUILD&&a.logger.log(`[Tracing] Not adding sentry-trace header to outgoing request (${C}) due to mismatching tracePropagationTargets option.`)}return o.apply(t,d).once("response",function(t){const o=this;if(n){addRequestBreadcrumb("response",G,o,t)}if(Z){if(t.statusCode){i.setHttpStatus(Z,t.statusCode)}Z.updateName(l.cleanSpanDescription(i.spanToJSON(Z).description||"",u,o)||"");Z.end()}}).once("error",function(){const t=this;if(n){addRequestBreadcrumb("error",G,t)}if(Z){i.setHttpStatus(Z,500);Z.updateName(l.cleanSpanDescription(i.spanToJSON(Z).description||"",u,t)||"");Z.end()}})}}}function addHeadersToRequestOptions(t,n,o,r){const i=t.headers||{};if(i["sentry-trace"]){return}c.DEBUG_BUILD&&a.logger.log(`[Tracing] Adding sentry-trace header ${o} to outgoing request to "${n}": `);t.headers={...t.headers,"sentry-trace":o,...r&&r.length>0&&{baggage:normalizeBaggageHeader(t,r)}}}function getRequestSpanData(t,n){const o=n.method||"GET";const r={url:t,"http.method":o};if(n.hash){r["http.fragment"]=n.hash.substring(1)}if(n.search){r["http.query"]=n.search.substring(1)}return r}function normalizeBaggageHeader(t,n){if(!t.headers||!t.headers.baggage){return n}else if(!n){return t.headers.baggage}else if(Array.isArray(t.headers.baggage)){return[...t.headers.baggage,n]}return[t.headers.baggage,n]}function _shouldCreateSpans(t,n){return t===undefined?false:t.enableIfHasTracingEnabled?i.hasTracingEnabled(n):true}function _getShouldCreateSpanForRequest(t,n,o){const i=t?r([n,"optionalAccess",t=>t.shouldCreateSpanForRequest])||r([o,"optionalAccess",t=>t.shouldCreateSpanForRequest]):()=>false;return i}n.Http=Http;n._getShouldCreateSpanForRequest=_getShouldCreateSpanForRequest;n._shouldCreateSpans=_shouldCreateSpans;n.httpIntegration=d},4640:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1949);const i=o(6);const a=o(731);const c=o(6617);const g=o(101);const l=o(164);const d=o(5587);const u=o(9090);const I=o(5560);const C=o(6893);const p=o(2980);const m=o(6572);const b=o(8861);n.Console=r.Console;n.Http=i.Http;n.OnUncaughtException=a.OnUncaughtException;n.OnUnhandledRejection=c.OnUnhandledRejection;n.Modules=g.Modules;n.ContextLines=l.ContextLines;n.Context=d.Context;n.RequestData=u.RequestData;n.LocalVariables=I.LocalVariables;n.Undici=C.Undici;n.Spotlight=p.Spotlight;n.Anr=m.Anr;n.Hapi=b.Hapi},4843:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function createRateLimiter(t,n,o){let r=0;let i=5;let a=0;setInterval(()=>{if(a===0){if(r>t){i*=2;o(i);if(i>86400){i=86400}a=i}}else{a-=1;if(a===0){n()}}r=0},1e3).unref();return()=>{r+=1}}function isAnonymous(t){return t!==undefined&&(t.length===0||t==="?"||t==="<anonymous>")}function functionNamesMatch(t,n){return t===n||isAnonymous(t)&&isAnonymous(n)}function hashFrames(t){if(t===undefined){return}return t.slice(-10).reduce((t,n)=>`${t},${n.function},${n.lineno},${n.colno}`,"")}function hashFromStack(t,n){if(n===undefined){return undefined}return hashFrames(t(n,1))}n.createRateLimiter=createRateLimiter;n.functionNamesMatch=functionNamesMatch;n.hashFrames=hashFrames;n.hashFromStack=hashFromStack;n.isAnonymous=isAnonymous},5560:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4943);const i=r.LocalVariablesSync;const a=r.localVariablesSyncIntegration;n.LocalVariables=i;n.localVariablesIntegration=a},4943:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(4624);const c=o(2374);const g=o(4843);function createCallbackList(t){let n=[];let o=false;function checkedComplete(r){n=[];if(o){return}o=true;t(r)}n.push(checkedComplete);function add(t){n.push(t)}function next(t){const o=n.pop()||checkedComplete;try{o(t)}catch(n){checkedComplete(t)}}return{add:add,next:next}}class AsyncSession{constructor(){const{Session:t}=o(264);this._session=new t}configureAndConnect(t,n){this._session.connect();this._session.on("Debugger.paused",n=>{t(n,()=>{this._session.post("Debugger.resume")})});this._session.post("Debugger.enable");this._session.post("Debugger.setPauseOnExceptions",{state:n?"all":"uncaught"})}setPauseOnExceptions(t){this._session.post("Debugger.setPauseOnExceptions",{state:t?"all":"uncaught"})}getLocalVariables(t,n){this._getProperties(t,t=>{const{add:o,next:i}=createCallbackList(n);for(const n of t){if(r([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.objectId])&&r([n,"optionalAccess",t=>t.value,"access",t=>t.className])==="Array"){const t=n.value.objectId;o(o=>this._unrollArray(t,n.name,o,i))}else if(r([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.objectId])&&r([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.className])==="Object"){const t=n.value.objectId;o(o=>this._unrollObject(t,n.name,o,i))}else if(r([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value])!=null||r([n,"optionalAccess",t=>t.value,"optionalAccess",t=>t.description])!=null){o(t=>this._unrollOther(n,t,i))}}i({})})}_getProperties(t,n){this._session.post("Runtime.getProperties",{objectId:t,ownProperties:true},(t,o)=>{if(t){n([])}else{n(o.result)}})}_unrollArray(t,n,o,i){this._getProperties(t,t=>{o[n]=t.filter(t=>t.name!=="length"&&!isNaN(parseInt(t.name,10))).sort((t,n)=>parseInt(t.name,10)-parseInt(n.name,10)).map(t=>r([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value]));i(o)})}_unrollObject(t,n,o,i){this._getProperties(t,t=>{o[n]=t.map(t=>[t.name,r([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value])]).reduce((t,[n,o])=>{t[n]=o;return t},{});i(o)})}_unrollOther(t,n,o){if(r([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.value])!=null){n[t.name]=t.value.value}else if(r([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.description])!=null&&r([t,"optionalAccess",t=>t.value,"optionalAccess",t=>t.type])!=="function"){n[t.name]=`<${t.value.description}>`}o(n)}}function tryNewAsyncSession(){try{return new AsyncSession}catch(t){return undefined}}const l="LocalVariables";const _localVariablesSyncIntegration=(t={},n=tryNewAsyncSession())=>{const o=new a.LRUMap(20);let d;let u=false;function handlePaused(t,{params:{reason:i,data:a,callFrames:c}},l){if(i!=="exception"&&i!=="promiseRejection"){l();return}r([d,"optionalCall",t=>t()]);const u=g.hashFromStack(t,r([a,"optionalAccess",t=>t.description]));if(u==undefined){l();return}const{add:I,next:C}=createCallbackList(t=>{o.set(u,t);l()});for(let t=0;t<Math.min(c.length,5);t++){const{scopeChain:o,functionName:i,this:a}=c[t];const g=o.find(t=>t.type==="local");const l=a.className==="global"||!a.className?i:`${a.className}.${i}`;if(r([g,"optionalAccess",t=>t.object,"access",t=>t.objectId])===undefined){I(n=>{n[t]={function:l};C(n)})}else{const o=g.object.objectId;I(i=>r([n,"optionalAccess",t=>t.getLocalVariables,"call",n=>n(o,n=>{i[t]={function:l,vars:n};C(i)})]))}}C([])}function addLocalVariablesToException(t){const n=g.hashFrames(r([t,"optionalAccess",t=>t.stacktrace,"optionalAccess",t=>t.frames]));if(n===undefined){return}const i=o.remove(n);if(i===undefined){return}const a=(r([t,"access",t=>t.stacktrace,"optionalAccess",t=>t.frames])||[]).filter(t=>t.function!=="new Promise");for(let t=0;t<a.length;t++){const n=a.length-t-1;if(!a[n]||!i[t]){break}if(i[t].vars===undefined||a[n].in_app===false||!g.functionNamesMatch(a[n].function,i[t].function)){continue}a[n].vars=i[t].vars}}function addLocalVariablesToEvent(t){for(const n of r([t,"optionalAccess",t=>t.exception,"optionalAccess",t=>t.values])||[]){addLocalVariablesToException(n)}return t}return{name:l,setupOnce(){const o=i.getClient();const l=r([o,"optionalAccess",t=>t.getOptions,"call",t=>t()]);if(n&&r([l,"optionalAccess",t=>t.includeLocalVariables])){const o=c.NODE_VERSION.major<18;if(o){a.logger.log("The `LocalVariables` integration is only supported on Node >= v18.");return}const i=t.captureAllExceptions!==false;n.configureAndConnect((t,n)=>handlePaused(l.stackParser,t,n),i);if(i){const o=t.maxExceptionsPerSecond||50;d=g.createRateLimiter(o,()=>{a.logger.log("Local variables rate-limit lifted.");r([n,"optionalAccess",t=>t.setPauseOnExceptions,"call",t=>t(true)])},t=>{a.logger.log(`Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${t} seconds.`);r([n,"optionalAccess",t=>t.setPauseOnExceptions,"call",t=>t(false)])})}u=true}},processEvent(t){if(u){return addLocalVariablesToEvent(t)}return t},_getCachedFramesCount(){return o.size},_getFirstCachedFrame(){return o.values()[0]}}};const d=i.defineIntegration(_localVariablesSyncIntegration);const u=i.convertIntegrationFnToClass(l,d);n.LocalVariablesSync=u;n.createCallbackList=createCallbackList;n.localVariablesSyncIntegration=d},101:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9896);const i=o(6928);const a=o(9090);let c;const g="Modules";function getPaths(){try{return require.cache?Object.keys(require.cache):[]}catch(t){return[]}}function collectModules(){const t=require.main&&require.main.paths||[];const n=getPaths();const o={};const a={};n.forEach(n=>{let c=n;const updir=()=>{const n=c;c=i.dirname(n);if(!c||n===c||a[n]){return undefined}if(t.indexOf(c)<0){return updir()}const g=i.join(n,"package.json");a[n]=true;if(!r.existsSync(g)){return updir()}try{const t=JSON.parse(r.readFileSync(g,"utf8"));o[t.name]=t.version}catch(t){}};updir()});return o}function _getModules(){if(!c){c=collectModules()}return c}const _modulesIntegration=()=>({name:g,setupOnce(){},processEvent(t){t.modules={...t.modules,..._getModules()};return t}});const l=a.defineIntegration(_modulesIntegration);const d=a.convertIntegrationFnToClass(g,l);n.Modules=d;n.modulesIntegration=l},731:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(9904);const c=o(1441);const g="OnUncaughtException";const _onUncaughtExceptionIntegration=(t={})=>{const n={exitEvenIfOtherHandlersAreRegistered:true,...t};return{name:g,setupOnce(){},setup(t){global.process.on("uncaughtException",makeErrorHandler(t,n))}}};const l=r.defineIntegration(_onUncaughtExceptionIntegration);const d=r.convertIntegrationFnToClass(g,l);function makeErrorHandler(t,n){const o=2e3;let g=false;let l=false;let d=false;let u;const I=t.getOptions();return Object.assign(C=>{let p=c.logAndExitProcess;if(n.onFatalError){p=n.onFatalError}else if(I.onFatalError){p=I.onFatalError}const m=global.process.listeners("uncaughtException").reduce((t,n)=>{if(n.name==="domainUncaughtExceptionClear"||n.tag&&n.tag==="sentry_tracingErrorCallback"||n._errorHandler){return t}else{return t+1}},0);const b=m===0;const h=n.exitEvenIfOtherHandlersAreRegistered||b;if(!g){u=C;g=true;if(r.getClient()===t){r.captureException(C,{originalException:C,captureContext:{level:"fatal"},mechanism:{handled:false,type:"onuncaughtexception"}})}if(!d&&h){d=true;p(C)}}else{if(h){if(d){a.DEBUG_BUILD&&i.logger.warn("uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown");c.logAndExitProcess(C)}else if(!l){l=true;setTimeout(()=>{if(!d){d=true;p(u,C)}},o)}}}},{_errorHandler:true})}n.OnUncaughtException=d;n.makeErrorHandler=makeErrorHandler;n.onUncaughtExceptionIntegration=l},6617:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(1441);const c="OnUnhandledRejection";const _onUnhandledRejectionIntegration=(t={})=>{const n=t.mode||"warn";return{name:c,setupOnce(){},setup(t){global.process.on("unhandledRejection",makeUnhandledPromiseHandler(t,{mode:n}))}}};const g=r.defineIntegration(_onUnhandledRejectionIntegration);const l=r.convertIntegrationFnToClass(c,g);function makeUnhandledPromiseHandler(t,n){return function sendUnhandledPromise(o,i){if(r.getClient()!==t){return}r.captureException(o,{originalException:i,captureContext:{extra:{unhandledPromiseRejection:true}},mechanism:{handled:false,type:"onunhandledrejection"}});handleRejection(o,n)}}function handleRejection(t,n){const o="This error originated either by "+"throwing inside of an async function without a catch block, "+"or by rejecting a promise which was not handled with .catch()."+" The promise rejected with the reason:";if(n.mode==="warn"){i.consoleSandbox(()=>{console.warn(o);console.error(t&&t.stack?t.stack:t)})}else if(n.mode==="strict"){i.consoleSandbox(()=>{console.warn(o)});a.logAndExitProcess(t)}}n.OnUnhandledRejection=l;n.makeUnhandledPromiseHandler=makeUnhandledPromiseHandler;n.onUnhandledRejectionIntegration=g},2980:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(8611);const i=o(7016);const a=o(9090);const c=o(4624);const g="Spotlight";const _spotlightIntegration=(t={})=>{const n={sidecarUrl:t.sidecarUrl||"http://localhost:8969/stream"};return{name:g,setupOnce(){},setup(t){if(typeof process==="object"&&process.env&&process.env.NODE_ENV!=="development"){c.logger.warn("[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?")}connectToSpotlight(t,n)}}};const l=a.defineIntegration(_spotlightIntegration);const d=a.convertIntegrationFnToClass(g,l);function connectToSpotlight(t,n){const o=parseSidecarUrl(n.sidecarUrl);if(!o){return}let r=0;if(typeof t.on!=="function"){c.logger.warn("[Spotlight] Cannot connect to spotlight due to missing method on SDK client (`client.on`)");return}t.on("beforeEnvelope",t=>{if(r>3){c.logger.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests");return}const n=c.serializeEnvelope(t);const i=getNativeHttpRequest();const a=i({method:"POST",path:o.pathname,hostname:o.hostname,port:o.port,headers:{"Content-Type":"application/x-sentry-envelope"}},t=>{t.on("data",()=>{});t.on("end",()=>{});t.setEncoding("utf8")});a.on("error",()=>{r++;c.logger.warn("[Spotlight] Failed to send envelope to Spotlight Sidecar")});a.write(n);a.end()})}function parseSidecarUrl(t){try{return new i.URL(`${t}`)}catch(n){c.logger.warn(`[Spotlight] Invalid sidecar URL: ${t}`);return undefined}}function getNativeHttpRequest(){const{request:t}=r;if(isWrapped(t)){return t.__sentry_original__}return t}function isWrapped(t){return"__sentry_original__"in t}n.Spotlight=d;n.getNativeHttpRequest=getNativeHttpRequest;n.spotlightIntegration=l},6893:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(4624);const c=o(2374);n.ChannelName=void 0;(function(t){const n="undici:request:create";t["RequestCreate"]=n;const o="undici:request:headers";t["RequestEnd"]=o;const r="undici:request:error";t["RequestError"]=r})(n.ChannelName||(n.ChannelName={}));const _nativeNodeFetchintegration=t=>new Undici(t);const g=i.defineIntegration(_nativeNodeFetchintegration);class Undici{static __initStatic(){this.id="Undici"}__init(){this.name=Undici.id}__init2(){this._createSpanUrlMap=new a.LRUMap(100)}__init3(){this._headersUrlMap=new a.LRUMap(100)}constructor(t={}){Undici.prototype.__init.call(this);Undici.prototype.__init2.call(this);Undici.prototype.__init3.call(this);Undici.prototype.__init4.call(this);Undici.prototype.__init5.call(this);Undici.prototype.__init6.call(this);this._options={breadcrumbs:t.breadcrumbs===undefined?true:t.breadcrumbs,tracing:t.tracing,shouldCreateSpanForRequest:t.shouldCreateSpanForRequest}}setupOnce(t){if(c.NODE_VERSION.major<16){return}let r;try{r=o(1637)}catch(t){}if(!r||!r.subscribe){return}r.subscribe(n.ChannelName.RequestCreate,this._onRequestCreate);r.subscribe(n.ChannelName.RequestEnd,this._onRequestEnd);r.subscribe(n.ChannelName.RequestError,this._onRequestError)}_shouldCreateSpan(t){if(this._options.tracing===false||this._options.tracing===undefined&&!i.hasTracingEnabled()){return false}if(this._options.shouldCreateSpanForRequest===undefined){return true}const n=this._createSpanUrlMap.get(t);if(n!==undefined){return n}const o=this._options.shouldCreateSpanForRequest(t);this._createSpanUrlMap.set(t,o);return o}__init4(){this._onRequestCreate=t=>{if(!r([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getIntegration,"call",t=>t(Undici)])){return}const{request:n}=t;const o=n.origin?n.origin.toString()+n.path:n.path;const c=i.getClient();if(!c){return}if(i.isSentryRequestUrl(o,c)||n.__sentry_span__!==undefined){return}const g=c.getOptions();const l=i.getCurrentScope();const d=i.getIsolationScope();const u=i.getActiveSpan();const I=this._shouldCreateSpan(o)?createRequestSpan(u,n,o):undefined;if(I){n.__sentry_span__=I}const shouldAttachTraceData=t=>{if(g.tracePropagationTargets===undefined){return true}const n=this._headersUrlMap.get(t);if(n!==undefined){return n}const o=a.stringMatchesSomePattern(t,g.tracePropagationTargets);this._headersUrlMap.set(t,o);return o};if(shouldAttachTraceData(o)){const{traceId:t,spanId:o,sampled:r,dsc:g}={...d.getPropagationContext(),...l.getPropagationContext()};const u=I?i.spanToTraceHeader(I):a.generateSentryTraceHeader(t,o,r);const C=a.dynamicSamplingContextToSentryBaggageHeader(g||(I?i.getDynamicSamplingContextFromSpan(I):i.getDynamicSamplingContextFromClient(t,c,l)));setHeadersOnRequest(n,u,C)}}}__init5(){this._onRequestEnd=t=>{if(!r([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getIntegration,"call",t=>t(Undici)])){return}const{request:n,response:o}=t;const a=n.origin?n.origin.toString()+n.path:n.path;if(i.isSentryRequestUrl(a,i.getClient())){return}const c=n.__sentry_span__;if(c){i.setHttpStatus(c,o.statusCode);c.end()}if(this._options.breadcrumbs){i.addBreadcrumb({category:"http",data:{method:n.method,status_code:o.statusCode,url:a},type:"http"},{event:"response",request:n,response:o})}}}__init6(){this._onRequestError=t=>{if(!r([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getIntegration,"call",t=>t(Undici)])){return}const{request:n}=t;const o=n.origin?n.origin.toString()+n.path:n.path;if(i.isSentryRequestUrl(o,i.getClient())){return}const a=n.__sentry_span__;if(a){a.setStatus("internal_error");a.end()}if(this._options.breadcrumbs){i.addBreadcrumb({category:"http",data:{method:n.method,url:o},level:"error",type:"http"},{event:"error",request:n})}}}}Undici.__initStatic();function setHeadersOnRequest(t,n,o){let r;if(Array.isArray(t.headers)){r=t.headers.some(t=>t==="sentry-trace")}else{const n=t.headers.split("\r\n");r=n.some(t=>t.startsWith("sentry-trace:"))}if(r){return}t.addHeader("sentry-trace",n);if(o){t.addHeader("baggage",o)}}function createRequestSpan(t,n,o){const i=a.parseUrl(o);const c=n.method||"GET";const g={"http.method":c};if(i.search){g["http.query"]=i.search}if(i.hash){g["http.fragment"]=i.hash}return r([t,"optionalAccess",t=>t.startChild,"call",t=>t({op:"http.client",origin:"auto.http.node.undici",description:`${c} ${a.getSanitizedUrlString(i)}`,data:g})])}n.Undici=Undici;n.nativeNodeFetchintegration=g},1441:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(9904);const c=2e3;function logAndExitProcess(t){i.consoleSandbox(()=>{console.error(t)});const n=r.getClient();if(n===undefined){a.DEBUG_BUILD&&i.logger.warn("No NodeClient was defined, we are exiting the process now.");global.process.exit(1)}const o=n.getOptions();const g=o&&o.shutdownTimeout&&o.shutdownTimeout>0&&o.shutdownTimeout||c;n.close(g).then(t=>{if(!t){a.DEBUG_BUILD&&i.logger.warn("We reached the timeout for emptying the request buffer, still exiting now!")}global.process.exit(1)},t=>{a.DEBUG_BUILD&&i.logger.error(t)})}n.logAndExitProcess=logAndExitProcess},5800:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(7016);const a=o(2374);function extractRawUrl(t){const{protocol:n,hostname:o,port:r}=parseRequestOptions(t);const i=t.path?t.path:"/";return`${n}//${o}${r}${i}`}function extractUrl(t){const{protocol:n,hostname:o,port:r}=parseRequestOptions(t);const i=t.pathname||"/";const a=t.auth?redactAuthority(t.auth):"";return`${n}//${a}${o}${r}${i}`}function redactAuthority(t){const[n,o]=t.split(":");return`${n?"[Filtered]":""}:${o?"[Filtered]":""}@`}function cleanSpanDescription(t,n,o){if(!t){return t}let[i,a]=t.split(" ");if(n.host&&!n.protocol){n.protocol=r([o,"optionalAccess",t=>t.agent,"optionalAccess",t=>t.protocol]);a=extractUrl(n)}if(r([a,"optionalAccess",t=>t.startsWith,"call",t=>t("///")])){a=a.slice(2)}return`${i} ${a}`}function urlToOptions(t){const n={protocol:t.protocol,hostname:typeof t.hostname==="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,hash:t.hash,search:t.search,pathname:t.pathname,path:`${t.pathname||""}${t.search||""}`,href:t.href};if(t.port!==""){n.port=Number(t.port)}if(t.username||t.password){n.auth=`${t.username}:${t.password}`}return n}function normalizeRequestArgs(t,n){let o,c;if(typeof n[n.length-1]==="function"){o=n.pop()}if(typeof n[0]==="string"){c=urlToOptions(new i.URL(n[0]))}else if(n[0]instanceof i.URL){c=urlToOptions(n[0])}else{c=n[0];try{const t=new i.URL(c.path||"",`${c.protocol||"http:"}//${c.hostname}`);c={pathname:t.pathname,search:t.search,hash:t.hash,...c}}catch(t){}}if(n.length===2){c={...c,...n[1]}}if(c.protocol===undefined){if(a.NODE_VERSION.major>8){c.protocol=r([r([t,"optionalAccess",t=>t.globalAgent]),"optionalAccess",t=>t.protocol])||r([c.agent,"optionalAccess",t=>t.protocol])||r([c._defaultAgent,"optionalAccess",t=>t.protocol])}else{c.protocol=r([c.agent,"optionalAccess",t=>t.protocol])||r([c._defaultAgent,"optionalAccess",t=>t.protocol])||r([r([t,"optionalAccess",t=>t.globalAgent]),"optionalAccess",t=>t.protocol])}}if(o){return[c,o]}else{return[c]}}function parseRequestOptions(t){const n=t.protocol||"";const o=t.hostname||t.host||"";const r=!t.port||t.port===80||t.port===443||/^(.*):(\d+)$/.test(o)?"":`:${t.port}`;return{protocol:n,hostname:o,port:r}}n.cleanSpanDescription=cleanSpanDescription;n.extractRawUrl=extractRawUrl;n.extractUrl=extractUrl;n.normalizeRequestArgs=normalizeRequestArgs;n.urlToOptions=urlToOptions},7900:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(6928);const i=o(4624);function normalizeWindowsPath(t){return t.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function createGetModuleFromFilename(t=(process.argv[1]?i.dirname(process.argv[1]):process.cwd()),n=r.sep==="\\"){const o=n?normalizeWindowsPath(t):t;return t=>{if(!t){return}const i=n?normalizeWindowsPath(t):t;let{dir:a,base:c,ext:g}=r.posix.parse(i);if(g===".js"||g===".mjs"||g===".cjs"){c=c.slice(0,g.length*-1)}if(!a){a="."}const l=a.lastIndexOf("/node_modules");if(l>-1){return`${a.slice(l+14).replace(/\//g,".")}:${c}`}if(a.startsWith(o)){let t=a.slice(o.length+1).replace(/\//g,".");if(t){t+=":"}t+=c;return t}return c}}n.createGetModuleFromFilename=createGetModuleFromFilename},2374:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=r.parseSemver(process.versions.node);n.NODE_VERSION=i},6232:(t,n,o)=>{var{_nullishCoalesce:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(8611);o(5692);const a=Symbol("AgentBaseInternalState");class Agent extends i.Agent{constructor(t){super(t);this[a]={}}isSecureEndpoint(t){if(t){if(typeof t.secureEndpoint==="boolean"){return t.secureEndpoint}if(typeof t.protocol==="string"){return t.protocol==="https:"}}const{stack:n}=new Error;if(typeof n!=="string")return false;return n.split("\n").some(t=>t.indexOf("(https.js:")!==-1||t.indexOf("node:https:")!==-1)}createSocket(t,n,o){const r={...n,secureEndpoint:this.isSecureEndpoint(n)};Promise.resolve().then(()=>this.connect(t,r)).then(c=>{if(c instanceof i.Agent){return c.addRequest(t,r)}this[a].currentSocket=c;super.createSocket(t,n,o)},o)}createConnection(){const t=this[a].currentSocket;this[a].currentSocket=undefined;if(!t){throw new Error("No socket was returned in the `connect()` function")}return t}get defaultPort(){return r(this[a].defaultPort,()=>this.protocol==="https:"?443:80)}set defaultPort(t){if(this[a]){this[a].defaultPort=t}}get protocol(){return r(this[a].protocol,()=>this.isSecureEndpoint()?"https:":"http:")}set protocol(t){if(this[a]){this[a].protocol=t}}}n.Agent=Agent},5949:(t,n,o)=>{var{_nullishCoalesce:r,_optionalChain:i}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const a=o(9278);const c=o(4756);const g=o(7016);const l=o(4624);const d=o(6232);const u=o(8431);function debug(...t){l.logger.log("[https-proxy-agent]",...t)}class HttpsProxyAgent extends d.Agent{static __initStatic(){this.protocols=["http","https"]}constructor(t,n){super(n);this.options={};this.proxy=typeof t==="string"?new g.URL(t):t;this.proxyHeaders=r(i([n,"optionalAccess",t=>t.headers]),()=>({}));debug("Creating new HttpsProxyAgent instance: %o",this.proxy.href);const o=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,"");const a=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...n?omit(n,"headers"):null,host:o,port:a}}async connect(t,n){const{proxy:o}=this;if(!n.host){throw new TypeError('No "host" provided')}let r;if(o.protocol==="https:"){debug("Creating `tls.Socket`: %o",this.connectOpts);const t=this.connectOpts.servername||this.connectOpts.host;r=c.connect({...this.connectOpts,servername:t&&a.isIP(t)?undefined:t})}else{debug("Creating `net.Socket`: %o",this.connectOpts);r=a.connect(this.connectOpts)}const i=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders};const g=a.isIPv6(n.host)?`[${n.host}]`:n.host;let l=`CONNECT ${g}:${n.port} HTTP/1.1\r\n`;if(o.username||o.password){const t=`${decodeURIComponent(o.username)}:${decodeURIComponent(o.password)}`;i["Proxy-Authorization"]=`Basic ${Buffer.from(t).toString("base64")}`}i.Host=`${g}:${n.port}`;if(!i["Proxy-Connection"]){i["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close"}for(const t of Object.keys(i)){l+=`${t}: ${i[t]}\r\n`}const d=u.parseProxyResponse(r);r.write(`${l}\r\n`);const{connect:I,buffered:C}=await d;t.emit("proxyConnect",I);this.emit("proxyConnect",I,t);if(I.statusCode===200){t.once("socket",resume);if(n.secureEndpoint){debug("Upgrading socket connection to TLS");const t=n.servername||n.host;return c.connect({...omit(n,"host","path","port"),socket:r,servername:a.isIP(t)?undefined:t})}return r}r.destroy();const p=new a.Socket({writable:false});p.readable=true;t.once("socket",t=>{debug("Replaying proxy buffer for failed request");t.push(C);t.push(null)});return p}}HttpsProxyAgent.__initStatic();function resume(t){t.resume()}function omit(t,...n){const o={};let r;for(r in t){if(!n.includes(r)){o[r]=t[r]}}return o}n.HttpsProxyAgent=HttpsProxyAgent},8431:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function debug(...t){r.logger.log("[https-proxy-agent:parse-proxy-response]",...t)}function parseProxyResponse(t){return new Promise((n,o)=>{let r=0;const i=[];function read(){const n=t.read();if(n)ondata(n);else t.once("readable",read)}function cleanup(){t.removeListener("end",onend);t.removeListener("error",onerror);t.removeListener("readable",read)}function onend(){cleanup();debug("onend");o(new Error("Proxy connection ended before receiving CONNECT response"))}function onerror(t){cleanup();debug("onerror %o",t);o(t)}function ondata(a){i.push(a);r+=a.length;const c=Buffer.concat(i,r);const g=c.indexOf("\r\n\r\n");if(g===-1){debug("have not received end of HTTP headers yet...");read();return}const l=c.slice(0,g).toString("ascii").split("\r\n");const d=l.shift();if(!d){t.destroy();return o(new Error("No header received from proxy CONNECT response"))}const u=d.split(" ");const I=+u[1];const C=u.slice(2).join(" ");const p={};for(const n of l){if(!n)continue;const r=n.indexOf(":");if(r===-1){t.destroy();return o(new Error(`Invalid header from proxy CONNECT response: "${n}"`))}const i=n.slice(0,r).toLowerCase();const a=n.slice(r+1).trimStart();const c=p[i];if(typeof c==="string"){p[i]=[c,a]}else if(Array.isArray(c)){c.push(a)}else{p[i]=a}}debug("got proxy server response: %o %o",d,p);cleanup();n({connect:{statusCode:I,statusText:C,headers:p},buffered:c})}t.on("error",onerror);t.on("end",onend);read()})}n.parseProxyResponse=parseProxyResponse},2550:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);function extractRequestData(t,n){return r.extractRequestData(t,{include:n})}function parseRequest(t,n,o={}){return r.addRequestDataToEvent(t,n,{include:o})}n.extractRequestData=extractRequestData;n.parseRequest=parseRequest},1062:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(4624);const c=o(7813);const g=o(8235);const l=o(1949);const d=o(5587);const u=o(164);const I=o(6);const C=o(5560);const p=o(101);const m=o(731);const b=o(6617);const h=o(2980);const G=o(6893);const Z=o(7900);const B=o(7397);const A=[i.inboundFiltersIntegration(),i.functionToStringIntegration(),i.linkedErrorsIntegration(),i.requestDataIntegration(),l.consoleIntegration(),I.httpIntegration(),G.nativeNodeFetchintegration(),m.onUncaughtExceptionIntegration(),b.onUnhandledRejectionIntegration(),u.contextLinesIntegration(),C.localVariablesIntegration(),d.nodeContextIntegration(),p.modulesIntegration()];function getDefaultIntegrations(t){const n=i.getMainCarrier();const o=r([n,"access",t=>t.__SENTRY__,"optionalAccess",t=>t.integrations])||[];return[...A,...o]}function init(t={}){c.setNodeAsyncContextStrategy();if(t.defaultIntegrations===undefined){t.defaultIntegrations=getDefaultIntegrations()}if(t.dsn===undefined&&process.env.SENTRY_DSN){t.dsn=process.env.SENTRY_DSN}const n=process.env.SENTRY_TRACES_SAMPLE_RATE;if(t.tracesSampleRate===undefined&&n){const o=parseFloat(n);if(isFinite(o)){t.tracesSampleRate=o}}if(t.release===undefined){const n=getSentryRelease();if(n!==undefined){t.release=n}else{t.autoSessionTracking=false}}if(t.environment===undefined&&process.env.SENTRY_ENVIRONMENT){t.environment=process.env.SENTRY_ENVIRONMENT}if(t.autoSessionTracking===undefined&&t.dsn!==undefined){t.autoSessionTracking=true}if(t.instrumenter===undefined){t.instrumenter="sentry"}const o={...t,stackParser:a.stackParserFromStackParserOptions(t.stackParser||y),integrations:i.getIntegrationsToSetup(t),transport:t.transport||B.makeNodeTransport};i.initAndBind(t.clientClass||g.NodeClient,o);if(t.autoSessionTracking){startSessionTracking()}updateScopeFromEnvVariables();if(t.spotlight){const n=i.getClient();if(n&&n.addIntegration){const o=n.getOptions().integrations;for(const t of o){n.addIntegration(t)}n.addIntegration(h.spotlightIntegration({sidecarUrl:typeof t.spotlight==="string"?t.spotlight:undefined}))}}}function isAutoSessionTrackingEnabled(t){if(t===undefined){return false}const n=t&&t.getOptions();if(n&&n.autoSessionTracking!==undefined){return n.autoSessionTracking}return false}function getSentryRelease(t){if(process.env.SENTRY_RELEASE){return process.env.SENTRY_RELEASE}if(a.GLOBAL_OBJ.SENTRY_RELEASE&&a.GLOBAL_OBJ.SENTRY_RELEASE.id){return a.GLOBAL_OBJ.SENTRY_RELEASE.id}return process.env.GITHUB_SHA||process.env.COMMIT_REF||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA||process.env.CF_PAGES_COMMIT_SHA||t}const y=a.createStackParser(a.nodeStackLineParser(Z.createGetModuleFromFilename()));function startSessionTracking(){i.startSession();process.on("beforeExit",()=>{const t=i.getIsolationScope().getSession();const n=["exited","crashed"];if(t&&!n.includes(t.status)){i.endSession()}})}function updateScopeFromEnvVariables(){const t=(process.env.SENTRY_USE_ENVIRONMENT||"").toLowerCase();if(!["false","n","no","off","0"].includes(t)){const t=process.env.SENTRY_TRACE;const n=process.env.SENTRY_BAGGAGE;const o=a.propagationContextFromHeaders(t,n);i.getCurrentScope().setPropagationContext(o)}}n.defaultIntegrations=A;n.defaultStackParser=y;n.getDefaultIntegrations=getDefaultIntegrations;n.getSentryRelease=getSentryRelease;n.init=init;n.isAutoSessionTrackingEnabled=isAutoSessionTrackingEnabled},9903:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9062);const i=o(4624);function autoDiscoverNodePerformanceMonitoringIntegrations(){const t=r.lazyLoadedNodePerformanceMonitoringIntegrations.map(t=>{try{return t()}catch(t){return undefined}}).filter(t=>!!t);if(t.length===0){i.logger.warn("Performance monitoring integrations could not be automatically loaded.")}return t.filter(t=>!!t.loadDependency())}n.autoDiscoverNodePerformanceMonitoringIntegrations=autoDiscoverNodePerformanceMonitoringIntegrations},7892:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9062);n.Apollo=r.Apollo;n.Express=r.Express;n.GraphQL=r.GraphQL;n.Mongo=r.Mongo;n.Mysql=r.Mysql;n.Postgres=r.Postgres;n.Prisma=r.Prisma},7397:(t,n,o)=>{var{_nullishCoalesce:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(8611);const a=o(5692);const c=o(2203);const g=o(7016);const l=o(3106);const d=o(9090);const u=o(4624);const I=o(5949);const C=1024*32;function streamFromBody(t){return new c.Readable({read(){this.push(t);this.push(null)}})}function makeNodeTransport(t){let n;try{n=new g.URL(t.url)}catch(n){u.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")});return d.createTransport(t,()=>Promise.resolve({}))}const o=n.protocol==="https:";const c=applyNoProxyOption(n,t.proxy||(o?process.env.https_proxy:undefined)||process.env.http_proxy);const l=o?a:i;const C=t.keepAlive===undefined?false:t.keepAlive;const p=c?new I.HttpsProxyAgent(c):new l.Agent({keepAlive:C,maxSockets:30,timeout:2e3});const m=createRequestExecutor(t,r(t.httpModule,()=>l),p);return d.createTransport(t,m)}function applyNoProxyOption(t,n){const{no_proxy:o}=process.env;const r=o&&o.split(",").some(n=>t.host.endsWith(n)||t.hostname.endsWith(n));if(r){return undefined}else{return n}}function createRequestExecutor(t,n,o){const{hostname:i,pathname:a,port:c,protocol:d,search:u}=new g.URL(t.url);return function makeRequest(g){return new Promise((I,p)=>{let m=streamFromBody(g.body);const b={...t.headers};if(g.body.length>C){b["content-encoding"]="gzip";m=m.pipe(l.createGzip())}const h=n.request({method:"POST",agent:o,headers:b,hostname:i,path:`${a}${u}`,port:c,protocol:d,ca:t.caCerts},t=>{t.on("data",()=>{});t.on("end",()=>{});t.setEncoding("utf8");const n=r(t.headers["retry-after"],()=>null);const o=r(t.headers["x-sentry-rate-limits"],()=>null);I({statusCode:t.statusCode,headers:{"retry-after":n,"x-sentry-rate-limits":Array.isArray(o)?o[0]:o}})});h.on("error",p);m.pipe(h)})}}n.makeNodeTransport=makeNodeTransport},2995:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(4624);function trpcMiddleware(t={}){return function({path:n,type:o,next:c,rawInput:g}){const l=r([i.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);const d=i.getCurrentScope().getTransaction();if(d){d.updateName(`trpc/${n}`);d.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,"route");d.op="rpc.server";const c={procedure_type:o};if(t.attachRpcInput!==undefined?t.attachRpcInput:r([l,"optionalAccess",t=>t.sendDefaultPii])){c.input=a.normalize(g)}d.setContext("trpc",c)}function captureIfError(t){if(!t.ok){i.captureException(t.error,{mechanism:{handled:false,data:{function:"trpcMiddleware"}}})}}let u;try{u=c()}catch(t){i.captureException(t,{mechanism:{handled:false,data:{function:"trpcMiddleware"}}});throw t}if(a.isThenable(u)){Promise.resolve(u).then(t=>{captureIfError(t)},t=>{i.captureException(t,{mechanism:{handled:false,data:{function:"trpcMiddleware"}}})})}else{captureIfError(u)}return u}}n.trpcMiddleware=trpcMiddleware},9715:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9896);const i=o(6928);function deepReadDirSync(t){const n=i.resolve(t);if(!r.existsSync(n)){throw new Error(`Cannot read contents of ${n}. Directory does not exist.`)}if(!r.statSync(n).isDirectory()){throw new Error(`Cannot read contents of ${n}, because it is not a directory.`)}const deepReadCurrentDir=t=>r.readdirSync(t).reduce((n,o)=>{const a=i.join(t,o);if(r.statSync(a).isDirectory()){return n.concat(deepReadCurrentDir(a))}n.push(a);return n},[]);return deepReadCurrentDir(n).map(t=>i.relative(n,t))}n.deepReadDirSync=deepReadDirSync},9891:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1846);const i=o(1071);function applyAggregateErrorsToEvent(t,n,o=250,i,a,c,g){if(!c.exception||!c.exception.values||!g||!r.isInstanceOf(g.originalException,Error)){return}const l=c.exception.values.length>0?c.exception.values[c.exception.values.length-1]:undefined;if(l){c.exception.values=truncateAggregateExceptions(aggregateExceptionsFromError(t,n,a,g.originalException,i,c.exception.values,l,0),o)}}function aggregateExceptionsFromError(t,n,o,i,a,c,g,l){if(c.length>=o+1){return c}let d=[...c];if(r.isInstanceOf(i[a],Error)){applyExceptionGroupFieldsForParentException(g,l);const r=t(n,i[a]);const c=d.length;applyExceptionGroupFieldsForChildException(r,a,c,l);d=aggregateExceptionsFromError(t,n,o,i[a],a,[r,...d],r,c)}if(Array.isArray(i.errors)){i.errors.forEach((i,c)=>{if(r.isInstanceOf(i,Error)){applyExceptionGroupFieldsForParentException(g,l);const r=t(n,i);const u=d.length;applyExceptionGroupFieldsForChildException(r,`errors[${c}]`,u,l);d=aggregateExceptionsFromError(t,n,o,i,a,[r,...d],r,u)}})}return d}function applyExceptionGroupFieldsForParentException(t,n){t.mechanism=t.mechanism||{type:"generic",handled:true};t.mechanism={...t.mechanism,...t.type==="AggregateError"&&{is_exception_group:true},exception_id:n}}function applyExceptionGroupFieldsForChildException(t,n,o,r){t.mechanism=t.mechanism||{type:"generic",handled:true};t.mechanism={...t.mechanism,type:"chained",source:n,exception_id:o,parent_id:r}}function truncateAggregateExceptions(t,n){return t.map(t=>{if(t.value){t.value=i.truncate(t.value,n)}return t})}n.applyAggregateErrorsToEvent=applyAggregateErrorsToEvent},899:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(6309);const i=o(4171);function watchdogTimer(t,n,o,r){const i=t();let a=false;let c=true;setInterval(()=>{const t=i.getTimeMs();if(a===false&&t>n+o){a=true;if(c){r()}}if(t<n+o){a=false}},20);return{poll:()=>{i.reset()},enabled:t=>{c=t}}}function callFrameToStackFrame(t,n,o){const a=n?n.replace(/^file:\/\//,""):undefined;const c=t.location.columnNumber?t.location.columnNumber+1:undefined;const g=t.location.lineNumber?t.location.lineNumber+1:undefined;return r.dropUndefinedKeys({filename:a,module:o(a),function:t.functionName||"?",colno:c,lineno:g,in_app:a?i.filenameIsInApp(a):undefined})}n.callFrameToStackFrame=callFrameToStackFrame;n.watchdogTimer=watchdogTimer},4486:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4462);const i=o(1846);const a=o(9550);const c="baggage";const g="sentry-";const l=/^sentry-/;const d=8192;function baggageHeaderToDynamicSamplingContext(t){if(!i.isString(t)&&!Array.isArray(t)){return undefined}let n={};if(Array.isArray(t)){n=t.reduce((t,n)=>{const o=baggageHeaderToObject(n);for(const n of Object.keys(o)){t[n]=o[n]}return t},{})}else{if(!t){return undefined}n=baggageHeaderToObject(t)}const o=Object.entries(n).reduce((t,[n,o])=>{if(n.match(l)){const r=n.slice(g.length);t[r]=o}return t},{});if(Object.keys(o).length>0){return o}else{return undefined}}function dynamicSamplingContextToSentryBaggageHeader(t){if(!t){return undefined}const n=Object.entries(t).reduce((t,[n,o])=>{if(o){t[`${g}${n}`]=o}return t},{});return objectToBaggageHeader(n)}function baggageHeaderToObject(t){return t.split(",").map(t=>t.split("=").map(t=>decodeURIComponent(t.trim()))).reduce((t,[n,o])=>{t[n]=o;return t},{})}function objectToBaggageHeader(t){if(Object.keys(t).length===0){return undefined}return Object.entries(t).reduce((t,[n,o],i)=>{const c=`${encodeURIComponent(n)}=${encodeURIComponent(o)}`;const g=i===0?c:`${t},${c}`;if(g.length>d){r.DEBUG_BUILD&&a.logger.warn(`Not adding key: ${n} with val: ${o} to baggage header due to exceeding baggage size limits.`);return t}else{return g}},"")}n.BAGGAGE_HEADER_NAME=c;n.MAX_BAGGAGE_STRING_LENGTH=d;n.SENTRY_BAGGAGE_KEY_PREFIX=g;n.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=l;n.baggageHeaderToDynamicSamplingContext=baggageHeaderToDynamicSamplingContext;n.dynamicSamplingContextToSentryBaggageHeader=dynamicSamplingContextToSentryBaggageHeader},4812:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1846);const i=o(5395);const a=i.getGlobalObject();const c=80;function htmlTreeAsString(t,n={}){if(!t){return"<unknown>"}try{let o=t;const r=5;const i=[];let a=0;let g=0;const l=" > ";const d=l.length;let u;const I=Array.isArray(n)?n:n.keyAttrs;const C=!Array.isArray(n)&&n.maxStringLength||c;while(o&&a++<r){u=_htmlElementAsString(o,I);if(u==="html"||a>1&&g+i.length*d+u.length>=C){break}i.push(u);g+=u.length;o=o.parentNode}return i.reverse().join(l)}catch(t){return"<unknown>"}}function _htmlElementAsString(t,n){const o=t;const i=[];let c;let g;let l;let d;let u;if(!o||!o.tagName){return""}if(a.HTMLElement){if(o instanceof HTMLElement&&o.dataset&&o.dataset["sentryComponent"]){return o.dataset["sentryComponent"]}}i.push(o.tagName.toLowerCase());const I=n&&n.length?n.filter(t=>o.getAttribute(t)).map(t=>[t,o.getAttribute(t)]):null;if(I&&I.length){I.forEach(t=>{i.push(`[${t[0]}="${t[1]}"]`)})}else{if(o.id){i.push(`#${o.id}`)}c=o.className;if(c&&r.isString(c)){g=c.split(/\s+/);for(u=0;u<g.length;u++){i.push(`.${g[u]}`)}}}const C=["aria-label","type","name","title","alt"];for(u=0;u<C.length;u++){l=C[u];d=o.getAttribute(l);if(d){i.push(`[${l}="${d}"]`)}}return i.join("")}function getLocationHref(){try{return a.document.location.href}catch(t){return""}}function getDomElement(t){if(a.document&&a.document.querySelector){return a.document.querySelector(t)}return null}function getComponentName(t){if(!a.HTMLElement){return null}let n=t;const o=5;for(let t=0;t<o;t++){if(!n){return null}if(n instanceof HTMLElement&&n.dataset["sentryComponent"]){return n.dataset["sentryComponent"]}n=n.parentNode}return null}n.getComponentName=getComponentName;n.getDomElement=getDomElement;n.getLocationHref=getLocationHref;n.htmlTreeAsString=htmlTreeAsString},8140:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(122);async function _asyncNullishCoalesce(t,n){return r._nullishCoalesce(t,n)}n._asyncNullishCoalesce=_asyncNullishCoalesce},1589:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});async function _asyncOptionalChain(t){let n=undefined;let o=t[0];let r=1;while(r<t.length){const i=t[r];const a=t[r+1];r+=2;if((i==="optionalAccess"||i==="optionalCall")&&o==null){return}if(i==="access"||i==="optionalAccess"){n=o;o=await a(o)}else if(i==="call"||i==="optionalCall"){o=await a((...t)=>o.call(n,...t));n=undefined}}return o}n._asyncOptionalChain=_asyncOptionalChain},7630:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1589);async function _asyncOptionalChainDelete(t){const n=await r._asyncOptionalChain(t);return n==null?true:n}n._asyncOptionalChainDelete=_asyncOptionalChainDelete},122:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function _nullishCoalesce(t,n){return t!=null?t:n()}n._nullishCoalesce=_nullishCoalesce},2239:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function _optionalChain(t){let n=undefined;let o=t[0];let r=1;while(r<t.length){const i=t[r];const a=t[r+1];r+=2;if((i==="optionalAccess"||i==="optionalCall")&&o==null){return}if(i==="access"||i==="optionalAccess"){n=o;o=a(o)}else if(i==="call"||i==="optionalCall"){o=a((...t)=>o.call(n,...t));n=undefined}}return o}n._optionalChain=_optionalChain},8480:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(2239);function _optionalChainDelete(t){const n=r._optionalChain(t);return n==null?true:n}n._optionalChainDelete=_optionalChainDelete},8982:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function makeFifoCache(t){let n=[];let o={};return{add(r,i){while(n.length>=t){const t=n.shift();if(t!==undefined){delete o[t]}}if(o[r]){this.delete(r)}n.push(r);o[r]=i},clear(){o={};n=[]},get(t){return o[t]},size(){return n.length},delete(t){if(!o[t]){return false}delete o[t];for(let o=0;o<n.length;o++){if(n[o]===t){n.splice(o,1);break}}return true}}}n.makeFifoCache=makeFifoCache},9419:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(6110);const i=o(5315);function createClientReportEnvelope(t,n,o){const a=[{type:"client_report"},{timestamp:o||i.dateTimestampInSeconds(),discarded_events:t}];return r.createEnvelope(n?{dsn:n}:{},[a])}n.createClientReportEnvelope=createClientReportEnvelope},5124:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parseCookie(t){const n={};let o=0;while(o<t.length){const r=t.indexOf("=",o);if(r===-1){break}let i=t.indexOf(";",o);if(i===-1){i=t.length}else if(i<r){o=t.lastIndexOf(";",r-1)+1;continue}const a=t.slice(o,r).trim();if(undefined===n[a]){let o=t.slice(r+1,i).trim();if(o.charCodeAt(0)===34){o=o.slice(1,-1)}try{n[a]=o.indexOf("%")!==-1?decodeURIComponent(o):o}catch(t){n[a]=o}}o=i+1}return n}n.parseCookie=parseCookie},4462:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=o},5301:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4462);const i=o(9550);const a=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function isValidProtocol(t){return t==="http"||t==="https"}function dsnToString(t,n=false){const{host:o,path:r,pass:i,port:a,projectId:c,protocol:g,publicKey:l}=t;return`${g}://${l}${n&&i?`:${i}`:""}`+`@${o}${a?`:${a}`:""}/${r?`${r}/`:r}${c}`}function dsnFromString(t){const n=a.exec(t);if(!n){i.consoleSandbox(()=>{console.error(`Invalid Sentry Dsn: ${t}`)});return undefined}const[o,r,c="",g,l="",d]=n.slice(1);let u="";let I=d;const C=I.split("/");if(C.length>1){u=C.slice(0,-1).join("/");I=C.pop()}if(I){const t=I.match(/^\d+/);if(t){I=t[0]}}return dsnFromComponents({host:g,pass:c,path:u,projectId:I,port:l,protocol:o,publicKey:r})}function dsnFromComponents(t){return{protocol:t.protocol,publicKey:t.publicKey||"",pass:t.pass||"",host:t.host,port:t.port||"",path:t.path||"",projectId:t.projectId}}function validateDsn(t){if(!r.DEBUG_BUILD){return true}const{port:n,projectId:o,protocol:a}=t;const c=["protocol","publicKey","host","projectId"];const g=c.find(n=>{if(!t[n]){i.logger.error(`Invalid Sentry Dsn: ${n} missing`);return true}return false});if(g){return false}if(!o.match(/^\d+$/)){i.logger.error(`Invalid Sentry Dsn: Invalid projectId ${o}`);return false}if(!isValidProtocol(a)){i.logger.error(`Invalid Sentry Dsn: Invalid protocol ${a}`);return false}if(n&&isNaN(parseInt(n,10))){i.logger.error(`Invalid Sentry Dsn: Invalid port ${n}`);return false}return true}function makeDsn(t){const n=typeof t==="string"?dsnFromString(t):dsnFromComponents(t);if(!n||!validateDsn(n)){return undefined}return n}n.dsnFromString=dsnFromString;n.dsnToString=dsnToString;n.makeDsn=makeDsn},2299:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isBrowserBundle(){return typeof __SENTRY_BROWSER_BUNDLE__!=="undefined"&&!!__SENTRY_BROWSER_BUNDLE__}function getSDKSource(){return"npm"}n.getSDKSource=getSDKSource;n.isBrowserBundle=isBrowserBundle},6110:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5301);const i=o(7843);const a=o(6309);function createEnvelope(t,n=[]){return[t,n]}function addItemToEnvelope(t,n){const[o,r]=t;return[o,[...r,n]]}function forEachEnvelopeItem(t,n){const o=t[1];for(const t of o){const o=t[0].type;const r=n(t,o);if(r){return true}}return false}function envelopeContainsItemType(t,n){return forEachEnvelopeItem(t,(t,o)=>n.includes(o))}function encodeUTF8(t,n){const o=n||new TextEncoder;return o.encode(t)}function serializeEnvelope(t,n){const[o,r]=t;let a=JSON.stringify(o);function append(t){if(typeof a==="string"){a=typeof t==="string"?a+t:[encodeUTF8(a,n),t]}else{a.push(typeof t==="string"?encodeUTF8(t,n):t)}}for(const t of r){const[n,o]=t;append(`\n${JSON.stringify(n)}\n`);if(typeof o==="string"||o instanceof Uint8Array){append(o)}else{let t;try{t=JSON.stringify(o)}catch(n){t=JSON.stringify(i.normalize(o))}append(t)}}return typeof a==="string"?a:concatBuffers(a)}function concatBuffers(t){const n=t.reduce((t,n)=>t+n.length,0);const o=new Uint8Array(n);let r=0;for(const n of t){o.set(n,r);r+=n.length}return o}function parseEnvelope(t,n,o){let r=typeof t==="string"?n.encode(t):t;function readBinary(t){const n=r.subarray(0,t);r=r.subarray(t+1);return n}function readJson(){let t=r.indexOf(10);if(t<0){t=r.length}return JSON.parse(o.decode(readBinary(t)))}const i=readJson();const a=[];while(r.length){const t=readJson();const n=typeof t.length==="number"?t.length:undefined;a.push([t,n?readBinary(n):readJson()])}return[i,a]}function createAttachmentEnvelopeItem(t,n){const o=typeof t.data==="string"?encodeUTF8(t.data,n):t.data;return[a.dropUndefinedKeys({type:"attachment",length:o.length,filename:t.filename,content_type:t.contentType,attachment_type:t.attachmentType}),o]}const c={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",statsd:"metric_bucket"};function envelopeItemTypeToDataCategory(t){return c[t]}function getSdkMetadataForEnvelopeHeader(t){if(!t||!t.sdk){return}const{name:n,version:o}=t.sdk;return{name:n,version:o}}function createEventEnvelopeHeaders(t,n,o,i){const c=t.sdkProcessingMetadata&&t.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:t.event_id,sent_at:(new Date).toISOString(),...n&&{sdk:n},...!!o&&i&&{dsn:r.dsnToString(i)},...c&&{trace:a.dropUndefinedKeys({...c})}}}n.addItemToEnvelope=addItemToEnvelope;n.createAttachmentEnvelopeItem=createAttachmentEnvelopeItem;n.createEnvelope=createEnvelope;n.createEventEnvelopeHeaders=createEventEnvelopeHeaders;n.envelopeContainsItemType=envelopeContainsItemType;n.envelopeItemTypeToDataCategory=envelopeItemTypeToDataCategory;n.forEachEnvelopeItem=forEachEnvelopeItem;n.getSdkMetadataForEnvelopeHeader=getSdkMetadataForEnvelopeHeader;n.parseEnvelope=parseEnvelope;n.serializeEnvelope=serializeEnvelope},2930:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});class SentryError extends Error{constructor(t,n="warn"){super(t);this.message=t;this.name=new.target.prototype.constructor.name;Object.setPrototypeOf(this,new.target.prototype);this.logLevel=n}}n.SentryError=SentryError},617:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1846);const i=o(7562);const a=o(7843);const c=o(6309);function parseStackFrames(t,n){return t(n.stack||"",1)}function exceptionFromError(t,n){const o={type:n.name||n.constructor.name,value:n.message};const r=parseStackFrames(t,n);if(r.length){o.stacktrace={frames:r}}return o}function getMessageForObject(t){if("name"in t&&typeof t.name==="string"){let n=`'${t.name}' captured as exception`;if("message"in t&&typeof t.message==="string"){n+=` with message '${t.message}'`}return n}else if("message"in t&&typeof t.message==="string"){return t.message}else{return`Object captured as exception with keys: ${c.extractExceptionKeysForMessage(t)}`}}function eventFromUnknownInput(t,n,o,c){const g=typeof t==="function"?t().getClient():t;let l=o;const d=c&&c.data&&c.data.mechanism;const u=d||{handled:true,type:"generic"};let I;if(!r.isError(o)){if(r.isPlainObject(o)){const t=g&&g.getOptions().normalizeDepth;I={["__serialized__"]:a.normalizeToSize(o,t)};const n=getMessageForObject(o);l=c&&c.syntheticException||new Error(n);l.message=n}else{l=c&&c.syntheticException||new Error(o);l.message=o}u.synthetic=true}const C={exception:{values:[exceptionFromError(n,l)]}};if(I){C.extra=I}i.addExceptionTypeValue(C,undefined,undefined);i.addExceptionMechanism(C,u);return{...C,event_id:c&&c.event_id}}function eventFromMessage(t,n,o="info",i,a){const c={event_id:i&&i.event_id,level:o};if(a&&i&&i.syntheticException){const o=parseStackFrames(t,i.syntheticException);if(o.length){c.exception={values:[{value:n,stacktrace:{frames:o}}]}}}if(r.isParameterizedString(n)){const{__sentry_template_string__:t,__sentry_template_values__:o}=n;c.logentry={message:t,params:o};return c}c.message=n;return c}n.eventFromMessage=eventFromMessage;n.eventFromUnknownInput=eventFromUnknownInput;n.exceptionFromError=exceptionFromError;n.parseStackFrames=parseStackFrames},4624:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9891);const i=o(4812);const a=o(5301);const c=o(2930);const g=o(5395);const l=o(592);const d=o(1846);const u=o(9356);const I=o(9550);const C=o(6600);const p=o(7562);const m=o(4270);const b=o(7843);const h=o(6309);const G=o(3833);const Z=o(9875);const B=o(7869);const A=o(3013);const y=o(811);const f=o(1071);const W=o(2866);const v=o(2360);const V=o(5315);const R=o(1970);const S=o(2299);const H=o(6110);const Y=o(9419);const N=o(1173);const X=o(4486);const F=o(1329);const K=o(590);const _=o(8982);const T=o(617);const w=o(899);const E=o(8690);const J=o(8140);const k=o(1589);const U=o(7630);const z=o(122);const L=o(2239);const x=o(8480);const O=o(2269);const M=o(4192);const Q=o(2950);const j=o(4776);const D=o(852);const P=o(3631);const q=o(6303);const $=o(6004);const ee=o(4171);const te=o(9043);const ne=o(3047);n.applyAggregateErrorsToEvent=r.applyAggregateErrorsToEvent;n.getComponentName=i.getComponentName;n.getDomElement=i.getDomElement;n.getLocationHref=i.getLocationHref;n.htmlTreeAsString=i.htmlTreeAsString;n.dsnFromString=a.dsnFromString;n.dsnToString=a.dsnToString;n.makeDsn=a.makeDsn;n.SentryError=c.SentryError;n.GLOBAL_OBJ=g.GLOBAL_OBJ;n.getGlobalObject=g.getGlobalObject;n.getGlobalSingleton=g.getGlobalSingleton;n.addInstrumentationHandler=l.addInstrumentationHandler;n.isDOMError=d.isDOMError;n.isDOMException=d.isDOMException;n.isElement=d.isElement;n.isError=d.isError;n.isErrorEvent=d.isErrorEvent;n.isEvent=d.isEvent;n.isInstanceOf=d.isInstanceOf;n.isNaN=d.isNaN;n.isParameterizedString=d.isParameterizedString;n.isPlainObject=d.isPlainObject;n.isPrimitive=d.isPrimitive;n.isRegExp=d.isRegExp;n.isString=d.isString;n.isSyntheticEvent=d.isSyntheticEvent;n.isThenable=d.isThenable;n.isVueViewModel=d.isVueViewModel;n.isBrowser=u.isBrowser;n.CONSOLE_LEVELS=I.CONSOLE_LEVELS;n.consoleSandbox=I.consoleSandbox;n.logger=I.logger;n.originalConsoleMethods=I.originalConsoleMethods;n.memoBuilder=C.memoBuilder;n.addContextToFrame=p.addContextToFrame;n.addExceptionMechanism=p.addExceptionMechanism;n.addExceptionTypeValue=p.addExceptionTypeValue;n.arrayify=p.arrayify;n.checkOrSetAlreadyCaught=p.checkOrSetAlreadyCaught;n.getEventDescription=p.getEventDescription;n.parseSemver=p.parseSemver;n.uuid4=p.uuid4;n.dynamicRequire=m.dynamicRequire;n.isNodeEnv=m.isNodeEnv;n.loadModule=m.loadModule;n.normalize=b.normalize;n.normalizeToSize=b.normalizeToSize;n.normalizeUrlToBase=b.normalizeUrlToBase;n.walk=b.walk;n.addNonEnumerableProperty=h.addNonEnumerableProperty;n.convertToPlainObject=h.convertToPlainObject;n.dropUndefinedKeys=h.dropUndefinedKeys;n.extractExceptionKeysForMessage=h.extractExceptionKeysForMessage;n.fill=h.fill;n.getOriginalFunction=h.getOriginalFunction;n.markFunctionWrapped=h.markFunctionWrapped;n.objectify=h.objectify;n.urlEncode=h.urlEncode;n.basename=G.basename;n.dirname=G.dirname;n.isAbsolute=G.isAbsolute;n.join=G.join;n.normalizePath=G.normalizePath;n.relative=G.relative;n.resolve=G.resolve;n.makePromiseBuffer=Z.makePromiseBuffer;n.DEFAULT_USER_INCLUDES=B.DEFAULT_USER_INCLUDES;n.addRequestDataToEvent=B.addRequestDataToEvent;n.addRequestDataToTransaction=B.addRequestDataToTransaction;n.extractPathForTransaction=B.extractPathForTransaction;n.extractRequestData=B.extractRequestData;n.winterCGHeadersToDict=B.winterCGHeadersToDict;n.winterCGRequestToRequestData=B.winterCGRequestToRequestData;n.severityFromString=A.severityFromString;n.severityLevelFromString=A.severityLevelFromString;n.validSeverityLevels=A.validSeverityLevels;n.createStackParser=y.createStackParser;n.getFunctionName=y.getFunctionName;n.nodeStackLineParser=y.nodeStackLineParser;n.stackParserFromStackParserOptions=y.stackParserFromStackParserOptions;n.stripSentryFramesAndReverse=y.stripSentryFramesAndReverse;n.isMatchingPattern=f.isMatchingPattern;n.safeJoin=f.safeJoin;n.snipLine=f.snipLine;n.stringMatchesSomePattern=f.stringMatchesSomePattern;n.truncate=f.truncate;n.isNativeFetch=W.isNativeFetch;n.supportsDOMError=W.supportsDOMError;n.supportsDOMException=W.supportsDOMException;n.supportsErrorEvent=W.supportsErrorEvent;n.supportsFetch=W.supportsFetch;n.supportsNativeFetch=W.supportsNativeFetch;n.supportsReferrerPolicy=W.supportsReferrerPolicy;n.supportsReportingObserver=W.supportsReportingObserver;n.SyncPromise=v.SyncPromise;n.rejectedSyncPromise=v.rejectedSyncPromise;n.resolvedSyncPromise=v.resolvedSyncPromise;Object.defineProperty(n,"_browserPerformanceTimeOriginMode",{enumerable:true,get:()=>V._browserPerformanceTimeOriginMode});n.browserPerformanceTimeOrigin=V.browserPerformanceTimeOrigin;n.dateTimestampInSeconds=V.dateTimestampInSeconds;n.timestampInSeconds=V.timestampInSeconds;n.timestampWithMs=V.timestampWithMs;n.TRACEPARENT_REGEXP=R.TRACEPARENT_REGEXP;n.extractTraceparentData=R.extractTraceparentData;n.generateSentryTraceHeader=R.generateSentryTraceHeader;n.propagationContextFromHeaders=R.propagationContextFromHeaders;n.tracingContextFromHeaders=R.tracingContextFromHeaders;n.getSDKSource=S.getSDKSource;n.isBrowserBundle=S.isBrowserBundle;n.addItemToEnvelope=H.addItemToEnvelope;n.createAttachmentEnvelopeItem=H.createAttachmentEnvelopeItem;n.createEnvelope=H.createEnvelope;n.createEventEnvelopeHeaders=H.createEventEnvelopeHeaders;n.envelopeContainsItemType=H.envelopeContainsItemType;n.envelopeItemTypeToDataCategory=H.envelopeItemTypeToDataCategory;n.forEachEnvelopeItem=H.forEachEnvelopeItem;n.getSdkMetadataForEnvelopeHeader=H.getSdkMetadataForEnvelopeHeader;n.parseEnvelope=H.parseEnvelope;n.serializeEnvelope=H.serializeEnvelope;n.createClientReportEnvelope=Y.createClientReportEnvelope;n.DEFAULT_RETRY_AFTER=N.DEFAULT_RETRY_AFTER;n.disabledUntil=N.disabledUntil;n.isRateLimited=N.isRateLimited;n.parseRetryAfterHeader=N.parseRetryAfterHeader;n.updateRateLimits=N.updateRateLimits;n.BAGGAGE_HEADER_NAME=X.BAGGAGE_HEADER_NAME;n.MAX_BAGGAGE_STRING_LENGTH=X.MAX_BAGGAGE_STRING_LENGTH;n.SENTRY_BAGGAGE_KEY_PREFIX=X.SENTRY_BAGGAGE_KEY_PREFIX;n.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=X.SENTRY_BAGGAGE_KEY_PREFIX_REGEX;n.baggageHeaderToDynamicSamplingContext=X.baggageHeaderToDynamicSamplingContext;n.dynamicSamplingContextToSentryBaggageHeader=X.dynamicSamplingContextToSentryBaggageHeader;n.getNumberOfUrlSegments=F.getNumberOfUrlSegments;n.getSanitizedUrlString=F.getSanitizedUrlString;n.parseUrl=F.parseUrl;n.stripUrlQueryAndFragment=F.stripUrlQueryAndFragment;n.addOrUpdateIntegration=K.addOrUpdateIntegration;n.makeFifoCache=_.makeFifoCache;n.eventFromMessage=T.eventFromMessage;n.eventFromUnknownInput=T.eventFromUnknownInput;n.exceptionFromError=T.exceptionFromError;n.parseStackFrames=T.parseStackFrames;n.callFrameToStackFrame=w.callFrameToStackFrame;n.watchdogTimer=w.watchdogTimer;n.LRUMap=E.LRUMap;n._asyncNullishCoalesce=J._asyncNullishCoalesce;n._asyncOptionalChain=k._asyncOptionalChain;n._asyncOptionalChainDelete=U._asyncOptionalChainDelete;n._nullishCoalesce=z._nullishCoalesce;n._optionalChain=L._optionalChain;n._optionalChainDelete=x._optionalChainDelete;n.addConsoleInstrumentationHandler=O.addConsoleInstrumentationHandler;n.addClickKeypressInstrumentationHandler=M.addClickKeypressInstrumentationHandler;n.SENTRY_XHR_DATA_KEY=Q.SENTRY_XHR_DATA_KEY;n.addXhrInstrumentationHandler=Q.addXhrInstrumentationHandler;n.addFetchInstrumentationHandler=j.addFetchInstrumentationHandler;n.addHistoryInstrumentationHandler=D.addHistoryInstrumentationHandler;n.addGlobalErrorInstrumentationHandler=P.addGlobalErrorInstrumentationHandler;n.addGlobalUnhandledRejectionInstrumentationHandler=q.addGlobalUnhandledRejectionInstrumentationHandler;n.resetInstrumentationHandlers=$.resetInstrumentationHandlers;n.filenameIsInApp=ee.filenameIsInApp;n.escapeStringForRegex=te.escapeStringForRegex;n.supportsHistory=ne.supportsHistory},6004:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4462);const i=o(9550);const a=o(811);const c={};const g={};function addHandler(t,n){c[t]=c[t]||[];c[t].push(n)}function resetInstrumentationHandlers(){Object.keys(c).forEach(t=>{c[t]=undefined})}function maybeInstrument(t,n){if(!g[t]){n();g[t]=true}}function triggerHandlers(t,n){const o=t&&c[t];if(!o){return}for(const c of o){try{c(n)}catch(n){r.DEBUG_BUILD&&i.logger.error(`Error while triggering instrumentation handler.\nType: ${t}\nName: ${a.getFunctionName(c)}\nError:`,n)}}}n.addHandler=addHandler;n.maybeInstrument=maybeInstrument;n.resetInstrumentationHandlers=resetInstrumentationHandlers;n.triggerHandlers=triggerHandlers},2269:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9550);const i=o(6309);const a=o(5395);const c=o(6004);function addConsoleInstrumentationHandler(t){const n="console";c.addHandler(n,t);c.maybeInstrument(n,instrumentConsole)}function instrumentConsole(){if(!("console"in a.GLOBAL_OBJ)){return}r.CONSOLE_LEVELS.forEach(function(t){if(!(t in a.GLOBAL_OBJ.console)){return}i.fill(a.GLOBAL_OBJ.console,t,function(n){r.originalConsoleMethods[t]=n;return function(...n){const o={args:n,level:t};c.triggerHandlers("console",o);const i=r.originalConsoleMethods[t];i&&i.apply(a.GLOBAL_OBJ.console,n)}})})}n.addConsoleInstrumentationHandler=addConsoleInstrumentationHandler},4192:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(7562);const i=o(6309);const a=o(5395);const c=o(6004);const g=a.GLOBAL_OBJ;const l=1e3;let d;let u;let I;function addClickKeypressInstrumentationHandler(t){const n="dom";c.addHandler(n,t);c.maybeInstrument(n,instrumentDOM)}function instrumentDOM(){if(!g.document){return}const t=c.triggerHandlers.bind(null,"dom");const n=makeDOMEventHandler(t,true);g.document.addEventListener("click",n,false);g.document.addEventListener("keypress",n,false);["EventTarget","Node"].forEach(n=>{const o=g[n]&&g[n].prototype;if(!o||!o.hasOwnProperty||!o.hasOwnProperty("addEventListener")){return}i.fill(o,"addEventListener",function(n){return function(o,r,i){if(o==="click"||o=="keypress"){try{const r=this;const a=r.__sentry_instrumentation_handlers__=r.__sentry_instrumentation_handlers__||{};const c=a[o]=a[o]||{refCount:0};if(!c.handler){const r=makeDOMEventHandler(t);c.handler=r;n.call(this,o,r,i)}c.refCount++}catch(t){}}return n.call(this,o,r,i)}});i.fill(o,"removeEventListener",function(t){return function(n,o,r){if(n==="click"||n=="keypress"){try{const o=this;const i=o.__sentry_instrumentation_handlers__||{};const a=i[n];if(a){a.refCount--;if(a.refCount<=0){t.call(this,n,a.handler,r);a.handler=undefined;delete i[n]}if(Object.keys(i).length===0){delete o.__sentry_instrumentation_handlers__}}}catch(t){}}return t.call(this,n,o,r)}})})}function isSimilarToLastCapturedEvent(t){if(t.type!==u){return false}try{if(!t.target||t.target._sentryId!==I){return false}}catch(t){}return true}function shouldSkipDOMEvent(t,n){if(t!=="keypress"){return false}if(!n||!n.tagName){return true}if(n.tagName==="INPUT"||n.tagName==="TEXTAREA"||n.isContentEditable){return false}return true}function makeDOMEventHandler(t,n=false){return o=>{if(!o||o["_sentryCaptured"]){return}const a=getEventTarget(o);if(shouldSkipDOMEvent(o.type,a)){return}i.addNonEnumerableProperty(o,"_sentryCaptured",true);if(a&&!a._sentryId){i.addNonEnumerableProperty(a,"_sentryId",r.uuid4())}const c=o.type==="keypress"?"input":o.type;if(!isSimilarToLastCapturedEvent(o)){const r={event:o,name:c,global:n};t(r);u=o.type;I=a?a._sentryId:undefined}clearTimeout(d);d=g.setTimeout(()=>{I=undefined;u=undefined},l)}}function getEventTarget(t){try{return t.target}catch(t){return null}}n.addClickKeypressInstrumentationHandler=addClickKeypressInstrumentationHandler;n.instrumentDOM=instrumentDOM},4776:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(6309);const i=o(2866);const a=o(5395);const c=o(6004);function addFetchInstrumentationHandler(t){const n="fetch";c.addHandler(n,t);c.maybeInstrument(n,instrumentFetch)}function instrumentFetch(){if(!i.supportsNativeFetch()){return}r.fill(a.GLOBAL_OBJ,"fetch",function(t){return function(...n){const{method:o,url:r}=parseFetchArgs(n);const i={args:n,fetchData:{method:o,url:r},startTimestamp:Date.now()};c.triggerHandlers("fetch",{...i});return t.apply(a.GLOBAL_OBJ,n).then(t=>{const n={...i,endTimestamp:Date.now(),response:t};c.triggerHandlers("fetch",n);return t},t=>{const n={...i,endTimestamp:Date.now(),error:t};c.triggerHandlers("fetch",n);throw t})}})}function hasProp(t,n){return!!t&&typeof t==="object"&&!!t[n]}function getUrlFromResource(t){if(typeof t==="string"){return t}if(!t){return""}if(hasProp(t,"url")){return t.url}if(t.toString){return t.toString()}return""}function parseFetchArgs(t){if(t.length===0){return{method:"GET",url:""}}if(t.length===2){const[n,o]=t;return{url:getUrlFromResource(n),method:hasProp(o,"method")?String(o.method).toUpperCase():"GET"}}const n=t[0];return{url:getUrlFromResource(n),method:hasProp(n,"method")?String(n.method).toUpperCase():"GET"}}n.addFetchInstrumentationHandler=addFetchInstrumentationHandler;n.parseFetchArgs=parseFetchArgs},3631:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5395);const i=o(6004);let a=null;function addGlobalErrorInstrumentationHandler(t){const n="error";i.addHandler(n,t);i.maybeInstrument(n,instrumentError)}function instrumentError(){a=r.GLOBAL_OBJ.onerror;r.GLOBAL_OBJ.onerror=function(t,n,o,r,c){const g={column:r,error:c,line:o,msg:t,url:n};i.triggerHandlers("error",g);if(a&&!a.__SENTRY_LOADER__){return a.apply(this,arguments)}return false};r.GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__=true}n.addGlobalErrorInstrumentationHandler=addGlobalErrorInstrumentationHandler},6303:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5395);const i=o(6004);let a=null;function addGlobalUnhandledRejectionInstrumentationHandler(t){const n="unhandledrejection";i.addHandler(n,t);i.maybeInstrument(n,instrumentUnhandledRejection)}function instrumentUnhandledRejection(){a=r.GLOBAL_OBJ.onunhandledrejection;r.GLOBAL_OBJ.onunhandledrejection=function(t){const n=t;i.triggerHandlers("unhandledrejection",n);if(a&&!a.__SENTRY_LOADER__){return a.apply(this,arguments)}return true};r.GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__=true}n.addGlobalUnhandledRejectionInstrumentationHandler=addGlobalUnhandledRejectionInstrumentationHandler},852:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(6309);o(4462);o(9550);const i=o(5395);const a=o(3047);const c=o(6004);const g=i.GLOBAL_OBJ;let l;function addHistoryInstrumentationHandler(t){const n="history";c.addHandler(n,t);c.maybeInstrument(n,instrumentHistory)}function instrumentHistory(){if(!a.supportsHistory()){return}const t=g.onpopstate;g.onpopstate=function(...n){const o=g.location.href;const r=l;l=o;const i={from:r,to:o};c.triggerHandlers("history",i);if(t){try{return t.apply(this,n)}catch(t){}}};function historyReplacementFunction(t){return function(...n){const o=n.length>2?n[2]:undefined;if(o){const t=l;const n=String(o);l=n;const r={from:t,to:n};c.triggerHandlers("history",r)}return t.apply(this,n)}}r.fill(g.history,"pushState",historyReplacementFunction);r.fill(g.history,"replaceState",historyReplacementFunction)}n.addHistoryInstrumentationHandler=addHistoryInstrumentationHandler},592:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4462);const i=o(9550);const a=o(2269);const c=o(4192);const g=o(4776);const l=o(3631);const d=o(6303);const u=o(852);const I=o(2950);function addInstrumentationHandler(t,n){switch(t){case"console":return a.addConsoleInstrumentationHandler(n);case"dom":return c.addClickKeypressInstrumentationHandler(n);case"xhr":return I.addXhrInstrumentationHandler(n);case"fetch":return g.addFetchInstrumentationHandler(n);case"history":return u.addHistoryInstrumentationHandler(n);case"error":return l.addGlobalErrorInstrumentationHandler(n);case"unhandledrejection":return d.addGlobalUnhandledRejectionInstrumentationHandler(n);default:r.DEBUG_BUILD&&i.logger.warn("unknown instrumentation type:",t)}}n.addConsoleInstrumentationHandler=a.addConsoleInstrumentationHandler;n.addClickKeypressInstrumentationHandler=c.addClickKeypressInstrumentationHandler;n.addFetchInstrumentationHandler=g.addFetchInstrumentationHandler;n.addGlobalErrorInstrumentationHandler=l.addGlobalErrorInstrumentationHandler;n.addGlobalUnhandledRejectionInstrumentationHandler=d.addGlobalUnhandledRejectionInstrumentationHandler;n.addHistoryInstrumentationHandler=u.addHistoryInstrumentationHandler;n.SENTRY_XHR_DATA_KEY=I.SENTRY_XHR_DATA_KEY;n.addXhrInstrumentationHandler=I.addXhrInstrumentationHandler;n.addInstrumentationHandler=addInstrumentationHandler},2950:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1846);const i=o(6309);const a=o(5395);const c=o(6004);const g=a.GLOBAL_OBJ;const l="__sentry_xhr_v3__";function addXhrInstrumentationHandler(t){const n="xhr";c.addHandler(n,t);c.maybeInstrument(n,instrumentXHR)}function instrumentXHR(){if(!g.XMLHttpRequest){return}const t=XMLHttpRequest.prototype;i.fill(t,"open",function(t){return function(...n){const o=Date.now();const a=r.isString(n[0])?n[0].toUpperCase():undefined;const g=parseUrl(n[1]);if(!a||!g){return t.apply(this,n)}this[l]={method:a,url:g,request_headers:{}};if(a==="POST"&&g.match(/sentry_key/)){this.__sentry_own_request__=true}const onreadystatechangeHandler=()=>{const t=this[l];if(!t){return}if(this.readyState===4){try{t.status_code=this.status}catch(t){}const n={args:[a,g],endTimestamp:Date.now(),startTimestamp:o,xhr:this};c.triggerHandlers("xhr",n)}};if("onreadystatechange"in this&&typeof this.onreadystatechange==="function"){i.fill(this,"onreadystatechange",function(t){return function(...n){onreadystatechangeHandler();return t.apply(this,n)}})}else{this.addEventListener("readystatechange",onreadystatechangeHandler)}i.fill(this,"setRequestHeader",function(t){return function(...n){const[o,i]=n;const a=this[l];if(a&&r.isString(o)&&r.isString(i)){a.request_headers[o.toLowerCase()]=i}return t.apply(this,n)}});return t.apply(this,n)}});i.fill(t,"send",function(t){return function(...n){const o=this[l];if(!o){return t.apply(this,n)}if(n[0]!==undefined){o.body=n[0]}const r={args:[o.method,o.url],startTimestamp:Date.now(),xhr:this};c.triggerHandlers("xhr",r);return t.apply(this,n)}})}function parseUrl(t){if(r.isString(t)){return t}try{return t.toString()}catch(t){}return undefined}n.SENTRY_XHR_DATA_KEY=l;n.addXhrInstrumentationHandler=addXhrInstrumentationHandler;n.instrumentXHR=instrumentXHR},1846:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=Object.prototype.toString;function isError(t){switch(o.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return true;default:return isInstanceOf(t,Error)}}function isBuiltin(t,n){return o.call(t)===`[object ${n}]`}function isErrorEvent(t){return isBuiltin(t,"ErrorEvent")}function isDOMError(t){return isBuiltin(t,"DOMError")}function isDOMException(t){return isBuiltin(t,"DOMException")}function isString(t){return isBuiltin(t,"String")}function isParameterizedString(t){return typeof t==="object"&&t!==null&&"__sentry_template_string__"in t&&"__sentry_template_values__"in t}function isPrimitive(t){return t===null||isParameterizedString(t)||typeof t!=="object"&&typeof t!=="function"}function isPlainObject(t){return isBuiltin(t,"Object")}function isEvent(t){return typeof Event!=="undefined"&&isInstanceOf(t,Event)}function isElement(t){return typeof Element!=="undefined"&&isInstanceOf(t,Element)}function isRegExp(t){return isBuiltin(t,"RegExp")}function isThenable(t){return Boolean(t&&t.then&&typeof t.then==="function")}function isSyntheticEvent(t){return isPlainObject(t)&&"nativeEvent"in t&&"preventDefault"in t&&"stopPropagation"in t}function isNaN(t){return typeof t==="number"&&t!==t}function isInstanceOf(t,n){try{return t instanceof n}catch(t){return false}}function isVueViewModel(t){return!!(typeof t==="object"&&t!==null&&(t.__isVue||t._isVue))}n.isDOMError=isDOMError;n.isDOMException=isDOMException;n.isElement=isElement;n.isError=isError;n.isErrorEvent=isErrorEvent;n.isEvent=isEvent;n.isInstanceOf=isInstanceOf;n.isNaN=isNaN;n.isParameterizedString=isParameterizedString;n.isPlainObject=isPlainObject;n.isPrimitive=isPrimitive;n.isRegExp=isRegExp;n.isString=isString;n.isSyntheticEvent=isSyntheticEvent;n.isThenable=isThenable;n.isVueViewModel=isVueViewModel},9356:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4270);const i=o(5395);function isBrowser(){return typeof window!=="undefined"&&(!r.isNodeEnv()||isElectronNodeRenderer())}function isElectronNodeRenderer(){return i.GLOBAL_OBJ.process!==undefined&&i.GLOBAL_OBJ.process.type==="renderer"}n.isBrowser=isBrowser},9550:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4462);const i=o(5395);const a="Sentry Logger ";const c=["debug","info","warn","error","log","assert","trace"];const g={};function consoleSandbox(t){if(!("console"in i.GLOBAL_OBJ)){return t()}const n=i.GLOBAL_OBJ.console;const o={};const r=Object.keys(g);r.forEach(t=>{const r=g[t];o[t]=n[t];n[t]=r});try{return t()}finally{r.forEach(t=>{n[t]=o[t]})}}function makeLogger(){let t=false;const n={enable:()=>{t=true},disable:()=>{t=false},isEnabled:()=>t};if(r.DEBUG_BUILD){c.forEach(o=>{n[o]=(...n)=>{if(t){consoleSandbox(()=>{i.GLOBAL_OBJ.console[o](`${a}[${o}]:`,...n)})}}})}else{c.forEach(t=>{n[t]=()=>undefined})}return n}const l=makeLogger();n.CONSOLE_LEVELS=c;n.consoleSandbox=consoleSandbox;n.logger=l;n.originalConsoleMethods=g},8690:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});class LRUMap{constructor(t){this._maxSize=t;this._cache=new Map}get size(){return this._cache.size}get(t){const n=this._cache.get(t);if(n===undefined){return undefined}this._cache.delete(t);this._cache.set(t,n);return n}set(t,n){if(this._cache.size>=this._maxSize){this._cache.delete(this._cache.keys().next().value)}this._cache.set(t,n)}remove(t){const n=this._cache.get(t);if(n){this._cache.delete(t)}return n}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){const t=[];this._cache.forEach(n=>t.push(n));return t}}n.LRUMap=LRUMap},6600:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function memoBuilder(){const t=typeof WeakSet==="function";const n=t?new WeakSet:[];function memoize(o){if(t){if(n.has(o)){return true}n.add(o);return false}for(let t=0;t<n.length;t++){const r=n[t];if(r===o){return true}}n.push(o);return false}function unmemoize(o){if(t){n.delete(o)}else{for(let t=0;t<n.length;t++){if(n[t]===o){n.splice(t,1);break}}}}return[memoize,unmemoize]}n.memoBuilder=memoBuilder},7562:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(6309);const i=o(1071);const a=o(5395);function uuid4(){const t=a.GLOBAL_OBJ;const n=t.crypto||t.msCrypto;let getRandomByte=()=>Math.random()*16;try{if(n&&n.randomUUID){return n.randomUUID().replace(/-/g,"")}if(n&&n.getRandomValues){getRandomByte=()=>{const t=new Uint8Array(1);n.getRandomValues(t);return t[0]}}}catch(t){}return([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,t=>(t^(getRandomByte()&15)>>t/4).toString(16))}function getFirstException(t){return t.exception&&t.exception.values?t.exception.values[0]:undefined}function getEventDescription(t){const{message:n,event_id:o}=t;if(n){return n}const r=getFirstException(t);if(r){if(r.type&&r.value){return`${r.type}: ${r.value}`}return r.type||r.value||o||"<unknown>"}return o||"<unknown>"}function addExceptionTypeValue(t,n,o){const r=t.exception=t.exception||{};const i=r.values=r.values||[];const a=i[0]=i[0]||{};if(!a.value){a.value=n||""}if(!a.type){a.type=o||"Error"}}function addExceptionMechanism(t,n){const o=getFirstException(t);if(!o){return}const r={type:"generic",handled:true};const i=o.mechanism;o.mechanism={...r,...i,...n};if(n&&"data"in n){const t={...i&&i.data,...n.data};o.mechanism.data=t}}const c=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;function parseSemver(t){const n=t.match(c)||[];const o=parseInt(n[1],10);const r=parseInt(n[2],10);const i=parseInt(n[3],10);return{buildmetadata:n[5],major:isNaN(o)?undefined:o,minor:isNaN(r)?undefined:r,patch:isNaN(i)?undefined:i,prerelease:n[4]}}function addContextToFrame(t,n,o=5){if(n.lineno===undefined){return}const r=t.length;const a=Math.max(Math.min(r-1,n.lineno-1),0);n.pre_context=t.slice(Math.max(0,a-o),a).map(t=>i.snipLine(t,0));n.context_line=i.snipLine(t[Math.min(r-1,a)],n.colno||0);n.post_context=t.slice(Math.min(a+1,r),a+1+o).map(t=>i.snipLine(t,0))}function checkOrSetAlreadyCaught(t){if(t&&t.__sentry_captured__){return true}try{r.addNonEnumerableProperty(t,"__sentry_captured__",true)}catch(t){}return false}function arrayify(t){return Array.isArray(t)?t:[t]}n.addContextToFrame=addContextToFrame;n.addExceptionMechanism=addExceptionMechanism;n.addExceptionTypeValue=addExceptionTypeValue;n.arrayify=arrayify;n.checkOrSetAlreadyCaught=checkOrSetAlreadyCaught;n.getEventDescription=getEventDescription;n.parseSemver=parseSemver;n.uuid4=uuid4},4171:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function filenameIsInApp(t,n=false){const o=n||t&&!t.startsWith("/")&&!t.match(/^[A-Z]:/)&&!t.startsWith(".")&&!t.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//);return!o&&t!==undefined&&!t.includes("node_modules/")}function node(t){const n=/^\s*[-]{4,}$/;const o=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;return r=>{const i=r.match(o);if(i){let n;let o;let r;let a;let c;if(i[1]){r=i[1];let t=r.lastIndexOf(".");if(r[t-1]==="."){t--}if(t>0){n=r.slice(0,t);o=r.slice(t+1);const i=n.indexOf(".Module");if(i>0){r=r.slice(i+1);n=n.slice(0,i)}}a=undefined}if(o){a=n;c=o}if(o==="<anonymous>"){c=undefined;r=undefined}if(r===undefined){c=c||"<anonymous>";r=a?`${a}.${c}`:c}let g=i[2]&&i[2].startsWith("file://")?i[2].slice(7):i[2];const l=i[5]==="native";if(g&&g.match(/\/[A-Z]:/)){g=g.slice(1)}if(!g&&i[5]&&!l){g=i[5]}return{filename:g,module:t?t(g):undefined,function:r,lineno:parseInt(i[3],10)||undefined,colno:parseInt(i[4],10)||undefined,in_app:filenameIsInApp(g,l)}}if(r.match(n)){return{filename:r}}return undefined}}n.filenameIsInApp=filenameIsInApp;n.node=node},4270:(t,n,o)=>{t=o.nmd(t);Object.defineProperty(n,"__esModule",{value:true});const r=o(2299);function isNodeEnv(){return!r.isBrowserBundle()&&Object.prototype.toString.call(typeof process!=="undefined"?process:0)==="[object process]"}function dynamicRequire(t,n){return t.require(n)}function loadModule(n){let o;try{o=dynamicRequire(t,n)}catch(t){}try{const{cwd:r}=dynamicRequire(t,"process");o=dynamicRequire(t,`${r()}/node_modules/${n}`)}catch(t){}return o}n.dynamicRequire=dynamicRequire;n.isNodeEnv=isNodeEnv;n.loadModule=loadModule},7843:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1846);const i=o(6600);const a=o(6309);const c=o(811);function normalize(t,n=100,o=+Infinity){try{return visit("",t,n,o)}catch(t){return{ERROR:`**non-serializable** (${t})`}}}function normalizeToSize(t,n=3,o=100*1024){const r=normalize(t,n);if(jsonSize(r)>o){return normalizeToSize(t,n-1,o)}return r}function visit(t,n,o=+Infinity,c=+Infinity,g=i.memoBuilder()){const[l,d]=g;if(n==null||["number","boolean","string"].includes(typeof n)&&!r.isNaN(n)){return n}const u=stringifyValue(t,n);if(!u.startsWith("[object ")){return u}if(n["__sentry_skip_normalization__"]){return n}const I=typeof n["__sentry_override_normalization_depth__"]==="number"?n["__sentry_override_normalization_depth__"]:o;if(I===0){return u.replace("object ","")}if(l(n)){return"[Circular ~]"}const C=n;if(C&&typeof C.toJSON==="function"){try{const t=C.toJSON();return visit("",t,I-1,c,g)}catch(t){}}const p=Array.isArray(n)?[]:{};let m=0;const b=a.convertToPlainObject(n);for(const t in b){if(!Object.prototype.hasOwnProperty.call(b,t)){continue}if(m>=c){p[t]="[MaxProperties ~]";break}const n=b[t];p[t]=visit(t,n,I-1,c,g);m++}d(n);return p}function stringifyValue(t,n){try{if(t==="domain"&&n&&typeof n==="object"&&n._events){return"[Domain]"}if(t==="domainEmitter"){return"[DomainEmitter]"}if(typeof global!=="undefined"&&n===global){return"[Global]"}if(typeof window!=="undefined"&&n===window){return"[Window]"}if(typeof document!=="undefined"&&n===document){return"[Document]"}if(r.isVueViewModel(n)){return"[VueViewModel]"}if(r.isSyntheticEvent(n)){return"[SyntheticEvent]"}if(typeof n==="number"&&n!==n){return"[NaN]"}if(typeof n==="function"){return`[Function: ${c.getFunctionName(n)}]`}if(typeof n==="symbol"){return`[${String(n)}]`}if(typeof n==="bigint"){return`[BigInt: ${String(n)}]`}const o=getConstructorName(n);if(/^HTML(\w*)Element$/.test(o)){return`[HTMLElement: ${o}]`}return`[object ${o}]`}catch(t){return`**non-serializable** (${t})`}}function getConstructorName(t){const n=Object.getPrototypeOf(t);return n?n.constructor.name:"null prototype"}function utf8Length(t){return~-encodeURI(t).split(/%..|./).length}function jsonSize(t){return utf8Length(JSON.stringify(t))}function normalizeUrlToBase(t,n){const o=n.replace(/\\/g,"/").replace(/[|\\{}()[\]^$+*?.]/g,"\\$&");let r=t;try{r=decodeURI(t)}catch(t){}return r.replace(/\\/g,"/").replace(/webpack:\/?/g,"").replace(new RegExp(`(file://)?/*${o}/*`,"ig"),"app:///")}n.normalize=normalize;n.normalizeToSize=normalizeToSize;n.normalizeUrlToBase=normalizeUrlToBase;n.walk=visit},6309:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4812);const i=o(4462);const a=o(1846);const c=o(9550);const g=o(1071);function fill(t,n,o){if(!(n in t)){return}const r=t[n];const i=o(r);if(typeof i==="function"){markFunctionWrapped(i,r)}t[n]=i}function addNonEnumerableProperty(t,n,o){try{Object.defineProperty(t,n,{value:o,writable:true,configurable:true})}catch(o){i.DEBUG_BUILD&&c.logger.log(`Failed to add non-enumerable property "${n}" to object`,t)}}function markFunctionWrapped(t,n){try{const o=n.prototype||{};t.prototype=n.prototype=o;addNonEnumerableProperty(t,"__sentry_original__",n)}catch(t){}}function getOriginalFunction(t){return t.__sentry_original__}function urlEncode(t){return Object.keys(t).map(n=>`${encodeURIComponent(n)}=${encodeURIComponent(t[n])}`).join("&")}function convertToPlainObject(t){if(a.isError(t)){return{message:t.message,name:t.name,stack:t.stack,...getOwnProperties(t)}}else if(a.isEvent(t)){const n={type:t.type,target:serializeEventTarget(t.target),currentTarget:serializeEventTarget(t.currentTarget),...getOwnProperties(t)};if(typeof CustomEvent!=="undefined"&&a.isInstanceOf(t,CustomEvent)){n.detail=t.detail}return n}else{return t}}function serializeEventTarget(t){try{return a.isElement(t)?r.htmlTreeAsString(t):Object.prototype.toString.call(t)}catch(t){return"<unknown>"}}function getOwnProperties(t){if(typeof t==="object"&&t!==null){const n={};for(const o in t){if(Object.prototype.hasOwnProperty.call(t,o)){n[o]=t[o]}}return n}else{return{}}}function extractExceptionKeysForMessage(t,n=40){const o=Object.keys(convertToPlainObject(t));o.sort();if(!o.length){return"[object has no keys]"}if(o[0].length>=n){return g.truncate(o[0],n)}for(let t=o.length;t>0;t--){const r=o.slice(0,t).join(", ");if(r.length>n){continue}if(t===o.length){return r}return g.truncate(r,n)}return""}function dropUndefinedKeys(t){const n=new Map;return _dropUndefinedKeys(t,n)}function _dropUndefinedKeys(t,n){if(isPojo(t)){const o=n.get(t);if(o!==undefined){return o}const r={};n.set(t,r);for(const o of Object.keys(t)){if(typeof t[o]!=="undefined"){r[o]=_dropUndefinedKeys(t[o],n)}}return r}if(Array.isArray(t)){const o=n.get(t);if(o!==undefined){return o}const r=[];n.set(t,r);t.forEach(t=>{r.push(_dropUndefinedKeys(t,n))});return r}return t}function isPojo(t){if(!a.isPlainObject(t)){return false}try{const n=Object.getPrototypeOf(t).constructor.name;return!n||n==="Object"}catch(t){return true}}function objectify(t){let n;switch(true){case t===undefined||t===null:n=new String(t);break;case typeof t==="symbol"||typeof t==="bigint":n=Object(t);break;case a.isPrimitive(t):n=new t.constructor(t);break;default:n=t;break}return n}n.addNonEnumerableProperty=addNonEnumerableProperty;n.convertToPlainObject=convertToPlainObject;n.dropUndefinedKeys=dropUndefinedKeys;n.extractExceptionKeysForMessage=extractExceptionKeysForMessage;n.fill=fill;n.getOriginalFunction=getOriginalFunction;n.markFunctionWrapped=markFunctionWrapped;n.objectify=objectify;n.urlEncode=urlEncode},3833:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function normalizeArray(t,n){let o=0;for(let n=t.length-1;n>=0;n--){const r=t[n];if(r==="."){t.splice(n,1)}else if(r===".."){t.splice(n,1);o++}else if(o){t.splice(n,1);o--}}if(n){for(;o--;o){t.unshift("..")}}return t}const o=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function splitPath(t){const n=t.length>1024?`<truncated>${t.slice(-1024)}`:t;const r=o.exec(n);return r?r.slice(1):[]}function resolve(...t){let n="";let o=false;for(let r=t.length-1;r>=-1&&!o;r--){const i=r>=0?t[r]:"/";if(!i){continue}n=`${i}/${n}`;o=i.charAt(0)==="/"}n=normalizeArray(n.split("/").filter(t=>!!t),!o).join("/");return(o?"/":"")+n||"."}function trim(t){let n=0;for(;n<t.length;n++){if(t[n]!==""){break}}let o=t.length-1;for(;o>=0;o--){if(t[o]!==""){break}}if(n>o){return[]}return t.slice(n,o-n+1)}function relative(t,n){t=resolve(t).slice(1);n=resolve(n).slice(1);const o=trim(t.split("/"));const r=trim(n.split("/"));const i=Math.min(o.length,r.length);let a=i;for(let t=0;t<i;t++){if(o[t]!==r[t]){a=t;break}}let c=[];for(let t=a;t<o.length;t++){c.push("..")}c=c.concat(r.slice(a));return c.join("/")}function normalizePath(t){const n=isAbsolute(t);const o=t.slice(-1)==="/";let r=normalizeArray(t.split("/").filter(t=>!!t),!n).join("/");if(!r&&!n){r="."}if(r&&o){r+="/"}return(n?"/":"")+r}function isAbsolute(t){return t.charAt(0)==="/"}function join(...t){return normalizePath(t.join("/"))}function dirname(t){const n=splitPath(t);const o=n[0];let r=n[1];if(!o&&!r){return"."}if(r){r=r.slice(0,r.length-1)}return o+r}function basename(t,n){let o=splitPath(t)[2];if(n&&o.slice(n.length*-1)===n){o=o.slice(0,o.length-n.length)}return o}n.basename=basename;n.dirname=dirname;n.isAbsolute=isAbsolute;n.join=join;n.normalizePath=normalizePath;n.relative=relative;n.resolve=resolve},9875:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(2930);const i=o(2360);function makePromiseBuffer(t){const n=[];function isReady(){return t===undefined||n.length<t}function remove(t){return n.splice(n.indexOf(t),1)[0]}function add(t){if(!isReady()){return i.rejectedSyncPromise(new r.SentryError("Not adding Promise because buffer limit was reached."))}const o=t();if(n.indexOf(o)===-1){n.push(o)}void o.then(()=>remove(o)).then(null,()=>remove(o).then(null,()=>{}));return o}function drain(t){return new i.SyncPromise((o,r)=>{let a=n.length;if(!a){return o(true)}const c=setTimeout(()=>{if(t&&t>0){o(false)}},t);n.forEach(t=>{void i.resolvedSyncPromise(t).then(()=>{if(! --a){clearTimeout(c);o(true)}},r)})})}return{$:n,add:add,drain:drain}}n.makePromiseBuffer=makePromiseBuffer},1173:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=60*1e3;function parseRetryAfterHeader(t,n=Date.now()){const r=parseInt(`${t}`,10);if(!isNaN(r)){return r*1e3}const i=Date.parse(`${t}`);if(!isNaN(i)){return i-n}return o}function disabledUntil(t,n){return t[n]||t.all||0}function isRateLimited(t,n,o=Date.now()){return disabledUntil(t,n)>o}function updateRateLimits(t,{statusCode:n,headers:o},r=Date.now()){const i={...t};const a=o&&o["x-sentry-rate-limits"];const c=o&&o["retry-after"];if(a){for(const t of a.trim().split(",")){const[n,o,,,a]=t.split(":",5);const c=parseInt(n,10);const g=(!isNaN(c)?c:60)*1e3;if(!o){i.all=r+g}else{for(const t of o.split(";")){if(t==="metric_bucket"){if(!a||a.split(";").includes("custom")){i[t]=r+g}}else{i[t]=r+g}}}}}else if(c){i.all=r+parseRetryAfterHeader(c,r)}else if(n===429){i.all=r+60*1e3}return i}n.DEFAULT_RETRY_AFTER=o;n.disabledUntil=disabledUntil;n.isRateLimited=isRateLimited;n.parseRetryAfterHeader=parseRetryAfterHeader;n.updateRateLimits=updateRateLimits},7869:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5124);const i=o(4462);const a=o(1846);const c=o(9550);const g=o(7843);const l=o(1329);const d={ip:false,request:true,transaction:true,user:true};const u=["cookies","data","headers","method","query_string","url"];const I=["id","username","email"];function addRequestDataToTransaction(t,n,o){if(!t)return;if(!t.metadata.source||t.metadata.source==="url"){const[o,r]=extractPathForTransaction(n,{path:true,method:true});t.updateName(o);t.setMetadata({source:r})}t.setAttribute("url",n.originalUrl||n.url);if(n.baseUrl){t.setAttribute("baseUrl",n.baseUrl)}t.setData("query",extractQueryParams(n,o))}function extractPathForTransaction(t,n={}){const o=t.method&&t.method.toUpperCase();let r="";let i="url";if(n.customRoute||t.route){r=n.customRoute||`${t.baseUrl||""}${t.route&&t.route.path}`;i="route"}else if(t.originalUrl||t.url){r=l.stripUrlQueryAndFragment(t.originalUrl||t.url||"")}let a="";if(n.method&&o){a+=o}if(n.method&&n.path){a+=" "}if(n.path&&r){a+=r}return[a,i]}function extractTransaction(t,n){switch(n){case"path":{return extractPathForTransaction(t,{path:true})[0]}case"handler":{return t.route&&t.route.stack&&t.route.stack[0]&&t.route.stack[0].name||"<anonymous>"}case"methodPath":default:{const n=t._reconstructedRoute?t._reconstructedRoute:undefined;return extractPathForTransaction(t,{path:true,method:true,customRoute:n})[0]}}}function extractUserData(t,n){const o={};const r=Array.isArray(n)?n:I;r.forEach(n=>{if(t&&n in t){o[n]=t[n]}});return o}function extractRequestData(t,n){const{include:o=u,deps:i}=n||{};const c={};const l=t.headers||{};const d=t.method;const I=l.host||t.hostname||t.host||"<no host>";const C=t.protocol==="https"||t.socket&&t.socket.encrypted?"https":"http";const p=t.originalUrl||t.url||"";const m=p.startsWith(C)?p:`${C}://${I}${p}`;o.forEach(n=>{switch(n){case"headers":{c.headers=l;if(!o.includes("cookies")){delete c.headers.cookie}break}case"method":{c.method=d;break}case"url":{c.url=m;break}case"cookies":{c.cookies=t.cookies||l.cookie&&r.parseCookie(l.cookie)||{};break}case"query_string":{c.query_string=extractQueryParams(t,i);break}case"data":{if(d==="GET"||d==="HEAD"){break}if(t.body!==undefined){c.data=a.isString(t.body)?t.body:JSON.stringify(g.normalize(t.body))}break}default:{if({}.hasOwnProperty.call(t,n)){c[n]=t[n]}}}});return c}function addRequestDataToEvent(t,n,o){const r={...d,...o&&o.include};if(r.request){const i=Array.isArray(r.request)?extractRequestData(n,{include:r.request,deps:o&&o.deps}):extractRequestData(n,{deps:o&&o.deps});t.request={...t.request,...i}}if(r.user){const o=n.user&&a.isPlainObject(n.user)?extractUserData(n.user,r.user):{};if(Object.keys(o).length){t.user={...t.user,...o}}}if(r.ip){const o=n.ip||n.socket&&n.socket.remoteAddress;if(o){t.user={...t.user,ip_address:o}}}if(r.transaction&&!t.transaction){t.transaction=extractTransaction(n,r.transaction)}return t}function extractQueryParams(t,n){let o=t.originalUrl||t.url||"";if(!o){return}if(o.startsWith("/")){o=`http://dogs.are.great${o}`}try{return t.query||typeof URL!=="undefined"&&new URL(o).search.slice(1)||n&&n.url&&n.url.parse(o).query||undefined}catch(t){return undefined}}function winterCGHeadersToDict(t){const n={};try{t.forEach((t,o)=>{if(typeof t==="string"){n[o]=t}})}catch(t){i.DEBUG_BUILD&&c.logger.warn("Sentry failed extracting headers from a request object. If you see this, please file an issue.")}return n}function winterCGRequestToRequestData(t){const n=winterCGHeadersToDict(t.headers);return{method:t.method,url:t.url,headers:n}}n.DEFAULT_USER_INCLUDES=I;n.addRequestDataToEvent=addRequestDataToEvent;n.addRequestDataToTransaction=addRequestDataToTransaction;n.extractPathForTransaction=extractPathForTransaction;n.extractRequestData=extractRequestData;n.winterCGHeadersToDict=winterCGHeadersToDict;n.winterCGRequestToRequestData=winterCGRequestToRequestData},3013:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=["fatal","error","warning","log","info","debug"];function severityFromString(t){return severityLevelFromString(t)}function severityLevelFromString(t){return t==="warn"?"warning":o.includes(t)?t:"log"}n.severityFromString=severityFromString;n.severityLevelFromString=severityLevelFromString;n.validSeverityLevels=o},811:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4171);const i=50;const a=/\(error: (.*)\)/;const c=/captureMessage|captureException/;function createStackParser(...t){const n=t.sort((t,n)=>t[0]-n[0]).map(t=>t[1]);return(t,o=0)=>{const r=[];const c=t.split("\n");for(let t=o;t<c.length;t++){const o=c[t];if(o.length>1024){continue}const g=a.test(o)?o.replace(a,"$1"):o;if(g.match(/\S*Error: /)){continue}for(const t of n){const n=t(g);if(n){r.push(n);break}}if(r.length>=i){break}}return stripSentryFramesAndReverse(r)}}function stackParserFromStackParserOptions(t){if(Array.isArray(t)){return createStackParser(...t)}return t}function stripSentryFramesAndReverse(t){if(!t.length){return[]}const n=Array.from(t);if(/sentryWrapped/.test(n[n.length-1].function||"")){n.pop()}n.reverse();if(c.test(n[n.length-1].function||"")){n.pop();if(c.test(n[n.length-1].function||"")){n.pop()}}return n.slice(0,i).map(t=>({...t,filename:t.filename||n[n.length-1].filename,function:t.function||"?"}))}const g="<anonymous>";function getFunctionName(t){try{if(!t||typeof t!=="function"){return g}return t.name||g}catch(t){return g}}function nodeStackLineParser(t){return[90,r.node(t)]}n.filenameIsInApp=r.filenameIsInApp;n.createStackParser=createStackParser;n.getFunctionName=getFunctionName;n.nodeStackLineParser=nodeStackLineParser;n.stackParserFromStackParserOptions=stackParserFromStackParserOptions;n.stripSentryFramesAndReverse=stripSentryFramesAndReverse},1071:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1846);function truncate(t,n=0){if(typeof t!=="string"||n===0){return t}return t.length<=n?t:`${t.slice(0,n)}...`}function snipLine(t,n){let o=t;const r=o.length;if(r<=150){return o}if(n>r){n=r}let i=Math.max(n-60,0);if(i<5){i=0}let a=Math.min(i+140,r);if(a>r-5){a=r}if(a===r){i=Math.max(a-140,0)}o=o.slice(i,a);if(i>0){o=`'{snip} ${o}`}if(a<r){o+=" {snip}"}return o}function safeJoin(t,n){if(!Array.isArray(t)){return""}const o=[];for(let n=0;n<t.length;n++){const i=t[n];try{if(r.isVueViewModel(i)){o.push("[VueViewModel]")}else{o.push(String(i))}}catch(t){o.push("[value cannot be serialized]")}}return o.join(n)}function isMatchingPattern(t,n,o=false){if(!r.isString(t)){return false}if(r.isRegExp(n)){return n.test(t)}if(r.isString(n)){return o?t===n:t.includes(n)}return false}function stringMatchesSomePattern(t,n=[],o=false){return n.some(n=>isMatchingPattern(t,n,o))}n.isMatchingPattern=isMatchingPattern;n.safeJoin=safeJoin;n.snipLine=snipLine;n.stringMatchesSomePattern=stringMatchesSomePattern;n.truncate=truncate},2866:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4462);const i=o(9550);const a=o(5395);const c=a.getGlobalObject();function supportsErrorEvent(){try{new ErrorEvent("");return true}catch(t){return false}}function supportsDOMError(){try{new DOMError("");return true}catch(t){return false}}function supportsDOMException(){try{new DOMException("");return true}catch(t){return false}}function supportsFetch(){if(!("fetch"in c)){return false}try{new Headers;new Request("http://www.example.com");new Response;return true}catch(t){return false}}function isNativeFetch(t){return t&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(t.toString())}function supportsNativeFetch(){if(typeof EdgeRuntime==="string"){return true}if(!supportsFetch()){return false}if(isNativeFetch(c.fetch)){return true}let t=false;const n=c.document;if(n&&typeof n.createElement==="function"){try{const o=n.createElement("iframe");o.hidden=true;n.head.appendChild(o);if(o.contentWindow&&o.contentWindow.fetch){t=isNativeFetch(o.contentWindow.fetch)}n.head.removeChild(o)}catch(t){r.DEBUG_BUILD&&i.logger.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",t)}}return t}function supportsReportingObserver(){return"ReportingObserver"in c}function supportsReferrerPolicy(){if(!supportsFetch()){return false}try{new Request("_",{referrerPolicy:"origin"});return true}catch(t){return false}}n.isNativeFetch=isNativeFetch;n.supportsDOMError=supportsDOMError;n.supportsDOMException=supportsDOMException;n.supportsErrorEvent=supportsErrorEvent;n.supportsFetch=supportsFetch;n.supportsNativeFetch=supportsNativeFetch;n.supportsReferrerPolicy=supportsReferrerPolicy;n.supportsReportingObserver=supportsReportingObserver},2360:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1846);var i;(function(t){const n=0;t[t["PENDING"]=n]="PENDING";const o=1;t[t["RESOLVED"]=o]="RESOLVED";const r=2;t[t["REJECTED"]=r]="REJECTED"})(i||(i={}));function resolvedSyncPromise(t){return new SyncPromise(n=>{n(t)})}function rejectedSyncPromise(t){return new SyncPromise((n,o)=>{o(t)})}class SyncPromise{constructor(t){SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);this._state=i.PENDING;this._handlers=[];try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}then(t,n){return new SyncPromise((o,r)=>{this._handlers.push([false,n=>{if(!t){o(n)}else{try{o(t(n))}catch(t){r(t)}}},t=>{if(!n){r(t)}else{try{o(n(t))}catch(t){r(t)}}}]);this._executeHandlers()})}catch(t){return this.then(t=>t,t)}finally(t){return new SyncPromise((n,o)=>{let r;let i;return this.then(n=>{i=false;r=n;if(t){t()}},n=>{i=true;r=n;if(t){t()}}).then(()=>{if(i){o(r);return}n(r)})})}__init(){this._resolve=t=>{this._setResult(i.RESOLVED,t)}}__init2(){this._reject=t=>{this._setResult(i.REJECTED,t)}}__init3(){this._setResult=(t,n)=>{if(this._state!==i.PENDING){return}if(r.isThenable(n)){void n.then(this._resolve,this._reject);return}this._state=t;this._value=n;this._executeHandlers()}}__init4(){this._executeHandlers=()=>{if(this._state===i.PENDING){return}const t=this._handlers.slice();this._handlers=[];t.forEach(t=>{if(t[0]){return}if(this._state===i.RESOLVED){t[1](this._value)}if(this._state===i.REJECTED){t[2](this._value)}t[0]=true})}}}n.SyncPromise=SyncPromise;n.rejectedSyncPromise=rejectedSyncPromise;n.resolvedSyncPromise=resolvedSyncPromise},5315:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5395);const i=1e3;function dateTimestampInSeconds(){return Date.now()/i}function createUnixTimestampInSecondsFunc(){const{performance:t}=r.GLOBAL_OBJ;if(!t||!t.now){return dateTimestampInSeconds}const n=Date.now()-t.now();const o=t.timeOrigin==undefined?n:t.timeOrigin;return()=>(o+t.now())/i}const a=createUnixTimestampInSecondsFunc();const c=a;n._browserPerformanceTimeOriginMode=void 0;const g=(()=>{const{performance:t}=r.GLOBAL_OBJ;if(!t||!t.now){n._browserPerformanceTimeOriginMode="none";return undefined}const o=3600*1e3;const i=t.now();const a=Date.now();const c=t.timeOrigin?Math.abs(t.timeOrigin+i-a):o;const g=c<o;const l=t.timing&&t.timing.navigationStart;const d=typeof l==="number";const u=d?Math.abs(l+i-a):o;const I=u<o;if(g||I){if(c<=u){n._browserPerformanceTimeOriginMode="timeOrigin";return t.timeOrigin}else{n._browserPerformanceTimeOriginMode="navigationStart";return l}}n._browserPerformanceTimeOriginMode="dateNow";return a})();n.browserPerformanceTimeOrigin=g;n.dateTimestampInSeconds=dateTimestampInSeconds;n.timestampInSeconds=a;n.timestampWithMs=c},1970:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4486);const i=o(7562);const a=new RegExp("^[ \\t]*"+"([0-9a-f]{32})?"+"-?([0-9a-f]{16})?"+"-?([01])?"+"[ \\t]*$");function extractTraceparentData(t){if(!t){return undefined}const n=t.match(a);if(!n){return undefined}let o;if(n[3]==="1"){o=true}else if(n[3]==="0"){o=false}return{traceId:n[1],parentSampled:o,parentSpanId:n[2]}}function tracingContextFromHeaders(t,n){const o=extractTraceparentData(t);const a=r.baggageHeaderToDynamicSamplingContext(n);const{traceId:c,parentSpanId:g,parentSampled:l}=o||{};if(!o){return{traceparentData:o,dynamicSamplingContext:undefined,propagationContext:{traceId:c||i.uuid4(),spanId:i.uuid4().substring(16)}}}else{return{traceparentData:o,dynamicSamplingContext:a||{},propagationContext:{traceId:c||i.uuid4(),parentSpanId:g||i.uuid4().substring(16),spanId:i.uuid4().substring(16),sampled:l,dsc:a||{}}}}}function propagationContextFromHeaders(t,n){const o=extractTraceparentData(t);const a=r.baggageHeaderToDynamicSamplingContext(n);const{traceId:c,parentSpanId:g,parentSampled:l}=o||{};if(!o){return{traceId:c||i.uuid4(),spanId:i.uuid4().substring(16)}}else{return{traceId:c||i.uuid4(),parentSpanId:g||i.uuid4().substring(16),spanId:i.uuid4().substring(16),sampled:l,dsc:a||{}}}}function generateSentryTraceHeader(t=i.uuid4(),n=i.uuid4().substring(16),o){let r="";if(o!==undefined){r=o?"-1":"-0"}return`${t}-${n}${r}`}n.TRACEPARENT_REGEXP=a;n.extractTraceparentData=extractTraceparentData;n.generateSentryTraceHeader=generateSentryTraceHeader;n.propagationContextFromHeaders=propagationContextFromHeaders;n.tracingContextFromHeaders=tracingContextFromHeaders},1329:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function parseUrl(t){if(!t){return{}}const n=t.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!n){return{}}const o=n[6]||"";const r=n[8]||"";return{host:n[4],path:n[5],protocol:n[2],search:o,hash:r,relative:n[5]+o+r}}function stripUrlQueryAndFragment(t){return t.split(/[\?#]/,1)[0]}function getNumberOfUrlSegments(t){return t.split(/\\?\//).filter(t=>t.length>0&&t!==",").length}function getSanitizedUrlString(t){const{protocol:n,host:o,path:r}=t;const i=o&&o.replace(/^.*@/,"[filtered]:[filtered]@").replace(/(:80)$/,"").replace(/(:443)$/,"")||"";return`${n?`${n}://`:""}${i}${r}`}n.getNumberOfUrlSegments=getNumberOfUrlSegments;n.getSanitizedUrlString=getSanitizedUrlString;n.parseUrl=parseUrl;n.stripUrlQueryAndFragment=stripUrlQueryAndFragment},590:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function setNestedKey(t,n,o){const r=n.match(/([a-z_]+)\.(.*)/i);if(r===null){t[n]=o}else{const n=t[r[1]];setNestedKey(n,r[2],o)}}function addOrUpdateIntegration(t,n,o={}){return Array.isArray(n)?addOrUpdateIntegrationInArray(t,n,o):addOrUpdateIntegrationInFunction(t,n,o)}function addOrUpdateIntegrationInArray(t,n,o){const r=n.find(n=>n.name===t.name);if(r){for(const[t,n]of Object.entries(o)){setNestedKey(r,t,n)}return n}return[...n,t]}function addOrUpdateIntegrationInFunction(t,n,o){const wrapper=r=>{const i=n(r);if(t.allowExclusionByUser){const n=i.find(n=>n.name===t.name);if(!n){return i}}return addOrUpdateIntegrationInArray(t,i,o)};return wrapper}n.addOrUpdateIntegration=addOrUpdateIntegration},9043:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function escapeStringForRegex(t){return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}n.escapeStringForRegex=escapeStringForRegex},3047:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(5395);const i=r.getGlobalObject();function supportsHistory(){const t=i.chrome;const n=t&&t.app&&t.app.runtime;const o="history"in i&&!!i.history.pushState&&!!i.history.replaceState;return!n&&o}n.supportsHistory=supportsHistory},5395:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isGlobalObj(t){return t&&t.Math==Math?t:undefined}const o=typeof globalThis=="object"&&isGlobalObj(globalThis)||typeof window=="object"&&isGlobalObj(window)||typeof self=="object"&&isGlobalObj(self)||typeof global=="object"&&isGlobalObj(global)||function(){return this}()||{};function getGlobalObject(){return o}function getGlobalSingleton(t,n,r){const i=r||o;const a=i.__SENTRY__=i.__SENTRY__||{};const c=a[t]||(a[t]=n());return c}n.GLOBAL_OBJ=o;n.getGlobalObject=getGlobalObject;n.getGlobalSingleton=getGlobalSingleton},414:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(5472);const c=o(1884);function registerBackgroundTabDetection(){if(c.WINDOW.document){c.WINDOW.document.addEventListener("visibilitychange",()=>{const t=r.getActiveTransaction();if(c.WINDOW.document.hidden&&t){const n="cancelled";const{op:o,status:c}=r.spanToJSON(t);a.DEBUG_BUILD&&i.logger.log(`[Tracing] Transaction: ${n} -> since tab moved to the background, op: ${o}`);if(!c){t.setStatus(n)}t.setTag("visibilitychange","document.hidden");t.end()}})}else{a.DEBUG_BUILD&&i.logger.warn("[Tracing] Could not set up background tab detection due to lack of global document")}}n.registerBackgroundTabDetection=registerBackgroundTabDetection},6157:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(5472);const c=o(414);const g=o(2516);const l=o(5703);const d=o(3312);const u=o(1884);const I="BrowserTracing";const C={...r.TRACING_DEFAULTS,instrumentNavigation:true,instrumentPageLoad:true,markBackgroundSpan:true,enableLongTask:true,enableInp:false,interactionsSampleRate:1,_experiments:{},...d.defaultRequestInstrumentationOptions};const browserTracingIntegration=(t={})=>{const n=a.DEBUG_BUILD?!!(t.tracePropagationTargets||t.tracingOrigins):false;r.addTracingExtensions();if(!t.tracePropagationTargets&&t.tracingOrigins){t.tracePropagationTargets=t.tracingOrigins}const o={...C,...t};const g=l.startTrackingWebVitals();const p={};if(o.enableInp){l.startTrackingINP(p,o.interactionsSampleRate)}if(o.enableLongTask){l.startTrackingLongTasks()}if(o._experiments.enableInteractions){l.startTrackingInteractions()}const m={name:undefined,context:undefined};function _createRouteTransaction(t){const n=r.getCurrentHub();const{beforeStartSpan:c,idleTimeout:d,finalTimeout:I,heartbeatInterval:C}=o;const p=t.op==="pageload";let b;if(p){const n=p?getMetaContent("sentry-trace"):"";const o=p?getMetaContent("baggage"):undefined;const{traceId:r,dsc:a,parentSpanId:c,sampled:g}=i.propagationContextFromHeaders(n,o);b={traceId:r,parentSpanId:c,parentSampled:g,...t,metadata:{...t.metadata,dynamicSamplingContext:a},trimEnd:true}}else{b={trimEnd:true,...t}}const h=c?c(b):b;h.metadata=h.name!==b.name?{...h.metadata,source:"custom"}:h.metadata;m.name=h.name;m.context=h;if(h.sampled===false){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Will not send ${h.op} transaction because of beforeNavigate.`)}a.DEBUG_BUILD&&i.logger.log(`[Tracing] Starting ${h.op} transaction on scope`);const{location:G}=u.WINDOW;const Z=r.startIdleTransaction(n,h,d,I,true,{location:G},C,p);if(p&&u.WINDOW.document){u.WINDOW.document.addEventListener("readystatechange",()=>{if(["interactive","complete"].includes(u.WINDOW.document.readyState)){Z.sendAutoFinishSignal()}});if(["interactive","complete"].includes(u.WINDOW.document.readyState)){Z.sendAutoFinishSignal()}}Z.registerBeforeFinishCallback(t=>{g();l.addPerformanceEntries(t)});return Z}return{name:I,setupOnce:()=>{},afterAllSetup(t){const g=t.getOptions();const{markBackgroundSpan:l,traceFetch:I,traceXHR:C,shouldCreateSpanForRequest:b,enableHTTPTimings:h,_experiments:G}=o;const Z=g&&g.tracePropagationTargets;const B=Z||o.tracePropagationTargets;if(a.DEBUG_BUILD&&n&&Z){i.logger.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.")}let A;let y=u.WINDOW.location&&u.WINDOW.location.href;if(t.on){t.on("startNavigationSpan",t=>{if(A){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Finishing current transaction with op: ${r.spanToJSON(A).op}`);A.end()}A=_createRouteTransaction({op:"navigation",...t})});t.on("startPageLoadSpan",t=>{if(A){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Finishing current transaction with op: ${r.spanToJSON(A).op}`);A.end()}A=_createRouteTransaction({op:"pageload",...t})})}if(o.instrumentPageLoad&&t.emit&&u.WINDOW.location){const n={name:u.WINDOW.location.pathname,startTimestamp:i.browserPerformanceTimeOrigin?i.browserPerformanceTimeOrigin/1e3:undefined,origin:"auto.pageload.browser",attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"}};startBrowserTracingPageLoadSpan(t,n)}if(o.instrumentNavigation&&t.emit&&u.WINDOW.location){i.addHistoryInstrumentationHandler(({to:n,from:o})=>{if(o===undefined&&y&&y.indexOf(n)!==-1){y=undefined;return}if(o!==n){y=undefined;const n={name:u.WINDOW.location.pathname,origin:"auto.navigation.browser",attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"}};startBrowserTracingNavigationSpan(t,n)}})}if(l){c.registerBackgroundTabDetection()}if(G.enableInteractions){registerInteractionListener(o,m)}if(o.enableInp){registerInpInteractionListener(p,m)}d.instrumentOutgoingRequests({traceFetch:I,traceXHR:C,tracePropagationTargets:B,shouldCreateSpanForRequest:b,enableHTTPTimings:h})},options:o}};function startBrowserTracingPageLoadSpan(t,n){if(!t.emit){return}t.emit("startPageLoadSpan",n);const o=r.getActiveSpan();const i=o&&r.spanToJSON(o).op;return i==="pageload"?o:undefined}function startBrowserTracingNavigationSpan(t,n){if(!t.emit){return}t.emit("startNavigationSpan",n);const o=r.getActiveSpan();const i=o&&r.spanToJSON(o).op;return i==="navigation"?o:undefined}function getMetaContent(t){const n=i.getDomElement(`meta[name=${t}]`);return n?n.getAttribute("content"):undefined}function registerInteractionListener(t,n){let o;const registerInteractionTransaction=()=>{const{idleTimeout:c,finalTimeout:g,heartbeatInterval:l}=t;const d="ui.action.click";const I=r.getActiveTransaction();if(I&&I.op&&["navigation","pageload"].includes(I.op)){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${d} transaction because a pageload or navigation transaction is in progress.`);return undefined}if(o){o.setFinishReason("interactionInterrupted");o.end();o=undefined}if(!n.name){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${d} transaction because _latestRouteName is missing.`);return undefined}const{location:C}=u.WINDOW;const p={name:n.name,op:d,trimEnd:true,data:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:n.context?getSource(n.context):"url"}};o=r.startIdleTransaction(r.getCurrentHub(),p,c,g,true,{location:C},l)};["click"].forEach(t=>{if(u.WINDOW.document){addEventListener(t,registerInteractionTransaction,{once:false,capture:true})}})}function isPerformanceEventTiming(t){return"duration"in t}const p=10;function registerInpInteractionListener(t,n){const handleEntries=({entries:o})=>{const i=r.getClient();const a=i!==undefined&&i.getIntegrationByName!==undefined?i.getIntegrationByName("Replay"):undefined;const c=a!==undefined?a.getReplayId():undefined;const g=r.getActiveTransaction();const l=r.getCurrentScope();const d=l!==undefined?l.getUser():undefined;o.forEach(o=>{if(isPerformanceEventTiming(o)){const r=o.interactionId;if(r===undefined){return}const i=t[r];const a=o.duration;const l=o.startTime;const u=Object.keys(t);const I=u.length>0?u.reduce((n,o)=>t[n].duration<t[o].duration?n:o):undefined;if(o.entryType==="first-input"){const n=u.map(n=>t[n]).some(t=>t.duration===a&&t.startTime===l);if(n){return}}if(!r){return}if(i){i.duration=Math.max(i.duration,a)}else if(u.length<p||I===undefined||a>t[I].duration){const o=n.name;const i=n.context;if(o&&i){if(I&&Object.keys(t).length>=p){delete t[I]}t[r]={routeName:o,duration:a,parentContext:i,user:d,activeTransaction:g,replayId:c,startTime:l}}}}})};g.addPerformanceInstrumentationHandler("event",handleEntries);g.addPerformanceInstrumentationHandler("first-input",handleEntries)}function getSource(t){const n=t.attributes&&t.attributes[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const o=t.data&&t.data[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const i=t.metadata&&t.metadata.source;return n||o||i}n.BROWSER_TRACING_INTEGRATION_ID=I;n.browserTracingIntegration=browserTracingIntegration;n.getMetaContent=getMetaContent;n.startBrowserTracingNavigationSpan=startBrowserTracingNavigationSpan;n.startBrowserTracingPageLoadSpan=startBrowserTracingPageLoadSpan},7255:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(5472);const c=o(414);const g=o(2516);const l=o(5703);const d=o(3312);const u=o(5436);const I=o(1884);const C="BrowserTracing";const p={...r.TRACING_DEFAULTS,markBackgroundTransactions:true,routingInstrumentation:u.instrumentRoutingWithDefaults,startTransactionOnLocationChange:true,startTransactionOnPageLoad:true,enableLongTask:true,enableInp:false,interactionsSampleRate:1,_experiments:{},...d.defaultRequestInstrumentationOptions};const m=10;class BrowserTracing{constructor(t){this.name=C;this._hasSetTracePropagationTargets=false;r.addTracingExtensions();if(a.DEBUG_BUILD){this._hasSetTracePropagationTargets=!!(t&&(t.tracePropagationTargets||t.tracingOrigins))}this.options={...p,...t};if(this.options._experiments.enableLongTask!==undefined){this.options.enableLongTask=this.options._experiments.enableLongTask}if(t&&!t.tracePropagationTargets&&t.tracingOrigins){this.options.tracePropagationTargets=t.tracingOrigins}this._collectWebVitals=l.startTrackingWebVitals();this._interactionIdToRouteNameMapping={};if(this.options.enableInp){l.startTrackingINP(this._interactionIdToRouteNameMapping,this.options.interactionsSampleRate)}if(this.options.enableLongTask){l.startTrackingLongTasks()}if(this.options._experiments.enableInteractions){l.startTrackingInteractions()}this._latestRoute={name:undefined,context:undefined}}setupOnce(t,n){this._getCurrentHub=n;const o=n();const r=o.getClient();const g=r&&r.getOptions();const{routingInstrumentation:l,startTransactionOnLocationChange:u,startTransactionOnPageLoad:I,markBackgroundTransactions:C,traceFetch:p,traceXHR:m,shouldCreateSpanForRequest:b,enableHTTPTimings:h,_experiments:G}=this.options;const Z=g&&g.tracePropagationTargets;const B=Z||this.options.tracePropagationTargets;if(a.DEBUG_BUILD&&this._hasSetTracePropagationTargets&&Z){i.logger.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.")}l(t=>{const o=this._createRouteTransaction(t);this.options._experiments.onStartRouteTransaction&&this.options._experiments.onStartRouteTransaction(o,t,n);return o},I,u);if(C){c.registerBackgroundTabDetection()}if(G.enableInteractions){this._registerInteractionListener()}if(this.options.enableInp){this._registerInpInteractionListener()}d.instrumentOutgoingRequests({traceFetch:p,traceXHR:m,tracePropagationTargets:B,shouldCreateSpanForRequest:b,enableHTTPTimings:h})}_createRouteTransaction(t){if(!this._getCurrentHub){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${t.op} transaction because _getCurrentHub is invalid.`);return undefined}const n=this._getCurrentHub();const{beforeNavigate:o,idleTimeout:c,finalTimeout:g,heartbeatInterval:d}=this.options;const u=t.op==="pageload";let C;if(u){const n=u?getMetaContent("sentry-trace"):"";const o=u?getMetaContent("baggage"):undefined;const{traceId:r,dsc:a,parentSpanId:c,sampled:g}=i.propagationContextFromHeaders(n,o);C={traceId:r,parentSpanId:c,parentSampled:g,...t,metadata:{...t.metadata,dynamicSamplingContext:a},trimEnd:true}}else{C={trimEnd:true,...t}}const p=typeof o==="function"?o(C):C;const m=p===undefined?{...C,sampled:false}:p;m.metadata=m.name!==C.name?{...m.metadata,source:"custom"}:m.metadata;this._latestRoute.name=m.name;this._latestRoute.context=m;if(m.sampled===false){a.DEBUG_BUILD&&i.logger.log(`[Tracing] Will not send ${m.op} transaction because of beforeNavigate.`)}a.DEBUG_BUILD&&i.logger.log(`[Tracing] Starting ${m.op} transaction on scope`);const{location:b}=I.WINDOW;const h=r.startIdleTransaction(n,m,c,g,true,{location:b},d,u);if(u){if(I.WINDOW.document){I.WINDOW.document.addEventListener("readystatechange",()=>{if(["interactive","complete"].includes(I.WINDOW.document.readyState)){h.sendAutoFinishSignal()}});if(["interactive","complete"].includes(I.WINDOW.document.readyState)){h.sendAutoFinishSignal()}}}h.registerBeforeFinishCallback(t=>{this._collectWebVitals();l.addPerformanceEntries(t)});return h}_registerInteractionListener(){let t;const registerInteractionTransaction=()=>{const{idleTimeout:n,finalTimeout:o,heartbeatInterval:c}=this.options;const g="ui.action.click";const l=r.getActiveTransaction();if(l&&l.op&&["navigation","pageload"].includes(l.op)){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${g} transaction because a pageload or navigation transaction is in progress.`);return undefined}if(t){t.setFinishReason("interactionInterrupted");t.end();t=undefined}if(!this._getCurrentHub){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${g} transaction because _getCurrentHub is invalid.`);return undefined}if(!this._latestRoute.name){a.DEBUG_BUILD&&i.logger.warn(`[Tracing] Did not create ${g} transaction because _latestRouteName is missing.`);return undefined}const d=this._getCurrentHub();const{location:u}=I.WINDOW;const C={name:this._latestRoute.name,op:g,trimEnd:true,data:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:this._latestRoute.context?getSource(this._latestRoute.context):"url"}};t=r.startIdleTransaction(d,C,n,o,true,{location:u},c)};["click"].forEach(t=>{if(I.WINDOW.document){addEventListener(t,registerInteractionTransaction,{once:false,capture:true})}})}_registerInpInteractionListener(){const handleEntries=({entries:t})=>{const n=r.getClient();const o=n!==undefined&&n.getIntegrationByName!==undefined?n.getIntegrationByName("Replay"):undefined;const i=o!==undefined?o.getReplayId():undefined;const a=r.getActiveTransaction();const c=r.getCurrentScope();const g=c!==undefined?c.getUser():undefined;t.forEach(t=>{if(isPerformanceEventTiming(t)){const n=t.interactionId;if(n===undefined){return}const o=this._interactionIdToRouteNameMapping[n];const r=t.duration;const c=t.startTime;const l=Object.keys(this._interactionIdToRouteNameMapping);const d=l.length>0?l.reduce((t,n)=>this._interactionIdToRouteNameMapping[t].duration<this._interactionIdToRouteNameMapping[n].duration?t:n):undefined;if(t.entryType==="first-input"){const t=l.map(t=>this._interactionIdToRouteNameMapping[t]).some(t=>t.duration===r&&t.startTime===c);if(t){return}}if(!n){return}if(o){o.duration=Math.max(o.duration,r)}else if(l.length<m||d===undefined||r>this._interactionIdToRouteNameMapping[d].duration){const t=this._latestRoute.name;const o=this._latestRoute.context;if(t&&o){if(d&&Object.keys(this._interactionIdToRouteNameMapping).length>=m){delete this._interactionIdToRouteNameMapping[d]}this._interactionIdToRouteNameMapping[n]={routeName:t,duration:r,parentContext:o,user:g,activeTransaction:a,replayId:i,startTime:c}}}}})};g.addPerformanceInstrumentationHandler("event",handleEntries);g.addPerformanceInstrumentationHandler("first-input",handleEntries)}}function getMetaContent(t){const n=i.getDomElement(`meta[name=${t}]`);return n?n.getAttribute("content"):undefined}function getSource(t){const n=t.attributes&&t.attributes[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const o=t.data&&t.data[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];const i=t.metadata&&t.metadata.source;return n||o||i}function isPerformanceEventTiming(t){return"duration"in t}n.BROWSER_TRACING_INTEGRATION_ID=C;n.BrowserTracing=BrowserTracing;n.getMetaContent=getMetaContent},2516:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(5472);const a=o(6434);const c=o(2977);const g=o(4779);const l=o(3701);const d=o(4296);const u=o(2255);const I={};const C={};let p;let m;let b;let h;let G;function addClsInstrumentationHandler(t,n=false){return addMetricObserver("cls",t,instrumentCls,p,n)}function addLcpInstrumentationHandler(t,n=false){return addMetricObserver("lcp",t,instrumentLcp,b,n)}function addTtfbInstrumentationHandler(t){return addMetricObserver("ttfb",t,instrumentTtfb,h)}function addFidInstrumentationHandler(t){return addMetricObserver("fid",t,instrumentFid,m)}function addInpInstrumentationHandler(t){return addMetricObserver("inp",t,instrumentInp,G)}function addPerformanceInstrumentationHandler(t,n){addHandler(t,n);if(!C[t]){instrumentPerformanceObserver(t);C[t]=true}return getCleanupCallback(t,n)}function triggerHandlers(t,n){const o=I[t];if(!o||!o.length){return}for(const a of o){try{a(n)}catch(n){i.DEBUG_BUILD&&r.logger.error(`Error while triggering instrumentation handler.\nType: ${t}\nName: ${r.getFunctionName(a)}\nError:`,n)}}}function instrumentCls(){return a.onCLS(t=>{triggerHandlers("cls",{metric:t});p=t},{reportAllChanges:true})}function instrumentFid(){return c.onFID(t=>{triggerHandlers("fid",{metric:t});m=t})}function instrumentLcp(){return l.onLCP(t=>{triggerHandlers("lcp",{metric:t});b=t})}function instrumentTtfb(){return u.onTTFB(t=>{triggerHandlers("ttfb",{metric:t});h=t})}function instrumentInp(){return g.onINP(t=>{triggerHandlers("inp",{metric:t});G=t})}function addMetricObserver(t,n,o,r,i=false){addHandler(t,n);let a;if(!C[t]){a=o();C[t]=true}if(r){n({metric:r})}return getCleanupCallback(t,n,i?a:undefined)}function instrumentPerformanceObserver(t){const n={};if(t==="event"){n.durationThreshold=0}d.observe(t,n=>{triggerHandlers(t,{entries:n})},n)}function addHandler(t,n){I[t]=I[t]||[];I[t].push(n)}function getCleanupCallback(t,n,o){return()=>{if(o){o()}const r=I[t];if(!r){return}const i=r.indexOf(n);if(i!==-1){r.splice(i,1)}}}n.addClsInstrumentationHandler=addClsInstrumentationHandler;n.addFidInstrumentationHandler=addFidInstrumentationHandler;n.addInpInstrumentationHandler=addInpInstrumentationHandler;n.addLcpInstrumentationHandler=addLcpInstrumentationHandler;n.addPerformanceInstrumentationHandler=addPerformanceInstrumentationHandler;n.addTtfbInstrumentationHandler=addTtfbInstrumentationHandler},5703:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(5472);const c=o(2516);const g=o(1884);const l=o(2642);const d=o(9762);const u=o(3904);const I=2147483647;function msToSec(t){return t/1e3}function getBrowserPerformanceAPI(){return g.WINDOW&&g.WINDOW.addEventListener&&g.WINDOW.performance}let C=0;let p={};let m;let b;function startTrackingWebVitals(){const t=getBrowserPerformanceAPI();if(t&&i.browserPerformanceTimeOrigin){if(t.mark){g.WINDOW.performance.mark("sentry-tracing-init")}const n=_trackFID();const o=_trackCLS();const r=_trackLCP();const i=_trackTtfb();return()=>{n();o();r();i()}}return()=>undefined}function startTrackingLongTasks(){c.addPerformanceInstrumentationHandler("longtask",({entries:t})=>{for(const n of t){const t=r.getActiveTransaction();if(!t){return}const o=msToSec(i.browserPerformanceTimeOrigin+n.startTime);const a=msToSec(n.duration);t.startChild({description:"Main UI thread blocked",op:"ui.long-task",origin:"auto.ui.browser.metrics",startTimestamp:o,endTimestamp:o+a})}})}function startTrackingInteractions(){c.addPerformanceInstrumentationHandler("event",({entries:t})=>{for(const n of t){const t=r.getActiveTransaction();if(!t){return}if(n.name==="click"){const o=msToSec(i.browserPerformanceTimeOrigin+n.startTime);const r=msToSec(n.duration);const a={description:i.htmlTreeAsString(n.target),op:`ui.interaction.${n.name}`,origin:"auto.ui.browser.metrics",startTimestamp:o,endTimestamp:o+r};const c=i.getComponentName(n.target);if(c){a.attributes={"ui.component_name":c}}t.startChild(a)}}})}function startTrackingINP(t,n){const o=getBrowserPerformanceAPI();if(o&&i.browserPerformanceTimeOrigin){const o=_trackINP(t,n);return()=>{o()}}return()=>undefined}function _trackCLS(){return c.addClsInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding CLS");p["cls"]={value:t.value,unit:""};b=n},true)}function _trackLCP(){return c.addLcpInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding LCP");p["lcp"]={value:t.value,unit:"millisecond"};m=n},true)}function _trackFID(){return c.addFidInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}const o=msToSec(i.browserPerformanceTimeOrigin);const r=msToSec(n.startTime);a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding FID");p["fid"]={value:t.value,unit:"millisecond"};p["mark.fid"]={value:o+r,unit:"second"}})}function _trackTtfb(){return c.addTtfbInstrumentationHandler(({metric:t})=>{const n=t.entries[t.entries.length-1];if(!n){return}a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding TTFB");p["ttfb"]={value:t.value,unit:"millisecond"}})}const h={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"};function _trackINP(t,n){return c.addInpInstrumentationHandler(({metric:o})=>{if(o.value===undefined){return}const c=o.entries.find(t=>t.duration===o.value&&h[t.name]!==undefined);const g=r.getClient();if(!c||!g){return}const l=h[c.name];const d=g.getOptions();const u=msToSec(i.browserPerformanceTimeOrigin+c.startTime);const I=msToSec(o.value);const C=c.interactionId!==undefined?t[c.interactionId]:undefined;if(C===undefined){return}const{routeName:p,parentContext:m,activeTransaction:b,user:G,replayId:Z}=C;const B=G!==undefined?G.email||G.id||G.ip_address:undefined;const A=b!==undefined?b.getProfileId():undefined;const y=new r.Span({startTimestamp:u,endTimestamp:u+I,op:`ui.interaction.${l}`,name:i.htmlTreeAsString(c.target),attributes:{release:d.release,environment:d.environment,transaction:p,...B!==undefined&&B!==""?{user:B}:{},...A!==undefined?{profile_id:A}:{},...Z!==undefined?{replay_id:Z}:{}},exclusiveTime:o.value,measurements:{inp:{value:o.value,unit:"millisecond"}}});const f=getSampleRate(m,d,n);if(!f){return}if(Math.random()<f){const t=y?r.createSpanEnvelope([y],g.getDsn()):undefined;const n=g&&g.getTransport();if(n&&t){n.send(t).then(null,t=>{a.DEBUG_BUILD&&i.logger.error("Error while sending interaction:",t)})}return}})}function addPerformanceEntries(t){const n=getBrowserPerformanceAPI();if(!n||!g.WINDOW.performance.getEntries||!i.browserPerformanceTimeOrigin){return}a.DEBUG_BUILD&&i.logger.log("[Tracing] Adding & adjusting spans using Performance API");const o=msToSec(i.browserPerformanceTimeOrigin);const c=n.getEntries();const{op:u,start_timestamp:I}=r.spanToJSON(t);c.slice(C).forEach(n=>{const r=msToSec(n.startTime);const c=msToSec(n.duration);if(t.op==="navigation"&&I&&o+r<I){return}switch(n.entryType){case"navigation":{_addNavigationSpans(t,n,o);break}case"mark":case"paint":case"measure":{_addMeasureSpans(t,n,r,c,o);const g=l.getVisibilityWatcher();const d=n.startTime<g.firstHiddenTime;if(n.name==="first-paint"&&d){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding FP");p["fp"]={value:n.startTime,unit:"millisecond"}}if(n.name==="first-contentful-paint"&&d){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding FCP");p["fcp"]={value:n.startTime,unit:"millisecond"}}break}case"resource":{_addResourceSpans(t,n,n.name,r,c,o);break}}});C=Math.max(c.length-1,0);_trackNavigator(t);if(u==="pageload"){_addTtfbRequestTimeToMeasurements(p);["fcp","fp","lcp"].forEach(t=>{if(!p[t]||!I||o>=I){return}const n=p[t].value;const r=o+msToSec(n);const c=Math.abs((r-I)*1e3);const g=c-n;a.DEBUG_BUILD&&i.logger.log(`[Measurements] Normalized ${t} from ${n} to ${c} (${g})`);p[t].value=c});const n=p["mark.fid"];if(n&&p["fid"]){d._startChild(t,{description:"first input delay",endTimestamp:n.value+msToSec(p["fid"].value),op:"ui.action",origin:"auto.ui.browser.metrics",startTimestamp:n.value});delete p["mark.fid"]}if(!("fcp"in p)){delete p.cls}Object.keys(p).forEach(t=>{r.setMeasurement(t,p[t].value,p[t].unit)});_tagMetricInfo(t)}m=undefined;b=undefined;p={}}function _addMeasureSpans(t,n,o,r,i){const a=i+o;const c=a+r;d._startChild(t,{description:n.name,endTimestamp:c,op:n.entryType,origin:"auto.resource.browser.metrics",startTimestamp:a});return a}function _addNavigationSpans(t,n,o){["unloadEvent","redirect","domContentLoadedEvent","loadEvent","connect"].forEach(r=>{_addPerformanceNavigationTiming(t,n,r,o)});_addPerformanceNavigationTiming(t,n,"secureConnection",o,"TLS/SSL","connectEnd");_addPerformanceNavigationTiming(t,n,"fetch",o,"cache","domainLookupStart");_addPerformanceNavigationTiming(t,n,"domainLookup",o,"DNS");_addRequest(t,n,o)}function _addPerformanceNavigationTiming(t,n,o,r,i,a){const c=a?n[a]:n[`${o}End`];const g=n[`${o}Start`];if(!g||!c){return}d._startChild(t,{op:"browser",origin:"auto.browser.browser.metrics",description:i||o,startTimestamp:r+msToSec(g),endTimestamp:r+msToSec(c)})}function _addRequest(t,n,o){if(n.responseEnd){d._startChild(t,{op:"browser",origin:"auto.browser.browser.metrics",description:"request",startTimestamp:o+msToSec(n.requestStart),endTimestamp:o+msToSec(n.responseEnd)});d._startChild(t,{op:"browser",origin:"auto.browser.browser.metrics",description:"response",startTimestamp:o+msToSec(n.responseStart),endTimestamp:o+msToSec(n.responseEnd)})}}function _addResourceSpans(t,n,o,r,a,c){if(n.initiatorType==="xmlhttprequest"||n.initiatorType==="fetch"){return}const l=i.parseUrl(o);const u={};setResourceEntrySizeData(u,n,"transferSize","http.response_transfer_size");setResourceEntrySizeData(u,n,"encodedBodySize","http.response_content_length");setResourceEntrySizeData(u,n,"decodedBodySize","http.decoded_response_content_length");if("renderBlockingStatus"in n){u["resource.render_blocking_status"]=n.renderBlockingStatus}if(l.protocol){u["url.scheme"]=l.protocol.split(":").pop()}if(l.host){u["server.address"]=l.host}u["url.same_origin"]=o.includes(g.WINDOW.location.origin);const I=c+r;const C=I+a;d._startChild(t,{description:o.replace(g.WINDOW.location.origin,""),endTimestamp:C,op:n.initiatorType?`resource.${n.initiatorType}`:"resource.other",origin:"auto.resource.browser.metrics",startTimestamp:I,data:u})}function _trackNavigator(t){const n=g.WINDOW.navigator;if(!n){return}const o=n.connection;if(o){if(o.effectiveType){t.setTag("effectiveConnectionType",o.effectiveType)}if(o.type){t.setTag("connectionType",o.type)}if(d.isMeasurementValue(o.rtt)){p["connection.rtt"]={value:o.rtt,unit:"millisecond"}}}if(d.isMeasurementValue(n.deviceMemory)){t.setTag("deviceMemory",`${n.deviceMemory} GB`)}if(d.isMeasurementValue(n.hardwareConcurrency)){t.setTag("hardwareConcurrency",String(n.hardwareConcurrency))}}function _tagMetricInfo(t){if(m){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding LCP Data");if(m.element){t.setTag("lcp.element",i.htmlTreeAsString(m.element))}if(m.id){t.setTag("lcp.id",m.id)}if(m.url){t.setTag("lcp.url",m.url.trim().slice(0,200))}t.setTag("lcp.size",m.size)}if(b&&b.sources){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding CLS Data");b.sources.forEach((n,o)=>t.setTag(`cls.source.${o+1}`,i.htmlTreeAsString(n.node)))}}function setResourceEntrySizeData(t,n,o,r){const i=n[o];if(i!=null&&i<I){t[r]=i}}function _addTtfbRequestTimeToMeasurements(t){const n=u.getNavigationEntry();if(!n){return}const{responseStart:o,requestStart:r}=n;if(r<=o){a.DEBUG_BUILD&&i.logger.log("[Measurements] Adding TTFB Request Time");t["ttfb.requestTime"]={value:o-r,unit:"millisecond"}}}function getSampleRate(t,n,o){if(!r.hasTracingEnabled(n)){return false}let c;if(t!==undefined&&typeof n.tracesSampler==="function"){c=n.tracesSampler({transactionContext:t,name:t.name,parentSampled:t.parentSampled,attributes:{...t.data,...t.attributes},location:g.WINDOW.location})}else if(t!==undefined&&t.sampled!==undefined){c=t.sampled}else if(typeof n.tracesSampleRate!=="undefined"){c=n.tracesSampleRate}else{c=1}if(!r.isValidSampleRate(c)){a.DEBUG_BUILD&&i.logger.warn("[Tracing] Discarding interaction span because of invalid sample rate.");return false}if(c===true){return o}else if(c===false){return 0}return c*o}n._addMeasureSpans=_addMeasureSpans;n._addResourceSpans=_addResourceSpans;n.addPerformanceEntries=addPerformanceEntries;n.startTrackingINP=startTrackingINP;n.startTrackingInteractions=startTrackingInteractions;n.startTrackingLongTasks=startTrackingLongTasks;n.startTrackingWebVitals=startTrackingWebVitals},9762:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});function isMeasurementValue(t){return typeof t==="number"&&isFinite(t)}function _startChild(t,{startTimestamp:n,...o}){if(n&&t.startTimestamp>n){t.startTimestamp=n}return t.startChild({startTimestamp:n,...o})}n._startChild=_startChild;n.isMeasurementValue=isMeasurementValue},3312:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(2446);const c=o(2516);const g=o(1884);const l=["localhost",/^\/(?!\/)/];const d={traceFetch:true,traceXHR:true,enableHTTPTimings:true,tracingOrigins:l,tracePropagationTargets:l};function instrumentOutgoingRequests(t){const{traceFetch:n,traceXHR:o,tracePropagationTargets:r,tracingOrigins:c,shouldCreateSpanForRequest:g,enableHTTPTimings:l}={traceFetch:d.traceFetch,traceXHR:d.traceXHR,...t};const u=typeof g==="function"?g:t=>true;const shouldAttachHeadersWithTargets=t=>shouldAttachHeaders(t,r||c);const I={};if(n){i.addFetchInstrumentationHandler(t=>{const n=a.instrumentFetchRequest(t,u,shouldAttachHeadersWithTargets,I);if(n){const o=getFullURL(t.fetchData.url);const r=o?i.parseUrl(o).host:undefined;n.setAttributes({"http.url":o,"server.address":r})}if(l&&n){addHTTPTimings(n)}})}if(o){i.addXhrInstrumentationHandler(t=>{const n=xhrCallback(t,u,shouldAttachHeadersWithTargets,I);if(l&&n){addHTTPTimings(n)}})}}function isPerformanceResourceTiming(t){return t.entryType==="resource"&&"initiatorType"in t&&typeof t.nextHopProtocol==="string"&&(t.initiatorType==="fetch"||t.initiatorType==="xmlhttprequest")}function addHTTPTimings(t){const{url:n}=r.spanToJSON(t).data||{};if(!n||typeof n!=="string"){return}const o=c.addPerformanceInstrumentationHandler("resource",({entries:r})=>{r.forEach(r=>{if(isPerformanceResourceTiming(r)&&r.name.endsWith(n)){const n=resourceTimingEntryToSpanData(r);n.forEach(n=>t.setAttribute(...n));setTimeout(o)}})})}function extractNetworkProtocol(t){let n="unknown";let o="unknown";let r="";for(const i of t){if(i==="/"){[n,o]=t.split("/");break}if(!isNaN(Number(i))){n=r==="h"?"http":r;o=t.split(r)[1];break}r+=i}if(r===t){n=r}return{name:n,version:o}}function getAbsoluteTime(t=0){return((i.browserPerformanceTimeOrigin||performance.timeOrigin)+t)/1e3}function resourceTimingEntryToSpanData(t){const{name:n,version:o}=extractNetworkProtocol(t.nextHopProtocol);const r=[];r.push(["network.protocol.version",o],["network.protocol.name",n]);if(!i.browserPerformanceTimeOrigin){return r}return[...r,["http.request.redirect_start",getAbsoluteTime(t.redirectStart)],["http.request.fetch_start",getAbsoluteTime(t.fetchStart)],["http.request.domain_lookup_start",getAbsoluteTime(t.domainLookupStart)],["http.request.domain_lookup_end",getAbsoluteTime(t.domainLookupEnd)],["http.request.connect_start",getAbsoluteTime(t.connectStart)],["http.request.secure_connection_start",getAbsoluteTime(t.secureConnectionStart)],["http.request.connection_end",getAbsoluteTime(t.connectEnd)],["http.request.request_start",getAbsoluteTime(t.requestStart)],["http.request.response_start",getAbsoluteTime(t.responseStart)],["http.request.response_end",getAbsoluteTime(t.responseEnd)]]}function shouldAttachHeaders(t,n){return i.stringMatchesSomePattern(t,n||l)}function xhrCallback(t,n,o,a){const c=t.xhr;const g=c&&c[i.SENTRY_XHR_DATA_KEY];if(!r.hasTracingEnabled()||!c||c.__sentry_own_request__||!g){return undefined}const l=n(g.url);if(t.endTimestamp&&l){const t=c.__sentry_xhr_span_id__;if(!t)return;const n=a[t];if(n&&g.status_code!==undefined){r.setHttpStatus(n,g.status_code);n.end();delete a[t]}return undefined}const d=r.getCurrentScope();const u=r.getIsolationScope();const I=getFullURL(g.url);const C=I?i.parseUrl(I).host:undefined;const p=l?r.startInactiveSpan({name:`${g.method} ${g.url}`,onlyIfParent:true,attributes:{type:"xhr","http.method":g.method,"http.url":I,url:g.url,"server.address":C,[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser"},op:"http.client"}):undefined;if(p){c.__sentry_xhr_span_id__=p.spanContext().spanId;a[c.__sentry_xhr_span_id__]=p}const m=r.getClient();if(c.setRequestHeader&&o(g.url)&&m){const{traceId:t,spanId:n,sampled:o,dsc:a}={...u.getPropagationContext(),...d.getPropagationContext()};const g=p?r.spanToTraceHeader(p):i.generateSentryTraceHeader(t,n,o);const l=i.dynamicSamplingContextToSentryBaggageHeader(a||(p?r.getDynamicSamplingContextFromSpan(p):r.getDynamicSamplingContextFromClient(t,m,d)));setHeaderOnXhr(c,g,l)}return p}function setHeaderOnXhr(t,n,o){try{t.setRequestHeader("sentry-trace",n);if(o){t.setRequestHeader(i.BAGGAGE_HEADER_NAME,o)}}catch(t){}}function getFullURL(t){try{const n=new URL(t,g.WINDOW.location.origin);return n.href}catch(t){return undefined}}n.DEFAULT_TRACE_PROPAGATION_TARGETS=l;n.defaultRequestInstrumentationOptions=d;n.extractNetworkProtocol=extractNetworkProtocol;n.instrumentOutgoingRequests=instrumentOutgoingRequests;n.shouldAttachHeaders=shouldAttachHeaders;n.xhrCallback=xhrCallback},5436:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=o(5472);const a=o(1884);function instrumentRoutingWithDefaults(t,n=true,o=true){if(!a.WINDOW||!a.WINDOW.location){i.DEBUG_BUILD&&r.logger.warn("Could not initialize routing instrumentation due to invalid location");return}let c=a.WINDOW.location.href;let g;if(n){g=t({name:a.WINDOW.location.pathname,startTimestamp:r.browserPerformanceTimeOrigin?r.browserPerformanceTimeOrigin/1e3:undefined,op:"pageload",origin:"auto.pageload.browser",metadata:{source:"url"}})}if(o){r.addHistoryInstrumentationHandler(({to:n,from:o})=>{if(o===undefined&&c&&c.indexOf(n)!==-1){c=undefined;return}if(o!==n){c=undefined;if(g){i.DEBUG_BUILD&&r.logger.log(`[Tracing] Finishing current transaction with op: ${g.op}`);g.end()}g=t({name:a.WINDOW.location.pathname,op:"navigation",origin:"auto.navigation.browser",metadata:{source:"url"}})}})}}n.instrumentRoutingWithDefaults=instrumentRoutingWithDefaults},1884:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=r.GLOBAL_OBJ;n.WINDOW=i},6434:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1372);const i=o(3608);const a=o(4296);const c=o(4359);const onCLS=(t,n={})=>{const o=i.initMetric("CLS",0);let g;let l=0;let d=[];const handleEntries=t=>{t.forEach(t=>{if(!t.hadRecentInput){const n=d[0];const r=d[d.length-1];if(l&&d.length!==0&&t.startTime-r.startTime<1e3&&t.startTime-n.startTime<5e3){l+=t.value;d.push(t)}else{l=t.value;d=[t]}if(l>o.value){o.value=l;o.entries=d;if(g){g()}}}})};const u=a.observe("layout-shift",handleEntries);if(u){g=r.bindReporter(t,o,n.reportAllChanges);const stopListening=()=>{handleEntries(u.takeRecords());g(true)};c.onHidden(stopListening);return stopListening}return};n.onCLS=onCLS},2977:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1372);const i=o(2642);const a=o(3608);const c=o(4296);const g=o(4359);const onFID=t=>{const n=i.getVisibilityWatcher();const o=a.initMetric("FID");let l;const handleEntry=t=>{if(t.startTime<n.firstHiddenTime){o.value=t.processingStart-t.startTime;o.entries.push(t);l(true)}};const handleEntries=t=>{t.forEach(handleEntry)};const d=c.observe("first-input",handleEntries);l=r.bindReporter(t,o);if(d){g.onHidden(()=>{handleEntries(d.takeRecords());d.disconnect()},true)}};n.onFID=onFID},4779:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1372);const i=o(3608);const a=o(4296);const c=o(4359);const g=o(8179);const getInteractionCountForNavigation=()=>g.getInteractionCount();const l=10;const d=[];const u={};const processEntry=t=>{const n=d[d.length-1];const o=u[t.interactionId];if(o||d.length<l||t.duration>n.latency){if(o){o.entries.push(t);o.latency=Math.max(o.latency,t.duration)}else{const n={id:t.interactionId,latency:t.duration,entries:[t]};u[n.id]=n;d.push(n)}d.sort((t,n)=>n.latency-t.latency);d.splice(l).forEach(t=>{delete u[t.id]})}};const estimateP98LongestInteraction=()=>{const t=Math.min(d.length-1,Math.floor(getInteractionCountForNavigation()/50));return d[t]};const onINP=(t,n)=>{n=n||{};g.initInteractionCountPolyfill();const o=i.initMetric("INP");let l;const handleEntries=t=>{t.forEach(t=>{if(t.interactionId){processEntry(t)}if(t.entryType==="first-input"){const n=!d.some(n=>n.entries.some(n=>t.duration===n.duration&&t.startTime===n.startTime));if(n){processEntry(t)}}});const n=estimateP98LongestInteraction();if(n&&n.latency!==o.value){o.value=n.latency;o.entries=n.entries;l()}};const u=a.observe("event",handleEntries,{durationThreshold:n.durationThreshold||40});l=r.bindReporter(t,o,n.reportAllChanges);if(u){u.observe({type:"first-input",buffered:true});c.onHidden(()=>{handleEntries(u.takeRecords());if(o.value<0&&getInteractionCountForNavigation()>0){o.value=0;o.entries=[]}l(true)})}};n.onINP=onINP},3701:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1884);const i=o(1372);const a=o(4762);const c=o(2642);const g=o(3608);const l=o(4296);const d=o(4359);const u={};const onLCP=t=>{const n=c.getVisibilityWatcher();const o=g.initMetric("LCP");let I;const handleEntries=t=>{const r=t[t.length-1];if(r){const t=Math.max(r.startTime-a.getActivationStart(),0);if(t<n.firstHiddenTime){o.value=t;o.entries=[r];I()}}};const C=l.observe("largest-contentful-paint",handleEntries);if(C){I=i.bindReporter(t,o);const stopListening=()=>{if(!u[o.id]){handleEntries(C.takeRecords());C.disconnect();u[o.id]=true;I(true)}};["keydown","click"].forEach(t=>{if(r.WINDOW.document){addEventListener(t,stopListening,{once:true,capture:true})}});d.onHidden(stopListening,true);return stopListening}return};n.onLCP=onLCP},1372:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const bindReporter=(t,n,o)=>{let r;let i;return a=>{if(n.value>=0){if(a||o){i=n.value-(r||0);if(i||r===undefined){r=n.value;n.delta=i;t(n)}}}}};n.bindReporter=bindReporter},3283:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const generateUniqueID=()=>`v3-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`;n.generateUniqueID=generateUniqueID},4762:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(3904);const getActivationStart=()=>{const t=r.getNavigationEntry();return t&&t.activationStart||0};n.getActivationStart=getActivationStart},3904:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1884);const getNavigationEntryFromPerformanceTiming=()=>{const t=r.WINDOW.performance.timing;const n=r.WINDOW.performance.navigation.type;const o={entryType:"navigation",startTime:0,type:n==2?"back_forward":n===1?"reload":"navigate"};for(const n in t){if(n!=="navigationStart"&&n!=="toJSON"){o[n]=Math.max(t[n]-t.navigationStart,0)}}return o};const getNavigationEntry=()=>{if(r.WINDOW.__WEB_VITALS_POLYFILL__){return r.WINDOW.performance&&(performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]||getNavigationEntryFromPerformanceTiming())}else{return r.WINDOW.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]}};n.getNavigationEntry=getNavigationEntry},2642:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1884);const i=o(4359);let a=-1;const initHiddenTime=()=>{if(r.WINDOW.document&&r.WINDOW.document.visibilityState){a=r.WINDOW.document.visibilityState==="hidden"&&!r.WINDOW.document.prerendering?0:Infinity}};const trackChanges=()=>{i.onHidden(({timeStamp:t})=>{a=t},true)};const getVisibilityWatcher=()=>{if(a<0){initHiddenTime();trackChanges()}return{get firstHiddenTime(){return a}}};n.getVisibilityWatcher=getVisibilityWatcher},3608:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1884);const i=o(3283);const a=o(4762);const c=o(3904);const initMetric=(t,n)=>{const o=c.getNavigationEntry();let g="navigate";if(o){if(r.WINDOW.document&&r.WINDOW.document.prerendering||a.getActivationStart()>0){g="prerender"}else{g=o.type.replace(/_/g,"-")}}return{name:t,value:typeof n==="undefined"?-1:n,rating:"good",delta:0,entries:[],id:i.generateUniqueID(),navigationType:g}};n.initMetric=initMetric},4296:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const observe=(t,n,o)=>{try{if(PerformanceObserver.supportedEntryTypes.includes(t)){const r=new PerformanceObserver(t=>{n(t.getEntries())});r.observe({type:t,buffered:true,...o});return r}}catch(t){}return};n.observe=observe},4359:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1884);const onHidden=(t,n)=>{const onHiddenOrPageHide=o=>{if(o.type==="pagehide"||r.WINDOW.document.visibilityState==="hidden"){t(o);if(n){removeEventListener("visibilitychange",onHiddenOrPageHide,true);removeEventListener("pagehide",onHiddenOrPageHide,true)}}};if(r.WINDOW.document){addEventListener("visibilitychange",onHiddenOrPageHide,true);addEventListener("pagehide",onHiddenOrPageHide,true)}};n.onHidden=onHidden},8179:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(4296);let i=0;let a=Infinity;let c=0;const updateEstimate=t=>{t.forEach(t=>{if(t.interactionId){a=Math.min(a,t.interactionId);c=Math.max(c,t.interactionId);i=c?(c-a)/7+1:0}})};let g;const getInteractionCount=()=>g?i:performance.interactionCount||0;const initInteractionCountPolyfill=()=>{if("interactionCount"in performance||g)return;g=r.observe("event",updateEstimate,{type:"event",buffered:true,durationThreshold:0})};n.getInteractionCount=getInteractionCount;n.initInteractionCountPolyfill=initInteractionCountPolyfill},2255:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(1884);const i=o(1372);const a=o(4762);const c=o(3904);const g=o(3608);const whenReady=t=>{if(!r.WINDOW.document){return}if(r.WINDOW.document.prerendering){addEventListener("prerenderingchange",()=>whenReady(t),true)}else if(r.WINDOW.document.readyState!=="complete"){addEventListener("load",()=>whenReady(t),true)}else{setTimeout(t,0)}};const onTTFB=(t,n)=>{n=n||{};const o=g.initMetric("TTFB");const r=i.bindReporter(t,o,n.reportAllChanges);whenReady(()=>{const t=c.getNavigationEntry();if(t){o.value=Math.max(t.responseStart-a.getActivationStart(),0);if(o.value<0||o.value>performance.now())return;o.entries=[t];r(true)}})};n.onTTFB=onTTFB},5472:(t,n)=>{Object.defineProperty(n,"__esModule",{value:true});const o=typeof __SENTRY_DEBUG__==="undefined"||__SENTRY_DEBUG__;n.DEBUG_BUILD=o},2446:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);function instrumentFetchRequest(t,n,o,a,c="auto.http.browser"){if(!r.hasTracingEnabled()||!t.fetchData){return undefined}const g=n(t.fetchData.url);if(t.endTimestamp&&g){const n=t.fetchData.__span;if(!n)return;const o=a[n];if(o){endSpan(o,t);delete a[n]}return undefined}const l=r.getCurrentScope();const d=r.getClient();const{method:u,url:I}=t.fetchData;const C=getFullURL(I);const p=C?i.parseUrl(C).host:undefined;const m=g?r.startInactiveSpan({name:`${u} ${I}`,onlyIfParent:true,attributes:{url:I,type:"fetch","http.method":u,"http.url":C,"server.address":p,[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:c},op:"http.client"}):undefined;if(m){t.fetchData.__span=m.spanContext().spanId;a[m.spanContext().spanId]=m}if(o(t.fetchData.url)&&d){const n=t.args[0];t.args[1]=t.args[1]||{};const o=t.args[1];o.headers=addTracingHeadersToFetchRequest(n,d,l,o,m)}return m}function addTracingHeadersToFetchRequest(t,n,o,a,c){const g=c||o.getSpan();const l=r.getIsolationScope();const{traceId:d,spanId:u,sampled:I,dsc:C}={...l.getPropagationContext(),...o.getPropagationContext()};const p=g?r.spanToTraceHeader(g):i.generateSentryTraceHeader(d,u,I);const m=i.dynamicSamplingContextToSentryBaggageHeader(C||(g?r.getDynamicSamplingContextFromSpan(g):r.getDynamicSamplingContextFromClient(d,n,o)));const b=a.headers||(typeof Request!=="undefined"&&i.isInstanceOf(t,Request)?t.headers:undefined);if(!b){return{"sentry-trace":p,baggage:m}}else if(typeof Headers!=="undefined"&&i.isInstanceOf(b,Headers)){const t=new Headers(b);t.append("sentry-trace",p);if(m){t.append(i.BAGGAGE_HEADER_NAME,m)}return t}else if(Array.isArray(b)){const t=[...b,["sentry-trace",p]];if(m){t.push([i.BAGGAGE_HEADER_NAME,m])}return t}else{const t="baggage"in b?b.baggage:undefined;const n=[];if(Array.isArray(t)){n.push(...t)}else if(t){n.push(t)}if(m){n.push(m)}return{...b,"sentry-trace":p,baggage:n.length>0?n.join(","):undefined}}}function getFullURL(t){try{const n=new URL(t);return n.href}catch(t){return undefined}}function endSpan(t,n){if(n.response){r.setHttpStatus(t,n.response.status);const o=n.response&&n.response.headers&&n.response.headers.get("content-length");if(o){const n=parseInt(o);if(n>0){t.setAttribute("http.response_content_length",n)}}}else if(n.error){t.setStatus("internal_error")}t.end()}n.addTracingHeadersToFetchRequest=addTracingHeadersToFetchRequest;n.instrumentFetchRequest=instrumentFetchRequest},8346:(t,n,o)=>{t=o.nmd(t);Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);function _autoloadDatabaseIntegrations(){const n=r.getMainCarrier();if(!n.__SENTRY__){return}const o={mongodb(){const n=i.dynamicRequire(t,"./node/integrations/mongo");return new n.Mongo},mongoose(){const n=i.dynamicRequire(t,"./node/integrations/mongo");return new n.Mongo},mysql(){const n=i.dynamicRequire(t,"./node/integrations/mysql");return new n.Mysql},pg(){const n=i.dynamicRequire(t,"./node/integrations/postgres");return new n.Postgres}};const a=Object.keys(o).filter(t=>!!i.loadModule(t)).map(t=>{try{return o[t]()}catch(t){return undefined}}).filter(t=>t);if(a.length>0){n.__SENTRY__.integrations=[...n.__SENTRY__.integrations||[],...a]}}function addExtensionMethods(){r.addTracingExtensions();if(i.isNodeEnv()){_autoloadDatabaseIntegrations()}}n.addExtensionMethods=addExtensionMethods},9062:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(7039);const c=o(3848);const g=o(9461);const l=o(7411);const d=o(3639);const u=o(8998);const I=o(2968);const C=o(1113);const p=o(7255);const m=o(6157);const b=o(3312);const h=o(2516);const G=o(2446);const Z=o(8346);n.IdleTransaction=r.IdleTransaction;n.Span=r.Span;n.SpanStatus=r.SpanStatus;n.Transaction=r.Transaction;n.extractTraceparentData=r.extractTraceparentData;n.getActiveTransaction=r.getActiveTransaction;n.hasTracingEnabled=r.hasTracingEnabled;n.spanStatusfromHttpCode=r.spanStatusfromHttpCode;n.startIdleTransaction=r.startIdleTransaction;n.TRACEPARENT_REGEXP=i.TRACEPARENT_REGEXP;n.stripUrlQueryAndFragment=i.stripUrlQueryAndFragment;n.Express=a.Express;n.Postgres=c.Postgres;n.Mysql=g.Mysql;n.Mongo=l.Mongo;n.Prisma=d.Prisma;n.GraphQL=u.GraphQL;n.Apollo=I.Apollo;n.lazyLoadedNodePerformanceMonitoringIntegrations=C.lazyLoadedNodePerformanceMonitoringIntegrations;n.BROWSER_TRACING_INTEGRATION_ID=p.BROWSER_TRACING_INTEGRATION_ID;n.BrowserTracing=p.BrowserTracing;n.browserTracingIntegration=m.browserTracingIntegration;n.startBrowserTracingNavigationSpan=m.startBrowserTracingNavigationSpan;n.startBrowserTracingPageLoadSpan=m.startBrowserTracingPageLoadSpan;n.defaultRequestInstrumentationOptions=b.defaultRequestInstrumentationOptions;n.instrumentOutgoingRequests=b.instrumentOutgoingRequests;n.addClsInstrumentationHandler=h.addClsInstrumentationHandler;n.addFidInstrumentationHandler=h.addFidInstrumentationHandler;n.addLcpInstrumentationHandler=h.addLcpInstrumentationHandler;n.addPerformanceInstrumentationHandler=h.addPerformanceInstrumentationHandler;n.addTracingHeadersToFetchRequest=G.addTracingHeadersToFetchRequest;n.instrumentFetchRequest=G.instrumentFetchRequest;n.addExtensionMethods=Z.addExtensionMethods},2968:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(4624);const a=o(5472);const c=o(565);class Apollo{static __initStatic(){this.id="Apollo"}constructor(t={useNestjs:false}){this.name=Apollo.id;this._useNest=!!t.useNestjs}loadDependency(){if(this._useNest){this._module=this._module||i.loadModule("@nestjs/graphql")}else{this._module=this._module||i.loadModule("apollo-server-core")}return this._module}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Apollo Integration is skipped because of instrumenter configuration.");return}if(this._useNest){const t=this.loadDependency();if(!t){a.DEBUG_BUILD&&i.logger.error("Apollo-NestJS Integration was unable to require @nestjs/graphql package.");return}i.fill(t.GraphQLFactory.prototype,"mergeWithSchema",function(t){return function(...o){i.fill(this.resolversExplorerService,"explore",function(t){return function(){const o=i.arrayify(t.call(this));const r=instrumentResolvers(o,n);return r}});return t.call(this,...o)}})}else{const t=this.loadDependency();if(!t){a.DEBUG_BUILD&&i.logger.error("Apollo Integration was unable to require apollo-server-core package.");return}i.fill(t.ApolloServerBase.prototype,"constructSchema",function(t){return function(){if(!this.config.resolvers){if(a.DEBUG_BUILD){if(this.config.schema){i.logger.warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property."+"If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead.");i.logger.warn()}else if(this.config.modules){i.logger.warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property.")}i.logger.error("Skipping tracing as no resolvers found on the `ApolloServer` instance.")}return t.call(this)}const o=i.arrayify(this.config.resolvers);this.config.resolvers=instrumentResolvers(o,n);return t.call(this)}})}}}Apollo.__initStatic();function instrumentResolvers(t,n){return t.map(t=>{Object.keys(t).forEach(o=>{Object.keys(t[o]).forEach(r=>{if(typeof t[o][r]!=="function"){return}wrapResolver(t,o,r,n)})});return t})}function wrapResolver(t,n,o,a){i.fill(t[n],o,function(t){return function(...c){const g=a().getScope();const l=g.getSpan();const d=r([l,"optionalAccess",t=>t.startChild,"call",t=>t({description:`${n}.${o}`,op:"graphql.resolve",origin:"auto.graphql.apollo"})]);const u=t.call(this,...c);if(i.isThenable(u)){return u.then(t=>{r([d,"optionalAccess",t=>t.end,"call",t=>t()]);return t})}r([d,"optionalAccess",t=>t.end,"call",t=>t()]);return u}})}n.Apollo=Apollo},7039:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(9090);const a=o(4624);const c=o(5472);const g=o(565);class Express{static __initStatic(){this.id="Express"}constructor(t={}){this.name=Express.id;this._router=t.router||t.app;this._methods=(Array.isArray(t.methods)?t.methods:[]).concat("use")}setupOnce(t,n){if(!this._router){c.DEBUG_BUILD&&a.logger.error("ExpressIntegration is missing an Express instance");return}if(g.shouldDisableAutoInstrumentation(n)){c.DEBUG_BUILD&&a.logger.log("Express Integration is skipped because of instrumenter configuration.");return}instrumentMiddlewares(this._router,this._methods);instrumentRouter(this._router)}}Express.__initStatic();function wrap(t,n){const o=t.length;switch(o){case 2:{return function(o,r){const i=r.__sentry_transaction;if(i){const o=i.startChild({description:t.name,op:`middleware.express.${n}`,origin:"auto.middleware.express"});r.once("finish",()=>{o.end()})}return t.call(this,o,r)}}case 3:{return function(o,i,a){const c=i.__sentry_transaction;const g=r([c,"optionalAccess",t=>t.startChild,"call",o=>o({description:t.name,op:`middleware.express.${n}`,origin:"auto.middleware.express"})]);t.call(this,o,i,function(...t){r([g,"optionalAccess",t=>t.end,"call",t=>t()]);a.call(this,...t)})}}case 4:{return function(o,i,a,c){const g=a.__sentry_transaction;const l=r([g,"optionalAccess",t=>t.startChild,"call",o=>o({description:t.name,op:`middleware.express.${n}`,origin:"auto.middleware.express"})]);t.call(this,o,i,a,function(...t){r([l,"optionalAccess",t=>t.end,"call",t=>t()]);c.call(this,...t)})}}default:{throw new Error(`Express middleware takes 2-4 arguments. Got: ${o}`)}}}function wrapMiddlewareArgs(t,n){return t.map(t=>{if(typeof t==="function"){return wrap(t,n)}if(Array.isArray(t)){return t.map(t=>{if(typeof t==="function"){return wrap(t,n)}return t})}return t})}function patchMiddleware(t,n){const o=t[n];t[n]=function(...t){return o.call(this,...wrapMiddlewareArgs(t,n))};return t}function instrumentMiddlewares(t,n=[]){n.forEach(n=>patchMiddleware(t,n))}function instrumentRouter(t){const n="settings"in t;if(n&&t._router===undefined&&t.lazyrouter){t.lazyrouter()}const o=n?t._router:t;if(!o){c.DEBUG_BUILD&&a.logger.debug("Cannot instrument router for URL Parameterization (did not find a valid router).");c.DEBUG_BUILD&&a.logger.debug("Routing instrumentation is currently only supported in Express 4.");return}const r=Object.getPrototypeOf(o);const g=r.process_params;r.process_params=function process_params(t,n,o,r,c){if(!o._reconstructedRoute){o._reconstructedRoute=""}const{layerRoutePath:l,isRegex:d,isArray:u,numExtraSegments:I}=getLayerRoutePathInfo(t);if(l||d||u){o._hasParameters=true}let C;if(l){C=l}else{C=preventDuplicateSegments(o.originalUrl,o._reconstructedRoute,t.path)||""}const p=C.split("/").filter(t=>t.length>0&&(d||u||!t.includes("*"))).join("/");if(p&&p.length>0){o._reconstructedRoute+=`/${p}${d?"/":""}`}const m=a.getNumberOfUrlSegments(a.stripUrlQueryAndFragment(o.originalUrl||""))+I;const b=a.getNumberOfUrlSegments(o._reconstructedRoute);if(m===b){if(!o._hasParameters){if(o._reconstructedRoute!==o.originalUrl){o._reconstructedRoute=o.originalUrl?a.stripUrlQueryAndFragment(o.originalUrl):o.originalUrl}}const t=r.__sentry_transaction;const n=t&&i.spanToJSON(t).data||{};if(t&&n[i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]!=="custom"){const n=o._reconstructedRoute||"/";const[r,c]=a.extractPathForTransaction(o,{path:true,method:true,customRoute:n});t.updateName(r);t.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c)}}return g.call(this,t,n,o,r,c)}}const extractOriginalRoute=(t,n,o)=>{if(!t||!n||!o||Object.keys(o).length===0||r([o,"access",t=>t[0],"optionalAccess",t=>t.offset])===undefined||r([o,"access",t=>t[0],"optionalAccess",t=>t.offset])===null){return undefined}const i=o.sort((t,n)=>t.offset-n.offset);const a=new RegExp(n,`${n.flags}d`);const c=a.exec(t);if(!c||!c.indices){return undefined}const[,...g]=c.indices;if(g.length!==i.length){return undefined}let l=t;let d=0;g.forEach((t,n)=>{if(t){const[o,r]=t;const a=l.substring(0,o-d);const c=`:${i[n].name}`;const g=l.substring(r-d);l=a+c+g;d=d+(r-o-c.length)}});return l};function getLayerRoutePathInfo(t){let n=r([t,"access",t=>t.route,"optionalAccess",t=>t.path]);const o=a.isRegExp(n);const i=Array.isArray(n);if(!n){const[o]=a.GLOBAL_OBJ.process.versions.node.split(".").map(Number);if(o>=16){n=extractOriginalRoute(t.path,t.regexp,t.keys)}}if(!n){return{isRegex:o,isArray:i,numExtraSegments:0}}const c=i?Math.max(getNumberOfArrayUrlSegments(n)-a.getNumberOfUrlSegments(t.path||""),0):0;const g=getLayerRoutePathString(i,n);return{layerRoutePath:g,isRegex:o,isArray:i,numExtraSegments:c}}function getNumberOfArrayUrlSegments(t){return t.reduce((t,n)=>t+a.getNumberOfUrlSegments(n.toString()),0)}function getLayerRoutePathString(t,n){if(t){return n.map(t=>t.toString()).join(",")}return n&&n.toString()}function preventDuplicateSegments(t,n,o){const i=a.stripUrlQueryAndFragment(t||"");const c=r([i,"optionalAccess",t=>t.split,"call",t=>t("/"),"access",t=>t.filter,"call",t=>t(t=>!!t)]);let g=0;const l=r([n,"optionalAccess",t=>t.split,"call",t=>t("/"),"access",t=>t.filter,"call",t=>t(t=>!!t),"access",t=>t.length])||0;const d=r([o,"optionalAccess",t=>t.split,"call",t=>t("/"),"access",t=>t.filter,"call",t=>t(t=>{if(r([c,"optionalAccess",t=>t[l+g]])===t){g+=1;return true}return false}),"access",t=>t.join,"call",t=>t("/")]);return d}n.Express=Express;n.extractOriginalRoute=extractOriginalRoute;n.preventDuplicateSegments=preventDuplicateSegments},8998:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(4624);const a=o(5472);const c=o(565);class GraphQL{static __initStatic(){this.id="GraphQL"}constructor(){this.name=GraphQL.id}loadDependency(){return this._module=this._module||i.loadModule("graphql/execution/execute.js")}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("GraphQL Integration is skipped because of instrumenter configuration.");return}const o=this.loadDependency();if(!o){a.DEBUG_BUILD&&i.logger.error("GraphQL Integration was unable to require graphql/execution package.");return}i.fill(o,"execute",function(t){return function(...o){const a=n().getScope();const c=a.getSpan();const g=r([c,"optionalAccess",t=>t.startChild,"call",t=>t({description:"execute",op:"graphql.execute",origin:"auto.graphql.graphql"})]);r([a,"optionalAccess",t=>t.setSpan,"call",t=>t(g)]);const l=t.call(this,...o);if(i.isThenable(l)){return l.then(t=>{r([g,"optionalAccess",t=>t.end,"call",t=>t()]);r([a,"optionalAccess",t=>t.setSpan,"call",t=>t(c)]);return t})}r([g,"optionalAccess",t=>t.end,"call",t=>t()]);r([a,"optionalAccess",t=>t.setSpan,"call",t=>t(c)]);return l}})}}GraphQL.__initStatic();n.GraphQL=GraphQL},1113:(t,n,o)=>{t=o.nmd(t);Object.defineProperty(n,"__esModule",{value:true});const r=o(4624);const i=[()=>{const n=r.dynamicRequire(t,"./apollo");return new n.Apollo},()=>{const n=r.dynamicRequire(t,"./apollo");return new n.Apollo({useNestjs:true})},()=>{const n=r.dynamicRequire(t,"./graphql");return new n.GraphQL},()=>{const n=r.dynamicRequire(t,"./mongo");return new n.Mongo},()=>{const n=r.dynamicRequire(t,"./mongo");return new n.Mongo({mongoose:true})},()=>{const n=r.dynamicRequire(t,"./mysql");return new n.Mysql},()=>{const n=r.dynamicRequire(t,"./postgres");return new n.Postgres}];n.lazyLoadedNodePerformanceMonitoringIntegrations=i},7411:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(4624);const a=o(5472);const c=o(565);const g=["aggregate","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","drop","dropIndex","dropIndexes","estimatedDocumentCount","find","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexes","indexExists","indexInformation","initializeOrderedBulkOp","insertMany","insertOne","isCapped","mapReduce","options","parallelCollectionScan","rename","replaceOne","stats","updateMany","updateOne"];const l={bulkWrite:["operations"],countDocuments:["query"],createIndex:["fieldOrSpec"],createIndexes:["indexSpecs"],deleteMany:["filter"],deleteOne:["filter"],distinct:["key","query"],dropIndex:["indexName"],find:["query"],findOne:["query"],findOneAndDelete:["filter"],findOneAndReplace:["filter","replacement"],findOneAndUpdate:["filter","update"],indexExists:["indexes"],insertMany:["docs"],insertOne:["doc"],mapReduce:["map","reduce"],rename:["newName"],replaceOne:["filter","doc"],updateMany:["filter","update"],updateOne:["filter","update"]};function isCursor(t){return t&&typeof t==="object"&&t.once&&typeof t.once==="function"}class Mongo{static __initStatic(){this.id="Mongo"}constructor(t={}){this.name=Mongo.id;this._operations=Array.isArray(t.operations)?t.operations:g;this._describeOperations="describeOperations"in t?t.describeOperations:true;this._useMongoose=!!t.useMongoose}loadDependency(){const t=this._useMongoose?"mongoose":"mongodb";return this._module=this._module||i.loadModule(t)}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Mongo Integration is skipped because of instrumenter configuration.");return}const o=this.loadDependency();if(!o){const t=this._useMongoose?"mongoose":"mongodb";a.DEBUG_BUILD&&i.logger.error(`Mongo Integration was unable to require \`${t}\` package.`);return}this._instrumentOperations(o.Collection,this._operations,n)}_instrumentOperations(t,n,o){n.forEach(n=>this._patchOperation(t,n,o))}_patchOperation(t,n,o){if(!(n in t.prototype))return;const a=this._getSpanContextFromOperationArguments.bind(this);i.fill(t.prototype,n,function(t){return function(...c){const g=c[c.length-1];const l=o();const d=l.getScope();const u=l.getClient();const I=d.getSpan();const C=r([u,"optionalAccess",t=>t.getOptions,"call",t=>t(),"access",t=>t.sendDefaultPii]);if(typeof g!=="function"||n==="mapReduce"&&c.length===2){const o=r([I,"optionalAccess",t=>t.startChild,"call",t=>t(a(this,n,c,C))]);const g=t.call(this,...c);if(i.isThenable(g)){return g.then(t=>{r([o,"optionalAccess",t=>t.end,"call",t=>t()]);return t})}else if(isCursor(g)){const t=g;try{t.once("close",()=>{r([o,"optionalAccess",t=>t.end,"call",t=>t()])})}catch(t){r([o,"optionalAccess",t=>t.end,"call",t=>t()])}return t}else{r([o,"optionalAccess",t=>t.end,"call",t=>t()]);return g}}const p=r([I,"optionalAccess",t=>t.startChild,"call",t=>t(a(this,n,c.slice(0,-1)))]);return t.call(this,...c.slice(0,-1),function(t,n){r([p,"optionalAccess",t=>t.end,"call",t=>t()]);g(t,n)})}})}_getSpanContextFromOperationArguments(t,n,o,r=false){const i={"db.system":"mongodb","db.name":t.dbName,"db.operation":n,"db.mongodb.collection":t.collectionName};const a={op:"db",origin:"auto.db.mongo",description:n,data:i};const c=l[n];const g=Array.isArray(this._describeOperations)?this._describeOperations.includes(n):this._describeOperations;if(!c||!g||!r){return a}try{if(n==="mapReduce"){const[t,n]=o;i[c[0]]=typeof t==="string"?t:t.name||"<anonymous>";i[c[1]]=typeof n==="string"?n:n.name||"<anonymous>"}else{for(let t=0;t<c.length;t++){i[`db.mongodb.${c[t]}`]=JSON.stringify(o[t])}}}catch(t){}return a}}Mongo.__initStatic();n.Mongo=Mongo},9461:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(4624);const a=o(5472);const c=o(565);class Mysql{static __initStatic(){this.id="Mysql"}constructor(){this.name=Mysql.id}loadDependency(){return this._module=this._module||i.loadModule("mysql/lib/Connection.js")}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Mysql Integration is skipped because of instrumenter configuration.");return}const o=this.loadDependency();if(!o){a.DEBUG_BUILD&&i.logger.error("Mysql Integration was unable to require `mysql` package.");return}let g=undefined;try{o.prototype.connect=new Proxy(o.prototype.connect,{apply(t,n,o){if(!g){g=n.config}return t.apply(n,o)}})}catch(t){a.DEBUG_BUILD&&i.logger.error("Mysql Integration was unable to instrument `mysql` config.")}function spanDataFromConfig(){if(!g){return{}}return{"server.address":g.host,"server.port":g.port,"db.user":g.user}}function finishSpan(t){if(!t){return}const n=spanDataFromConfig();Object.keys(n).forEach(o=>{t.setAttribute(o,n[o])});t.end()}i.fill(o,"createQuery",function(t){return function(o,i,a){const c=n().getScope();const g=c.getSpan();const l=r([g,"optionalAccess",t=>t.startChild,"call",t=>t({description:typeof o==="string"?o:o.sql,op:"db",origin:"auto.db.mysql",data:{"db.system":"mysql"}})]);if(typeof a==="function"){return t.call(this,o,i,function(t,n,o){finishSpan(l);a(t,n,o)})}if(typeof i==="function"){return t.call(this,o,function(t,n,o){finishSpan(l);i(t,n,o)})}const d=t.call(this,o,i);d.on("end",()=>{finishSpan(l)});return d}})}}Mysql.__initStatic();n.Mysql=Mysql},3848:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});const i=o(4624);const a=o(5472);const c=o(565);class Postgres{static __initStatic(){this.id="Postgres"}constructor(t={}){this.name=Postgres.id;this._usePgNative=!!t.usePgNative;this._module=t.module}loadDependency(){return this._module=this._module||i.loadModule("pg")}setupOnce(t,n){if(c.shouldDisableAutoInstrumentation(n)){a.DEBUG_BUILD&&i.logger.log("Postgres Integration is skipped because of instrumenter configuration.");return}const o=this.loadDependency();if(!o){a.DEBUG_BUILD&&i.logger.error("Postgres Integration was unable to require `pg` package.");return}const g=this._usePgNative?r([o,"access",t=>t.native,"optionalAccess",t=>t.Client]):o.Client;if(!g){a.DEBUG_BUILD&&i.logger.error("Postgres Integration was unable to access 'pg-native' bindings.");return}i.fill(g.prototype,"query",function(t){return function(o,a,c){const g=n().getScope();const l=g.getSpan();const d={"db.system":"postgresql"};try{if(this.database){d["db.name"]=this.database}if(this.host){d["server.address"]=this.host}if(this.port){d["server.port"]=this.port}if(this.user){d["db.user"]=this.user}}catch(t){}const u=r([l,"optionalAccess",t=>t.startChild,"call",t=>t({description:typeof o==="string"?o:o.text,op:"db",origin:"auto.db.postgres",data:d})]);if(typeof c==="function"){return t.call(this,o,a,function(t,n){r([u,"optionalAccess",t=>t.end,"call",t=>t()]);c(t,n)})}if(typeof a==="function"){return t.call(this,o,function(t,n){r([u,"optionalAccess",t=>t.end,"call",t=>t()]);a(t,n)})}const I=typeof a!=="undefined"?t.call(this,o,a):t.call(this,o);if(i.isThenable(I)){return I.then(t=>{r([u,"optionalAccess",t=>t.end,"call",t=>t()]);return t})}r([u,"optionalAccess",t=>t.end,"call",t=>t()]);return I}})}}Postgres.__initStatic();n.Postgres=Postgres},3639:(t,n,o)=>{Object.defineProperty(n,"__esModule",{value:true});const r=o(9090);const i=o(4624);const a=o(5472);const c=o(565);function isValidPrismaClient(t){return!!t&&!!t["$use"]}class Prisma{static __initStatic(){this.id="Prisma"}constructor(t={}){this.name=Prisma.id;if(isValidPrismaClient(t.client)&&!t.client._sentryInstrumented){i.addNonEnumerableProperty(t.client,"_sentryInstrumented",true);const n={};try{const o=t.client._engineConfig;if(o){const{activeProvider:t,clientVersion:r}=o;if(t){n["db.system"]=t}if(r){n["db.prisma.version"]=r}}}catch(t){}t.client.$use((t,o)=>{if(c.shouldDisableAutoInstrumentation(r.getCurrentHub)){return o(t)}const i=t.action;const a=t.model;return r.startSpan({name:a?`${a} ${i}`:i,onlyIfParent:true,op:"db.prisma",attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.db.prisma"},data:{...n,"db.operation":i}},()=>o(t))})}else{a.DEBUG_BUILD&&i.logger.warn("Unsupported Prisma client provided to PrismaIntegration. Provided client:",t.client)}}setupOnce(){}}Prisma.__initStatic();n.Prisma=Prisma},565:(t,n,o)=>{var{_optionalChain:r}=o(4624);Object.defineProperty(n,"__esModule",{value:true});function shouldDisableAutoInstrumentation(t){const n=r([t,"call",t=>t(),"access",t=>t.getClient,"call",t=>t(),"optionalAccess",t=>t.getOptions,"call",t=>t()]);const o=r([n,"optionalAccess",t=>t.instrumenter])||"sentry";return o!=="sentry"}n.shouldDisableAutoInstrumentation=shouldDisableAutoInstrumentation},9509:function(t,n,o){"use strict";var r=this&&this.__createBinding||(Object.create?function(t,n,o,r){if(r===undefined)r=o;var i=Object.getOwnPropertyDescriptor(n,o);if(!i||("get"in i?!n.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return n[o]}}}Object.defineProperty(t,r,i)}:function(t,n,o,r){if(r===undefined)r=o;t[r]=n[o]});var i=this&&this.__setModuleDefault||(Object.create?function(t,n){Object.defineProperty(t,"default",{enumerable:true,value:n})}:function(t,n){t["default"]=n});var a=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var o in t)if(o!=="default"&&Object.prototype.hasOwnProperty.call(t,o))r(n,t,o);i(n,t);return n};Object.defineProperty(n,"__esModule",{value:true});n.init=n.normalizeEnvironment=void 0;const c=a(o(3986));const g=o(8278);const l={production:"prod",staging:"prev",development:"dev",test:"test"};function normalizeEnvironment(t){var n;return(n=l[t])!==null&&n!==void 0?n:t}n.normalizeEnvironment=normalizeEnvironment;function init(t){const n=Object.assign(Object.assign({},t),{environment:normalizeEnvironment(t.environment)});c.init({dsn:`https://${t.projectId}@o0.ingest.sentry.io/0`,transport:(0,g.makeApmTransport)(n),release:n.release,environment:n.environment,tracesSampleRate:0,normalizeDepth:n.normalizeDepth})}n.init=init},8233:(t,n,o)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.convertSentryBody=void 0;const r=o(831);const i=o(8955);function convertSentryBody(t,n){const o=t.split("\n").filter(Boolean);if(o.length<3)return null;const i=JSON.parse(o[0]);const a=[];let c;for(let t=1;t+1<o.length;t+=2){const n=JSON.parse(o[t]);const r=JSON.parse(o[t+1]);if(n.type==="event"){const t=r;if(!c)c=t;const n=sentryEventToApm(t);if(n)a.push(n)}else if(n.type==="transaction"){const t=sentryTransactionToApm(r);if(t)a.push(t)}}if(a.length===0)return null;return{meta:(0,r.buildApmMeta)(n,i,c),events:a}}n.convertSentryBody=convertSentryBody;function sentryEventToApm(t){var n,o,r,a,c,g,l,d,u,I,C,p,m,b,h,G,Z,B,A,y,f,W;const v=t.timestamp?Math.round(t.timestamp*1e3):Date.now();if((o=(n=t.exception)===null||n===void 0?void 0:n.values)===null||o===void 0?void 0:o.length){const n=t.exception.values[t.exception.values.length-1];if(!n)return null;const o=Object.assign(Object.assign({},(r=t.extra)!==null&&r!==void 0?r:{}),(g=(c=(a=t.contexts)===null||a===void 0?void 0:a.trace)===null||c===void 0?void 0:c.data)!==null&&g!==void 0?g:{});const f=Object.assign({},(l=t.tags)!==null&&l!==void 0?l:{});if(t.server_name)f["server_name"]=t.server_name;return{id:(d=t.event_id)!==null&&d!==void 0?d:(0,i.generateId)(),ts:v,type:"error",payload:{type:(u=n.type)!==null&&u!==void 0?u:"Error",message:(I=n.value)!==null&&I!==void 0?I:"",stackTrace:{frames:[...(p=(C=n.stacktrace)===null||C===void 0?void 0:C.frames)!==null&&p!==void 0?p:[]].reverse()},mechanism:(b=(m=n.mechanism)===null||m===void 0?void 0:m.type)!==null&&b!==void 0?b:"generic",fingerprint:t.fingerprint,traceId:(G=(h=t.contexts)===null||h===void 0?void 0:h.trace)===null||G===void 0?void 0:G.trace_id,spanId:(B=(Z=t.contexts)===null||Z===void 0?void 0:Z.trace)===null||B===void 0?void 0:B.span_id,breadcrumbs:(y=(A=t.breadcrumbs)===null||A===void 0?void 0:A.values)!==null&&y!==void 0?y:[],data:Object.keys(o).length>0?o:undefined,tags:Object.keys(f).length>0?f:undefined}}}if(t.message){const n=Object.assign({},(f=t.tags)!==null&&f!==void 0?f:{});if(t.server_name)n["server_name"]=t.server_name;return{id:(W=t.event_id)!==null&&W!==void 0?W:(0,i.generateId)(),ts:v,type:"log",payload:{type:"custom",level:sentryLogLevelToApm(t.level),message:t.message,data:t.extra&&Object.keys(t.extra).length>0?Object.assign({},t.extra):undefined,tags:Object.keys(n).length>0?n:undefined}}}return null}function sentryTransactionToApm(t){var n,o,r,a,c,g,l,d,u,I,C,p,m,b,h,G,Z,B,A,y,f,W;if(((o=(n=t.contexts)===null||n===void 0?void 0:n.trace)===null||o===void 0?void 0:o.op)!=="http.server")return null;const v=t.request;let V=null;if(v===null||v===void 0?void 0:v.url){try{V=new URL(v.url,"http://localhost")}catch(t){}}const R=(c=(a=(r=t.contexts)===null||r===void 0?void 0:r.response)===null||a===void 0?void 0:a.status_code)!==null&&c!==void 0?c:0;return{id:(g=t.event_id)!==null&&g!==void 0?g:(0,i.generateId)(),ts:Math.round(((d=(l=t.start_timestamp)!==null&&l!==void 0?l:t.timestamp)!==null&&d!==void 0?d:0)*1e3),type:"request",payload:{method:(I=(u=v===null||v===void 0?void 0:v.method)===null||u===void 0?void 0:u.toUpperCase())!==null&&I!==void 0?I:"GET",host:(C=V===null||V===void 0?void 0:V.hostname)!==null&&C!==void 0?C:"",flavor:"http",schema:(m=(p=V===null||V===void 0?void 0:V.protocol)===null||p===void 0?void 0:p.replace(":",""))!==null&&m!==void 0?m:"http",path:(b=V===null||V===void 0?void 0:V.pathname)!==null&&b!==void 0?b:"",query:(h=V===null||V===void 0?void 0:V.search)!==null&&h!==void 0?h:"",endTs:Math.round(((G=t.timestamp)!==null&&G!==void 0?G:0)*1e3),statusCode:String(R),errorCode:null,traceId:(A=(B=(Z=t.contexts)===null||Z===void 0?void 0:Z.trace)===null||B===void 0?void 0:B.trace_id)!==null&&A!==void 0?A:"",spanId:(W=(f=(y=t.contexts)===null||y===void 0?void 0:y.trace)===null||f===void 0?void 0:f.span_id)!==null&&W!==void 0?W:"",ok:R>0&&R<400}}}function sentryLogLevelToApm(t){var n;const o={fatal:"error",error:"error",warning:"warn",log:"info",info:"info",debug:"debug"};return(n=o[t!==null&&t!==void 0?t:"info"])!==null&&n!==void 0?n:"info"}},6904:function(t,n,o){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(n,"__esModule",{value:true});n.sendToApm=void 0;const i=r(o(5692));const a=r(o(8611));function sendToApm(t,n){return new Promise(o=>{const r=JSON.stringify(n);const c=new URL(t);const g=c.protocol==="https:";const l=g?i.default:a.default;const d=l.request({hostname:c.hostname,port:c.port||(g?443:80),path:c.pathname,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(r)},timeout:5e3},t=>{t.resume();o()});d.on("error",()=>o());d.on("timeout",()=>{d.destroy();o()});d.write(r);d.end()})}n.sendToApm=sendToApm},8278:function(t,n,o){"use strict";var r=this&&this.__awaiter||function(t,n,o,r){function adopt(t){return t instanceof o?t:new o(function(n){n(t)})}return new(o||(o=Promise))(function(o,i){function fulfilled(t){try{step(r.next(t))}catch(t){i(t)}}function rejected(t){try{step(r["throw"](t))}catch(t){i(t)}}function step(t){t.done?o(t.value):adopt(t.value).then(fulfilled,rejected)}step((r=r.apply(t,n||[])).next())})};Object.defineProperty(n,"__esModule",{value:true});n.makeApmTransport=void 0;const i=o(9090);const a=o(8233);const c=o(6904);const g=o(8676);function makeApmTransport(t){return n=>{const o=t.endpoint?`${t.endpoint.replace(/\/$/,"")}/front/api/${t.projectId}/envelope`:(0,g.buildReportUrl)(t.projectId);function makeRequest(n){return r(this,void 0,void 0,function*(){try{const r=typeof n.body==="string"?n.body:"";const i=(0,a.convertSentryBody)(r,t);if(i){yield(0,c.sendToApm)(o,i)}}catch(t){}return{statusCode:200}})}return(0,i.createTransport)(n,makeRequest)}}n.makeApmTransport=makeApmTransport},8676:(t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.buildReportUrl=void 0;const o="apm.myshopline.com";function buildReportUrl(t){return`https://${o}/front/api/${t}/envelope`}n.buildReportUrl=buildReportUrl},8955:(t,n,o)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.generateId=void 0;function generateId(){if(typeof crypto!=="undefined"&&typeof crypto.randomUUID==="function"){return crypto.randomUUID().replace(/-/g,"")}const{randomBytes:t}=o(6982);return t(16).toString("hex")}n.generateId=generateId},831:function(t,n,o){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(n,"__esModule",{value:true});n.buildApmMeta=n.getProcessSessionId=n.getProcessClientId=void 0;const i=r(o(857));const a=o(7163);const c=o(8955);let g=null;let l=null;function getProcessClientId(){if(!g)g=(0,c.generateId)();return g}n.getProcessClientId=getProcessClientId;function getProcessSessionId(){if(!l)l=(0,c.generateId)();return l}n.getProcessSessionId=getProcessSessionId;function buildApmMeta(t,n,o){var r,c,g;const l=o===null||o===void 0?void 0:o.contexts;const d=l===null||l===void 0?void 0:l["os"];const u=l===null||l===void 0?void 0:l["device"];const I=(r=n["sdk"])!==null&&r!==void 0?r:{};let C;if(d===null||d===void 0?void 0:d["name"]){C=String(d["name"]);if(d["version"])C+=` ${d["version"]}`;if(d["kernel_version"])C+=` (${d["kernel_version"]})`}const p=u&&Object.keys(u).length>0?Object.assign({},u):undefined;const m=o===null||o===void 0?void 0:o["tags"];const b=o===null||o===void 0?void 0:o["extra"];return{session:{id:getProcessClientId(),tabId:getProcessSessionId()},page:{url:`node://${i.default.hostname()}/${process.pid}`,path:`/${process.title||"node"}`},uid:(c=t.uid)!==null&&c!==void 0?c:null,app:{id:t.projectId,release:t.release,environment:t.environment},browser:{userAgent:`Node.js/${process.version}`},sdk:{name:"@sl/logger-apm-node",version:a.SDK_VERSION,integrations:(g=I.integrations)!==null&&g!==void 0?g:[]},platform:"node",os:C,device_info:p,tags:m,data:b}}n.buildApmMeta=buildApmMeta},7163:(t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:true});n.SDK_VERSION=n.SDK_NAME=void 0;n.SDK_NAME="@sl/logger-apm-node";n.SDK_VERSION="1.0.1"},8843:t=>{
|
|
4
4
|
/*!
|
|
5
5
|
localForage -- Offline Storage, Improved
|
|
6
6
|
Version 1.10.0
|
|
7
7
|
https://localforage.github.io/localForage
|
|
8
8
|
(c) 2013-2017 Mozilla, Apache License 2.0
|
|
9
9
|
*/
|
|
10
|
-
(function(n){if(true){t.exports=n()}else{var r}})(function(){var t,n,r;return function e(t,n,r){function s(i,a){if(!n[i]){if(!t[i]){var c=true&&require;if(!a&&c)return c(i,!0);if(o)return o(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var g=n[i]={exports:{}};t[i][0].call(g.exports,function(n){var r=t[i][1][n];return s(r?r:n)},g,g.exports,e,t,n,r)}return n[i].exports}var o=true&&require;for(var i=0;i<r.length;i++)s(r[i]);return s}({1:[function(t,n,r){(function(t){"use strict";var r=t.MutationObserver||t.WebKitMutationObserver;var o;{if(r){var i=0;var a=new r(nextTick);var c=t.document.createTextNode("");a.observe(c,{characterData:true});o=function(){c.data=i=++i%2}}else if(!t.setImmediate&&typeof t.MessageChannel!=="undefined"){var l=new t.MessageChannel;l.port1.onmessage=nextTick;o=function(){l.port2.postMessage(0)}}else if("document"in t&&"onreadystatechange"in t.document.createElement("script")){o=function(){var n=t.document.createElement("script");n.onreadystatechange=function(){nextTick();n.onreadystatechange=null;n.parentNode.removeChild(n);n=null};t.document.documentElement.appendChild(n)}}else{o=function(){setTimeout(nextTick,0)}}}var g;var u=[];function nextTick(){g=true;var t,n;var r=u.length;while(r){n=u;u=[];t=-1;while(++t<r){n[t]()}r=u.length}g=false}n.exports=immediate;function immediate(t){if(u.push(t)===1&&!g){o()}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],2:[function(t,n,r){"use strict";var o=t(1);function INTERNAL(){}var i={};var a=["REJECTED"];var c=["FULFILLED"];var l=["PENDING"];n.exports=Promise;function Promise(t){if(typeof t!=="function"){throw new TypeError("resolver must be a function")}this.state=l;this.queue=[];this.outcome=void 0;if(t!==INTERNAL){safelyResolveThenable(this,t)}}Promise.prototype["catch"]=function(t){return this.then(null,t)};Promise.prototype.then=function(t,n){if(typeof t!=="function"&&this.state===c||typeof n!=="function"&&this.state===a){return this}var r=new this.constructor(INTERNAL);if(this.state!==l){var o=this.state===c?t:n;unwrap(r,o,this.outcome)}else{this.queue.push(new QueueItem(r,t,n))}return r};function QueueItem(t,n,r){this.promise=t;if(typeof n==="function"){this.onFulfilled=n;this.callFulfilled=this.otherCallFulfilled}if(typeof r==="function"){this.onRejected=r;this.callRejected=this.otherCallRejected}}QueueItem.prototype.callFulfilled=function(t){i.resolve(this.promise,t)};QueueItem.prototype.otherCallFulfilled=function(t){unwrap(this.promise,this.onFulfilled,t)};QueueItem.prototype.callRejected=function(t){i.reject(this.promise,t)};QueueItem.prototype.otherCallRejected=function(t){unwrap(this.promise,this.onRejected,t)};function unwrap(t,n,r){o(function(){var o;try{o=n(r)}catch(n){return i.reject(t,n)}if(o===t){i.reject(t,new TypeError("Cannot resolve promise with itself"))}else{i.resolve(t,o)}})}i.resolve=function(t,n){var r=tryCatch(getThen,n);if(r.status==="error"){return i.reject(t,r.value)}var o=r.value;if(o){safelyResolveThenable(t,o)}else{t.state=c;t.outcome=n;var a=-1;var l=t.queue.length;while(++a<l){t.queue[a].callFulfilled(n)}}return t};i.reject=function(t,n){t.state=a;t.outcome=n;var r=-1;var o=t.queue.length;while(++r<o){t.queue[r].callRejected(n)}return t};function getThen(t){var n=t&&t.then;if(t&&(typeof t==="object"||typeof t==="function")&&typeof n==="function"){return function appyThen(){n.apply(t,arguments)}}}function safelyResolveThenable(t,n){var r=false;function onError(n){if(r){return}r=true;i.reject(t,n)}function onSuccess(n){if(r){return}r=true;i.resolve(t,n)}function tryToUnwrap(){n(onSuccess,onError)}var o=tryCatch(tryToUnwrap);if(o.status==="error"){onError(o.value)}}function tryCatch(t,n){var r={};try{r.value=t(n);r.status="success"}catch(t){r.status="error";r.value=t}return r}Promise.resolve=resolve;function resolve(t){if(t instanceof this){return t}return i.resolve(new this(INTERNAL),t)}Promise.reject=reject;function reject(t){var n=new this(INTERNAL);return i.reject(n,t)}Promise.all=all;function all(t){var n=this;if(Object.prototype.toString.call(t)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var r=t.length;var o=false;if(!r){return this.resolve([])}var a=new Array(r);var c=0;var l=-1;var g=new this(INTERNAL);while(++l<r){allResolver(t[l],l)}return g;function allResolver(t,l){n.resolve(t).then(resolveFromAll,function(t){if(!o){o=true;i.reject(g,t)}});function resolveFromAll(t){a[l]=t;if(++c===r&&!o){o=true;i.resolve(g,a)}}}}Promise.race=race;function race(t){var n=this;if(Object.prototype.toString.call(t)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var r=t.length;var o=false;if(!r){return this.resolve([])}var a=-1;var c=new this(INTERNAL);while(++a<r){resolver(t[a])}return c;function resolver(t){n.resolve(t).then(function(t){if(!o){o=true;i.resolve(c,t)}},function(t){if(!o){o=true;i.reject(c,t)}})}}},{1:1}],3:[function(t,n,r){(function(n){"use strict";if(typeof n.Promise!=="function"){n.Promise=t(2)}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{2:2}],4:[function(t,n,r){"use strict";var o=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol==="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function _classCallCheck(t,n){if(!(t instanceof n)){throw new TypeError("Cannot call a class as a function")}}function getIDB(){try{if(typeof indexedDB!=="undefined"){return indexedDB}if(typeof webkitIndexedDB!=="undefined"){return webkitIndexedDB}if(typeof mozIndexedDB!=="undefined"){return mozIndexedDB}if(typeof OIndexedDB!=="undefined"){return OIndexedDB}if(typeof msIndexedDB!=="undefined"){return msIndexedDB}}catch(t){return}}var i=getIDB();function isIndexedDBValid(){try{if(!i||!i.open){return false}var t=typeof openDatabase!=="undefined"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform);var n=typeof fetch==="function"&&fetch.toString().indexOf("[native code")!==-1;return(!t||n)&&typeof indexedDB!=="undefined"&&typeof IDBKeyRange!=="undefined"}catch(t){return false}}function createBlob(t,n){t=t||[];n=n||{};try{return new Blob(t,n)}catch(a){if(a.name!=="TypeError"){throw a}var r=typeof BlobBuilder!=="undefined"?BlobBuilder:typeof MSBlobBuilder!=="undefined"?MSBlobBuilder:typeof MozBlobBuilder!=="undefined"?MozBlobBuilder:WebKitBlobBuilder;var o=new r;for(var i=0;i<t.length;i+=1){o.append(t[i])}return o.getBlob(n.type)}}if(typeof Promise==="undefined"){t(3)}var a=Promise;function executeCallback(t,n){if(n){t.then(function(t){n(null,t)},function(t){n(t)})}}function executeTwoCallbacks(t,n,r){if(typeof n==="function"){t.then(n)}if(typeof r==="function"){t["catch"](r)}}function normalizeKey(t){if(typeof t!=="string"){console.warn(t+" used as a key, but it is not a string.");t=String(t)}return t}function getCallback(){if(arguments.length&&typeof arguments[arguments.length-1]==="function"){return arguments[arguments.length-1]}}var c="local-forage-detect-blob-support";var l=void 0;var g={};var u=Object.prototype.toString;var d="readonly";var I="readwrite";function _binStringToArrayBuffer(t){var n=t.length;var r=new ArrayBuffer(n);var o=new Uint8Array(r);for(var i=0;i<n;i++){o[i]=t.charCodeAt(i)}return r}function _checkBlobSupportWithoutCaching(t){return new a(function(n){var r=t.transaction(c,I);var o=createBlob([""]);r.objectStore(c).put(o,"key");r.onabort=function(t){t.preventDefault();t.stopPropagation();n(false)};r.oncomplete=function(){var t=navigator.userAgent.match(/Chrome\/(\d+)/);var r=navigator.userAgent.match(/Edge\//);n(r||!t||parseInt(t[1],10)>=43)}})["catch"](function(){return false})}function _checkBlobSupport(t){if(typeof l==="boolean"){return a.resolve(l)}return _checkBlobSupportWithoutCaching(t).then(function(t){l=t;return l})}function _deferReadiness(t){var n=g[t.name];var r={};r.promise=new a(function(t,n){r.resolve=t;r.reject=n});n.deferredOperations.push(r);if(!n.dbReady){n.dbReady=r.promise}else{n.dbReady=n.dbReady.then(function(){return r.promise})}}function _advanceReadiness(t){var n=g[t.name];var r=n.deferredOperations.pop();if(r){r.resolve();return r.promise}}function _rejectReadiness(t,n){var r=g[t.name];var o=r.deferredOperations.pop();if(o){o.reject(n);return o.promise}}function _getConnection(t,n){return new a(function(r,o){g[t.name]=g[t.name]||createDbContext();if(t.db){if(n){_deferReadiness(t);t.db.close()}else{return r(t.db)}}var a=[t.name];if(n){a.push(t.version)}var l=i.open.apply(i,a);if(n){l.onupgradeneeded=function(n){var r=l.result;try{r.createObjectStore(t.storeName);if(n.oldVersion<=1){r.createObjectStore(c)}}catch(r){if(r.name==="ConstraintError"){console.warn('The database "'+t.name+'"'+" has been upgraded from version "+n.oldVersion+" to version "+n.newVersion+', but the storage "'+t.storeName+'" already exists.')}else{throw r}}}}l.onerror=function(t){t.preventDefault();o(l.error)};l.onsuccess=function(){var n=l.result;n.onversionchange=function(t){t.target.close()};r(n);_advanceReadiness(t)}})}function _getOriginalConnection(t){return _getConnection(t,false)}function _getUpgradedConnection(t){return _getConnection(t,true)}function _isUpgradeNeeded(t,n){if(!t.db){return true}var r=!t.db.objectStoreNames.contains(t.storeName);var o=t.version<t.db.version;var i=t.version>t.db.version;if(o){if(t.version!==n){console.warn('The database "'+t.name+'"'+" can't be downgraded from version "+t.db.version+" to version "+t.version+".")}t.version=t.db.version}if(i||r){if(r){var a=t.db.version+1;if(a>t.version){t.version=a}}return true}return false}function _encodeBlob(t){return new a(function(n,r){var o=new FileReader;o.onerror=r;o.onloadend=function(r){var o=btoa(r.target.result||"");n({__local_forage_encoded_blob:true,data:o,type:t.type})};o.readAsBinaryString(t)})}function _decodeBlob(t){var n=_binStringToArrayBuffer(atob(t.data));return createBlob([n],{type:t.type})}function _isEncodedBlob(t){return t&&t.__local_forage_encoded_blob}function _fullyReady(t){var n=this;var r=n._initReady().then(function(){var t=g[n._dbInfo.name];if(t&&t.dbReady){return t.dbReady}});executeTwoCallbacks(r,t,t);return r}function _tryReconnect(t){_deferReadiness(t);var n=g[t.name];var r=n.forages;for(var o=0;o<r.length;o++){var i=r[o];if(i._dbInfo.db){i._dbInfo.db.close();i._dbInfo.db=null}}t.db=null;return _getOriginalConnection(t).then(function(n){t.db=n;if(_isUpgradeNeeded(t)){return _getUpgradedConnection(t)}return n}).then(function(o){t.db=n.db=o;for(var i=0;i<r.length;i++){r[i]._dbInfo.db=o}})["catch"](function(n){_rejectReadiness(t,n);throw n})}function createTransaction(t,n,r,o){if(o===undefined){o=1}try{var i=t.db.transaction(t.storeName,n);r(null,i)}catch(i){if(o>0&&(!t.db||i.name==="InvalidStateError"||i.name==="NotFoundError")){return a.resolve().then(function(){if(!t.db||i.name==="NotFoundError"&&!t.db.objectStoreNames.contains(t.storeName)&&t.version<=t.db.version){if(t.db){t.version=t.db.version+1}return _getUpgradedConnection(t)}}).then(function(){return _tryReconnect(t).then(function(){createTransaction(t,n,r,o-1)})})["catch"](r)}r(i)}}function createDbContext(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function _initStorage(t){var n=this;var r={db:null};if(t){for(var o in t){r[o]=t[o]}}var i=g[r.name];if(!i){i=createDbContext();g[r.name]=i}i.forages.push(n);if(!n._initReady){n._initReady=n.ready;n.ready=_fullyReady}var c=[];function ignoreErrors(){return a.resolve()}for(var l=0;l<i.forages.length;l++){var u=i.forages[l];if(u!==n){c.push(u._initReady()["catch"](ignoreErrors))}}var d=i.forages.slice(0);return a.all(c).then(function(){r.db=i.db;return _getOriginalConnection(r)}).then(function(t){r.db=t;if(_isUpgradeNeeded(r,n._defaultConfig.version)){return _getUpgradedConnection(r)}return t}).then(function(t){r.db=i.db=t;n._dbInfo=r;for(var o=0;o<d.length;o++){var a=d[o];if(a!==n){a._dbInfo.db=r.db;a._dbInfo.version=r.version}}})}function getItem(t,n){var r=this;t=normalizeKey(t);var o=new a(function(n,o){r.ready().then(function(){createTransaction(r._dbInfo,d,function(i,a){if(i){return o(i)}try{var c=a.objectStore(r._dbInfo.storeName);var l=c.get(t);l.onsuccess=function(){var t=l.result;if(t===undefined){t=null}if(_isEncodedBlob(t)){t=_decodeBlob(t)}n(t)};l.onerror=function(){o(l.error)}}catch(t){o(t)}})})["catch"](o)});executeCallback(o,n);return o}function iterate(t,n){var r=this;var o=new a(function(n,o){r.ready().then(function(){createTransaction(r._dbInfo,d,function(i,a){if(i){return o(i)}try{var c=a.objectStore(r._dbInfo.storeName);var l=c.openCursor();var g=1;l.onsuccess=function(){var r=l.result;if(r){var o=r.value;if(_isEncodedBlob(o)){o=_decodeBlob(o)}var i=t(o,r.key,g++);if(i!==void 0){n(i)}else{r["continue"]()}}else{n()}};l.onerror=function(){o(l.error)}}catch(t){o(t)}})})["catch"](o)});executeCallback(o,n);return o}function setItem(t,n,r){var o=this;t=normalizeKey(t);var i=new a(function(r,i){var a;o.ready().then(function(){a=o._dbInfo;if(u.call(n)==="[object Blob]"){return _checkBlobSupport(a.db).then(function(t){if(t){return n}return _encodeBlob(n)})}return n}).then(function(n){createTransaction(o._dbInfo,I,function(a,c){if(a){return i(a)}try{var l=c.objectStore(o._dbInfo.storeName);if(n===null){n=undefined}var g=l.put(n,t);c.oncomplete=function(){if(n===undefined){n=null}r(n)};c.onabort=c.onerror=function(){var t=g.error?g.error:g.transaction.error;i(t)}}catch(t){i(t)}})})["catch"](i)});executeCallback(i,r);return i}function removeItem(t,n){var r=this;t=normalizeKey(t);var o=new a(function(n,o){r.ready().then(function(){createTransaction(r._dbInfo,I,function(i,a){if(i){return o(i)}try{var c=a.objectStore(r._dbInfo.storeName);var l=c["delete"](t);a.oncomplete=function(){n()};a.onerror=function(){o(l.error)};a.onabort=function(){var t=l.error?l.error:l.transaction.error;o(t)}}catch(t){o(t)}})})["catch"](o)});executeCallback(o,n);return o}function clear(t){var n=this;var r=new a(function(t,r){n.ready().then(function(){createTransaction(n._dbInfo,I,function(o,i){if(o){return r(o)}try{var a=i.objectStore(n._dbInfo.storeName);var c=a.clear();i.oncomplete=function(){t()};i.onabort=i.onerror=function(){var t=c.error?c.error:c.transaction.error;r(t)}}catch(t){r(t)}})})["catch"](r)});executeCallback(r,t);return r}function length(t){var n=this;var r=new a(function(t,r){n.ready().then(function(){createTransaction(n._dbInfo,d,function(o,i){if(o){return r(o)}try{var a=i.objectStore(n._dbInfo.storeName);var c=a.count();c.onsuccess=function(){t(c.result)};c.onerror=function(){r(c.error)}}catch(t){r(t)}})})["catch"](r)});executeCallback(r,t);return r}function key(t,n){var r=this;var o=new a(function(n,o){if(t<0){n(null);return}r.ready().then(function(){createTransaction(r._dbInfo,d,function(i,a){if(i){return o(i)}try{var c=a.objectStore(r._dbInfo.storeName);var l=false;var g=c.openKeyCursor();g.onsuccess=function(){var r=g.result;if(!r){n(null);return}if(t===0){n(r.key)}else{if(!l){l=true;r.advance(t)}else{n(r.key)}}};g.onerror=function(){o(g.error)}}catch(t){o(t)}})})["catch"](o)});executeCallback(o,n);return o}function keys(t){var n=this;var r=new a(function(t,r){n.ready().then(function(){createTransaction(n._dbInfo,d,function(o,i){if(o){return r(o)}try{var a=i.objectStore(n._dbInfo.storeName);var c=a.openKeyCursor();var l=[];c.onsuccess=function(){var n=c.result;if(!n){t(l);return}l.push(n.key);n["continue"]()};c.onerror=function(){r(c.error)}}catch(t){r(t)}})})["catch"](r)});executeCallback(r,t);return r}function dropInstance(t,n){n=getCallback.apply(this,arguments);var r=this.config();t=typeof t!=="function"&&t||{};if(!t.name){t.name=t.name||r.name;t.storeName=t.storeName||r.storeName}var o=this;var c;if(!t.name){c=a.reject("Invalid arguments")}else{var l=t.name===r.name&&o._dbInfo.db;var u=l?a.resolve(o._dbInfo.db):_getOriginalConnection(t).then(function(n){var r=g[t.name];var o=r.forages;r.db=n;for(var i=0;i<o.length;i++){o[i]._dbInfo.db=n}return n});if(!t.storeName){c=u.then(function(n){_deferReadiness(t);var r=g[t.name];var o=r.forages;n.close();for(var c=0;c<o.length;c++){var l=o[c];l._dbInfo.db=null}var u=new a(function(n,r){var o=i.deleteDatabase(t.name);o.onerror=function(){var t=o.result;if(t){t.close()}r(o.error)};o.onblocked=function(){console.warn('dropInstance blocked for database "'+t.name+'" until all open connections are closed')};o.onsuccess=function(){var t=o.result;if(t){t.close()}n(t)}});return u.then(function(t){r.db=t;for(var n=0;n<o.length;n++){var i=o[n];_advanceReadiness(i._dbInfo)}})["catch"](function(n){(_rejectReadiness(t,n)||a.resolve())["catch"](function(){});throw n})})}else{c=u.then(function(n){if(!n.objectStoreNames.contains(t.storeName)){return}var r=n.version+1;_deferReadiness(t);var o=g[t.name];var c=o.forages;n.close();for(var l=0;l<c.length;l++){var u=c[l];u._dbInfo.db=null;u._dbInfo.version=r}var d=new a(function(n,o){var a=i.open(t.name,r);a.onerror=function(t){var n=a.result;n.close();o(t)};a.onupgradeneeded=function(){var n=a.result;n.deleteObjectStore(t.storeName)};a.onsuccess=function(){var t=a.result;t.close();n(t)}});return d.then(function(t){o.db=t;for(var n=0;n<c.length;n++){var r=c[n];r._dbInfo.db=t;_advanceReadiness(r._dbInfo)}})["catch"](function(n){(_rejectReadiness(t,n)||a.resolve())["catch"](function(){});throw n})})}}executeCallback(c,n);return c}var p={_driver:"asyncStorage",_initStorage:_initStorage,_support:isIndexedDBValid(),iterate:iterate,getItem:getItem,setItem:setItem,removeItem:removeItem,clear:clear,length:length,key:key,keys:keys,dropInstance:dropInstance};function isWebSQLValid(){return typeof openDatabase==="function"}var m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var C="~~local_forage_type~";var b=/^~~local_forage_type~([^~]+)~/;var h="__lfsc__:";var f=h.length;var y="arbf";var G="blob";var B="si08";var A="ui08";var Z="uic8";var S="si16";var v="si32";var W="ur16";var R="ui32";var _="fl32";var V="fl64";var H=f+y.length;var N=Object.prototype.toString;function stringToBuffer(t){var n=t.length*.75;var r=t.length;var o;var i=0;var a,c,l,g;if(t[t.length-1]==="="){n--;if(t[t.length-2]==="="){n--}}var u=new ArrayBuffer(n);var d=new Uint8Array(u);for(o=0;o<r;o+=4){a=m.indexOf(t[o]);c=m.indexOf(t[o+1]);l=m.indexOf(t[o+2]);g=m.indexOf(t[o+3]);d[i++]=a<<2|c>>4;d[i++]=(c&15)<<4|l>>2;d[i++]=(l&3)<<6|g&63}return u}function bufferToString(t){var n=new Uint8Array(t);var r="";var o;for(o=0;o<n.length;o+=3){r+=m[n[o]>>2];r+=m[(n[o]&3)<<4|n[o+1]>>4];r+=m[(n[o+1]&15)<<2|n[o+2]>>6];r+=m[n[o+2]&63]}if(n.length%3===2){r=r.substring(0,r.length-1)+"="}else if(n.length%3===1){r=r.substring(0,r.length-2)+"=="}return r}function serialize(t,n){var r="";if(t){r=N.call(t)}if(t&&(r==="[object ArrayBuffer]"||t.buffer&&N.call(t.buffer)==="[object ArrayBuffer]")){var o;var i=h;if(t instanceof ArrayBuffer){o=t;i+=y}else{o=t.buffer;if(r==="[object Int8Array]"){i+=B}else if(r==="[object Uint8Array]"){i+=A}else if(r==="[object Uint8ClampedArray]"){i+=Z}else if(r==="[object Int16Array]"){i+=S}else if(r==="[object Uint16Array]"){i+=W}else if(r==="[object Int32Array]"){i+=v}else if(r==="[object Uint32Array]"){i+=R}else if(r==="[object Float32Array]"){i+=_}else if(r==="[object Float64Array]"){i+=V}else{n(new Error("Failed to get type for BinaryArray"))}}n(i+bufferToString(o))}else if(r==="[object Blob]"){var a=new FileReader;a.onload=function(){var r=C+t.type+"~"+bufferToString(this.result);n(h+G+r)};a.readAsArrayBuffer(t)}else{try{n(JSON.stringify(t))}catch(r){console.error("Couldn't convert value into a JSON string: ",t);n(null,r)}}}function deserialize(t){if(t.substring(0,f)!==h){return JSON.parse(t)}var n=t.substring(H);var r=t.substring(f,H);var o;if(r===G&&b.test(n)){var i=n.match(b);o=i[1];n=n.substring(i[0].length)}var a=stringToBuffer(n);switch(r){case y:return a;case G:return createBlob([a],{type:o});case B:return new Int8Array(a);case A:return new Uint8Array(a);case Z:return new Uint8ClampedArray(a);case S:return new Int16Array(a);case W:return new Uint16Array(a);case v:return new Int32Array(a);case R:return new Uint32Array(a);case _:return new Float32Array(a);case V:return new Float64Array(a);default:throw new Error("Unkown type: "+r)}}var E={serialize:serialize,deserialize:deserialize,stringToBuffer:stringToBuffer,bufferToString:bufferToString};function createDbTable(t,n,r,o){t.executeSql("CREATE TABLE IF NOT EXISTS "+n.storeName+" "+"(id INTEGER PRIMARY KEY, key unique, value)",[],r,o)}function _initStorage$1(t){var n=this;var r={db:null};if(t){for(var o in t){r[o]=typeof t[o]!=="string"?t[o].toString():t[o]}}var i=new a(function(t,o){try{r.db=openDatabase(r.name,String(r.version),r.description,r.size)}catch(t){return o(t)}r.db.transaction(function(i){createDbTable(i,r,function(){n._dbInfo=r;t()},function(t,n){o(n)})},o)});r.serializer=E;return i}function tryExecuteSql(t,n,r,o,i,a){t.executeSql(r,o,i,function(t,c){if(c.code===c.SYNTAX_ERR){t.executeSql("SELECT name FROM sqlite_master "+"WHERE type='table' AND name = ?",[n.storeName],function(t,l){if(!l.rows.length){createDbTable(t,n,function(){t.executeSql(r,o,i,a)},a)}else{a(t,c)}},a)}else{a(t,c)}},a)}function getItem$1(t,n){var r=this;t=normalizeKey(t);var o=new a(function(n,o){r.ready().then(function(){var i=r._dbInfo;i.db.transaction(function(r){tryExecuteSql(r,i,"SELECT * FROM "+i.storeName+" WHERE key = ? LIMIT 1",[t],function(t,r){var o=r.rows.length?r.rows.item(0).value:null;if(o){o=i.serializer.deserialize(o)}n(o)},function(t,n){o(n)})})})["catch"](o)});executeCallback(o,n);return o}function iterate$1(t,n){var r=this;var o=new a(function(n,o){r.ready().then(function(){var i=r._dbInfo;i.db.transaction(function(r){tryExecuteSql(r,i,"SELECT * FROM "+i.storeName,[],function(r,o){var a=o.rows;var c=a.length;for(var l=0;l<c;l++){var g=a.item(l);var u=g.value;if(u){u=i.serializer.deserialize(u)}u=t(u,g.key,l+1);if(u!==void 0){n(u);return}}n()},function(t,n){o(n)})})})["catch"](o)});executeCallback(o,n);return o}function _setItem(t,n,r,o){var i=this;t=normalizeKey(t);var c=new a(function(a,c){i.ready().then(function(){if(n===undefined){n=null}var l=n;var g=i._dbInfo;g.serializer.serialize(n,function(n,u){if(u){c(u)}else{g.db.transaction(function(r){tryExecuteSql(r,g,"INSERT OR REPLACE INTO "+g.storeName+" "+"(key, value) VALUES (?, ?)",[t,n],function(){a(l)},function(t,n){c(n)})},function(n){if(n.code===n.QUOTA_ERR){if(o>0){a(_setItem.apply(i,[t,l,r,o-1]));return}c(n)}})}})})["catch"](c)});executeCallback(c,r);return c}function setItem$1(t,n,r){return _setItem.apply(this,[t,n,r,1])}function removeItem$1(t,n){var r=this;t=normalizeKey(t);var o=new a(function(n,o){r.ready().then(function(){var i=r._dbInfo;i.db.transaction(function(r){tryExecuteSql(r,i,"DELETE FROM "+i.storeName+" WHERE key = ?",[t],function(){n()},function(t,n){o(n)})})})["catch"](o)});executeCallback(o,n);return o}function clear$1(t){var n=this;var r=new a(function(t,r){n.ready().then(function(){var o=n._dbInfo;o.db.transaction(function(n){tryExecuteSql(n,o,"DELETE FROM "+o.storeName,[],function(){t()},function(t,n){r(n)})})})["catch"](r)});executeCallback(r,t);return r}function length$1(t){var n=this;var r=new a(function(t,r){n.ready().then(function(){var o=n._dbInfo;o.db.transaction(function(n){tryExecuteSql(n,o,"SELECT COUNT(key) as c FROM "+o.storeName,[],function(n,r){var o=r.rows.item(0).c;t(o)},function(t,n){r(n)})})})["catch"](r)});executeCallback(r,t);return r}function key$1(t,n){var r=this;var o=new a(function(n,o){r.ready().then(function(){var i=r._dbInfo;i.db.transaction(function(r){tryExecuteSql(r,i,"SELECT key FROM "+i.storeName+" WHERE id = ? LIMIT 1",[t+1],function(t,r){var o=r.rows.length?r.rows.item(0).key:null;n(o)},function(t,n){o(n)})})})["catch"](o)});executeCallback(o,n);return o}function keys$1(t){var n=this;var r=new a(function(t,r){n.ready().then(function(){var o=n._dbInfo;o.db.transaction(function(n){tryExecuteSql(n,o,"SELECT key FROM "+o.storeName,[],function(n,r){var o=[];for(var i=0;i<r.rows.length;i++){o.push(r.rows.item(i).key)}t(o)},function(t,n){r(n)})})})["catch"](r)});executeCallback(r,t);return r}function getAllStoreNames(t){return new a(function(n,r){t.transaction(function(o){o.executeSql("SELECT name FROM sqlite_master "+"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(r,o){var i=[];for(var a=0;a<o.rows.length;a++){i.push(o.rows.item(a).name)}n({db:t,storeNames:i})},function(t,n){r(n)})},function(t){r(t)})})}function dropInstance$1(t,n){n=getCallback.apply(this,arguments);var r=this.config();t=typeof t!=="function"&&t||{};if(!t.name){t.name=t.name||r.name;t.storeName=t.storeName||r.storeName}var o=this;var i;if(!t.name){i=a.reject("Invalid arguments")}else{i=new a(function(n){var i;if(t.name===r.name){i=o._dbInfo.db}else{i=openDatabase(t.name,"","",0)}if(!t.storeName){n(getAllStoreNames(i))}else{n({db:i,storeNames:[t.storeName]})}}).then(function(t){return new a(function(n,r){t.db.transaction(function(o){function dropTable(t){return new a(function(n,r){o.executeSql("DROP TABLE IF EXISTS "+t,[],function(){n()},function(t,n){r(n)})})}var i=[];for(var c=0,l=t.storeNames.length;c<l;c++){i.push(dropTable(t.storeNames[c]))}a.all(i).then(function(){n()})["catch"](function(t){r(t)})},function(t){r(t)})})})}executeCallback(i,n);return i}var T={_driver:"webSQLStorage",_initStorage:_initStorage$1,_support:isWebSQLValid(),iterate:iterate$1,getItem:getItem$1,setItem:setItem$1,removeItem:removeItem$1,clear:clear$1,length:length$1,key:key$1,keys:keys$1,dropInstance:dropInstance$1};function isLocalStorageValid(){try{return typeof localStorage!=="undefined"&&"setItem"in localStorage&&!!localStorage.setItem}catch(t){return false}}function _getKeyPrefix(t,n){var r=t.name+"/";if(t.storeName!==n.storeName){r+=t.storeName+"/"}return r}function checkIfLocalStorageThrows(){var t="_localforage_support_test";try{localStorage.setItem(t,true);localStorage.removeItem(t);return false}catch(t){return true}}function _isLocalStorageUsable(){return!checkIfLocalStorageThrows()||localStorage.length>0}function _initStorage$2(t){var n=this;var r={};if(t){for(var o in t){r[o]=t[o]}}r.keyPrefix=_getKeyPrefix(t,n._defaultConfig);if(!_isLocalStorageUsable()){return a.reject()}n._dbInfo=r;r.serializer=E;return a.resolve()}function clear$2(t){var n=this;var r=n.ready().then(function(){var t=n._dbInfo.keyPrefix;for(var r=localStorage.length-1;r>=0;r--){var o=localStorage.key(r);if(o.indexOf(t)===0){localStorage.removeItem(o)}}});executeCallback(r,t);return r}function getItem$2(t,n){var r=this;t=normalizeKey(t);var o=r.ready().then(function(){var n=r._dbInfo;var o=localStorage.getItem(n.keyPrefix+t);if(o){o=n.serializer.deserialize(o)}return o});executeCallback(o,n);return o}function iterate$2(t,n){var r=this;var o=r.ready().then(function(){var n=r._dbInfo;var o=n.keyPrefix;var i=o.length;var a=localStorage.length;var c=1;for(var l=0;l<a;l++){var g=localStorage.key(l);if(g.indexOf(o)!==0){continue}var u=localStorage.getItem(g);if(u){u=n.serializer.deserialize(u)}u=t(u,g.substring(i),c++);if(u!==void 0){return u}}});executeCallback(o,n);return o}function key$2(t,n){var r=this;var o=r.ready().then(function(){var n=r._dbInfo;var o;try{o=localStorage.key(t)}catch(t){o=null}if(o){o=o.substring(n.keyPrefix.length)}return o});executeCallback(o,n);return o}function keys$2(t){var n=this;var r=n.ready().then(function(){var t=n._dbInfo;var r=localStorage.length;var o=[];for(var i=0;i<r;i++){var a=localStorage.key(i);if(a.indexOf(t.keyPrefix)===0){o.push(a.substring(t.keyPrefix.length))}}return o});executeCallback(r,t);return r}function length$2(t){var n=this;var r=n.keys().then(function(t){return t.length});executeCallback(r,t);return r}function removeItem$2(t,n){var r=this;t=normalizeKey(t);var o=r.ready().then(function(){var n=r._dbInfo;localStorage.removeItem(n.keyPrefix+t)});executeCallback(o,n);return o}function setItem$2(t,n,r){var o=this;t=normalizeKey(t);var i=o.ready().then(function(){if(n===undefined){n=null}var r=n;return new a(function(i,a){var c=o._dbInfo;c.serializer.serialize(n,function(n,o){if(o){a(o)}else{try{localStorage.setItem(c.keyPrefix+t,n);i(r)}catch(t){if(t.name==="QuotaExceededError"||t.name==="NS_ERROR_DOM_QUOTA_REACHED"){a(t)}a(t)}}})})});executeCallback(i,r);return i}function dropInstance$2(t,n){n=getCallback.apply(this,arguments);t=typeof t!=="function"&&t||{};if(!t.name){var r=this.config();t.name=t.name||r.name;t.storeName=t.storeName||r.storeName}var o=this;var i;if(!t.name){i=a.reject("Invalid arguments")}else{i=new a(function(n){if(!t.storeName){n(t.name+"/")}else{n(_getKeyPrefix(t,o._defaultConfig))}}).then(function(t){for(var n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);if(r.indexOf(t)===0){localStorage.removeItem(r)}}})}executeCallback(i,n);return i}var Y={_driver:"localStorageWrapper",_initStorage:_initStorage$2,_support:isLocalStorageValid(),iterate:iterate$2,getItem:getItem$2,setItem:setItem$2,removeItem:removeItem$2,clear:clear$2,length:length$2,key:key$2,keys:keys$2,dropInstance:dropInstance$2};var X=function sameValue(t,n){return t===n||typeof t==="number"&&typeof n==="number"&&isNaN(t)&&isNaN(n)};var F=function includes(t,n){var r=t.length;var o=0;while(o<r){if(X(t[o],n)){return true}o++}return false};var w=Array.isArray||function(t){return Object.prototype.toString.call(t)==="[object Array]"};var K={};var k={};var U={INDEXEDDB:p,WEBSQL:T,LOCALSTORAGE:Y};var J=[U.INDEXEDDB._driver,U.WEBSQL._driver,U.LOCALSTORAGE._driver];var x=["dropInstance"];var L=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(x);var z={description:"",driver:J.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function callWhenReady(t,n){t[n]=function(){var r=arguments;return t.ready().then(function(){return t[n].apply(t,r)})}}function extend(){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n){for(var r in n){if(n.hasOwnProperty(r)){if(w(n[r])){arguments[0][r]=n[r].slice()}else{arguments[0][r]=n[r]}}}}}return arguments[0]}var O=function(){function LocalForage(t){_classCallCheck(this,LocalForage);for(var n in U){if(U.hasOwnProperty(n)){var r=U[n];var o=r._driver;this[n]=o;if(!K[o]){this.defineDriver(r)}}}this._defaultConfig=extend({},z);this._config=extend({},this._defaultConfig,t);this._driverSet=null;this._initDriver=null;this._ready=false;this._dbInfo=null;this._wrapLibraryMethodsWithReady();this.setDriver(this._config.driver)["catch"](function(){})}LocalForage.prototype.config=function config(t){if((typeof t==="undefined"?"undefined":o(t))==="object"){if(this._ready){return new Error("Can't call config() after localforage "+"has been used.")}for(var n in t){if(n==="storeName"){t[n]=t[n].replace(/\W/g,"_")}if(n==="version"&&typeof t[n]!=="number"){return new Error("Database version must be a number.")}this._config[n]=t[n]}if("driver"in t&&t.driver){return this.setDriver(this._config.driver)}return true}else if(typeof t==="string"){return this._config[t]}else{return this._config}};LocalForage.prototype.defineDriver=function defineDriver(t,n,r){var o=new a(function(n,r){try{var o=t._driver;var i=new Error("Custom driver not compliant; see "+"https://mozilla.github.io/localForage/#definedriver");if(!t._driver){r(i);return}var c=L.concat("_initStorage");for(var l=0,g=c.length;l<g;l++){var u=c[l];var d=!F(x,u);if((d||t[u])&&typeof t[u]!=="function"){r(i);return}}var I=function configureMissingMethods(){var n=function methodNotImplementedFactory(t){return function(){var n=new Error("Method "+t+" is not implemented by the current driver");var r=a.reject(n);executeCallback(r,arguments[arguments.length-1]);return r}};for(var r=0,o=x.length;r<o;r++){var i=x[r];if(!t[i]){t[i]=n(i)}}};I();var p=function setDriverSupport(r){if(K[o]){console.info("Redefining LocalForage driver: "+o)}K[o]=t;k[o]=r;n()};if("_support"in t){if(t._support&&typeof t._support==="function"){t._support().then(p,r)}else{p(!!t._support)}}else{p(true)}}catch(t){r(t)}});executeTwoCallbacks(o,n,r);return o};LocalForage.prototype.driver=function driver(){return this._driver||null};LocalForage.prototype.getDriver=function getDriver(t,n,r){var o=K[t]?a.resolve(K[t]):a.reject(new Error("Driver not found."));executeTwoCallbacks(o,n,r);return o};LocalForage.prototype.getSerializer=function getSerializer(t){var n=a.resolve(E);executeTwoCallbacks(n,t);return n};LocalForage.prototype.ready=function ready(t){var n=this;var r=n._driverSet.then(function(){if(n._ready===null){n._ready=n._initDriver()}return n._ready});executeTwoCallbacks(r,t,t);return r};LocalForage.prototype.setDriver=function setDriver(t,n,r){var o=this;if(!w(t)){t=[t]}var i=this._getSupportedDrivers(t);function setDriverToConfig(){o._config.driver=o.driver()}function extendSelfWithDriver(t){o._extend(t);setDriverToConfig();o._ready=o._initStorage(o._config);return o._ready}function initDriver(t){return function(){var n=0;function driverPromiseLoop(){while(n<t.length){var r=t[n];n++;o._dbInfo=null;o._ready=null;return o.getDriver(r).then(extendSelfWithDriver)["catch"](driverPromiseLoop)}setDriverToConfig();var i=new Error("No available storage method found.");o._driverSet=a.reject(i);return o._driverSet}return driverPromiseLoop()}}var c=this._driverSet!==null?this._driverSet["catch"](function(){return a.resolve()}):a.resolve();this._driverSet=c.then(function(){var t=i[0];o._dbInfo=null;o._ready=null;return o.getDriver(t).then(function(t){o._driver=t._driver;setDriverToConfig();o._wrapLibraryMethodsWithReady();o._initDriver=initDriver(i)})})["catch"](function(){setDriverToConfig();var t=new Error("No available storage method found.");o._driverSet=a.reject(t);return o._driverSet});executeTwoCallbacks(this._driverSet,n,r);return this._driverSet};LocalForage.prototype.supports=function supports(t){return!!k[t]};LocalForage.prototype._extend=function _extend(t){extend(this,t)};LocalForage.prototype._getSupportedDrivers=function _getSupportedDrivers(t){var n=[];for(var r=0,o=t.length;r<o;r++){var i=t[r];if(this.supports(i)){n.push(i)}}return n};LocalForage.prototype._wrapLibraryMethodsWithReady=function _wrapLibraryMethodsWithReady(){for(var t=0,n=L.length;t<n;t++){callWhenReady(this,L[t])}};LocalForage.prototype.createInstance=function createInstance(t){return new LocalForage(t)};return LocalForage}();var M=new O;n.exports=M},{3:3}]},{},[4])(4)})},290:t=>{"use strict";t.exports=require("async_hooks")},5317:t=>{"use strict";t.exports=require("child_process")},6982:t=>{"use strict";t.exports=require("crypto")},1637:t=>{"use strict";t.exports=require("diagnostics_channel")},3167:t=>{"use strict";t.exports=require("domain")},9896:t=>{"use strict";t.exports=require("fs")},8611:t=>{"use strict";t.exports=require("http")},5692:t=>{"use strict";t.exports=require("https")},264:t=>{"use strict";t.exports=require("inspector")},9278:t=>{"use strict";t.exports=require("net")},857:t=>{"use strict";t.exports=require("os")},6928:t=>{"use strict";t.exports=require("path")},2203:t=>{"use strict";t.exports=require("stream")},4756:t=>{"use strict";t.exports=require("tls")},7016:t=>{"use strict";t.exports=require("url")},9023:t=>{"use strict";t.exports=require("util")},3106:t=>{"use strict";t.exports=require("zlib")}};var n={};function __nccwpck_require__(r){var o=n[r];if(o!==undefined){return o.exports}var i=n[r]={id:r,loaded:false,exports:{}};var a=true;try{t[r].call(i.exports,i,i.exports,__nccwpck_require__);a=false}finally{if(a)delete n[r]}i.loaded=true;return i.exports}(()=>{__nccwpck_require__.nmd=t=>{t.paths=[];if(!t.children)t.children=[];return t}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r={};(()=>{"use strict";var t=r;Object.defineProperty(t,"__esModule",{value:true});t.Integrations=t.Handlers=t.close=t.flush=t.startTransaction=t.configureScope=t.withScope=t.setExtra=t.setContext=t.setUser=t.setTags=t.setTag=t.addBreadcrumb=t.captureEvent=t.captureMessage=t.captureException=t.init=void 0;var n=__nccwpck_require__(9509);Object.defineProperty(t,"init",{enumerable:true,get:function(){return n.init}});var o=__nccwpck_require__(3986);Object.defineProperty(t,"captureException",{enumerable:true,get:function(){return o.captureException}});Object.defineProperty(t,"captureMessage",{enumerable:true,get:function(){return o.captureMessage}});Object.defineProperty(t,"captureEvent",{enumerable:true,get:function(){return o.captureEvent}});Object.defineProperty(t,"addBreadcrumb",{enumerable:true,get:function(){return o.addBreadcrumb}});Object.defineProperty(t,"setTag",{enumerable:true,get:function(){return o.setTag}});Object.defineProperty(t,"setTags",{enumerable:true,get:function(){return o.setTags}});Object.defineProperty(t,"setUser",{enumerable:true,get:function(){return o.setUser}});Object.defineProperty(t,"setContext",{enumerable:true,get:function(){return o.setContext}});Object.defineProperty(t,"setExtra",{enumerable:true,get:function(){return o.setExtra}});Object.defineProperty(t,"withScope",{enumerable:true,get:function(){return o.withScope}});Object.defineProperty(t,"configureScope",{enumerable:true,get:function(){return o.configureScope}});Object.defineProperty(t,"startTransaction",{enumerable:true,get:function(){return o.startTransaction}});Object.defineProperty(t,"flush",{enumerable:true,get:function(){return o.flush}});Object.defineProperty(t,"close",{enumerable:true,get:function(){return o.close}});Object.defineProperty(t,"Handlers",{enumerable:true,get:function(){return o.Handlers}});Object.defineProperty(t,"Integrations",{enumerable:true,get:function(){return o.Integrations}})})();module.exports=r})();
|
|
10
|
+
(function(n){if(true){t.exports=n()}else{var o}})(function(){var t,n,o;return function e(t,n,o){function s(i,a){if(!n[i]){if(!t[i]){var c=true&&require;if(!a&&c)return c(i,!0);if(r)return r(i,!0);var g=new Error("Cannot find module '"+i+"'");throw g.code="MODULE_NOT_FOUND",g}var l=n[i]={exports:{}};t[i][0].call(l.exports,function(n){var o=t[i][1][n];return s(o?o:n)},l,l.exports,e,t,n,o)}return n[i].exports}var r=true&&require;for(var i=0;i<o.length;i++)s(o[i]);return s}({1:[function(t,n,o){(function(t){"use strict";var o=t.MutationObserver||t.WebKitMutationObserver;var r;{if(o){var i=0;var a=new o(nextTick);var c=t.document.createTextNode("");a.observe(c,{characterData:true});r=function(){c.data=i=++i%2}}else if(!t.setImmediate&&typeof t.MessageChannel!=="undefined"){var g=new t.MessageChannel;g.port1.onmessage=nextTick;r=function(){g.port2.postMessage(0)}}else if("document"in t&&"onreadystatechange"in t.document.createElement("script")){r=function(){var n=t.document.createElement("script");n.onreadystatechange=function(){nextTick();n.onreadystatechange=null;n.parentNode.removeChild(n);n=null};t.document.documentElement.appendChild(n)}}else{r=function(){setTimeout(nextTick,0)}}}var l;var d=[];function nextTick(){l=true;var t,n;var o=d.length;while(o){n=d;d=[];t=-1;while(++t<o){n[t]()}o=d.length}l=false}n.exports=immediate;function immediate(t){if(d.push(t)===1&&!l){r()}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],2:[function(t,n,o){"use strict";var r=t(1);function INTERNAL(){}var i={};var a=["REJECTED"];var c=["FULFILLED"];var g=["PENDING"];n.exports=Promise;function Promise(t){if(typeof t!=="function"){throw new TypeError("resolver must be a function")}this.state=g;this.queue=[];this.outcome=void 0;if(t!==INTERNAL){safelyResolveThenable(this,t)}}Promise.prototype["catch"]=function(t){return this.then(null,t)};Promise.prototype.then=function(t,n){if(typeof t!=="function"&&this.state===c||typeof n!=="function"&&this.state===a){return this}var o=new this.constructor(INTERNAL);if(this.state!==g){var r=this.state===c?t:n;unwrap(o,r,this.outcome)}else{this.queue.push(new QueueItem(o,t,n))}return o};function QueueItem(t,n,o){this.promise=t;if(typeof n==="function"){this.onFulfilled=n;this.callFulfilled=this.otherCallFulfilled}if(typeof o==="function"){this.onRejected=o;this.callRejected=this.otherCallRejected}}QueueItem.prototype.callFulfilled=function(t){i.resolve(this.promise,t)};QueueItem.prototype.otherCallFulfilled=function(t){unwrap(this.promise,this.onFulfilled,t)};QueueItem.prototype.callRejected=function(t){i.reject(this.promise,t)};QueueItem.prototype.otherCallRejected=function(t){unwrap(this.promise,this.onRejected,t)};function unwrap(t,n,o){r(function(){var r;try{r=n(o)}catch(n){return i.reject(t,n)}if(r===t){i.reject(t,new TypeError("Cannot resolve promise with itself"))}else{i.resolve(t,r)}})}i.resolve=function(t,n){var o=tryCatch(getThen,n);if(o.status==="error"){return i.reject(t,o.value)}var r=o.value;if(r){safelyResolveThenable(t,r)}else{t.state=c;t.outcome=n;var a=-1;var g=t.queue.length;while(++a<g){t.queue[a].callFulfilled(n)}}return t};i.reject=function(t,n){t.state=a;t.outcome=n;var o=-1;var r=t.queue.length;while(++o<r){t.queue[o].callRejected(n)}return t};function getThen(t){var n=t&&t.then;if(t&&(typeof t==="object"||typeof t==="function")&&typeof n==="function"){return function appyThen(){n.apply(t,arguments)}}}function safelyResolveThenable(t,n){var o=false;function onError(n){if(o){return}o=true;i.reject(t,n)}function onSuccess(n){if(o){return}o=true;i.resolve(t,n)}function tryToUnwrap(){n(onSuccess,onError)}var r=tryCatch(tryToUnwrap);if(r.status==="error"){onError(r.value)}}function tryCatch(t,n){var o={};try{o.value=t(n);o.status="success"}catch(t){o.status="error";o.value=t}return o}Promise.resolve=resolve;function resolve(t){if(t instanceof this){return t}return i.resolve(new this(INTERNAL),t)}Promise.reject=reject;function reject(t){var n=new this(INTERNAL);return i.reject(n,t)}Promise.all=all;function all(t){var n=this;if(Object.prototype.toString.call(t)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var o=t.length;var r=false;if(!o){return this.resolve([])}var a=new Array(o);var c=0;var g=-1;var l=new this(INTERNAL);while(++g<o){allResolver(t[g],g)}return l;function allResolver(t,g){n.resolve(t).then(resolveFromAll,function(t){if(!r){r=true;i.reject(l,t)}});function resolveFromAll(t){a[g]=t;if(++c===o&&!r){r=true;i.resolve(l,a)}}}}Promise.race=race;function race(t){var n=this;if(Object.prototype.toString.call(t)!=="[object Array]"){return this.reject(new TypeError("must be an array"))}var o=t.length;var r=false;if(!o){return this.resolve([])}var a=-1;var c=new this(INTERNAL);while(++a<o){resolver(t[a])}return c;function resolver(t){n.resolve(t).then(function(t){if(!r){r=true;i.resolve(c,t)}},function(t){if(!r){r=true;i.reject(c,t)}})}}},{1:1}],3:[function(t,n,o){(function(n){"use strict";if(typeof n.Promise!=="function"){n.Promise=t(2)}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{2:2}],4:[function(t,n,o){"use strict";var r=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol==="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function _classCallCheck(t,n){if(!(t instanceof n)){throw new TypeError("Cannot call a class as a function")}}function getIDB(){try{if(typeof indexedDB!=="undefined"){return indexedDB}if(typeof webkitIndexedDB!=="undefined"){return webkitIndexedDB}if(typeof mozIndexedDB!=="undefined"){return mozIndexedDB}if(typeof OIndexedDB!=="undefined"){return OIndexedDB}if(typeof msIndexedDB!=="undefined"){return msIndexedDB}}catch(t){return}}var i=getIDB();function isIndexedDBValid(){try{if(!i||!i.open){return false}var t=typeof openDatabase!=="undefined"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform);var n=typeof fetch==="function"&&fetch.toString().indexOf("[native code")!==-1;return(!t||n)&&typeof indexedDB!=="undefined"&&typeof IDBKeyRange!=="undefined"}catch(t){return false}}function createBlob(t,n){t=t||[];n=n||{};try{return new Blob(t,n)}catch(a){if(a.name!=="TypeError"){throw a}var o=typeof BlobBuilder!=="undefined"?BlobBuilder:typeof MSBlobBuilder!=="undefined"?MSBlobBuilder:typeof MozBlobBuilder!=="undefined"?MozBlobBuilder:WebKitBlobBuilder;var r=new o;for(var i=0;i<t.length;i+=1){r.append(t[i])}return r.getBlob(n.type)}}if(typeof Promise==="undefined"){t(3)}var a=Promise;function executeCallback(t,n){if(n){t.then(function(t){n(null,t)},function(t){n(t)})}}function executeTwoCallbacks(t,n,o){if(typeof n==="function"){t.then(n)}if(typeof o==="function"){t["catch"](o)}}function normalizeKey(t){if(typeof t!=="string"){console.warn(t+" used as a key, but it is not a string.");t=String(t)}return t}function getCallback(){if(arguments.length&&typeof arguments[arguments.length-1]==="function"){return arguments[arguments.length-1]}}var c="local-forage-detect-blob-support";var g=void 0;var l={};var d=Object.prototype.toString;var u="readonly";var I="readwrite";function _binStringToArrayBuffer(t){var n=t.length;var o=new ArrayBuffer(n);var r=new Uint8Array(o);for(var i=0;i<n;i++){r[i]=t.charCodeAt(i)}return o}function _checkBlobSupportWithoutCaching(t){return new a(function(n){var o=t.transaction(c,I);var r=createBlob([""]);o.objectStore(c).put(r,"key");o.onabort=function(t){t.preventDefault();t.stopPropagation();n(false)};o.oncomplete=function(){var t=navigator.userAgent.match(/Chrome\/(\d+)/);var o=navigator.userAgent.match(/Edge\//);n(o||!t||parseInt(t[1],10)>=43)}})["catch"](function(){return false})}function _checkBlobSupport(t){if(typeof g==="boolean"){return a.resolve(g)}return _checkBlobSupportWithoutCaching(t).then(function(t){g=t;return g})}function _deferReadiness(t){var n=l[t.name];var o={};o.promise=new a(function(t,n){o.resolve=t;o.reject=n});n.deferredOperations.push(o);if(!n.dbReady){n.dbReady=o.promise}else{n.dbReady=n.dbReady.then(function(){return o.promise})}}function _advanceReadiness(t){var n=l[t.name];var o=n.deferredOperations.pop();if(o){o.resolve();return o.promise}}function _rejectReadiness(t,n){var o=l[t.name];var r=o.deferredOperations.pop();if(r){r.reject(n);return r.promise}}function _getConnection(t,n){return new a(function(o,r){l[t.name]=l[t.name]||createDbContext();if(t.db){if(n){_deferReadiness(t);t.db.close()}else{return o(t.db)}}var a=[t.name];if(n){a.push(t.version)}var g=i.open.apply(i,a);if(n){g.onupgradeneeded=function(n){var o=g.result;try{o.createObjectStore(t.storeName);if(n.oldVersion<=1){o.createObjectStore(c)}}catch(o){if(o.name==="ConstraintError"){console.warn('The database "'+t.name+'"'+" has been upgraded from version "+n.oldVersion+" to version "+n.newVersion+', but the storage "'+t.storeName+'" already exists.')}else{throw o}}}}g.onerror=function(t){t.preventDefault();r(g.error)};g.onsuccess=function(){var n=g.result;n.onversionchange=function(t){t.target.close()};o(n);_advanceReadiness(t)}})}function _getOriginalConnection(t){return _getConnection(t,false)}function _getUpgradedConnection(t){return _getConnection(t,true)}function _isUpgradeNeeded(t,n){if(!t.db){return true}var o=!t.db.objectStoreNames.contains(t.storeName);var r=t.version<t.db.version;var i=t.version>t.db.version;if(r){if(t.version!==n){console.warn('The database "'+t.name+'"'+" can't be downgraded from version "+t.db.version+" to version "+t.version+".")}t.version=t.db.version}if(i||o){if(o){var a=t.db.version+1;if(a>t.version){t.version=a}}return true}return false}function _encodeBlob(t){return new a(function(n,o){var r=new FileReader;r.onerror=o;r.onloadend=function(o){var r=btoa(o.target.result||"");n({__local_forage_encoded_blob:true,data:r,type:t.type})};r.readAsBinaryString(t)})}function _decodeBlob(t){var n=_binStringToArrayBuffer(atob(t.data));return createBlob([n],{type:t.type})}function _isEncodedBlob(t){return t&&t.__local_forage_encoded_blob}function _fullyReady(t){var n=this;var o=n._initReady().then(function(){var t=l[n._dbInfo.name];if(t&&t.dbReady){return t.dbReady}});executeTwoCallbacks(o,t,t);return o}function _tryReconnect(t){_deferReadiness(t);var n=l[t.name];var o=n.forages;for(var r=0;r<o.length;r++){var i=o[r];if(i._dbInfo.db){i._dbInfo.db.close();i._dbInfo.db=null}}t.db=null;return _getOriginalConnection(t).then(function(n){t.db=n;if(_isUpgradeNeeded(t)){return _getUpgradedConnection(t)}return n}).then(function(r){t.db=n.db=r;for(var i=0;i<o.length;i++){o[i]._dbInfo.db=r}})["catch"](function(n){_rejectReadiness(t,n);throw n})}function createTransaction(t,n,o,r){if(r===undefined){r=1}try{var i=t.db.transaction(t.storeName,n);o(null,i)}catch(i){if(r>0&&(!t.db||i.name==="InvalidStateError"||i.name==="NotFoundError")){return a.resolve().then(function(){if(!t.db||i.name==="NotFoundError"&&!t.db.objectStoreNames.contains(t.storeName)&&t.version<=t.db.version){if(t.db){t.version=t.db.version+1}return _getUpgradedConnection(t)}}).then(function(){return _tryReconnect(t).then(function(){createTransaction(t,n,o,r-1)})})["catch"](o)}o(i)}}function createDbContext(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function _initStorage(t){var n=this;var o={db:null};if(t){for(var r in t){o[r]=t[r]}}var i=l[o.name];if(!i){i=createDbContext();l[o.name]=i}i.forages.push(n);if(!n._initReady){n._initReady=n.ready;n.ready=_fullyReady}var c=[];function ignoreErrors(){return a.resolve()}for(var g=0;g<i.forages.length;g++){var d=i.forages[g];if(d!==n){c.push(d._initReady()["catch"](ignoreErrors))}}var u=i.forages.slice(0);return a.all(c).then(function(){o.db=i.db;return _getOriginalConnection(o)}).then(function(t){o.db=t;if(_isUpgradeNeeded(o,n._defaultConfig.version)){return _getUpgradedConnection(o)}return t}).then(function(t){o.db=i.db=t;n._dbInfo=o;for(var r=0;r<u.length;r++){var a=u[r];if(a!==n){a._dbInfo.db=o.db;a._dbInfo.version=o.version}}})}function getItem(t,n){var o=this;t=normalizeKey(t);var r=new a(function(n,r){o.ready().then(function(){createTransaction(o._dbInfo,u,function(i,a){if(i){return r(i)}try{var c=a.objectStore(o._dbInfo.storeName);var g=c.get(t);g.onsuccess=function(){var t=g.result;if(t===undefined){t=null}if(_isEncodedBlob(t)){t=_decodeBlob(t)}n(t)};g.onerror=function(){r(g.error)}}catch(t){r(t)}})})["catch"](r)});executeCallback(r,n);return r}function iterate(t,n){var o=this;var r=new a(function(n,r){o.ready().then(function(){createTransaction(o._dbInfo,u,function(i,a){if(i){return r(i)}try{var c=a.objectStore(o._dbInfo.storeName);var g=c.openCursor();var l=1;g.onsuccess=function(){var o=g.result;if(o){var r=o.value;if(_isEncodedBlob(r)){r=_decodeBlob(r)}var i=t(r,o.key,l++);if(i!==void 0){n(i)}else{o["continue"]()}}else{n()}};g.onerror=function(){r(g.error)}}catch(t){r(t)}})})["catch"](r)});executeCallback(r,n);return r}function setItem(t,n,o){var r=this;t=normalizeKey(t);var i=new a(function(o,i){var a;r.ready().then(function(){a=r._dbInfo;if(d.call(n)==="[object Blob]"){return _checkBlobSupport(a.db).then(function(t){if(t){return n}return _encodeBlob(n)})}return n}).then(function(n){createTransaction(r._dbInfo,I,function(a,c){if(a){return i(a)}try{var g=c.objectStore(r._dbInfo.storeName);if(n===null){n=undefined}var l=g.put(n,t);c.oncomplete=function(){if(n===undefined){n=null}o(n)};c.onabort=c.onerror=function(){var t=l.error?l.error:l.transaction.error;i(t)}}catch(t){i(t)}})})["catch"](i)});executeCallback(i,o);return i}function removeItem(t,n){var o=this;t=normalizeKey(t);var r=new a(function(n,r){o.ready().then(function(){createTransaction(o._dbInfo,I,function(i,a){if(i){return r(i)}try{var c=a.objectStore(o._dbInfo.storeName);var g=c["delete"](t);a.oncomplete=function(){n()};a.onerror=function(){r(g.error)};a.onabort=function(){var t=g.error?g.error:g.transaction.error;r(t)}}catch(t){r(t)}})})["catch"](r)});executeCallback(r,n);return r}function clear(t){var n=this;var o=new a(function(t,o){n.ready().then(function(){createTransaction(n._dbInfo,I,function(r,i){if(r){return o(r)}try{var a=i.objectStore(n._dbInfo.storeName);var c=a.clear();i.oncomplete=function(){t()};i.onabort=i.onerror=function(){var t=c.error?c.error:c.transaction.error;o(t)}}catch(t){o(t)}})})["catch"](o)});executeCallback(o,t);return o}function length(t){var n=this;var o=new a(function(t,o){n.ready().then(function(){createTransaction(n._dbInfo,u,function(r,i){if(r){return o(r)}try{var a=i.objectStore(n._dbInfo.storeName);var c=a.count();c.onsuccess=function(){t(c.result)};c.onerror=function(){o(c.error)}}catch(t){o(t)}})})["catch"](o)});executeCallback(o,t);return o}function key(t,n){var o=this;var r=new a(function(n,r){if(t<0){n(null);return}o.ready().then(function(){createTransaction(o._dbInfo,u,function(i,a){if(i){return r(i)}try{var c=a.objectStore(o._dbInfo.storeName);var g=false;var l=c.openKeyCursor();l.onsuccess=function(){var o=l.result;if(!o){n(null);return}if(t===0){n(o.key)}else{if(!g){g=true;o.advance(t)}else{n(o.key)}}};l.onerror=function(){r(l.error)}}catch(t){r(t)}})})["catch"](r)});executeCallback(r,n);return r}function keys(t){var n=this;var o=new a(function(t,o){n.ready().then(function(){createTransaction(n._dbInfo,u,function(r,i){if(r){return o(r)}try{var a=i.objectStore(n._dbInfo.storeName);var c=a.openKeyCursor();var g=[];c.onsuccess=function(){var n=c.result;if(!n){t(g);return}g.push(n.key);n["continue"]()};c.onerror=function(){o(c.error)}}catch(t){o(t)}})})["catch"](o)});executeCallback(o,t);return o}function dropInstance(t,n){n=getCallback.apply(this,arguments);var o=this.config();t=typeof t!=="function"&&t||{};if(!t.name){t.name=t.name||o.name;t.storeName=t.storeName||o.storeName}var r=this;var c;if(!t.name){c=a.reject("Invalid arguments")}else{var g=t.name===o.name&&r._dbInfo.db;var d=g?a.resolve(r._dbInfo.db):_getOriginalConnection(t).then(function(n){var o=l[t.name];var r=o.forages;o.db=n;for(var i=0;i<r.length;i++){r[i]._dbInfo.db=n}return n});if(!t.storeName){c=d.then(function(n){_deferReadiness(t);var o=l[t.name];var r=o.forages;n.close();for(var c=0;c<r.length;c++){var g=r[c];g._dbInfo.db=null}var d=new a(function(n,o){var r=i.deleteDatabase(t.name);r.onerror=function(){var t=r.result;if(t){t.close()}o(r.error)};r.onblocked=function(){console.warn('dropInstance blocked for database "'+t.name+'" until all open connections are closed')};r.onsuccess=function(){var t=r.result;if(t){t.close()}n(t)}});return d.then(function(t){o.db=t;for(var n=0;n<r.length;n++){var i=r[n];_advanceReadiness(i._dbInfo)}})["catch"](function(n){(_rejectReadiness(t,n)||a.resolve())["catch"](function(){});throw n})})}else{c=d.then(function(n){if(!n.objectStoreNames.contains(t.storeName)){return}var o=n.version+1;_deferReadiness(t);var r=l[t.name];var c=r.forages;n.close();for(var g=0;g<c.length;g++){var d=c[g];d._dbInfo.db=null;d._dbInfo.version=o}var u=new a(function(n,r){var a=i.open(t.name,o);a.onerror=function(t){var n=a.result;n.close();r(t)};a.onupgradeneeded=function(){var n=a.result;n.deleteObjectStore(t.storeName)};a.onsuccess=function(){var t=a.result;t.close();n(t)}});return u.then(function(t){r.db=t;for(var n=0;n<c.length;n++){var o=c[n];o._dbInfo.db=t;_advanceReadiness(o._dbInfo)}})["catch"](function(n){(_rejectReadiness(t,n)||a.resolve())["catch"](function(){});throw n})})}}executeCallback(c,n);return c}var C={_driver:"asyncStorage",_initStorage:_initStorage,_support:isIndexedDBValid(),iterate:iterate,getItem:getItem,setItem:setItem,removeItem:removeItem,clear:clear,length:length,key:key,keys:keys,dropInstance:dropInstance};function isWebSQLValid(){return typeof openDatabase==="function"}var p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var m="~~local_forage_type~";var b=/^~~local_forage_type~([^~]+)~/;var h="__lfsc__:";var G=h.length;var Z="arbf";var B="blob";var A="si08";var y="ui08";var f="uic8";var W="si16";var v="si32";var V="ur16";var R="ui32";var S="fl32";var H="fl64";var Y=G+Z.length;var N=Object.prototype.toString;function stringToBuffer(t){var n=t.length*.75;var o=t.length;var r;var i=0;var a,c,g,l;if(t[t.length-1]==="="){n--;if(t[t.length-2]==="="){n--}}var d=new ArrayBuffer(n);var u=new Uint8Array(d);for(r=0;r<o;r+=4){a=p.indexOf(t[r]);c=p.indexOf(t[r+1]);g=p.indexOf(t[r+2]);l=p.indexOf(t[r+3]);u[i++]=a<<2|c>>4;u[i++]=(c&15)<<4|g>>2;u[i++]=(g&3)<<6|l&63}return d}function bufferToString(t){var n=new Uint8Array(t);var o="";var r;for(r=0;r<n.length;r+=3){o+=p[n[r]>>2];o+=p[(n[r]&3)<<4|n[r+1]>>4];o+=p[(n[r+1]&15)<<2|n[r+2]>>6];o+=p[n[r+2]&63]}if(n.length%3===2){o=o.substring(0,o.length-1)+"="}else if(n.length%3===1){o=o.substring(0,o.length-2)+"=="}return o}function serialize(t,n){var o="";if(t){o=N.call(t)}if(t&&(o==="[object ArrayBuffer]"||t.buffer&&N.call(t.buffer)==="[object ArrayBuffer]")){var r;var i=h;if(t instanceof ArrayBuffer){r=t;i+=Z}else{r=t.buffer;if(o==="[object Int8Array]"){i+=A}else if(o==="[object Uint8Array]"){i+=y}else if(o==="[object Uint8ClampedArray]"){i+=f}else if(o==="[object Int16Array]"){i+=W}else if(o==="[object Uint16Array]"){i+=V}else if(o==="[object Int32Array]"){i+=v}else if(o==="[object Uint32Array]"){i+=R}else if(o==="[object Float32Array]"){i+=S}else if(o==="[object Float64Array]"){i+=H}else{n(new Error("Failed to get type for BinaryArray"))}}n(i+bufferToString(r))}else if(o==="[object Blob]"){var a=new FileReader;a.onload=function(){var o=m+t.type+"~"+bufferToString(this.result);n(h+B+o)};a.readAsArrayBuffer(t)}else{try{n(JSON.stringify(t))}catch(o){console.error("Couldn't convert value into a JSON string: ",t);n(null,o)}}}function deserialize(t){if(t.substring(0,G)!==h){return JSON.parse(t)}var n=t.substring(Y);var o=t.substring(G,Y);var r;if(o===B&&b.test(n)){var i=n.match(b);r=i[1];n=n.substring(i[0].length)}var a=stringToBuffer(n);switch(o){case Z:return a;case B:return createBlob([a],{type:r});case A:return new Int8Array(a);case y:return new Uint8Array(a);case f:return new Uint8ClampedArray(a);case W:return new Int16Array(a);case V:return new Uint16Array(a);case v:return new Int32Array(a);case R:return new Uint32Array(a);case S:return new Float32Array(a);case H:return new Float64Array(a);default:throw new Error("Unkown type: "+o)}}var X={serialize:serialize,deserialize:deserialize,stringToBuffer:stringToBuffer,bufferToString:bufferToString};function createDbTable(t,n,o,r){t.executeSql("CREATE TABLE IF NOT EXISTS "+n.storeName+" "+"(id INTEGER PRIMARY KEY, key unique, value)",[],o,r)}function _initStorage$1(t){var n=this;var o={db:null};if(t){for(var r in t){o[r]=typeof t[r]!=="string"?t[r].toString():t[r]}}var i=new a(function(t,r){try{o.db=openDatabase(o.name,String(o.version),o.description,o.size)}catch(t){return r(t)}o.db.transaction(function(i){createDbTable(i,o,function(){n._dbInfo=o;t()},function(t,n){r(n)})},r)});o.serializer=X;return i}function tryExecuteSql(t,n,o,r,i,a){t.executeSql(o,r,i,function(t,c){if(c.code===c.SYNTAX_ERR){t.executeSql("SELECT name FROM sqlite_master "+"WHERE type='table' AND name = ?",[n.storeName],function(t,g){if(!g.rows.length){createDbTable(t,n,function(){t.executeSql(o,r,i,a)},a)}else{a(t,c)}},a)}else{a(t,c)}},a)}function getItem$1(t,n){var o=this;t=normalizeKey(t);var r=new a(function(n,r){o.ready().then(function(){var i=o._dbInfo;i.db.transaction(function(o){tryExecuteSql(o,i,"SELECT * FROM "+i.storeName+" WHERE key = ? LIMIT 1",[t],function(t,o){var r=o.rows.length?o.rows.item(0).value:null;if(r){r=i.serializer.deserialize(r)}n(r)},function(t,n){r(n)})})})["catch"](r)});executeCallback(r,n);return r}function iterate$1(t,n){var o=this;var r=new a(function(n,r){o.ready().then(function(){var i=o._dbInfo;i.db.transaction(function(o){tryExecuteSql(o,i,"SELECT * FROM "+i.storeName,[],function(o,r){var a=r.rows;var c=a.length;for(var g=0;g<c;g++){var l=a.item(g);var d=l.value;if(d){d=i.serializer.deserialize(d)}d=t(d,l.key,g+1);if(d!==void 0){n(d);return}}n()},function(t,n){r(n)})})})["catch"](r)});executeCallback(r,n);return r}function _setItem(t,n,o,r){var i=this;t=normalizeKey(t);var c=new a(function(a,c){i.ready().then(function(){if(n===undefined){n=null}var g=n;var l=i._dbInfo;l.serializer.serialize(n,function(n,d){if(d){c(d)}else{l.db.transaction(function(o){tryExecuteSql(o,l,"INSERT OR REPLACE INTO "+l.storeName+" "+"(key, value) VALUES (?, ?)",[t,n],function(){a(g)},function(t,n){c(n)})},function(n){if(n.code===n.QUOTA_ERR){if(r>0){a(_setItem.apply(i,[t,g,o,r-1]));return}c(n)}})}})})["catch"](c)});executeCallback(c,o);return c}function setItem$1(t,n,o){return _setItem.apply(this,[t,n,o,1])}function removeItem$1(t,n){var o=this;t=normalizeKey(t);var r=new a(function(n,r){o.ready().then(function(){var i=o._dbInfo;i.db.transaction(function(o){tryExecuteSql(o,i,"DELETE FROM "+i.storeName+" WHERE key = ?",[t],function(){n()},function(t,n){r(n)})})})["catch"](r)});executeCallback(r,n);return r}function clear$1(t){var n=this;var o=new a(function(t,o){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){tryExecuteSql(n,r,"DELETE FROM "+r.storeName,[],function(){t()},function(t,n){o(n)})})})["catch"](o)});executeCallback(o,t);return o}function length$1(t){var n=this;var o=new a(function(t,o){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){tryExecuteSql(n,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],function(n,o){var r=o.rows.item(0).c;t(r)},function(t,n){o(n)})})})["catch"](o)});executeCallback(o,t);return o}function key$1(t,n){var o=this;var r=new a(function(n,r){o.ready().then(function(){var i=o._dbInfo;i.db.transaction(function(o){tryExecuteSql(o,i,"SELECT key FROM "+i.storeName+" WHERE id = ? LIMIT 1",[t+1],function(t,o){var r=o.rows.length?o.rows.item(0).key:null;n(r)},function(t,n){r(n)})})})["catch"](r)});executeCallback(r,n);return r}function keys$1(t){var n=this;var o=new a(function(t,o){n.ready().then(function(){var r=n._dbInfo;r.db.transaction(function(n){tryExecuteSql(n,r,"SELECT key FROM "+r.storeName,[],function(n,o){var r=[];for(var i=0;i<o.rows.length;i++){r.push(o.rows.item(i).key)}t(r)},function(t,n){o(n)})})})["catch"](o)});executeCallback(o,t);return o}function getAllStoreNames(t){return new a(function(n,o){t.transaction(function(r){r.executeSql("SELECT name FROM sqlite_master "+"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(o,r){var i=[];for(var a=0;a<r.rows.length;a++){i.push(r.rows.item(a).name)}n({db:t,storeNames:i})},function(t,n){o(n)})},function(t){o(t)})})}function dropInstance$1(t,n){n=getCallback.apply(this,arguments);var o=this.config();t=typeof t!=="function"&&t||{};if(!t.name){t.name=t.name||o.name;t.storeName=t.storeName||o.storeName}var r=this;var i;if(!t.name){i=a.reject("Invalid arguments")}else{i=new a(function(n){var i;if(t.name===o.name){i=r._dbInfo.db}else{i=openDatabase(t.name,"","",0)}if(!t.storeName){n(getAllStoreNames(i))}else{n({db:i,storeNames:[t.storeName]})}}).then(function(t){return new a(function(n,o){t.db.transaction(function(r){function dropTable(t){return new a(function(n,o){r.executeSql("DROP TABLE IF EXISTS "+t,[],function(){n()},function(t,n){o(n)})})}var i=[];for(var c=0,g=t.storeNames.length;c<g;c++){i.push(dropTable(t.storeNames[c]))}a.all(i).then(function(){n()})["catch"](function(t){o(t)})},function(t){o(t)})})})}executeCallback(i,n);return i}var F={_driver:"webSQLStorage",_initStorage:_initStorage$1,_support:isWebSQLValid(),iterate:iterate$1,getItem:getItem$1,setItem:setItem$1,removeItem:removeItem$1,clear:clear$1,length:length$1,key:key$1,keys:keys$1,dropInstance:dropInstance$1};function isLocalStorageValid(){try{return typeof localStorage!=="undefined"&&"setItem"in localStorage&&!!localStorage.setItem}catch(t){return false}}function _getKeyPrefix(t,n){var o=t.name+"/";if(t.storeName!==n.storeName){o+=t.storeName+"/"}return o}function checkIfLocalStorageThrows(){var t="_localforage_support_test";try{localStorage.setItem(t,true);localStorage.removeItem(t);return false}catch(t){return true}}function _isLocalStorageUsable(){return!checkIfLocalStorageThrows()||localStorage.length>0}function _initStorage$2(t){var n=this;var o={};if(t){for(var r in t){o[r]=t[r]}}o.keyPrefix=_getKeyPrefix(t,n._defaultConfig);if(!_isLocalStorageUsable()){return a.reject()}n._dbInfo=o;o.serializer=X;return a.resolve()}function clear$2(t){var n=this;var o=n.ready().then(function(){var t=n._dbInfo.keyPrefix;for(var o=localStorage.length-1;o>=0;o--){var r=localStorage.key(o);if(r.indexOf(t)===0){localStorage.removeItem(r)}}});executeCallback(o,t);return o}function getItem$2(t,n){var o=this;t=normalizeKey(t);var r=o.ready().then(function(){var n=o._dbInfo;var r=localStorage.getItem(n.keyPrefix+t);if(r){r=n.serializer.deserialize(r)}return r});executeCallback(r,n);return r}function iterate$2(t,n){var o=this;var r=o.ready().then(function(){var n=o._dbInfo;var r=n.keyPrefix;var i=r.length;var a=localStorage.length;var c=1;for(var g=0;g<a;g++){var l=localStorage.key(g);if(l.indexOf(r)!==0){continue}var d=localStorage.getItem(l);if(d){d=n.serializer.deserialize(d)}d=t(d,l.substring(i),c++);if(d!==void 0){return d}}});executeCallback(r,n);return r}function key$2(t,n){var o=this;var r=o.ready().then(function(){var n=o._dbInfo;var r;try{r=localStorage.key(t)}catch(t){r=null}if(r){r=r.substring(n.keyPrefix.length)}return r});executeCallback(r,n);return r}function keys$2(t){var n=this;var o=n.ready().then(function(){var t=n._dbInfo;var o=localStorage.length;var r=[];for(var i=0;i<o;i++){var a=localStorage.key(i);if(a.indexOf(t.keyPrefix)===0){r.push(a.substring(t.keyPrefix.length))}}return r});executeCallback(o,t);return o}function length$2(t){var n=this;var o=n.keys().then(function(t){return t.length});executeCallback(o,t);return o}function removeItem$2(t,n){var o=this;t=normalizeKey(t);var r=o.ready().then(function(){var n=o._dbInfo;localStorage.removeItem(n.keyPrefix+t)});executeCallback(r,n);return r}function setItem$2(t,n,o){var r=this;t=normalizeKey(t);var i=r.ready().then(function(){if(n===undefined){n=null}var o=n;return new a(function(i,a){var c=r._dbInfo;c.serializer.serialize(n,function(n,r){if(r){a(r)}else{try{localStorage.setItem(c.keyPrefix+t,n);i(o)}catch(t){if(t.name==="QuotaExceededError"||t.name==="NS_ERROR_DOM_QUOTA_REACHED"){a(t)}a(t)}}})})});executeCallback(i,o);return i}function dropInstance$2(t,n){n=getCallback.apply(this,arguments);t=typeof t!=="function"&&t||{};if(!t.name){var o=this.config();t.name=t.name||o.name;t.storeName=t.storeName||o.storeName}var r=this;var i;if(!t.name){i=a.reject("Invalid arguments")}else{i=new a(function(n){if(!t.storeName){n(t.name+"/")}else{n(_getKeyPrefix(t,r._defaultConfig))}}).then(function(t){for(var n=localStorage.length-1;n>=0;n--){var o=localStorage.key(n);if(o.indexOf(t)===0){localStorage.removeItem(o)}}})}executeCallback(i,n);return i}var K={_driver:"localStorageWrapper",_initStorage:_initStorage$2,_support:isLocalStorageValid(),iterate:iterate$2,getItem:getItem$2,setItem:setItem$2,removeItem:removeItem$2,clear:clear$2,length:length$2,key:key$2,keys:keys$2,dropInstance:dropInstance$2};var _=function sameValue(t,n){return t===n||typeof t==="number"&&typeof n==="number"&&isNaN(t)&&isNaN(n)};var T=function includes(t,n){var o=t.length;var r=0;while(r<o){if(_(t[r],n)){return true}r++}return false};var w=Array.isArray||function(t){return Object.prototype.toString.call(t)==="[object Array]"};var E={};var J={};var k={INDEXEDDB:C,WEBSQL:F,LOCALSTORAGE:K};var U=[k.INDEXEDDB._driver,k.WEBSQL._driver,k.LOCALSTORAGE._driver];var z=["dropInstance"];var L=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(z);var x={description:"",driver:U.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function callWhenReady(t,n){t[n]=function(){var o=arguments;return t.ready().then(function(){return t[n].apply(t,o)})}}function extend(){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n){for(var o in n){if(n.hasOwnProperty(o)){if(w(n[o])){arguments[0][o]=n[o].slice()}else{arguments[0][o]=n[o]}}}}}return arguments[0]}var O=function(){function LocalForage(t){_classCallCheck(this,LocalForage);for(var n in k){if(k.hasOwnProperty(n)){var o=k[n];var r=o._driver;this[n]=r;if(!E[r]){this.defineDriver(o)}}}this._defaultConfig=extend({},x);this._config=extend({},this._defaultConfig,t);this._driverSet=null;this._initDriver=null;this._ready=false;this._dbInfo=null;this._wrapLibraryMethodsWithReady();this.setDriver(this._config.driver)["catch"](function(){})}LocalForage.prototype.config=function config(t){if((typeof t==="undefined"?"undefined":r(t))==="object"){if(this._ready){return new Error("Can't call config() after localforage "+"has been used.")}for(var n in t){if(n==="storeName"){t[n]=t[n].replace(/\W/g,"_")}if(n==="version"&&typeof t[n]!=="number"){return new Error("Database version must be a number.")}this._config[n]=t[n]}if("driver"in t&&t.driver){return this.setDriver(this._config.driver)}return true}else if(typeof t==="string"){return this._config[t]}else{return this._config}};LocalForage.prototype.defineDriver=function defineDriver(t,n,o){var r=new a(function(n,o){try{var r=t._driver;var i=new Error("Custom driver not compliant; see "+"https://mozilla.github.io/localForage/#definedriver");if(!t._driver){o(i);return}var c=L.concat("_initStorage");for(var g=0,l=c.length;g<l;g++){var d=c[g];var u=!T(z,d);if((u||t[d])&&typeof t[d]!=="function"){o(i);return}}var I=function configureMissingMethods(){var n=function methodNotImplementedFactory(t){return function(){var n=new Error("Method "+t+" is not implemented by the current driver");var o=a.reject(n);executeCallback(o,arguments[arguments.length-1]);return o}};for(var o=0,r=z.length;o<r;o++){var i=z[o];if(!t[i]){t[i]=n(i)}}};I();var C=function setDriverSupport(o){if(E[r]){console.info("Redefining LocalForage driver: "+r)}E[r]=t;J[r]=o;n()};if("_support"in t){if(t._support&&typeof t._support==="function"){t._support().then(C,o)}else{C(!!t._support)}}else{C(true)}}catch(t){o(t)}});executeTwoCallbacks(r,n,o);return r};LocalForage.prototype.driver=function driver(){return this._driver||null};LocalForage.prototype.getDriver=function getDriver(t,n,o){var r=E[t]?a.resolve(E[t]):a.reject(new Error("Driver not found."));executeTwoCallbacks(r,n,o);return r};LocalForage.prototype.getSerializer=function getSerializer(t){var n=a.resolve(X);executeTwoCallbacks(n,t);return n};LocalForage.prototype.ready=function ready(t){var n=this;var o=n._driverSet.then(function(){if(n._ready===null){n._ready=n._initDriver()}return n._ready});executeTwoCallbacks(o,t,t);return o};LocalForage.prototype.setDriver=function setDriver(t,n,o){var r=this;if(!w(t)){t=[t]}var i=this._getSupportedDrivers(t);function setDriverToConfig(){r._config.driver=r.driver()}function extendSelfWithDriver(t){r._extend(t);setDriverToConfig();r._ready=r._initStorage(r._config);return r._ready}function initDriver(t){return function(){var n=0;function driverPromiseLoop(){while(n<t.length){var o=t[n];n++;r._dbInfo=null;r._ready=null;return r.getDriver(o).then(extendSelfWithDriver)["catch"](driverPromiseLoop)}setDriverToConfig();var i=new Error("No available storage method found.");r._driverSet=a.reject(i);return r._driverSet}return driverPromiseLoop()}}var c=this._driverSet!==null?this._driverSet["catch"](function(){return a.resolve()}):a.resolve();this._driverSet=c.then(function(){var t=i[0];r._dbInfo=null;r._ready=null;return r.getDriver(t).then(function(t){r._driver=t._driver;setDriverToConfig();r._wrapLibraryMethodsWithReady();r._initDriver=initDriver(i)})})["catch"](function(){setDriverToConfig();var t=new Error("No available storage method found.");r._driverSet=a.reject(t);return r._driverSet});executeTwoCallbacks(this._driverSet,n,o);return this._driverSet};LocalForage.prototype.supports=function supports(t){return!!J[t]};LocalForage.prototype._extend=function _extend(t){extend(this,t)};LocalForage.prototype._getSupportedDrivers=function _getSupportedDrivers(t){var n=[];for(var o=0,r=t.length;o<r;o++){var i=t[o];if(this.supports(i)){n.push(i)}}return n};LocalForage.prototype._wrapLibraryMethodsWithReady=function _wrapLibraryMethodsWithReady(){for(var t=0,n=L.length;t<n;t++){callWhenReady(this,L[t])}};LocalForage.prototype.createInstance=function createInstance(t){return new LocalForage(t)};return LocalForage}();var M=new O;n.exports=M},{3:3}]},{},[4])(4)})},290:t=>{"use strict";t.exports=require("async_hooks")},5317:t=>{"use strict";t.exports=require("child_process")},6982:t=>{"use strict";t.exports=require("crypto")},1637:t=>{"use strict";t.exports=require("diagnostics_channel")},3167:t=>{"use strict";t.exports=require("domain")},9896:t=>{"use strict";t.exports=require("fs")},8611:t=>{"use strict";t.exports=require("http")},5692:t=>{"use strict";t.exports=require("https")},264:t=>{"use strict";t.exports=require("inspector")},9278:t=>{"use strict";t.exports=require("net")},857:t=>{"use strict";t.exports=require("os")},6928:t=>{"use strict";t.exports=require("path")},2203:t=>{"use strict";t.exports=require("stream")},4756:t=>{"use strict";t.exports=require("tls")},7016:t=>{"use strict";t.exports=require("url")},9023:t=>{"use strict";t.exports=require("util")},3106:t=>{"use strict";t.exports=require("zlib")}};var n={};function __nccwpck_require__(o){var r=n[o];if(r!==undefined){return r.exports}var i=n[o]={id:o,loaded:false,exports:{}};var a=true;try{t[o].call(i.exports,i,i.exports,__nccwpck_require__);a=false}finally{if(a)delete n[o]}i.loaded=true;return i.exports}(()=>{__nccwpck_require__.nmd=t=>{t.paths=[];if(!t.children)t.children=[];return t}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var o={};(()=>{"use strict";var t=o;Object.defineProperty(t,"__esModule",{value:true});t.Integrations=t.Handlers=t.close=t.flush=t.startTransaction=t.configureScope=t.withScope=t.setExtra=t.setContext=t.setUser=t.setTags=t.setTag=t.addBreadcrumb=t.captureEvent=t.captureMessage=t.captureException=t.init=void 0;var n=__nccwpck_require__(9509);Object.defineProperty(t,"init",{enumerable:true,get:function(){return n.init}});var r=__nccwpck_require__(3986);Object.defineProperty(t,"captureException",{enumerable:true,get:function(){return r.captureException}});Object.defineProperty(t,"captureMessage",{enumerable:true,get:function(){return r.captureMessage}});Object.defineProperty(t,"captureEvent",{enumerable:true,get:function(){return r.captureEvent}});Object.defineProperty(t,"addBreadcrumb",{enumerable:true,get:function(){return r.addBreadcrumb}});Object.defineProperty(t,"setTag",{enumerable:true,get:function(){return r.setTag}});Object.defineProperty(t,"setTags",{enumerable:true,get:function(){return r.setTags}});Object.defineProperty(t,"setUser",{enumerable:true,get:function(){return r.setUser}});Object.defineProperty(t,"setContext",{enumerable:true,get:function(){return r.setContext}});Object.defineProperty(t,"setExtra",{enumerable:true,get:function(){return r.setExtra}});Object.defineProperty(t,"withScope",{enumerable:true,get:function(){return r.withScope}});Object.defineProperty(t,"configureScope",{enumerable:true,get:function(){return r.configureScope}});Object.defineProperty(t,"startTransaction",{enumerable:true,get:function(){return r.startTransaction}});Object.defineProperty(t,"flush",{enumerable:true,get:function(){return r.flush}});Object.defineProperty(t,"close",{enumerable:true,get:function(){return r.close}});Object.defineProperty(t,"Handlers",{enumerable:true,get:function(){return r.Handlers}});Object.defineProperty(t,"Integrations",{enumerable:true,get:function(){return r.Integrations}})})();module.exports=o})();
|
|
11
11
|
//# sourceMappingURL=index.js.map
|