!function(e){function t(t){for(var n,r,i=t[0],o=t[1],a=0,h=[];aJSON.stringify(e))).join("\n")}\n`}class browser_shipper_ElasticV3BrowserShipper{constructor(e,t){var n,s,o;r()(this,"telemetryCounter$",new i.Subject),r()(this,"reportTelemetryCounters",(s=this.telemetryCounter$,o=browser_shipper_ElasticV3BrowserShipper.shipperName,(e,{type:t,code:n,error:r}={})=>{const i=function(e){return e.reduce(((e,t)=>(e[t.event_type]?e[t.event_type]+=1:e[t.event_type]=1,e)),{})}(e);Object.entries(i).forEach((([e,i])=>{var a;s.next({source:o,type:null!=t?t:r?"failed":"succeeded",code:null!==(a=null!=n?n:null==r?void 0:r.message)&&void 0!==a?a:"OK",count:i,event_type:e})}))})),r()(this,"url",void 0),r()(this,"internalQueue$",new i.Subject),r()(this,"flush$",new i.Subject),r()(this,"queueFlushed$",new i.Subject),r()(this,"isOptedIn$",new i.BehaviorSubject(void 0)),r()(this,"clusterUuid","UNKNOWN"),r()(this,"licenseId",void 0),this.options=e,this.initContext=t,this.setUpInternalQueueSubscriber(),this.url=function(e){const{sendTo:t,channelName:n}=e;return`${"production"===t?"https://telemetry.elastic.co":"https://telemetry-staging.elastic.co"}/v3/send/${n}`}({sendTo:null!==(n=e.sendTo)&&void 0!==n?n:t.sendTo,channelName:e.channelName})}extendContext(e){e.cluster_uuid&&(this.clusterUuid=e.cluster_uuid),e.license_id&&(this.licenseId=e.license_id)}optIn(e){this.isOptedIn$.next(e)}reportEvents(e){e.forEach((e=>{this.internalQueue$.next(e)}))}async flush(){if(this.flush$.isStopped)return;const e=Object(i.firstValueFrom)(this.queueFlushed$);this.flush$.next(),await e}shutdown(){this.internalQueue$.complete(),this.flush$.complete()}setUpInternalQueueSubscriber(){this.internalQueue$.pipe(Object(i.bufferWhen)((()=>Object(i.merge)(this.flush$,Object(i.interval)(1e3).pipe(Object(i.skipWhile)((()=>void 0===this.isOptedIn$.value)))))),Object(i.concatMap)((async e=>{!0===this.isOptedIn$.value&&e.length>0&&await this.sendEvents(e)})),Object(i.map)((()=>this.queueFlushed$.next()))).subscribe()}async sendEvents(e){try{const t=await this.makeRequest(e);this.reportTelemetryCounters(e,{code:t})}catch(t){this.reportTelemetryCounters(e,{code:t.code,error:t})}}async makeRequest(e){const t=await fetch(this.url,{method:"POST",body:o(e),headers:(n=this.clusterUuid,s=this.options.version,r=this.licenseId,{"content-type":"application/x-ndjson","x-elastic-cluster-id":n,"x-elastic-stack-version":s,...r&&{"x-elastic-license-id":r}}),...this.options.debug&&{query:{debug:!0}},keepalive:!0});var n,s,r;if(this.options.debug&&this.initContext.logger.debug(`[${browser_shipper_ElasticV3BrowserShipper.shipperName}]: ${t.status} - ${await t.text()}`),!t.ok)throw new ErrorWithCode(`${t.status} - ${await t.text()}`,`${t.status}`);return`${t.status}`}}r()(browser_shipper_ElasticV3BrowserShipper,"shipperName","elastic_v3_browser");const a="/internal/telemetry",c={version:"2"},h=`${a}/config`,l=`${a}/last_reported`,u=`${a}/userHasSeenNotice`,d=`${a}/optIn`,p=`${a}/clusters/_stats`;var f=n(8),y=n(9),S=n(2);function m(e){return!e||isNaN(e)||Date.now()-e>S.REPORT_INTERVAL_MS-S.REPORT_INTERVAL_BUFFER_MS}class telemetry_sender_TelemetrySender{static getRetryDelay(e){return 1e3*Math.min(Math.pow(2,e),64)*60}constructor(e,t){r()(this,"lastReported",void 0),r()(this,"storage",void 0),r()(this,"sendIfDue$",void 0),r()(this,"retryCount",0),r()(this,"updateLastReported",(e=>{this.lastReported=e,this.storage.set(S.LOCALSTORAGE_KEY,{lastReport:`${this.lastReported}`})})),r()(this,"isReportDue",(async()=>{if(!m(this.lastReported))return!1;const e=await this.telemetryService.fetchLastReported();return e&&this.updateLastReported(e),m(e)})),r()(this,"isActiveWindow",(()=>document.hasFocus())),r()(this,"shouldSendReport",(async()=>!!(this.isActiveWindow()&&this.telemetryService.canSendTelemetry()&&await this.isReportDue())&&(await this.refreshConfig(),this.telemetryService.canSendTelemetry()))),r()(this,"sendIfDue",(async()=>{await this.shouldSendReport()&&(this.updateLastReported(Date.now()),this.retryCount=0,await this.sendUsageData())})),r()(this,"sendUsageData",(async()=>{try{const e=this.telemetryService.getTelemetryUrl(),t=await this.telemetryService.fetchTelemetry();await Promise.all(t.map((async({clusterUuid:t,stats:n})=>await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","X-Elastic-Stack-Version":this.telemetryService.currentKibanaVersion,"X-Elastic-Cluster-ID":t,"X-Elastic-Content-Encoding":S.PAYLOAD_CONTENT_ENCODING},body:n})))),await this.telemetryService.updateLastReported().catch((()=>{}))}catch(e){this.retryCount=this.retryCount+1,this.retryCount<20?window.setTimeout(this.sendUsageData,telemetry_sender_TelemetrySender.getRetryDelay(this.retryCount)):console.warn(`TelemetrySender.sendUsageData exceeds number of retry attempts with ${e.message}`)}})),r()(this,"startChecking",(()=>{this.sendIfDue$||(this.sendIfDue$=Object(i.merge)(Object(i.interval)(6e4),Object(i.fromEvent)(window,"focus")).pipe(Object(f.exhaustMap)(this.sendIfDue)).subscribe())})),r()(this,"stop",(()=>{var e;null===(e=this.sendIfDue$)||void 0===e||e.unsubscribe()})),this.telemetryService=e,this.refreshConfig=t,this.storage=new y.Storage(window.localStorage);const n=this.storage.get(S.LOCALSTORAGE_KEY);n&&(this.lastReported=parseInt(n.lastReport,10))}}var g=n(5);function v({channelName:e,env:t,appendServerlessChannelsSuffix:n}){const s=function(e){switch(e){case"prod":return S.ENDPOINT_PROD;case"staging":return S.ENDPOINT_STAGING;default:throw new Error(`Unknown telemetry endpoint env ${e}.`)}}(t),r=function(e,t){let n;switch(e){case"snapshot":n=S.TELEMETRY_CHANNELS.SNAPSHOT_CHANNEL;break;case"optInStatus":n=S.TELEMETRY_CHANNELS.OPT_IN_STATUS_CHANNEL;break;default:throw new Error(`Unknown telemetry channel ${e}.`)}return t?`${n}-serverless`:n}(e,n);return`${s}${S.ENDPOINT_VERSION}/send/${r}`}class telemetry_service_TelemetryService{constructor({config:e,http:t,isScreenshotMode:n,notifications:s,currentKibanaVersion:i,reportOptInStatusChange:o=!0}){r()(this,"http",void 0),r()(this,"reportOptInStatusChange",void 0),r()(this,"notifications",void 0),r()(this,"defaultConfig",void 0),r()(this,"isScreenshotMode",void 0),r()(this,"updatedConfig",void 0),r()(this,"currentKibanaVersion",void 0),r()(this,"getCanChangeOptInStatus",(()=>this.config.allowChangingOptInStatus)),r()(this,"getOptInStatusUrl",(()=>{const{appendServerlessChannelsSuffix:e,sendUsageTo:t}=this.config;return v({channelName:"optInStatus",env:t,appendServerlessChannelsSuffix:e})})),r()(this,"getTelemetryUrl",(()=>{const{appendServerlessChannelsSuffix:e,sendUsageTo:t}=this.config;return v({channelName:"snapshot",env:t,appendServerlessChannelsSuffix:e})})),r()(this,"getIsOptedIn",(()=>this.isOptedIn)),r()(this,"canSendTelemetry",(()=>!this.isScreenshotMode&&this.getIsOptedIn())),r()(this,"fetchLastReported",(async()=>{const e=await this.http.get(l,c);return null==e?void 0:e.lastReported})),r()(this,"updateLastReported",(async()=>this.http.put(l))),r()(this,"fetchExample",(async()=>await this.fetchTelemetry({unencrypted:!0,refreshCache:!0}))),r()(this,"fetchTelemetry",(async({unencrypted:e=!1,refreshCache:t=!1}={})=>this.http.post(p,{...c,body:JSON.stringify({unencrypted:e,refreshCache:t})}))),r()(this,"setOptIn",(async e=>{if(!this.getCanChangeOptInStatus())return!1;try{const t=await this.http.post(d,{...c,body:JSON.stringify({enabled:e})});this.reportOptInStatusChange&&await this.reportOptInStatus(t),this.isOptedIn=e}catch(e){return this.notifications.toasts.addError(e,{title:g.i18n.translate("telemetry.optInErrorToastTitle",{defaultMessage:"Error"}),toastMessage:g.i18n.translate("telemetry.optInErrorToastText",{defaultMessage:"An error occurred while trying to set the usage statistics preference."})}),!1}return!0})),r()(this,"setUserHasSeenNotice",(async()=>{try{await this.http.put(u,c),this.userHasSeenOptedInNotice=!0}catch(e){this.notifications.toasts.addError(e,{title:g.i18n.translate("telemetry.optInNoticeSeenErrorTitle",{defaultMessage:"Error"}),toastMessage:g.i18n.translate("telemetry.optInNoticeSeenErrorToastText",{defaultMessage:"An error occurred dismissing the notice"})}),this.userHasSeenOptedInNotice=!1}})),r()(this,"reportOptInStatus",(async e=>{const t=this.getOptInStatusUrl();try{await Promise.all(e.map((async({clusterUuid:e,stats:n})=>await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","X-Elastic-Stack-Version":this.currentKibanaVersion,"X-Elastic-Cluster-ID":e,"X-Elastic-Content-Encoding":S.PAYLOAD_CONTENT_ENCODING},body:n}))))}catch(e){}})),this.defaultConfig=e,this.isScreenshotMode=n,this.reportOptInStatusChange=o,this.notifications=s,this.currentKibanaVersion=i,this.http=t}set config(e){this.updatedConfig=e}get config(){return{...this.defaultConfig,...this.updatedConfig}}get isOptedIn(){return Boolean(this.config.optIn)}set isOptedIn(e){this.config={...this.config,optIn:e}}get userHasSeenOptedInNotice(){return this.config.telemetryNotifyUserAboutOptInDefault}set userHasSeenOptedInNotice(e){this.config={...this.config,telemetryNotifyUserAboutOptInDefault:e}}getUserShouldSeeOptInNotice(){var e;return null!==(e=!this.config.hidePrivacyStatement&&this.config.userCanChangeSettings&&(this.config.telemetryNotifyUserAboutOptInDefault||null===this.config.optIn))&&void 0!==e&&e}get userCanChangeSettings(){var e;return null!==(e=this.config.userCanChangeSettings)&&void 0!==e&&e}set userCanChangeSettings(e){this.config={...this.config,userCanChangeSettings:e}}}var b=n(4),_=n.n(b),O=n(10),I=n(6),C=n(3),N={name:"1azakc",styles:"text-align:center"};const w=()=>{const e=N;return Object(C.jsx)("div",{css:e},Object(C.jsx)(I.EuiLoadingSpinner,null))};var T=n(11),E=n.n(T);const j=(e,t=Object(C.jsx)(w,null))=>_.a.forwardRef(((n,s)=>Object(C.jsx)(I.EuiErrorBoundary,null,Object(C.jsx)(b.Suspense,{fallback:t},Object(C.jsx)(e,E()({},n,{ref:s}))))));class telemetry_notifications_TelemetryNotifications{constructor({http:e,overlays:t,theme:s,telemetryService:i,telemetryConstants:o}){r()(this,"http",void 0),r()(this,"overlays",void 0),r()(this,"theme",void 0),r()(this,"telemetryConstants",void 0),r()(this,"telemetryService",void 0),r()(this,"optInStatusNoticeBannerId",void 0),r()(this,"shouldShowOptInStatusNoticeBanner",(()=>{const e=this.telemetryService.getUserShouldSeeOptInNotice();return!(void 0!==this.optInStatusNoticeBannerId)&&e})),r()(this,"renderOptInStatusNoticeBanner",(()=>{const e=function({onSeen:e,overlays:t,http:s,theme:r,telemetryConstants:i,telemetryService:o}){const a=j(_.a.lazy((()=>n.e(1).then(n.bind(null,17)).then((({OptInStatusNoticeBanner:e})=>({default:e})))))),c=Object(O.toMountPoint)(Object(C.jsx)(a,{onSeenBanner:e,http:s,telemetryConstants:i,telemetryService:o}),{theme$:r.theme$});return t.banners.add(c,1e4)}({http:this.http,onSeen:this.setOptInStatusNoticeSeen,overlays:this.overlays,theme:this.theme,telemetryConstants:this.telemetryConstants,telemetryService:this.telemetryService});this.optInStatusNoticeBannerId=e})),r()(this,"setOptInStatusNoticeSeen",(async()=>{this.optInStatusNoticeBannerId&&(this.overlays.banners.remove(this.optInStatusNoticeBannerId),this.optInStatusNoticeBannerId=void 0),await this.telemetryService.setUserHasSeenNotice()})),this.telemetryService=i,this.http=e,this.overlays=t,this.theme=s,this.telemetryConstants=o}}function P(e){return{getPrivacyStatementUrl:()=>e.links.legal.privacyStatement}}class plugin_TelemetryPlugin{constructor(e){r()(this,"currentKibanaVersion",void 0),r()(this,"config",void 0),r()(this,"telemetrySender",void 0),r()(this,"telemetryNotifications",void 0),r()(this,"telemetryService",void 0),r()(this,"canUserChangeSettings",!0),this.currentKibanaVersion=e.env.packageInfo.version,this.config=e.config.get()}setup({analytics:e,http:t,notifications:s,getStartServices:r},{screenshotMode:o,home:a}){const c=this.config,h=this.currentKibanaVersion;let l;return this.telemetryService=new telemetry_service_TelemetryService({config:c,isScreenshotMode:o.isScreenshotMode(),http:t,notifications:s,currentKibanaVersion:h}),r().then((([{docLinks:e}])=>{l=P(e)})),e.registerContextProvider({name:"telemetry labels",context$:Object(i.of)({labels:this.config.labels}),schema:{labels:{type:"pass_through",_meta:{description:"Custom labels added to the telemetry.labels config in the kibana.yml"}}}}),e.registerShipper(browser_shipper_ElasticV3BrowserShipper,{channelName:"kibana-browser",version:h,sendTo:"prod"===c.sendUsageTo?"production":"staging"}),this.telemetrySender=new telemetry_sender_TelemetrySender(this.telemetryService,(async()=>{await this.refreshConfig(t),e.optIn({global:{enabled:this.telemetryService.isOptedIn&&!o.isScreenshotMode()}})})),a&&!this.config.hidePrivacyStatement&&(a.welcomeScreen.registerOnRendered((()=>{var e,t;null!==(e=this.telemetryService)&&void 0!==e&&e.userCanChangeSettings&&(null===(t=this.telemetryNotifications)||void 0===t||t.setOptInStatusNoticeSeen())})),a.welcomeScreen.registerTelemetryNoticeRenderer((()=>function(e,t,s){const r=j(_.a.lazy((()=>n.e(2).then(n.bind(null,18)).then((({WelcomeTelemetryNotice:e})=>({default:e}))))));return Object(C.jsx)(r,{telemetryService:e,telemetryConstants:s,addBasePath:t})}(this.telemetryService,t.basePath.prepend,l)))),{telemetryService:this.getTelemetryServicePublicApis()}}start({analytics:e,http:t,overlays:n,theme:s,application:r,docLinks:i},{screenshotMode:o}){if(!this.telemetryService)throw Error("Telemetry plugin failed to initialize properly.");this.canUserChangeSettings=this.getCanUserChangeSettings(r),this.telemetryService.userCanChangeSettings=this.canUserChangeSettings;const a=P(i),c=new telemetry_notifications_TelemetryNotifications({http:t,overlays:n,theme:s,telemetryService:this.telemetryService,telemetryConstants:a});return this.telemetryNotifications=c,r.currentAppId$.subscribe((async()=>{if(this.getIsUnauthenticated(t))return;const n=await this.refreshConfig(t);e.optIn({global:{enabled:this.telemetryService.isOptedIn&&!o.isScreenshotMode()}});const s=null==n?void 0:n.banner;this.maybeStartTelemetryPoller(),s&&this.maybeShowOptedInNotificationBanner()})),{telemetryService:this.getTelemetryServicePublicApis(),telemetryNotifications:{setOptedInNoticeSeen:()=>c.setOptInStatusNoticeSeen()},telemetryConstants:a}}stop(){var e;null===(e=this.telemetrySender)||void 0===e||e.stop()}getTelemetryServicePublicApis(){const e=this.telemetryService;return{getIsOptedIn:()=>e.getIsOptedIn(),setOptIn:t=>e.setOptIn(t),canSendTelemetry:()=>e.canSendTelemetry(),userCanChangeSettings:e.userCanChangeSettings,getCanChangeOptInStatus:()=>e.getCanChangeOptInStatus(),fetchExample:()=>e.fetchExample()}}async refreshConfig(e){const t=await this.fetchUpdatedConfig(e);return this.telemetryService&&(this.telemetryService.config=t),t}getCanUserChangeSettings(e){var t,n,s;return null===(t=null===(n=e.capabilities)||void 0===n||null===(s=n.savedObjectsManagement)||void 0===s?void 0:s.edit)||void 0===t||t}getIsUnauthenticated(e){const{anonymousPaths:t}=e;return t.isAnonymous(window.location.pathname)}maybeStartTelemetryPoller(){this.telemetrySender&&this.telemetrySender.startChecking()}maybeShowOptedInNotificationBanner(){this.telemetryNotifications&&this.telemetryNotifications.shouldShowOptInStatusNoticeBanner()&&this.telemetryNotifications.renderOptInStatusNoticeBanner()}async fetchUpdatedConfig(e){const{allowChangingOptInStatus:t,optIn:n,sendUsageFrom:s,telemetryNotifyUserAboutOptInDefault:r}=await e.get(h,c);return{...this.config,allowChangingOptInStatus:t,optIn:n,sendUsageFrom:s,telemetryNotifyUserAboutOptInDefault:r,userCanChangeSettings:this.canUserChangeSettings}}}function R(e){return new plugin_TelemetryPlugin(e)}},function(e,t){e.exports=__kbnSharedDeps__.KbnI18nReact}]);