CINXE.COM
Synoshi - #1 Power Spin Scrubber: 70% Off! | Synoshi
<!DOCTYPE html> <html lang="en" dir="ltr" class="tw-scroll-smooth"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@100..900&display=swap"/> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@100..900&display=swap" media="print" onload="this.media='all'"/> <noscript> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"/> </noscript> <title> Synoshi - #1 Power Spin Scrubber: 70% Off! | Synoshi </title> <meta property="og:image" content="https://get-synoshi.com/theme/synoshi/og-image.jpg"> <link rel="icon" type="image/png" href="https://get-synoshi.com/theme/synoshi/favicon_.png"> <meta name="description" content="Synoshi Power Spin Scrubber makes cleaning fast & effort-free ✅. Buy Synoshi Scrubber now with a 70% discount. The ultimate cleaning tool."> <link rel="canonical" href="https://get-synoshi.com/"/> <meta name="robots" content="noindex, nofollow"> <meta name="csrf-token" content="yB8zWFjuiPod2wb2llU36AKH5nVeTdwA1CPyQ7gz"> <script> window.addEventListener('storage', function (event) { if (event.key === 'last_csrf_token') { updateCsrf(event.newValue); } }); const localStorage = window.localStorage; if (localStorage) { function getCookie(name) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) return parts.pop().split(';').shift(); } var cookieSessionId = getCookie('orbio_session_id'); var requestSessionId = 'pHglmap3j4P15Ey2'; if (cookieSessionId === requestSessionId) { localStorage.setItem('last_csrf_token', 'yB8zWFjuiPod2wb2llU36AKH5nVeTdwA1CPyQ7gz') } else if (localStorage.getItem('last_csrf_token')) { updateCsrf(localStorage.getItem('last_csrf_token')); } } function updateCsrf(value) { var metaTag = document.querySelector('meta[name="csrf-token"]'); var hiddenInput = document.querySelector('input[name="_token"]'); if (metaTag) { metaTag.setAttribute('content', value); } if (hiddenInput) { hiddenInput.value = value; } if (window.livewireScriptConfig) { window.livewireScriptConfig.csrf = value; } } </script> <script type="module"> function q_(){import.meta.url,import("_").catch(()=>1);async function*t(){}}const Mi=Object.prototype.toString;function Gi(t){switch(Mi.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return Ut(t,Error)}}function oe(t,e){return Mi.call(t)===`[object ${e}]`}function Pi(t){return oe(t,"ErrorEvent")}function Gr(t){return oe(t,"DOMError")}function Ga(t){return oe(t,"DOMException")}function Ct(t){return oe(t,"String")}function Yi(t){return t===null||typeof t!="object"&&typeof t!="function"}function Qt(t){return oe(t,"Object")}function _r(t){return typeof Event<"u"&&Ut(t,Event)}function Pa(t){return typeof Element<"u"&&Ut(t,Element)}function Ya(t){return oe(t,"RegExp")}function gn(t){return!!(t&&t.then&&typeof t.then=="function")}function Fa(t){return Qt(t)&&"nativeEvent"in t&&"preventDefault"in t&&"stopPropagation"in t}function Fi(t){return typeof t=="number"&&t!==t}function Ut(t,e){try{return t instanceof e}catch(n){return!1}}function Me(t){return t&&t.Math==Math?t:void 0}const nt=typeof globalThis=="object"&&Me(globalThis)||typeof window=="object"&&Me(window)||typeof self=="object"&&Me(self)||typeof global=="object"&&Me(global)||function(){return this}()||{};function Oe(){return nt}function hr(t,e,n){const r=n||nt,i=r.__SENTRY__=r.__SENTRY__||{};return i[t]||(i[t]=e())}const Je=Oe(),za=80;function Pt(t,e={}){try{let n=t;const r=5,i=[];let s=0,a=0;const o=" > ",c=o.length;let u;const d=Array.isArray(e)?e:e.keyAttrs,l=!Array.isArray(e)&&e.maxStringLength||za;for(;n&&s++<r&&(u=$a(n,d),!(u==="html"||s>1&&a+i.length*c+u.length>=l));)i.push(u),a+=u.length,n=n.parentNode;return i.reverse().join(o)}catch(n){return"<unknown>"}}function $a(t,e){const n=t,r=[];let i,s,a,o,c;if(!n||!n.tagName)return"";r.push(n.tagName.toLowerCase());const u=e&&e.length?e.filter(l=>n.getAttribute(l)).map(l=>[l,n.getAttribute(l)]):null;if(u&&u.length)u.forEach(l=>{r.push(`[${l[0]}="${l[1]}"]`)});else if(n.id&&r.push(`#${n.id}`),i=n.className,i&&Ct(i))for(s=i.split(/\s+/),c=0;c<s.length;c++)r.push(`.${s[c]}`);const d=["aria-label","type","name","title","alt"];for(c=0;c<d.length;c++)a=d[c],o=n.getAttribute(a),o&&r.push(`[${a}="${o}"]`);return r.join("")}function Ha(){try{return Je.document.location.href}catch(t){return""}}function ja(t){return Je.document&&Je.document.querySelector?Je.document.querySelector(t):null}class J extends Error{constructor(e,n="warn"){super(e),this.message=e,this.name=new.target.prototype.constructor.name,Object.setPrototypeOf(this,new.target.prototype),this.logLevel=n}}const Wa=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function qa(t){return t==="http"||t==="https"}function ce(t,e=!1){const{host:n,path:r,pass:i,port:s,projectId:a,protocol:o,publicKey:c}=t;return`${o}://${c}${e&&i?`:${i}`:""}@${n}${s?`:${s}`:""}/${r&&`${r}/`}${a}`}function zi(t){const e=Wa.exec(t);if(!e)throw new J(`Invalid Sentry Dsn: ${t}`);const[n,r,i="",s,a="",o]=e.slice(1);let c="",u=o;const d=u.split("/");if(d.length>1&&(c=d.slice(0,-1).join("/"),u=d.pop()),u){const l=u.match(/^\d+/);l&&(u=l[0])}return $i({host:s,pass:i,path:c,projectId:u,port:a,protocol:n,publicKey:r})}function $i(t){return{protocol:t.protocol,publicKey:t.publicKey||"",pass:t.pass||"",host:t.host,port:t.port||"",path:t.path||"",projectId:t.projectId}}function Za(t){if(!(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__))return;const{port:e,projectId:n,protocol:r}=t;if(["protocol","publicKey","host","projectId"].forEach(s=>{if(!t[s])throw new J(`Invalid Sentry Dsn: ${s} missing`)}),!n.match(/^\d+$/))throw new J(`Invalid Sentry Dsn: Invalid projectId ${n}`);if(!qa(r))throw new J(`Invalid Sentry Dsn: Invalid protocol ${r}`);if(e&&isNaN(parseInt(e,10)))throw new J(`Invalid Sentry Dsn: Invalid port ${e}`);return!0}function Hi(t){const e=typeof t=="string"?zi(t):$i(t);return Za(e),e}const Va="Sentry Logger ",sn=["debug","info","warn","error","log","assert","trace"];function ji(t){if(!("console"in nt))return t();const e=nt.console,n={};sn.forEach(r=>{const i=e[r]&&e[r].__sentry_original__;r in e&&i&&(n[r]=e[r],e[r]=i)});try{return t()}finally{Object.keys(n).forEach(r=>{e[r]=n[r]})}}function Pr(){let t=!1;const e={enable:()=>{t=!0},disable:()=>{t=!1}};return typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__?sn.forEach(n=>{e[n]=(...r)=>{t&&ji(()=>{nt.console[n](`${Va}[${n}]:`,...r)})}}):sn.forEach(n=>{e[n]=()=>{}}),e}let f;typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__?f=hr("logger",Pr):f=Pr();function ye(t,e=0){return typeof t!="string"||e===0||t.length<=e?t:`${t.slice(0,e)}...`}function Yr(t,e){if(!Array.isArray(t))return"";const n=[];for(let r=0;r<t.length;r++){const i=t[r];try{n.push(String(i))}catch(s){n.push("[value cannot be serialized]")}}return n.join(e)}function Xa(t,e,n=!1){return Ct(t)?Ya(e)?e.test(t):Ct(e)?n?t===e:t.includes(e):!1:!1}function ue(t,e=[],n=!1){return e.some(r=>Xa(t,r,n))}function X(t,e,n){if(!(e in t))return;const r=t[e],i=n(r);if(typeof i=="function")try{Wi(i,r)}catch(s){}t[e]=i}function pr(t,e,n){Object.defineProperty(t,e,{value:n,writable:!0,configurable:!0})}function Wi(t,e){const n=e.prototype||{};t.prototype=e.prototype=n,pr(t,"__sentry_original__",e)}function mr(t){return t.__sentry_original__}function Ka(t){return Object.keys(t).map(e=>`${encodeURIComponent(e)}=${encodeURIComponent(t[e])}`).join("&")}function qi(t){if(Gi(t))return{message:t.message,name:t.name,stack:t.stack,...zr(t)};if(_r(t)){const e={type:t.type,target:Fr(t.target),currentTarget:Fr(t.currentTarget),...zr(t)};return typeof CustomEvent<"u"&&Ut(t,CustomEvent)&&(e.detail=t.detail),e}else return t}function Fr(t){try{return Pa(t)?Pt(t):Object.prototype.toString.call(t)}catch(e){return"<unknown>"}}function zr(t){if(typeof t=="object"&&t!==null){const e={};for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}else return{}}function Ja(t,e=40){const n=Object.keys(qi(t));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=e)return ye(n[0],e);for(let r=n.length;r>0;r--){const i=n.slice(0,r).join(", ");if(!(i.length>e))return r===n.length?i:ye(i,e)}return""}function ut(t){return Mn(t,new Map)}function Mn(t,e){if(Qt(t)){const n=e.get(t);if(n!==void 0)return n;const r={};e.set(t,r);for(const i of Object.keys(t))typeof t[i]<"u"&&(r[i]=Mn(t[i],e));return r}if(Array.isArray(t)){const n=e.get(t);if(n!==void 0)return n;const r=[];return e.set(t,r),t.forEach(i=>{r.push(Mn(i,e))}),r}return t}const Zi=50,$r=/\(error: (.*)\)/;function Vi(...t){const e=t.sort((n,r)=>n[0]-r[0]).map(n=>n[1]);return(n,r=0)=>{const i=[],s=n.split(` `);for(let a=r;a<s.length;a++){const o=s[a];if(o.length>1024)continue;const c=$r.test(o)?o.replace($r,"$1"):o;if(!c.match(/\S*Error: /)){for(const u of e){const d=u(c);if(d){i.push(d);break}}if(i.length>=Zi)break}}return to(i)}}function Qa(t){return Array.isArray(t)?Vi(...t):t}function to(t){if(!t.length)return[];const e=t.slice(0,Zi),n=e[e.length-1].function;n&&/sentryWrapped/.test(n)&&e.pop(),e.reverse();const r=e[e.length-1].function;return r&&/captureMessage|captureException/.test(r)&&e.pop(),e.map(i=>({...i,filename:i.filename||e[e.length-1].filename,function:i.function||"?"}))}const xn="<anonymous>";function Bt(t){try{return!t||typeof t!="function"?xn:t.name||xn}catch(e){return xn}}const Gn=Oe();function Xi(){if(!("fetch"in Gn))return!1;try{return new Headers,new Request("http://www.example.com"),new Response,!0}catch(t){return!1}}function Pn(t){return t&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(t.toString())}function eo(){if(!Xi())return!1;if(Pn(Gn.fetch))return!0;let t=!1;const e=Gn.document;if(e&&typeof e.createElement=="function")try{const n=e.createElement("iframe");n.hidden=!0,e.head.appendChild(n),n.contentWindow&&n.contentWindow.fetch&&(t=Pn(n.contentWindow.fetch)),e.head.removeChild(n)}catch(n){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",n)}return t}const Ge=Oe();function no(){const t=Ge.chrome,e=t&&t.app&&t.app.runtime,n="history"in Ge&&!!Ge.history.pushState&&!!Ge.history.replaceState;return!e&&n}const P=Oe(),Rt="__sentry_xhr_v2__",Ee={},Hr={};function ro(t){if(!Hr[t])switch(Hr[t]=!0,t){case"console":io();break;case"dom":_o();break;case"xhr":oo();break;case"fetch":so();break;case"history":co();break;case"error":ho();break;case"unhandledrejection":po();break;default:(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("unknown instrumentation type:",t);return}}function V(t,e){Ee[t]=Ee[t]||[],Ee[t].push(e),ro(t)}function dt(t,e){if(!(!t||!Ee[t]))for(const n of Ee[t]||[])try{n(e)}catch(r){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error(`Error while triggering instrumentation handler. Type: ${t} Name: ${Bt(n)} Error:`,r)}}function io(){"console"in P&&sn.forEach(function(t){t in P.console&&X(P.console,t,function(e){return function(...n){dt("console",{args:n,level:t}),e&&e.apply(P.console,n)}})})}function so(){eo()&&X(P,"fetch",function(t){return function(...e){const{method:n,url:r}=ao(e),i={args:e,fetchData:{method:n,url:r},startTimestamp:Date.now()};return dt("fetch",{...i}),t.apply(P,e).then(s=>(dt("fetch",{...i,endTimestamp:Date.now(),response:s}),s),s=>{throw dt("fetch",{...i,endTimestamp:Date.now(),error:s}),s})}})}function Yn(t,e){return!!t&&typeof t=="object"&&!!t[e]}function jr(t){return typeof t=="string"?t:t?Yn(t,"url")?t.url:t.toString?t.toString():"":""}function ao(t){if(t.length===0)return{method:"GET",url:""};if(t.length===2){const[n,r]=t;return{url:jr(n),method:Yn(r,"method")?String(r.method).toUpperCase():"GET"}}const e=t[0];return{url:jr(e),method:Yn(e,"method")?String(e.method).toUpperCase():"GET"}}function oo(){if(!("XMLHttpRequest"in P))return;const t=XMLHttpRequest.prototype;X(t,"open",function(e){return function(...n){const r=n[1],i=this[Rt]={method:Ct(n[0])?n[0].toUpperCase():n[0],url:n[1],request_headers:{}};Ct(r)&&i.method==="POST"&&r.match(/sentry_key/)&&(this.__sentry_own_request__=!0);const s=()=>{const a=this[Rt];if(a&&this.readyState===4){try{a.status_code=this.status}catch(o){}dt("xhr",{args:n,endTimestamp:Date.now(),startTimestamp:Date.now(),xhr:this})}};return"onreadystatechange"in this&&typeof this.onreadystatechange=="function"?X(this,"onreadystatechange",function(a){return function(...o){return s(),a.apply(this,o)}}):this.addEventListener("readystatechange",s),X(this,"setRequestHeader",function(a){return function(...o){const[c,u]=o,d=this[Rt];return d&&(d.request_headers[c.toLowerCase()]=u),a.apply(this,o)}}),e.apply(this,n)}}),X(t,"send",function(e){return function(...n){const r=this[Rt];return r&&n[0]!==void 0&&(r.body=n[0]),dt("xhr",{args:n,startTimestamp:Date.now(),xhr:this}),e.apply(this,n)}})}let Pe;function co(){if(!no())return;const t=P.onpopstate;P.onpopstate=function(...n){const r=P.location.href,i=Pe;if(Pe=r,dt("history",{from:i,to:r}),t)try{return t.apply(this,n)}catch(s){}};function e(n){return function(...r){const i=r.length>2?r[2]:void 0;if(i){const s=Pe,a=String(i);Pe=a,dt("history",{from:s,to:a})}return n.apply(this,r)}}X(P.history,"pushState",e),X(P.history,"replaceState",e)}const uo=1e3;let Ye,Fe;function lo(t,e){if(!t||t.type!==e.type)return!0;try{if(t.target!==e.target)return!0}catch(n){}return!1}function fo(t){if(t.type!=="keypress")return!1;try{const e=t.target;if(!e||!e.tagName)return!0;if(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable)return!1}catch(e){}return!0}function Wr(t,e=!1){return n=>{if(!n||Fe===n||fo(n))return;const r=n.type==="keypress"?"input":n.type;Ye===void 0?(t({event:n,name:r,global:e}),Fe=n):lo(Fe,n)&&(t({event:n,name:r,global:e}),Fe=n),clearTimeout(Ye),Ye=P.setTimeout(()=>{Ye=void 0},uo)}}function _o(){if(!("document"in P))return;const t=dt.bind(null,"dom"),e=Wr(t,!0);P.document.addEventListener("click",e,!1),P.document.addEventListener("keypress",e,!1),["EventTarget","Node"].forEach(n=>{const r=P[n]&&P[n].prototype;!r||!r.hasOwnProperty||!r.hasOwnProperty("addEventListener")||(X(r,"addEventListener",function(i){return function(s,a,o){if(s==="click"||s=="keypress")try{const c=this,u=c.__sentry_instrumentation_handlers__=c.__sentry_instrumentation_handlers__||{},d=u[s]=u[s]||{refCount:0};if(!d.handler){const l=Wr(t);d.handler=l,i.call(this,s,l,o)}d.refCount++}catch(c){}return i.call(this,s,a,o)}}),X(r,"removeEventListener",function(i){return function(s,a,o){if(s==="click"||s=="keypress")try{const c=this,u=c.__sentry_instrumentation_handlers__||{},d=u[s];d&&(d.refCount--,d.refCount<=0&&(i.call(this,s,d.handler,o),d.handler=void 0,delete u[s]),Object.keys(u).length===0&&delete c.__sentry_instrumentation_handlers__)}catch(c){}return i.call(this,s,a,o)}}))})}let ze=null;function ho(){ze=P.onerror,P.onerror=function(t,e,n,r,i){return dt("error",{column:r,error:i,line:n,msg:t,url:e}),ze&&!ze.__SENTRY_LOADER__?ze.apply(this,arguments):!1},P.onerror.__SENTRY_INSTRUMENTED__=!0}let $e=null;function po(){$e=P.onunhandledrejection,P.onunhandledrejection=function(t){return dt("unhandledrejection",t),$e&&!$e.__SENTRY_LOADER__?$e.apply(this,arguments):!0},P.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}function mo(){const t=typeof WeakSet=="function",e=t?new WeakSet:[];function n(i){if(t)return e.has(i)?!0:(e.add(i),!1);for(let s=0;s<e.length;s++)if(e[s]===i)return!0;return e.push(i),!1}function r(i){if(t)e.delete(i);else for(let s=0;s<e.length;s++)if(e[s]===i){e.splice(s,1);break}}return[n,r]}function lt(){const t=nt,e=t.crypto||t.msCrypto;if(e&&e.randomUUID)return e.randomUUID().replace(/-/g,"");const n=e&&e.getRandomValues?()=>e.getRandomValues(new Uint8Array(1))[0]:()=>Math.random()*16;return([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,r=>(r^(n()&15)>>r/4).toString(16))}function Ki(t){return t.exception&&t.exception.values?t.exception.values[0]:void 0}function vt(t){const{message:e,event_id:n}=t;if(e)return e;const r=Ki(t);return r?r.type&&r.value?`${r.type}: ${r.value}`:r.type||r.value||n||"<unknown>":n||"<unknown>"}function Fn(t,e,n){const r=t.exception=t.exception||{},i=r.values=r.values||[],s=i[0]=i[0]||{};s.value||(s.value=e||""),s.type||(s.type=n||"Error")}function ve(t,e){const n=Ki(t);if(!n)return;const r={type:"generic",handled:!0},i=n.mechanism;if(n.mechanism={...r,...i,...e},e&&"data"in e){const s={...i&&i.data,...e.data};n.mechanism.data=s}}function qr(t){if(t&&t.__sentry_captured__)return!0;try{pr(t,"__sentry_captured__",!0)}catch(e){}return!1}function Ji(t){return Array.isArray(t)?t:[t]}function go(){return typeof __SENTRY_BROWSER_BUNDLE__<"u"&&!!__SENTRY_BROWSER_BUNDLE__}function yo(){return"npm"}function Qi(){return!go()&&Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]"}function Eo(t,e){return t.require(e)}function pt(t,e=100,n=1/0){try{return zn("",t,e,n)}catch(r){return{ERROR:`**non-serializable** (${r})`}}}function ts(t,e=3,n=100*1024){const r=pt(t,e);return To(r)>n?ts(t,e-1,n):r}function zn(t,e,n=1/0,r=1/0,i=mo()){const[s,a]=i;if(e==null||["number","boolean","string"].includes(typeof e)&&!Fi(e))return e;const o=So(t,e);if(!o.startsWith("[object "))return o;if(e.__sentry_skip_normalization__)return e;const c=typeof e.__sentry_override_normalization_depth__=="number"?e.__sentry_override_normalization_depth__:n;if(c===0)return o.replace("object ","");if(s(e))return"[Circular ~]";const u=e;if(u&&typeof u.toJSON=="function")try{const _=u.toJSON();return zn("",_,c-1,r,i)}catch(_){}const d=Array.isArray(e)?[]:{};let l=0;const h=qi(e);for(const _ in h){if(!Object.prototype.hasOwnProperty.call(h,_))continue;if(l>=r){d[_]="[MaxProperties ~]";break}const p=h[_];d[_]=zn(_,p,c-1,r,i),l++}return a(e),d}function So(t,e){try{if(t==="domain"&&e&&typeof e=="object"&&e._events)return"[Domain]";if(t==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&e===global)return"[Global]";if(typeof window<"u"&&e===window)return"[Window]";if(typeof document<"u"&&e===document)return"[Document]";if(Fa(e))return"[SyntheticEvent]";if(typeof e=="number"&&e!==e)return"[NaN]";if(typeof e=="function")return`[Function: ${Bt(e)}]`;if(typeof e=="symbol")return`[${String(e)}]`;if(typeof e=="bigint")return`[BigInt: ${String(e)}]`;const n=bo(e);return/^HTML(\w*)Element$/.test(n)?`[HTMLElement: ${n}]`:`[object ${n}]`}catch(n){return`**non-serializable** (${n})`}}function bo(t){const e=Object.getPrototypeOf(t);return e?e.constructor.name:"null prototype"}function wo(t){return~-encodeURI(t).split(/%..|./).length}function To(t){return wo(JSON.stringify(t))}var gt;(function(t){t[t.PENDING=0]="PENDING";const n=1;t[t.RESOLVED=n]="RESOLVED";const r=2;t[t.REJECTED=r]="REJECTED"})(gt||(gt={}));function St(t){return new tt(e=>{e(t)})}function an(t){return new tt((e,n)=>{n(t)})}class tt{__init(){this._state=gt.PENDING}__init2(){this._handlers=[]}constructor(e){tt.prototype.__init.call(this),tt.prototype.__init2.call(this),tt.prototype.__init3.call(this),tt.prototype.__init4.call(this),tt.prototype.__init5.call(this),tt.prototype.__init6.call(this);try{e(this._resolve,this._reject)}catch(n){this._reject(n)}}then(e,n){return new tt((r,i)=>{this._handlers.push([!1,s=>{if(!e)r(s);else try{r(e(s))}catch(a){i(a)}},s=>{if(!n)i(s);else try{r(n(s))}catch(a){i(a)}}]),this._executeHandlers()})}catch(e){return this.then(n=>n,e)}finally(e){return new tt((n,r)=>{let i,s;return this.then(a=>{s=!1,i=a,e&&e()},a=>{s=!0,i=a,e&&e()}).then(()=>{if(s){r(i);return}n(i)})})}__init3(){this._resolve=e=>{this._setResult(gt.RESOLVED,e)}}__init4(){this._reject=e=>{this._setResult(gt.REJECTED,e)}}__init5(){this._setResult=(e,n)=>{if(this._state===gt.PENDING){if(gn(n)){n.then(this._resolve,this._reject);return}this._state=e,this._value=n,this._executeHandlers()}}}__init6(){this._executeHandlers=()=>{if(this._state===gt.PENDING)return;const e=this._handlers.slice();this._handlers=[],e.forEach(n=>{n[0]||(this._state===gt.RESOLVED&&n[1](this._value),this._state===gt.REJECTED&&n[2](this._value),n[0]=!0)})}}}function vo(t){const e=[];function n(){return t===void 0||e.length<t}function r(a){return e.splice(e.indexOf(a),1)[0]}function i(a){if(!n())return an(new J("Not adding Promise because buffer limit was reached."));const o=a();return e.indexOf(o)===-1&&e.push(o),o.then(()=>r(o)).then(null,()=>r(o).then(null,()=>{})),o}function s(a){return new tt((o,c)=>{let u=e.length;if(!u)return o(!0);const d=setTimeout(()=>{a&&a>0&&o(!1)},a);e.forEach(l=>{St(l).then(()=>{--u||(clearTimeout(d),o(!0))},c)})})}return{$:e,add:i,drain:s}}function In(t){if(!t)return{};const e=t.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!e)return{};const n=e[6]||"",r=e[8]||"";return{host:e[4],path:e[5],protocol:e[2],search:n,hash:r,relative:e[5]+n+r}}const Ro=["fatal","error","warning","log","info","debug"];function ko(t){return t==="warn"?"warning":Ro.includes(t)?t:"log"}const es=Oe(),$n={nowSeconds:()=>Date.now()/1e3};function No(){const{performance:t}=es;if(!t||!t.now)return;const e=Date.now()-t.now();return{now:()=>t.now(),timeOrigin:e}}function Do(){try{return Eo(module,"perf_hooks").performance}catch(t){return}}const On=Qi()?Do():No(),Zr=On===void 0?$n:{nowSeconds:()=>(On.timeOrigin+On.now())/1e3},yn=$n.nowSeconds.bind($n),Yt=Zr.nowSeconds.bind(Zr),bt=(()=>{const{performance:t}=es;if(!t||!t.now)return;const e=3600*1e3,n=t.now(),r=Date.now(),i=t.timeOrigin?Math.abs(t.timeOrigin+n-r):e,s=i<e,a=t.timing&&t.timing.navigationStart,c=typeof a=="number"?Math.abs(a+n-r):e,u=c<e;return s||u?i<=c?t.timeOrigin:a:r})(),xo=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function ns(t){const e=t.match(xo);if(!t||!e)return;let n;return e[3]==="1"?n=!0:e[3]==="0"&&(n=!1),{traceId:e[1],parentSampled:n,parentSpanId:e[2]}}function Wt(t,e=[]){return[t,e]}function Io(t,e){const[n,r]=t;return[n,[...r,e]]}function on(t,e){const n=t[1];for(const r of n){const i=r[0].type;if(e(r,i))return!0}return!1}function Oo(t,e){return on(t,(n,r)=>e.includes(r))}function Hn(t,e){return(e||new TextEncoder).encode(t)}function rs(t,e){const[n,r]=t;let i=JSON.stringify(n);function s(a){typeof i=="string"?i=typeof a=="string"?i+a:[Hn(i,e),a]:i.push(typeof a=="string"?Hn(a,e):a)}for(const a of r){const[o,c]=a;if(s(` ${JSON.stringify(o)} `),typeof c=="string"||c instanceof Uint8Array)s(c);else{let u;try{u=JSON.stringify(c)}catch(d){u=JSON.stringify(pt(c))}s(u)}}return typeof i=="string"?i:Ao(i)}function Ao(t){const e=t.reduce((i,s)=>i+s.length,0),n=new Uint8Array(e);let r=0;for(const i of t)n.set(i,r),r+=i.length;return n}function Co(t,e,n){let r=typeof t=="string"?e.encode(t):t;function i(c){const u=r.subarray(0,c);return r=r.subarray(c+1),u}function s(){let c=r.indexOf(10);return c<0&&(c=r.length),JSON.parse(n.decode(i(c)))}const a=s(),o=[];for(;r.length;){const c=s(),u=typeof c.length=="number"?c.length:void 0;o.push([c,u?i(u):s()])}return[a,o]}function Uo(t,e){const n=typeof t.data=="string"?Hn(t.data,e):t.data;return[ut({type:"attachment",length:n.length,filename:t.filename,content_type:t.contentType,attachment_type:t.attachmentType}),n]}const Bo={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"};function Vr(t){return Bo[t]}function gr(t){if(!t||!t.sdk)return;const{name:e,version:n}=t.sdk;return{name:e,version:n}}function is(t,e,n,r){const i=t.sdkProcessingMetadata&&t.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:t.event_id,sent_at:new Date().toISOString(),...e&&{sdk:e},...!!n&&{dsn:ce(r)},...i&&{trace:ut({...i})}}}function Lo(t,e,n){const r=[{type:"client_report"},{timestamp:n||yn(),discarded_events:t}];return Wt(e?{dsn:e}:{},[r])}const Mo=60*1e3;function ss(t,e=Date.now()){const n=parseInt(`${t}`,10);if(!isNaN(n))return n*1e3;const r=Date.parse(`${t}`);return isNaN(r)?Mo:r-e}function Go(t,e){return t[e]||t.all||0}function Po(t,e,n=Date.now()){return Go(t,e)>n}function Yo(t,{statusCode:e,headers:n},r=Date.now()){const i={...t},s=n&&n["x-sentry-rate-limits"],a=n&&n["retry-after"];if(s)for(const o of s.trim().split(",")){const[c,u]=o.split(":",2),d=parseInt(c,10),l=(isNaN(d)?60:d)*1e3;if(!u)i.all=r+l;else for(const h of u.split(";"))i[h]=r+l}else a?i.all=r+ss(a,r):e===429&&(i.all=r+60*1e3);return i}const jn="baggage",as="sentry-",Fo=/^sentry-/,zo=8192;function $o(t){if(!Ct(t)&&!Array.isArray(t))return;let e={};if(Array.isArray(t))e=t.reduce((r,i)=>{const s=Xr(i);return{...r,...s}},{});else{if(!t)return;e=Xr(t)}const n=Object.entries(e).reduce((r,[i,s])=>{if(i.match(Fo)){const a=i.slice(as.length);r[a]=s}return r},{});if(Object.keys(n).length>0)return n}function os(t){const e=Object.entries(t).reduce((n,[r,i])=>(i&&(n[`${as}${r}`]=i),n),{});return Ho(e)}function Xr(t){return t.split(",").map(e=>e.split("=").map(n=>decodeURIComponent(n.trim()))).reduce((e,[n,r])=>(e[n]=r,e),{})}function Ho(t){if(Object.keys(t).length!==0)return Object.entries(t).reduce((e,[n,r],i)=>{const s=`${encodeURIComponent(n)}=${encodeURIComponent(r)}`,a=i===0?s:`${e},${s}`;return a.length>zo?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Not adding key: ${n} with val: ${r} to baggage header due to exceeding baggage size limits.`),e):a},"")}const En="production";function jo(t){const e=Yt(),n={sid:lt(),init:!0,timestamp:e,started:e,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>qo(n)};return t&&te(n,t),n}function te(t,e={}){if(e.user&&(!t.ipAddress&&e.user.ip_address&&(t.ipAddress=e.user.ip_address),!t.did&&!e.did&&(t.did=e.user.id||e.user.email||e.user.username)),t.timestamp=e.timestamp||Yt(),e.ignoreDuration&&(t.ignoreDuration=e.ignoreDuration),e.sid&&(t.sid=e.sid.length===32?e.sid:lt()),e.init!==void 0&&(t.init=e.init),!t.did&&e.did&&(t.did=`${e.did}`),typeof e.started=="number"&&(t.started=e.started),t.ignoreDuration)t.duration=void 0;else if(typeof e.duration=="number")t.duration=e.duration;else{const n=t.timestamp-t.started;t.duration=n>=0?n:0}e.release&&(t.release=e.release),e.environment&&(t.environment=e.environment),!t.ipAddress&&e.ipAddress&&(t.ipAddress=e.ipAddress),!t.userAgent&&e.userAgent&&(t.userAgent=e.userAgent),typeof e.errors=="number"&&(t.errors=e.errors),e.status&&(t.status=e.status)}function Wo(t,e){let n={};e?n={status:e}:t.status==="ok"&&(n={status:"exited"}),te(t,n)}function qo(t){return ut({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}`:void 0,duration:t.duration,attrs:{release:t.release,environment:t.environment,ip_address:t.ipAddress,user_agent:t.userAgent}})}const Zo=100;class Dt{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._extra={},this._contexts={},this._sdkProcessingMetadata={}}static clone(e){const n=new Dt;return e&&(n._breadcrumbs=[...e._breadcrumbs],n._tags={...e._tags},n._extra={...e._extra},n._contexts={...e._contexts},n._user=e._user,n._level=e._level,n._span=e._span,n._session=e._session,n._transactionName=e._transactionName,n._fingerprint=e._fingerprint,n._eventProcessors=[...e._eventProcessors],n._requestSession=e._requestSession,n._attachments=[...e._attachments],n._sdkProcessingMetadata={...e._sdkProcessingMetadata}),n}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{},this._session&&te(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(e){return this._requestSession=e,this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,n){return this._tags={...this._tags,[e]:n},this._notifyScopeListeners(),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,n){return this._extra={...this._extra,[e]:n},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,n){return n===null?delete this._contexts[e]:this._contexts[e]=n,this._notifyScopeListeners(),this}setSpan(e){return this._span=e,this._notifyScopeListeners(),this}getSpan(){return this._span}getTransaction(){const e=this.getSpan();return e&&e.transaction}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;if(typeof e=="function"){const n=e(this);return n instanceof Dt?n:this}return e instanceof Dt?(this._tags={...this._tags,...e._tags},this._extra={...this._extra,...e._extra},this._contexts={...this._contexts,...e._contexts},e._user&&Object.keys(e._user).length&&(this._user=e._user),e._level&&(this._level=e._level),e._fingerprint&&(this._fingerprint=e._fingerprint),e._requestSession&&(this._requestSession=e._requestSession)):Qt(e)&&(e=e,this._tags={...this._tags,...e.tags},this._extra={...this._extra,...e.extra},this._contexts={...this._contexts,...e.contexts},e.user&&(this._user=e.user),e.level&&(this._level=e.level),e.fingerprint&&(this._fingerprint=e.fingerprint),e.requestSession&&(this._requestSession=e.requestSession)),this}clear(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._requestSession=void 0,this._span=void 0,this._session=void 0,this._notifyScopeListeners(),this._attachments=[],this}addBreadcrumb(e,n){const r=typeof n=="number"?n:Zo;if(r<=0)return this;const i={timestamp:yn(),...e};return this._breadcrumbs=[...this._breadcrumbs,i].slice(-r),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}getAttachments(){return this._attachments}clearAttachments(){return this._attachments=[],this}applyToEvent(e,n={}){if(this._extra&&Object.keys(this._extra).length&&(e.extra={...this._extra,...e.extra}),this._tags&&Object.keys(this._tags).length&&(e.tags={...this._tags,...e.tags}),this._user&&Object.keys(this._user).length&&(e.user={...this._user,...e.user}),this._contexts&&Object.keys(this._contexts).length&&(e.contexts={...this._contexts,...e.contexts}),this._level&&(e.level=this._level),this._transactionName&&(e.transaction=this._transactionName),this._span){e.contexts={trace:this._span.getTraceContext(),...e.contexts};const r=this._span.transaction;if(r){e.sdkProcessingMetadata={dynamicSamplingContext:r.getDynamicSamplingContext(),...e.sdkProcessingMetadata};const i=r.name;i&&(e.tags={transaction:i,...e.tags})}}return this._applyFingerprint(e),e.breadcrumbs=[...e.breadcrumbs||[],...this._breadcrumbs],e.breadcrumbs=e.breadcrumbs.length>0?e.breadcrumbs:void 0,e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...this._sdkProcessingMetadata},this._notifyEventProcessors([...cs(),...this._eventProcessors],e,n)}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...e},this}_notifyEventProcessors(e,n,r,i=0){return new tt((s,a)=>{const o=e[i];if(n===null||typeof o!="function")s(n);else{const c=o({...n},r);(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&o.id&&c===null&&f.log(`Event processor "${o.id}" dropped event`),gn(c)?c.then(u=>this._notifyEventProcessors(e,u,r,i+1).then(s)).then(null,a):this._notifyEventProcessors(e,c,r,i+1).then(s).then(null,a)}})}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}_applyFingerprint(e){e.fingerprint=e.fingerprint?Ji(e.fingerprint):[],this._fingerprint&&(e.fingerprint=e.fingerprint.concat(this._fingerprint)),e.fingerprint&&!e.fingerprint.length&&delete e.fingerprint}}function cs(){return hr("globalEventProcessors",()=>[])}function Ae(t){cs().push(t)}const us=4,Vo=100;class yr{constructor(e,n=new Dt,r=us){this._version=r,this._stack=[{scope:n}],e&&this.bindClient(e)}isOlderThan(e){return this._version<e}bindClient(e){const n=this.getStackTop();n.client=e,e&&e.setupIntegrations&&e.setupIntegrations()}pushScope(){const e=Dt.clone(this.getScope());return this.getStack().push({client:this.getClient(),scope:e}),e}popScope(){return this.getStack().length<=1?!1:!!this.getStack().pop()}withScope(e){const n=this.pushScope();try{e(n)}finally{this.popScope()}}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(e,n){const r=this._lastEventId=n&&n.event_id?n.event_id:lt(),i=new Error("Sentry syntheticException");return this._withClient((s,a)=>{s.captureException(e,{originalException:e,syntheticException:i,...n,event_id:r},a)}),r}captureMessage(e,n,r){const i=this._lastEventId=r&&r.event_id?r.event_id:lt(),s=new Error(e);return this._withClient((a,o)=>{a.captureMessage(e,n,{originalException:e,syntheticException:s,...r,event_id:i},o)}),i}captureEvent(e,n){const r=n&&n.event_id?n.event_id:lt();return e.type||(this._lastEventId=r),this._withClient((i,s)=>{i.captureEvent(e,{...n,event_id:r},s)}),r}lastEventId(){return this._lastEventId}addBreadcrumb(e,n){const{scope:r,client:i}=this.getStackTop();if(!i)return;const{beforeBreadcrumb:s=null,maxBreadcrumbs:a=Vo}=i.getOptions&&i.getOptions()||{};if(a<=0)return;const c={timestamp:yn(),...e},u=s?ji(()=>s(c,n)):c;u!==null&&(i.emit&&i.emit("beforeAddBreadcrumb",u,n),r.addBreadcrumb(u,a))}setUser(e){this.getScope().setUser(e)}setTags(e){this.getScope().setTags(e)}setExtras(e){this.getScope().setExtras(e)}setTag(e,n){this.getScope().setTag(e,n)}setExtra(e,n){this.getScope().setExtra(e,n)}setContext(e,n){this.getScope().setContext(e,n)}configureScope(e){const{scope:n,client:r}=this.getStackTop();r&&e(n)}run(e){const n=Wn(this);try{e(this)}finally{Wn(n)}}getIntegration(e){const n=this.getClient();if(!n)return null;try{return n.getIntegration(e)}catch(r){return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Cannot retrieve integration ${e.id} from the current Hub`),null}}startTransaction(e,n){const r=this._callExtensionMethod("startTransaction",e,n);return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&!r&&console.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init': Sentry.addTracingExtensions(); Sentry.init({...}); `),r}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(e=!1){if(e)return this.endSession();this._sendSessionUpdate()}endSession(){const n=this.getStackTop().scope,r=n.getSession();r&&Wo(r),this._sendSessionUpdate(),n.setSession()}startSession(e){const{scope:n,client:r}=this.getStackTop(),{release:i,environment:s=En}=r&&r.getOptions()||{},{userAgent:a}=nt.navigator||{},o=jo({release:i,environment:s,user:n.getUser(),...a&&{userAgent:a},...e}),c=n.getSession&&n.getSession();return c&&c.status==="ok"&&te(c,{status:"exited"}),this.endSession(),n.setSession(o),o}shouldSendDefaultPii(){const e=this.getClient(),n=e&&e.getOptions();return!!(n&&n.sendDefaultPii)}_sendSessionUpdate(){const{scope:e,client:n}=this.getStackTop(),r=e.getSession();r&&n&&n.captureSession&&n.captureSession(r)}_withClient(e){const{scope:n,client:r}=this.getStackTop();r&&e(r,n)}_callExtensionMethod(e,...n){const i=de().__SENTRY__;if(i&&i.extensions&&typeof i.extensions[e]=="function")return i.extensions[e].apply(this,n);(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Extension method ${e} couldn't be found, doing nothing.`)}}function de(){return nt.__SENTRY__=nt.__SENTRY__||{extensions:{},hub:void 0},nt}function Wn(t){const e=de(),n=cn(e);return ds(e,t),n}function g(){const t=de();if(t.__SENTRY__&&t.__SENTRY__.acs){const e=t.__SENTRY__.acs.getCurrentHub();if(e)return e}return Xo(t)}function Xo(t=de()){return(!Ko(t)||cn(t).isOlderThan(us))&&ds(t,new yr),cn(t)}function Ko(t){return!!(t&&t.__SENTRY__&&t.__SENTRY__.hub)}function cn(t){return hr("hub",()=>new yr,t)}function ds(t,e){if(!t)return!1;const n=t.__SENTRY__=t.__SENTRY__||{};return n.hub=e,!0}function Er(t){if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;const e=g().getClient(),n=t||e&&e.getOptions();return!!n&&(n.enableTracing||"tracesSampleRate"in n||"tracesSampler"in n)}function le(t){return(t||g()).getScope().getTransaction()}let Kr=!1;function Jo(){Kr||(Kr=!0,V("error",qn),V("unhandledrejection",qn))}function qn(){const t=le();if(t){const e="internal_error";(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Transaction: ${e} -> Global error occured`),t.setStatus(e)}}qn.tag="sentry_tracingErrorCallback";class Sn{__init(){this.spans=[]}constructor(e=1e3){Sn.prototype.__init.call(this),this._maxlen=e}add(e){this.spans.length>this._maxlen?e.spanRecorder=void 0:this.spans.push(e)}}class yt{__init2(){this.traceId=lt()}__init3(){this.spanId=lt().substring(16)}__init4(){this.startTimestamp=Yt()}__init5(){this.tags={}}__init6(){this.data={}}__init7(){this.instrumenter="sentry"}constructor(e){if(yt.prototype.__init2.call(this),yt.prototype.__init3.call(this),yt.prototype.__init4.call(this),yt.prototype.__init5.call(this),yt.prototype.__init6.call(this),yt.prototype.__init7.call(this),!e)return this;e.traceId&&(this.traceId=e.traceId),e.spanId&&(this.spanId=e.spanId),e.parentSpanId&&(this.parentSpanId=e.parentSpanId),"sampled"in e&&(this.sampled=e.sampled),e.op&&(this.op=e.op),e.description&&(this.description=e.description),e.data&&(this.data=e.data),e.tags&&(this.tags=e.tags),e.status&&(this.status=e.status),e.startTimestamp&&(this.startTimestamp=e.startTimestamp),e.endTimestamp&&(this.endTimestamp=e.endTimestamp),e.instrumenter&&(this.instrumenter=e.instrumenter)}startChild(e){const n=new yt({...e,parentSpanId:this.spanId,sampled:this.sampled,traceId:this.traceId});if(n.spanRecorder=this.spanRecorder,n.spanRecorder&&n.spanRecorder.add(n),n.transaction=this.transaction,(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&n.transaction){const r=e&&e.op||"< unknown op >",i=n.transaction.name||"< unknown name >",s=n.transaction.spanId,a=`[Tracing] Starting '${r}' span on transaction '${i}' (${s}).`;n.transaction.metadata.spanMetadata[n.spanId]={logMessage:a},f.log(a)}return n}setTag(e,n){return this.tags={...this.tags,[e]:n},this}setData(e,n){return this.data={...this.data,[e]:n},this}setStatus(e){return this.status=e,this}setHttpStatus(e){this.setTag("http.status_code",String(e));const n=ls(e);return n!=="unknown_error"&&this.setStatus(n),this}isSuccess(){return this.status==="ok"}finish(e){if((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&this.transaction&&this.transaction.spanId!==this.spanId){const{logMessage:n}=this.transaction.metadata.spanMetadata[this.spanId];n&&f.log(n.replace("Starting","Finishing"))}this.endTimestamp=typeof e=="number"?e:Yt()}toTraceparent(){let e="";return this.sampled!==void 0&&(e=this.sampled?"-1":"-0"),`${this.traceId}-${this.spanId}${e}`}toContext(){return ut({data:this.data,description:this.description,endTimestamp:this.endTimestamp,op:this.op,parentSpanId:this.parentSpanId,sampled:this.sampled,spanId:this.spanId,startTimestamp:this.startTimestamp,status:this.status,tags:this.tags,traceId:this.traceId})}updateWithContext(e){return this.data=e.data||{},this.description=e.description,this.endTimestamp=e.endTimestamp,this.op=e.op,this.parentSpanId=e.parentSpanId,this.sampled=e.sampled,this.spanId=e.spanId||this.spanId,this.startTimestamp=e.startTimestamp||this.startTimestamp,this.status=e.status,this.tags=e.tags||{},this.traceId=e.traceId||this.traceId,this}getTraceContext(){return ut({data:Object.keys(this.data).length>0?this.data:void 0,description:this.description,op:this.op,parent_span_id:this.parentSpanId,span_id:this.spanId,status:this.status,tags:Object.keys(this.tags).length>0?this.tags:void 0,trace_id:this.traceId})}toJSON(){return ut({data:Object.keys(this.data).length>0?this.data:void 0,description:this.description,op:this.op,parent_span_id:this.parentSpanId,span_id:this.spanId,start_timestamp:this.startTimestamp,status:this.status,tags:Object.keys(this.tags).length>0?this.tags:void 0,timestamp:this.endTimestamp,trace_id:this.traceId})}}function ls(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"}class Jt extends yt{__init(){this._measurements={}}__init2(){this._contexts={}}__init3(){this._frozenDynamicSamplingContext=void 0}constructor(e,n){super(e),Jt.prototype.__init.call(this),Jt.prototype.__init2.call(this),Jt.prototype.__init3.call(this),this._hub=n||g(),this._name=e.name||"",this.metadata={source:"custom",...e.metadata,spanMetadata:{}},this._trimEnd=e.trimEnd,this.transaction=this;const r=this.metadata.dynamicSamplingContext;r&&(this._frozenDynamicSamplingContext={...r})}get name(){return this._name}set name(e){this.setName(e)}setName(e,n="custom"){this._name=e,this.metadata.source=n}initSpanRecorder(e=1e3){this.spanRecorder||(this.spanRecorder=new Sn(e)),this.spanRecorder.add(this)}setContext(e,n){n===null?delete this._contexts[e]:this._contexts[e]=n}setMeasurement(e,n,r=""){this._measurements[e]={value:n,unit:r}}setMetadata(e){this.metadata={...this.metadata,...e}}finish(e){if(this.endTimestamp!==void 0)return;this.name||((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Transaction has no name, falling back to `<unlabeled transaction>`."),this.name="<unlabeled transaction>"),super.finish(e);const n=this._hub.getClient();if(n&&n.emit&&n.emit("finishTransaction",this),this.sampled!==!0){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled."),n&&n.recordDroppedEvent("sample_rate","transaction");return}const r=this.spanRecorder?this.spanRecorder.spans.filter(o=>o!==this&&o.endTimestamp):[];this._trimEnd&&r.length>0&&(this.endTimestamp=r.reduce((o,c)=>o.endTimestamp&&c.endTimestamp?o.endTimestamp>c.endTimestamp?o:c:o).endTimestamp);const i=this.metadata,s={contexts:{...this._contexts,trace:this.getTraceContext()},spans:r,start_timestamp:this.startTimestamp,tags:this.tags,timestamp:this.endTimestamp,transaction:this.name,type:"transaction",sdkProcessingMetadata:{...i,dynamicSamplingContext:this.getDynamicSamplingContext()},...i.source&&{transaction_info:{source:i.source}}};return Object.keys(this._measurements).length>0&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding measurements to transaction",JSON.stringify(this._measurements,void 0,2)),s.measurements=this._measurements),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`),this._hub.captureEvent(s)}toContext(){const e=super.toContext();return ut({...e,name:this.name,trimEnd:this._trimEnd})}updateWithContext(e){return super.updateWithContext(e),this.name=e.name||"",this._trimEnd=e.trimEnd,this}getDynamicSamplingContext(){if(this._frozenDynamicSamplingContext)return this._frozenDynamicSamplingContext;const e=this._hub||g(),n=e&&e.getClient();if(!n)return{};const{environment:r,release:i}=n.getOptions()||{},{publicKey:s}=n.getDsn()||{},a=this.metadata.sampleRate,o=a!==void 0?a.toString():void 0,{segment:c}=e.getScope().getUser()||{},u=this.metadata.source,d=u&&u!=="url"?this.name:void 0,l=ut({environment:r||En,release:i,transaction:d,user_segment:c,public_key:s,trace_id:this.traceId,sample_rate:o});return n.emit&&n.emit("createDsc",l),l}setHub(e){this._hub=e}}const Qe={idleTimeout:1e3,finalTimeout:3e4,heartbeatInterval:5e3},Qo="finishReason",qt=["heartbeatFailed","idleTimeout","documentHidden","finalTimeout","externalFinish","cancelled"];class tc extends Sn{constructor(e,n,r,i){super(i),this._pushActivity=e,this._popActivity=n,this.transactionSpanId=r}add(e){e.spanId!==this.transactionSpanId&&(e.finish=n=>{e.endTimestamp=typeof n=="number"?n:Yt(),this._popActivity(e.spanId)},e.endTimestamp===void 0&&this._pushActivity(e.spanId)),super.add(e)}}class Tt extends Jt{__init(){this.activities={}}__init2(){this._heartbeatCounter=0}__init3(){this._finished=!1}__init4(){this._idleTimeoutCanceledPermanently=!1}__init5(){this._beforeFinishCallbacks=[]}__init6(){this._finishReason=qt[4]}constructor(e,n,r=Qe.idleTimeout,i=Qe.finalTimeout,s=Qe.heartbeatInterval,a=!1){super(e,n),this._idleHub=n,this._idleTimeout=r,this._finalTimeout=i,this._heartbeatInterval=s,this._onScope=a,Tt.prototype.__init.call(this),Tt.prototype.__init2.call(this),Tt.prototype.__init3.call(this),Tt.prototype.__init4.call(this),Tt.prototype.__init5.call(this),Tt.prototype.__init6.call(this),a&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`),n.configureScope(o=>o.setSpan(this))),this._restartIdleTimeout(),setTimeout(()=>{this._finished||(this.setStatus("deadline_exceeded"),this._finishReason=qt[3],this.finish())},this._finalTimeout)}finish(e=Yt()){if(this._finished=!0,this.activities={},this.op==="ui.action.click"&&this.setTag(Qo,this._finishReason),this.spanRecorder){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] finishing IdleTransaction",new Date(e*1e3).toISOString(),this.op);for(const n of this._beforeFinishCallbacks)n(this,e);this.spanRecorder.spans=this.spanRecorder.spans.filter(n=>{if(n.spanId===this.spanId)return!0;n.endTimestamp||(n.endTimestamp=e,n.setStatus("cancelled"),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] cancelling span since transaction ended early",JSON.stringify(n,void 0,2)));const r=n.startTimestamp<e;return r||(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] discarding Span since it happened after Transaction was finished",JSON.stringify(n,void 0,2)),r}),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] flushing IdleTransaction")}else(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] No active IdleTransaction");if(this._onScope){const n=this._idleHub.getScope();n.getTransaction()===this&&n.setSpan(void 0)}return super.finish(e)}registerBeforeFinishCallback(e){this._beforeFinishCallbacks.push(e)}initSpanRecorder(e){if(!this.spanRecorder){const n=i=>{this._finished||this._pushActivity(i)},r=i=>{this._finished||this._popActivity(i)};this.spanRecorder=new tc(n,r,this.spanId,e),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("Starting heartbeat"),this._pingHeartbeat()}this.spanRecorder.add(this)}cancelIdleTimeout(e,{restartOnChildSpanChange:n}={restartOnChildSpanChange:!0}){this._idleTimeoutCanceledPermanently=n===!1,this._idleTimeoutID&&(clearTimeout(this._idleTimeoutID),this._idleTimeoutID=void 0,Object.keys(this.activities).length===0&&this._idleTimeoutCanceledPermanently&&(this._finishReason=qt[5],this.finish(e)))}setFinishReason(e){this._finishReason=e}_restartIdleTimeout(e){this.cancelIdleTimeout(),this._idleTimeoutID=setTimeout(()=>{!this._finished&&Object.keys(this.activities).length===0&&(this._finishReason=qt[1],this.finish(e))},this._idleTimeout)}_pushActivity(e){this.cancelIdleTimeout(void 0,{restartOnChildSpanChange:!this._idleTimeoutCanceledPermanently}),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] pushActivity: ${e}`),this.activities[e]=!0,(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] new activities count",Object.keys(this.activities).length)}_popActivity(e){if(this.activities[e]&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] popActivity ${e}`),delete this.activities[e],(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] new activities count",Object.keys(this.activities).length)),Object.keys(this.activities).length===0){const n=Yt();this._idleTimeoutCanceledPermanently?(this._finishReason=qt[5],this.finish(n)):this._restartIdleTimeout(n+this._idleTimeout/1e3)}}_beat(){if(this._finished)return;const e=Object.keys(this.activities).join("");e===this._prevHeartbeatString?this._heartbeatCounter++:this._heartbeatCounter=1,this._prevHeartbeatString=e,this._heartbeatCounter>=3?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] Transaction finished because of no change for 3 heart beats"),this.setStatus("deadline_exceeded"),this._finishReason=qt[0],this.finish()):this._pingHeartbeat()}_pingHeartbeat(){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`),setTimeout(()=>{this._beat()},this._heartbeatInterval)}}function ec(){const e=this.getScope().getSpan();return e?{"sentry-trace":e.toTraceparent()}:{}}function fs(t,e,n){if(!Er(e))return t.sampled=!1,t;if(t.sampled!==void 0)return t.setMetadata({sampleRate:Number(t.sampled)}),t;let r;return typeof e.tracesSampler=="function"?(r=e.tracesSampler(n),t.setMetadata({sampleRate:Number(r)})):n.parentSampled!==void 0?r=n.parentSampled:typeof e.tracesSampleRate<"u"?(r=e.tracesSampleRate,t.setMetadata({sampleRate:Number(r)})):(r=1,t.setMetadata({sampleRate:r})),nc(r)?r?(t.sampled=Math.random()<r,t.sampled?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] starting ${t.op} transaction - ${t.name}`),t):((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(r)})`),t)):((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Discarding transaction because ${typeof e.tracesSampler=="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`),t.sampled=!1,t):((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("[Tracing] Discarding transaction because of invalid sample rate."),t.sampled=!1,t)}function nc(t){return Fi(t)||!(typeof t=="number"||typeof t=="boolean")?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.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)}.`),!1):t<0||t>1?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${t}.`),!1):!0}function rc(t,e){const n=this.getClient(),r=n&&n.getOptions()||{},i=r.instrumenter||"sentry",s=t.instrumenter||"sentry";i!==s&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error(`A transaction was started with instrumenter=\`${s}\`, but the SDK is configured with the \`${i}\` instrumenter. The transaction will not be sampled. Please use the ${i} instrumentation to start transactions.`),t.sampled=!1);let a=new Jt(t,this);return a=fs(a,r,{parentSampled:t.parentSampled,transactionContext:t,...e}),a.sampled&&a.initSpanRecorder(r._experiments&&r._experiments.maxSpans),n&&n.emit&&n.emit("startTransaction",a),a}function Jr(t,e,n,r,i,s,a){const o=t.getClient(),c=o&&o.getOptions()||{};let u=new Tt(e,t,n,r,a,i);return u=fs(u,c,{parentSampled:e.parentSampled,transactionContext:e,...s}),u.sampled&&u.initSpanRecorder(c._experiments&&c._experiments.maxSpans),o&&o.emit&&o.emit("startTransaction",u),u}function _s(){const t=de();t.__SENTRY__&&(t.__SENTRY__.extensions=t.__SENTRY__.extensions||{},t.__SENTRY__.extensions.startTransaction||(t.__SENTRY__.extensions.startTransaction=rc),t.__SENTRY__.extensions.traceHeaders||(t.__SENTRY__.extensions.traceHeaders=ec),Jo())}function ic(t,e,n=()=>{}){const r={...t};r.name!==void 0&&r.description===void 0&&(r.description=r.name);const i=g(),s=i.getScope(),a=s.getSpan(),o=a?a.startChild(r):i.startTransaction(r);s.setSpan(o);function c(){o&&o.finish(),i.getScope().setSpan(a)}let u;try{u=e(o)}catch(d){throw o&&o.setStatus("internal_error"),n(d),c(),d}return gn(u)?Promise.resolve(u).then(()=>{c()},d=>{o&&o.setStatus("internal_error"),n(d),c()}):c(),u}function bn(t,e){return g().captureException(t,{captureContext:e})}function sc(t,e){const n=typeof e=="string"?e:void 0,r=typeof e!="string"?{captureContext:e}:void 0;return g().captureMessage(t,n,r)}function ac(t,e){return g().captureEvent(t,e)}function oc(t){g().configureScope(t)}function hs(t){g().addBreadcrumb(t)}function ps(t,e){g().setContext(t,e)}function cc(t){g().setExtras(t)}function uc(t,e){g().setExtra(t,e)}function dc(t){g().setTags(t)}function lc(t,e){g().setTag(t,e)}function fc(t){g().setUser(t)}function ms(t){g().withScope(t)}function _c(t,e){return g().startTransaction({...t},e)}const hc="7";function gs(t){const e=t.protocol?`${t.protocol}:`:"",n=t.port?`:${t.port}`:"";return`${e}//${t.host}${n}${t.path?`/${t.path}`:""}/api/`}function pc(t){return`${gs(t)}${t.projectId}/envelope/`}function mc(t,e){return Ka({sentry_key:t.publicKey,sentry_version:hc,...e&&{sentry_client:`${e.name}/${e.version}`}})}function ys(t,e={}){const n=typeof e=="string"?e:e.tunnel,r=typeof e=="string"||!e._metadata?void 0:e._metadata.sdk;return n||`${pc(t)}?${mc(t,r)}`}function gc(t,e){const n=Hi(t),r=`${gs(n)}embed/error-page/`;let i=`dsn=${ce(n)}`;for(const s in e)if(s!=="dsn")if(s==="user"){const a=e.user;if(!a)continue;a.name&&(i+=`&name=${encodeURIComponent(a.name)}`),a.email&&(i+=`&email=${encodeURIComponent(a.email)}`)}else i+=`&${encodeURIComponent(s)}=${encodeURIComponent(e[s])}`;return`${r}?${i}`}function yc(t,e){return e&&(t.sdk=t.sdk||{},t.sdk.name=t.sdk.name||e.name,t.sdk.version=t.sdk.version||e.version,t.sdk.integrations=[...t.sdk.integrations||[],...e.integrations||[]],t.sdk.packages=[...t.sdk.packages||[],...e.packages||[]]),t}function Ec(t,e,n,r){const i=gr(n),s={sent_at:new Date().toISOString(),...i&&{sdk:i},...!!r&&{dsn:ce(e)}},a="aggregates"in t?[{type:"sessions"},t]:[{type:"session"},t];return Wt(s,[a])}function Sc(t,e,n,r){const i=gr(n),s=t.type&&t.type!=="replay_event"?t.type:"event";yc(t,n&&n.sdk);const a=is(t,i,r,e);return delete t.sdkProcessingMetadata,Wt(a,[[{type:s},t]])}const Qr=[];function bc(t){const e={};return t.forEach(n=>{const{name:r}=n,i=e[r];i&&!i.isDefaultInstance&&n.isDefaultInstance||(e[r]=n)}),Object.keys(e).map(n=>e[n])}function wc(t){const e=t.defaultIntegrations||[],n=t.integrations;e.forEach(a=>{a.isDefaultInstance=!0});let r;Array.isArray(n)?r=[...e,...n]:typeof n=="function"?r=Ji(n(e)):r=e;const i=bc(r),s=vc(i,a=>a.name==="Debug");if(s!==-1){const[a]=i.splice(s,1);i.push(a)}return i}function Tc(t){const e={};return t.forEach(n=>{n&&Es(n,e)}),e}function Es(t,e){e[t.name]=t,Qr.indexOf(t.name)===-1&&(t.setupOnce(Ae,g),Qr.push(t.name),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`Integration installed: ${t.name}`))}function vc(t,e){for(let n=0;n<t.length;n++)if(e(t[n])===!0)return n;return-1}function Ss(t,e,n,r){const{normalizeDepth:i=3,normalizeMaxBreadth:s=1e3}=t,a={...e,event_id:e.event_id||n.event_id||lt(),timestamp:e.timestamp||yn()},o=n.integrations||t.integrations.map(d=>d.name);Rc(a,t),Nc(a,o),e.type===void 0&&kc(a,t.stackParser);let c=r;n.captureContext&&(c=Dt.clone(c).update(n.captureContext));let u=St(a);if(c){if(c.getAttachments){const d=[...n.attachments||[],...c.getAttachments()];d.length&&(n.attachments=d)}u=c.applyToEvent(a,n)}return u.then(d=>typeof i=="number"&&i>0?Dc(d,i,s):d)}function Rc(t,e){const{environment:n,release:r,dist:i,maxValueLength:s=250}=e;"environment"in t||(t.environment="environment"in e?n:En),t.release===void 0&&r!==void 0&&(t.release=r),t.dist===void 0&&i!==void 0&&(t.dist=i),t.message&&(t.message=ye(t.message,s));const a=t.exception&&t.exception.values&&t.exception.values[0];a&&a.value&&(a.value=ye(a.value,s));const o=t.request;o&&o.url&&(o.url=ye(o.url,s))}const ti=new WeakMap;function kc(t,e){const n=nt._sentryDebugIds;if(!n)return;let r;const i=ti.get(e);i?r=i:(r=new Map,ti.set(e,r));const s=Object.keys(n).reduce((c,u)=>{let d;const l=r.get(u);l?d=l:(d=e(u),r.set(u,d));for(let h=d.length-1;h>=0;h--){const _=d[h];if(_.filename){c[_.filename]=n[u];break}}return c},{}),a=new Set;try{t.exception.values.forEach(c=>{c.stacktrace.frames.forEach(u=>{u.filename&&a.add(u.filename)})})}catch(c){}t.debug_meta=t.debug_meta||{},t.debug_meta.images=t.debug_meta.images||[];const o=t.debug_meta.images;a.forEach(c=>{s[c]&&o.push({type:"sourcemap",code_file:c,debug_id:s[c]})})}function Nc(t,e){e.length>0&&(t.sdk=t.sdk||{},t.sdk.integrations=[...t.sdk.integrations||[],...e])}function Dc(t,e,n){if(!t)return null;const r={...t,...t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map(i=>({...i,...i.data&&{data:pt(i.data,e,n)}}))},...t.user&&{user:pt(t.user,e,n)},...t.contexts&&{contexts:pt(t.contexts,e,n)},...t.extra&&{extra:pt(t.extra,e,n)}};return t.contexts&&t.contexts.trace&&r.contexts&&(r.contexts.trace=t.contexts.trace,t.contexts.trace.data&&(r.contexts.trace.data=pt(t.contexts.trace.data,e,n))),t.spans&&(r.spans=t.spans.map(i=>(i.data&&(i.data=pt(i.data,e,n)),i))),r}const ei="Not capturing exception because it's already been captured.";class Lt{__init(){this._integrations={}}__init2(){this._integrationsInitialized=!1}__init3(){this._numProcessing=0}__init4(){this._outcomes={}}__init5(){this._hooks={}}constructor(e){if(Lt.prototype.__init.call(this),Lt.prototype.__init2.call(this),Lt.prototype.__init3.call(this),Lt.prototype.__init4.call(this),Lt.prototype.__init5.call(this),this._options=e,e.dsn){this._dsn=Hi(e.dsn);const n=ys(this._dsn,e);this._transport=e.transport({recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:n})}else(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("No DSN provided, client will not do anything.")}captureException(e,n,r){if(qr(e)){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(ei);return}let i=n&&n.event_id;return this._process(this.eventFromException(e,n).then(s=>this._captureEvent(s,n,r)).then(s=>{i=s})),i}captureMessage(e,n,r,i){let s=r&&r.event_id;const a=Yi(e)?this.eventFromMessage(String(e),n,r):this.eventFromException(e,r);return this._process(a.then(o=>this._captureEvent(o,r,i)).then(o=>{s=o})),s}captureEvent(e,n,r){if(n&&n.originalException&&qr(n.originalException)){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(ei);return}let i=n&&n.event_id;return this._process(this._captureEvent(e,n,r).then(s=>{i=s})),i}captureSession(e){if(!this._isEnabled()){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("SDK not enabled, will not capture session.");return}typeof e.release!="string"?(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Discarded session because of missing or non-string release"):(this.sendSession(e),te(e,{init:!1}))}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(e){const n=this._transport;return n?this._isClientDoneProcessing(e).then(r=>n.flush(e).then(i=>r&&i)):St(!0)}close(e){return this.flush(e).then(n=>(this.getOptions().enabled=!1,n))}setupIntegrations(){this._isEnabled()&&!this._integrationsInitialized&&(this._integrations=Tc(this._options.integrations),this._integrationsInitialized=!0)}getIntegrationById(e){return this._integrations[e]}getIntegration(e){try{return this._integrations[e.id]||null}catch(n){return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Cannot retrieve integration ${e.id} from the current Client`),null}}addIntegration(e){Es(e,this._integrations)}sendEvent(e,n={}){if(this._dsn){let r=Sc(e,this._dsn,this._options._metadata,this._options.tunnel);for(const s of n.attachments||[])r=Io(r,Uo(s,this._options.transportOptions&&this._options.transportOptions.textEncoder));const i=this._sendEnvelope(r);i&&i.then(s=>this.emit("afterSendEvent",e,s),null)}}sendSession(e){if(this._dsn){const n=Ec(e,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(n)}}recordDroppedEvent(e,n,r){if(this._options.sendClientReports){const i=`${e}:${n}`;(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`Adding outcome: "${i}"`),this._outcomes[i]=this._outcomes[i]+1||1}}on(e,n){this._hooks[e]||(this._hooks[e]=[]),this._hooks[e].push(n)}emit(e,...n){this._hooks[e]&&this._hooks[e].forEach(r=>r(...n))}_updateSessionFromEvent(e,n){let r=!1,i=!1;const s=n.exception&&n.exception.values;if(s){i=!0;for(const c of s){const u=c.mechanism;if(u&&u.handled===!1){r=!0;break}}}const a=e.status==="ok";(a&&e.errors===0||a&&r)&&(te(e,{...r&&{status:"crashed"},errors:e.errors||Number(i||r)}),this.captureSession(e))}_isClientDoneProcessing(e){return new tt(n=>{let r=0;const i=1,s=setInterval(()=>{this._numProcessing==0?(clearInterval(s),n(!0)):(r+=i,e&&r>=e&&(clearInterval(s),n(!1)))},i)})}_isEnabled(){return this.getOptions().enabled!==!1&&this._dsn!==void 0}_prepareEvent(e,n,r){const i=this.getOptions(),s=Object.keys(this._integrations);return!n.integrations&&s.length>0&&(n.integrations=s),Ss(i,e,n,r)}_captureEvent(e,n={},r){return this._processEvent(e,n,r).then(i=>i.event_id,i=>{if(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__){const s=i;s.logLevel==="log"?f.log(s.message):f.warn(s)}})}_processEvent(e,n,r){const i=this.getOptions(),{sampleRate:s}=i;if(!this._isEnabled())return an(new J("SDK not enabled, will not capture event.","log"));const a=ws(e),o=bs(e),c=e.type||"error",u=`before send for type \`${c}\``;if(o&&typeof s=="number"&&Math.random()>s)return this.recordDroppedEvent("sample_rate","error",e),an(new J(`Discarding event because it's not included in the random sample (sampling rate = ${s})`,"log"));const d=c==="replay_event"?"replay":c;return this._prepareEvent(e,n,r).then(l=>{if(l===null)throw this.recordDroppedEvent("event_processor",d,e),new J("An event processor returned `null`, will not send event.","log");if(n.data&&n.data.__sentry__===!0)return l;const _=Ic(i,l,n);return xc(_,u)}).then(l=>{if(l===null)throw this.recordDroppedEvent("before_send",d,e),new J(`${u} returned \`null\`, will not send event.`,"log");const h=r&&r.getSession();!a&&h&&this._updateSessionFromEvent(h,l);const _=l.transaction_info;if(a&&_&&l.transaction!==e.transaction){const p="custom";l.transaction_info={..._,source:p}}return this.sendEvent(l,n),l}).then(null,l=>{throw l instanceof J?l:(this.captureException(l,{data:{__sentry__:!0},originalException:l}),new J(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. Reason: ${l}`))})}_process(e){this._numProcessing++,e.then(n=>(this._numProcessing--,n),n=>(this._numProcessing--,n))}_sendEnvelope(e){if(this._transport&&this._dsn)return this.emit("beforeEnvelope",e),this._transport.send(e).then(null,n=>{(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("Error while sending event:",n)});(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("Transport disabled")}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.keys(e).map(n=>{const[r,i]=n.split(":");return{reason:r,category:i,quantity:e[n]}})}}function xc(t,e){const n=`${e} must return \`null\` or a valid event.`;if(gn(t))return t.then(r=>{if(!Qt(r)&&r!==null)throw new J(n);return r},r=>{throw new J(`${e} rejected with ${r}`)});if(!Qt(t)&&t!==null)throw new J(n);return t}function Ic(t,e,n){const{beforeSend:r,beforeSendTransaction:i}=t;return bs(e)&&r?r(e,n):ws(e)&&i?i(e,n):e}function bs(t){return t.type===void 0}function ws(t){return t.type==="transaction"}function Oc(t,e){e.debug===!0&&(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__?f.enable():console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle."));const n=g();n.getScope().update(e.initialScope);const i=new t(e);n.bindClient(i)}const Ac=30;function Sr(t,e,n=vo(t.bufferSize||Ac)){let r={};const i=a=>n.drain(a);function s(a){const o=[];if(on(a,(l,h)=>{const _=Vr(h);if(Po(r,_)){const p=ni(l,h);t.recordDroppedEvent("ratelimit_backoff",_,p)}else o.push(l)}),o.length===0)return St();const c=Wt(a[0],o),u=l=>{on(c,(h,_)=>{const p=ni(h,_);t.recordDroppedEvent(l,Vr(_),p)})},d=()=>e({body:rs(c,t.textEncoder)}).then(l=>(l.statusCode!==void 0&&(l.statusCode<200||l.statusCode>=300)&&(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Sentry responded with status code ${l.statusCode} to sent event.`),r=Yo(r,l),l),l=>{throw u("network_error"),l});return n.add(d).then(l=>l,l=>{if(l instanceof J)return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("Skipped sending event because buffer is full."),u("queue_overflow"),St();throw l})}return s.__sentry__baseTransport__=!0,{send:s,flush:i}}function ni(t,e){if(!(e!=="event"&&e!=="transaction"))return Array.isArray(t)?t[1]:void 0}const Cc=100,ri=5e3,Uc=36e5;function An(t,e){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.info(`[Offline]: ${t}`,e)}function Bc(t){return e=>{const n=t(e),r=e.createStore?e.createStore(e):void 0;let i=ri,s;function a(d,l,h){return Oo(d,["replay_event","replay_recording","client_report"])?!1:e.shouldStore?e.shouldStore(d,l,h):!0}function o(d){r&&(s&&clearTimeout(s),s=setTimeout(async()=>{s=void 0;const l=await r.pop();l&&(An("Attempting to send previously queued event"),u(l).catch(h=>{An("Failed to retry sending",h)}))},d),typeof s!="number"&&s.unref&&s.unref())}function c(){s||(o(i),i=Math.min(i*2,Uc))}async function u(d){try{const l=await n.send(d);let h=Cc;if(l){if(l.headers&&l.headers["retry-after"])h=ss(l.headers["retry-after"]);else if((l.statusCode||0)>=400)return l}return o(h),i=ri,l}catch(l){if(r&&await a(d,l,i))return await r.insert(d),c(),An("Error sending. Event queued",l),{};throw l}}return e.flushAtStartup&&c(),{send:u,flush:d=>n.flush(d)}}}function Lc(t,e){let n;return on(t,(r,i)=>(e.includes(i)&&(n=Array.isArray(r)?r[1]:void 0),!!n)),n}function Mc(t,e){return n=>{const r=t(n),i={};function s(c){if(!i[c]){const u=ys(zi(c));i[c]=t({...n,url:u})}return i[c]}async function a(c){function u(h){const _=h&&h.length?h:["event"];return Lc(c,_)}const d=e({envelope:c,getEvent:u}).map(h=>s(h));return d.length===0&&d.push(r),(await Promise.all(d.map(h=>h.send(c))))[0]}async function o(c){const u=[...Object.keys(i).map(l=>i[l]),r];return(await Promise.all(u.map(l=>l.flush(c)))).every(l=>l)}return{send:a,flush:o}}}const Zn="7.51.2";let ii;class Ft{constructor(){Ft.prototype.__init.call(this)}static __initStatic(){this.id="FunctionToString"}__init(){this.name=Ft.id}setupOnce(){ii=Function.prototype.toString;try{Function.prototype.toString=function(...e){const n=mr(this)||this;return ii.apply(n,e)}}catch(e){}}}Ft.__initStatic();const Gc=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/];class xt{static __initStatic(){this.id="InboundFilters"}__init(){this.name=xt.id}constructor(e={}){this._options=e,xt.prototype.__init.call(this)}setupOnce(e,n){const r=i=>{const s=n();if(s){const a=s.getIntegration(xt);if(a){const o=s.getClient(),c=o?o.getOptions():{},u=Pc(a._options,c);return Yc(i,u)?null:i}}return i};r.id=this.name,e(r)}}xt.__initStatic();function Pc(t={},e={}){return{allowUrls:[...t.allowUrls||[],...e.allowUrls||[]],denyUrls:[...t.denyUrls||[],...e.denyUrls||[]],ignoreErrors:[...t.ignoreErrors||[],...e.ignoreErrors||[],...Gc],ignoreTransactions:[...t.ignoreTransactions||[],...e.ignoreTransactions||[]],ignoreInternal:t.ignoreInternal!==void 0?t.ignoreInternal:!0}}function Yc(t,e){return e.ignoreInternal&&Wc(t)?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Event dropped due to being internal Sentry Error. Event: ${vt(t)}`),!0):Fc(t,e.ignoreErrors)?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Event dropped due to being matched by \`ignoreErrors\` option. Event: ${vt(t)}`),!0):zc(t,e.ignoreTransactions)?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. Event: ${vt(t)}`),!0):$c(t,e.denyUrls)?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Event dropped due to being matched by \`denyUrls\` option. Event: ${vt(t)}. Url: ${un(t)}`),!0):Hc(t,e.allowUrls)?!1:((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`Event dropped due to not being matched by \`allowUrls\` option. Event: ${vt(t)}. Url: ${un(t)}`),!0)}function Fc(t,e){return t.type||!e||!e.length?!1:jc(t).some(n=>ue(n,e))}function zc(t,e){if(t.type!=="transaction"||!e||!e.length)return!1;const n=t.transaction;return n?ue(n,e):!1}function $c(t,e){if(!e||!e.length)return!1;const n=un(t);return n?ue(n,e):!1}function Hc(t,e){if(!e||!e.length)return!0;const n=un(t);return n?ue(n,e):!0}function jc(t){if(t.message)return[t.message];if(t.exception)try{const{type:e="",value:n=""}=t.exception.values&&t.exception.values[0]||{};return[`${n}`,`${e}: ${n}`]}catch(e){return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error(`Cannot extract message for event ${vt(t)}`),[]}return[]}function Wc(t){try{return t.exception.values[0].type==="SentryError"}catch(e){}return!1}function qc(t=[]){for(let e=t.length-1;e>=0;e--){const n=t[e];if(n&&n.filename!=="<anonymous>"&&n.filename!=="[native code]")return n.filename||null}return null}function un(t){try{let e;try{e=t.exception.values[0].stacktrace.frames}catch(n){}return e?qc(e):null}catch(e){return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error(`Cannot extract url for event ${vt(t)}`),null}}const Zc=Object.freeze(Object.defineProperty({__proto__:null,FunctionToString:Ft,InboundFilters:xt},Symbol.toStringTag,{value:"Module"})),y=nt;let Vn=0;function Ts(){return Vn>0}function Vc(){Vn++,setTimeout(()=>{Vn--})}function zt(t,e={},n){if(typeof t!="function")return t;try{const i=t.__sentry_wrapped__;if(i)return i;if(mr(t))return t}catch(i){return t}const r=function(){const i=Array.prototype.slice.call(arguments);try{n&&typeof n=="function"&&n.apply(this,arguments);const s=i.map(a=>zt(a,e));return t.apply(this,s)}catch(s){throw Vc(),ms(a=>{a.addEventProcessor(o=>(e.mechanism&&(Fn(o,void 0,void 0),ve(o,e.mechanism)),o.extra={...o.extra,arguments:i},o)),bn(s)}),s}};try{for(const i in t)Object.prototype.hasOwnProperty.call(t,i)&&(r[i]=t[i])}catch(i){}Wi(r,t),pr(t,"__sentry_wrapped__",r);try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get(){return t.name}})}catch(i){}return r}function vs(t,e){const n=br(t,e),r={type:e&&e.name,value:Qc(e)};return n.length&&(r.stacktrace={frames:n}),r.type===void 0&&r.value===""&&(r.value="Unrecoverable error caught"),r}function Xc(t,e,n,r){const s=g().getClient(),a=s&&s.getOptions().normalizeDepth,o={exception:{values:[{type:_r(e)?e.constructor.name:r?"UnhandledRejection":"Error",value:`Non-Error ${r?"promise rejection":"exception"} captured with keys: ${Ja(e)}`}]},extra:{__serialized__:ts(e,a)}};if(n){const c=br(t,n);c.length&&(o.exception.values[0].stacktrace={frames:c})}return o}function Cn(t,e){return{exception:{values:[vs(t,e)]}}}function br(t,e){const n=e.stacktrace||e.stack||"",r=Jc(e);try{return t(n,r)}catch(i){}return[]}const Kc=/Minified React error #\d+;/i;function Jc(t){if(t){if(typeof t.framesToPop=="number")return t.framesToPop;if(Kc.test(t.message))return 1}return 0}function Qc(t){const e=t&&t.message;return e?e.error&&typeof e.error.message=="string"?e.error.message:e:"No error message"}function Rs(t,e,n,r){const i=n&&n.syntheticException||void 0,s=wr(t,e,i,r);return ve(s),s.level="error",n&&n.event_id&&(s.event_id=n.event_id),St(s)}function ks(t,e,n="info",r,i){const s=r&&r.syntheticException||void 0,a=Xn(t,e,s,i);return a.level=n,r&&r.event_id&&(a.event_id=r.event_id),St(a)}function wr(t,e,n,r,i){let s;if(Pi(e)&&e.error)return Cn(t,e.error);if(Gr(e)||Ga(e)){const a=e;if("stack"in e)s=Cn(t,e);else{const o=a.name||(Gr(a)?"DOMError":"DOMException"),c=a.message?`${o}: ${a.message}`:o;s=Xn(t,c,n,r),Fn(s,c)}return"code"in a&&(s.tags={...s.tags,"DOMException.code":`${a.code}`}),s}return Gi(e)?Cn(t,e):Qt(e)||_r(e)?(s=Xc(t,e,n,i),ve(s,{synthetic:!0}),s):(s=Xn(t,e,n,r),Fn(s,`${e}`,void 0),ve(s,{synthetic:!0}),s)}function Xn(t,e,n,r){const i={message:e};if(r&&n){const s=br(t,n);s.length&&(i.exception={values:[{value:e,stacktrace:{frames:s}}]})}return i}const He=1024,Ns="Breadcrumbs";class $t{static __initStatic(){this.id=Ns}__init(){this.name=$t.id}constructor(e){$t.prototype.__init.call(this),this.options={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...e}}setupOnce(){this.options.console&&V("console",eu),this.options.dom&&V("dom",tu(this.options.dom)),this.options.xhr&&V("xhr",nu),this.options.fetch&&V("fetch",ru),this.options.history&&V("history",iu)}addSentryBreadcrumb(e){this.options.sentry&&g().addBreadcrumb({category:`sentry.${e.type==="transaction"?"transaction":"event"}`,event_id:e.event_id,level:e.level,message:vt(e)},{event:e})}}$t.__initStatic();function tu(t){function e(n){let r,i=typeof t=="object"?t.serializeAttribute:void 0,s=typeof t=="object"&&typeof t.maxStringLength=="number"?t.maxStringLength:void 0;s&&s>He&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`\`dom.maxStringLength\` cannot exceed ${He}, but a value of ${s} was configured. Sentry will use ${He} instead.`),s=He),typeof i=="string"&&(i=[i]);try{const a=n.event;r=su(a)?Pt(a.target,{keyAttrs:i,maxStringLength:s}):Pt(a,{keyAttrs:i,maxStringLength:s})}catch(a){r="<unknown>"}r.length!==0&&g().addBreadcrumb({category:`ui.${n.name}`,message:r},{event:n.event,name:n.name,global:n.global})}return e}function eu(t){for(let n=0;n<t.args.length;n++)if(t.args[n]==="ref=Ref<"){t.args[n+1]="viewRef";break}const e={category:"console",data:{arguments:t.args,logger:"console"},level:ko(t.level),message:Yr(t.args," ")};if(t.level==="assert")if(t.args[0]===!1)e.message=`Assertion failed: ${Yr(t.args.slice(1)," ")||"console.assert"}`,e.data.arguments=t.args.slice(1);else return;g().addBreadcrumb(e,{input:t.args,level:t.level})}function nu(t){const{startTimestamp:e,endTimestamp:n}=t,r=t.xhr[Rt];if(!e||!n||!r)return;const{method:i,url:s,status_code:a,body:o}=r,c={method:i,url:s,status_code:a},u={xhr:t.xhr,input:o,startTimestamp:e,endTimestamp:n};g().addBreadcrumb({category:"xhr",data:c,type:"http"},u)}function ru(t){const{startTimestamp:e,endTimestamp:n}=t;if(n&&!(t.fetchData.url.match(/sentry_key/)&&t.fetchData.method==="POST"))if(t.error){const r=t.fetchData,i={data:t.error,input:t.args,startTimestamp:e,endTimestamp:n};g().addBreadcrumb({category:"fetch",data:r,level:"error",type:"http"},i)}else{const r={...t.fetchData,status_code:t.response&&t.response.status},i={input:t.args,response:t.response,startTimestamp:e,endTimestamp:n};g().addBreadcrumb({category:"fetch",data:r,type:"http"},i)}}function iu(t){let e=t.from,n=t.to;const r=In(y.location.href);let i=In(e);const s=In(n);i.path||(i=r),r.protocol===s.protocol&&r.host===s.host&&(n=s.relative),r.protocol===i.protocol&&r.host===i.host&&(e=i.relative),g().addBreadcrumb({category:"navigation",data:{from:e,to:n}})}function su(t){return t&&!!t.target}function Ds(t,{metadata:e,tunnel:n,dsn:r}){const i={event_id:t.event_id,sent_at:new Date().toISOString(),...e&&e.sdk&&{sdk:{name:e.sdk.name,version:e.sdk.version}},...!!n&&!!r&&{dsn:ce(r)}},s=au(t);return Wt(i,[s])}function au(t){return[{type:"user_report"},t]}class xs extends Lt{constructor(e){const n=y.SENTRY_SDK_SOURCE||yo();e._metadata=e._metadata||{},e._metadata.sdk=e._metadata.sdk||{name:"sentry.javascript.browser",packages:[{name:`${n}:@sentry/browser`,version:Zn}],version:Zn},super(e),e.sendClientReports&&y.document&&y.document.addEventListener("visibilitychange",()=>{y.document.visibilityState==="hidden"&&this._flushOutcomes()})}eventFromException(e,n){return Rs(this._options.stackParser,e,n,this._options.attachStacktrace)}eventFromMessage(e,n="info",r){return ks(this._options.stackParser,e,n,r,this._options.attachStacktrace)}sendEvent(e,n){const r=this.getIntegrationById(Ns);r&&r.addSentryBreadcrumb&&r.addSentryBreadcrumb(e),super.sendEvent(e,n)}captureUserFeedback(e){if(!this._isEnabled()){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("SDK not enabled, will not capture user feedback.");return}const n=Ds(e,{metadata:this.getSdkMetadata(),dsn:this.getDsn(),tunnel:this.getOptions().tunnel});this._sendEnvelope(n)}_prepareEvent(e,n,r){return e.platform=e.platform||"javascript",super._prepareEvent(e,n,r)}_flushOutcomes(){const e=this._clearOutcomes();if(e.length===0){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("No outcomes to send");return}if(!this._dsn){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("No dsn provided, will not send outcomes");return}(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("Sending outcomes:",e);const n=Lo(e,this._options.tunnel&&ce(this._dsn));this._sendEnvelope(n)}}let me;function ou(){if(me)return me;if(Pn(y.fetch))return me=y.fetch.bind(y);const t=y.document;let e=y.fetch;if(t&&typeof t.createElement=="function")try{const n=t.createElement("iframe");n.hidden=!0,t.head.appendChild(n);const r=n.contentWindow;r&&r.fetch&&(e=r.fetch),t.head.removeChild(n)}catch(n){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",n)}return me=e.bind(y)}function cu(){me=void 0}function Is(t,e=ou()){let n=0,r=0;function i(s){const a=s.body.length;n+=a,r++;const o={body:s.body,method:"POST",referrerPolicy:"origin",headers:t.headers,keepalive:n<=6e4&&r<15,...t.fetchOptions};try{return e(t.url,o).then(c=>(n-=a,r--,{statusCode:c.status,headers:{"x-sentry-rate-limits":c.headers.get("X-Sentry-Rate-Limits"),"retry-after":c.headers.get("Retry-After")}}))}catch(c){return cu(),n-=a,r--,an(c)}}return Sr(t,i)}const uu=4;function Os(t){function e(n){return new tt((r,i)=>{const s=new XMLHttpRequest;s.onerror=i,s.onreadystatechange=()=>{s.readyState===uu&&r({statusCode:s.status,headers:{"x-sentry-rate-limits":s.getResponseHeader("X-Sentry-Rate-Limits"),"retry-after":s.getResponseHeader("Retry-After")}})},s.open("POST",t.url);for(const a in t.headers)Object.prototype.hasOwnProperty.call(t.headers,a)&&s.setRequestHeader(a,t.headers[a]);s.send(n.body)})}return Sr(t,e)}const fe="?",du=10,lu=20,fu=30,_u=40,hu=50;function Ce(t,e,n,r){const i={filename:t,function:e,in_app:!0};return n!==void 0&&(i.lineno=n),r!==void 0&&(i.colno=r),i}const pu=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,mu=/\((\S*)(?::(\d+))(?::(\d+))\)/,gu=t=>{const e=pu.exec(t);if(e){if(e[2]&&e[2].indexOf("eval")===0){const s=mu.exec(e[2]);s&&(e[2]=s[1],e[3]=s[2],e[4]=s[3])}const[r,i]=Ms(e[1]||fe,e[2]);return Ce(i,r,e[3]?+e[3]:void 0,e[4]?+e[4]:void 0)}},As=[fu,gu],yu=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Eu=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Su=t=>{const e=yu.exec(t);if(e){if(e[3]&&e[3].indexOf(" > eval")>-1){const s=Eu.exec(e[3]);s&&(e[1]=e[1]||"eval",e[3]=s[1],e[4]=s[2],e[5]="")}let r=e[3],i=e[1]||fe;return[i,r]=Ms(i,r),Ce(r,i,e[4]?+e[4]:void 0,e[5]?+e[5]:void 0)}},Cs=[hu,Su],bu=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,wu=t=>{const e=bu.exec(t);return e?Ce(e[2],e[1]||fe,+e[3],e[4]?+e[4]:void 0):void 0},Us=[_u,wu],Tu=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,vu=t=>{const e=Tu.exec(t);return e?Ce(e[2],e[3]||fe,+e[1]):void 0},Ru=[du,vu],ku=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,Nu=t=>{const e=ku.exec(t);return e?Ce(e[5],e[3]||e[4]||fe,+e[1],+e[2]):void 0},Du=[lu,Nu],Bs=[As,Cs,Us],Ls=Vi(...Bs),Ms=(t,e)=>{const n=t.indexOf("safari-extension")!==-1,r=t.indexOf("safari-web-extension")!==-1;return n||r?[t.indexOf("@")!==-1?t.split("@")[0]:fe,n?`safari-extension:${e}`:`safari-web-extension:${e}`]:[t,e]};class mt{static __initStatic(){this.id="GlobalHandlers"}__init(){this.name=mt.id}__init2(){this._installFunc={onerror:xu,onunhandledrejection:Iu}}constructor(e){mt.prototype.__init.call(this),mt.prototype.__init2.call(this),this._options={onerror:!0,onunhandledrejection:!0,...e}}setupOnce(){Error.stackTraceLimit=50;const e=this._options;for(const n in e){const r=this._installFunc[n];r&&e[n]&&(Cu(n),r(),this._installFunc[n]=void 0)}}}mt.__initStatic();function xu(){V("error",t=>{const[e,n,r]=Ys();if(!e.getIntegration(mt))return;const{msg:i,url:s,line:a,column:o,error:c}=t;if(Ts()||c&&c.__sentry_own_request__)return;const u=c===void 0&&Ct(i)?Au(i,s,a,o):Gs(wr(n,c||i,void 0,r,!1),s,a,o);u.level="error",Ps(e,c,u,"onerror")})}function Iu(){V("unhandledrejection",t=>{const[e,n,r]=Ys();if(!e.getIntegration(mt))return;let i=t;try{"reason"in t?i=t.reason:"detail"in t&&"reason"in t.detail&&(i=t.detail.reason)}catch(a){}if(Ts()||i&&i.__sentry_own_request__)return!0;const s=Yi(i)?Ou(i):wr(n,i,void 0,r,!0);s.level="error",Ps(e,i,s,"onunhandledrejection")})}function Ou(t){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(t)}`}]}}}function Au(t,e,n,r){const i=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;let s=Pi(t)?t.message:t,a="Error";const o=s.match(i);return o&&(a=o[1],s=o[2]),Gs({exception:{values:[{type:a,value:s}]}},e,n,r)}function Gs(t,e,n,r){const i=t.exception=t.exception||{},s=i.values=i.values||[],a=s[0]=s[0]||{},o=a.stacktrace=a.stacktrace||{},c=o.frames=o.frames||[],u=isNaN(parseInt(r,10))?void 0:r,d=isNaN(parseInt(n,10))?void 0:n,l=Ct(e)&&e.length>0?e:Ha();return c.length===0&&c.push({colno:u,filename:l,function:"?",in_app:!0,lineno:d}),t}function Cu(t){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`Global Handler attached: ${t}`)}function Ps(t,e,n,r){ve(n,{handled:!1,type:r}),t.captureEvent(n,{originalException:e})}function Ys(){const t=g(),e=t.getClient(),n=e&&e.getOptions()||{stackParser:()=>[],attachStacktrace:!1};return[t,n.stackParser,n.attachStacktrace]}const Uu=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"];class Ht{static __initStatic(){this.id="TryCatch"}__init(){this.name=Ht.id}constructor(e){Ht.prototype.__init.call(this),this._options={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,...e}}setupOnce(){this._options.setTimeout&&X(y,"setTimeout",si),this._options.setInterval&&X(y,"setInterval",si),this._options.requestAnimationFrame&&X(y,"requestAnimationFrame",Bu),this._options.XMLHttpRequest&&"XMLHttpRequest"in y&&X(XMLHttpRequest.prototype,"send",Lu);const e=this._options.eventTarget;e&&(Array.isArray(e)?e:Uu).forEach(Mu)}}Ht.__initStatic();function si(t){return function(...e){const n=e[0];return e[0]=zt(n,{mechanism:{data:{function:Bt(t)},handled:!0,type:"instrument"}}),t.apply(this,e)}}function Bu(t){return function(e){return t.apply(this,[zt(e,{mechanism:{data:{function:"requestAnimationFrame",handler:Bt(t)},handled:!0,type:"instrument"}})])}}function Lu(t){return function(...e){const n=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(i=>{i in n&&typeof n[i]=="function"&&X(n,i,function(s){const a={mechanism:{data:{function:i,handler:Bt(s)},handled:!0,type:"instrument"}},o=mr(s);return o&&(a.mechanism.data.handler=Bt(o)),zt(s,a)})}),t.apply(this,e)}}function Mu(t){const e=y,n=e[t]&&e[t].prototype;!n||!n.hasOwnProperty||!n.hasOwnProperty("addEventListener")||(X(n,"addEventListener",function(r){return function(i,s,a){try{typeof s.handleEvent=="function"&&(s.handleEvent=zt(s.handleEvent,{mechanism:{data:{function:"handleEvent",handler:Bt(s),target:t},handled:!0,type:"instrument"}}))}catch(o){}return r.apply(this,[i,zt(s,{mechanism:{data:{function:"addEventListener",handler:Bt(s),target:t},handled:!0,type:"instrument"}}),a])}}),X(n,"removeEventListener",function(r){return function(i,s,a){const o=s;try{const c=o&&o.__sentry_wrapped__;c&&r.call(this,i,c,a)}catch(c){}return r.call(this,i,o,a)}}))}const Gu="cause",Pu=5;class It{static __initStatic(){this.id="LinkedErrors"}__init(){this.name=It.id}constructor(e={}){It.prototype.__init.call(this),this._key=e.key||Gu,this._limit=e.limit||Pu}setupOnce(){const e=g().getClient();e&&Ae((n,r)=>{const i=g().getIntegration(It);return i?Yu(e.getOptions().stackParser,i._key,i._limit,n,r):n})}}It.__initStatic();function Yu(t,e,n,r,i){if(!r.exception||!r.exception.values||!i||!Ut(i.originalException,Error))return r;const s=Fs(t,n,i.originalException,e);return r.exception.values=[...s,...r.exception.values],r}function Fs(t,e,n,r,i=[]){if(!Ut(n[r],Error)||i.length+1>=e)return i;const s=vs(t,n[r]);return Fs(t,e,n[r],r,[s,...i])}class Ot{constructor(){Ot.prototype.__init.call(this)}static __initStatic(){this.id="HttpContext"}__init(){this.name=Ot.id}setupOnce(){Ae(e=>{if(g().getIntegration(Ot)){if(!y.navigator&&!y.location&&!y.document)return e;const n=e.request&&e.request.url||y.location&&y.location.href,{referrer:r}=y.document||{},{userAgent:i}=y.navigator||{},s={...e.request&&e.request.headers,...r&&{Referer:r},...i&&{"User-Agent":i}},a={...e.request,...n&&{url:n},headers:s};return{...e,request:a}}return e})}}Ot.__initStatic();class At{constructor(){At.prototype.__init.call(this)}static __initStatic(){this.id="Dedupe"}__init(){this.name=At.id}setupOnce(e,n){const r=i=>{if(i.type)return i;const s=n().getIntegration(At);if(s){try{if(Fu(i,s._previousEvent))return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Event dropped due to being a duplicate of previously captured event."),null}catch(a){return s._previousEvent=i}return s._previousEvent=i}return i};r.id=this.name,e(r)}}At.__initStatic();function Fu(t,e){return e?!!(zu(t,e)||$u(t,e)):!1}function zu(t,e){const n=t.message,r=e.message;return!(!n&&!r||n&&!r||!n&&r||n!==r||!$s(t,e)||!zs(t,e))}function $u(t,e){const n=ai(e),r=ai(t);return!(!n||!r||n.type!==r.type||n.value!==r.value||!$s(t,e)||!zs(t,e))}function zs(t,e){let n=oi(t),r=oi(e);if(!n&&!r)return!0;if(n&&!r||!n&&r||(n=n,r=r,r.length!==n.length))return!1;for(let i=0;i<r.length;i++){const s=r[i],a=n[i];if(s.filename!==a.filename||s.lineno!==a.lineno||s.colno!==a.colno||s.function!==a.function)return!1}return!0}function $s(t,e){let n=t.fingerprint,r=e.fingerprint;if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;n=n,r=r;try{return n.join("")===r.join("")}catch(i){return!1}}function ai(t){return t.exception&&t.exception.values&&t.exception.values[0]}function oi(t){const e=t.exception;if(e)try{return e.values[0].stacktrace.frames}catch(n){return}}const Hs=[new xt,new Ft,new Ht,new $t,new mt,new It,new At,new Ot];function js(t={}){t.defaultIntegrations===void 0&&(t.defaultIntegrations=Hs),t.release===void 0&&(typeof __SENTRY_RELEASE__=="string"&&(t.release=__SENTRY_RELEASE__),y.SENTRY_RELEASE&&y.SENTRY_RELEASE.id&&(t.release=y.SENTRY_RELEASE.id)),t.autoSessionTracking===void 0&&(t.autoSessionTracking=!0),t.sendClientReports===void 0&&(t.sendClientReports=!0);const e={...t,stackParser:Qa(t.stackParser||Ls),integrations:wc(t),transport:t.transport||(Xi()?Is:Os)};Oc(xs,e),t.autoSessionTracking&&Ku()}function Hu(t={},e=g()){if(!y.document){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("Global document not defined in showReportDialog call");return}const{client:n,scope:r}=e.getStackTop(),i=t.dsn||n&&n.getDsn();if(!i){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("DSN not configured for showReportDialog call");return}r&&(t.user={...r.getUser(),...t.user}),t.eventId||(t.eventId=e.lastEventId());const s=y.document.createElement("script");s.async=!0,s.src=gc(i,t),t.onLoad&&(s.onload=t.onLoad);const a=y.document.head||y.document.body;a?a.appendChild(s):(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("Not injecting report dialog. No injection point found in HTML")}function ju(){return g().lastEventId()}function Wu(){}function qu(t){t()}function Zu(t){const e=g().getClient();return e?e.flush(t):((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Cannot flush events. No client defined."),St(!1))}function Vu(t){const e=g().getClient();return e?e.close(t):((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Cannot flush events and disable SDK. No client defined."),St(!1))}function Xu(t){return zt(t)()}function ci(t){t.startSession({ignoreDuration:!0}),t.captureSession()}function Ku(){if(typeof y.document>"u"){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Session tracking in non-browser environment with @sentry/browser is not supported.");return}const t=g();t.captureSession&&(ci(t),V("history",({from:e,to:n})=>{e===void 0||e===n||ci(g())}))}function Ju(t){const e=g().getClient();e&&e.captureUserFeedback(t)}const Qu=Object.freeze(Object.defineProperty({__proto__:null,Breadcrumbs:$t,Dedupe:At,GlobalHandlers:mt,HttpContext:Ot,LinkedErrors:It,TryCatch:Ht},Symbol.toStringTag,{value:"Module"})),G=nt,Tr="sentryReplaySession",td="replay_event",vr="Unable to send Replay",ed=3e5,nd=9e5,rd=36e5,id=5e3,sd=5500,ad=6e4,od=5e3,cd=3,je=15e4,We=5e3;var W;(function(t){t[t.Document=0]="Document",t[t.DocumentType=1]="DocumentType",t[t.Element=2]="Element",t[t.Text=3]="Text",t[t.CDATA=4]="CDATA",t[t.Comment=5]="Comment"})(W||(W={}));function ud(t){return t.nodeType===t.ELEMENT_NODE}function Se(t){const e=t==null?void 0:t.host;return!!(e&&e.shadowRoot&&e.shadowRoot===t)}function Ws({maskInputOptions:t,tagName:e,type:n}){e.toLowerCase()==="option"&&(e="select");const r=typeof n=="string"?n.toLowerCase():void 0;return t[e.toLowerCase()]||r&&t[r]||r==="password"||e==="input"&&!n&&t.text}function dd({tagName:t,type:e,maskInputOptions:n,maskInputSelector:r}){return r||Ws({maskInputOptions:n,tagName:t,type:e})}function Re({input:t,maskInputSelector:e,unmaskInputSelector:n,maskInputOptions:r,tagName:i,type:s,value:a,maskInputFn:o}){let c=a||"";return n&&t.matches(n)||(t.hasAttribute("data-rr-is-password")&&(s="password"),(Ws({maskInputOptions:r,tagName:i,type:s})||e&&t.matches(e))&&(o?c=o(c):c="*".repeat(c.length))),c}const ui="__rrweb_original__";function ld(t){const e=t.getContext("2d");if(!e)return!0;const n=50;for(let r=0;r<t.width;r+=n)for(let i=0;i<t.height;i+=n){const s=e.getImageData,a=ui in s?s[ui]:s;if(new Uint32Array(a.call(e,r,i,Math.min(n,t.width-r),Math.min(n,t.height-i)).data.buffer).some(c=>c!==0))return!1}return!0}function qs(t){const e=t.type;return t.hasAttribute("data-rr-is-password")?"password":e?e.toLowerCase():null}function Kn(t,e,n){return typeof n=="string"&&n.toLowerCase(),e==="INPUT"&&(n==="radio"||n==="checkbox")?t.getAttribute("value")||"":t.value}let fd=1;const _d=new RegExp("[^a-z0-9-_:]"),ke=-2;function Zs(t){return t?t.replace(/[\S]/g,"*"):""}function hd(){return fd++}function pd(t){if(t instanceof HTMLFormElement)return"form";const e=t.tagName.toLowerCase().trim();return _d.test(e)?"div":e}function Jn(t){try{const e=t.rules||t.cssRules;return e?Array.from(e).map(md).join(""):null}catch(e){return null}}function md(t){let e=t.cssText;if(gd(t))try{e=Jn(t.styleSheet)||e}catch(n){}return Vs(e)}function Vs(t){if(t.indexOf(":")>-1){const e=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return t.replace(e,"$1\\$2")}return t}function gd(t){return"styleSheet"in t}function yd(t){return t.cssRules?Array.from(t.cssRules).map(e=>e.cssText?Vs(e.cssText):"").join(""):""}function Ed(t){let e="";return t.indexOf("//")>-1?e=t.split("/").slice(0,3).join("/"):e=t.split("/")[0],e=e.split("?")[0],e}let Zt,di;const Sd=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,bd=/^(?!www\.|(?:http|ftp)s?:\/\/|[A-Za-z]:\\|\/\/|#).*/,wd=/^(data:)([^,]*),(.*)/i;function tn(t,e){return(t||"").replace(Sd,(n,r,i,s,a,o)=>{const c=i||a||o,u=r||s||"";if(!c)return n;if(!bd.test(c))return`url(${u}${c}${u})`;if(wd.test(c))return`url(${u}${c}${u})`;if(c[0]==="/")return`url(${u}${Ed(e)+c}${u})`;const d=e.split("/"),l=c.split("/");d.pop();for(const h of l)h!=="."&&(h===".."?d.pop():d.push(h));return`url(${u}${d.join("/")}${u})`})}const Td=/^[^ \t\n\r\u000c]+/,vd=/^[, \t\n\r\u000c]+/;function Rd(t,e){if(e.trim()==="")return e;let n=0;function r(s){let a,o=s.exec(e.substring(n));return o?(a=o[0],n+=a.length,a):""}let i=[];for(;r(vd),!(n>=e.length);){let s=r(Td);if(s.slice(-1)===",")s=Xt(t,s.substring(0,s.length-1)),i.push(s);else{let a="";s=Xt(t,s);let o=!1;for(;;){let c=e.charAt(n);if(c===""){i.push((s+a).trim());break}else if(o)c===")"&&(o=!1);else if(c===","){n+=1,i.push((s+a).trim());break}else c==="("&&(o=!0);a+=c,n+=1}}}return i.join(", ")}function Xt(t,e){if(!e||e.trim()==="")return e;const n=t.createElement("a");return n.href=e,n.href}function kd(t){return!!(t.tagName==="svg"||t.ownerSVGElement)}function Qn(){const t=document.createElement("a");return t.href="",t.href}function Xs(t,e,n,r,i,s,a,o){if(!i)return i;const c=r.toLowerCase(),u=n.toLowerCase();return c==="src"||c==="href"||c==="xlink:href"&&i[0]!=="#"||c==="background"&&(u==="table"||u==="td"||u==="th")?Xt(t,i):c==="srcset"?Rd(t,i):c==="style"?tn(i,Qn()):u==="object"&&c==="data"?Xt(t,i):s&&Nd(e,c,u,a)?o?o(i):Zs(i):i}function Nd(t,e,n,r){return r&&t.matches(r)?!1:["placeholder","title","aria-label"].indexOf(e)>-1||n==="input"&&e==="value"&&t.hasAttribute("type")&&["submit","button"].indexOf(t.getAttribute("type").toLowerCase())>-1}function Dd(t,e,n,r){if(r&&t.matches(r))return!1;if(typeof e=="string"){if(t.classList.contains(e))return!0}else for(let i=0;i<t.classList.length;i++){const s=t.classList[i];if(e.test(s))return!0}return n?t.matches(n):!1}function dn(t,e,n,r,i){if(!t)return!1;if(t.nodeType!==t.ELEMENT_NODE)return dn(t.parentNode,e,n,r,i);if(r&&(t.matches(r)||t.closest(r)))return!1;if(i)return!0;if(typeof e=="string"){if(t.classList.contains(e))return!0}else for(let s=0;s<t.classList.length;s++){const a=t.classList[s];if(e.test(a))return!0}return n&&t.matches(n)?!0:dn(t.parentNode,e,n,r,i)}function xd(t,e,n){const r=t.contentWindow;if(!r)return;let i=!1,s;try{s=r.document.readyState}catch(o){return}if(s!=="complete"){const o=setTimeout(()=>{i||(e(),i=!0)},n);t.addEventListener("load",()=>{clearTimeout(o),i=!0,e()});return}const a="about:blank";if(r.location.href!==a||t.src===a||t.src===""){setTimeout(e,0);return}t.addEventListener("load",e)}function Id(t,e){var n;const{doc:r,blockClass:i,blockSelector:s,unblockSelector:a,maskTextClass:o,maskTextSelector:c,unmaskTextSelector:u,inlineStylesheet:d,maskInputSelector:l,unmaskInputSelector:h,maskAllText:_,maskInputOptions:p={},maskTextFn:w,maskInputFn:D,dataURLOptions:S={},inlineImages:O,recordCanvas:x,keepIframeSrcFn:v}=e;let b;if(r.__sn){const N=r.__sn.id;b=N===1?void 0:N}switch(t.nodeType){case t.DOCUMENT_NODE:return t.compatMode!=="CSS1Compat"?{type:W.Document,childNodes:[],compatMode:t.compatMode,rootId:b}:{type:W.Document,childNodes:[],rootId:b};case t.DOCUMENT_TYPE_NODE:return{type:W.DocumentType,name:t.name,publicId:t.publicId,systemId:t.systemId,rootId:b};case t.ELEMENT_NODE:const N=Dd(t,i,s,a),T=pd(t);let E={};for(const{name:m,value:A}of Array.from(t.attributes))Cd(T,m)||(E[m]=Xs(r,t,T,m,A,_,u,w));if(T==="link"&&d){const m=Array.from(r.styleSheets).find($=>$.href===t.href);let A=null;m&&(A=Jn(m)),A&&(delete E.rel,delete E.href,E._cssText=tn(A,m.href))}if(T==="style"&&t.sheet&&!(t.innerText||t.textContent||"").trim().length){const m=Jn(t.sheet);m&&(E._cssText=tn(m,Qn()))}if(T==="input"||T==="textarea"||T==="select"||T==="option"){const m=t,A=qs(m),$=Kn(m,T.toUpperCase(),A),Q=t.checked;A!=="submit"&&A!=="button"&&$&&(E.value=Re({input:m,type:A,tagName:T,value:$,maskInputSelector:l,unmaskInputSelector:h,maskInputOptions:p,maskInputFn:D})),Q&&(E.checked=Q)}if(T==="option"&&(t.selected&&!p.select?E.selected=!0:delete E.selected),T==="canvas"&&x){if(t.__context==="2d")ld(t)||(E.rr_dataURL=t.toDataURL(S.type,S.quality));else if(!("__context"in t)){const m=t.toDataURL(S.type,S.quality),A=document.createElement("canvas");A.width=t.width,A.height=t.height;const $=A.toDataURL(S.type,S.quality);m!==$&&(E.rr_dataURL=m)}}if(T==="img"&&O){Zt||(Zt=r.createElement("canvas"),di=Zt.getContext("2d"));const m=t,A=m.crossOrigin;m.crossOrigin="anonymous";const $=()=>{try{Zt.width=m.naturalWidth,Zt.height=m.naturalHeight,di.drawImage(m,0,0),E.rr_dataURL=Zt.toDataURL(S.type,S.quality)}catch(Q){console.warn(`Cannot inline img src=${m.currentSrc}! Error: ${Q}`)}A?E.crossOrigin=A:delete E.crossOrigin};m.complete&&m.naturalWidth!==0?$():m.onload=$}if((T==="audio"||T==="video")&&(E.rr_mediaState=t.paused?"paused":"played",E.rr_mediaCurrentTime=t.currentTime),t.scrollLeft&&(E.rr_scrollLeft=t.scrollLeft),t.scrollTop&&(E.rr_scrollTop=t.scrollTop),N){const{width:m,height:A}=t.getBoundingClientRect();E={class:E.class,rr_width:`${m}px`,rr_height:`${A}px`}}return T==="iframe"&&!v(E.src)&&(t.contentDocument||(E.rr_src=E.src),delete E.src),{type:W.Element,tagName:T,attributes:E,childNodes:[],isSVG:kd(t)||void 0,needBlock:N,rootId:b};case t.TEXT_NODE:const U=t.parentNode&&t.parentNode.tagName;let I=t.textContent;const z=U==="STYLE"?!0:void 0,K=U==="SCRIPT"?!0:void 0;if(z&&I){try{t.nextSibling||t.previousSibling||!((n=t.parentNode.sheet)===null||n===void 0)&&n.cssRules&&(I=yd(t.parentNode.sheet))}catch(m){console.warn(`Cannot get CSS styles from text's parentNode. Error: ${m}`,t)}I=tn(I,Qn())}if(K&&(I="SCRIPT_PLACEHOLDER"),U==="TEXTAREA"&&I)I="";else if(U==="OPTION"&&I){const m=t.parentNode;I=Re({input:m,type:null,tagName:U,value:I,maskInputSelector:l,unmaskInputSelector:h,maskInputOptions:p,maskInputFn:D})}else!z&&!K&&dn(t,o,c,u,_)&&I&&(I=w?w(I):Zs(I));return{type:W.Text,textContent:I||"",isStyle:z,rootId:b};case t.CDATA_SECTION_NODE:return{type:W.CDATA,textContent:"",rootId:b};case t.COMMENT_NODE:return{type:W.Comment,textContent:t.textContent||"",rootId:b};default:return!1}}function B(t){return t==null?"":t.toLowerCase()}function Od(t,e){if(e.comment&&t.type===W.Comment)return!0;if(t.type===W.Element){if(e.script&&(t.tagName==="script"||t.tagName==="link"&&(t.attributes.rel==="preload"||t.attributes.rel==="modulepreload")&&t.attributes.as==="script"||t.tagName==="link"&&t.attributes.rel==="prefetch"&&typeof t.attributes.href=="string"&&t.attributes.href.endsWith(".js")))return!0;if(e.headFavicon&&(t.tagName==="link"&&t.attributes.rel==="shortcut icon"||t.tagName==="meta"&&(B(t.attributes.name).match(/^msapplication-tile(image|color)$/)||B(t.attributes.name)==="application-name"||B(t.attributes.rel)==="icon"||B(t.attributes.rel)==="apple-touch-icon"||B(t.attributes.rel)==="shortcut icon")))return!0;if(t.tagName==="meta"){if(e.headMetaDescKeywords&&B(t.attributes.name).match(/^description|keywords$/))return!0;if(e.headMetaSocial&&(B(t.attributes.property).match(/^(og|twitter|fb):/)||B(t.attributes.name).match(/^(og|twitter):/)||B(t.attributes.name)==="pinterest"))return!0;if(e.headMetaRobots&&(B(t.attributes.name)==="robots"||B(t.attributes.name)==="googlebot"||B(t.attributes.name)==="bingbot"))return!0;if(e.headMetaHttpEquiv&&t.attributes["http-equiv"]!==void 0)return!0;if(e.headMetaAuthorship&&(B(t.attributes.name)==="author"||B(t.attributes.name)==="generator"||B(t.attributes.name)==="framework"||B(t.attributes.name)==="publisher"||B(t.attributes.name)==="progid"||B(t.attributes.property).match(/^article:/)||B(t.attributes.property).match(/^product:/)))return!0;if(e.headMetaVerification&&(B(t.attributes.name)==="google-site-verification"||B(t.attributes.name)==="yandex-verification"||B(t.attributes.name)==="csrf-token"||B(t.attributes.name)==="p:domain_verify"||B(t.attributes.name)==="verify-v1"||B(t.attributes.name)==="verification"||B(t.attributes.name)==="shopify-checkout-api-token"))return!0}}return!1}function be(t,e){const{doc:n,map:r,blockClass:i,blockSelector:s,unblockSelector:a,maskTextClass:o,maskTextSelector:c,unmaskTextSelector:u,skipChild:d=!1,inlineStylesheet:l=!0,maskInputSelector:h,unmaskInputSelector:_,maskAllText:p,maskInputOptions:w={},maskTextFn:D,maskInputFn:S,slimDOMOptions:O,dataURLOptions:x={},inlineImages:v=!1,recordCanvas:b=!1,onSerialize:N,onIframeLoad:T,iframeLoadTimeout:E=5e3,keepIframeSrcFn:U=()=>!1}=e;let{preserveWhiteSpace:I=!0}=e;const z=Id(t,{doc:n,blockClass:i,blockSelector:s,unblockSelector:a,maskTextClass:o,maskTextSelector:c,unmaskTextSelector:u,inlineStylesheet:l,maskInputSelector:h,unmaskInputSelector:_,maskAllText:p,maskInputOptions:w,maskTextFn:D,maskInputFn:S,dataURLOptions:x,inlineImages:v,recordCanvas:b,keepIframeSrcFn:U});if(!z)return console.warn(t,"not serialized"),null;let K;"__sn"in t?K=t.__sn.id:Od(z,O)||!I&&z.type===W.Text&&!z.isStyle&&!z.textContent.replace(/^\s+|\s+$/gm,"").length?K=ke:K=hd();const m=Object.assign(z,{id:K});if(t.__sn=m,K===ke)return null;r[K]=t,N&&N(t);let A=!d;if(m.type===W.Element&&(A=A&&!m.needBlock,delete m.needBlock,t.shadowRoot&&(m.isShadowHost=!0)),(m.type===W.Document||m.type===W.Element)&&A){O.headWhitespace&&z.type===W.Element&&z.tagName==="head"&&(I=!1);const $={doc:n,map:r,blockClass:i,blockSelector:s,unblockSelector:a,maskTextClass:o,maskTextSelector:c,unmaskTextSelector:u,skipChild:d,inlineStylesheet:l,maskInputSelector:h,unmaskInputSelector:_,maskAllText:p,maskInputOptions:w,maskTextFn:D,maskInputFn:S,slimDOMOptions:O,dataURLOptions:x,inlineImages:v,recordCanvas:b,preserveWhiteSpace:I,onSerialize:N,onIframeLoad:T,iframeLoadTimeout:E,keepIframeSrcFn:U};for(const Q of Array.from(t.childNodes)){const ft=be(Q,$);ft&&m.childNodes.push(ft)}if(ud(t)&&t.shadowRoot)for(const Q of Array.from(t.shadowRoot.childNodes)){const ft=be(Q,$);ft&&(ft.isShadow=!0,m.childNodes.push(ft))}}return t.parentNode&&Se(t.parentNode)&&(m.isShadow=!0),m.type===W.Element&&m.tagName==="iframe"&&xd(t,()=>{const $=t.contentDocument;if($&&T){const Q=be($,{doc:$,map:r,blockClass:i,blockSelector:s,unblockSelector:a,maskTextClass:o,maskTextSelector:c,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:l,maskInputSelector:h,unmaskInputSelector:_,maskAllText:p,maskInputOptions:w,maskTextFn:D,maskInputFn:S,slimDOMOptions:O,dataURLOptions:x,inlineImages:v,recordCanvas:b,preserveWhiteSpace:I,onSerialize:N,onIframeLoad:T,iframeLoadTimeout:E,keepIframeSrcFn:U});Q&&T(t,Q)}},E),m}function Ad(t,e){const{blockClass:n="rr-block",blockSelector:r=null,unblockSelector:i=null,maskTextClass:s="rr-mask",maskTextSelector:a=null,unmaskTextSelector:o=null,inlineStylesheet:c=!0,inlineImages:u=!1,recordCanvas:d=!1,maskInputSelector:l=null,unmaskInputSelector:h=null,maskAllText:_=!1,maskAllInputs:p=!1,maskTextFn:w,maskInputFn:D,slimDOM:S=!1,dataURLOptions:O,preserveWhiteSpace:x,onSerialize:v,onIframeLoad:b,iframeLoadTimeout:N,keepIframeSrcFn:T=()=>!1}=e||{},E={};return[be(t,{doc:t,map:E,blockClass:n,blockSelector:r,unblockSelector:i,maskTextClass:s,maskTextSelector:a,unmaskTextSelector:o,skipChild:!1,inlineStylesheet:c,maskInputSelector:l,unmaskInputSelector:h,maskAllText:_,maskInputOptions:p===!0?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0}:p===!1?{}:p,maskTextFn:w,maskInputFn:D,slimDOMOptions:S===!0||S==="all"?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:S==="all",headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:S===!1?{}:S,dataURLOptions:O,inlineImages:u,recordCanvas:d,preserveWhiteSpace:x,onSerialize:v,onIframeLoad:b,iframeLoadTimeout:N,keepIframeSrcFn:T}),E]}function Cd(t,e,n){return(t==="video"||t==="audio")&&e==="autoplay"}var L;(function(t){t[t.DomContentLoaded=0]="DomContentLoaded",t[t.Load=1]="Load",t[t.FullSnapshot=2]="FullSnapshot",t[t.IncrementalSnapshot=3]="IncrementalSnapshot",t[t.Meta=4]="Meta",t[t.Custom=5]="Custom",t[t.Plugin=6]="Plugin"})(L||(L={}));var Z;(function(t){t[t.Mutation=0]="Mutation",t[t.MouseMove=1]="MouseMove",t[t.MouseInteraction=2]="MouseInteraction",t[t.Scroll=3]="Scroll",t[t.ViewportResize=4]="ViewportResize",t[t.Input=5]="Input",t[t.TouchMove=6]="TouchMove",t[t.MediaInteraction=7]="MediaInteraction",t[t.StyleSheetRule=8]="StyleSheetRule",t[t.CanvasMutation=9]="CanvasMutation",t[t.Font=10]="Font",t[t.Log=11]="Log",t[t.Drag=12]="Drag",t[t.StyleDeclaration=13]="StyleDeclaration"})(Z||(Z={}));var ln;(function(t){t[t.MouseUp=0]="MouseUp",t[t.MouseDown=1]="MouseDown",t[t.Click=2]="Click",t[t.ContextMenu=3]="ContextMenu",t[t.DblClick=4]="DblClick",t[t.Focus=5]="Focus",t[t.Blur=6]="Blur",t[t.TouchStart=7]="TouchStart",t[t.TouchMove_Departed=8]="TouchMove_Departed",t[t.TouchEnd=9]="TouchEnd",t[t.TouchCancel=10]="TouchCancel"})(ln||(ln={}));var ee;(function(t){t[t["2D"]=0]="2D",t[t.WebGL=1]="WebGL",t[t.WebGL2=2]="WebGL2"})(ee||(ee={}));var li;(function(t){t[t.Play=0]="Play",t[t.Pause=1]="Pause",t[t.Seeked=2]="Seeked",t[t.VolumeChange=3]="VolumeChange"})(li||(li={}));var fi;(function(t){t.Start="start",t.Pause="pause",t.Resume="resume",t.Resize="resize",t.Finish="finish",t.FullsnapshotRebuilded="fullsnapshot-rebuilded",t.LoadStylesheetStart="load-stylesheet-start",t.LoadStylesheetEnd="load-stylesheet-end",t.SkipStart="skip-start",t.SkipEnd="skip-end",t.MouseInteraction="mouse-interaction",t.EventCast="event-cast",t.CustomEvent="custom-event",t.Flush="flush",t.StateChange="state-change",t.PlayBack="play-back"})(fi||(fi={}));function it(t,e,n=document){const r={capture:!0,passive:!0};return n.addEventListener(t,e,r),()=>n.removeEventListener(t,e,r)}function Ud(){return{map:{},getId(t){return!t||!t.__sn?-1:t.__sn.id},getNode(t){return this.map[t]||null},removeNodeFromMap(t){const e=t.__sn&&t.__sn.id;delete this.map[e],t.childNodes&&t.childNodes.forEach(n=>this.removeNodeFromMap(n))},has(t){return this.map.hasOwnProperty(t)},reset(){this.map={}}}}const Vt=`Please stop import mirror directly. Instead of that,\r now you can use replayer.getMirror() to access the mirror instance of a replayer,\r or you can use record.mirror to access the mirror instance during recording.`;let _i={map:{},getId(){return console.error(Vt),-1},getNode(){return console.error(Vt),null},removeNodeFromMap(){console.error(Vt)},has(){return console.error(Vt),!1},reset(){console.error(Vt)}};typeof window<"u"&&window.Proxy&&window.Reflect&&(_i=new Proxy(_i,{get(t,e,n){return e==="map"&&console.error(Vt),Reflect.get(t,e,n)}}));function Ne(t,e,n={}){let r=null,i=0;return function(s){let a=Date.now();!i&&n.leading===!1&&(i=a);let o=e-(a-i),c=this,u=arguments;o<=0||o>e?(r&&(clearTimeout(r),r=null),i=a,t.apply(c,u)):!r&&n.trailing!==!1&&(r=setTimeout(()=>{i=n.leading===!1?0:Date.now(),r=null,t.apply(c,u)},o))}}function wn(t,e,n,r,i=window){const s=i.Object.getOwnPropertyDescriptor(t,e);return i.Object.defineProperty(t,e,r?n:{set(a){setTimeout(()=>{n.set.call(this,a)},0),s&&s.set&&s.set.call(this,a)}}),()=>wn(t,e,s||{},!0)}function ne(t,e,n){try{if(!(e in t))return()=>{};const r=t[e],i=n(r);return typeof i=="function"&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:r}})),t[e]=i,()=>{t[e]=r}}catch(r){return()=>{}}}function Ks(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Js(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function et(t,e,n,r){if(!t)return!1;if(t.nodeType===t.ELEMENT_NODE){let i=!1;const s=r&&t.matches(r);return typeof e=="string"?t.closest!==void 0?i=!s&&t.closest("."+e)!==null:i=!s&&t.classList.contains(e):!s&&t.classList.forEach(a=>{e.test(a)&&(i=!0)}),!i&&n&&(i=t.matches(n)),!s&&i||et(t.parentNode,e,n,r)}return t.nodeType===t.TEXT_NODE,et(t.parentNode,e,n,r)}function Un(t){return"__sn"in t?t.__sn.id===ke:!1}function Qs(t,e){if(Se(t))return!1;const n=e.getId(t);return e.has(n)?t.parentNode&&t.parentNode.nodeType===t.DOCUMENT_NODE?!1:t.parentNode?Qs(t.parentNode,e):!0:!0}function ta(t){return!!t.changedTouches}function Bd(t=window){"NodeList"in t&&!t.NodeList.prototype.forEach&&(t.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in t&&!t.DOMTokenList.prototype.forEach&&(t.DOMTokenList.prototype.forEach=Array.prototype.forEach),Node.prototype.contains||(Node.prototype.contains=function(n){if(!(0 in arguments))throw new TypeError("1 argument is required");do if(this===n)return!0;while(n=n&&n.parentNode);return!1})}function ea(t){return"__sn"in t?t.__sn.type===W.Element&&t.__sn.tagName==="iframe":!1}function na(t){return!!(t!=null&&t.shadowRoot)}function hi(t){return"__ln"in t}class Ld{constructor(){this.length=0,this.head=null}get(e){if(e>=this.length)throw new Error("Position outside of list range");let n=this.head;for(let r=0;r<e;r++)n=(n==null?void 0:n.next)||null;return n}addNode(e){const n={value:e,previous:null,next:null};if(e.__ln=n,e.previousSibling&&hi(e.previousSibling)){const r=e.previousSibling.__ln.next;n.next=r,n.previous=e.previousSibling.__ln,e.previousSibling.__ln.next=n,r&&(r.previous=n)}else if(e.nextSibling&&hi(e.nextSibling)&&e.nextSibling.__ln.previous){const r=e.nextSibling.__ln.previous;n.previous=r,n.next=e.nextSibling.__ln,e.nextSibling.__ln.previous=n,r&&(r.next=n)}else this.head&&(this.head.previous=n),n.next=this.head,this.head=n;this.length++}removeNode(e){const n=e.__ln;this.head&&(n.previous?(n.previous.next=n.next,n.next&&(n.next.previous=n.previous)):(this.head=n.next,this.head&&(this.head.previous=null)),e.__ln&&delete e.__ln,this.length--)}}const pi=(t,e)=>`${t}@${e}`;function mi(t){return"__sn"in t}class Md{constructor(){this.frozen=!1,this.locked=!1,this.texts=[],this.attributes=[],this.removes=[],this.mapRemoves=[],this.movedMap={},this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.processMutations=e=>{e.forEach(this.processMutation),this.emit()},this.emit=()=>{if(this.frozen||this.locked)return;const e=[],n=new Ld,r=o=>{let c=o,u=ke;for(;u===ke;)c=c&&c.nextSibling,u=c&&this.mirror.getId(c);return u},i=o=>{var c,u,d,l,h;const _=o.getRootNode?(c=o.getRootNode())===null||c===void 0?void 0:c.host:null;let p=_;for(;!((d=(u=p==null?void 0:p.getRootNode)===null||u===void 0?void 0:u.call(p))===null||d===void 0)&&d.host;)p=((h=(l=p==null?void 0:p.getRootNode)===null||l===void 0?void 0:l.call(p))===null||h===void 0?void 0:h.host)||null;const w=!this.doc.contains(o)&&(!p||!this.doc.contains(p));if(!o.parentNode||w)return;const D=Se(o.parentNode)?this.mirror.getId(_):this.mirror.getId(o.parentNode),S=r(o);if(D===-1||S===-1)return n.addNode(o);let O=be(o,{doc:this.doc,map:this.mirror.map,blockClass:this.blockClass,blockSelector:this.blockSelector,unblockSelector:this.unblockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,unmaskTextSelector:this.unmaskTextSelector,maskInputSelector:this.maskInputSelector,unmaskInputSelector:this.unmaskInputSelector,skipChild:!0,inlineStylesheet:this.inlineStylesheet,maskAllText:this.maskAllText,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:x=>{ea(x)&&this.iframeManager.addIframe(x),na(o)&&this.shadowDomManager.addShadowRoot(o.shadowRoot,document)},onIframeLoad:(x,v)=>{this.iframeManager.attachIframe(x,v),this.shadowDomManager.observeAttachShadow(x)}});O&&e.push({parentId:D,nextId:S,node:O})};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const o of this.movedSet)er(this.removes,o,this.mirror)&&!this.movedSet.has(o.parentNode)||i(o);for(const o of this.addedSet)!nr(this.droppedSet,o)&&!er(this.removes,o,this.mirror)||nr(this.movedSet,o)?i(o):this.droppedSet.add(o);let s=null;for(;n.length;){let o=null;if(s){const c=this.mirror.getId(s.value.parentNode),u=r(s.value);c!==-1&&u!==-1&&(o=s)}if(!o)for(let c=n.length-1;c>=0;c--){const u=n.get(c);if(u){const d=this.mirror.getId(u.value.parentNode),l=r(u.value);if(d!==-1&&l!==-1){o=u;break}}}if(!o){for(;n.head;)n.removeNode(n.head.value);break}s=o.previous,n.removeNode(o.value),i(o.value)}const a={texts:this.texts.map(o=>({id:this.mirror.getId(o.node),value:o.value})).filter(o=>this.mirror.has(o.id)),attributes:this.attributes.map(o=>({id:this.mirror.getId(o.node),attributes:o.attributes})).filter(o=>this.mirror.has(o.id)),removes:this.removes,adds:e};!a.texts.length&&!a.attributes.length&&!a.removes.length&&!a.adds.length||(this.texts=[],this.attributes=[],this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.movedMap={},this.mutationCb(a))},this.processMutation=e=>{if(!Un(e.target))switch(e.type){case"characterData":{const n=e.target.textContent;!et(e.target,this.blockClass,this.blockSelector,this.unblockSelector)&&n!==e.oldValue&&this.texts.push({value:dn(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextSelector,this.maskAllText)&&n?this.maskTextFn?this.maskTextFn(n):n.replace(/[\S]/g,"*"):n,node:e.target});break}case"attributes":{const n=e.target;let r=n.getAttribute(e.attributeName);if(e.attributeName==="value"&&(r=Re({input:n,maskInputSelector:this.maskInputSelector,unmaskInputSelector:this.unmaskInputSelector,maskInputOptions:this.maskInputOptions,tagName:n.tagName,type:n.getAttribute("type"),value:r,maskInputFn:this.maskInputFn})),et(e.target,this.blockClass,this.blockSelector,this.unblockSelector)||r===e.oldValue)return;let i=this.attributes.find(s=>s.node===e.target);if(i||(i={node:e.target,attributes:{}},this.attributes.push(i)),e.attributeName==="type"&&n.tagName==="INPUT"&&(e.oldValue||"").toLowerCase()==="password"&&n.setAttribute("data-rr-is-password","true"),e.attributeName==="style"){const s=this.doc.createElement("span");e.oldValue&&s.setAttribute("style",e.oldValue),(i.attributes.style===void 0||i.attributes.style===null)&&(i.attributes.style={});try{const a=i.attributes.style;for(const o of Array.from(n.style)){const c=n.style.getPropertyValue(o),u=n.style.getPropertyPriority(o);(c!==s.style.getPropertyValue(o)||u!==s.style.getPropertyPriority(o))&&(u===""?a[o]=c:a[o]=[c,u])}for(const o of Array.from(s.style))n.style.getPropertyValue(o)===""&&(a[o]=!1)}catch(a){console.warn("[rrweb] Error when parsing update to style attribute:",a)}}else{const s=e.target;i.attributes[e.attributeName]=Xs(this.doc,s,s.tagName,e.attributeName,r,this.maskAllText,this.unmaskTextSelector,this.maskTextFn)}break}case"childList":{e.addedNodes.forEach(n=>this.genAdds(n,e.target)),e.removedNodes.forEach(n=>{const r=this.mirror.getId(n),i=Se(e.target)?this.mirror.getId(e.target.host):this.mirror.getId(e.target);et(e.target,this.blockClass,this.blockSelector,this.unblockSelector)||Un(n)||(this.addedSet.has(n)?(tr(this.addedSet,n),this.droppedSet.add(n)):this.addedSet.has(e.target)&&r===-1||Qs(e.target,this.mirror)||(this.movedSet.has(n)&&this.movedMap[pi(r,i)]?tr(this.movedSet,n):this.removes.push({parentId:i,id:r,isShadow:Se(e.target)?!0:void 0})),this.mapRemoves.push(n))});break}}},this.genAdds=(e,n)=>{if(!(n&&et(n,this.blockClass,this.blockSelector,this.unblockSelector))){if(mi(e)){if(Un(e))return;this.movedSet.add(e);let r=null;n&&mi(n)&&(r=n.__sn.id),r&&(this.movedMap[pi(e.__sn.id,r)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);et(e,this.blockClass,this.blockSelector,this.unblockSelector)||e.childNodes.forEach(r=>this.genAdds(r))}}}init(e){["mutationCb","blockClass","blockSelector","unblockSelector","maskTextClass","maskTextSelector","unmaskTextSelector","maskInputSelector","unmaskInputSelector","inlineStylesheet","maskAllText","maskInputOptions","maskTextFn","maskInputFn","recordCanvas","inlineImages","slimDOMOptions","doc","mirror","iframeManager","shadowDomManager","canvasManager"].forEach(n=>{this[n]=e[n]})}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function tr(t,e){t.delete(e),e.childNodes.forEach(n=>tr(t,n))}function er(t,e,n){const{parentNode:r}=e;if(!r)return!1;const i=n.getId(r);return t.some(s=>s.id===i)?!0:er(t,r,n)}function nr(t,e){const{parentNode:n}=e;return n?t.has(n)?!0:nr(t,n):!1}const k=t=>(...n)=>{try{return t(...n)}catch(r){try{r.__rrweb__=!0}catch(i){}throw r}},Mt=[];function Ue(t){try{if("composedPath"in t){const e=t.composedPath();if(e.length)return e[0]}else if("path"in t&&t.path.length)return t.path[0]}catch(e){}return t&&t.target}function ra(t,e){var n,r;const i=new Md;Mt.push(i),i.init(t);let s=window.MutationObserver||window.__rrMutationObserver;const a=(r=(n=window==null?void 0:window.Zone)===null||n===void 0?void 0:n.__symbol__)===null||r===void 0?void 0:r.call(n,"MutationObserver");a&&window[a]&&(s=window[a]);const o=new s(k(c=>{t.onMutation&&t.onMutation(c)===!1||i.processMutations(c)}));return o.observe(e,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),o}function Gd({mousemoveCb:t,sampling:e,doc:n,mirror:r}){if(e.mousemove===!1)return()=>{};const i=typeof e.mousemove=="number"?e.mousemove:50,s=typeof e.mousemoveCallback=="number"?e.mousemoveCallback:500;let a=[],o;const c=Ne(l=>{const h=Date.now()-o;k(t)(a.map(_=>(_.timeOffset-=h,_)),l),a=[],o=null},s),u=Ne(l=>{const h=Ue(l),{clientX:_,clientY:p}=ta(l)?l.changedTouches[0]:l;o||(o=Date.now()),a.push({x:_,y:p,id:r.getId(h),timeOffset:Date.now()-o}),c(typeof DragEvent<"u"&&l instanceof DragEvent?Z.Drag:l instanceof MouseEvent?Z.MouseMove:Z.TouchMove)},i,{trailing:!1}),d=[it("mousemove",k(u),n),it("touchmove",k(u),n),it("drag",k(u),n)];return k(()=>{d.forEach(l=>l())})}function Pd({mouseInteractionCb:t,doc:e,mirror:n,blockClass:r,blockSelector:i,unblockSelector:s,sampling:a}){if(a.mouseInteraction===!1)return()=>{};const o=a.mouseInteraction===!0||a.mouseInteraction===void 0?{}:a.mouseInteraction,c=[],u=d=>l=>{const h=Ue(l);if(et(h,r,i,s))return;const _=ta(l)?l.changedTouches[0]:l;if(!_)return;const p=n.getId(h),{clientX:w,clientY:D}=_;k(t)({type:ln[d],id:p,x:w,y:D})};return Object.keys(ln).filter(d=>Number.isNaN(Number(d))&&!d.endsWith("_Departed")&&o[d]!==!1).forEach(d=>{const l=d.toLowerCase(),h=k(u(d));c.push(it(l,h,e))}),k(()=>{c.forEach(d=>d())})}function ia({scrollCb:t,doc:e,mirror:n,blockClass:r,blockSelector:i,unblockSelector:s,sampling:a}){const o=Ne(c=>{const u=Ue(c);if(!u||et(u,r,i,s))return;const d=n.getId(u);if(u===e){const l=e.scrollingElement||e.documentElement;k(t)({id:d,x:l.scrollLeft,y:l.scrollTop})}else k(t)({id:d,x:u.scrollLeft,y:u.scrollTop})},a.scroll||100);return it("scroll",k(o),e)}function Yd({viewportResizeCb:t}){let e=-1,n=-1;const r=Ne(()=>{const i=Ks(),s=Js();(e!==i||n!==s)&&(k(t)({width:Number(s),height:Number(i)}),e=i,n=s)},200);return it("resize",k(r),window)}function gi(t,e){const n=Object.assign({},t);return e||delete n.userTriggered,n}const Fd=["INPUT","TEXTAREA","SELECT"],yi=new WeakMap;function zd({inputCb:t,doc:e,mirror:n,blockClass:r,blockSelector:i,unblockSelector:s,ignoreClass:a,ignoreSelector:o,maskInputSelector:c,unmaskInputSelector:u,maskInputOptions:d,maskInputFn:l,sampling:h,userTriggeredOnInput:_}){function p(v){let b=Ue(v);const N=b&&b.tagName,T=v.isTrusted;if(N==="OPTION"&&(b=b.parentElement),!b||!N||Fd.indexOf(N)<0||et(b,r,i,s))return;const E=b,U=qs(E);if(E.classList.contains(a)||o&&E.matches(o))return;let I=Kn(E,N,U),z=!1;(U==="radio"||U==="checkbox")&&(z=b.checked),dd({maskInputOptions:d,maskInputSelector:c,tagName:N,type:U})&&(I=Re({input:E,maskInputOptions:d,maskInputSelector:c,unmaskInputSelector:u,tagName:N,type:U,value:I,maskInputFn:l})),w(b,k(gi)({text:I,isChecked:z,userTriggered:T},_));const K=b.name;U==="radio"&&K&&z&&e.querySelectorAll(`input[type="radio"][name="${K}"]`).forEach(m=>{if(m!==b){const A=Re({input:m,maskInputOptions:d,maskInputSelector:c,unmaskInputSelector:u,tagName:N,type:U,value:Kn(m,N,U),maskInputFn:l});w(m,k(gi)({text:A,isChecked:!z,userTriggered:!1},_))}})}function w(v,b){const N=yi.get(v);if(!N||N.text!==b.text||N.isChecked!==b.isChecked){yi.set(v,b);const T=n.getId(v);t(Object.assign(Object.assign({},b),{id:T}))}}const S=(h.input==="last"?["change"]:["input","change"]).map(v=>it(v,k(p),e)),O=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value"),x=[[HTMLInputElement.prototype,"value"],[HTMLInputElement.prototype,"checked"],[HTMLSelectElement.prototype,"value"],[HTMLTextAreaElement.prototype,"value"],[HTMLSelectElement.prototype,"selectedIndex"],[HTMLOptionElement.prototype,"selected"]];return O&&O.set&&S.push(...x.map(v=>wn(v[0],v[1],{set(){k(p)({target:this})}}))),k(()=>{S.forEach(v=>v())})}function fn(t){const e=[];function n(r,i){if(qe("CSSGroupingRule")&&r.parentRule instanceof CSSGroupingRule||qe("CSSMediaRule")&&r.parentRule instanceof CSSMediaRule||qe("CSSSupportsRule")&&r.parentRule instanceof CSSSupportsRule||qe("CSSConditionRule")&&r.parentRule instanceof CSSConditionRule){const a=Array.from(r.parentRule.cssRules).indexOf(r);i.unshift(a)}else{const a=Array.from(r.parentStyleSheet.cssRules).indexOf(r);i.unshift(a)}return i}return n(t,e)}function $d({styleSheetRuleCb:t,mirror:e},{win:n}){if(!n.CSSStyleSheet||!n.CSSStyleSheet.prototype)return()=>{};const r=n.CSSStyleSheet.prototype.insertRule;n.CSSStyleSheet.prototype.insertRule=new Proxy(r,{apply:k((o,c,u)=>{const[d,l]=u,h=e.getId(c.ownerNode);return h!==-1&&t({id:h,adds:[{rule:d,index:l}]}),o.apply(c,u)})});const i=n.CSSStyleSheet.prototype.deleteRule;n.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:k((o,c,u)=>{const[d]=u,l=e.getId(c.ownerNode);return l!==-1&&t({id:l,removes:[{index:d}]}),o.apply(c,u)})});const s={};Ze("CSSGroupingRule")?s.CSSGroupingRule=n.CSSGroupingRule:(Ze("CSSMediaRule")&&(s.CSSMediaRule=n.CSSMediaRule),Ze("CSSConditionRule")&&(s.CSSConditionRule=n.CSSConditionRule),Ze("CSSSupportsRule")&&(s.CSSSupportsRule=n.CSSSupportsRule));const a={};return Object.entries(s).forEach(([o,c])=>{a[o]={insertRule:c.prototype.insertRule,deleteRule:c.prototype.deleteRule},c.prototype.insertRule=new Proxy(a[o].insertRule,{apply:k((u,d,l)=>{const[h,_]=l,p=e.getId(d.parentStyleSheet.ownerNode);return p!==-1&&t({id:p,adds:[{rule:h,index:[...fn(d),_||0]}]}),u.apply(d,l)})}),c.prototype.deleteRule=new Proxy(a[o].deleteRule,{apply:k((u,d,l)=>{const[h]=l,_=e.getId(d.parentStyleSheet.ownerNode);return _!==-1&&t({id:_,removes:[{index:[...fn(d),h]}]}),u.apply(d,l)})})}),k(()=>{n.CSSStyleSheet.prototype.insertRule=r,n.CSSStyleSheet.prototype.deleteRule=i,Object.entries(s).forEach(([o,c])=>{c.prototype.insertRule=a[o].insertRule,c.prototype.deleteRule=a[o].deleteRule})})}function Hd({styleDeclarationCb:t,mirror:e},{win:n}){const r=n.CSSStyleDeclaration.prototype.setProperty;n.CSSStyleDeclaration.prototype.setProperty=new Proxy(r,{apply:k((s,a,o)=>{var c,u;const[d,l,h]=o,_=e.getId((u=(c=a.parentRule)===null||c===void 0?void 0:c.parentStyleSheet)===null||u===void 0?void 0:u.ownerNode);return _!==-1&&t({id:_,set:{property:d,value:l,priority:h},index:fn(a.parentRule)}),s.apply(a,o)})});const i=n.CSSStyleDeclaration.prototype.removeProperty;return n.CSSStyleDeclaration.prototype.removeProperty=new Proxy(i,{apply:k((s,a,o)=>{var c,u;const[d]=o,l=e.getId((u=(c=a.parentRule)===null||c===void 0?void 0:c.parentStyleSheet)===null||u===void 0?void 0:u.ownerNode);return l!==-1&&t({id:l,remove:{property:d},index:fn(a.parentRule)}),s.apply(a,o)})}),k(()=>{n.CSSStyleDeclaration.prototype.setProperty=r,n.CSSStyleDeclaration.prototype.removeProperty=i})}function jd({mediaInteractionCb:t,blockClass:e,blockSelector:n,unblockSelector:r,mirror:i,sampling:s}){const a=c=>Ne(k(u=>{const d=Ue(u);if(!d||et(d,e,n,r))return;const{currentTime:l,volume:h,muted:_}=d;t({type:c,id:i.getId(d),currentTime:l,volume:h,muted:_})}),s.media||500),o=[it("play",a(0)),it("pause",a(1)),it("seeked",a(2)),it("volumechange",a(3))];return k(()=>{o.forEach(c=>c())})}function Wd({fontCb:t,doc:e}){const n=e.defaultView;if(!n)return()=>{};const r=[],i=new WeakMap,s=n.FontFace;n.FontFace=function(c,u,d){const l=new s(c,u,d);return i.set(l,{family:c,buffer:typeof u!="string",descriptors:d,fontSource:typeof u=="string"?u:JSON.stringify(Array.from(new Uint8Array(u)))}),l};const a=ne(e.fonts,"add",function(o){return function(c){return setTimeout(()=>{const u=i.get(c);u&&(t(u),i.delete(c))},0),o.apply(this,[c])}});return r.push(()=>{n.FontFace=s}),r.push(a),k(()=>{r.forEach(o=>o())})}function qd(t,e){const{mutationCb:n,mousemoveCb:r,mouseInteractionCb:i,scrollCb:s,viewportResizeCb:a,inputCb:o,mediaInteractionCb:c,styleSheetRuleCb:u,styleDeclarationCb:d,canvasMutationCb:l,fontCb:h}=t;t.mutationCb=(..._)=>{e.mutation&&e.mutation(..._),n(..._)},t.mousemoveCb=(..._)=>{e.mousemove&&e.mousemove(..._),r(..._)},t.mouseInteractionCb=(..._)=>{e.mouseInteraction&&e.mouseInteraction(..._),i(..._)},t.scrollCb=(..._)=>{e.scroll&&e.scroll(..._),s(..._)},t.viewportResizeCb=(..._)=>{e.viewportResize&&e.viewportResize(..._),a(..._)},t.inputCb=(..._)=>{e.input&&e.input(..._),o(..._)},t.mediaInteractionCb=(..._)=>{e.mediaInteaction&&e.mediaInteaction(..._),c(..._)},t.styleSheetRuleCb=(..._)=>{e.styleSheetRule&&e.styleSheetRule(..._),u(..._)},t.styleDeclarationCb=(..._)=>{e.styleDeclaration&&e.styleDeclaration(..._),d(..._)},t.canvasMutationCb=(..._)=>{e.canvasMutation&&e.canvasMutation(..._),l(..._)},t.fontCb=(..._)=>{e.font&&e.font(..._),h(..._)}}function Zd(t,e={}){const n=t.doc.defaultView;if(!n)return()=>{};qd(t,e);const r=ra(t,t.doc),i=Gd(t),s=Pd(t),a=ia(t),o=Yd(t),c=zd(t),u=jd(t),d=$d(t,{win:n}),l=Hd(t,{win:n}),h=t.collectFonts?Wd(t):()=>{},_=[];for(const p of t.plugins)_.push(p.observer(p.callback,n,p.options));return k(()=>{Mt.forEach(p=>p.reset()),r.disconnect(),i(),s(),a(),o(),c(),u();try{d(),l()}catch(p){}h(),_.forEach(p=>p())})}function qe(t){return typeof window[t]<"u"}function Ze(t){return!!(typeof window[t]<"u"&&window[t].prototype&&"insertRule"in window[t].prototype&&"deleteRule"in window[t].prototype)}class Vd{constructor(e){this.iframes=new WeakMap,this.mutationCb=e.mutationCb}addIframe(e){this.iframes.set(e,!0)}addLoadListener(e){this.loadListener=e}attachIframe(e,n){var r;this.mutationCb({adds:[{parentId:e.__sn.id,nextId:null,node:n}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),(r=this.loadListener)===null||r===void 0||r.call(this,e)}}class Xd{constructor(e){this.restorePatches=[],this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror;const n=this;this.restorePatches.push(ne(HTMLElement.prototype,"attachShadow",function(r){return function(){const i=r.apply(this,arguments);return this.shadowRoot&&n.addShadowRoot(this.shadowRoot,this.ownerDocument),i}}))}addShadowRoot(e,n){ra(Object.assign(Object.assign({},this.bypassOptions),{doc:n,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),e),ia(Object.assign(Object.assign({},this.bypassOptions),{scrollCb:this.scrollCb,doc:e,mirror:this.mirror}))}observeAttachShadow(e){if(e.contentWindow){const n=this;this.restorePatches.push(ne(e.contentWindow.HTMLElement.prototype,"attachShadow",function(r){return function(){const i=r.apply(this,arguments);return this.shadowRoot&&n.addShadowRoot(this.shadowRoot,e.contentDocument),i}}))}}reset(){this.restorePatches.forEach(e=>e())}}function Kd(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]]);return n}function Jd(t,e,n,r,i,s){const a=[],o=Object.getOwnPropertyNames(e.CanvasRenderingContext2D.prototype);for(const c of o)try{if(typeof e.CanvasRenderingContext2D.prototype[c]!="function")continue;const u=ne(e.CanvasRenderingContext2D.prototype,c,function(d){return function(...l){return et(this.canvas,n,i,r)||setTimeout(()=>{const h=[...l];if(c==="drawImage"&&h[0]&&h[0]instanceof HTMLCanvasElement){const _=h[0],p=_.getContext("2d");let w=p==null?void 0:p.getImageData(0,0,_.width,_.height),D=w==null?void 0:w.data;h[0]=JSON.stringify(D)}t(this.canvas,{type:ee["2D"],property:c,args:h})},0),d.apply(this,l)}});a.push(u)}catch(u){const d=wn(e.CanvasRenderingContext2D.prototype,c,{set(l){t(this.canvas,{type:ee["2D"],property:c,args:[l],setter:!0})}});a.push(d)}return()=>{a.forEach(c=>c())}}function Qd(t,e,n,r){const i=[];try{const s=ne(t.HTMLCanvasElement.prototype,"getContext",function(a){return function(o,...c){return et(this,e,n,r)||"__context"in this||(this.__context=o),a.apply(this,[o,...c])}});i.push(s)}catch(s){console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{i.forEach(s=>s())}}var Kt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tl=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var Ve=0;Ve<Kt.length;Ve++)tl[Kt.charCodeAt(Ve)]=Ve;var el=function(t){var e=new Uint8Array(t),n,r=e.length,i="";for(n=0;n<r;n+=3)i+=Kt[e[n]>>2],i+=Kt[(e[n]&3)<<4|e[n+1]>>4],i+=Kt[(e[n+1]&15)<<2|e[n+2]>>6],i+=Kt[e[n+2]&63];return r%3===2?i=i.substring(0,i.length-1)+"=":r%3===1&&(i=i.substring(0,i.length-2)+"=="),i};const Ei=new Map;function nl(t,e){let n=Ei.get(t);return n||(n=new Map,Ei.set(t,n)),n.has(e)||n.set(e,[]),n.get(e)}const sa=(t,e,n)=>{if(!t||!(aa(t,e)||typeof t=="object"))return;const r=t.constructor.name,i=nl(n,r);let s=i.indexOf(t);return s===-1&&(s=i.length,i.push(t)),s};function en(t,e,n){if(t instanceof Array)return t.map(r=>en(r,e,n));if(t===null)return t;if(t instanceof Float32Array||t instanceof Float64Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Uint8Array||t instanceof Uint16Array||t instanceof Int16Array||t instanceof Int8Array||t instanceof Uint8ClampedArray)return{rr_type:t.constructor.name,args:[Object.values(t)]};if(t instanceof ArrayBuffer){const r=t.constructor.name,i=el(t);return{rr_type:r,base64:i}}else{if(t instanceof DataView)return{rr_type:t.constructor.name,args:[en(t.buffer,e,n),t.byteOffset,t.byteLength]};if(t instanceof HTMLImageElement){const r=t.constructor.name,{src:i}=t;return{rr_type:r,src:i}}else{if(t instanceof ImageData)return{rr_type:t.constructor.name,args:[en(t.data,e,n),t.width,t.height]};if(aa(t,e)||typeof t=="object"){const r=t.constructor.name,i=sa(t,e,n);return{rr_type:r,index:i}}}}return t}const rl=(t,e,n)=>[...t].map(r=>en(r,e,n)),aa=(t,e)=>!!["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(i=>typeof e[i]=="function").find(i=>t instanceof e[i]);function Si(t,e,n,r,i,s,a,o){const c=[],u=Object.getOwnPropertyNames(t);for(const d of u)try{if(typeof t[d]!="function")continue;const l=ne(t,d,function(h){return function(..._){const p=h.apply(this,_);if(sa(p,o,t),!et(this.canvas,r,s,i)){const w=a.getId(this.canvas),D=rl([..._],o,t),S={type:e,property:d,args:D};n(this.canvas,S)}return p}});c.push(l)}catch(l){const h=wn(t,d,{set(_){n(this.canvas,{type:e,property:d,args:[_],setter:!0})}});c.push(h)}return c}function il(t,e,n,r,i,s){const a=[];return a.push(...Si(e.WebGLRenderingContext.prototype,ee.WebGL,t,n,r,i,s,e)),typeof e.WebGL2RenderingContext<"u"&&a.push(...Si(e.WebGL2RenderingContext.prototype,ee.WebGL2,t,n,r,i,s,e)),()=>{a.forEach(o=>o())}}class sl{reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}constructor(e){this.pendingCanvasMutations=new Map,this.rafStamps={latestId:0,invokeId:null},this.frozen=!1,this.locked=!1,this.processMutation=function(n,r){(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId||!this.rafStamps.invokeId)&&(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(n)||this.pendingCanvasMutations.set(n,[]),this.pendingCanvasMutations.get(n).push(r)},this.mutationCb=e.mutationCb,this.mirror=e.mirror,e.recordCanvas===!0&&this.initCanvasMutationObserver(e.win,e.blockClass,e.blockSelector,e.unblockSelector)}initCanvasMutationObserver(e,n,r,i){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const s=Qd(e,n,i,r),a=Jd(this.processMutation.bind(this),e,n,i,r,this.mirror),o=il(this.processMutation.bind(this),e,n,i,r,this.mirror);this.resetObservers=()=>{s(),a(),o()}}startPendingCanvasMutationFlusher(){requestAnimationFrame(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){const e=n=>{this.rafStamps.latestId=n,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,n)=>{const r=this.mirror.getId(n);this.flushPendingCanvasMutationFor(n,r)}),requestAnimationFrame(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,n){if(this.frozen||this.locked)return;const r=this.pendingCanvasMutations.get(e);if(!r||n===-1)return;const i=r.map(a=>Kd(a,["type"])),{type:s}=r[0];this.mutationCb({id:n,type:s,commands:i}),this.pendingCanvasMutations.delete(e)}}function q(t){return Object.assign(Object.assign({},t),{timestamp:Date.now()})}let H,we;const ge=Ud();function jt(t={}){const{emit:e,checkoutEveryNms:n,checkoutEveryNth:r,blockClass:i="rr-block",blockSelector:s=null,unblockSelector:a=null,ignoreClass:o="rr-ignore",ignoreSelector:c=null,maskTextClass:u="rr-mask",maskTextSelector:d=null,maskInputSelector:l=null,unmaskTextSelector:h=null,unmaskInputSelector:_=null,inlineStylesheet:p=!0,maskAllText:w=!1,maskAllInputs:D,maskInputOptions:S,slimDOMOptions:O,maskInputFn:x,maskTextFn:v,hooks:b,packFn:N,sampling:T={},mousemoveWait:E,recordCanvas:U=!1,userTriggeredOnInput:I=!1,collectFonts:z=!1,inlineImages:K=!1,plugins:m,keepIframeSrcFn:A=()=>!1,onMutation:$}=t;if(!e)throw new Error("emit function is required");E!==void 0&&T.mousemove===void 0&&(T.mousemove=E);const Q=D===!0?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,radio:!0,checkbox:!0}:S!==void 0?S:{},ft=O===!0||O==="all"?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:O==="all",headMetaDescKeywords:O==="all"}:O||{};Bd();let Ur,kn=0;const La=R=>{for(const at of m||[])at.eventProcessor&&(R=at.eventProcessor(R));return N&&(R=N(R)),R};H=(R,at)=>{var _t;if(!((_t=Mt[0])===null||_t===void 0)&&_t.isFrozen()&&R.type!==L.FullSnapshot&&!(R.type===L.IncrementalSnapshot&&R.data.source===Z.Mutation)&&Mt.forEach(rt=>rt.unfreeze()),e(La(R),at),R.type===L.FullSnapshot)Ur=R,kn=0;else if(R.type===L.IncrementalSnapshot){if(R.data.source===Z.Mutation&&R.data.isAttachIframe)return;kn++;const rt=r&&kn>=r,ot=n&&R.timestamp-Ur.timestamp>n;(rt||ot)&&we(!0)}};const Nn=R=>{H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.Mutation},R)}))},Br=R=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.Scroll},R)})),Lr=R=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.CanvasMutation},R)})),_e=new Vd({mutationCb:Nn}),Mr=new sl({recordCanvas:U,mutationCb:Lr,win:window,blockClass:i,blockSelector:s,unblockSelector:a,mirror:ge}),Dn=new Xd({mutationCb:Nn,scrollCb:Br,bypassOptions:{onMutation:$,blockClass:i,blockSelector:s,unblockSelector:a,maskTextClass:u,maskTextSelector:d,unmaskTextSelector:h,maskInputSelector:l,unmaskInputSelector:_,inlineStylesheet:p,maskAllText:w,maskInputOptions:Q,maskTextFn:v,maskInputFn:x,recordCanvas:U,inlineImages:K,sampling:T,slimDOMOptions:ft,iframeManager:_e,canvasManager:Mr},mirror:ge});we=(R=!1)=>{var at,_t,rt,ot;H(q({type:L.Meta,data:{href:window.location.href,width:Js(),height:Ks()}}),R),Mt.forEach(ct=>ct.lock());const[M,he]=Ad(document,{blockClass:i,blockSelector:s,unblockSelector:a,maskTextClass:u,maskTextSelector:d,unmaskTextSelector:h,maskInputSelector:l,unmaskInputSelector:_,inlineStylesheet:p,maskAllText:w,maskAllInputs:Q,maskTextFn:v,slimDOM:ft,recordCanvas:U,inlineImages:K,onSerialize:ct=>{ea(ct)&&_e.addIframe(ct),na(ct)&&Dn.addShadowRoot(ct.shadowRoot,document)},onIframeLoad:(ct,Ma)=>{_e.attachIframe(ct,Ma),Dn.observeAttachShadow(ct)},keepIframeSrcFn:A});if(!M)return console.warn("Failed to snapshot the document");ge.map=he,H(q({type:L.FullSnapshot,data:{node:M,initialOffset:{left:window.pageXOffset!==void 0?window.pageXOffset:(document==null?void 0:document.documentElement.scrollLeft)||((_t=(at=document==null?void 0:document.body)===null||at===void 0?void 0:at.parentElement)===null||_t===void 0?void 0:_t.scrollLeft)||(document==null?void 0:document.body.scrollLeft)||0,top:window.pageYOffset!==void 0?window.pageYOffset:(document==null?void 0:document.documentElement.scrollTop)||((ot=(rt=document==null?void 0:document.body)===null||rt===void 0?void 0:rt.parentElement)===null||ot===void 0?void 0:ot.scrollTop)||(document==null?void 0:document.body.scrollTop)||0}}})),Mt.forEach(ct=>ct.unlock())};try{const R=[];R.push(it("DOMContentLoaded",()=>{H(q({type:L.DomContentLoaded,data:{}}))}));const at=rt=>{var ot;return k(Zd)({onMutation:$,mutationCb:Nn,mousemoveCb:(M,he)=>H(q({type:L.IncrementalSnapshot,data:{source:he,positions:M}})),mouseInteractionCb:M=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.MouseInteraction},M)})),scrollCb:Br,viewportResizeCb:M=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.ViewportResize},M)})),inputCb:M=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.Input},M)})),mediaInteractionCb:M=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.MediaInteraction},M)})),styleSheetRuleCb:M=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.StyleSheetRule},M)})),styleDeclarationCb:M=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.StyleDeclaration},M)})),canvasMutationCb:Lr,fontCb:M=>H(q({type:L.IncrementalSnapshot,data:Object.assign({source:Z.Font},M)})),blockClass:i,ignoreClass:o,ignoreSelector:c,maskTextClass:u,maskTextSelector:d,unmaskTextSelector:h,maskInputSelector:l,unmaskInputSelector:_,maskInputOptions:Q,inlineStylesheet:p,sampling:T,recordCanvas:U,inlineImages:K,userTriggeredOnInput:I,collectFonts:z,doc:rt,maskAllText:w,maskInputFn:x,maskTextFn:v,blockSelector:s,unblockSelector:a,slimDOMOptions:ft,mirror:ge,iframeManager:_e,shadowDomManager:Dn,canvasManager:Mr,plugins:((ot=m==null?void 0:m.filter(M=>M.observer))===null||ot===void 0?void 0:ot.map(M=>({observer:M.observer,options:M.options,callback:he=>H(q({type:L.Plugin,data:{plugin:M.name,payload:he}}))})))||[]},b)};_e.addLoadListener(rt=>{try{R.push(at(rt.contentDocument))}catch(ot){console.warn(ot)}});const _t=()=>{we(),R.push(at(document))};return document.readyState==="interactive"||document.readyState==="complete"?_t():R.push(it("load",()=>{H(q({type:L.Load,data:{}})),_t()},window)),()=>{R.forEach(rt=>rt())}}catch(R){console.warn(R)}}jt.addCustomEvent=(t,e)=>{if(!H)throw new Error("please add custom event after start recording");H(q({type:L.Custom,data:{tag:t,payload:e}}))};jt.freezePage=()=>{Mt.forEach(t=>t.freeze())};jt.takeFullSnapshot=t=>{if(!we)throw new Error("please take full snapshot after start recording");we(t)};jt.mirror=ge;const al=["name","type","startTime","transferSize","duration"];function bi(t){return function(e){return al.every(n=>t[n]===e[n])}}function ol(t,e){const[n,r,i]=t.reduce((c,u)=>(u.entryType==="navigation"?c[0].push(u):u.entryType==="largest-contentful-paint"?c[1].push(u):c[2].push(u),c),[[],[],[]]),s=[],a=[];let o=r.length?r[r.length-1]:void 0;return e.forEach(c=>{if(c.entryType==="largest-contentful-paint"){(!o||o.startTime<c.startTime)&&(o=c);return}if(c.entryType==="navigation"){const u=c;c.duration>0&&!n.find(bi(u))&&!a.find(bi(u))&&a.push(u);return}s.push(c)}),[...o?[o]:[],...n,...i,...s,...a].sort((c,u)=>c.startTime-u.startTime)}function cl(t){const e=r=>{const i=ol(t.performanceEvents,r.getEntries());t.performanceEvents=i},n=new PerformanceObserver(e);return["element","event","first-input","largest-contentful-paint","layout-shift","longtask","navigation","paint","resource"].forEach(r=>{try{n.observe({type:r,buffered:!0})}catch(i){}}),n}const ul=`/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ function t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},U=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let S=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var T=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);U(t,t.dyn_ltree,e-1),U(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},O={_tr_init:t=>{S||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),S=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:T,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var F=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const L=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var N=(t,e,a,i)=>{const n=L,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=O,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:W,Z_OK:q,Z_STREAM_END:J,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=F(t.adler,e,n,a):2===t.state.wrap&&(t.adler=N(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),q},Zt=t=>{const e=Rt(t);var a;return e===q&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ut=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var St={deflateInit:(t,e)=>Ut(t,e,ot,15,8,st),deflateInit2:Ut,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,q),deflate:(t,e)=>{if(Et(t)||e>W||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,q}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=N(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=N(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,q;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=N(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,q;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,q;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=N(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,q;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,q}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),q;if(2===i&&(e===Y?K(a):e!==W&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,q}return e!==X?q:a.wrap<=0?J:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?q:J)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):q},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=F(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,q},deflateInfo:"pako deflate (from Nodeca project)"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Tt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Ot=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Ft=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Ft=!1}const Lt=new Uint8Array(256);for(let t=0;t<256;t++)Lt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Lt[254]=Lt[254]=1;var Nt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Lt[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Ft)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Lt[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Wt,Z_DEFLATED:qt}=B;function Jt(t){this.options=Tt({level:Xt,method:qt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Wt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=St.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&St.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Nt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=St.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new Jt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}Jt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,"string"==typeof t?a.input=Nt(t):"[object ArrayBuffer]"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=St.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=St.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},Jt.prototype.onData=function(t){this.chunks.push(t)},Jt.prototype.onEnd=function(t){t===Yt&&(this.result=Ot(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:Jt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg="invalid literal/length code",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg="invalid distance code",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg="invalid distance too far back",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(U=0,S=r[m]):r[m]>=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Ue={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=me;break}if((15&h)!==we){t.msg="unknown compression method",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg="unknown compression method",a.mode=me;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=N(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=N(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=N(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=N(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=N(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg="invalid literal/length code",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?N(a.check,n,f,r-f):F(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg="incorrect data check",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?N(a.check,n,f,t.next_out-f):F(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=F(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:"pako inflate (from Nodeca project)"};var Se=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Te,Z_FINISH:Oe,Z_OK:Fe,Z_STREAM_END:Le,Z_NEED_DICT:Ne,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Tt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ue.inflateInit2(this.strm,e.windowBits);if(a!==Fe)throw new Error(I[a]);if(this.header=new Se,Ue.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Nt(e.dictionary):"[object ArrayBuffer]"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Ue.inflateSetDictionary(this.strm,e.dictionary),a!==Fe)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Oe:Te,"[object ArrayBuffer]"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Ue.inflate(a,r),s===Ne&&n&&(s=Ue.inflateSetDictionary(a,n),s===Fe?s=Ue.inflate(a,r):s===Be&&(s=Ne));a.avail_in>0&&s===Le&&a.state.wrap>0&&0!==t[a.next_in];)Ue.inflateReset(a),s=Ue.inflate(a,r);switch(s){case Ie:case Be:case Ne:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Le))if("string"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Fe||0!==o){if(s===Le)return s=Ue.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Fe&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Ot(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=je,Xe=B;const We=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error("Adding invalid event");const e=this._hasEvents?",":"";this.deflate.push(e+t,Xe.Z_SYNC_FLUSH),this._hasEvents=!0}finish(){if(this.deflate.push("]",Xe.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this._init(),t}_init(){this._hasEvents=!1,this.deflate=new Ye,this.deflate.push("[",Xe.Z_NO_FLUSH)}},qe={clear:()=>{We.clear()},addEvent:t=>We.addEvent(t),finish:()=>We.finish(),compress:t=>function(t){return Ge(t)}(t)};addEventListener("message",(function(t){const e=t.data.method,a=t.data.id,i=t.data.arg;if(e in qe&&"function"==typeof qe[e])try{const t=qe[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:"init",success:!0,response:void 0});`;function dl(){const t=new Blob([ul]);return URL.createObjectURL(t)}function Rr(t){return t>9999999999?t:t*1e3}class oa{constructor(){this.events=[]}get hasEvents(){return this.events.length>0}get type(){return"sync"}destroy(){this.events=[]}async addEvent(e){this.events.push(e)}finish(){return new Promise(e=>{const n=this.events;this.events=[],e(JSON.stringify(n))})}clear(){this.events=[]}getEarliestTimestamp(){const e=this.events.map(n=>n.timestamp).sort()[0];return e?Rr(e):null}}class ll{constructor(e){this._worker=e,this._id=0}ensureReady(){return this._ensureReadyPromise?this._ensureReadyPromise:(this._ensureReadyPromise=new Promise((e,n)=>{this._worker.addEventListener("message",({data:r})=>{r.success?e():n()},{once:!0}),this._worker.addEventListener("error",r=>{n(r)},{once:!0})}),this._ensureReadyPromise)}destroy(){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Destroying compression worker"),this._worker.terminate()}postMessage(e,n){const r=this._getAndIncrementId();return new Promise((i,s)=>{const a=({data:o})=>{const c=o;if(c.method===e&&c.id===r){if(this._worker.removeEventListener("message",a),!c.success){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("[Replay]",c.response),s(new Error("Error in compression worker"));return}i(c.response)}};this._worker.addEventListener("message",a),this._worker.postMessage({id:r,method:e,arg:n})})}_getAndIncrementId(){return this._id++}}class fl{constructor(e){this._worker=new ll(e),this._earliestTimestamp=null}get hasEvents(){return!!this._earliestTimestamp}get type(){return"worker"}ensureReady(){return this._worker.ensureReady()}destroy(){this._worker.destroy()}addEvent(e){const n=Rr(e.timestamp);return(!this._earliestTimestamp||n<this._earliestTimestamp)&&(this._earliestTimestamp=n),this._sendEventToWorker(e)}finish(){return this._finishRequest()}clear(){this._earliestTimestamp=null,this._worker.postMessage("clear")}getEarliestTimestamp(){return this._earliestTimestamp}_sendEventToWorker(e){return this._worker.postMessage("addEvent",JSON.stringify(e))}async _finishRequest(){const e=await this._worker.postMessage("finish");return this._earliestTimestamp=null,e}}class _l{constructor(e){this._fallback=new oa,this._compression=new fl(e),this._used=this._fallback,this._ensureWorkerIsLoadedPromise=this._ensureWorkerIsLoaded()}get type(){return this._used.type}get hasEvents(){return this._used.hasEvents}destroy(){this._fallback.destroy(),this._compression.destroy()}clear(){return this._used.clear()}getEarliestTimestamp(){return this._used.getEarliestTimestamp()}addEvent(e){return this._used.addEvent(e)}async finish(){return await this.ensureWorkerIsLoaded(),this._used.finish()}ensureWorkerIsLoaded(){return this._ensureWorkerIsLoadedPromise}async _ensureWorkerIsLoaded(){try{await this._compression.ensureReady()}catch(e){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Failed to load the compression worker, falling back to simple buffer");return}await this._switchToCompressionWorker()}async _switchToCompressionWorker(){const{events:e}=this._fallback,n=[];for(const r of e)n.push(this._compression.addEvent(r));this._used=this._compression;try{await Promise.all(n)}catch(r){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("[Replay] Failed to add events when switching buffers.",r)}}}function hl({useCompression:t}){if(t&&window.Worker)try{const e=dl();(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Using compression worker");const n=new Worker(e);return new _l(n)}catch(e){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Failed to create compression worker")}return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Using simple buffer"),new oa}function pl(t){ml(),t.session=void 0}function ml(){if("sessionStorage"in G)try{G.sessionStorage.removeItem(Tr)}catch(e){}}function rr(t,e,n=+new Date){return t===null||e===void 0||e<0?!0:e===0?!1:t+e<=n}function ca(t,e,n=+new Date){return rr(t.started,e.maxSessionLife,n)||rr(t.lastActivity,e.sessionIdleExpire,n)}function ua(t){return t===void 0?!1:Math.random()<t}function kr(t){if("sessionStorage"in G)try{G.sessionStorage.setItem(Tr,JSON.stringify(t))}catch(n){}}function Nr(t){const e=Date.now(),n=t.id||lt(),r=t.started||e,i=t.lastActivity||e,s=t.segmentId||0,a=t.sampled;return{id:n,started:r,lastActivity:i,segmentId:s,sampled:a,shouldRefresh:!0}}function gl(t,e){return ua(t)?"session":e?"buffer":!1}function yl({sessionSampleRate:t,allowBuffering:e,stickySession:n=!1}){const r=gl(t,e),i=Nr({sampled:r});return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Replay] Creating new session: ${i.id}`),n&&kr(i),i}function El(){if(!("sessionStorage"in G))return null;try{const e=G.sessionStorage.getItem(Tr);if(!e)return null;const n=JSON.parse(e);return Nr(n)}catch(e){return null}}function Bn({timeouts:t,currentSession:e,stickySession:n,sessionSampleRate:r,allowBuffering:i}){const s=e||n&&El();if(s)if(ca(s,t))if(s.shouldRefresh)(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Session has expired");else return{type:"new",session:Nr({sampled:!1})};else return{type:"saved",session:s};return{type:"new",session:yl({stickySession:n,sessionSampleRate:r,allowBuffering:i})}}async function Be(t,e,n){if(!t.eventBuffer||t.isPaused()||Rr(e.timestamp)+t.timeouts.sessionIdlePause<Date.now())return null;try{return n&&t.eventBuffer.clear(),await t.eventBuffer.addEvent(e)}catch(i){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error(i),await t.stop("addEvent");const s=g().getClient();s&&s.recordDroppedEvent("internal_sdk_error","replay")}}function _n(t){return!t.type}function ir(t){return t.type==="transaction"}function Sl(t){return t.type==="replay_event"}function da(t){const e=bl();return(n,r)=>{if(!_n(n)&&!ir(n))return;const i=r&&r.statusCode;if(!(e&&(!i||i<200||i>=300))){if(ir(n)&&n.contexts&&n.contexts.trace&&n.contexts.trace.trace_id){t.getContext().traceIds.add(n.contexts.trace.trace_id);return}_n(n)&&(n.event_id&&t.getContext().errorIds.add(n.event_id),t.recordingMode==="buffer"&&n.tags&&n.tags.replayId&&setTimeout(()=>{t.sendBufferedReplayOrFlush()}))}}}function bl(){const t=g().getClient();if(!t)return!1;const e=t.getTransport();return e&&e.send.__sentry__baseTransport__||!1}var hn;(function(t){t[t.Document=0]="Document",t[t.DocumentType=1]="DocumentType",t[t.Element=2]="Element",t[t.Text=3]="Text",t[t.CDATA=4]="CDATA",t[t.Comment=5]="Comment"})(hn||(hn={}));function Gt(t){return{timestamp:Date.now()/1e3,type:"default",...t}}function la(t,e){e.category!=="sentry.transaction"&&(["ui.click","ui.input"].includes(e.category)?t.triggerUserActivity():t.checkAndHandleExpiredSession(),t.addUpdate(()=>(Be(t,{type:L.Custom,timestamp:(e.timestamp||0)*1e3,data:{tag:"breadcrumb",payload:pt(e,10,1e3)}}),e.category==="console")))}const wl=new Set(["id","class","aria-label","role","name","alt","title","data-test-id","data-testid"]);function Tl(t){const e={};for(const n in t)if(wl.has(n)){let r=n;(n==="data-testid"||n==="data-test-id")&&(r="testId"),e[r]=t[n]}return e}const vl=t=>e=>{if(!t.isEnabled())return;const n=Rl(e);n&&la(t,n)};function Rl(t){let e,n;const r=t.name==="click";try{n=r?Nl(t.event):fa(t.event),e=Pt(n,{maxStringLength:200})}catch(s){e="<unknown>"}const i=n&&"__sn"in n&&n.__sn.type===hn.Element?n.__sn:null;return Gt({category:`ui.${t.name}`,message:e,data:i?{nodeId:i.id,node:{id:i.id,tagName:i.tagName,textContent:n?Array.from(n.childNodes).map(s=>"__sn"in s&&s.__sn.type===hn.Text&&s.__sn.textContent).filter(Boolean).map(s=>s.trim()).join(""):"",attributes:Tl(i.attributes)}}:{}})}function fa(t){return Dl(t)?t.target:t}const kl="button,a";function Nl(t){const e=fa(t);return!e||!(e instanceof Element)?e:e.closest(kl)||e}function Dl(t){return!!t.target}function xl(t,e){return t.type||!t.exception||!t.exception.values||!t.exception.values.length?!1:e.originalException&&e.originalException.__rrweb__?!0:t.exception.values.some(n=>!n.stacktrace||!n.stacktrace.frames||!n.stacktrace.frames.length?!1:n.stacktrace.frames.some(r=>r.filename&&r.filename.includes("/rrweb/src/")))}function Il(t,e){return t.recordingMode!=="buffer"||e.message===vr||!e.exception||e.type?!1:ua(t.getOptions().errorSampleRate)}function Ol(t,e=!1){const n=e?da(t):void 0;return(r,i)=>{if(Sl(r))return delete r.breadcrumbs,r;if(!_n(r)&&!ir(r))return r;if(xl(r,i)&&!t.getOptions()._experiments.captureExceptions)return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Ignoring error from rrweb internals",r),null;if((Il(t,r)||t.recordingMode==="session")&&(r.tags={...r.tags,replayId:t.getSessionId()}),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&t.getOptions()._experiments.traceInternals&&_n(r)){const o=Cl(r);Al({message:`Tagging event (${r.event_id}) - ${r.message} - ${o.type}: ${o.value}`})}return n&&n(r,{statusCode:200}),r}}function Al(t){const{category:e,level:n,message:r,...i}=t;hs({category:e||"console",level:n||"debug",message:`[debug]: ${r}`,...i})}function Cl(t){return{type:"Unknown",value:"n/a",...t.exception&&t.exception.values&&t.exception.values[0]}}function Tn(t,e){return e.map(({type:n,start:r,end:i,name:s,data:a})=>Be(t,{type:L.Custom,timestamp:r,data:{tag:"performanceSpan",payload:{op:n,description:s,startTimestamp:r,endTimestamp:i,data:a}}}))}function Ul(t){const{from:e,to:n}=t,r=Date.now()/1e3;return{type:"navigation.push",start:r,end:r,name:n,data:{previous:e}}}function Bl(t){return e=>{if(!t.isEnabled())return;const n=Ul(e);n!==null&&(t.getContext().urls.push(n.name),t.triggerUserActivity(),t.addUpdate(()=>(Tn(t,[n]),!1)))}}function Ll(t,e){return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&t.getOptions()._experiments.traceInternals?!1:Ml(e)}function Ml(t){const e=g().getClient(),n=e&&e.getDsn();return n?t.includes(n.host):!1}function vn(t,e){t.isEnabled()&&e!==null&&(Ll(t,e.name)||t.addUpdate(()=>(Tn(t,[e]),!0)))}function Gl(t){const{startTimestamp:e,endTimestamp:n,fetchData:r,response:i}=t;if(!n)return null;const{method:s,url:a}=r;return{type:"resource.fetch",start:e/1e3,end:n/1e3,name:a,data:{method:s,statusCode:i&&i.status}}}function Pl(t){return e=>{if(!t.isEnabled())return;const n=Gl(e);vn(t,n)}}function Yl(t){const{startTimestamp:e,endTimestamp:n,xhr:r}=t,i=r[Rt];if(!e||!n||!i)return null;const{method:s,url:a,status_code:o}=i;return a===void 0?null:{type:"resource.xhr",name:a,start:e/1e3,end:n/1e3,data:{method:s,statusCode:o}}}function Fl(t){return e=>{if(!t.isEnabled())return;const n=Yl(e);vn(t,n)}}const kt=10,Dr=11,sr=12,wt=13,ar=14,re=15,Et=20,st=21,or=22,ie=23,_a=["true","false","null"];function zl(t,e){if(!e.length)return t;let n=t;const r=e.length-1,i=e[r];n=$l(n,i);for(let s=r;s>=0;s--)switch(e[s]){case kt:n=`${n}}`;break;case Et:n=`${n}]`;break}return n}function $l(t,e){switch(e){case kt:return`${t}"~~":"~~"`;case Dr:return`${t}:"~~"`;case sr:return`${t}~~":"~~"`;case wt:return Wl(t);case ar:return`${t}~~"`;case re:return`${t},"~~":"~~"`;case Et:return`${t}"~~"`;case st:return Hl(t);case or:return`${t}~~"`;case ie:return`${t},"~~"`}return t}function Hl(t){const e=jl(t);if(e>-1){const n=t.slice(e+1);return _a.includes(n.trim())?`${t},"~~"`:`${t.slice(0,e+1)}"~~"`}return t}function jl(t){for(let e=t.length-1;e>=0;e--){const n=t[e];if(n===","||n==="[")return e}return-1}function Wl(t){const e=t.lastIndexOf(":"),n=t.slice(e+1);return _a.includes(n.trim())?`${t},"~~":"~~"`:`${t.slice(0,e+1)}"~~"`}function ql(t){const e=[];for(let n=0;n<t.length;n++)Zl(e,t,n);return e}function Zl(t,e,n){const r=t[t.length-1],i=e[n];if(!/\s/.test(i)){if(i==='"'&&!ha(e,n)){Vl(t,r);return}switch(i){case"{":Xl(t,r);break;case"[":Kl(t,r);break;case":":Jl(t,r);break;case",":Ql(t,r);break;case"}":tf(t,r);break;case"]":ef(t,r);break}}}function Vl(t,e){if(e===ar){t.pop(),t.push(re);return}if(e===or){t.pop(),t.push(ie);return}if(e===wt){t.push(ar);return}if(e===st){t.push(or);return}if(e===kt){t.push(sr);return}if(e===sr){t.pop(),t.push(Dr);return}}function Xl(t,e){if(!e){t.push(kt);return}if(e===wt){t.push(kt);return}if(e===st&&t.push(kt),e===Et){t.push(kt);return}}function Kl(t,e){if(!e){t.push(Et),t.push(st);return}if(e===wt){t.push(Et),t.push(st);return}if(e===st&&(t.push(Et),t.push(st)),e===Et){t.push(Et),t.push(st);return}}function Jl(t,e){e===Dr&&(t.pop(),t.push(wt))}function Ql(t,e){if(e===wt){t.pop();return}if(e===re){t.pop(),t.pop();return}if(e!==st&&e===ie){t.pop();return}}function tf(t,e){e===kt&&t.pop(),e===wt&&(t.pop(),t.pop()),e===re&&(t.pop(),t.pop(),t.pop()),t[t.length-1]===wt&&t.push(re),t[t.length-1]===st&&t.push(ie)}function ef(t,e){e===Et&&t.pop(),e===st&&(t.pop(),t.pop()),e===ie&&(t.pop(),t.pop(),t.pop()),t[t.length-1]===wt&&t.push(re),t[t.length-1]===st&&t.push(ie)}function ha(t,e){return t[e-1]==="\\"&&!ha(t,e-1)}function pa(t){const e=ql(t);return zl(t,e)}function pn(t,e){if(t)try{if(typeof t=="string")return e.encode(t).length;if(t instanceof URLSearchParams)return e.encode(t.toString()).length;if(t instanceof FormData){const n=Ea(t);return e.encode(n).length}if(t instanceof Blob)return t.size;if(t instanceof ArrayBuffer)return t.byteLength}catch(n){}}function ma(t){if(!t)return;const e=parseInt(t,10);return isNaN(e)?void 0:e}function ga(t){if(typeof t=="string")return t;if(t instanceof URLSearchParams)return t.toString();if(t instanceof FormData)return Ea(t)}function ya(t,e){if(!e)return null;const{startTimestamp:n,endTimestamp:r,url:i,method:s,statusCode:a,request:o,response:c}=e;return{type:t,start:n/1e3,end:r/1e3,name:i,data:ut({method:s,statusCode:a,request:o,response:c})}}function De(t){return{headers:{},size:t,_meta:{warnings:["URL_SKIPPED"]}}}function Nt(t,e,n){if(!e&&Object.keys(t).length===0)return;if(!e)return{headers:t};if(!n)return{headers:t,size:e};const r={headers:t,size:e},{body:i,warnings:s}=nf(n);return r.body=i,s.length>0&&(r._meta={warnings:s}),r}function cr(t,e){return Object.keys(t).reduce((n,r)=>{const i=r.toLowerCase();return e.includes(i)&&t[r]&&(n[i]=t[r]),n},{})}function Ea(t){return new URLSearchParams(t).toString()}function nf(t){if(!t||typeof t!="string")return{body:t,warnings:[]};const e=t.length>je;if(rf(t))try{const n=e?pa(t.slice(0,je)):t;return{body:JSON.parse(n),warnings:e?["JSON_TRUNCATED"]:[]}}catch(n){return{body:e?`${t.slice(0,je)}…`:t,warnings:e?["INVALID_JSON","TEXT_TRUNCATED"]:["INVALID_JSON"]}}return{body:e?`${t.slice(0,je)}…`:t,warnings:e?["TEXT_TRUNCATED"]:[]}}function rf(t){const e=t[0],n=t[t.length-1];return e==="["&&n==="]"||e==="{"&&n==="}"}function Sa(t,e){return ue(t,e)}async function sf(t,e,n){try{const r=await of(t,e,n),i=ya("resource.fetch",r);vn(n.replay,i)}catch(r){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("[Replay] Failed to capture fetch breadcrumb",r)}}function af(t,e,n){const{input:r,response:i}=e,s=ba(r),a=pn(s,n.textEncoder),o=i?ma(i.headers.get("content-length")):void 0;a!==void 0&&(t.data.request_body_size=a),o!==void 0&&(t.data.response_body_size=o)}async function of(t,e,n){const{startTimestamp:r,endTimestamp:i}=e,{url:s,method:a,status_code:o=0,request_body_size:c,response_body_size:u}=t.data,d=Sa(s,n.networkDetailAllowUrls),l=d?cf(n,e.input,c):De(c),h=await uf(d,n,e.response,u);return{startTimestamp:r,endTimestamp:i,url:s,method:a,statusCode:o,request:l,response:h}}function cf({networkCaptureBodies:t,networkRequestHeaders:e},n,r){const i=lf(n,e);if(!t)return Nt(i,r,void 0);const s=ba(n),a=ga(s);return Nt(i,r,a)}async function uf(t,{networkCaptureBodies:e,textEncoder:n,networkResponseHeaders:r},i,s){if(!t&&s!==void 0)return De(s);const a=wa(i.headers,r);if(!e&&s!==void 0)return Nt(a,s,void 0);try{const o=i.clone(),c=await df(o),u=c&&c.length&&s===void 0?pn(c,n):s;return t?e?Nt(a,u,c):Nt(a,u,void 0):De(u)}catch(o){return Nt(a,s,void 0)}}async function df(t){try{return await t.text()}catch(e){return}}function ba(t=[]){if(!(t.length!==2||typeof t[1]!="object"))return t[1].body}function wa(t,e){const n={};return e.forEach(r=>{t.get(r)&&(n[r]=t.get(r))}),n}function lf(t,e){return t.length===1&&typeof t[0]!="string"?wi(t[0],e):t.length===2?wi(t[1],e):{}}function wi(t,e){if(!t)return{};const n=t.headers;return n?n instanceof Headers?wa(n,e):Array.isArray(n)?{}:cr(n,e):{}}async function ff(t,e,n){try{const r=hf(t,e,n),i=ya("resource.xhr",r);vn(n.replay,i)}catch(r){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("[Replay] Failed to capture fetch breadcrumb",r)}}function _f(t,e,n){const{xhr:r,input:i}=e,s=pn(i,n.textEncoder),a=r.getResponseHeader("content-length")?ma(r.getResponseHeader("content-length")):pn(r.response,n.textEncoder);s!==void 0&&(t.data.request_body_size=s),a!==void 0&&(t.data.response_body_size=a)}function hf(t,e,n){const{startTimestamp:r,endTimestamp:i,input:s,xhr:a}=e,{url:o,method:c,status_code:u=0,request_body_size:d,response_body_size:l}=t.data;if(!o)return null;if(!Sa(o,n.networkDetailAllowUrls)){const S=De(d),O=De(l);return{startTimestamp:r,endTimestamp:i,url:o,method:c,statusCode:u,request:S,response:O}}const h=a[Rt],_=h?cr(h.request_headers,n.networkRequestHeaders):{},p=cr(pf(a),n.networkResponseHeaders),w=Nt(_,d,n.networkCaptureBodies?ga(s):void 0),D=Nt(p,l,n.networkCaptureBodies?e.xhr.responseText:void 0);return{startTimestamp:r,endTimestamp:i,url:o,method:c,statusCode:u,request:w,response:D}}function pf(t){const e=t.getAllResponseHeaders();return e?e.split(`\r `).reduce((n,r)=>{const[i,s]=r.split(": ");return n[i.toLowerCase()]=s,n},{}):{}}function mf(t){const e=g().getClient();try{const n=new TextEncoder,{networkDetailAllowUrls:r,networkCaptureBodies:i,networkRequestHeaders:s,networkResponseHeaders:a}=t.getOptions(),o={replay:t,textEncoder:n,networkDetailAllowUrls:r,networkCaptureBodies:i,networkRequestHeaders:s,networkResponseHeaders:a};e&&e.on?e.on("beforeAddBreadcrumb",(c,u)=>gf(o,c,u)):(V("fetch",Pl(t)),V("xhr",Fl(t)))}catch(n){}}function gf(t,e,n){if(e.data)try{yf(e)&&Sf(n)&&(_f(e,n,t),ff(e,n,t)),Ef(e)&&bf(n)&&(af(e,n,t),sf(e,n,t))}catch(r){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Error when enriching network breadcrumb")}}function yf(t){return t.category==="xhr"}function Ef(t){return t.category==="fetch"}function Sf(t){return t&&t.xhr}function bf(t){return t&&t.response}let Ti=null;const wf=t=>e=>{if(!t.isEnabled())return;const n=Tf(e);n&&la(t,n)};function Tf(t){const e=t.getLastBreadcrumb&&t.getLastBreadcrumb();return Ti===e||!e||(Ti=e,e.category&&(["fetch","xhr","sentry.event","sentry.transaction"].includes(e.category)||e.category.startsWith("ui.")))?null:e.category==="console"?vf(e):Gt(e)}function vf(t){const e=t.data&&t.data.arguments;if(!Array.isArray(e)||e.length===0)return Gt(t);let n=!1;const r=e.map(i=>{if(!i)return i;if(typeof i=="string")return i.length>We?(n=!0,`${i.slice(0,We)}…`):i;if(typeof i=="object")try{const s=pt(i,7),a=JSON.stringify(s);if(a.length>We){const o=pa(a.slice(0,We)),c=JSON.parse(o);return n=!0,c}return s}catch(s){}return i});return Gt({...t,data:{...t.data,arguments:r,...n?{_meta:{warnings:["CONSOLE_ARG_TRUNCATED"]}}:{}}})}function Rf(t){const e=g().getScope(),n=g().getClient();e&&e.addScopeListener(wf(t)),V("dom",vl(t)),V("history",Bl(t)),mf(t),Ae(Ol(t,!vi(n))),vi(n)&&(n.on("afterSendEvent",da(t)),n.on("createDsc",r=>{const i=t.getSessionId();i&&t.isEnabled()&&t.recordingMode==="session"&&(r.replay_id=i)}))}function vi(t){return!!(t&&t.on)}async function kf(t){try{return Promise.all(Tn(t,[Nf(G.performance.memory)]))}catch(e){return[]}}function Nf(t){const{jsHeapSizeLimit:e,totalJSHeapSize:n,usedJSHeapSize:r}=t,i=Date.now()/1e3;return{type:"memory",name:"memory",start:i,end:i,data:{memory:{jsHeapSizeLimit:e,totalJSHeapSize:n,usedJSHeapSize:r}}}}const Ri={resource:Af,paint:If,navigation:Of,["largest-contentful-paint"]:Cf};function Df(t){return t.map(xf).filter(Boolean)}function xf(t){return Ri[t.entryType]===void 0?null:Ri[t.entryType](t)}function se(t){return((bt||G.performance.timeOrigin)+t)/1e3}function If(t){const{duration:e,entryType:n,name:r,startTime:i}=t,s=se(i);return{type:n,name:r,start:s,end:s+e,data:void 0}}function Of(t){const{entryType:e,name:n,decodedBodySize:r,duration:i,domComplete:s,encodedBodySize:a,domContentLoadedEventStart:o,domContentLoadedEventEnd:c,domInteractive:u,loadEventStart:d,loadEventEnd:l,redirectCount:h,startTime:_,transferSize:p,type:w}=t;return i===0?null:{type:`${e}.${w}`,start:se(_),end:se(s),name:n,data:{size:p,decodedBodySize:r,encodedBodySize:a,duration:i,domInteractive:u,domContentLoadedEventStart:o,domContentLoadedEventEnd:c,loadEventStart:d,loadEventEnd:l,domComplete:s,redirectCount:h}}}function Af(t){const{entryType:e,initiatorType:n,name:r,responseEnd:i,startTime:s,decodedBodySize:a,encodedBodySize:o,responseStatus:c,transferSize:u}=t;return["fetch","xmlhttprequest"].includes(n)?null:{type:`${e}.${n}`,start:se(s),end:se(i),name:r,data:{size:u,statusCode:c,decodedBodySize:a,encodedBodySize:o}}}function Cf(t){const{entryType:e,startTime:n,size:r}=t;let i=0;if(G.performance){const o=G.performance.getEntriesByType("navigation")[0];i=o&&o.activationStart||0}const s=Math.max(n-i,0),a=se(i)+s/1e3;return{type:e,name:e,start:a,end:a,data:{value:s,size:r,nodeId:jt.mirror.getId(t.element)}}}function Uf(t,e,n){let r,i,s;const a=n&&n.maxWait?Math.max(n.maxWait,e):0;function o(){return c(),r=t(),r}function c(){i!==void 0&&clearTimeout(i),s!==void 0&&clearTimeout(s),i=s=void 0}function u(){return i!==void 0||s!==void 0?o():r}function d(){return i&&clearTimeout(i),i=setTimeout(o,e),a&&s===void 0&&(s=setTimeout(o,a)),r}return d.cancel=c,d.flush=u,d}var ur;(function(t){t[t.DomContentLoaded=0]="DomContentLoaded";const n=1;t[t.Load=n]="Load";const r=2;t[t.FullSnapshot=r]="FullSnapshot";const i=3;t[t.IncrementalSnapshot=i]="IncrementalSnapshot";const s=4;t[t.Meta=s]="Meta";const a=5;t[t.Custom=a]="Custom";const o=6;t[t.Plugin=o]="Plugin"})(ur||(ur={}));function Bf(t){let e=!1;return(n,r)=>{if(!t.checkAndHandleExpiredSession()){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("[Replay] Received replay event after session expired.");return}const i=r||!e;e=!0,t.addUpdate(()=>{if(t.recordingMode==="buffer"&&i&&t.setInitialState(),Be(t,n,i),!i)return!1;if(Mf(t,i),t.session&&t.session.previousSessionId)return!0;if(t.recordingMode==="buffer"&&t.session&&t.eventBuffer){const s=t.eventBuffer.getEarliestTimestamp();s&&(t.session.started=s,t.getOptions().stickySession&&kr(t.session))}return t.recordingMode==="session"&&t.flushImmediate(),!0})}}function Lf(t){const e=t.getOptions();return{type:ur.Custom,timestamp:Date.now(),data:{tag:"options",payload:{sessionSampleRate:e.sessionSampleRate,errorSampleRate:e.errorSampleRate,useCompressionOption:e.useCompression,blockAllMedia:e.blockAllMedia,maskAllText:e.maskAllText,maskAllInputs:e.maskAllInputs,useCompression:t.eventBuffer?t.eventBuffer.type==="worker":!1,networkDetailHasUrls:e.networkDetailAllowUrls.length>0,networkCaptureBodies:e.networkCaptureBodies,networkRequestHasHeaders:e.networkRequestHeaders.length>0,networkResponseHasHeaders:e.networkResponseHeaders.length>0}}}}function Mf(t,e){return!e||!t.session||t.session.segmentId!==0?Promise.resolve(null):Be(t,Lf(t),!1)}function Gf(t,e,n,r){return Wt(is(t,gr(t),r,n),[[{type:"replay_event"},t],[{type:"replay_recording",length:typeof e=="string"?new TextEncoder().encode(e).length:e.length},e]])}function Pf({recordingData:t,headers:e}){let n;const r=`${JSON.stringify(e)} `;if(typeof t=="string")n=`${r}${t}`;else{const s=new TextEncoder().encode(r);n=new Uint8Array(s.length+t.length),n.set(s),n.set(t,s.length)}return n}async function Yf({client:t,scope:e,replayId:n,event:r}){const i=typeof t._integrations=="object"&&t._integrations!==null&&!Array.isArray(t._integrations)?Object.keys(t._integrations):void 0,s=await Ss(t.getOptions(),r,{event_id:n,integrations:i},e);if(!s)return null;s.platform=s.platform||"javascript";const a=t.getSdkMetadata&&t.getSdkMetadata(),{name:o,version:c}=a&&a.sdk||{};return s.sdk={...s.sdk,name:o||"sentry.javascript.unknown",version:c||"0.0.0"},s}async function Ff({recordingData:t,replayId:e,segmentId:n,eventContext:r,timestamp:i,session:s}){const a=Pf({recordingData:t,headers:{segment_id:n}}),{urls:o,errorIds:c,traceIds:u,initialTimestamp:d}=r,l=g(),h=l.getClient(),_=l.getScope(),p=h&&h.getTransport(),w=h&&h.getDsn();if(!h||!_||!p||!w||!s.sampled)return;const D={type:td,replay_start_timestamp:d/1e3,timestamp:i/1e3,error_ids:c,trace_ids:u,urls:o,replay_id:e,segment_id:n,replay_type:s.sampled},S=await Yf({scope:_,client:h,replayId:e,event:D});if(!S){h.recordDroppedEvent("event_processor","replay",D),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("An event processor returned `null`, will not send event.");return}const O=Gf(S,a,w,h.getOptions().tunnel);let x;try{x=await p.send(O)}catch(v){const b=new Error(vr);try{b.cause=v}catch(N){}throw b}if(!x)return x;if(typeof x.statusCode=="number"&&(x.statusCode<200||x.statusCode>=300))throw new Ta(x.statusCode);return x}class Ta extends Error{constructor(e){super(`Transport returned status code ${e}`)}}async function va(t,e={count:0,interval:od}){const{recordingData:n,options:r}=t;if(n.length)try{return await Ff(t),!0}catch(i){if(i instanceof Ta)throw i;if(ps("Replays",{_retryCount:e.count}),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&r._experiments&&r._experiments.captureExceptions&&bn(i),e.count>=cd){const s=new Error(`${vr} - max retries exceeded`);try{s.cause=i}catch(a){}throw s}return e.interval*=++e.count,await new Promise((s,a)=>{setTimeout(async()=>{try{await va(t,e),s(!0)}catch(o){a(o)}},e.interval)})}}class F{__init(){this.eventBuffer=null}__init2(){this.performanceEvents=[]}__init3(){this.recordingMode="session"}__init4(){this.timeouts={sessionIdlePause:ed,sessionIdleExpire:nd,maxSessionLife:rd}}__init5(){this._performanceObserver=null}__init6(){this._flushLock=null}__init7(){this._lastActivity=Date.now()}__init8(){this._isEnabled=!1}__init9(){this._isPaused=!1}__init10(){this._hasInitializedCoreListeners=!1}__init11(){this._stopRecording=null}__init12(){this._context={errorIds:new Set,traceIds:new Set,urls:[],initialTimestamp:Date.now(),initialUrl:""}}constructor({options:e,recordingOptions:n}){F.prototype.__init.call(this),F.prototype.__init2.call(this),F.prototype.__init3.call(this),F.prototype.__init4.call(this),F.prototype.__init5.call(this),F.prototype.__init6.call(this),F.prototype.__init7.call(this),F.prototype.__init8.call(this),F.prototype.__init9.call(this),F.prototype.__init10.call(this),F.prototype.__init11.call(this),F.prototype.__init12.call(this),F.prototype.__init13.call(this),F.prototype.__init14.call(this),F.prototype.__init15.call(this),F.prototype.__init16.call(this),F.prototype.__init17.call(this),F.prototype.__init18.call(this),this._recordingOptions=n,this._options=e,this._debouncedFlush=Uf(()=>this._flush(),this._options.flushMinDelay,{maxWait:this._options.flushMaxDelay})}getContext(){return this._context}isEnabled(){return this._isEnabled}isPaused(){return this._isPaused}getOptions(){return this._options}initializeSampling(){const{errorSampleRate:e,sessionSampleRate:n}=this._options;if(!(e<=0&&n<=0||!this._loadAndCheckSession())){if(!this.session){this._handleException(new Error("Unable to initialize and create session"));return}this.session.sampled&&this.session.sampled!=="session"&&(this.recordingMode="buffer"),this._initializeRecording()}}start(){if(this._isEnabled&&this.recordingMode==="session")throw new Error("Replay recording is already in progress");if(this._isEnabled&&this.recordingMode==="buffer")throw new Error("Replay buffering is in progress, call `flush()` to save the replay");const e=this.session&&this.session.id,{session:n}=Bn({timeouts:this.timeouts,stickySession:!!this._options.stickySession,currentSession:this.session,sessionSampleRate:1,allowBuffering:!1});n.previousSessionId=e,this.session=n,this._initializeRecording()}startBuffering(){if(this._isEnabled)throw new Error("Replay recording is already in progress");const e=this.session&&this.session.id,{session:n}=Bn({timeouts:this.timeouts,stickySession:!!this._options.stickySession,currentSession:this.session,sessionSampleRate:0,allowBuffering:!0});n.previousSessionId=e,this.session=n,this.recordingMode="buffer",this._initializeRecording()}startRecording(){try{this._stopRecording=jt({...this._recordingOptions,...this.recordingMode==="buffer"&&{checkoutEveryNms:ad},emit:Bf(this),onMutation:this._onMutationHandler})}catch(e){this._handleException(e)}}stopRecording(){try{return this._stopRecording&&(this._stopRecording(),this._stopRecording=void 0),!0}catch(e){return this._handleException(e),!1}}async stop(e){if(this._isEnabled)try{if(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__){const n=`[Replay] Stopping Replay${e?` triggered by ${e}`:""}`;(this.getOptions()._experiments.traceInternals?console.warn:f.log)(n)}this._isEnabled=!1,this._removeListeners(),this.stopRecording(),this._debouncedFlush.cancel(),await this._flush({force:!0}),this.eventBuffer&&this.eventBuffer.destroy(),this.eventBuffer=null,pl(this)}catch(n){this._handleException(n)}}pause(){this._isPaused=!0,this.stopRecording()}resume(){this._loadAndCheckSession()&&(this._isPaused=!1,this.startRecording())}async sendBufferedReplayOrFlush({continueRecording:e=!0}={}){if(this.recordingMode==="session")return this.flushImmediate();await this.flushImmediate();const n=this.stopRecording();!e||!n||(this.recordingMode="session",this.session&&(this.session.shouldRefresh=!1,this._maybeSaveSession()),this.startRecording())}addUpdate(e){const n=e();this.recordingMode!=="buffer"&&n!==!0&&this._debouncedFlush()}triggerUserActivity(){if(this._updateUserActivity(),!this._stopRecording){if(!this._loadAndCheckSession())return;this.resume();return}this.checkAndHandleExpiredSession(),this._updateSessionActivity()}flushImmediate(){return this._debouncedFlush(),this._debouncedFlush.flush()}getSessionId(){return this.session&&this.session.id}checkAndHandleExpiredSession(){const e=this.getSessionId();if(this._lastActivity&&rr(this._lastActivity,this.timeouts.sessionIdlePause)&&this.session&&this.session.sampled==="session"){this.pause();return}return this._loadAndCheckSession()?e!==this.getSessionId()?(this._triggerFullSnapshot(),!1):!0:void 0}setInitialState(){const e=`${G.location.pathname}${G.location.hash}${G.location.search}`,n=`${G.location.origin}${e}`;this.performanceEvents=[],this._clearContext(),this._context.initialUrl=n,this._context.initialTimestamp=Date.now(),this._context.urls.push(n)}_initializeRecording(){this.setInitialState(),this._updateSessionActivity(),this.eventBuffer=hl({useCompression:this._options.useCompression}),this._removeListeners(),this._addListeners(),this._isEnabled=!0,this.startRecording()}_handleException(e){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("[Replay]",e),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&this._options._experiments&&this._options._experiments.captureExceptions&&bn(e)}_loadAndCheckSession(){const{type:e,session:n}=Bn({timeouts:this.timeouts,stickySession:!!this._options.stickySession,currentSession:this.session,sessionSampleRate:this._options.sessionSampleRate,allowBuffering:this._options.errorSampleRate>0});e==="new"&&this.setInitialState();const r=this.getSessionId();return n.id!==r&&(n.previousSessionId=r),this.session=n,this.session.sampled?!0:(this.stop("session unsampled"),!1)}_addListeners(){try{G.document.addEventListener("visibilitychange",this._handleVisibilityChange),G.addEventListener("blur",this._handleWindowBlur),G.addEventListener("focus",this._handleWindowFocus),G.addEventListener("keydown",this._handleKeyboardEvent),this._hasInitializedCoreListeners||(Rf(this),this._hasInitializedCoreListeners=!0)}catch(e){this._handleException(e)}"PerformanceObserver"in G&&(this._performanceObserver=cl(this))}_removeListeners(){try{G.document.removeEventListener("visibilitychange",this._handleVisibilityChange),G.removeEventListener("blur",this._handleWindowBlur),G.removeEventListener("focus",this._handleWindowFocus),G.removeEventListener("keydown",this._handleKeyboardEvent),this._performanceObserver&&(this._performanceObserver.disconnect(),this._performanceObserver=null)}catch(e){this._handleException(e)}}__init13(){this._handleVisibilityChange=()=>{G.document.visibilityState==="visible"?this._doChangeToForegroundTasks():this._doChangeToBackgroundTasks()}}__init14(){this._handleWindowBlur=()=>{const e=Gt({category:"ui.blur"});this._doChangeToBackgroundTasks(e)}}__init15(){this._handleWindowFocus=()=>{const e=Gt({category:"ui.focus"});this._doChangeToForegroundTasks(e)}}__init16(){this._handleKeyboardEvent=()=>{this.triggerUserActivity()}}_doChangeToBackgroundTasks(e){if(!this.session)return;const n=ca(this.session,this.timeouts);e&&!n&&this._createCustomBreadcrumb(e),this._conditionalFlush()}_doChangeToForegroundTasks(e){if(!this.session)return;if(!this.checkAndHandleExpiredSession()){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Document has become active, but session has expired");return}e&&this._createCustomBreadcrumb(e)}_triggerFullSnapshot(e=!0){try{(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Replay] Taking full rrweb snapshot"),jt.takeFullSnapshot(e)}catch(n){this._handleException(n)}}_updateUserActivity(e=Date.now()){this._lastActivity=e}_updateSessionActivity(e=Date.now()){this.session&&(this.session.lastActivity=e,this._maybeSaveSession())}_createCustomBreadcrumb(e){this.addUpdate(()=>{Be(this,{type:L.Custom,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e}})})}_addPerformanceEntries(){const e=[...this.performanceEvents];return this.performanceEvents=[],Promise.all(Tn(this,Df(e)))}_conditionalFlush(){this.recordingMode!=="buffer"&&this.flushImmediate()}_clearContext(){this._context.errorIds.clear(),this._context.traceIds.clear(),this._context.urls=[]}_updateInitialTimestampFromEventBuffer(){const{session:e,eventBuffer:n}=this;if(!e||!n||e.segmentId)return;const r=n.getEarliestTimestamp();r&&r<this._context.initialTimestamp&&(this._context.initialTimestamp=r)}_popEventContext(){const e={initialTimestamp:this._context.initialTimestamp,initialUrl:this._context.initialUrl,errorIds:Array.from(this._context.errorIds),traceIds:Array.from(this._context.traceIds),urls:this._context.urls};return this._clearContext(),e}async _runFlush(){if(!this.session||!this.eventBuffer){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("[Replay] No session or eventBuffer found to flush.");return}if(await this._addPerformanceEntries(),!(!this.eventBuffer||!this.eventBuffer.hasEvents)&&(await kf(this),!!this.eventBuffer))try{this._updateInitialTimestampFromEventBuffer();const e=await this.eventBuffer.finish(),n=this.session.id,r=this._popEventContext(),i=this.session.segmentId++;this._maybeSaveSession(),await va({replayId:n,recordingData:e,segmentId:i,eventContext:r,session:this.session,options:this.getOptions(),timestamp:Date.now()})}catch(e){this._handleException(e),this.stop("sendReplay");const n=g().getClient();n&&n.recordDroppedEvent("send_error","replay")}}__init17(){this._flush=async({force:e=!1}={})=>{if(!(!this._isEnabled&&!e)){if(!this.checkAndHandleExpiredSession()){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("[Replay] Attempting to finish replay event after session expired.");return}if(!this.session){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error("[Replay] No session found to flush.");return}if(this._debouncedFlush.cancel(),!this._flushLock){this._flushLock=this._runFlush(),await this._flushLock,this._flushLock=null;return}try{await this._flushLock}catch(n){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.error(n)}finally{this._debouncedFlush()}}}}_maybeSaveSession(){this.session&&this._options.stickySession&&kr(this.session)}__init18(){this._onMutationHandler=e=>{const n=e.length,r=this._options._experiments.mutationLimit||0,i=this._options._experiments.mutationBreadcrumbLimit||1e3,s=r&&n>r;if(n>i||s){const a=Gt({category:"replay.mutations",data:{count:n}});this._createCustomBreadcrumb(a)}return s?(this._triggerFullSnapshot(!1),!1):!0}}}function pe(t,e,n,r){const i=typeof r=="string"?r.split(","):[],s=[...t,...i,...e];return typeof n<"u"&&(typeof n=="string"&&s.push(`.${n}`),console.warn("[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.")),s.join(",")}function zf({mask:t,unmask:e,block:n,unblock:r,ignore:i,blockClass:s,blockSelector:a,maskTextClass:o,maskTextSelector:c,ignoreClass:u}){const d=['base[href="/"]'],l=pe(t,[".sentry-mask","[data-sentry-mask]"],o,c),h=pe(e,[".sentry-unmask","[data-sentry-unmask]"]),_={maskTextSelector:l,unmaskTextSelector:h,maskInputSelector:l,unmaskInputSelector:h,blockSelector:pe(n,[".sentry-block","[data-sentry-block]",...d],s,a),unblockSelector:pe(r,[".sentry-unblock","[data-sentry-unblock]"]),ignoreSelector:pe(i,[".sentry-ignore","[data-sentry-ignore]",'input[type="file"]'],u)};return s instanceof RegExp&&(_.blockClass=s),o instanceof RegExp&&(_.maskTextClass=o),_}function ki(){return typeof window<"u"&&(!Qi()||$f())}function $f(){return typeof process<"u"&&process.type==="renderer"}const Ni='img,image,svg,video,object,picture,embed,map,audio,link[rel="icon"],link[rel="apple-touch-icon"]',Hf=["content-length","content-type","accept"];let Di=!1;class xe{static __initStatic(){this.id="Replay"}__init(){this.name=xe.id}constructor({flushMinDelay:e=id,flushMaxDelay:n=sd,stickySession:r=!0,useCompression:i=!0,_experiments:s={},sessionSampleRate:a,errorSampleRate:o,maskAllText:c=!0,maskAllInputs:u=!0,blockAllMedia:d=!0,networkDetailAllowUrls:l=[],networkCaptureBodies:h=!0,networkRequestHeaders:_=[],networkResponseHeaders:p=[],mask:w=[],unmask:D=[],block:S=[],unblock:O=[],ignore:x=[],maskFn:v,blockClass:b,blockSelector:N,maskInputOptions:T,maskTextClass:E,maskTextSelector:U,ignoreClass:I}={}){if(xe.prototype.__init.call(this),this._recordingOptions={maskAllInputs:u,maskAllText:c,maskInputOptions:{...T||{},password:!0},maskTextFn:v,maskInputFn:v,...zf({mask:w,unmask:D,block:S,unblock:O,ignore:x,blockClass:b,blockSelector:N,maskTextClass:E,maskTextSelector:U,ignoreClass:I}),slimDOMOptions:"all",inlineStylesheet:!0,inlineImages:!1,collectFonts:!0},this._initialOptions={flushMinDelay:e,flushMaxDelay:n,stickySession:r,sessionSampleRate:a,errorSampleRate:o,useCompression:i,blockAllMedia:d,maskAllInputs:u,maskAllText:c,networkDetailAllowUrls:l,networkCaptureBodies:h,networkRequestHeaders:xi(_),networkResponseHeaders:xi(p),_experiments:s},typeof a=="number"&&(console.warn(`[Replay] You are passing \`sessionSampleRate\` to the Replay integration. This option is deprecated and will be removed soon. Instead, configure \`replaysSessionSampleRate\` directly in the SDK init options, e.g.: Sentry.init({ replaysSessionSampleRate: ${a} })`),this._initialOptions.sessionSampleRate=a),typeof o=="number"&&(console.warn(`[Replay] You are passing \`errorSampleRate\` to the Replay integration. This option is deprecated and will be removed soon. Instead, configure \`replaysOnErrorSampleRate\` directly in the SDK init options, e.g.: Sentry.init({ replaysOnErrorSampleRate: ${o} })`),this._initialOptions.errorSampleRate=o),this._initialOptions.blockAllMedia&&(this._recordingOptions.blockSelector=this._recordingOptions.blockSelector?`${this._recordingOptions.blockSelector},${Ni}`:Ni),this._isInitialized&&ki())throw new Error("Multiple Sentry Session Replay instances are not supported");this._isInitialized=!0}get _isInitialized(){return Di}set _isInitialized(e){Di=e}setupOnce(){ki()&&(this._setup(),setTimeout(()=>this._initialize()))}start(){this._replay&&this._replay.start()}startBuffering(){this._replay&&this._replay.startBuffering()}stop(){return this._replay?this._replay.stop():Promise.resolve()}flush(e){return!this._replay||!this._replay.isEnabled()?Promise.resolve():this._replay.sendBufferedReplayOrFlush(e)}getReplayId(){if(!(!this._replay||!this._replay.isEnabled()))return this._replay.getSessionId()}_initialize(){this._replay&&this._replay.initializeSampling()}_setup(){const e=jf(this._initialOptions);this._replay=new F({options:e,recordingOptions:this._recordingOptions})}}xe.__initStatic();function jf(t){const e=g().getClient(),n=e&&e.getOptions(),r={sessionSampleRate:0,errorSampleRate:0,...ut(t)};return n?(t.sessionSampleRate==null&&t.errorSampleRate==null&&n.replaysSessionSampleRate==null&&n.replaysOnErrorSampleRate==null&&console.warn("Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set."),typeof n.replaysSessionSampleRate=="number"&&(r.sessionSampleRate=n.replaysSessionSampleRate),typeof n.replaysOnErrorSampleRate=="number"&&(r.errorSampleRate=n.replaysOnErrorSampleRate),r):(console.warn("SDK client is not available."),r)}function xi(t){return[...Hf,...t.map(e=>e.toLowerCase())]}const C=nt;function Wf(){C&&C.document?C.document.addEventListener("visibilitychange",()=>{const t=le();if(C.document.hidden&&t){const e="cancelled";(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Transaction: ${e} -> since tab moved to the background, op: ${t.op}`),t.status||t.setStatus(e),t.setTag("visibilitychange","document.hidden"),t.finish()}}):(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("[Tracing] Could not set up background tab detection due to lack of global document")}const xr=(t,e,n)=>{let r,i;return s=>{e.value>=0&&(s||n)&&(i=e.value-(r||0),(i||r===void 0)&&(r=e.value,e.delta=i,t(e)))}},qf=()=>`v3-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`,Zf=()=>{const t=C.performance.timing,e=C.performance.navigation.type,n={entryType:"navigation",startTime:0,type:e==2?"back_forward":e===1?"reload":"navigate"};for(const r in t)r!=="navigationStart"&&r!=="toJSON"&&(n[r]=Math.max(t[r]-t.navigationStart,0));return n},Ra=()=>C.__WEB_VITALS_POLYFILL__?C.performance&&(performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]||Zf()):C.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0],ka=()=>{const t=Ra();return t&&t.activationStart||0},Ir=(t,e)=>{const n=Ra();let r="navigate";return n&&(C.document.prerendering||ka()>0?r="prerender":r=n.type.replace(/_/g,"-")),{name:t,value:typeof e>"u"?-1:e,rating:"good",delta:0,entries:[],id:qf(),navigationType:r}},Le=(t,e,n)=>{try{if(PerformanceObserver.supportedEntryTypes.includes(t)){const r=new PerformanceObserver(i=>{e(i.getEntries())});return r.observe(Object.assign({type:t,buffered:!0},n||{})),r}}catch(r){}},Rn=(t,e)=>{const n=r=>{(r.type==="pagehide"||C.document.visibilityState==="hidden")&&(t(r),e&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},Vf=t=>{const e=Ir("CLS",0);let n,r=0,i=[];const s=o=>{o.forEach(c=>{if(!c.hadRecentInput){const u=i[0],d=i[i.length-1];r&&i.length!==0&&c.startTime-d.startTime<1e3&&c.startTime-u.startTime<5e3?(r+=c.value,i.push(c)):(r=c.value,i=[c]),r>e.value&&(e.value=r,e.entries=i,n&&n())}})},a=Le("layout-shift",s);if(a){n=xr(t,e);const o=()=>{s(a.takeRecords()),n(!0)};return Rn(o),o}};let nn=-1;const Xf=()=>C.document.visibilityState==="hidden"&&!C.document.prerendering?0:1/0,Kf=()=>{Rn(({timeStamp:t})=>{nn=t},!0)},Or=()=>(nn<0&&(nn=Xf(),Kf()),{get firstHiddenTime(){return nn}}),Jf=t=>{const e=Or(),n=Ir("FID");let r;const i=o=>{o.startTime<e.firstHiddenTime&&(n.value=o.processingStart-o.startTime,n.entries.push(o),r(!0))},s=o=>{o.forEach(i)},a=Le("first-input",s);r=xr(t,n),a&&Rn(()=>{s(a.takeRecords()),a.disconnect()},!0)},Ii={},Qf=t=>{const e=Or(),n=Ir("LCP");let r;const i=a=>{const o=a[a.length-1];if(o){const c=Math.max(o.startTime-ka(),0);c<e.firstHiddenTime&&(n.value=c,n.entries=[o],r())}},s=Le("largest-contentful-paint",i);if(s){r=xr(t,n);const a=()=>{Ii[n.id]||(i(s.takeRecords()),s.disconnect(),Ii[n.id]=!0,r(!0))};return["keydown","click"].forEach(o=>{addEventListener(o,a,{once:!0,capture:!0})}),Rn(a,!0),a}};function Ln(t){return typeof t=="number"&&isFinite(t)}function ae(t,{startTimestamp:e,...n}){return e&&t.startTimestamp>e&&(t.startTimestamp=e),t.startChild({startTimestamp:e,...n})}function j(t){return t/1e3}function Na(){return C&&C.addEventListener&&C.performance}let Oi=0,Y={},ht,Te;function t_(){const t=Na();if(t&&bt){t.mark&&C.performance.mark("sentry-tracing-init"),s_();const e=r_(),n=i_();return()=>{e&&e(),n&&n()}}return()=>{}}function e_(){Le("longtask",e=>{for(const n of e){const r=le();if(!r)return;const i=j(bt+n.startTime),s=j(n.duration);r.startChild({description:"Main UI thread blocked",op:"ui.long-task",startTimestamp:i,endTimestamp:i+s})}})}function n_(){Le("event",e=>{for(const n of e){const r=le();if(!r)return;if(n.name==="click"){const i=j(bt+n.startTime),s=j(n.duration);r.startChild({description:Pt(n.target),op:`ui.interaction.${n.name}`,startTimestamp:i,endTimestamp:i+s})}}},{durationThreshold:0})}function r_(){return Vf(t=>{const e=t.entries.pop();e&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding CLS"),Y.cls={value:t.value,unit:""},Te=e)})}function i_(){return Qf(t=>{const e=t.entries.pop();e&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding LCP"),Y.lcp={value:t.value,unit:"millisecond"},ht=e)})}function s_(){Jf(t=>{const e=t.entries.pop();if(!e)return;const n=j(bt),r=j(e.startTime);(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding FID"),Y.fid={value:t.value,unit:"millisecond"},Y["mark.fid"]={value:n+r,unit:"second"}})}function a_(t){const e=Na();if(!e||!C.performance.getEntries||!bt)return;(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Tracing] Adding & adjusting spans using Performance API");const n=j(bt),r=e.getEntries();let i,s;if(r.slice(Oi).forEach(a=>{const o=j(a.startTime),c=j(a.duration);if(!(t.op==="navigation"&&n+o<t.startTimestamp))switch(a.entryType){case"navigation":{c_(t,a,n),i=n+j(a.responseStart),s=n+j(a.requestStart);break}case"mark":case"paint":case"measure":{o_(t,a,o,c,n);const u=Or(),d=a.startTime<u.firstHiddenTime;a.name==="first-paint"&&d&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding FP"),Y.fp={value:a.startTime,unit:"millisecond"}),a.name==="first-contentful-paint"&&d&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding FCP"),Y.fcp={value:a.startTime,unit:"millisecond"});break}case"resource":{const u=a.name.replace(C.location.origin,"");d_(t,a,u,o,c,n);break}}}),Oi=Math.max(r.length-1,0),l_(t),t.op==="pageload"){typeof i=="number"&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding TTFB"),Y.ttfb={value:(i-t.startTimestamp)*1e3,unit:"millisecond"},typeof s=="number"&&s<=i&&(Y["ttfb.requestTime"]={value:(i-s)*1e3,unit:"millisecond"})),["fcp","fp","lcp"].forEach(o=>{if(!Y[o]||n>=t.startTimestamp)return;const c=Y[o].value,u=n+j(c),d=Math.abs((u-t.startTimestamp)*1e3),l=d-c;(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Measurements] Normalized ${o} from ${c} to ${d} (${l})`),Y[o].value=d});const a=Y["mark.fid"];a&&Y.fid&&(ae(t,{description:"first input delay",endTimestamp:a.value+j(Y.fid.value),op:"ui.action",startTimestamp:a.value}),delete Y["mark.fid"]),"fcp"in Y||delete Y.cls,Object.keys(Y).forEach(o=>{t.setMeasurement(o,Y[o].value,Y[o].unit)}),f_(t)}ht=void 0,Te=void 0,Y={}}function o_(t,e,n,r,i){const s=i+n,a=s+r;return ae(t,{description:e.name,endTimestamp:a,op:e.entryType,startTimestamp:s}),s}function c_(t,e,n){["unloadEvent","redirect","domContentLoadedEvent","loadEvent","connect"].forEach(r=>{Xe(t,e,r,n)}),Xe(t,e,"secureConnection",n,"TLS/SSL","connectEnd"),Xe(t,e,"fetch",n,"cache","domainLookupStart"),Xe(t,e,"domainLookup",n,"DNS"),u_(t,e,n)}function Xe(t,e,n,r,i,s){const a=s?e[s]:e[`${n}End`],o=e[`${n}Start`];!o||!a||ae(t,{op:"browser",description:i||n,startTimestamp:r+j(o),endTimestamp:r+j(a)})}function u_(t,e,n){ae(t,{op:"browser",description:"request",startTimestamp:n+j(e.requestStart),endTimestamp:n+j(e.responseEnd)}),ae(t,{op:"browser",description:"response",startTimestamp:n+j(e.responseStart),endTimestamp:n+j(e.responseEnd)})}function d_(t,e,n,r,i,s){if(e.initiatorType==="xmlhttprequest"||e.initiatorType==="fetch")return;const a={};"transferSize"in e&&(a["http.response_transfer_size"]=e.transferSize),"encodedBodySize"in e&&(a["http.response_content_length"]=e.encodedBodySize),"decodedBodySize"in e&&(a["http.decoded_response_content_length"]=e.decodedBodySize),"renderBlockingStatus"in e&&(a["resource.render_blocking_status"]=e.renderBlockingStatus);const o=s+r,c=o+i;ae(t,{description:n,endTimestamp:c,op:e.initiatorType?`resource.${e.initiatorType}`:"resource.other",startTimestamp:o,data:a})}function l_(t){const e=C.navigator;if(!e)return;const n=e.connection;n&&(n.effectiveType&&t.setTag("effectiveConnectionType",n.effectiveType),n.type&&t.setTag("connectionType",n.type),Ln(n.rtt)&&(Y["connection.rtt"]={value:n.rtt,unit:"millisecond"})),Ln(e.deviceMemory)&&t.setTag("deviceMemory",`${e.deviceMemory} GB`),Ln(e.hardwareConcurrency)&&t.setTag("hardwareConcurrency",String(e.hardwareConcurrency))}function f_(t){ht&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding LCP Data"),ht.element&&t.setTag("lcp.element",Pt(ht.element)),ht.id&&t.setTag("lcp.id",ht.id),ht.url&&t.setTag("lcp.url",ht.url.trim().slice(0,200)),t.setTag("lcp.size",ht.size)),Te&&Te.sources&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Measurements] Adding CLS Data"),Te.sources.forEach((e,n)=>t.setTag(`cls.source.${n+1}`,Pt(e.node))))}const dr=["localhost",/^\//],mn={traceFetch:!0,traceXHR:!0,tracingOrigins:dr,tracePropagationTargets:dr};function Da(t){const{traceFetch:e,traceXHR:n,tracePropagationTargets:r,tracingOrigins:i,shouldCreateSpanForRequest:s}={traceFetch:mn.traceFetch,traceXHR:mn.traceXHR,...t},a=typeof s=="function"?s:u=>!0,o=u=>__(u,r||i),c={};e&&V("fetch",u=>{h_(u,a,o,c)}),n&&V("xhr",u=>{m_(u,a,o,c)})}function __(t,e){return ue(t,e||dr)}function h_(t,e,n,r){if(!Er()||!(t.fetchData&&e(t.fetchData.url)))return;if(t.endTimestamp){const c=t.fetchData.__span;if(!c)return;const u=r[c];u&&(t.response?u.setHttpStatus(t.response.status):t.error&&u.setStatus("internal_error"),u.finish(),delete r[c]);return}const i=t.response&&t.response.headers&&t.response.headers.get("content-length"),s=g().getScope(),a=s&&s.getSpan(),o=a&&a.transaction;if(a&&o){const{method:c,url:u}=t.fetchData,d=a.startChild({data:{url:u,type:"fetch",...i?{"http.response_content_length":i}:{},"http.method":c},description:`${c} ${u}`,op:"http.client"});t.fetchData.__span=d.spanId,r[d.spanId]=d;const l=t.args[0];t.args[1]=t.args[1]||{};const h=t.args[1];n(t.fetchData.url)&&(h.headers=p_(l,o.getDynamicSamplingContext(),d,h))}}function p_(t,e,n,r){const i=os(e),s=n.toTraceparent(),a=typeof Request<"u"&&Ut(t,Request)?t.headers:r.headers;if(a)if(typeof Headers<"u"&&Ut(a,Headers)){const o=new Headers(a);return o.append("sentry-trace",s),i&&o.append(jn,i),o}else if(Array.isArray(a)){const o=[...a,["sentry-trace",s]];return i&&o.push([jn,i]),o}else{const o="baggage"in a?a.baggage:void 0,c=[];return Array.isArray(o)?c.push(...o):o&&c.push(o),i&&c.push(i),{...a,"sentry-trace":s,baggage:c.length>0?c.join(","):void 0}}else return{"sentry-trace":s,baggage:i}}function m_(t,e,n,r){const i=t.xhr,s=i&&i[Rt];if(!Er()||i&&i.__sentry_own_request__||!(i&&s&&e(s.url)))return;if(t.endTimestamp){const u=i.__sentry_xhr_span_id__;if(!u)return;const d=r[u];d&&(d.setHttpStatus(s.status_code),d.finish(),delete r[u]);return}const a=g().getScope(),o=a&&a.getSpan(),c=o&&o.transaction;if(o&&c){const u=o.startChild({data:{...s.data,type:"xhr","http.method":s.method,url:s.url},description:`${s.method} ${s.url}`,op:"http.client"});if(i.__sentry_xhr_span_id__=u.spanId,r[i.__sentry_xhr_span_id__]=u,i.setRequestHeader&&n(s.url))try{i.setRequestHeader("sentry-trace",u.toTraceparent());const d=c.getDynamicSamplingContext(),l=os(d);l&&i.setRequestHeader(jn,l)}catch(d){}}}function g_(t,e=!0,n=!0){if(!C||!C.location){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn("Could not initialize routing instrumentation due to invalid location");return}let r=C.location.href,i;e&&(i=t({name:C.location.pathname,startTimestamp:bt?bt/1e3:void 0,op:"pageload",metadata:{source:"url"}})),n&&V("history",({to:s,from:a})=>{if(a===void 0&&r&&r.indexOf(s)!==-1){r=void 0;return}a!==s&&(r=void 0,i&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Finishing current transaction with op: ${i.op}`),i.finish()),i=t({name:C.location.pathname,op:"navigation",metadata:{source:"url"}}))})}const y_="BrowserTracing",E_={...Qe,markBackgroundTransactions:!0,routingInstrumentation:g_,startTransactionOnLocationChange:!0,startTransactionOnPageLoad:!0,enableLongTask:!0,_experiments:{},...mn};class Ar{__init(){this.name=y_}constructor(e){Ar.prototype.__init.call(this),_s(),this.options={...E_,...e},this.options._experiments.enableLongTask!==void 0&&(this.options.enableLongTask=this.options._experiments.enableLongTask),e&&!e.tracePropagationTargets&&e.tracingOrigins&&(this.options.tracePropagationTargets=e.tracingOrigins),this._collectWebVitals=t_(),this.options.enableLongTask&&e_(),this.options._experiments.enableInteractions&&n_()}setupOnce(e,n){this._getCurrentHub=n;const{routingInstrumentation:r,startTransactionOnLocationChange:i,startTransactionOnPageLoad:s,markBackgroundTransactions:a,traceFetch:o,traceXHR:c,tracePropagationTargets:u,shouldCreateSpanForRequest:d,_experiments:l}=this.options;r(h=>{const _=this._createRouteTransaction(h);return this.options._experiments.onStartRouteTransaction&&this.options._experiments.onStartRouteTransaction(_,h,n),_},s,i),a&&Wf(),l.enableInteractions&&this._registerInteractionListener(),Da({traceFetch:o,traceXHR:c,tracePropagationTargets:u,shouldCreateSpanForRequest:d})}_createRouteTransaction(e){if(!this._getCurrentHub){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`[Tracing] Did not create ${e.op} transaction because _getCurrentHub is invalid.`);return}const{beforeNavigate:n,idleTimeout:r,finalTimeout:i,heartbeatInterval:s}=this.options,a=e.op==="pageload",o=a?Ai("sentry-trace"):null,c=a?Ai("baggage"):null,u=o?ns(o):void 0,d=c?$o(c):void 0,l={...e,...u,metadata:{...e.metadata,dynamicSamplingContext:u&&!d?{}:d},trimEnd:!0},h=typeof n=="function"?n(l):l,_=h===void 0?{...l,sampled:!1}:h;_.metadata=_.name!==l.name?{..._.metadata,source:"custom"}:_.metadata,this._latestRouteName=_.name,this._latestRouteSource=_.metadata&&_.metadata.source,_.sampled===!1&&(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Will not send ${_.op} transaction because of beforeNavigate.`),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Tracing] Starting ${_.op} transaction on scope`);const p=this._getCurrentHub(),{location:w}=C,D=Jr(p,_,r,i,!0,{location:w},s);return D.registerBeforeFinishCallback(S=>{this._collectWebVitals(),a_(S)}),D}_registerInteractionListener(){let e;const n=()=>{const{idleTimeout:r,finalTimeout:i,heartbeatInterval:s}=this.options,a="ui.action.click",o=le();if(o&&o.op&&["navigation","pageload"].includes(o.op)){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`[Tracing] Did not create ${a} transaction because a pageload or navigation transaction is in progress.`);return}if(e&&(e.setFinishReason("interactionInterrupted"),e.finish(),e=void 0),!this._getCurrentHub){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`[Tracing] Did not create ${a} transaction because _getCurrentHub is invalid.`);return}if(!this._latestRouteName){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.warn(`[Tracing] Did not create ${a} transaction because _latestRouteName is missing.`);return}const c=this._getCurrentHub(),{location:u}=C,d={name:this._latestRouteName,op:a,trimEnd:!0,metadata:{source:this._latestRouteSource||"url"}};e=Jr(c,d,r,i,!0,{location:u},s)};["click"].forEach(r=>{addEventListener(r,n,{once:!1,capture:!0})})}}function Ai(t){const e=ja(`meta[name=${t}]`);return e?e.getAttribute("content"):null}function Ie(t){return new Promise((e,n)=>{t.oncomplete=t.onsuccess=()=>e(t.result),t.onabort=t.onerror=()=>n(t.error)})}function S_(t,e){const n=indexedDB.open(t);n.onupgradeneeded=()=>n.result.createObjectStore(e);const r=Ie(n);return i=>r.then(s=>i(s.transaction(e,"readwrite").objectStore(e)))}function xa(t){return Ie(t.getAllKeys())}function b_(t,e,n){return t(r=>xa(r).then(i=>{if(!(i.length>=n))return r.put(e,Math.max(...i,0)+1),Ie(r.transaction)}))}function w_(t){return t(e=>xa(e).then(n=>{if(n.length!==0)return Ie(e.get(n[0])).then(r=>(e.delete(n[0]),Ie(e.transaction).then(()=>r)))}))}function T_(t){let e;function n(){return e==null&&(e=S_(t.dbName||"sentry-offline",t.storeName||"queue")),e}return{insert:async r=>{try{const i=await rs(r,t.textEncoder);await b_(n(),i,t.maxQueueSize||30)}catch(i){}},pop:async()=>{try{const r=await w_(n());if(r)return Co(r,t.textEncoder||new TextEncoder,t.textDecoder||new TextDecoder)}catch(r){}}}}function v_(t){return e=>t({...e,createStore:T_})}function R_(t){return v_(Bc(t))}function k_(t){let e=[],n={};return{add(r,i){for(;e.length>=t;){const s=e.shift();s!==void 0&&delete n[s]}n[r]&&this.delete(r),e.push(r),n[r]=i},clear(){n={},e=[]},get(r){return n[r]},size(){return e.length},delete(r){if(!n[r])return!1;delete n[r];for(let i=0;i<e.length;i++)if(e[i]===r){e.splice(i,1);break}return!0}}}const lr=k_(20),Ci=1e6,rn=String(0),N_="main";let Ia="",Oa="",Aa="",fr=y.navigator&&y.navigator.userAgent||"",Ca="";const D_=y.navigator&&y.navigator.language||y.navigator&&y.navigator.languages&&y.navigator.languages[0]||"";function x_(t){return typeof t=="object"&&t!==null&&"getHighEntropyValues"in t}const Ui=y.navigator&&y.navigator.userAgentData;x_(Ui)&&Ui.getHighEntropyValues(["architecture","model","platform","platformVersion","fullVersionList"]).then(t=>{if(Ia=t.platform||"",Aa=t.architecture||"",Ca=t.model||"",Oa=t.platformVersion||"",t.fullVersionList&&t.fullVersionList.length>0){const e=t.fullVersionList[t.fullVersionList.length-1];fr=`${e.brand} ${e.version}`}}).catch(t=>{});function I_(t){return!("thread_metadata"in t)}function O_(t){return I_(t)?M_(t):t}function A_(t){if(!(!t||!t.sdk))return{name:t.sdk.name,version:t.sdk.version}}function C_(t,e){return e&&(t.sdk=t.sdk||{},t.sdk.name=t.sdk.name||e.name||"unknown sdk",t.sdk.version=t.sdk.version||e.version||"unknown sdk version",t.sdk.integrations=[...t.sdk.integrations||[],...e.integrations||[]],t.sdk.packages=[...t.sdk.packages||[],...e.packages||[]]),t}function U_(t,e,n,r){const i=t.sdkProcessingMetadata&&t.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:t.event_id,sent_at:new Date().toISOString(),...e&&{sdk:e},...!!n&&{dsn:ce(r)},...t.type==="transaction"&&i&&{trace:ut({...i})}}}function B_(t){const e=t&&t.contexts&&t.contexts.trace&&t.contexts.trace.trace_id;return typeof e=="string"&&e.length!==32&&(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Profiling] Invalid traceId: ${e} on profiled event`),typeof e!="string"?"":e}function L_(t,e,n,r){if(t.type!=="transaction")throw new TypeError("Profiling events may only be attached to transactions, this should never occur.");const i=t.sdkProcessingMetadata.profile;if(i==null)throw new TypeError(`Cannot construct profiling event envelope without a valid profile. Got ${i} instead.`);if(!i.profile_id)throw new TypeError("Profile is missing profile_id");if(i.samples.length<=1)return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Discarding profile because it contains less than 2 samples"),null;const s=B_(t),a=A_(n);C_(t,n&&n.sdk);const o=U_(t,a,r,e),c=O_(i),u=typeof t.start_timestamp=="number"?t.start_timestamp*1e3:Date.now(),d=typeof t.timestamp=="number"?t.timestamp*1e3:Date.now(),l={event_id:i.profile_id,timestamp:new Date(u).toISOString(),platform:"javascript",version:"1",release:t.release||"",environment:t.environment||En,runtime:{name:"javascript",version:y.navigator.userAgent},os:{name:Ia,version:Oa,build_number:fr},device:{locale:D_,model:Ca,manufacturer:fr,architecture:Aa,is_emulator:!1},profile:c,transactions:[{name:t.transaction||"",id:t.event_id||lt(),trace_id:s,active_thread_id:rn,relative_start_ns:"0",relative_end_ns:((d-u)*1e6).toFixed(0)}]};return Wt(o,[[{type:"profile"},l]])}function M_(t){let e,n=0;const r={samples:[],stacks:[],frames:[],thread_metadata:{[rn]:{name:N_}}};if(!t.samples.length)return r;const i=t.samples[0].timestamp;for(let s=0;s<t.samples.length;s++){const a=t.samples[s];if(a.stackId===void 0){e===void 0&&(e=n,r.stacks[e]=[],n++),r.samples[s]={elapsed_since_start_ns:((a.timestamp-i)*Ci).toFixed(0),stack_id:e,thread_id:rn};continue}let o=t.stacks[a.stackId];const c=[];for(;o;){c.push(o.frameId);const d=t.frames[o.frameId];r.frames[o.frameId]===void 0&&(r.frames[o.frameId]={function:d.name,file:d.resourceId?t.resources[d.resourceId]:void 0,line:d.line,column:d.column}),o=o.parentId===void 0?void 0:t.stacks[o.parentId]}const u={elapsed_since_start_ns:((a.timestamp-i)*Ci).toFixed(0),stack_id:n,thread_id:rn};r.stacks[n]=c,r.samples[s]=u,n++}return r}function G_(t,e){const n=lr.get(t);if(!n){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Couldn't find a transaction event for this profile, dropping it.");return}n.sdkProcessingMetadata=n.sdkProcessingMetadata||{},n.sdkProcessingMetadata&&!n.sdkProcessingMetadata.profile&&(n.sdkProcessingMetadata.profile=e);const i=g().getClient();if(!i){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] getClient did not return a Client, removing profile from event and forwarding to next event processors.");return}const s=i.getDsn();if(!s){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] getDsn did not return a Dsn, removing profile from event and forwarding to next event processors.");return}const a=i.getTransport();if(!a){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] getTransport did not return a Transport, removing profile from event and forwarding to next event processors.");return}(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Preparing envelope and sending a profiling event");const o=L_(n,s);if(lr.delete(t),!o){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Failed to construct envelope");return}(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Envelope constructed, sending it"),a.send(o).then(null,c=>{(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Error while sending event:",c)})}const Bi=3e4;let Li=!1;function P_(t){return typeof t=="function"}function Y_(t){return t?Ua(t):((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Transaction is undefined, skipping profiling"),t)}function Ua(t){const e=y.Profiler;if(!P_(e))return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Profiling is not supported by this browser, Profiler interface missing on window object."),t;if(!t.sampled)return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Transaction is not sampled, skipping profiling"),t;if(Li)return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Profiling has been disabled for the duration of the current user session."),t;const n=g().getClient(),r=n&&n.getOptions(),i=r&&r.profilesSampleRate||0;if(i===void 0)return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Profiling disabled, enable it by setting `profilesSampleRate` option to SDK init call."),t;if(Math.random()>i)return(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Skip profiling transaction due to sampling."),t;const s=10,a=Math.floor(Bi/s);let o;try{o=new e({sampleInterval:s,maxBufferSize:a})}catch(p){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&(f.log("[Profiling] Failed to initialize the Profiling constructor, this is likely due to a missing 'Document-Policy': 'js-profiling' header."),f.log("[Profiling] Disabling profiling for current user session.")),Li=!0}if(!o)return t;(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Profiling] started profiling transaction: ${t.name||t.description}`);const c=lt();let u=null;function d(){if(t&&o){if(u){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] profile for:",t.name||t.description,"already exists, returning early");return}o.stop().then(p=>{if(l&&(y.clearTimeout(l),l=void 0),(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Profiling] stopped profiling of transaction: ${t.name||t.description}`),!p){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log(`[Profiling] profiler returned null profile for: ${t.name||t.description}`,"this may indicate an overlapping transaction or a call to stopProfiling with a profile title that was never started");return}p.samples.length<2||(u={...p,profile_id:c},G_(c,u))}).catch(p=>((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] error while stopping profiler:",p),null))}}let l=y.setTimeout(()=>{(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] max profile duration elapsed, stopping profiling for:",t.name||t.description),d()},Bi);const h=t.finish.bind(t);function _(){return t&&(d(),t.setContext("profile",{profile_id:c})),h()}return t.finish=_,t}function F_(t){return function(n,r){const i=t.call(this,n,r);return i===void 0?((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Transaction is undefined, skipping profiling"),i):Ua(i)}}function z_(){const t=de();if(!t.__SENTRY__){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Can't find main carrier, profiling won't work.");return}if(t.__SENTRY__.extensions=t.__SENTRY__.extensions||{},!t.__SENTRY__.extensions.startTransaction){(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] startTransaction does not exists, profiling will not work. Make sure you import @sentry/tracing package before @sentry/profiling-node as import order matters.");return}(typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] startTransaction exists, patching it with profiling functionality..."),t.__SENTRY__.extensions.startTransaction=F_(t.__SENTRY__.extensions.startTransaction)}class Cr{constructor(){Cr.prototype.__init.call(this)}__init(){this.name="BrowserProfilingIntegration"}setupOnce(e){z_(),e(this.handleGlobalEvent.bind(this))}handleGlobalEvent(e){const n=e.contexts&&e.contexts.profile&&e.contexts.profile.profile_id;return n&&typeof n=="string"&&((typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__)&&f.log("[Profiling] Profiling event found, caching it."),lr.add(n,e)),e}}let Ba={};y.Sentry&&y.Sentry.Integrations&&(Ba=y.Sentry.Integrations);const $_={...Ba,...Zc,...Qu},H_=Object.freeze(Object.defineProperty({__proto__:null,Breadcrumbs:$t,BrowserClient:xs,BrowserProfilingIntegration:Cr,BrowserTracing:Ar,Dedupe:At,FunctionToString:Ft,GlobalHandlers:mt,HttpContext:Ot,Hub:yr,InboundFilters:xt,Integrations:$_,LinkedErrors:It,Replay:xe,SDK_VERSION:Zn,Scope:Dt,TryCatch:Ht,WINDOW:y,addBreadcrumb:hs,addGlobalEventProcessor:Ae,addTracingExtensions:_s,captureEvent:ac,captureException:bn,captureMessage:sc,captureUserFeedback:Ju,chromeStackLineParser:As,close:Vu,configureScope:oc,createTransport:Sr,createUserFeedbackEnvelope:Ds,defaultIntegrations:Hs,defaultRequestInstrumentationOptions:mn,defaultStackLineParsers:Bs,defaultStackParser:Ls,eventFromException:Rs,eventFromMessage:ks,extractTraceparentData:ns,flush:Zu,forceLoad:Wu,geckoStackLineParser:Cs,getActiveTransaction:le,getCurrentHub:g,getHubFromCarrier:cn,init:js,instrumentOutgoingRequests:Da,lastEventId:ju,makeBrowserOfflineTransport:R_,makeFetchTransport:Is,makeMain:Wn,makeMultiplexedTransport:Mc,makeXHRTransport:Os,onLoad:qu,onProfilingStartRouteTransaction:Y_,opera10StackLineParser:Ru,opera11StackLineParser:Du,setContext:ps,setExtra:uc,setExtras:cc,setTag:lc,setTags:dc,setUser:fc,showReportDialog:Hu,spanStatusfromHttpCode:ls,startTransaction:_c,trace:ic,winjsStackLineParser:Us,withScope:ms,wrap:Xu},Symbol.toStringTag,{value:"Module"})),j_="https://75521e9e145e4ede8272f960ecec887b@o23479.ingest.sentry.io/1545626",W_="production";var Ke=[];js({dsn:j_,environment:W_,ignoreErrors:["top.GLOBALS","originalCreateNotification","canvas.contentDocument","MyApp_RemoveAllHighlights","http://tt.epicplay.com","Can't find variable: ZiteReader","jigsaw is not defined","ComboSearch is not defined","http://loading.retry.widdit.com/","atomicFindClose","fb_xd_fragment","bmi_SafeAddOnload","EBCallBackMessageReceived","conduitPage","_tfa is not defined","Can't find variable: _tfa","Can't find variable: iom","iom is not defined","Can't find variable: _vwo_code","_vwo_code is not defined","Can't find variable: msDiscoverChatAvailable","Non-Error promise rejection captured with value:","undefined is not an object (evaluating","missing ) after argument list","null is not an object (evaluating","SecurityError","Failed to load","Failed to fetch","Unable to preload CSS","Load failed","vcmidOfContent is not defined","onGoogleTranslateError","Can't find variable: _AutofillCallbackHandler","Can't find variable: zaloJSV2","Can't find variable: appControl","appControl is not defined","ResizeObserver loop limit exceeded","out of memory","Can't find variable: __firefox__","UET is not defined","pushNotification","Identifier 'VIDEO_PLAYING' has already been declared","NetworkError when attempting to fetch resource.","Firebase SDK","zoid destroyed all components","transaction_id","Notification.requestPermission"],beforeSend(t,e){let n=!1;const r=a([/\/OneSignal\/OneSignal-Website-SDK/i,/C:\//i,/https:\/\/omnisnippet1\.com/i,/https:\/\/www\.googletagmanager\.com\/gtm\.js\?id=GTM-WWQRLLH&l=gtmLayer/i,/uploads\/2319\/websites/i,/i18n\/pixel\/static\/main/i,/assets\/firebase/i]),i=["/inshop/launcher-v2.js","/sdks/OneSignalSDK.js","/sdks/OneSignalPageSDKES6.js","","/gtm.js","/gtag/js","/uwt.js","/scripts/sdk/everflow.js","/js/widget.js"];function s(o){return Object.prototype.toString.call(o)==="[object String]"}function a(o){var c=[];for(let u=0;u<o.length;u++){let d=o[u];s(d)?c.push(d.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):d&&d.source&&c.push(d.source)}return new RegExp(c.join("|"),"i")}if(t&&t.request&&t.request.url&&a([/graph\.facebook\.com/i,/connect\.facebook\.net\/en_US\/all\.js/i,/eatdifferent\.com\.woopra-ns\.com/i,/static\.woopra\.com\/js\/woopra\.js/i,/extensions\//i,/^chrome:\/\//i,/127\.0\.0\.1:4001\/isrunning/i,/webappstoolbarba\.texthelp\.com\//i,/metrics\.itunes\.apple\.com\.edgesuite\.net\//i,/dsw0trk\.com\/scripts\/sdk\/everflow\.js/i,/theme\.js\.download/i,/file:/i,/C:\//i,/sc\-static\.net\/scevent\.min\.js/i,/checkout\.bootstrap\.js/i]).test(t.request.url)||e&&e.originalException&&e.originalException.stack&&a([/\/\/js\.klarna\.com/i,/\<\!DOCTYPE html\>/i]).test(e.originalException.stack))return null;if(e&&e.originalException&&e.originalException.message)if(e.originalException.message in Ke){if(Ke[e.originalException.message]+=1,Ke[e.originalException.message]>5)return null}else Ke[e.originalException.message]=1;if(t&&t.exception&&t.exception.values&&t.exception.values[0]&&t.exception.values[0].stacktrace&&t.exception.values[0].stacktrace.frames&&t.exception.values[0].stacktrace.frames[0]){if(["<anonymous>","undefined"].includes(t.exception.values[0].stacktrace.frames[0].filename))return null;t.exception.values[0].stacktrace.frames.forEach(o=>{(i.includes(o.filename)||r.test(o.filename))&&(n=!0)})}return n?null:t}});window.Sentry=H_;export{q_ as __vite_legacy_guard}; </script> <link rel="preload" as="style" href="https://get-synoshi.com/build/assets/product-7f6b90bd.css" /><link rel="stylesheet" href="https://get-synoshi.com/build/assets/product-7f6b90bd.css" data-navigate-track="reload" /> <link rel="preload" as="style" href="https://get-synoshi.com/build/assets/theme-64d605d0.css" /><link rel="stylesheet" href="https://get-synoshi.com/build/assets/theme-64d605d0.css" data-navigate-track="reload" /> <link rel="preload" as="style" href="https://get-synoshi.com/build/assets/main-baaf6c09.css" /><link rel="stylesheet" href="https://get-synoshi.com/build/assets/main-baaf6c09.css" data-navigate-track="reload" /> <link rel="preload" as="style" href="https://get-synoshi.com/build/assets/_ignore-rtl-build-41783ffe.css" /><link rel="stylesheet" href="https://get-synoshi.com/build/assets/_ignore-rtl-build-41783ffe.css" data-navigate-track="reload" /> <style> [wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] { display: none; } [wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] { display: none; } [wire\:offline][wire\:offline] { display: none; } [wire\:dirty]:not(textarea):not(input):not(select) { display: none; } [x-cloak]:not([x-cloak-pointer-events-none]) { display: none !important; } [x-cloak][x-cloak-pointer-events-none] { pointer-events: none; } </style> <link rel="modulepreload" href="https://get-synoshi.com/build/assets/lazyload-b45a339c.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/will-be-removed-861b7b05.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/jquery-5fc13275.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/intersection-observer-90e9e37b.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/index-9b5fec24.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/_commonjsHelpers-042e6b4d.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/theme-a7886786.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/livewire.esm-0a5f2012.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/bootstrap-265771b1.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/whoops-b9817266.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/normalize-636e2359.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/text-wrapper-04ace8f7.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/track-visited-pages-8c5cc3a9.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/choices-90da538a.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/format-price-5af0b78f.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/product-value-parser-25984bef.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/dynamic-module-import-a60ef581.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/helpers-19863c19.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/debounce-b1b63336.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/preload-helper-6f27e6cf.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/alpine-c3ce3ad7.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/cart-option-a8aecb77.js" /><link rel="modulepreload" href="https://get-synoshi.com/build/assets/product-value-encoder-a50bb29a.js" /><script type="module" src="https://get-synoshi.com/build/assets/lazyload-b45a339c.js" data-navigate-track="reload"></script><script type="module" src="https://get-synoshi.com/build/assets/will-be-removed-861b7b05.js" data-navigate-track="reload"></script><script type="module" src="https://get-synoshi.com/build/assets/theme-a7886786.js" data-navigate-track="reload"></script><script type="module" src="https://get-synoshi.com/build/assets/alpine-c3ce3ad7.js" data-navigate-track="reload"></script> <style> :root { --btn-background-primary: #0084FD; --btn-badge-background: #FFFFFF; } </style> <script> var orbServerData = JSON.parse('{\u0022gtmLayerPage\u0022:\u0022product\u0022,\u0022pageCategory\u0022:\u0022product\u0022,\u0022brand\u0022:\u0022synoshi\u0022,\u0022country\u0022:\u0022SG\u0022,\u0022company\u0022:\u0022Everflow\u0022,\u0022locale\u0022:\u0022en\u0022,\u0022currency\u0022:\u0022GBP\u0022}'); var orbSessionData = JSON.parse('{\u0022uuid\u0022:\u002201938a5a-949b-7ed8-98bd-62bada057b32\u0022,\u0022subid1\u0022:null,\u0022subid2\u0022:null,\u0022subid3\u0022:null,\u0022subid4\u0022:null,\u0022subid5\u0022:null,\u0022utm_campaign\u0022:null,\u0022product_page_version\u0022:\u00221\u0022,\u0022transaction_id\u0022:null,\u0022affiliate_id\u0022:\u0022792\u0022,\u0022offid\u0022:\u002248\u0022,\u0022ttclid\u0022:null}'); orbSessionData = Object.assign({}, orbServerData, orbSessionData); </script> <script> window.gtmLayer = [{ page: orbServerData.gtmLayerPage || null, page_category: orbServerData.pageCategory, subid: window.orbSessionData.subid1, subid_2: window.orbSessionData.subid2, subid_3: window.orbSessionData.subid3, subid_4: window.orbSessionData.subid4, subid_5: window.orbSessionData.subid5, transaction_id: window.orbSessionData.transaction_id, affiliate_id: window.orbSessionData.affiliate_id, }]; </script> <!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window,document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); </script> <script> (function () { const fbGlobalPixel = '903090581609834'; fbq('init', fbGlobalPixel); fbq('trackSingle', fbGlobalPixel, 'PageView'); window.addEventListener("customer-info-form-touched", function () { fbq('trackSingle', fbGlobalPixel, 'InitiateCheckout'); }); })(); </script> <noscript> <img height="1" width="1" alt="" src="https://www.facebook.com/tr?id=903090581609834&ev=PageView&noscript=1"/> </noscript> <script> (function () { const fbBrandPixel = '954964012893111'; fbq('init', fbBrandPixel); fbq('trackSingle', fbBrandPixel, 'PageView'); window.addEventListener("customer-info-form-touched", function () { fbq('trackSingle', fbBrandPixel, 'InitiateCheckout'); }); })(); </script> <noscript> <img height="1" width="1" alt="" src="https://www.facebook.com/tr?id=954964012893111&ev=PageView&noscript=1"/> </noscript> <script> (function () { window.addEventListener("customer-info-form-touched", function () { let data = { brand: 'synoshi', url: 'https://get-synoshi.com/synoshi/product?affiliate_id=792&c=gbp&evf=1&l=en&offid=48&source_id=og-uk&uid=5192&vndr=evf', pixel_type: 'brand' }; fetch('https://get-synoshi.com/send-meta-initiate-checkout-event', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content') }, body: JSON.stringify(data) }).catch((error) => { }); }); })(); </script> <!-- End Facebook Pixel Code --> <script> (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:3346967,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); </script> <script type="text/javascript"> (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "n40m3ci3o9"); </script> <script type="text/javascript"> function getEverflowCookie(name) { let matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } </script> <script type="text/javascript" src="https://www.dsw0trk.com/scripts/sdk/everflow.js"></script> <script type="text/javascript"> if (typeof EF !== 'undefined') { function getEverflowParam(name) { return EF.urlParameter(name) ?? orbSessionData[name] ?? null } EF.click({ offer_id: getEverflowParam('offid'), affiliate_id: getEverflowParam('affiliate_id'), sub1: getEverflowParam('subid'), sub2: getEverflowParam('subid2'), sub3: getEverflowParam('subid3'), sub4: getEverflowParam('subid4'), sub5: getEverflowParam('subid5'), uid: getEverflowParam('uid'), source_id: getEverflowParam('source_id'), parameters: { "ttclid" : getEverflowParam('ttclid'), "cjevent" : getEverflowCookie('cje') ?? null }, }).then(function (transactionId) { // TODO IE doesn't support promises if (!transactionId) { return; } var date = new Date(); date.setTime(date.getTime() + (2880*60*1000)); document.cookie = "transaction_id=" + transactionId + '; expires=' + date.toUTCString() + "; path=/"; }); } </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-2DT0NCM1Q4&l=gaLayer"></script> <script> window.gaLayer = window.gaLayer || []; function gatag() { if (arguments[2]) { arguments[2].real_timestamp = Date.now(); } gaLayer.push(arguments); } function setConsentMode(necessary, marketing, analytics, preferences) { var consentMode = { 'functionality_storage': necessary ? 'granted' : 'denied', 'security_storage': necessary ? 'granted' : 'denied', 'ad_storage': marketing ? 'granted' : 'denied', 'analytics_storage': analytics ? 'granted' : 'denied', 'personalization_storage': preferences ? 'granted' : 'denied', }; gatag('consent', 'update', consentMode); localStorage.setItem('consentMode', JSON.stringify(consentMode)); } var eventParameters = { page: 'product' || location.pathname, page_category: 'product', upsell_index: null, product_page_version: window.orbSessionData && window.orbSessionData.product_page_version }; var userProperties = window.orbSessionData && { uuid: window.orbSessionData.uuid, locale: window.orbSessionData.locale, currency: window.orbSessionData.currency, brand: window.orbSessionData.brand, country: window.orbSessionData.country, company: window.orbSessionData.company, subid1: window.orbSessionData.subid1, subid2: window.orbSessionData.subid2, subid3: window.orbSessionData.subid3, subid4: window.orbSessionData.subid4, subid5: window.orbSessionData.subid5, utm_campaign: window.orbSessionData.utm_campaign } || {}; gatag('js', new Date()); gatag('config', 'G-2DT0NCM1Q4', eventParameters); // This used as "User flow active" property (by Jurate) gatag('config', 'G-Z62DB69GDT', eventParameters); gatag('set', 'user_properties', userProperties); gatag('event', 'split_test_view', JSON.parse('{\u0022split_test_id\u0022:3643,\u0022split_test_variation\u0022:\u00227191_#1 Show New Tracking Page Version\u0022,\u0022event_action\u0022:\u0022Viewed 3643\u0022,\u0022event_label\u0022:\u00227191_#1 Show New Tracking Page Version\u0022,\u0022event_category\u0022:\u0022Split tests\u0022}')); addEventListener('hashchange', function () { var newFragment = location.hash; gatag('event', 'page_view', { 'page_path': location.pathname + location.search + newFragment, 'url_fragment': newFragment.replace('#', '') }); }); </script> <script> (function(a, t, o, m, i) { a[m] = a[m] || []; a[m].push({ t: new Date().getTime(), event: 'snippetRun' }); var f = t.getElementsByTagName( o )[0], e = t.createElement(o); e.async = !0; e.dataset.namespace = "paypal_sdk"; e.src = 'https://www.paypal.com/sdk/js?components=shopping&client-id=' + i; f.parentNode.insertBefore(e, f); })(window, document, 'script', 'shoppingDDL', 'AU7kkFMn3BFZcexbHND2uDWokuqqYIm3RRTNDgKKMxTn5yWzDcnvcFE6rew0P65pqHFRmXTgDC7AGSVT'); var pptag = { send: function(e, p) { shoppingDDL.push({ event: e, payload: p }); }, set: function(s) { shoppingDDL.push({ set: s }); } }; pptag.send('page_view', { page_type: 'PRODUCT_PAGE_VIEW', }) </script> <script> function initialize(i, t) { var e; i.getElementById(t) ? initFreshChat() : ( (e = i.createElement("script")).id = t, e.async = !0, e.src = "https://wchat.freshchat.com/js/widget.js", e.onload = initFreshChat, i.head.appendChild(e) ) } function initiateCall() { setTimeout(function () { initialize(document, "freshchat-js-sdk"); }, 2000); } function initFreshChat() { if (window.fcWidget !== undefined) { window.fcWidget.init({ token: "8f45d611-cca6-497c-b3db-a29cc93d7273", host: "https://wchat.freshchat.com", }); } } function openChat() { if (window.fcWidget.isLoaded() === true) { window.fcWidget.track('open_campaign', { trigger: true, }) } } if (document.readyState === 'complete') { initiateCall(); } else { window.addEventListener ? window.addEventListener("load", initiateCall, false) : window.attachEvent("load", initiateCall, false); } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "name": "Synoshi", "url": "https://get-synoshi.com/synoshi/product?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1", "logo": "https://get-synoshi.com/images/logos/synoshi.svg", "sameAs": [ "https://www.facebook.com/people/Synoshi/100089083382746/", "https://www.instagram.com/synoshiofficial/", "https://x.com/SynoshiScrubber", "https://www.tiktok.com/@getsynoshi" ] } </script> </head> <body class="synoshi-product bf2024 " > <div class="tw-max-w-[2000px] tw-mx-auto tw-text-base"> <div id="sticky-middle-banner" data-normalize-bp="sm" data-normalize-height="sale-banners" class="bf-2024-bg tw-sticky tw-top-[-1px] tw-z-[20] tw-py-2"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <div class="bf2024-pp-text-color tw-flex tw-justify-center sm:tw-justify-between tw-items-center tw-flex-col sm:tw-flex-row"> <div class="tw-flex tw-items-center tw-max-w-[100%] sm:tw-max-w-[70%] sm:tw-w-full"> <p x-data="{ fullyDisplay: false }" x-init="document.addEventListener('DOMContentLoaded', () => { setTimeout(() => { this.fullyDisplay = true}, 1000) })" @font-size-adjusted="fullyDisplay = true" x-bind:class="fullyDisplay ? '!tw-opacity-100' : ''" data-ignore-child-elements="true" class="tw-opacity-0 tw-flex-grow-1 tw-flex-basis-0 tw-min-w-0 tw-flex-shrink-1 tw-whitespace-nowrap tw-font-[900] tw-italic tw-text-[26px] tw-mb-0 tw-me-1 md:tw-me-3"> BLACK FRIDAY <span class="tw-font-[500]">SALE</span> </p> <div class="tw-flex tw-flex-shrink-0 tw-items-center"> <svg class="flip-rtl tw-h-[22.4px] sm:tw-h-[36.8px] tw-relative tw-end-[-5px] sm:tw-end-[-2px]" viewBox="182.0893 224.42 19.1997 42" width="19.1997" height="42" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M 199.544 224.42 C 197.713 224.42 195.988 225.261 194.889 226.69 L 183.02 242.128 C 181.779 243.742 181.779 245.962 183.02 247.578 L 194.889 264.15 C 195.988 265.579 197.713 266.42 199.544 266.42 L 201.289 266.42 L 201.289 224.42 L 199.544 224.42 Z M 192.566 247.132 C 193.851 247.132 194.893 246.116 194.893 244.863 C 194.893 243.609 193.851 242.593 192.566 242.593 C 191.28 242.593 190.238 243.609 190.238 244.863 C 190.238 246.116 191.28 247.132 192.566 247.132 Z" fill="black" transform="matrix(1, 0, 0, 1, 0, -2.842170943040401e-14)"/> </svg> <div class="tw-rounded-e-[5px] tw-pe-3 tw-ps-1 tw-py-1 sm:tw-py-2 tw-bg-black tw-flex tw-items-center"> <p class="bf2024-badge-color tw-whitespace-nowrap tw-w-full tw-text-[18px] sm:tw-text-[26px] tw-italic tw-leading-[0.8] tw-mb-0"> <span class="tw-text-white tw-font-bold tw-text-[16px] sm:tw-text-[24px]">70%</span> OFF </p> </div> </div> </div> <div data-time="900000" data-include-hours="true" class="sm:tw-max-w-[30%] md:tw-max-w-[unset] countdown tw-flex tw-items-center tw-text-xs md:tw-text-base tw-mt-2 sm:tw-mt-0 sm:tw-ms-4"> <p class="tw-whitespace-nowrap tw-flex-grow-1 tw-flex-basis-0 tw-min-w-0 tw-flex-shrink-1 tw-font-[600] tw-text-xs md:tw-text-sm tw-mb-0"> Time Left </p> <div class="tw-ms-3 tw-font-bold tw-flex tw-items-center tw-justify-center tw-rounded tw-bg-[#FFFFFF66] tw-w-[22px] tw-h-[22px] md:tw-h-[42px] md:tw-w-[42px] flip-rtl--only-parent"> <span class="hours-1">0</span> <span class="hours-2">0</span> </div> <svg class="tw-mx-1 md:tw-mx-2" width="3" height="12" viewBox="0 0 3 12" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="1.5" cy="1.5" r="1.5" fill="black" fill-opacity="0.17"/> <circle cx="1.5" cy="10.5" r="1.5" fill="black" fill-opacity="0.17"/> </svg> <div class="tw-font-bold tw-flex tw-items-center tw-justify-center tw-rounded tw-bg-[#FFFFFF66] tw-w-[22px] tw-h-[22px] md:tw-h-[42px] md:tw-w-[42px] flip-rtl--only-parent"> <span class="minutes-1">0</span> <span class="minutes-2">0</span> </div> <svg class="tw-mx-1 md:tw-mx-2" width="3" height="12" viewBox="0 0 3 12" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="1.5" cy="1.5" r="1.5" fill="black" fill-opacity="0.17"/> <circle cx="1.5" cy="10.5" r="1.5" fill="black" fill-opacity="0.17"/> </svg> <div class="tw-font-bold tw-flex tw-items-center tw-justify-center tw-rounded tw-bg-[#FFFFFF66] tw-w-[22px] tw-h-[22px] md:tw-h-[42px] md:tw-w-[42px] flip-rtl--only-parent"> <span class="seconds-1">0</span> <span class="seconds-2">0</span> </div> </div> </div> </div> </div> <div data-ga-section="1 - Navigation" class="tw-text-white tw-bg-black"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <nav id="nav" x-data="{ expanded: false }"> <div class="tw-py-s8 md:tw-py-s16 tw-text-base lg:tw-text-sm xl:tw-text-base tw-uppercase"> <div class="tw-flex tw-align-center tw-items-center tw-flex-nowrap"> <div class="tw-grow lg:tw-grow-0 tw-text-center lg:tw-text-left"> <a class="tw-inline-block tw-cursor-pointer tw-text-inherit" href="https://get-synoshi.com/?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" data-ga-category="Element" data-ga-click="1 - Navigation (Logo)" > <img class="tw-max-w-[105px] md:tw-max-w-[150px] tw-max-h-[40px] tw-inline-block" aria-label="Synoshi logo, go to homepage" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="" height="" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/images/logos/white/synoshi.svg" alt="Synoshi Power Spin Scrubber" > </a> </div> <div class="tw-grow tw-hidden lg:tw-flex tw-items-center tw-justify-end tw-px-0"> <div> <a data-wrap-text href="https://get-synoshi.com/synoshi/tracking?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-ml-6 tw-text-current" data-ga-category="Link" data-ga-click="1 - Navigation (/synoshi/tracking)" > Track order </a> </div> <div> <a data-wrap-text href="https://support.synoshi.com/en/support/home" class="tw-ml-6 tw-text-current" data-ga-category="Link" data-ga-click="1 - Navigation (Link 2)" > Contact </a> </div> <div> <a href="https://get-synoshi.com/synoshi/order?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-text-inherit tw-inline-block tw-font-bold tw-transition-all hover:tw-scale-105 tw-underline hover:tw-underline tw-leading-tight tw-ml-6" data-ga-category="Call To Action" data-ga-click="1 - Navigation (CTA)" > Order Now! </a> </div> </div> <div class="tw-grow-0 lg:tw-hidden tw-flex tw-justify-end" @click="expanded = ! expanded"> <span x-show="!expanded" class="tw-w-8 tw-cursor-pointer" data-ga-category="Element" data-ga-click="1 - Navigation (Hamburger Open)"> <svg class="tw-w-[inherit]" viewBox="0 0 50 23" width="30" xmlns="http://www.w3.org/2000/svg"><g fill="currentColor"><rect y="0" width="50" height="3"/><rect y="10" width="50" height="3"/><rect y="20" width="50" height="3"/></g></svg> </span> <span x-show="expanded" class="tw-w-8 tw-cursor-pointer" style="display: none;" data-ga-category="Element" data-ga-click="1 - Navigation (Hamburger Close)"> <svg class="tw-w-[inherit]" x="0px" y="0px" width="30" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><g fill="currentColor"><path d="M10,39.4c0,8.8,2.9,14.7,8.8,20.6l441.4,441.4L21.8,940c-5.9,5.9-8.8,11.8-8.8,20.6c0,5.9,2.9,14.7,8.8,20.6c5.9,5.9,11.8,8.8,20.6,8.8c5.9,0,14.7-2.9,20.6-8.8l438.5-438.5L940,981.2c5.9,5.9,11.8,8.8,20.6,8.8c5.9,0,14.7-2.9,20.6-8.8c2.9-5.9,8.8-14.7,8.8-20.6c0-8.8-5.9-14.7-8.8-20.6L542.7,501.5L981.2,60c5.9-5.9,8.8-11.8,8.8-20.6c0-5.9-2.9-14.7-8.8-20.6c-5.9-2.9-11.8-8.8-20.6-8.8c-5.9,0-14.7,5.9-20.6,8.8L501.5,460.3L60,18.8C54.1,15.9,48.2,10,39.4,10c-5.9,0-14.7,5.9-20.6,8.8C13,24.7,10,33.5,10,39.4z"/></g></svg> </span> </div> </div> <div class="d-flex tw-align-center tw-items-center"> <div x-show="expanded" x-collapse style="display:none;" class="tw-grow tw-basis-full tw-text-center lg:tw-hidden tw-pb-2" > <div class="tw-mt-5 tw-flex tw-justify-center"> <a data-wrap-text href="https://get-synoshi.com/synoshi/tracking?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-text-current" data-ga-category="Link" data-ga-click="1 - Navigation (/synoshi/tracking)" > Track order </a> </div> <div class="tw-mt-5 tw-flex tw-justify-center"> <a data-wrap-text href="https://support.synoshi.com/en/support/home" class="tw-text-current" data-ga-category="Link" data-ga-click="1 - Navigation (Link 2)" > Contact </a> </div> <div class="tw-mt-5 tw-flex tw-justify-center"> <a href="https://get-synoshi.com/synoshi/order?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-text-inherit tw-inline-block tw-font-bold tw-transition-all hover:tw-scale-105 tw-underline hover:tw-underline tw-leading-tight" data-ga-category="Call To Action" data-ga-click="1 - Navigation (CTA)" > Order Now! </a> </div> </div> </div> </div> </nav> </div> </div> <div class="tw-bg-cover tw-bg-[bottom_center] md:tw-bg-[top_center] tw-overflow-hidden tw-relative rtl:-tw-scale-x-100 lg:tw-pt-6 tw-text-white tw-py-0 md:tw-pb-0 md:tw-pt-6" data-srcset="https://get-synoshi.com/assets/theme/synoshi/product/hero-bg-mob-2.jpg?q=80&fm=jpg&w=778&s=f41fa06229dcd5c3c7ed93f5030bf08f 0, https://get-synoshi.com/assets/theme/synoshi/product/hero-bg-mob-2.jpg?q=80&fm=jpg&w=778&s=f41fa06229dcd5c3c7ed93f5030bf08f 576, https://get-synoshi.com/assets/theme/synoshi/product/hero-bg-2.jpg?q=80&fm=jpg&w=1037&s=bca85b9422c055bf04213d0441158a81 768, https://get-synoshi.com/assets/theme/synoshi/product/hero-bg-2.jpg?q=80&fm=jpg&w=1382&s=f19a3f6eb073ac3bcc4626eab511cf91 1023, https://get-synoshi.com/assets/theme/synoshi/product/hero-bg-2.jpg?q=80&fm=jpg&w=1891&s=a1e81d91e45a90335cc44297e34851d7 1400, https://get-synoshi.com/assets/theme/synoshi/product/hero-bg-2.jpg?q=80&fm=jpg&w=2106&s=90e5e35d69ed5e4ffbf6274e2480c2d5 1560, https://get-synoshi.com/assets/theme/synoshi/product/hero-bg-2.jpg?q=80&fm=jpg&w=2525&s=d788f68874bff5cc9a95dc75a9d66ad6 1870" data-ga-section="2 - Hero" > <div class="md:tw-hidden tw-absolute tw-top-0 tw-w-full"> <img height="864" width="563" class="md:tw-hidden tw-w-full tw-absolute sm:!tw-top-[-460px] tw-top-[-150px]" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="563" height="864" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/foam-bg.png?q=80&fm=png&fit=max&s=035f6ece67ced76a4c0252eb64883d90" alt="" > </div> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl !tw-px-0" > <div class="tw-flex tw-flex-wrap -tw-mx-colgap tw-grid md:tw-grid-cols-2 rtl:-tw-scale-x-100 tw-justify-center tw-items-center md:tw-justify-end tw-relative"> <div class="tw-px-colgap tw-self-end md:tw-order-1 tw-mx-auto tw-text-center order-1 tw-mb-10 md:tw-mb-0"> <div class="tw-max-w-[500px]"> <img height="591" width="327" class="md:tw-hidden tw-inline-block -tw-mb-[40px] tw-max-w-[60%] tw-pb-10" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="327" height="591" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-mob.png?q=80&fm=png&fit=max&s=40eebecc574b33e582a8396805f1495e" alt="synoshi product" > <img height="705" width="765" class="tw-hidden md:tw-inline-block rtl:-tw-scale-x-100" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="765" height="705" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product.png?q=80&fm=png&fit=max&s=b7c385bd9e99ffb0c6ea827c685753c9" alt="synoshi product" > </div> <div class="tw-relative"> </div> </div> <div class="tw-px-colgap tw-col-span-1 md:tw-py-10 tw-my-5 tw-z-[1]"> <h1 data-wrap-text class="tw-text-center tw-text-h4-mob md:tw-text-h4 md:tw-text-white tw-text-black sm:tw-max-w-[400px] tw-mx-auto"> </h1> <div class="tw-text-center tw-flex tw-flex-col tw-items-center"> <p class="my-0 tw-font-bold tw-text-[26px] sm:tw-text-[34px] tw-text-black md:tw-text-white">Discount</p> <p class="tw-my-0 tw-font-bold tw-relative tw-leading-none tw-text-[115px] tw-text-black md:tw-text-white tw-text-6xl sm:tw-text-8xl tw-py-2 md:tw-py-0"> <nobr>-70%</nobr> </p> <p class="tw-text-h2-mob md:tw-text-h3-mob tw-font-bold tw-mb-s16 tw-leading-tight tw-capitalize tw-hidden">Last Chance</p> <p data-wrap-text class="tw-my-0 tw-text-lg sm:tw-text-[22px] tw-mb-s16 tw-font-medium tw-text-black md:tw-text-white tw-px-2 !tw-font-bold sm:!tw-font-semibold !tw-text-base sm:!tw-text-h4">Might be the last day to grab this big promo</p> <div class="tw-inline-flex tw-flex-col"> <a href="https://get-synoshi.com/synoshi/order?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-bg-btn tw-inline-flex tw-justify-between tw-font-bold tw-p-s16 tw-rounded-md tw-text-center tw-text-btn-text tw-transition-all tw-drop-shadow-sm hover:tw-scale-105 hover:tw-brightness-[1.03] hover:tw-drop-shadow-md tw-leading-tight tw-w-full motion-safe:tw-animate-pulse" data-ga-category="Call To Action" data-ga-click="2 - Hero (CTA)" > BLACK FRIDAY DEAL -70% <span class="tw-h-[1.2em] tw-w-[1.2em] tw-bg-white tw-rounded tw-inline-flex tw-items-center tw-justify-center tw-ms-s16 !tw-bg-white"> <svg class="tw-h-[0.5em] tw-text-btn" fill="none" viewBox="0 0 12 10" xmlns="http://www.w3.org/2000/svg"><path d="m6.02597 7.82888 1.41422 1.41421 4.24261-4.24264-4.24261-4.242638-1.41422 1.414218 1.82843 1.82843h-7.537139v2h7.537139z" fill="currentColor"/></svg> </span> </a> <span class="tw-inline-flex tw-flex-col tw-mt-s8 tw-w-full tw-text-center"> <span class="tw-leading-[0] tw-flex tw-justify-around"> <span class="tw-border-solid tw-border-x-[7px] tw-border-b-[12px] tw-border-transparent tw-inline-block tw-border-b-btn-badgeBg "></span> <span class="tw-border-solid tw-border-x-[7px] tw-border-b-[12px] tw-border-transparent tw-inline-block tw-border-b-btn-badgeBg "></span> </span> <span class="tw-inline-block tw-w-full tw-px-s16 tw-py-s8 tw-rounded-md tw-bg-btn-badgeBg tw-text-black" > Don’t miss out on this Exclusive Offer </span> </span> </div> </div> </div> </div> </div> </div> <div class="tw-bg-white tw-text-black tw-py-3"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl !tw-px-0 tw-max-w-screen-lg xl:tw-max-w-screen-xl lg:tw-container-lg xl:tw-container-xl lg:!tw-px-container-lg xl:!tw-px-container-xl" > <div class="tw-overflow-hidden" data-ga-section="3 - Sliding Elements Row"> <div class="tw-flex tw-flex-wrap -tw-mx-colgap tw-hidden lg:tw-flex tw-items-center tw-flex-nowrap tw-justify-between"> <div class="tw-px-colgap tw-flex tw-justify-center tw-items-center " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 1)" > <span style="height: 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="47" viewBox="0 0 33 47" width="33" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-linecap="square"><path d="m16.4998 45.7095c4.0395 0 7.9135-1.6315 10.7698-4.5357s4.461-6.8431 4.461-10.9503c0-8.6033-5.0769-18.067-15.2308-28.39098-10.15383 10.32398-15.23076 19.78768-15.23076 28.39098 0 4.1072 1.60467 8.0461 4.46099 10.9503 2.85633 2.9042 6.73037 4.5357 10.76977 4.5357z"/><path d="m9.646 29.7331 8.8846-12.4146v7.8979h5.5846l-8.8846 12.4404v-7.9237z"/></g></svg> </span> <span data-wrap-text class=""> Powerful Cleaning </span> </div> <div class="tw-px-colgap tw-flex tw-justify-center tw-items-center " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 2)" > <span style="height: 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="43" viewBox="0 0 43 43" width="43" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-linecap="square"><path d="m5.16515 23.1172c-.12412-1.0747-.12412-2.1597 0-3.2344l-4.16515-4.6922 4.6538-7.88116 6.2826 1.25278c.8942-.62227 1.8444-1.16358 2.8389-1.61722l2.0244-5.945h9.3076l2.0244 5.945c.9944.45364 1.9446.99495 2.8388 1.61722l6.2826-1.25278 4.6538 7.88116-4.1651 4.6922c.1241 1.0747.1241 2.1597 0 3.2344l4.2582 4.6922-4.6538 7.8812-6.2826-1.2528c-.8942.6222-1.8444 1.1636-2.8389 1.6172l-2.1174 5.945h-9.3076l-2.0244-5.945c-.9945-.4536-1.9447-.995-2.8389-1.6172l-6.2826 1.2528-4.6538-7.8812z"/><path d="m21.5 24c1.3807 0 2.5-1.1193 2.5-2.5s-1.1193-2.5-2.5-2.5-2.5 1.1193-2.5 2.5 1.1193 2.5 2.5 2.5z"/></g></svg> </span> <span data-wrap-text class=""> Zero Effort </span> </div> <div class="tw-px-colgap tw-flex tw-justify-center tw-items-center " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 3)" > <span style="height: 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="47" viewBox="0 0 50 47" width="50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="currentColor" stroke-linecap="square"><path d="m1.67383 22.5962 4.71476 4.757 4.71471-4.757"/><path d="m27.605 10.7034v11.8927l7.0721 7.1357"/><path d="m27.6051 44.003c4.1962 0 8.2982-1.2554 11.7872-3.6077 3.489-2.3522 6.2084-5.6955 7.8142-9.6071s2.026-8.2158 1.2073-12.3683c-.8186-4.1525-2.8393-7.9669-5.8065-10.96069-2.9671-2.99381-6.7475-5.03261-10.8631-5.8586-4.1156-.825992-8.3815-.40206-12.2583 1.21817-3.8768 1.62024-7.1903 4.36401-9.52162 7.88432-2.33129 3.5204-3.57561 7.6592-3.57561 11.8931v2.3785"/><path d="m15.9894 29v2.3612m0 14.2555v2.3833m4.0106-14.2555c-.382-1.5889-1.7188-2.3833-4.0106-2.3833-3.4165 0-3.9894 2.3391-3.9894 3.5749 0 4.921 8 2.3392 8 7.1278 0 1.2358-.5729 3.5528-4.0106 3.5528-2.2706 0-3.6074-.7944-3.9894-2.3612"/></g></svg> </span> <span data-wrap-text class=""> Save Time & Money </span> </div> </div> <div class="tw-flex tw-flex-wrap -tw-mx-colgap tw-animate-[linear_rightToLeft_15s_infinite] rtl:tw-animate-[linear_leftToRight_15s_infinite] tw-basis-full tw-relative lg:tw-hidden tw-flex-nowrap" style="width: 2100px;"> <div class="tw-px-colgap tw-flex tw-items-center tw-content-center tw-justify-center tw-basis-full " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 1)" > <span style="height : 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="47" viewBox="0 0 33 47" width="33" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-linecap="square"><path d="m16.4998 45.7095c4.0395 0 7.9135-1.6315 10.7698-4.5357s4.461-6.8431 4.461-10.9503c0-8.6033-5.0769-18.067-15.2308-28.39098-10.15383 10.32398-15.23076 19.78768-15.23076 28.39098 0 4.1072 1.60467 8.0461 4.46099 10.9503 2.85633 2.9042 6.73037 4.5357 10.76977 4.5357z"/><path d="m9.646 29.7331 8.8846-12.4146v7.8979h5.5846l-8.8846 12.4404v-7.9237z"/></g></svg> </span> <span data-wrap-text class=""> Powerful Cleaning </span> </div> <div class="tw-px-colgap tw-flex tw-items-center tw-content-center tw-justify-center tw-basis-full " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 2)" > <span style="height : 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="43" viewBox="0 0 43 43" width="43" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-linecap="square"><path d="m5.16515 23.1172c-.12412-1.0747-.12412-2.1597 0-3.2344l-4.16515-4.6922 4.6538-7.88116 6.2826 1.25278c.8942-.62227 1.8444-1.16358 2.8389-1.61722l2.0244-5.945h9.3076l2.0244 5.945c.9944.45364 1.9446.99495 2.8388 1.61722l6.2826-1.25278 4.6538 7.88116-4.1651 4.6922c.1241 1.0747.1241 2.1597 0 3.2344l4.2582 4.6922-4.6538 7.8812-6.2826-1.2528c-.8942.6222-1.8444 1.1636-2.8389 1.6172l-2.1174 5.945h-9.3076l-2.0244-5.945c-.9945-.4536-1.9447-.995-2.8389-1.6172l-6.2826 1.2528-4.6538-7.8812z"/><path d="m21.5 24c1.3807 0 2.5-1.1193 2.5-2.5s-1.1193-2.5-2.5-2.5-2.5 1.1193-2.5 2.5 1.1193 2.5 2.5 2.5z"/></g></svg> </span> <span data-wrap-text class=""> Zero Effort </span> </div> <div class="tw-px-colgap tw-flex tw-items-center tw-content-center tw-justify-center tw-basis-full " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 3)" > <span style="height : 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="47" viewBox="0 0 50 47" width="50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="currentColor" stroke-linecap="square"><path d="m1.67383 22.5962 4.71476 4.757 4.71471-4.757"/><path d="m27.605 10.7034v11.8927l7.0721 7.1357"/><path d="m27.6051 44.003c4.1962 0 8.2982-1.2554 11.7872-3.6077 3.489-2.3522 6.2084-5.6955 7.8142-9.6071s2.026-8.2158 1.2073-12.3683c-.8186-4.1525-2.8393-7.9669-5.8065-10.96069-2.9671-2.99381-6.7475-5.03261-10.8631-5.8586-4.1156-.825992-8.3815-.40206-12.2583 1.21817-3.8768 1.62024-7.1903 4.36401-9.52162 7.88432-2.33129 3.5204-3.57561 7.6592-3.57561 11.8931v2.3785"/><path d="m15.9894 29v2.3612m0 14.2555v2.3833m4.0106-14.2555c-.382-1.5889-1.7188-2.3833-4.0106-2.3833-3.4165 0-3.9894 2.3391-3.9894 3.5749 0 4.921 8 2.3392 8 7.1278 0 1.2358-.5729 3.5528-4.0106 3.5528-2.2706 0-3.6074-.7944-3.9894-2.3612"/></g></svg> </span> <span data-wrap-text class=""> Save Time & Money </span> </div> <div class="tw-px-colgap tw-flex tw-items-center tw-content-center tw-justify-center tw-basis-full " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 1)" > <span style="height : 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="47" viewBox="0 0 33 47" width="33" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-linecap="square"><path d="m16.4998 45.7095c4.0395 0 7.9135-1.6315 10.7698-4.5357s4.461-6.8431 4.461-10.9503c0-8.6033-5.0769-18.067-15.2308-28.39098-10.15383 10.32398-15.23076 19.78768-15.23076 28.39098 0 4.1072 1.60467 8.0461 4.46099 10.9503 2.85633 2.9042 6.73037 4.5357 10.76977 4.5357z"/><path d="m9.646 29.7331 8.8846-12.4146v7.8979h5.5846l-8.8846 12.4404v-7.9237z"/></g></svg> </span> <span data-wrap-text class=""> Powerful Cleaning </span> </div> <div class="tw-px-colgap tw-flex tw-items-center tw-content-center tw-justify-center tw-basis-full " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 2)" > <span style="height : 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="43" viewBox="0 0 43 43" width="43" xmlns="http://www.w3.org/2000/svg"><g stroke="currentColor" stroke-linecap="square"><path d="m5.16515 23.1172c-.12412-1.0747-.12412-2.1597 0-3.2344l-4.16515-4.6922 4.6538-7.88116 6.2826 1.25278c.8942-.62227 1.8444-1.16358 2.8389-1.61722l2.0244-5.945h9.3076l2.0244 5.945c.9944.45364 1.9446.99495 2.8388 1.61722l6.2826-1.25278 4.6538 7.88116-4.1651 4.6922c.1241 1.0747.1241 2.1597 0 3.2344l4.2582 4.6922-4.6538 7.8812-6.2826-1.2528c-.8942.6222-1.8444 1.1636-2.8389 1.6172l-2.1174 5.945h-9.3076l-2.0244-5.945c-.9945-.4536-1.9447-.995-2.8389-1.6172l-6.2826 1.2528-4.6538-7.8812z"/><path d="m21.5 24c1.3807 0 2.5-1.1193 2.5-2.5s-1.1193-2.5-2.5-2.5-2.5 1.1193-2.5 2.5 1.1193 2.5 2.5 2.5z"/></g></svg> </span> <span data-wrap-text class=""> Zero Effort </span> </div> <div class="tw-px-colgap tw-flex tw-items-center tw-content-center tw-justify-center tw-basis-full " data-ga-category="Element" data-ga-click="3 - Sliding Elements Row (Sliding element 3)" > <span style="height : 50px;" class="tw-inline-flex tw-items-center tw-mx-3 "> <svg class="tw-h-full tw-w-auto " fill="none" height="47" viewBox="0 0 50 47" width="50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="currentColor" stroke-linecap="square"><path d="m1.67383 22.5962 4.71476 4.757 4.71471-4.757"/><path d="m27.605 10.7034v11.8927l7.0721 7.1357"/><path d="m27.6051 44.003c4.1962 0 8.2982-1.2554 11.7872-3.6077 3.489-2.3522 6.2084-5.6955 7.8142-9.6071s2.026-8.2158 1.2073-12.3683c-.8186-4.1525-2.8393-7.9669-5.8065-10.96069-2.9671-2.99381-6.7475-5.03261-10.8631-5.8586-4.1156-.825992-8.3815-.40206-12.2583 1.21817-3.8768 1.62024-7.1903 4.36401-9.52162 7.88432-2.33129 3.5204-3.57561 7.6592-3.57561 11.8931v2.3785"/><path d="m15.9894 29v2.3612m0 14.2555v2.3833m4.0106-14.2555c-.382-1.5889-1.7188-2.3833-4.0106-2.3833-3.4165 0-3.9894 2.3391-3.9894 3.5749 0 4.921 8 2.3392 8 7.1278 0 1.2358-.5729 3.5528-4.0106 3.5528-2.2706 0-3.6074-.7944-3.9894-2.3612"/></g></svg> </span> <span data-wrap-text class=""> Save Time & Money </span> </div> </div> </div> </div> </div> <div class="tw-bg-primary tw-py-10" data-ga-section="4 - Handheld Tool"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-10 tw-font-bold"> Handheld Spin Scrubber Makes Cleaning Effort-Free </h2> </div> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <div class="tw-flex tw-flex-wrap -tw-mx-colgap md:tw-flex-nowrap"> <div class="tw-px-colgap tw-w-full"> <img height="329" width="549" class="tw-mb-3" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="549" height="329" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/handed-1.jpg?q=50&fm=webp&fit=max&s=aac0ce1445d02975db26b259371a67fc" alt="Stove cleaning" > <div class="tw-mt-3 tw-mb-6 md:tw-mb-0"> <b>Slash your cleaning time in half (and more!)</b><br>Save up to <b>¾ of every hour</b> you’d spend cleaning and scrubbing: Synoshi does most of the hard work for you! </div> </div> <div class="tw-px-colgap tw-w-full"> <img height="328" width="549" class="tw-mb-3" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="549" height="328" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/handed-2.jpg?q=50&fm=webp&fit=max&s=159a2f190c76bf22f858ce5053b8924f" alt="Bathroom stains" > <div class="tw-mt-3 tw-mb-6 md:tw-mb-0"> <b>Stress-Free & Easy Bathroom Cleaning</b><br>Synoshi can eliminate dirt, grime, soap scum, limescale, calcium, and hard water stains in minutes. </div> </div> <div class="tw-px-colgap tw-w-full"> <img height="329" width="549" class="tw-mb-3" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="549" height="329" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/handed-3.jpg?q=50&fm=webp&fit=max&s=0fe6b2d44d7f838a466da541d4d6f290" alt="Dirty surfaces" > <div class="tw-mt-3 "> <b>Protect your sensitive skin from harsh chemicals</b><br>Avoid allergy-causing latex gloves, & direct contact with dirty surfaces. You don’t need dangerous chemicals to scrub your home clean! </div> </div> </div> </div> </div> <div class="tw-py-10"> <div data-ga-section="5 - Here’s why Synoshi is the ULTIMATE Accessible Cleaning Tool"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <h2 data-wrap-text class="tw-text-center tw-text-h2-mob md:tw-text-h2 tw-mb-10 tw-font-bold md:!tw-text-h3 !tw-text-h3-mob"> Here’s why Synoshi is the ULTIMATE Accessible Cleaning Tool </h2> <div class="md:tw-grid tw-items-center tw-gap-2 tw-m-auto tw-text-center tw-grid-cols-[17%_auto_17%] lg:tw-max-w-[85%]"> <div class="tw-hidden md:tw-grid tw-h-full tw-content-evenly tw-gap-3"> <div class="tw-me-[-50%]"> <span class="tw-text-sm tw-font-bold xl:tw-text-base tw-mb-1">Handheld</span><br> <span class="tw-text-sm xl:tw-text-base tw-mb-0">Keep your hands on Synoshi and away from the dirt.</span> </div> <div class=""> <span class="tw-text-sm tw-font-bold xl:tw-text-base tw-mb-1">Waterproof </span><br> <span class="tw-text-sm xl:tw-text-base tw-mb-0">IPX5 Waterproof technology</span> </div> <div class="tw-me-[-50%]"> <span class="tw-text-sm tw-font-bold xl:tw-text-base tw-mb-1">Cordless</span><br> <span class="tw-text-sm xl:tw-text-base tw-mb-0">No tangled wires</span> </div> </div> <div> <img height="564" width="462" class="tw-m-auto md:tw-hidden" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="462" height="564" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-2-mob.png?q=80&fm=png&fit=max&s=a811140601a58849b846863566e24274" alt="Synoshi cleaning tool" > <img height="840" width="727" class="tw-m-auto tw-hidden md:tw-block" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="727" height="840" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-2.png?q=80&fm=png&fit=max&s=ed844438fa217af196e1fd3dc8b12095" alt="Synoshi cleaning tool" > </div> <div class="tw-hidden md:tw-grid tw-h-full tw-content-evenly tw-gap-3"> <div class="tw-ms-[-50%]"> <span class="tw-text-sm tw-font-bold xl:tw-text-base tw-mb-1">Multiple brush heads</span><br> <span class="tw-text-sm xl:tw-text-base tw-mb-0">For corners and smooth surfaces</span> </div> <div class=""> <span class="tw-text-sm tw-font-bold xl:tw-text-base tw-mb-1">Minimal Effort</span><br> <span class="tw-text-sm xl:tw-text-base tw-mb-0">Spend less time cleaning</span> </div> <div class="tw-ms-[-50%]"> <span class="tw-text-sm tw-font-bold xl:tw-text-base tw-mb-1">Secure</span><br> <span class="tw-text-sm xl:tw-text-base tw-mb-0">No Slip Design</span> </div> </div> </div> <div class="tw-mt-10 tw-grid tw-gap-5 md:tw-hidden tw-text-center"> <div> <div class="tw-flex tw-flex-col tw-gap-s8 tw-text-center"> <div class="tw-flex tw-justify-center"> <svg class="tw-text-grey-hard tw-max-w-[50%] tw-h-[3rem]" fill="none" height="61" viewBox="0 0 61 61" width="61" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m0 0h61v61h-61z"/></clipPath><g clip-path="url(#a)"><path d="m8.17026 35.5533 8.36274 15.4064c.1754.4098 4.4644 10.0402 20.1738 10.0402 15.5264 0 16.6568-16.5539 16.6683-16.775v-29.6251c0-2.7278-2.0683-4.94667-4.7599-4.94667-1.1304 0-2.8651.40797-2.8651 1.06367v-2.80217c0-2.72785-2.2608-4.94672-4.8876-4.94672-1.0447 0-2.0378.36219-2.787.96647-.4689-2.17885-2.4648-3.93450207-4.7256-3.93450207-.0267 0-.0534 0-.0819 0-.0286 0-.0534 0-.0801 0-2.5849 0-4.5941 2.21125207-4.5941 4.94672207v.08006c-.8311-.73772-1.8528-1.21428-2.947-1.21428-.0019 0-.0038 0-.0058 0-.08 0-1.8776.12962-3.2406 1.37059-.9512.86544-1.4316 2.43428-1.4316 4.09081v21.22612c0 .5261.427.9531.9532.9531.5261 0 .9531-.427.9531-.9531v-21.22612c0-1.08846.2688-1.90815.7968-2.39806.7282-.67481 1.7861-.61381 1.8796-.61381 1.6203 0 3.0423 1.41444 3.0423 3.06716v17.35833c0 .5261.427.9531.9532.9531.5261 0 .9531-.427.9531-.9531v-21.7408c0-1.69466 1.2124-3.02332 2.7679-3.04047 1.6012.01906 2.9508 1.40109 2.9508 3.04047v23.647c0 .5262.427.9532.9532.9532.5261 0 .9531-.427.9531-.9532v-20.67897c0-1.76138 1.2219-3.04047 2.7374-3.04047 1.5764.00191 2.9813 1.36487 2.9813 3.04047v17.91117c0 .5261.427.9531.9532.9531.5261 0 .9531-.427.9531-.9531v-11.165c0-.0209-.1106-.0381-.1106-.059 0-1.6756 1.2734-3.0405 2.9147-3.0405s2.9146 1.363 2.9146 3.0385l.0019 29.5698c-.0362.6081-1.0503 14.924-14.7639 14.924-14.3883 0-18.2638-8.5228-18.4582-8.9613l-8.36843-15.4158c-.01144-.0267-1.10944-2.5792.43843-4.026.7377-.6901 1.4488-1.0122 2.1636-.976 1.0446.0667 1.7881.9379 1.79.9379l7.8308 10.3395c.3165.4194.9131.5013 1.3344.1849.4194-.3184.5033-.915.1849-1.3344l-7.848-10.3624c-.0496-.061-1.2524-1.5326-3.1434-1.666-1.26-.0744-2.4686.4117-3.61426 1.483-2.52197 2.3619-.94931 6.0314-.84638 6.2563z" fill="currentColor"/></g></svg> </div> <p class="tw-text-md tw-font-bold tw-mb-0">Handheld</p> <p class="tw-text-center tw-text-md tw-mb-0"> Keep your hands on Synoshi and away from the dirt. </p> </div> </div> <div> <div class="tw-flex tw-flex-col tw-gap-s8 tw-text-center"> <div class="tw-flex tw-justify-center"> <svg class="tw-text-grey-hard tw-max-w-[50%] tw-h-[3rem]" fill="none" height="58" viewBox="0 0 61 58" width="61" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="currentColor"><path d="m52.2019 7.3494c.5729-.25673 1.1802-.42725 1.8023-.50608v-5.875224c-.0001-.177806-.0523-.351635-.1498-.49983-.0976-.148195-.2363-.264204-.3989-.333573-.1626-.0693696-.3419-.0890324-.5155-.0565384-.1736.0324934-.3339.1157074-.4609.2392734-2.6766 2.603582-5.9286 4.336872-9.4023 5.056172-.0618.70692-.3075 1.38494-.7125 1.96573 3.6056-.55226 7.0006-2.05938 9.8376-4.36707z"/><path d="m46.4409 42.9916c-.1872.2324-.3796.4646-.5772.6964-6.6584 7.84-17.3767 11.7999-19.2454 12.4459-2.7539-1.0194-24.81859-9.7682-24.81859-27.4808v-25.87845c2.38034 1.74975 7.30916 4.78895 12.80509 4.78895 4.538 0 9.0324-1.56764 12.4516-4.32497 1.4027 1.12555 2.9538 2.04952 4.6089 2.74543-.0145-.11714-.0254-.23428-.0309-.35325-.0104-.51714.0926-1.03023.3018-1.50266-1.5548-.69856-2.999-1.62361-4.2863-2.74543-.1638-.14356-.3736-.22264-.5908-.22264-.2171 0-.4269.07908-.5907.22264-3.162 2.7738-7.4837 4.36889-11.8617 4.36889-6.85932 0-13.04603-5.467068-13.10783-5.523807-.12993-.114744-.28966-.1898082-.46046-.2163907-.170797-.0265824-.345581-.0035813-.503856.0663073-.158064.0711394-.292388.1866854-.386858.3327774-.0944705.146091-.14507488.316524-.14574288.490852v27.751751c0 8.3434 4.57345688 16.0644 13.22864688 22.3295 6.4612 4.6782 12.8224 6.8782 13.0878 6.9688.0932.0327.1912.0494.2899.0494.0925.0002.1845-.014.2727-.0421.5162-.1647 12.7342-4.1181 20.3588-13.0865.3344-.3941.6559-.788.9643-1.1815-.6395-.0691-1.2486-.3107-1.7632-.6991z"/><path d="m52.88 32.7657c.1458-.0196.2927-.0297.4399-.0302.0909 0 .1817.0046.2726.011.1806-.8834.3021-1.778.3636-2.6777-.589.2496-1.2119.4091-1.8478.4731-.0791.7613-.2042 1.5171-.3744 2.2632.2241-.0454.4521-.0687.6807-.0696.1556.0004.311.0105.4654.0302z"/><g clip-rule="evenodd" fill-rule="evenodd"><path d="m60.1 7.12428c1.8323.68087.7016 12.55122-1.9086 17.55062-3.1811 6.0958-9.7368 6.492-14.6765 2.3657-4.9398-4.1264-4.2881-11.3478.8488-14.862 5.137-3.51413 13.7168-5.80474 15.7363-5.05432z"/><path d="m41.5749 1.26737c.7425.27454.2844 5.0882-.7735 7.11433-1.2906 2.4709-3.9472 2.6319-5.9495.95907-2.0022-1.67289-1.7378-4.60135.3436-6.0244 2.0813-1.42305 5.5605-2.352832 6.3794-2.049z"/><path d="m52.9765 33.722c.7426.2746.2845 5.0882-.7743 7.1143-1.2897 2.4709-3.9464 2.632-5.9486.9591-2.0023-1.6729-1.7387-4.6013.3435-6.0244 2.0823-1.423 5.5614-2.3528 6.3794-2.049z"/><path d="m36.6686 20.2063c.5226.194.1999 3.5745-.5454 4.9976-.9088 1.7387-2.7729 1.8486-4.1808.6735-1.4078-1.175-1.2206-3.2323.2418-4.2316 1.4623-.9993 3.9099-1.6528 4.4844-1.4395z"/></g></g></svg> </div> <p class="tw-text-md tw-font-bold tw-mb-0">Waterproof </p> <p class="tw-text-center tw-text-md tw-mb-0"> IPX5 Waterproof technology </p> </div> </div> <div> <div class="tw-flex tw-flex-col tw-gap-s8 tw-text-center"> <div class="tw-flex tw-justify-center"> <svg class="tw-text-grey-hard tw-max-w-[50%] tw-h-[3rem]" fill="none" height="63" viewBox="0 0 68 63" width="68" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="currentColor"><path d="m13.4998 43.0065h12.7075c.1774 0 .3475-.0695.4729-.193.1255-.1236.1959-.2911.1959-.4659 0-.1747-.0704-.3423-.1959-.4659-.1254-.1235-.2955-.1929-.4729-.1929h-12.7075c-.1774-.0003-.3473-.0698-.4727-.1933s-.196-.2909-.1962-.4656v-19.7662c.0005-.1745.0711-.3417.1965-.465s.2952-.1927.4724-.1929h12.7075c.1774 0 .3475-.0694.4729-.193.1255-.1236.1959-.2911.1959-.4659 0-.1747-.0704-.3423-.1959-.4658-.1254-.1236-.2955-.193-.4729-.193h-12.7075c-.532.0007-1.042.2092-1.4181.5797-.3762.3705-.5878.8728-.5885 1.3968v19.7653c.0007.524.2123 1.0263.5885 1.3969.3761.3705.8861.5789 1.4181.5797z"/><path d="m52.9628 25.8765v-4.6128c-.0007-.524-.2124-1.0263-.5885-1.3968-.3762-.3705-.8861-.579-1.4181-.5797h-12.7084c-.1774 0-.3475.0694-.473.1929-.1254.1236-.1959.2912-.1959.4659 0 .1748.0705.3423.1959.4659.1255.1235.2956.193.473.193h12.7084c.1774.0002.3473.0697.4727.1932s.196.2909.1962.4656v19.7662c-.0002.1747-.0708.3421-.1962.4656s-.2953.193-.4727.1933h-14.0461c-.1774 0-.3475.0694-.473.1929-.1254.1236-.1959.2912-.1959.4659s.0705.3423.1959.4659c.1255.1235.2956.193.473.193h14.0461c.532-.0008 1.0419-.2092 1.4181-.5798.3761-.3705.5878-.8728.5885-1.3968v-3.2942h3.3443c.532-.0007 1.042-.2092 1.4181-.5797.3762-.3705.5878-.8728.5885-1.3968v-7.9062c-.0007-.5239-.2123-1.0263-.5885-1.3968-.3761-.3705-.8861-.579-1.4181-.5797zm4.0132 1.9775v7.9061c-.0005.1745-.0711.3417-.1965.465-.1253.1233-.2952.1927-.4724.1929h-3.3443v-9.2238h3.3443c.1774.0002.3474.0697.4727.1932.1254.1235.196.291.1962.4656z"/><path d="m28.7609 51.8786c.1503.0595.3173.0632.4701.0104s.2808-.1586.3603-.2976l14.2435-24.7307c.0577-.1003.0878-.2137.0871-.3289-.0006-.1153-.0319-.2283-.0907-.328-.0587-.0996-.143-.1823-.2443-.2399-.1014-.0576-.2163-.088-.3333-.0883h-9.4665l4.0962-15.2915c.0381-.1498.0217-.3079-.0465-.4469-.0682-.13903-.1838-.25002-.3266-.31363-.1428-.06362-.3037-.07583-.4547-.0345s-.2825.13358-.3715.26063l-15.3913 22.7079c-.0669.0991-.1053.2141-.1112.333-.0059.1188.0209.2371.0776.3421.0567.1051.1413.1931.2446.2547.1034.0616.2218.0945.3426.0952h10.6335l-4.1266 17.3317c-.0372.1544-.0164.3169.0585.4574.075.1405.199.2495.3492.3069zm5.22-18.6049c.0229-.0967.0234-.1973.0013-.2942-.0221-.097-.0662-.1877-.1289-.2655-.0628-.0778-.1425-.1406-.2334-.1837-.0909-.0432-.1904-.0655-.2913-.0654h-10.2286l12.4677-18.3967-3.2964 12.299c-.0263.0975-.0295.1996-.0093.2984.0201.0989.063.1919.1254.2718s.1427.1447.2345.1892c.0919.0445.1929.0676.2952.0676h9.187l-11.3855 19.7653z"/><path d="m64.6657 24.3616c-.9635-4.8029-3.096-9.3037-6.2144-13.1159-10.605-12.97244-29.9467-15.02259-43.1063-4.5756-7.6573 6.0786-11.5524 15.0625-11.38265 24.0673.59229-.1635 1.2999-.1126 1.91618.0846-.2002-8.4814 3.4495-16.9564 10.66587-22.68154 12.3403-9.79905 30.4716-7.873408 40.416 4.28654 2.9232 3.5741 4.9221 7.7937 5.8251 12.2963.0243.1216.0726.2374.1422.3406s.1592.1919.2636.261c.1045.0691.2217.1173.345.1418.1234.0244.2504.0248.3738.0009.1235-.0239.241-.0715.3458-.14.1047-.0686.1948-.1569.265-.2597.0701-.1029.119-.2184.1439-.3399.0248-.1214.0252-.2466.0009-.3682z"/><path d="m.659747 27.7749-.6458002 3.1407c-.0424083.2082.0008096.4245.1201632.6013.119354.1769.305086.2999.516411.3419l.398549.0791-.482503 2.3564c-.02108.1031-.021337.2093-.000755.3125s.0616.2014.120711.289c.059112.0876.135159.1629.223801.2215.088641.0586.188136.0995.292816.1203.10468.0207.21248.021.31726.0007.10478-.0202.20447-.0607.2934-.1189.08892-.0582.16533-.1331.22486-.2204.05954-.0873.10103-.1854.12211-.2885l.48251-2.3554 2.3913.4752-.48343 2.3555c-.03982.2072.00487.4216.1244.5965.11952.175.30424.2965.51411.3383.20988.0417.42799.0003.60706-.1153s.30467-.2961.34956-.5023l.48251-2.3555.39855.0791c.21139.0417.43096-.0008.61051-.1184s.3044-.3005.34712-.5087l.6458-3.1406c.10558-.5156.10705-1.0465.0043-1.5626-.10274-.5161-.30767-1.0073-.6031-1.4453-.29543-.4381-.67557-.8146-1.11871-1.108-.44313-.2934-.9406-.4979-1.46398-.6019-.52339-.104-1.06244-.1054-1.58639-.0042s-1.02254.303-1.46729.594c-.44474.291-.82695.6655-1.12479 1.102-.297837.4365-.505477.9265-.611063 1.442z"/><path d="m63.4803 37.0433c-.5655-.2063-1.0545-.4263-1.4992-.7725-.8173 6.7341-4.0773 12.9505-9.1795 17.5044-11.7342 10.4951-29.9495 9.6327-40.6043-1.9293-3.13213-3.3982-5.37992-7.4947-6.55024-11.9374-.03126-.12-.0862-.2327-.1617-.3318s-.17007-.1825-.27831-.2456-.22804-.1045-.35254-.122c-.12451-.0175-.2513-.0106-.37312.0201-.12182.0308-.23629.085-.33687.1593-.10059.0744-.18532.1675-.24936.2742-.06403.1066-.10613.2246-.12387.3472-.01774.1227-.01078.2476.02048.3676 1.24902 4.74 3.64749 9.1105 6.98943 12.7361 11.3614 12.3299 30.7927 13.2532 43.312 2.0592 5.2776-4.7112 8.7113-11.0959 9.7036-18.0432-.1078-.02-.2137-.0489-.3165-.0863z"/><path d="m67.3402 35.6002.6458-3.1407c.0219-.1036.0227-.2105.0024-.3144-.0203-.104-.0613-.2029-.1206-.2912-.0594-.0882-.136-.164-.2253-.2229-.0892-.0589-.1895-.0997-.2949-.1202l-.3986-.0791.4825-2.3555c.0226-.1037.0241-.2108.0043-.315-.0197-.1043-.0603-.2037-.1193-.2924-.0591-.0887-.1354-.165-.2246-.2244-.0892-.0595-.1894-.1009-.295-.1219-.1055-.021-.2143-.0211-.3199-.0004s-.206.0619-.2953.1211c-.0894.0592-.1659.1353-.2252.2238-.0592.0886-.1001.1879-.1201.2921l-.4825 2.3555-2.3913-.4753.4825-2.3555c.0427-.2082-.0003-.4246-.1196-.6016s-.3051-.3001-.5165-.3421c-.2114-.0421-.4311.0003-.6108.1178s-.3046.3005-.3473.5088l-.4825 2.3563-.3986-.079c-.1049-.0209-.213-.0211-.3181-.0007-.105.0204-.2049.0611-.2939.1197-.089.0587-.1654.134-.2247.2218-.0593.0879-.1004.1863-.1209.2899l-.6458 3.1415c-.1056.5157-.107 1.0469-.0042 1.5632.1028.5162.3078 1.0075.6034 1.4457s.6758.8148 1.1192 1.1082c.4433.2935.9409.498 1.4645.602.5235.104 1.0628.1055 1.5869.0042s1.0228-.3033 1.4677-.5944.8272-.6657 1.1251-1.1024c.2979-.4366.5056-.9268.6112-1.4425z"/></g></svg> </div> <p class="tw-text-md tw-font-bold tw-mb-0">Cordless</p> <p class="tw-text-center tw-text-md tw-mb-0"> No tangled wires </p> </div> </div> <div> <div class="tw-flex tw-flex-col tw-gap-s8 tw-text-center"> <div class="tw-flex tw-justify-center"> <svg class="tw-text-grey-hard tw-max-w-[50%] tw-h-[3rem]" fill="none" height="56" viewBox="0 0 91 56" width="91" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="currentColor"><path d="m27.8089-.00012207c-5.5001 0-10.8766 1.64217207-15.4498 4.71885207-4.57313 3.07668-8.13747 7.44967-10.24226 12.56597-2.104793 5.1164-2.655499 10.7462-1.582486 16.1777 1.073016 5.4315 3.721556 10.4206 7.610706 14.3365 3.88914 3.9158 8.84424 6.5826 14.23864 7.663s10.9858.5259 16.0672-1.5934c5.0815-2.1192 9.4246-5.7081 12.4803-10.3127 3.0557-4.6045 4.6866-10.018 4.6866-15.5559-.0083-7.4235-2.9409-14.5405-8.1543-19.78968-5.2133-5.24919-12.2818-8.20189452-19.6546-8.21034207zm0 54.25902207c-5.1556-.0017-10.195-1.5425-14.4811-4.4276-4.28607-2.885-7.62634-6.9849-9.59854-11.7812-1.9722-4.7962-2.48777-10.0736-1.48153-15.1648 1.00624-5.0913 3.4891-9.7679 7.13471-13.43852 3.64556-3.67066 8.29026-6.17059 13.34676-7.18374 5.0565-1.01316 10.2979-.49404 15.0614 1.49171s8.8354 5.34897 11.7008 9.66445c2.8654 4.3156 4.3957 9.3896 4.3974 14.5807-.0061 6.9624-2.7558 13.638-7.6454 18.5612-4.8896 4.9231-11.5195 7.6917-18.4345 7.6978z"/><path d="m89.9885 43.4246-26.0136-40.20689c-.5714-.87822-1.351-1.5994-2.2684-2.09852-.9173-.499111-1.9437-.760456-2.9864-.760456-1.0428 0-2.0691.261345-2.9865.760456-.9174.49912-1.697 1.2203-2.2684 2.09852l-5.2563 8.12439c.4224.4816.7738 1.022 1.0432 1.6045l5.6741-8.77138c.414-.63209.9774-1.15086 1.6395-1.5098.6621-.35895 1.4024-.54684 2.1544-.54684s1.4922.18789 2.1543.54684c.6622.35894 1.2255.87771 1.6395 1.5098l26.0107 40.21848c.4413.6687.6918 1.4466.7243 2.2488.0326.8022-.1542 1.5981-.5399 2.3008-.3839.7237-.9578 1.3275-1.659 1.7455s-1.5029.6342-2.3178.6251h-14.1897c-4.6339-.0842-11.7144-.0987-22.4057 0h-6.0286c-1.0987 1.0279-2.5221 1.633-4.02 1.709l-.0721.0493h10.1092c.3141 0 12.6624.0377 21.2356-.0696l15.3598.0696c1.1295.0117 2.2405-.289 3.212-.8691.9716-.5802 1.7664-1.4177 2.2979-2.4212.5411-.9806.8047-2.0918.762-3.2128-.0427-1.1209-.39-2.2086-1.0041-3.1445z"/><path d="m28.35 14.381c.1724 0 .3377-.0728.4596-.2023s.1904-.3051.1904-.4883c0-.1831-.0685-.3588-.1904-.4883s-.2872-.2022-.4596-.2022c-8.4638 0-15.35 7.3155-15.35 16.3094 0 .1832.0685.3588.1904.4883s.2872.2023.4596.2023.3377-.0728.4596-.2023.1904-.3051.1904-.4883c0-8.2332 6.3022-14.9283 14.05-14.9283z"/><path d="m21 28.4999c0 4.1362 3.3655 7.5 7.5 7.5s7.5-3.3638 7.5-7.5-3.3655-7.5-7.5-7.5-7.5 3.3643-7.5 7.5zm13.6364 0c0 1.2136-.3599 2.4-1.0342 3.4092-.6743 1.0091-1.6326 1.7956-2.7539 2.26-1.1213.4645-2.3551.586-3.5454.3492-1.1904-.2367-2.2838-.8212-3.142-1.6794-.8581-.8581-1.4426-1.9515-1.6794-3.1419-.2367-1.1903-.1152-2.4241.3492-3.5454.4645-1.1213 1.251-2.0797 2.2601-2.7539 1.0091-.6743 2.1955-1.0342 3.4092-1.0342 1.6268.002 3.1865.6492 4.3368 1.7995 1.1504 1.1504 1.7975 2.71 1.7996 4.3369z"/></g></svg> </div> <p class="tw-text-md tw-font-bold tw-mb-0">Multiple brush heads</p> <p class="tw-text-center tw-text-md tw-mb-0"> For corners and smooth surfaces </p> </div> </div> <div> <div class="tw-flex tw-flex-col tw-gap-s8 tw-text-center"> <div class="tw-flex tw-justify-center"> <svg class="tw-text-grey-hard tw-max-w-[50%] tw-h-[3rem]" fill="none" height="62" viewBox="0 0 62 62" width="62" xmlns="http://www.w3.org/2000/svg"><g fill="currentColor"><path d="m53.4014 51.2898c.6519-.6359 1.279-1.3108 1.8671-2.0052.3153-.3738.2693-.9318-.1045-1.2489-.372-.3153-.9335-.2657-1.2489.1045-.5509.6519-1.1408 1.2861-1.7519 1.883-.349.3402-.3561.9017-.0142 1.2524.1736.1772.4039.2658.6342.2658.2214.0017.4446-.0815.6182-.2516z"/><path d="m15.6437 52.9231c.1647.1346.3631.2001.5598.2001.2568 0 .5101-.1098.6855-.3241.31-.3791.2551-.9371-.124-1.2471-1.4278-1.1709-2.7351-2.4924-3.8901-3.9308-.3082-.3827-.8644-.4447-1.2453-.1364-.3808.3064-.4428.8627-.1364 1.2435 1.2329 1.5358 2.6288 2.9459 4.1505 4.1948z"/><path d="m47.8254 53.4545c-1.5606.9902-3.2276 1.8157-4.9547 2.4588-.4588.1718-.6926.6802-.5208 1.1408.1329.356.4712.5757.8308.5757.1027 0 .2073-.0177.3082-.0549 1.8423-.6856 3.6191-1.5678 5.2842-2.6235.4127-.2604.5367-.8078.2746-1.2205-.2604-.4163-.8078-.5386-1.2223-.2764z"/><path d="m26.0614 58.3259c.0779.0213.1576.0319.2356.0319.3879 0 .744-.2586.852-.6501.1294-.473-.147-.9601-.6182-1.0895-1.7732-.4871-3.5056-1.1673-5.1478-2.0194-.4375-.2303-.9707-.0549-1.1939.3773-.225.434-.0567.969.3773 1.194 1.7537.9087 3.6013 1.6332 5.495 2.1558z"/><path d="m31.9886 57.5235c-.4872-.0426-.9088.3418-.9371.8325-.0301.4872.3437.907.8308.9353.5722.0337 1.1479.0514 1.7289.0514 1.3941 0 2.7953-.1027 4.1646-.3029.4836-.0726.8184-.5226.7476-1.0062-.0726-.4818-.5208-.8095-1.0044-.7475-1.821.2692-3.7058.3454-5.5304.2374z"/><path d="m9.06826 44.2094c.13463 0 .26926-.0301.3968-.0957.43755-.2196.61294-.7528.39326-1.1886-.38086-.7564-.7316-1.5447-1.03983-2.3436-.17714-.457-.68908-.6873-1.14611-.5049-.45526.1772-.682.6891-.50663 1.1444.32948.8503.70326 1.6935 1.10891 2.4995.15766.31.46943.4889.7936.4889z"/><path d="m33.6112 2.65701c-14.9969 0-27.27643 11.71619-28.24894 26.47049l-3.73595-4.7191c-.30468-.3809-.859139-.45-1.245311-.1435-.3808569.3011-.4463997.8591-.143485 1.2418l5.319596 6.7208c.17538.2196.434.3348.69617.3348.19132 0 .38618-.062.54915-.1913l6.72077-5.3196c.3827-.303.4482-.8592.1453-1.2436-.3029-.3808-.8574-.4499-1.2453-.1435l-5.32849 4.216c.59343-14.1307 12.24239-25.45186 26.51649-25.45186 14.6515 0 26.5715 11.91996 26.5715 26.57146 0 4.3081-1.054 8.5843-3.0469 12.3645-.2285.4323-.062.969.3702 1.1975.1311.0691.2728.1028.411.1028.3189 0 .6271-.1719.7847-.473 2.1275-4.0371 3.2506-8.5985 3.2506-13.1918.0018-15.6276-12.7135-28.34289-28.3411-28.34289z"/><path d="m33.6574 12.3999c-.4889 0-.8857.3968-.8857.8857v12.3557c-2.6022.4074-4.6057 2.6447-4.6057 5.3586 0 3.0008 2.441 5.4436 5.4436 5.4436 1.7289 0 3.2541-.8255 4.2532-2.0868l9.4807 5.3976c.1382.0779.2887.1151.4375.1151.3083 0 .6076-.1612.7706-.4482.2427-.4233.0939-.9654-.3312-1.2081l-9.5002-5.4064c.2019-.5686.3312-1.1709.3312-1.8068 0-2.682-1.9538-4.9051-4.51-5.3497v-12.3646c.0018-.4889-.395-.8857-.884-.8857zm3.6244 18.6c0 2.0265-1.6474 3.6721-3.6722 3.6721-2.0247 0-3.6722-1.6456-3.6722-3.6721s1.6475-3.6722 3.6722-3.6722c2.0248 0 3.6722 1.6457 3.6722 3.6722z"/></g></svg> </div> <p class="tw-text-md tw-font-bold tw-mb-0">Minimal Effort</p> <p class="tw-text-center tw-text-md tw-mb-0"> Spend less time cleaning </p> </div> </div> <div> <div class="tw-flex tw-flex-col tw-gap-s8 tw-text-center"> <div class="tw-flex tw-justify-center"> <svg class="tw-text-grey-hard tw-max-w-[50%] tw-h-[3rem]" fill="none" height="53" viewBox="0 0 53 53" width="53" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="currentColor"><path d="m11.62 4.31939c-.3743.265-.4621.78175-.1987 1.15606.2633.37266.7784.46375 1.1544.19875.1292-.09109 13.1324-9.04147 29.0307.04307.1292.07453.2716.10931.4091.10931.2882 0 .5664-.14906.7205-.41738.2269-.3975.0894-.90431-.3081-1.12956-16.8043-9.60294-30.6688-.05631-30.8079.03975z"/><path d="m49.8695 20.7858c.1541 0 .3097-.0431.4489-.1325.3842-.2484.4952-.7602.2467-1.1461-5.0565-7.8357-13.727-12.51465-23.1891-12.51465-9.2535 0-17.81961 4.51995-22.91092 12.08895-.25506.3793-.15569.8944.22359 1.1495.37928.2583.89603.1556 1.14944-.2236 4.78489-7.112 12.83589-11.3586 21.53789-11.3586 8.899 0 17.0478 4.394 21.7995 11.7561.1557.2467.4224.3809.694.3809z"/><path d="m42.6336 45.8532c-13.8678 0-14.416-11.1648-14.4326-11.6418-.0149-.4571-.419-.8464-.8546-.8-.4571.0149-.8149.3959-.8016.8513.0033.1325.583 13.2467 16.0871 13.2467.4787-.0033.9358-.3395.9342-.8314-.0017-.4571-.3727-.8248-.8282-.8248-.0596-.0249-.0695-.0017-.1043 0z"/><path d="m46.5636 38.0373c1.5353-3.0011 1.1991-7.2229-.9723-12.2098-2.2409-5.146-7.2444-10.2489-13.3758-11.8389-4.3725-1.1345-11.0472-1.3697-18.0002 3.9485-13.304621 10.1776-6.01547 26.0362-5.94093 26.1969.19543.4141.68568.5913 1.10306.3942.41406-.1955.58962-.6907.39419-1.1031-.06957-.1474-6.80388-14.7969 5.44908-24.1713 6.4213-4.9141 12.5593-4.7037 16.579-3.6603 6.5422 1.6976 10.5669 6.9844 12.2712 10.8981 1.9378 4.452 2.3005 8.2846 1.0169 10.7921-.7668 1.5006-1.4475 1.8782-3.2462 2.2691-1.4062.3048-2.6815.0944-3.7862-.6227-1.7838-1.1594-3.1552-3.6537-3.8591-7.0242-.7602-3.6322-3.975-5.406-6.8221-5.5518-3.3771-.1689-6.1778 1.6795-7.1467 4.7187-1.5767 4.9505-.6873 15.8901 13.9771 21.8691.101.0381.207.058.3114.058.3263 0 .636-.1938.7668-.5168.1739-.4223-.0298-.9076-.4538-1.0798-16.9252-6.9-13.1904-19.3053-13.0231-19.8303.8894-2.7941 3.508-3.6918 5.4839-3.5659 2.0521.1043 4.6673 1.277 5.2867 4.2367.8066 3.8607 2.39 6.6531 4.5796 8.0742 1.4889.9672 3.1849 1.2538 5.0383.853 2.274-.4936 3.3771-1.1975 4.3692-3.1337z"/><path d="m21.9023 22.4189c4.3377-1.7457 9.4406-.9888 11.8687.7536 1.3813.9904 5.883 4.7021 5.883 10.8881 0 .4588.371.8282.8281.8282s.8281-.371.8281-.8282c0-6.9761-5.0317-11.1283-6.5737-12.2347-2.7526-1.9759-8.4005-2.9812-13.452-.944-3.0127 1.214-6.8436 3.9601-7.9898 10.1561-2.3038 12.4533 6.9049 20.7048 7.2975 21.0509.1573.1375.3511.2054.5465.2054.2303 0 .4588-.0961.6228-.2832.3014-.3445.2666-.8679-.0762-1.1693-.0894-.0779-8.8957-7.9649-6.7608-19.504 1.007-5.4541 4.3493-7.8606 6.9778-8.9189z"/></g></svg> </div> <p class="tw-text-md tw-font-bold tw-mb-0">Secure</p> <p class="tw-text-center tw-text-md tw-mb-0"> No Slip Design </p> </div> </div> </div> </div> </div> </div> <div id="sticky-middle-banner" data-normalize-bp="sm" data-normalize-height="sale-banners" class="tw-flex tw-items-center bf-2024-bg tw-sticky tw-top-[-1px] tw-z-[20] tw-py-s16 md:tw-py-s8"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <div class="tw-flex tw-justify-center sm:tw-justify-between tw-items-center tw-flex-col sm:tw-flex-row"> <img class="tw-hidden lg:tw-block tw-max-w-[132px] tw-max-h-[44px]" src="https://get-synoshi.com/images/logos/black/synoshi.svg" alt="" > <div class="bf2024-pp-text-color tw-mb-2 sm:tw-mb-0 tw-flex tw-items-center tw-max-w-[100%] sm:tw-max-w-[60%] sm:tw-w-full tw-justify-center lg:tw-ms-3 sm:tw-me-3"> <p x-data="{ fullyDisplay: false }" x-init="document.addEventListener('DOMContentLoaded', () => { setTimeout(() => { this.fullyDisplay = true}, 1000) })" @font-size-adjusted="fullyDisplay = true" x-bind:class="fullyDisplay ? '!tw-opacity-100' : ''" data-ignore-child-elements="true" class="tw-opacity-0 tw-flex-grow-1 tw-flex-basis-0 tw-min-w-0 tw-flex-shrink-1 tw-whitespace-nowrap tw-font-[900] tw-italic tw-text-[26px] tw-mb-0 tw-me-1 md:tw-me-3"> BLACK FRIDAY <span class="tw-font-[500]">SALE</span> </p> <div class="tw-flex tw-flex-shrink-0 tw-items-center"> <svg class="flip-rtl tw-h-[22.4px] sm:tw-h-[36.8px] tw-relative tw-end-[-5px] sm:tw-end-[-2px]" viewBox="182.0893 224.42 19.1997 42" width="19.1997" height="42" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M 199.544 224.42 C 197.713 224.42 195.988 225.261 194.889 226.69 L 183.02 242.128 C 181.779 243.742 181.779 245.962 183.02 247.578 L 194.889 264.15 C 195.988 265.579 197.713 266.42 199.544 266.42 L 201.289 266.42 L 201.289 224.42 L 199.544 224.42 Z M 192.566 247.132 C 193.851 247.132 194.893 246.116 194.893 244.863 C 194.893 243.609 193.851 242.593 192.566 242.593 C 191.28 242.593 190.238 243.609 190.238 244.863 C 190.238 246.116 191.28 247.132 192.566 247.132 Z" fill="black" transform="matrix(1, 0, 0, 1, 0, -2.842170943040401e-14)"/> </svg> <div class="tw-rounded-e-[5px] tw-pe-3 tw-ps-1 tw-py-1 sm:tw-py-2 tw-bg-black tw-flex tw-items-center"> <p class="bf2024-badge-color tw-whitespace-nowrap tw-w-full tw-text-[18px] sm:tw-text-[26px] tw-italic tw-leading-[0.8] tw-mb-0"> <span class="tw-text-white tw-font-bold tw-text-[16px] sm:tw-text-[24px]">70%</span> OFF </p> </div> </div> </div> <a data-ga-category="Call To Action" data-ga-click="5 - Here’s why Synoshi is the ULTIMATE Accessible Cleaning Tool (CTA)" class="btn !tw-leading-tight btn-primary btn- ignore btn-black tw-text-white !tw-py-s8 tw-max-w-[290px] lg:tw-max-w-[290px] tw-whitespace-nowrap !tw-bg-none" href="https://get-synoshi.com/synoshi/order?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> <span data-adjust-font class="tw-w-full tw-block"> Order Now! </span> </a> </div> </div> </div> <div class="tw-bg-cover tw-bg-top md:tw-bg-center tw-bg-no-repeat tw-pt-10 md:tw-pb-10 tw-text-white flip-rtl" data-lazy-load-class="tw-bg-[url('/theme/synoshi/product/product-bg-2-mob.jpg')] md:tw-bg-[url('/theme/synoshi/product/product-bg-2.jpg')] tw-relative" data-ga-section="6 - Eco-friendly Choice" > <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <div class="md:tw-max-w-[60%] flip-rtl rtl:tw-mr-auto"> <h3 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-text-h3-mob md:tw-text-h3 md:[text-align:unset] tw-mb-10"> Synoshi gives you a powerful clean that's better for our planet </h3> <p class="tw-font-bold tw-mb-0">Long-Lasting</p> <p class="tw-mb-5">Synoshi is designed with durability in mind. It can last you for years to come, and the brushes are replaceable.</p> <p class="tw-font-bold tw-mb-0">Hazardous Chemical-Free</p> <p class="tw-mb-5">Synoshi doesn't rely on aggressive chemicals, so it's a better choice for your, your family, and the Australian environment.</p> <p class="tw-font-bold tw-mb-0">Rechargeable</p> <p class="tw-mb-5">Waste not! Synoshi uses a rechargeable 1200 mAh lithium battery, reducing your need to use wasteful single-use batteries!</p> <img data-src="https://get-synoshi.com/theme/synoshi/product//product-6.png" src="" alt="" class="md:tw-hidden"> <div class="tw-absolute tw-left-0 tw-bottom-10 tw-w-full md:tw-static md:tw-mt-5 tw-text-center md:tw-text-left" > <a href="https://get-synoshi.com/synoshi/order?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-bg-btn tw-inline-block tw-font-bold tw-px-10 tw-py-2 tw-rounded-md tw-text-center tw-text-btn-text tw-transition-all tw-drop-shadow-sm hover:tw-scale-105 hover:tw-brightness-[1.03] hover:tw-drop-shadow-md tw-leading-tight" data-ga-category="Call To Action" data-ga-click="6 - Eco-friendly Choice (CTA)" > Get -70% Discount </a> </div> </div> </div> </div> <div class="tw-bg-primary" data-ga-section="7 - Easy Way"> <div class="tw-bg-no-repeat tw-bg-[length:50%] tw-relative tw-py-10 tw-overflow-hidden tw-bg-[position:top_right]"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl md:tw-hidden" > <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-10 tw-font-bold"> The EASY way to CLEAN everything SMARTLY! </h2> </div> <div class="tw-end-0 tw-w-[80%] tw-ms-auto tw-mb-10 md:tw-w-[45%] md:tw-absolute md:tw-top-[10%] lg:tw-w-[30%] xl:tw-w-[25%]" > <img height="1102" width="716" class="flip-rtl" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="716" height="1102" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-3.png?q=80&fm=webp&fit=max&s=f85749891ce106bc6bf102c299fd4b72" alt="Synoshi scrubber in hand" > </div> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <div class="md:tw-w-[50%] lg:tw-w-[70%] xl:tw-w-[75%]"> <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-10 tw-hidden md:tw-inline-block tw-font-bold"> The EASY way to CLEAN everything SMARTLY! </h2> <div class="tw-flex tw-flex-wrap -tw-mx-colgap -tw-mt-8"> <div class="tw-px-colgap sm:tw-basis-1/2 tw-pt-8"> <div class="tw-relative tw-p-3 tw-shadow-[4px_6px_11px_0_#00000040] tw-bg-white"> <h3 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-absolute tw-end-0 tw-top-0 tw-mt-6 tw-me-9 tw-font-bold tw-text-white"> Before </h3> <img height="461" width="680" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="680" height="461" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product-3/before-5.jpg?q=50&fm=webp&fit=max&s=0e00421a12cb41e3ffae175dc2587dc8" alt="Stove before" > </div> </div> <div class="tw-px-colgap sm:tw-basis-1/2 tw-pt-8"> <div class="tw-relative tw-p-3 tw-shadow-[4px_6px_11px_0_#00000040] tw-bg-white"> <h3 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-absolute tw-end-0 tw-top-0 tw-mt-6 tw-me-9 tw-font-bold tw-text-white"> After </h3> <img height="461" width="680" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="680" height="461" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product-3/before-6.jpg?q=50&fm=webp&fit=max&s=ee6b2a47c9f435012efd5e680043c30d" alt="Stove after" > </div> </div> <div class="tw-px-colgap sm:tw-basis-1/2 tw-pt-8"> <div class="tw-relative tw-p-3 tw-shadow-[4px_6px_11px_0_#00000040] tw-bg-white"> <h3 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-absolute tw-end-0 tw-top-0 tw-mt-6 tw-me-9 tw-font-bold tw-text-white"> Before </h3> <img height="460" width="678" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="678" height="460" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product-3/before-7.jpg?q=50&fm=webp&fit=max&s=54abdb56adbca0727e7b7360f1eabed1" alt="Bath before" > </div> </div> <div class="tw-px-colgap sm:tw-basis-1/2 tw-pt-8"> <div class="tw-relative tw-p-3 tw-shadow-[4px_6px_11px_0_#00000040] tw-bg-white"> <h3 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-absolute tw-end-0 tw-top-0 tw-mt-6 tw-me-9 tw-font-bold tw-text-white"> After </h3> <img height="461" width="680" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="680" height="461" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product-3/before-8.jpg?q=50&fm=webp&fit=max&s=d97eb56b361fe8b97d37330da46c14e8" alt="Bath after" > </div> </div> </div> </div> </div> </div> </div> <div class="tw-bg-cover tw-bg-no-repeat tw-text-white tw-overflow-hidden" data-lazy-load-class="tw-bg-[url('/theme/synoshi/product/bath-bg-mob.jpg')] md:tw-bg-[url('/theme/synoshi/product/bath-bg.jpg')]" data-ga-section="8 - Keep Your Bathroom" > <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <div class="md:tw-grid tw-grid-cols-2 tw-gap-5 tw-items-center"> <div class="tw-py-10"> <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 md:tw-text-start tw-mb-5 tw-font-bold"> Keep Your Bathroom Germ-Free! </h2> <p class="tw-my-10 md:tw-mb-0"> Synoshi cleans the spots where bacteria multiplies and spreads, such as corners, sink drain caps, and toilets. Don’t let contamination and germs spread in your home. Easily clean with Synoshi instead! </p> </div> <div class="flip-rtl md:tw-order-first tw-relative tw-self-end"> <img height="728" width="817" class="tw-scale-110 tw-w-full md:tw-origin-bottom-right" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="817" height="728" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-bath.png?q=50&fm=webp&fit=max&s=34d5372a838b9c9960d73a61bf42964c" alt="Bathroom easy clean with Synoshi" > <svg class="tw-absolute tw-top-0 tw-end-0 tw-w-[5rem] flip-rtl" fill="none" height="133" viewBox="0 0 133 133" width="133" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><circle cx="66.5" cy="66.5" fill="#0083fd" r="66.5"/><g fill="#fff"><path d="m93.9039 44.4899c.6574-.2965 1.3542-.4935 2.0682-.5846v-6.7869c-.0002-.2054-.06-.4062-.172-.5774s-.2712-.3052-.4577-.3853c-.1866-.0801-.3923-.1029-.5916-.0653-.1992.0375-.3831.1336-.5288.2764-3.0716 3.0076-6.8033 5.0098-10.7896 5.8407-.0709.8166-.3529 1.5999-.8177 2.2708 4.1376-.638 8.0336-2.3789 11.2892-5.0447z"/><path d="m87.2925 85.6626c-.2148.2685-.4356.5367-.6623.8045-7.6408 9.0566-19.9405 13.6309-22.0849 14.3769-3.1602-1.1773-28.4804-11.2837-28.4804-31.7448v-29.894c2.7316 2.0212 8.3876 5.532 14.6945 5.532 5.2075 0 10.365-1.8109 14.2887-4.9961 1.6096 1.3002 3.3896 2.3676 5.2889 3.1715-.0167-.1353-.0292-.2707-.0355-.4081-.012-.5974.1062-1.1901.3463-1.7358-1.7841-.807-3.4414-1.8756-4.9187-3.1715-.1879-.1658-.4287-.2571-.6779-.2571s-.49.0913-.6779.2571c-3.6285 3.2043-8.5879 5.0469-13.6119 5.0469-7.8713 0-14.9708-6.3154-15.0417-6.381-.1491-.1325-.3324-.2193-.5284-.25s-.3965-.0041-.5782.0766c-.1814.0822-.3355.2157-.4439.3845-.1084.1687-.1665.3656-.1672.567v32.058c0 9.638 5.2482 18.5572 15.1804 25.7945 7.4145 5.4043 14.7142 7.9453 15.0188 8.0503.1069.038.2194.057.3327.057.1061 0 .2116-.016.3129-.049.5924-.19 14.613-4.7569 23.3625-15.1169.3838-.4553.7527-.9102 1.1066-1.3648-.7338-.0799-1.4328-.3589-2.0234-.8077z"/><path d="m94.6819 73.8503c.1673-.0227.336-.0343.5048-.0349.1043 0 .2086.0053.3129.0127.2072-1.0205.3466-2.0539.4172-3.0932-.676.2883-1.3907.4726-2.1204.5465-.0908.8795-.2343 1.7525-.4297 2.6143.2572-.0523.5188-.0792.7812-.0803.1785.0004.3569.0121.534.0349z"/><g clip-rule="evenodd" fill-rule="evenodd"><path d="m102.967 44.2298c2.103.7865.805 14.4988-2.19 20.274-3.6503 7.0417-11.1733 7.4994-16.8418 2.7327s-4.9207-13.1086.9741-17.1681c5.8949-4.0594 15.7407-6.7055 18.0577-5.8386z"/><path d="m81.7085 37.4642c.8522.3172.3265 5.8778-.8875 8.2183-1.481 2.8543-4.5296 3.0404-6.8273 1.1079s-1.9942-5.3153.3942-6.9592 6.3809-2.7179 7.3206-2.367z"/><path d="m94.7929 74.955c.8521.3171.3264 5.8777-.8886 8.2182-1.48 2.8543-4.5286 3.0404-6.8263 1.1079-2.2976-1.9324-1.9952-5.3153.3943-6.9592 2.3894-1.6439 6.3819-2.7179 7.3206-2.3669z"/><path d="m76.0785 59.3418c.5997.2241.2295 4.1292-.6258 5.7731-1.0429 2.0086-3.1821 2.1354-4.7976.7781-1.6156-1.3574-1.4007-3.7339.2774-4.8883s4.4868-1.9092 5.146-1.6629z"/></g></g></svg> </div> </div> </div> </div> <div class="tw-py-10" data-ga-section="9 - Why Every House"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-10 tw-font-bold"> Why Every House Needs Synoshi: </h2> <div class="tw-grid tw-gap-8 md:tw-grid-cols-2 tw-items-center tw-justify-items-center"> <img height="791" width="844" class="tw-hidden md:tw-inline-block" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="844" height="791" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-4.png?q=80&fm=webp&fit=max&s=b4f627948fab13771b7fb3b9e9342e00" alt="Synoshi cleaning tool package" > <img height="449" width="385" class="md:tw-hidden tw-max-w-[70%]" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="385" height="449" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-4-mob.png?q=80&fm=webp&fit=max&s=e9a3dbce4e79cba83f83410ec45335fa" alt="Synoshi cleaning tool package" > <div class="tw-grid tw-gap-5"> <div> <p class="tw-font-bold tw-mb-0">1. Synoshi makes cleaning a breeze.</p> <p class="tw-mb-0">Clean your home faster and easier with the Synoshi cordless, handheld electric scrubber.</p> </div> <div> <p class="tw-font-bold tw-mb-0">2. The only cleaning tool you’ll ever need!</p> <p class="tw-mb-0">Get rid of all your other cleaning tools. Synoshi is the only tool you will need to clean every surface in your home.</p> </div> <div> <p class="tw-font-bold tw-mb-0">3. Get the grime out of corners.</p> <p class="tw-mb-0">Dirt and grime can build up in the corners of your home. Synoshi was designed to get into these places, leaving them sparkling clean.</p> </div> <div> <p class="tw-font-bold tw-mb-0">4. Use it anywhere!</p> <p class="tw-mb-0">Synoshi is an all-in-one solution for your home, car, bike, pans, pots & even footwear!</p> </div> <div> <p class="tw-font-bold tw-mb-0">5. Keep your money in the bank where it belongs.</p> <p class="tw-mb-0">Cleaning your home shouldn’t be expensive. Synoshi saves you a ton of money on cleaning supplies.</p> </div> </div> </div> </div> </div> <div class="tw-bg-[#E7E7E7] tw-py-9"> <style> @media (max-width: 767px) { .content-1__load-more { max-height: 150px; margin-bottom: -40px; -webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.45)), to(rgba(0,0,0,0))) } } </style> <div class="tw-text-black tw-font-bold" data-ga-section="10 - One Cleaning Tool For All Surfaces"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-10 tw-text-center"> One Cleaning Tool For All Surfaces </h2> <div x-data="{ show: false }" class="tw-relative tw-grid tw-gap-[30px] md:tw-grid-cols-3 tw-items-start"> <div class="" :class="{ 'tw-hidden md:tw-block': !show && false && 0 > 3, 'content-1__load-more': !show && false && 0 === 3, 'md:tw-hidden': !show && false && 0 > 2 }"> <div class="tw-p-s12 tw-shadow-[4px_6px_11px_0_#00000040] tw-bg-white"> <video class="lazyload" src="https://media.enence.com/theme/synoshi/product-3/4.mp4" loop muted playsinline preload="none" > <source src="https://media.enence.com/theme/synoshi/product-3/4.mp4" type="video/mp4" > </video> </div> <div class="tw-mt-s16"> <p class="tw-font-bold tw-mb-0">Stainless Steel</p> </div> </div> <div class="" :class="{ 'tw-hidden md:tw-block': !show && false && 1 > 3, 'content-1__load-more': !show && false && 1 === 3, 'md:tw-hidden': !show && false && 1 > 2 }"> <div class="tw-p-s12 tw-shadow-[4px_6px_11px_0_#00000040] tw-bg-white"> <video class="lazyload" src="https://media.enence.com/theme/synoshi/product-3/5.mp4" loop muted playsinline preload="none" > <source src="https://media.enence.com/theme/synoshi/product-3/5.mp4" type="video/mp4" > </video> </div> <div class="tw-mt-s16"> <p class="tw-font-bold tw-mb-0">Soft Surfaces</p> </div> </div> <div class="" :class="{ 'tw-hidden md:tw-block': !show && false && 2 > 3, 'content-1__load-more': !show && false && 2 === 3, 'md:tw-hidden': !show && false && 2 > 2 }"> <div class="tw-p-s12 tw-shadow-[4px_6px_11px_0_#00000040] tw-bg-white"> <video class="lazyload" src="https://media.enence.com/theme/synoshi/product-3/6.mp4" loop muted playsinline preload="none" > <source src="https://media.enence.com/theme/synoshi/product-3/6.mp4" type="video/mp4" > </video> </div> <div class="tw-mt-s16"> <p class="tw-font-bold tw-mb-0">Ceramic</p> </div> </div> </div> </div> </div> </div> <div class="tw-my-10" data-ga-section="11 - Traditional Tools"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-my-10 tw-font-bold"> Traditional Tools Can’t Compare to Synoshi </h2> <div class="tw-grid md:tw-grid-cols-2 tw-gap-6"> <div> <img height="800" width="800" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="800" height="800" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/this-hybrid-1.jpg?q=80&fm=webp&fit=max&s=64da7c5c12852b2dc160d8bd14c7a5ef" alt="Synoshi effortless cleaning" > <div class="tw-mt-5 tw-mb-2"> <svg class="tw-mx-auto tw-h-[1.2em]" fill="none" height="33" viewBox="0 0 179 33" width="179" xmlns="http://www.w3.org/2000/svg"><g fill="currentColor"><path d="m81.4131 5.77734v26.44356h-7.3861l-10.1142-12.0168v12.0168h-8.7502v-26.44356h7.3861l10.1142 12.01676v-12.01676z"/><path d="m117.711 32.0889c-2.096-.4952-3.826-1.1555-5.157-1.9808l2.895-6.5036c1.264.7263 2.695 1.3205 4.258 1.7497 1.564.4291 3.095.6602 4.525.6602 1.231 0 2.129-.132 2.662-.3631.532-.2311.798-.5942.798-1.0894 0-.5613-.366-.9574-1.031-1.2545-.699-.2642-1.863-.5943-3.46-.8914-2.063-.4292-3.76-.8914-5.124-1.3866s-2.562-1.2875-3.593-2.4099c-1.031-1.1225-1.531-2.6411-1.531-4.5558 0-1.6507.466-3.1693 1.398-4.52285.931-1.35354 2.329-2.44298 4.192-3.20228 1.863-.79232 4.125-1.15546 6.787-1.15546 1.83 0 3.627.19807 5.39.59423s3.327.95739 4.658 1.71669l-2.695 6.47057c-2.628-1.3205-5.091-1.9808-7.419-1.9808-2.296 0-3.461.5612-3.461 1.6507 0 .5282.333.9244 1.032 1.1885.698.2641 1.83.5612 3.393.8583 2.03.3631 3.76.8253 5.157 1.2875 1.398.4952 2.595 1.2875 3.627 2.41 1.031 1.1224 1.53 2.608 1.53 4.5228 0 1.6507-.466 3.1693-1.397 4.5228-.932 1.3535-2.329 2.41-4.192 3.2023s-4.126 1.1885-6.787 1.1885c-2.229 0-4.359-.2311-6.455-.7263z"/><path d="m165.521 5.77734v26.44356h-8.983v-9.7389h-8.318v9.7389h-8.983v-26.44356h8.983v9.37576h8.318v-9.37576z"/><path d="m169.846 5.77734h8.983v26.44356h-8.983z"/><path d="m111.224 18.5204c0 7.7581-6.721 14.1297-14.5063 13.7995-7.7521-.3301-13.8406-7.1638-13.275-14.8229.3327-4.5888 3.0609-8.78151 7.0866-11.02641-1.4306-1.7497-1.9297-4.22569-1.8631-6.47059.8983 1.91477 2.6949 5.05102 5.2235 5.11705-.4991-.82533-.3993-1.7497-.2995-2.83914.4991 1.58463 1.7634 2.90516 3.0609 3.86255.8983.66026 1.8964 1.18847 2.8946 1.61764.9653.39616 2.7943.52821 3.3933 1.45258.566.89132-.233 1.38652-.698 2.04682-.566.8253-.1 1.5516-1.132 1.6837-.465.066-1.098-.1981-1.5966-.1981-1.0314 0-2.0961.1981-2.9278.8583.1331-.2971.1996-.6602.1996-.9904-.0333-.8913-.3327-.8253-1.0979-.6272-1.1978.2971-2.2624.8914-3.1275 1.7497-1.8298 1.7827-2.4953 4.4898-1.6968 6.8998 1.6968 5.084 8.6837 6.2064 11.911 1.8817 1.53-2.0468 1.564-4.4238.765-6.7677-.366-1.0234-1.364-2.7731-.898-3.8625.299-.6933 1.064-.9574 1.164-1.8158.2-1.38653-.998-1.94775-2.096-2.27788-2.0625-.66027-4.0588-1.51861-5.6558-3.03722 8.0178-.69328 15.1718 5.7443 15.1718 13.7665z"/><path d="m5.15694 32.0888c-2.09605-.4952-3.82612-1.1554-5.15694-1.9808l2.89454-6.5036c1.26428.7263 2.69491 1.3205 4.25863 1.7497s3.09413.6603 4.52483.6603c1.231 0 2.1293-.1321 2.6616-.3632s.7985-.5942.7985-1.0894c0-.5612-.3327-.9574-1.0314-1.2545-.6987-.2641-1.8299-.5942-3.4269-.8914-2.096-.3961-3.79279-.8583-5.19016-1.3535-1.36409-.4952-2.56183-1.2875-3.59322-2.41-1.031385-1.1224-1.530444-2.641-1.530444-4.5558 0-1.6506.465788-3.1693 1.397364-4.52279.93158-1.35354 2.32894-2.44298 4.19209-3.20228 1.86315-.79232 4.12557-1.15547 6.78717-1.15547 1.8299 0 3.6265.19808 5.3899.59424 1.7633.39616 3.327.95739 4.6578 1.71669l-2.6949 6.47061c-2.6284-1.3206-5.0904-1.9478-7.4193-1.9478-2.2957 0-3.46016.5612-3.46016 1.6507 0 .5282.33271.9243 1.03136 1.1884.6987.2641 1.8299.5613 3.3936.8584 2.0295.3631 3.7263.8253 5.1237 1.2875 1.3974.4952 2.5951 1.2875 3.6265 2.41 1.0314 1.1224 1.5304 2.608 1.5304 4.5228 0 1.6506-.4658 3.1692-1.3973 4.5228-.9316 1.3535-2.329 2.4099-4.1921 3.2023-1.8632.7923-4.1256 1.1884-6.7872 1.1884-2.1626-.066-4.32519-.2971-6.38796-.7923z"/><path d="m43.2519 22.6141v9.5738h-8.983v-9.6729l-10.0477-16.73766h9.4821l5.4564 9.14466 5.4896-9.14466h8.6836z"/></g></svg> </div> <div class="tw-flex"> <svg class="tw-text-[#1AC70E] tw-mx-3" fill="none" height="20" viewBox="0 0 24 20" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m20.0616.5-11.19642 11.1534-4.92679-4.90884-3.93839 3.92424 8.86518 8.8312 15.13482-15.07672z" fill="currentColor"/></svg> <p class="tw-mb-0">Effortless cleaning</p> </div> <div class="tw-flex"> <svg class="tw-text-[#1AC70E] tw-mx-3" fill="none" height="20" viewBox="0 0 24 20" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m20.0616.5-11.19642 11.1534-4.92679-4.90884-3.93839 3.92424 8.86518 8.8312 15.13482-15.07672z" fill="currentColor"/></svg> <p class="tw-mb-0">Takes minutes</p> </div> <div class="tw-flex"> <svg class="tw-text-[#1AC70E] tw-mx-3" fill="none" height="20" viewBox="0 0 24 20" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m20.0616.5-11.19642 11.1534-4.92679-4.90884-3.93839 3.92424 8.86518 8.8312 15.13482-15.07672z" fill="currentColor"/></svg> <p class="tw-mb-0">1 tool</p> </div> <div class="tw-flex"> <svg class="tw-text-[#1AC70E] tw-mx-3" fill="none" height="20" viewBox="0 0 24 20" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m20.0616.5-11.19642 11.1534-4.92679-4.90884-3.93839 3.92424 8.86518 8.8312 15.13482-15.07672z" fill="currentColor"/></svg> <p class="tw-mb-0">Minimal chemicals needed</p> </div> <div class="tw-flex"> <svg class="tw-text-[#1AC70E] tw-mx-3" fill="none" height="20" viewBox="0 0 24 20" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m20.0616.5-11.19642 11.1534-4.92679-4.90884-3.93839 3.92424 8.86518 8.8312 15.13482-15.07672z" fill="currentColor"/></svg> <p class="tw-mb-0">Perfect results</p> </div> <div class="tw-flex"> <svg class="tw-text-[#1AC70E] tw-mx-3" fill="none" height="20" viewBox="0 0 24 20" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m20.0616.5-11.19642 11.1534-4.92679-4.90884-3.93839 3.92424 8.86518 8.8312 15.13482-15.07672z" fill="currentColor"/></svg> <p class="tw-mb-0">Cleans corners with ease</p> </div> </div> <div> <img height="800" width="800" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="800" height="800" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/this-hybrid-2.jpg?q=80&fm=webp&fit=max&s=83024e8abcf3d3c4bb05455c6c7219b6" alt="Traditional cleaning tools" > <div class="tw-mt-5 tw-mb-2 tw-text-center"> <div class="tw-font-bold">Traditional Cleaning Tools</div> </div> <div class="tw-flex"> <svg class="tw-text-error tw-mx-3" width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21 17.0903L14.4097 10.4999L21 3.90975L17.0903 0L10.5 6.5903L3.90975 0L0 3.90975L6.5903 10.5L0 17.0903L3.90975 21L10.5001 14.4097L17.0904 21L21 17.0903Z" fill="currentColor"/></svg> <p class="tw-mb-0">Scrubbing done by hand, very tiring.</p> </div> <div class="tw-flex"> <svg class="tw-text-error tw-mx-3" width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21 17.0903L14.4097 10.4999L21 3.90975L17.0903 0L10.5 6.5903L3.90975 0L0 3.90975L6.5903 10.5L0 17.0903L3.90975 21L10.5001 14.4097L17.0904 21L21 17.0903Z" fill="currentColor"/></svg> <p class="tw-mb-0">Takes hours</p> </div> <div class="tw-flex"> <svg class="tw-text-error tw-mx-3" width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21 17.0903L14.4097 10.4999L21 3.90975L17.0903 0L10.5 6.5903L3.90975 0L0 3.90975L6.5903 10.5L0 17.0903L3.90975 21L10.5001 14.4097L17.0904 21L21 17.0903Z" fill="currentColor"/></svg> <p class="tw-mb-0">Several tools</p> </div> <div class="tw-flex"> <svg class="tw-text-error tw-mx-3" width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21 17.0903L14.4097 10.4999L21 3.90975L17.0903 0L10.5 6.5903L3.90975 0L0 3.90975L6.5903 10.5L0 17.0903L3.90975 21L10.5001 14.4097L17.0904 21L21 17.0903Z" fill="currentColor"/></svg> <p class="tw-mb-0">Many strong chemicals needed</p> </div> <div class="tw-flex"> <svg class="tw-text-error tw-mx-3" width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21 17.0903L14.4097 10.4999L21 3.90975L17.0903 0L10.5 6.5903L3.90975 0L0 3.90975L6.5903 10.5L0 17.0903L3.90975 21L10.5001 14.4097L17.0904 21L21 17.0903Z" fill="currentColor"/></svg> <p class="tw-mb-0">Always miss a spot</p> </div> <div class="tw-flex"> <svg class="tw-text-error tw-mx-3" width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M21 17.0903L14.4097 10.4999L21 3.90975L17.0903 0L10.5 6.5903L3.90975 0L0 3.90975L6.5903 10.5L0 17.0903L3.90975 21L10.5001 14.4097L17.0904 21L21 17.0903Z" fill="currentColor"/></svg> <p class="tw-mb-0">Hidden spots stay dirty</p> </div> </div> </div> </div> </div> <div class="tw-bg-primary tw-py-10"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-10 tw-font-bold"> See SYNOSHI in Action </h2> <div data-ga-category="Element" data-ga-click="11 - Traditional Tools (Video Block Wrapper)" class="tw-w-full tw-h-full"> <div class="youtube-video" data-id="qYqchesuUlg" data-ga-category="Element" data-ga-click="11 - Traditional Tools (How to Video)"> <img height="909" width="1739" tabindex="0" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="1739" height="909" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/video-placeholder.jpg?q=80&fm=jpg&fit=max&s=ba14276103199d58d6b6e5f2812a88df" alt="Synoshi video in action thumbnail" > <div class="play-button"></div> <div class="iframe-container" style="display:none;"></div> </div> </div> </div> </div> <div class="tw-py-10 tw-bg-[#E7E7E7]"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-3 tw-font-bold"> Frequently Asked Questions </h2> <h2 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-font-normal tw-mb-10"> What people are asking about the SYNOSHI </h2> </div> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <div class="tw-grid tw-gap-y-8 tw-gap-x-7 tw-grid-cols-[2rem_1fr]" data-ga-section="12 - Frequently Asked Questions" > <svg class=" tw-w-full" fill="none" height="35" viewBox="0 0 31 35" width="31" xmlns="http://www.w3.org/2000/svg"><path d="m30.1501 20.0507c0 8.3964-7.2041 15.2936-15.5846 14.936-8.32301-.3547-14.868472-7.7639-14.257381-16.0627.365225-4.9591 3.279521-9.50446 7.614331-11.93091-1.5238-1.90405-2.08235-4.59224-1.99123-6.99330362.97525 2.08283362 2.88571 5.48115362 5.61058 5.55266362-.545-.87818-.4345-1.90905-.3123-3.09045.531 1.70667 1.8808 3.13658 3.2838 4.18783.9592.71906 2.0205 1.29439 3.1244 1.75744 1.0249.4298 3.0079.5596 3.628 1.56794.6003.97649-.2366 1.50359-.7394 2.22799-.6118.8814-.109 1.6774-1.2311 1.8122-.5118.0615-1.1947-.2139-1.7304-.2185-1.1032-.0093-2.2546.2127-3.128.9307.1297-.3314.2302-.7201.2134-1.0777-.0447-.9504-.3617-.8799-1.1793-.6808-1.2708.3097-2.4437.969-3.3746 1.888-1.95193 1.9262-2.66737 4.8693-1.81113 7.4764 1.81043 5.5126 9.33613 6.7058 12.77613 2.0549 1.6395-2.2169 1.6828-4.7986.8047-7.3123-.3856-1.1048-1.4541-3.0175-.9552-4.1839.3145-.7362 1.1271-1.0494 1.2493-1.9559.2037-1.51354-1.0674-2.10245-2.2517-2.47539-2.2214-.70012-4.3713-1.65483-6.063-3.29999 8.6321-.78236 16.3047 6.21348 16.3047 14.88978z" fill="currentColor"/></svg> <div> <h3 data-wrap-text class="tw-text-h3-mob md:tw-text-h3 !tw-text-base tw-mb-2" auto-align="auto-align"> Q: What are Synoshi’s specifications? </h3> <p class="tw-font-normal tw-mb-0"> A: Synoshi’s size is 11.5 by 18 cm. It has a power of 10W. It is very lightweight at only 300g. </p> </div> <svg class=" tw-w-full" fill="none" height="35" viewBox="0 0 31 35" width="31" xmlns="http://www.w3.org/2000/svg"><path d="m30.1501 20.0507c0 8.3964-7.2041 15.2936-15.5846 14.936-8.32301-.3547-14.868472-7.7639-14.257381-16.0627.365225-4.9591 3.279521-9.50446 7.614331-11.93091-1.5238-1.90405-2.08235-4.59224-1.99123-6.99330362.97525 2.08283362 2.88571 5.48115362 5.61058 5.55266362-.545-.87818-.4345-1.90905-.3123-3.09045.531 1.70667 1.8808 3.13658 3.2838 4.18783.9592.71906 2.0205 1.29439 3.1244 1.75744 1.0249.4298 3.0079.5596 3.628 1.56794.6003.97649-.2366 1.50359-.7394 2.22799-.6118.8814-.109 1.6774-1.2311 1.8122-.5118.0615-1.1947-.2139-1.7304-.2185-1.1032-.0093-2.2546.2127-3.128.9307.1297-.3314.2302-.7201.2134-1.0777-.0447-.9504-.3617-.8799-1.1793-.6808-1.2708.3097-2.4437.969-3.3746 1.888-1.95193 1.9262-2.66737 4.8693-1.81113 7.4764 1.81043 5.5126 9.33613 6.7058 12.77613 2.0549 1.6395-2.2169 1.6828-4.7986.8047-7.3123-.3856-1.1048-1.4541-3.0175-.9552-4.1839.3145-.7362 1.1271-1.0494 1.2493-1.9559.2037-1.51354-1.0674-2.10245-2.2517-2.47539-2.2214-.70012-4.3713-1.65483-6.063-3.29999 8.6321-.78236 16.3047 6.21348 16.3047 14.88978z" fill="currentColor"/></svg> <div> <h3 data-wrap-text class="tw-text-h3-mob md:tw-text-h3 !tw-text-base tw-mb-2" auto-align="auto-align"> Q: Is Synoshi waterproof? </h3> <p class="tw-font-normal tw-mb-0"> A: Yes, Synoshi is waterproof and can be used in a running shower or sink. However, you shouldn’t fully submerge the device in water. </p> </div> <svg class=" tw-w-full" fill="none" height="35" viewBox="0 0 31 35" width="31" xmlns="http://www.w3.org/2000/svg"><path d="m30.1501 20.0507c0 8.3964-7.2041 15.2936-15.5846 14.936-8.32301-.3547-14.868472-7.7639-14.257381-16.0627.365225-4.9591 3.279521-9.50446 7.614331-11.93091-1.5238-1.90405-2.08235-4.59224-1.99123-6.99330362.97525 2.08283362 2.88571 5.48115362 5.61058 5.55266362-.545-.87818-.4345-1.90905-.3123-3.09045.531 1.70667 1.8808 3.13658 3.2838 4.18783.9592.71906 2.0205 1.29439 3.1244 1.75744 1.0249.4298 3.0079.5596 3.628 1.56794.6003.97649-.2366 1.50359-.7394 2.22799-.6118.8814-.109 1.6774-1.2311 1.8122-.5118.0615-1.1947-.2139-1.7304-.2185-1.1032-.0093-2.2546.2127-3.128.9307.1297-.3314.2302-.7201.2134-1.0777-.0447-.9504-.3617-.8799-1.1793-.6808-1.2708.3097-2.4437.969-3.3746 1.888-1.95193 1.9262-2.66737 4.8693-1.81113 7.4764 1.81043 5.5126 9.33613 6.7058 12.77613 2.0549 1.6395-2.2169 1.6828-4.7986.8047-7.3123-.3856-1.1048-1.4541-3.0175-.9552-4.1839.3145-.7362 1.1271-1.0494 1.2493-1.9559.2037-1.51354-1.0674-2.10245-2.2517-2.47539-2.2214-.70012-4.3713-1.65483-6.063-3.29999 8.6321-.78236 16.3047 6.21348 16.3047 14.88978z" fill="currentColor"/></svg> <div> <h3 data-wrap-text class="tw-text-h3-mob md:tw-text-h3 !tw-text-base tw-mb-2" auto-align="auto-align"> Q: What is the charge type? </h3> <p class="tw-font-normal tw-mb-0"> A: Synoshi is charged with a USB Type C charger. </p> </div> <svg class=" tw-w-full" fill="none" height="35" viewBox="0 0 31 35" width="31" xmlns="http://www.w3.org/2000/svg"><path d="m30.1501 20.0507c0 8.3964-7.2041 15.2936-15.5846 14.936-8.32301-.3547-14.868472-7.7639-14.257381-16.0627.365225-4.9591 3.279521-9.50446 7.614331-11.93091-1.5238-1.90405-2.08235-4.59224-1.99123-6.99330362.97525 2.08283362 2.88571 5.48115362 5.61058 5.55266362-.545-.87818-.4345-1.90905-.3123-3.09045.531 1.70667 1.8808 3.13658 3.2838 4.18783.9592.71906 2.0205 1.29439 3.1244 1.75744 1.0249.4298 3.0079.5596 3.628 1.56794.6003.97649-.2366 1.50359-.7394 2.22799-.6118.8814-.109 1.6774-1.2311 1.8122-.5118.0615-1.1947-.2139-1.7304-.2185-1.1032-.0093-2.2546.2127-3.128.9307.1297-.3314.2302-.7201.2134-1.0777-.0447-.9504-.3617-.8799-1.1793-.6808-1.2708.3097-2.4437.969-3.3746 1.888-1.95193 1.9262-2.66737 4.8693-1.81113 7.4764 1.81043 5.5126 9.33613 6.7058 12.77613 2.0549 1.6395-2.2169 1.6828-4.7986.8047-7.3123-.3856-1.1048-1.4541-3.0175-.9552-4.1839.3145-.7362 1.1271-1.0494 1.2493-1.9559.2037-1.51354-1.0674-2.10245-2.2517-2.47539-2.2214-.70012-4.3713-1.65483-6.063-3.29999 8.6321-.78236 16.3047 6.21348 16.3047 14.88978z" fill="currentColor"/></svg> <div> <h3 data-wrap-text class="tw-text-h3-mob md:tw-text-h3 !tw-text-base tw-mb-2" auto-align="auto-align"> Q: How long can Synoshi last on one charge? </h3> <p class="tw-font-normal tw-mb-0"> A: Synoshi has up to 45 minutes of use time so that you can clean the whole home in one charge! </p> </div> <svg class=" tw-w-full" fill="none" height="35" viewBox="0 0 31 35" width="31" xmlns="http://www.w3.org/2000/svg"><path d="m30.1501 20.0507c0 8.3964-7.2041 15.2936-15.5846 14.936-8.32301-.3547-14.868472-7.7639-14.257381-16.0627.365225-4.9591 3.279521-9.50446 7.614331-11.93091-1.5238-1.90405-2.08235-4.59224-1.99123-6.99330362.97525 2.08283362 2.88571 5.48115362 5.61058 5.55266362-.545-.87818-.4345-1.90905-.3123-3.09045.531 1.70667 1.8808 3.13658 3.2838 4.18783.9592.71906 2.0205 1.29439 3.1244 1.75744 1.0249.4298 3.0079.5596 3.628 1.56794.6003.97649-.2366 1.50359-.7394 2.22799-.6118.8814-.109 1.6774-1.2311 1.8122-.5118.0615-1.1947-.2139-1.7304-.2185-1.1032-.0093-2.2546.2127-3.128.9307.1297-.3314.2302-.7201.2134-1.0777-.0447-.9504-.3617-.8799-1.1793-.6808-1.2708.3097-2.4437.969-3.3746 1.888-1.95193 1.9262-2.66737 4.8693-1.81113 7.4764 1.81043 5.5126 9.33613 6.7058 12.77613 2.0549 1.6395-2.2169 1.6828-4.7986.8047-7.3123-.3856-1.1048-1.4541-3.0175-.9552-4.1839.3145-.7362 1.1271-1.0494 1.2493-1.9559.2037-1.51354-1.0674-2.10245-2.2517-2.47539-2.2214-.70012-4.3713-1.65483-6.063-3.29999 8.6321-.78236 16.3047 6.21348 16.3047 14.88978z" fill="currentColor"/></svg> <div> <h3 data-wrap-text class="tw-text-h3-mob md:tw-text-h3 !tw-text-base tw-mb-2" auto-align="auto-align"> Q: What’s included with Synoshi? </h3> <p class="tw-font-normal tw-mb-0"> A: 1 device, 1 charging cable, 1 manual, 1 round grey brush, 1 sponge, 1 scouring pad, and 1 attachment head. </p> </div> <svg class=" tw-w-full" fill="none" height="35" viewBox="0 0 31 35" width="31" xmlns="http://www.w3.org/2000/svg"><path d="m30.1501 20.0507c0 8.3964-7.2041 15.2936-15.5846 14.936-8.32301-.3547-14.868472-7.7639-14.257381-16.0627.365225-4.9591 3.279521-9.50446 7.614331-11.93091-1.5238-1.90405-2.08235-4.59224-1.99123-6.99330362.97525 2.08283362 2.88571 5.48115362 5.61058 5.55266362-.545-.87818-.4345-1.90905-.3123-3.09045.531 1.70667 1.8808 3.13658 3.2838 4.18783.9592.71906 2.0205 1.29439 3.1244 1.75744 1.0249.4298 3.0079.5596 3.628 1.56794.6003.97649-.2366 1.50359-.7394 2.22799-.6118.8814-.109 1.6774-1.2311 1.8122-.5118.0615-1.1947-.2139-1.7304-.2185-1.1032-.0093-2.2546.2127-3.128.9307.1297-.3314.2302-.7201.2134-1.0777-.0447-.9504-.3617-.8799-1.1793-.6808-1.2708.3097-2.4437.969-3.3746 1.888-1.95193 1.9262-2.66737 4.8693-1.81113 7.4764 1.81043 5.5126 9.33613 6.7058 12.77613 2.0549 1.6395-2.2169 1.6828-4.7986.8047-7.3123-.3856-1.1048-1.4541-3.0175-.9552-4.1839.3145-.7362 1.1271-1.0494 1.2493-1.9559.2037-1.51354-1.0674-2.10245-2.2517-2.47539-2.2214-.70012-4.3713-1.65483-6.063-3.29999 8.6321-.78236 16.3047 6.21348 16.3047 14.88978z" fill="currentColor"/></svg> <div> <h3 data-wrap-text class="tw-text-h3-mob md:tw-text-h3 !tw-text-base tw-mb-2" auto-align="auto-align"> Q: Is Synoshi quiet? </h3> <p class="tw-font-normal tw-mb-0"> A: Yes! Although Synoshi scrubs very fast, it is extremely quiet and barely vibrates. </p> </div> </div> </div> </div> <div class="tw-py-10 tw-bg-zinc-100"> <div data-ga-section="13 - Customer Reviews"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" x-data="initReviews" > <h3 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-mb-8 tw-font-bold"> Customer Reviews </h3> <div class="sm:tw-columns-2 md:tw-columns-3 tw-gap-6"> <div class="tw-p-3 md:tw-p-4 tw-border tw-rounded-md tw-break-inside-avoid tw-border-neutral-500 tw-mb-6" :class="{ 'tw-block': false || showAllReviewsForMobile, 'tw-hidden': true && !showAllReviewsForMobile, 'md:tw-block': true }" data-ga-category="Element" data-ga-click="13 - Customer Reviews (Review - 1)" > <div class="tw-grid tw-grid-cols-[auto_1fr] tw-gap-x-s8 tw-items-center"> <div class="tw-mb-2 tw-font-bold"> Kate B </div> </div> <div class="tw-mb-2 tw-flex tw-text-badge-success"> <svg class="tw-h-[1.2em]" fill="none" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m22 11-2.44-2.77996.34-3.68-3.61-.82-1.89-3.180001-3.4 1.460001-3.4-1.460001-1.89 3.180001-3.61.81.34 3.68-2.44 2.78996 2.44 2.78-.34 3.69 3.61.82 1.89 3.18 3.4-1.47 3.4 1.46 1.89-3.18 3.61-.82-.34-3.68zm-13 5-4-4 1.41-1.41 2.59 2.58 6.59-6.58996 1.41 1.42z" fill="currentColor"/></svg> <span class="tw-ms-3"> Verified Customer </span> </div> <img height="72" width="456" class="tw-mb-2 tw-object-contain tw-h-5 tw-object-left" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="456" height="72" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/gadgets/stars.png?q=80&fm=png&fit=max&s=3528047370d8167955a8fbdd4a4c70d5" alt="Trustpilot stars" > <p class="tw-mb-0"> This small, handy device is really well thought-out. It's cordless and is USB-chargeable, which is super handy! And with the various brush heads you can really remove any kind of dirt. I am delighted with it and I for sure recommend this product. </p> <div class="tw-w-3/4 tw-pt-2"> <img height="366" width="490" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="490" height="366" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/reviews/rev-1.jpg?q=50&fm=webp&fit=max&s=3d19e7357dbfbdf08d1cafc7d01575e7" alt="White shoes before and after" > </div> </div> <div class="tw-p-3 md:tw-p-4 tw-border tw-rounded-md tw-break-inside-avoid tw-border-neutral-500 tw-mb-6" :class="{ 'tw-block': false || showAllReviewsForMobile, 'tw-hidden': true && !showAllReviewsForMobile, 'md:tw-block': true }" data-ga-category="Element" data-ga-click="13 - Customer Reviews (Review - 2)" > <div class="tw-grid tw-grid-cols-[auto_1fr] tw-gap-x-s8 tw-items-center"> <div class="tw-mb-2 tw-font-bold"> Tom A </div> </div> <div class="tw-mb-2 tw-flex tw-text-badge-success"> <svg class="tw-h-[1.2em]" fill="none" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m22 11-2.44-2.77996.34-3.68-3.61-.82-1.89-3.180001-3.4 1.460001-3.4-1.460001-1.89 3.180001-3.61.81.34 3.68-2.44 2.78996 2.44 2.78-.34 3.69 3.61.82 1.89 3.18 3.4-1.47 3.4 1.46 1.89-3.18 3.61-.82-.34-3.68zm-13 5-4-4 1.41-1.41 2.59 2.58 6.59-6.58996 1.41 1.42z" fill="currentColor"/></svg> <span class="tw-ms-3"> Verified Customer </span> </div> <img height="72" width="456" class="tw-mb-2 tw-object-contain tw-h-5 tw-object-left" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="456" height="72" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/gadgets/stars.png?q=80&fm=png&fit=max&s=3528047370d8167955a8fbdd4a4c70d5" alt="Trustpilot stars" > <p class="tw-mb-0"> Its a very handy product at a good price. Ive used Synoshi at home for cleaning dishes; oven; pots n pans and bathroom. Im a bus driver at work and Ive been using Synoshi to clean the alloy wheels of my buses and to apply polish. Great battery life quick charging easy to use and with reasonable power for such a small unit. </p> <div class="tw-w-3/4 tw-pt-2"> <img height="274" width="490" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="490" height="274" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/reviews/rev-2.jpg?q=50&fm=webp&fit=max&s=8ae47b7333b085eee2a06c6468fc256a" alt="Bathroom before and after" > </div> </div> <div class="tw-p-3 md:tw-p-4 tw-border tw-rounded-md tw-break-inside-avoid tw-border-neutral-500 tw-mb-6" :class="{ 'tw-block': false || showAllReviewsForMobile, 'tw-hidden': true && !showAllReviewsForMobile, 'md:tw-block': true }" data-ga-category="Element" data-ga-click="13 - Customer Reviews (Review - 3)" > <div class="tw-grid tw-grid-cols-[auto_1fr] tw-gap-x-s8 tw-items-center"> <div class="tw-mb-2 tw-font-bold"> Tanya C </div> </div> <div class="tw-mb-2 tw-flex tw-text-badge-success"> <svg class="tw-h-[1.2em]" fill="none" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m22 11-2.44-2.77996.34-3.68-3.61-.82-1.89-3.180001-3.4 1.460001-3.4-1.460001-1.89 3.180001-3.61.81.34 3.68-2.44 2.78996 2.44 2.78-.34 3.69 3.61.82 1.89 3.18 3.4-1.47 3.4 1.46 1.89-3.18 3.61-.82-.34-3.68zm-13 5-4-4 1.41-1.41 2.59 2.58 6.59-6.58996 1.41 1.42z" fill="currentColor"/></svg> <span class="tw-ms-3"> Verified Customer </span> </div> <img height="72" width="456" class="tw-mb-2 tw-object-contain tw-h-5 tw-object-left" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="456" height="72" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/gadgets/stars.png?q=80&fm=png&fit=max&s=3528047370d8167955a8fbdd4a4c70d5" alt="Trustpilot stars" > <p class="tw-mb-0"> Arrived promptly and when I used it for the first time was amazed at how good it cleaned off marks that have hard to remove for two years </p> <div class="tw-w-3/4 tw-pt-2"> <img height="324" width="500" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="500" height="324" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/reviews/rev-3.jpg?q=50&fm=webp&fit=max&s=0e0db184b344238e6bfbd011c8c7f627" alt="Kitchen floor before and after" > </div> </div> <div class="tw-p-3 md:tw-p-4 tw-border tw-rounded-md tw-break-inside-avoid tw-border-neutral-500 tw-mb-6" :class="{ 'tw-block': false || showAllReviewsForMobile, 'tw-hidden': true && !showAllReviewsForMobile, 'md:tw-block': true }" data-ga-category="Element" data-ga-click="13 - Customer Reviews (Review - 4)" > <div class="tw-grid tw-grid-cols-[auto_1fr] tw-gap-x-s8 tw-items-center"> <div class="tw-mb-2 tw-font-bold"> Kennedy M </div> </div> <div class="tw-mb-2 tw-flex tw-text-badge-success"> <svg class="tw-h-[1.2em]" fill="none" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m22 11-2.44-2.77996.34-3.68-3.61-.82-1.89-3.180001-3.4 1.460001-3.4-1.460001-1.89 3.180001-3.61.81.34 3.68-2.44 2.78996 2.44 2.78-.34 3.69 3.61.82 1.89 3.18 3.4-1.47 3.4 1.46 1.89-3.18 3.61-.82-.34-3.68zm-13 5-4-4 1.41-1.41 2.59 2.58 6.59-6.58996 1.41 1.42z" fill="currentColor"/></svg> <span class="tw-ms-3"> Verified Customer </span> </div> <img height="72" width="456" class="tw-mb-2 tw-object-contain tw-h-5 tw-object-left" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="456" height="72" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/gadgets/stars.png?q=80&fm=png&fit=max&s=3528047370d8167955a8fbdd4a4c70d5" alt="Trustpilot stars" > <p class="tw-mb-0"> The device is very handy! My wife used it to try it out in the shower to remove mild mold on the sealing joints and achieved a very satisfactory result. But she was even more excited when she was able to quickly and easily make our leather suite in the living room shine. She planning to do the upholstery in our car next! </p> <div class="tw-w-3/4 tw-pt-2"> <img height="503" width="487" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="487" height="503" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/reviews/rev-4.jpg?q=50&fm=webp&fit=max&s=a2d74ebd7f1aefc35342d53e3adf35ef" alt="Car seat before and after" > </div> </div> <div class="tw-p-3 md:tw-p-4 tw-border tw-rounded-md tw-break-inside-avoid tw-border-neutral-500 tw-mb-6" :class="{ 'tw-block': false || showAllReviewsForMobile, 'tw-hidden': true && !showAllReviewsForMobile, 'md:tw-block': true }" data-ga-category="Element" data-ga-click="13 - Customer Reviews (Review - 5)" > <div class="tw-grid tw-grid-cols-[auto_1fr] tw-gap-x-s8 tw-items-center"> <div class="tw-mb-2 tw-font-bold"> Olivia W </div> </div> <div class="tw-mb-2 tw-flex tw-text-badge-success"> <svg class="tw-h-[1.2em]" fill="none" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m22 11-2.44-2.77996.34-3.68-3.61-.82-1.89-3.180001-3.4 1.460001-3.4-1.460001-1.89 3.180001-3.61.81.34 3.68-2.44 2.78996 2.44 2.78-.34 3.69 3.61.82 1.89 3.18 3.4-1.47 3.4 1.46 1.89-3.18 3.61-.82-.34-3.68zm-13 5-4-4 1.41-1.41 2.59 2.58 6.59-6.58996 1.41 1.42z" fill="currentColor"/></svg> <span class="tw-ms-3"> Verified Customer </span> </div> <img height="72" width="456" class="tw-mb-2 tw-object-contain tw-h-5 tw-object-left" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="456" height="72" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/gadgets/stars.png?q=80&fm=png&fit=max&s=3528047370d8167955a8fbdd4a4c70d5" alt="Trustpilot stars" > <p class="tw-mb-0"> My Synoshi is wonderful. No need for scrubbing. I’m usually exhausted after cleaning my 2 showers. I could do both showers within an hour ? </p> <div class="tw-w-3/4 tw-pt-2"> <img height="285" width="470" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="470" height="285" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/reviews/rev-5.jpg?q=50&fm=webp&fit=max&s=96d723b8160dd8d565f81ff0611277f3" alt="Shower before and after" > </div> </div> <div class="tw-p-3 md:tw-p-4 tw-border tw-rounded-md tw-break-inside-avoid tw-border-neutral-500 " :class="{ 'tw-block': false || showAllReviewsForMobile, 'tw-hidden': true && !showAllReviewsForMobile, 'md:tw-block': true }" data-ga-category="Element" data-ga-click="13 - Customer Reviews (Review - 6)" > <div class="tw-grid tw-grid-cols-[auto_1fr] tw-gap-x-s8 tw-items-center"> <div class="tw-mb-2 tw-font-bold"> Emma T </div> </div> <div class="tw-mb-2 tw-flex tw-text-badge-success"> <svg class="tw-h-[1.2em]" fill="none" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"><path d="m22 11-2.44-2.77996.34-3.68-3.61-.82-1.89-3.180001-3.4 1.460001-3.4-1.460001-1.89 3.180001-3.61.81.34 3.68-2.44 2.78996 2.44 2.78-.34 3.69 3.61.82 1.89 3.18 3.4-1.47 3.4 1.46 1.89-3.18 3.61-.82-.34-3.68zm-13 5-4-4 1.41-1.41 2.59 2.58 6.59-6.58996 1.41 1.42z" fill="currentColor"/></svg> <span class="tw-ms-3"> Verified Customer </span> </div> <img height="72" width="456" class="tw-mb-2 tw-object-contain tw-h-5 tw-object-left" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="456" height="72" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/gadgets/stars.png?q=80&fm=png&fit=max&s=3528047370d8167955a8fbdd4a4c70d5" alt="Trustpilot stars" > <p class="tw-mb-0"> Its a great little cleaner; and we are very pleased with the results. Your response to our purchase was prompt and efficient. No problems whatsoever. we have recommended the Synoshi to family and friends. Thank You. </p> <div class="tw-w-3/4 tw-pt-2"> <img height="287" width="494" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="494" height="287" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/reviews/rev-6.jpg?q=50&fm=webp&fit=max&s=cd935fa7967beefa1c20fa50d47dc05b" alt="Shower faucet before and after" > </div> </div> </div> </div> </div> </div> <div class="tw-bg-center tw-bg-cover tw-bg-no-repeat tw-text-white tw-text-center flip-rtl" data-lazy-load-class="tw-bg-[url('/theme/synoshi/product/limited-bg-mob.jpg?1')] tw-bg-[url('/theme/synoshi/product/limited-bg.jpg?1')]" data-ga-section="14 - Limited Time Promo" > <div class="tw-bg-contain tw-bg-top tw-bg-no-repeat tw-pt-[22vw] md:tw-pt-10" data-lazy-load-class="tw-bg-[url('/theme/synoshi/product/limited-foam.png')] md:tw-bg-none" > <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl tw-grid md:tw-grid-cols-[40%_1fr] tw-gap-1 md:tw-gap-10 tw-items-center flip-rtl" > <div> <h3 data-wrap-text class="tw-text-center tw-text-h3-mob md:tw-text-h3 tw-my-0 tw-font-bold"> Limited Time Promo:<br> 70% Off SYNOSHI Power Scrubber! </h3> <a href="https://get-synoshi.com/synoshi/order?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-bg-btn tw-inline-block tw-font-bold tw-px-10 tw-py-2 tw-rounded-md tw-text-center tw-text-btn-text tw-transition-all tw-drop-shadow-sm hover:tw-scale-105 hover:tw-brightness-[1.03] hover:tw-drop-shadow-md tw-leading-tight tw-my-7" data-ga-category="Call To Action" data-ga-click="14 - Limited Time Promo (CTA)" > Get -70% Discount </a> <h4 data-wrap-text class="tw-text-center tw-text-h4-mob md:tw-text-h4 tw-mb-0 md:tw-mb-10 tw-font-bold"> Secure Your SYNOSHI Power Scrubber Now, Before This Promotion Ends... </h4> </div> <div class="md:-tw-order-1 tw-self-end"> <img height="486" width="436" class="tw-max-w-[70%] md:tw-max-w-full tw-mx-auto flip-rtl" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="436" height="486" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/assets/theme/synoshi/product/product-5.png?q=80&fm=webp&fit=max&0=1&s=19d7a02a2b8d547dfdc29e255afb32bc" alt="Synoshi power scrubber" > </div> </div> </div> </div> <footer class="tw-bg-footer-bg tw-text-footer-text tw-py-7" data-ga-section="15 - Footer" > <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl" > <span data-ga-category="Link" data-ga-click="15 - Footer (Logo)"> <svg class="tw-max-w-[12rem] tw-mb-7 tw-mx-auto md:tw-mx-0" fill="none" height="33" viewBox="0 0 179 33" width="179" xmlns="http://www.w3.org/2000/svg"><g fill="currentColor"><path d="m81.4131 5.77734v26.44356h-7.3861l-10.1142-12.0168v12.0168h-8.7502v-26.44356h7.3861l10.1142 12.01676v-12.01676z"/><path d="m117.711 32.0889c-2.096-.4952-3.826-1.1555-5.157-1.9808l2.895-6.5036c1.264.7263 2.695 1.3205 4.258 1.7497 1.564.4291 3.095.6602 4.525.6602 1.231 0 2.129-.132 2.662-.3631.532-.2311.798-.5942.798-1.0894 0-.5613-.366-.9574-1.031-1.2545-.699-.2642-1.863-.5943-3.46-.8914-2.063-.4292-3.76-.8914-5.124-1.3866s-2.562-1.2875-3.593-2.4099c-1.031-1.1225-1.531-2.6411-1.531-4.5558 0-1.6507.466-3.1693 1.398-4.52285.931-1.35354 2.329-2.44298 4.192-3.20228 1.863-.79232 4.125-1.15546 6.787-1.15546 1.83 0 3.627.19807 5.39.59423s3.327.95739 4.658 1.71669l-2.695 6.47057c-2.628-1.3205-5.091-1.9808-7.419-1.9808-2.296 0-3.461.5612-3.461 1.6507 0 .5282.333.9244 1.032 1.1885.698.2641 1.83.5612 3.393.8583 2.03.3631 3.76.8253 5.157 1.2875 1.398.4952 2.595 1.2875 3.627 2.41 1.031 1.1224 1.53 2.608 1.53 4.5228 0 1.6507-.466 3.1693-1.397 4.5228-.932 1.3535-2.329 2.41-4.192 3.2023s-4.126 1.1885-6.787 1.1885c-2.229 0-4.359-.2311-6.455-.7263z"/><path d="m165.521 5.77734v26.44356h-8.983v-9.7389h-8.318v9.7389h-8.983v-26.44356h8.983v9.37576h8.318v-9.37576z"/><path d="m169.846 5.77734h8.983v26.44356h-8.983z"/><path d="m111.224 18.5204c0 7.7581-6.721 14.1297-14.5063 13.7995-7.7521-.3301-13.8406-7.1638-13.275-14.8229.3327-4.5888 3.0609-8.78151 7.0866-11.02641-1.4306-1.7497-1.9297-4.22569-1.8631-6.47059.8983 1.91477 2.6949 5.05102 5.2235 5.11705-.4991-.82533-.3993-1.7497-.2995-2.83914.4991 1.58463 1.7634 2.90516 3.0609 3.86255.8983.66026 1.8964 1.18847 2.8946 1.61764.9653.39616 2.7943.52821 3.3933 1.45258.566.89132-.233 1.38652-.698 2.04682-.566.8253-.1 1.5516-1.132 1.6837-.465.066-1.098-.1981-1.5966-.1981-1.0314 0-2.0961.1981-2.9278.8583.1331-.2971.1996-.6602.1996-.9904-.0333-.8913-.3327-.8253-1.0979-.6272-1.1978.2971-2.2624.8914-3.1275 1.7497-1.8298 1.7827-2.4953 4.4898-1.6968 6.8998 1.6968 5.084 8.6837 6.2064 11.911 1.8817 1.53-2.0468 1.564-4.4238.765-6.7677-.366-1.0234-1.364-2.7731-.898-3.8625.299-.6933 1.064-.9574 1.164-1.8158.2-1.38653-.998-1.94775-2.096-2.27788-2.0625-.66027-4.0588-1.51861-5.6558-3.03722 8.0178-.69328 15.1718 5.7443 15.1718 13.7665z"/><path d="m5.15694 32.0888c-2.09605-.4952-3.82612-1.1554-5.15694-1.9808l2.89454-6.5036c1.26428.7263 2.69491 1.3205 4.25863 1.7497s3.09413.6603 4.52483.6603c1.231 0 2.1293-.1321 2.6616-.3632s.7985-.5942.7985-1.0894c0-.5612-.3327-.9574-1.0314-1.2545-.6987-.2641-1.8299-.5942-3.4269-.8914-2.096-.3961-3.79279-.8583-5.19016-1.3535-1.36409-.4952-2.56183-1.2875-3.59322-2.41-1.031385-1.1224-1.530444-2.641-1.530444-4.5558 0-1.6506.465788-3.1693 1.397364-4.52279.93158-1.35354 2.32894-2.44298 4.19209-3.20228 1.86315-.79232 4.12557-1.15547 6.78717-1.15547 1.8299 0 3.6265.19808 5.3899.59424 1.7633.39616 3.327.95739 4.6578 1.71669l-2.6949 6.47061c-2.6284-1.3206-5.0904-1.9478-7.4193-1.9478-2.2957 0-3.46016.5612-3.46016 1.6507 0 .5282.33271.9243 1.03136 1.1884.6987.2641 1.8299.5613 3.3936.8584 2.0295.3631 3.7263.8253 5.1237 1.2875 1.3974.4952 2.5951 1.2875 3.6265 2.41 1.0314 1.1224 1.5304 2.608 1.5304 4.5228 0 1.6506-.4658 3.1692-1.3973 4.5228-.9316 1.3535-2.329 2.4099-4.1921 3.2023-1.8632.7923-4.1256 1.1884-6.7872 1.1884-2.1626-.066-4.32519-.2971-6.38796-.7923z"/><path d="m43.2519 22.6141v9.5738h-8.983v-9.6729l-10.0477-16.73766h9.4821l5.4564 9.14466 5.4896-9.14466h8.6836z"/></g></svg> </span> <div class="tw-flex tw-justify-center md:tw-block"> <div class="tw-grid tw-grid-cols-1 lg:tw-grid-cols-4 md:tw-grid-cols-2 tw-gap-5"> <hr class="tw-border-[#909090] tw-block md:tw-hidden"> <div> <div class="tw-font-bold tw-self-center md:tw-order-first"> SHOP </div> <div class="tw-mt-4"> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/products)" href="https://get-synoshi.com/synoshi/products?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Get brush heads </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/wholesale)" href="https://get-synoshi.com/synoshi/wholesale?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Wholesale </a> </div> </div> <div> <div class="tw-font-bold tw-self-center md:tw-order-first"> INFO </div> <div class="tw-mt-4"> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/terms)" href="https://get-synoshi.com/synoshi/terms?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Terms of Service </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/privacy)" href="https://get-synoshi.com/synoshi/privacy?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Privacy policy </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/shipping)" href="https://get-synoshi.com/synoshi/shipping?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Shipping policy </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/billing-policy)" href="https://get-synoshi.com/synoshi/billing-policy?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Billing policy </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" rel="nofollow noopener noreferrer" data-ga-category="Link" data-ga-click="15 - Footer (Affiliates)" href="https://ekomlita.everflowclient.io/affiliate/signup/?q=5J473L"> Affiliate </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/user-guide)" href="https://get-synoshi.com/synoshi/user-guide?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> User Guide </a> </div> </div> <div> <div class="tw-font-bold tw-self-center md:tw-order-first"> ORDER </div> <div class="tw-mt-4"> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/tracking)" href="https://get-synoshi.com/synoshi/tracking?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Track My Order </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (/synoshi/return)" href="https://get-synoshi.com/synoshi/return?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1"> Returns & Refunds Policy </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (Order Link 3)" href="https://support.synoshi.com/en/support/home"> FAQ </a> <a class="tw-text-footer-text tw-text-opacity-50 tw-block tw-mt-1" data-ga-category="Link" data-ga-click="15 - Footer (Order Link 4)" href="https://support.synoshi.com/en/support/home"> Contact </a> </div> </div> <div> <div class="tw-font-bold tw-self-center md:tw-order-first"> CUSTOMER SERVICES: </div> <div class="tw-mt-4"> <div class="tw-text-footer-text tw-text-opacity-50"> <svg class="tw-h-[1.4em] tw-inline-block tw-me-2" enable-background="new 0 0 512 512" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m488.9 373-75.9-64.6c-.4-.3-.7-.6-1.1-.8-19.9-12.7-45.5-9.9-62.2 6.8l-41.4 41.4c-2.9 2.9-7.1 3.7-10.9 2.2-46.7-19.3-85.1-48.4-114.1-86.5-22.1-29-30.1-52.1-31.1-55.3-.1-.7-.3-1.4-.6-2.1-1.6-3.8-.7-8 2.2-10.9l41.4-41.4c16.7-16.7 19.5-42.3 6.8-62.2-.1-.2-.2-.3-.3-.5l-54.8-76.2c-17.4-26.8-54.9-30.8-77.5-8.3l-8.3 8.3-29.6 29.7c-35.3 35.2-41.1 88.3-16.7 153.3 20.9 55.7 62.7 116.7 117.7 171.7 56.3 56.3 118.9 98.9 176.3 119.8 56.8 20.8 117.3 23.3 160.1-19.5l27.9-27.9c22.5-22.4 18.5-59.7-7.9-77zm-88.3-48.9 75.9 64.5c.3.3.7.6 1.1.8 16.2 10.3 18.7 33 5.1 46.5l-2.1 2.1-129.4-96.9 12.6-12.6c9.9-9.8 24.9-11.6 36.8-4.4zm-270.5-290.2c.1.2.2.3.3.5l54.8 76.2c7.4 11.9 5.7 27.1-4.2 37.1l-12.2 12.2-87.6-128.8 2.3-2.3c13.7-13.6 36.3-11 46.6 5.1zm185.6 444.8c-54.7-20-114.8-60.9-169.1-115.2-53-53-93.2-111.5-113.1-164.6-14.9-39.9-24.9-95.1 12.2-132.2l21.2-21.2 87.5 128.7-14.8 14.8c-8.4 8.4-11 20.8-6.8 31.8 3.2 13 17.7 39.8 32.3 59.7 21.6 29.2 60.7 69.5 124.7 95.9 11.2 4.7 24.1 2.1 32.7-6.5l14.5-14.5 129.4 96.9-11.6 11.5c-39.8 39.8-97.6 30.1-139.1 14.9z" fill="currentColor"/></svg> Contact us: </div> <div class="tw-items-center tw-mt-1"> <a href="tel:+12189002005" data-ga-category="Link" data-ga-click="15 - Footer (Phone Number)" class="tw-text-footer-text tw-text-opacity-50 tw-block tw-text-left" > +1 (218) 900-2005 </a> <a href="tel:+442080891401" data-ga-category="Link" data-ga-click="15 - Footer (Phone Number)" class="tw-text-footer-text tw-text-opacity-50 tw-block tw-text-left" > +442080891401 </a> <a href="tel:+498004009820" data-ga-category="Link" data-ga-click="15 - Footer (Phone Number)" class="tw-text-footer-text tw-text-opacity-50 tw-block tw-text-left" > +498004009820 </a> <a href="tel:+61290995746" data-ga-category="Link" data-ga-click="15 - Footer (Phone Number)" class="tw-text-footer-text tw-text-opacity-50 tw-block tw-text-left" > +61290995746 </a> </div> <div class="tw-flex tw-text-footer-text tw-text-opacity-50 tw-items-center tw-mt-1"> <svg class="tw-h-[1.4em] tw-inline-block tw-me-2" enable-background="new 0 0 483.3 483.3" viewBox="0 0 483.3 483.3" xmlns="http://www.w3.org/2000/svg"><path d="m424.3 57.8h-365.2c-32.6 0-59.1 26.4-59.1 59v249.6c0 32.6 26.5 59.1 59.1 59.1h365.1c32.6 0 59.1-26.5 59.1-59.1v-249.4c.1-32.7-26.4-59.2-59-59.2zm32.1 308.7c0 17.7-14.4 32.1-32.1 32.1h-365.2c-17.7 0-32.1-14.4-32.1-32.1v-249.5c0-17.7 14.4-32.1 32.1-32.1h365.1c17.7 0 32.1 14.4 32.1 32.1z" fill="currentColor"/><path d="m304.8 238.6 118.2-106c5.5-5 6-13.5 1-19.1-5-5.5-13.5-6-19.1-1l-163 146.3-31.8-28.4c-.1-.1-.2-.2-.2-.3-.7-.7-1.4-1.3-2.2-1.9l-129.4-115.9c-5.6-5-14.1-4.5-19.1 1.1s-4.5 14.1 1.1 19.1l119.6 106.9-119.1 111.6c-5.4 5.1-5.7 13.6-.6 19.1 2.7 2.8 6.3 4.3 9.9 4.3 3.3 0 6.6-1.2 9.2-3.6l120.9-113.1 32.8 29.3c2.6 2.3 5.8 3.4 9 3.4s6.5-1.2 9-3.5l33.7-30.2 120.2 114.2c2.6 2.5 6 3.7 9.3 3.7 3.6 0 7.1-1.4 9.8-4.2 5.1-5.4 4.9-14-.5-19.1z" fill="currentColor"/></svg> <a href="https://get-synoshi.com/synoshi/contact?l=en&c=gbp&vndr=evf&evf=1&offid=48&affiliate_id=792&uuid=01938a5a-949b-7ed8-98bd-62bada057b32&hj=1&gae=1&eppss=1&dab=0&shdp=0&sruep=1&slr=1&sale=bf2024&ppdf=credit&_=7191%2C2624%2C4288%2C5827%2C6050%2C6341%2C6390%2C7039%2C7399&sntp=1" class="tw-text-footer-text tw-text-opacity-50 tw-inline-block" data-ga-category="Link" data-ga-click="15 - Footer (Email)" > Send us an email </a> </div> </div> </div> </div> </div> </div> </footer> <div class="tw-bg-white tw-text-black tw-py-2"> <div class="tw-container tw-px-container md:tw-px-container-md lg:tw-px-container-lg xl:tw-px-container-xl tw-flex tw-flex-col tw-justify-between tw-items-center md:tw-flex-row" > <p class="tw-tex-p tw-mb-0">® 2024 Synoshi All rights reserved. </p> <div class=" tw-w-full md:tw-w-auto"> <div class="tw-flex tw-flex-row tw-flex-wrap tw-items-center tw-justify-center"> <img class="tw-m-2 md:tw-my-0 tw-object-contain tw-w-[60px]" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="" height="" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/theme/images/processors/visa.svg" alt="Visa" > <img class="tw-m-2 md:tw-my-0 tw-object-contain tw-w-[60px]" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="" height="" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/theme/images/processors/mastercard.svg" alt="Mastercard" > <img class="tw-m-2 md:tw-my-0 tw-object-contain tw-w-[60px]" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="" height="" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/theme/images/processors/paypal.svg" alt="Paypal" > <img class="tw-m-2 md:tw-my-0 tw-object-contain tw-w-[60px]" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="" height="" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/theme/images/processors/klarna.svg" alt="Klarna" > <img class="tw-m-2 md:tw-my-0 tw-object-contain tw-w-[60px]" src='data:image/svg+xml;charset=utf-8,<svg fill="transparent" width="" height="" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"/></svg>' data-src="https://get-synoshi.com/theme/images/processors/amex-color.svg" alt="American Experess" > </div> </div> <div wire:snapshot="{"data":{"locale":"en","shouldRender":false,"languageSelector":[["de","en","es","es-mx","fi","fr","it","nl","nb","sv","pt","pt-br","ar","ja","pl","tr","ro","el","cs","sl","sk","hu","da","hr","es-co","bg","he","sr"],{"s":"arr"}],"currentUrl":"https:\/\/get-synoshi.com\/synoshi\/product?affiliate_id=792&c=gbp&evf=1&l=en&offid=48&source_id=og-uk&uid=5192&vndr=evf"},"memo":{"id":"PKW6udWqRgRVqs6yhPI0","name":"footer-language-selector","path":"synoshi\/product","method":"GET","children":[],"scripts":[],"assets":[],"errors":[],"locale":"en"},"checksum":"9f03bb3974f3f15b82540ade72895bbf2398c8d1e81fc7f3cc4ad8e2734f8906"}" wire:effects="[]" wire:id="PKW6udWqRgRVqs6yhPI0" class="tw-hidden"> </div> </div> </div> <style> .bf-2024-bg { background: -o-radial-gradient(50% 50%, 50% 50%, #41CEF6 0%, #3DB1E4 50.5%, #3994D3 100%); background: radial-gradient(50% 50% at 50% 50%, #41CEF6 0%, #3DB1E4 50.5%, #3994D3 100%); } .bf2024-pp-text-color { color: #000; } .bf2024-op-text-color { color: #000; } .bf2024-badge-color { color: #3DB4E5; } </style> <script> document.addEventListener("DOMContentLoaded", function () { var youtubeVideos = document.querySelectorAll(".youtube-video"); var eventsList = ["click", "keypress"]; youtubeVideos.forEach(function (video) { eventsList.forEach(function (event) { video.addEventListener(event, function () { video.style.paddingBottom = '56.25%'; var videoId = this.getAttribute("data-id"); var iframe = document.createElement("iframe"); iframe.setAttribute("src", (videoId.indexOf("?") !== -1 ? ("https://www.youtube.com/embed/" + videoId) : ("https://www.youtube.com/embed/" + videoId + "?autoplay=1&mute=1&rel=0")) ); iframe.setAttribute("frameborder", "0"); iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"); iframe.setAttribute("allowfullscreen", ""); iframe.setAttribute("width", "100%"); iframe.setAttribute("height", "100%"); var iframeContainer = this.querySelector(".iframe-container"); iframeContainer.innerHTML = ""; iframeContainer.appendChild(iframe); iframeContainer.style.display = "block"; this.querySelector("img").style.display = "none"; this.querySelector(".play-button").style.display = "none"; }); }); }); }); </script> <style> .youtube-video .iframe-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .youtube-video { position: relative; display: block; width: 100%; overflow: hidden; } .youtube-video img { width: 100%; height: auto; } .youtube-video .play-button { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 64px; height: 64px; cursor: pointer; } </style> <script> (function () { document.querySelectorAll('[data-ga-click]').forEach((element) => { element.addEventListener('click', function (event) { typeof gatag !== 'undefined' && gatag('event', 'Click', { 'event_category': element.dataset.gaCategory, 'event_label': element.dataset.gaClick }); }); }); })(); (function () { function handleIntersection(entries, observer) { entries.forEach(function (entry) { if (entry.isIntersecting) { const sectionId = entry.target.dataset.gaSection; typeof gatag !== 'undefined' && gatag('event', 'Scroll', { 'event_category': 'Section', 'event_label': sectionId }); observer.unobserve(entry.target); } }); } var observer = new IntersectionObserver(handleIntersection); document.querySelectorAll('[data-ga-section]').forEach(function (section) { observer.observe(section); }.bind(this)); })() </script> <script> function initReviews() { return { showAllReviewsForMobile: !Boolean(), showMore() { this.showAllReviewsForMobile = !this.showAllReviewsForMobile; } } } </script> </div> <script data-navigate-once="true">window.livewireScriptConfig = {"csrf":"yB8zWFjuiPod2wb2llU36AKH5nVeTdwA1CPyQ7gz","uri":"\/livewire\/update","progressBar":"","nonce":""};</script> <link rel="modulepreload" href="https://get-synoshi.com/build/assets/tracktor-68a71fb6.js" /><script type="module" src="https://get-synoshi.com/build/assets/tracktor-68a71fb6.js" data-navigate-track="reload"></script> <script> const eventsToWaitFor = ['alpine:init', 'load']; const triggeredEvents = new Set(); function handleEvent(event) { triggeredEvents.add(event.type); if (eventsToWaitFor.every(e => triggeredEvents.has(e))) { executeAfterAllEvents(); } } eventsToWaitFor.forEach(event => window.addEventListener(event, handleEvent)); function executeAfterAllEvents() { typeof tracktor !== "undefined" && tracktor.init('https://tracktor.me', "01938a5a-949b-7ed8-98bd-62bada057b32") .then(function () { let segments = [{"key":"page_category","value":"product"},{"key":"ip_country","value":"SG"},{"key":"brand","value":"synoshi"},{"key":"locale","value":"en"},{"key":"vendor","value":"evf"}]; let segmentSlugs = segments.find(item => item.key === "product_slugs"); let slugs = [ ...(Alpine.store('cartOptions')?.options || []), ...(Alpine.store('cartDeliveryOptions')?.options.map(item => item.data) || []) ] .map(item => item.productId) .concat((segmentSlugs?.value || "").split(",")) .filter(Boolean) .filter((item, index, self) => self.indexOf(item) === index) .sort() .join(','); if (slugs) { if (segmentSlugs) { segmentSlugs.value = slugs; } else { segments.push({ key: "product_slugs", value: slugs }); } } tracktor.recordVisit( {"l":"en","c":"gbp","vndr":"evf","evf":"1","offid":"48","affiliate_id":"792","uuid":"01938a5a-949b-7ed8-98bd-62bada057b32","hj":"1","gae":"1","eppss":"1","sruep":"1","slr":"1","sale":"bf2024","ppdf":"credit","_":"7191,2624,4288,5827,6050,6341,6390,7039,7399","sntp":"1"}, segments, null ).catch(function (error) { console.error(error); tracktor.initFallback("01938a5a-949b-7ed8-98bd-62bada057b32").then(function () { tracktor.recordVisit( {"l":"en","c":"gbp","vndr":"evf","evf":"1","offid":"48","affiliate_id":"792","uuid":"01938a5a-949b-7ed8-98bd-62bada057b32","hj":"1","gae":"1","eppss":"1","sruep":"1","slr":"1","sale":"bf2024","ppdf":"credit","_":"7191,2624,4288,5827,6050,6341,6390,7039,7399","sntp":"1"}, segments, null ).catch((error) => console.error(error)); }) }); tracktor.addInputListeners(); }) .catch((error) => console.error(error)); } </script> </body> </html>