/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@algolia/abtesting@1.16.2/dist/builds/browser.umd.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/abtesting"]={})}(this,(function(e){"use strict";function t(e){let t,r=`algolia-client-js-${e.key}`;function s(){return void 0===t&&(t=e.localStorage||window.localStorage),t}function a(){return JSON.parse(s().getItem(r)||"{}")}function i(e){s().setItem(r,JSON.stringify(e))}return{get:(t,r,s={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>(function(){let t=e.timeToLive?1e3*e.timeToLive:null,r=a(),s=Object.fromEntries(Object.entries(r).filter((([,e])=>void 0!==e.timestamp)));i(s),t&&i(Object.fromEntries(Object.entries(s).filter((([,e])=>{let r=(new Date).getTime();return!(e.timestamp+t<r)}))))}(),a()[JSON.stringify(t)]))).then((e=>Promise.all([e?e.value:r(),void 0!==e]))).then((([e,t])=>Promise.all([e,t||s.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve().then((()=>{let i=a();return i[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},s().setItem(r,JSON.stringify(i)),t})),delete:e=>Promise.resolve().then((()=>{let t=a();delete t[JSON.stringify(e)],s().setItem(r,JSON.stringify(t))})),clear:()=>Promise.resolve().then((()=>{s().removeItem(r)}))}}function r(e){let t=[...e.caches],s=t.shift();return void 0===s?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,a,i={miss:()=>Promise.resolve()})=>s.get(e,a,i).catch((()=>r({caches:t}).get(e,a,i))),set:(e,a)=>s.set(e,a).catch((()=>r({caches:t}).set(e,a))),delete:e=>s.delete(e).catch((()=>r({caches:t}).delete(e))),clear:()=>s.clear().catch((()=>r({caches:t}).clear()))}}function s(e={serializable:!0}){let t={};return{get(r,s,a={miss:()=>Promise.resolve()}){let i=JSON.stringify(r);if(i in t)return Promise.resolve(e.serializable?JSON.parse(t[i]):t[i]);let o=s();return o.then((e=>a.miss(e))).then((()=>o))},set:(r,s)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(s):s,Promise.resolve(s)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function a({algoliaAgents:e,client:t,version:r}){let s=function(e){let t={value:`Algolia for JavaScript (${e})`,add(e){let r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}(r).add({segment:t,version:r});return e.forEach((e=>s.add(e))),s}var i=12e4;function o(e,t="up"){let r=Date.now();return{...e,status:t,lastUpdate:r,isUp:function(){return"up"===t||Date.now()-r>i},isTimedOut:function(){return"timed out"===t&&Date.now()-r<=i}}}var n=class extends Error{name="AlgoliaError";constructor(e,t){super(e),t&&(this.name=t)}},l=class extends n{stackTrace;constructor(e,t,r){super(e,r),this.stackTrace=t}},u=class extends l{constructor(e){super("Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",e,"RetryError")}},c=class extends l{status;constructor(e,t,r,s="ApiError"){super(e,r,s),this.status=t}},d=class extends n{response;constructor(e,t){super(e,"DeserializationError"),this.response=t}},m=class extends c{error;constructor(e,t,r,s){super(e,t,s,"DetailedApiError"),this.error=r}};function h(e,t,r){let s=function(e){return Object.keys(e).filter((t=>void 0!==e[t])).sort().map((t=>`${t}=${encodeURIComponent("[object Array]"===Object.prototype.toString.call(e[t])?e[t].join(","):e[t]).replace(/\+/g,"%20")}`)).join("&")}(r),a=`${e.protocol}://${e.url}${e.port?`:${e.port}`:""}/${"/"===t.charAt(0)?t.substring(1):t}`;return s.length&&(a+=`?${s}`),a}function p(e){let t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function g({hosts:e,hostsCache:t,baseHeaders:r,logger:s,baseQueryParameters:a,algoliaAgent:i,timeouts:n,requester:l,requestsCache:g,responsesCache:f,compress:P,compression:w}){async function y(g,f,y){let T=[],q=function(e,t){if("GET"===e.method||void 0===e.data&&void 0===t.data)return;let r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(g,f),v=function(e,t,r){let s={Accept:"application/json",...e,...t,...r},a={};return Object.keys(s).forEach((e=>{let t=s[e];a[e.toLowerCase()]=t})),a}(r,g.headers,f.headers),b="gzip"===w&&void 0!==q&&q.length>750&&("POST"===g.method||"PUT"===g.method);b&&void 0===P&&s.info("Compression is disabled because no compress method is available.");let A=b&&void 0!==P,E=A?await P(q):q;A&&(v["content-encoding"]="gzip");let O="GET"===g.method?{...g.data,...f.data}:{},S={...a,...g.queryParameters,...O};if(i.value&&(S["x-algolia-agent"]=i.value),f&&f.queryParameters)for(let e of Object.keys(f.queryParameters))f.queryParameters[e]&&"[object Object]"!==Object.prototype.toString.call(f.queryParameters[e])?S[e]=f.queryParameters[e].toString():S[e]=f.queryParameters[e];let x=0,B=async(e,r)=>{let a=e.pop();if(void 0===a)throw new u(function(e){return e.map((e=>p(e)))}(T));let i={...n,...f.timeouts},P={data:E,headers:v,method:g.method,url:h(a,g.path,S),connectTimeout:r(x,i.connect),responseTimeout:r(x,y?i.read:i.write)},w=t=>{let r={request:P,response:t,host:a,triesLeft:e.length};return T.push(r),r},q=await l.send(P);if(function({isTimedOut:e,status:t}){return e||function({isTimedOut:e,status:t}){return!e&&!~~t}({isTimedOut:e,status:t})||2!=~~(t/100)&&4!=~~(t/100)}(q)){let i=w(q);return q.isTimedOut&&x++,s.info("Retryable failure",p(i)),await t.set(a,o(a,q.isTimedOut?"timed out":"down")),B(e,r)}if(function({status:e}){return 2==~~(e/100)}(q))return function(e){try{return JSON.parse(e.content)}catch(t){throw new d(t.message,e)}}(q);throw w(q),function({content:e,status:t},r){try{let s=JSON.parse(e);return"error"in s?new m(s.message,t,s.error,r):new c(s.message,t,r)}catch{}return new c(e,t,r)}(q,T)},C=e.filter((e=>"readWrite"===e.accept||(y?"read"===e.accept:"write"===e.accept))),j=await async function(e){let r=await Promise.all(e.map((e=>t.get(e,(()=>Promise.resolve(o(e))))))),s=r.filter((e=>e.isUp())),a=r.filter((e=>e.isTimedOut())),i=[...s,...a];return{hosts:i.length>0?i:e,getTimeout:(e,t)=>(0===a.length&&0===e?1:a.length+3+e)*t}}(C);return B([...j.hosts].reverse(),j.getTimeout)}return{hostsCache:t,requester:l,timeouts:n,logger:s,algoliaAgent:i,baseHeaders:r,baseQueryParameters:a,hosts:e,request:function(e,t={}){let s=()=>y(e,t,i),i=e.useReadTransporter||"GET"===e.method;if(!0!==(t.cacheable||e.cacheable))return s();let o={request:e,requestOptions:t,transporter:{queryParameters:a,headers:r}};return f.get(o,(()=>g.get(o,(()=>g.set(o,s()).then((e=>Promise.all([g.delete(o),e])),(e=>Promise.all([g.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.set(o,e)})},requestsCache:g,responsesCache:f}}var f="1.16.2",P=["de","us"];function w(e){return[{url:e?"analytics.{region}.algolia.com".replace("{region}",e):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}e.abtestingV3Client=function(e,i,o,n){if(!e||"string"!=typeof e)throw new Error("`appId` is missing.");if(!i||"string"!=typeof i)throw new Error("`apiKey` is missing.");if(o&&("string"!=typeof o||!P.includes(o)))throw new Error(`\`region\` must be one of the following: ${P.join(", ")}`);let{compression:l,...u}=n||{};return function({appId:e,apiKey:t,authMode:r,algoliaAgents:s,region:i,...o}){let n=function(e,t,r="WithinHeaders"){let s={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers:()=>"WithinHeaders"===r?s:{},queryParameters:()=>"WithinQueryParameters"===r?s:{}}}(e,t,r),l=g({hosts:w(i),...o,algoliaAgent:a({algoliaAgents:s,client:"AbtestingV3",version:f}),baseHeaders:{"content-type":"text/plain",...n.headers(),...o.baseHeaders},baseQueryParameters:{...n.queryParameters(),...o.baseQueryParameters}});return{transporter:l,appId:e,apiKey:t,clearCache:()=>Promise.all([l.requestsCache.clear(),l.responsesCache.clear()]).then((()=>{})),get _ua(){return l.algoliaAgent.value},addAlgoliaAgent(e,t){l.algoliaAgent.add({segment:e,version:t})},setClientApiKey({apiKey:e}){r&&"WithinHeaders"!==r?l.baseQueryParameters["x-algolia-api-key"]=e:l.baseHeaders["x-algolia-api-key"]=e},addABTests(e,t){if(!e)throw new Error("Parameter `addABTestsRequest` is required when calling `addABTests`.");if(!e.name)throw new Error("Parameter `addABTestsRequest.name` is required when calling `addABTests`.");if(!e.variants)throw new Error("Parameter `addABTestsRequest.variants` is required when calling `addABTests`.");if(!e.metrics)throw new Error("Parameter `addABTestsRequest.metrics` is required when calling `addABTests`.");if(!e.endAt)throw new Error("Parameter `addABTestsRequest.endAt` is required when calling `addABTests`.");let r={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:e};return l.request(r,t)},customDelete({path:e,parameters:t},r){if(!e)throw new Error("Parameter `path` is required when calling `customDelete`.");let s={method:"DELETE",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return l.request(s,r)},customGet({path:e,parameters:t},r){if(!e)throw new Error("Parameter `path` is required when calling `customGet`.");let s={method:"GET",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{}};return l.request(s,r)},customPost({path:e,parameters:t,body:r},s){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");let a={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:r||{}};return l.request(a,s)},customPut({path:e,parameters:t,body:r},s){if(!e)throw new Error("Parameter `path` is required when calling `customPut`.");let a={method:"PUT",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:r||{}};return l.request(a,s)},deleteABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `deleteABTest`.");let r={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(r,t)},estimateABTest(e,t){if(!e)throw new Error("Parameter `estimateABTestRequest` is required when calling `estimateABTest`.");if(!e.configuration)throw new Error("Parameter `estimateABTestRequest.configuration` is required when calling `estimateABTest`.");if(!e.variants)throw new Error("Parameter `estimateABTestRequest.variants` is required when calling `estimateABTest`.");let r={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:e};return l.request(r,t)},getABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `getABTest`.");let r={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(r,t)},getTimeseries({id:e,startDate:t,endDate:r,metric:s},a){if(!e)throw new Error("Parameter `id` is required when calling `getTimeseries`.");let i="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(e)),o={};void 0!==t&&(o.startDate=t.toString()),void 0!==r&&(o.endDate=r.toString()),void 0!==s&&(o.metric=s.toString());let n={method:"GET",path:i,queryParameters:o,headers:{}};return l.request(n,a)},listABTests({offset:e,limit:t,indexPrefix:r,indexSuffix:s,direction:a}={},i=void 0){let o={};void 0!==e&&(o.offset=e.toString()),void 0!==t&&(o.limit=t.toString()),void 0!==r&&(o.indexPrefix=r.toString()),void 0!==s&&(o.indexSuffix=s.toString()),void 0!==a&&(o.direction=a.toString());let n={method:"GET",path:"/3/abtests",queryParameters:o,headers:{}};return l.request(n,i)},stopABTest({id:e},t){if(!e)throw new Error("Parameter `id` is required when calling `stopABTest`.");let r={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(e)),queryParameters:{},headers:{}};return l.request(r,t)}}}({appId:e,apiKey:i,region:o,timeouts:{connect:1e3,read:2e3,write:3e4},logger:{debug:(e,t)=>Promise.resolve(),info:(e,t)=>Promise.resolve(),error:(e,t)=>Promise.resolve()},requester:{send:function(e){return new Promise((t=>{let r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));let s,a=(e,s)=>setTimeout((()=>{r.abort(),t({status:0,content:s,isTimedOut:!0})}),e),i=a(e.connectTimeout,"Connection timeout");r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===s&&(clearTimeout(i),s=a(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(i),clearTimeout(s),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(i),clearTimeout(s),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:s(),requestsCache:s({serializable:!1}),hostsCache:r({caches:[t({key:`${f}-${e}`}),s()]}),...u})},e.apiClientVersion=f}));
//# sourceMappingURL=/sm/a3b585ea891cf511ee5e3591929d3c56f5647cbcdcdfc098d529e2c834520206.map