@xsolla/metrika
Version:
A lightweight integration library for Xsolla Metrics (XMTS) that simplifies user tracking and analytics setup.
1 lines • 83.6 kB
JavaScript
!function(){"use strict";const e=2592e5,t="thumbmark",i="https://api.thumbmarkjs.com",n={exclude:[],include:[],stabilize:["private","iframe"],logging:!0,timeout:5e3,cache_api_call:!0,cache_lifetime_in_ms:0,performance:!1,experimental:!1,property_name_factory:e=>`${t}_${e}`},r={private:[{exclude:["canvas"],browsers:["firefox","safari>=17","brave"]},{exclude:["audio"],browsers:["samsungbrowser","safari"]},{exclude:["fonts"],browsers:["firefox"]},{exclude:["audio.sampleHash","hardware.deviceMemory","header.acceptLanguage.q","system.hardwareConcurrency","plugins"],browsers:["brave"]},{exclude:["tls.extensions"],browsers:["firefox","chrome","safari"]},{exclude:["header.acceptLanguage"],browsers:["edge","chrome"]}],iframe:[{exclude:["system.applePayVersion","system.cookieEnabled"],browsers:["safari"]},{exclude:["permissions"]}],vpn:[{exclude:["ip"]}],always:[{exclude:["speech"],browsers:["brave","firefox"]}]},o="undefined"!=typeof window?window.OfflineAudioContext||window.webkitOfflineAudioContext:null;function a(e){let t=0;for(let i=0;i<e.length;++i)t+=Math.abs(e[i]);return t}function s(e,t,i){let n=[];for(let t=0;t<e[0].data.length;t++){let i=[];for(let n=0;n<e.length;n++)i.push(e[n].data[t]);n.push(c(i))}const r=new Uint8ClampedArray(n);return new ImageData(r,t,i)}function c(e){if(0===e.length)return 0;const t={};for(const i of e)t[i]=(t[i]||0)+1;let i=e[0];for(const e in t)t[e]>t[i]&&(i=parseInt(e,10));return i}function l(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}const d=new Uint32Array([597399067,2869860233,951274213,2716044179]);function u(e,t){return e<<t|e>>>32-t}function h(e,t=0){if(t=t?0|t:0,"string"==typeof e&&(e=function(e){if("undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e).buffer;const t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<128?t.push(n):n<2048?t.push(192|n>>6,128|63&n):n<55296||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(i++,n=65536+((1023&n)<<10|1023&e.charCodeAt(i)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return new Uint8Array(t).buffer}(e)),!(e instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");const i=new Uint32Array([t,t,t,t]);!function(e,t){const i=e.byteLength/16|0,n=new Uint32Array(e,0,4*i);for(let e=0;e<i;e++){const i=n.subarray(4*e,4*(e+1));i[0]=Math.imul(i[0],d[0]),i[0]=u(i[0],15),i[0]=Math.imul(i[0],d[1]),t[0]=t[0]^i[0],t[0]=u(t[0],19),t[0]=t[0]+t[1],t[0]=Math.imul(t[0],5)+1444728091,i[1]=Math.imul(i[1],d[1]),i[1]=u(i[1],16),i[1]=Math.imul(i[1],d[2]),t[1]=t[1]^i[1],t[1]=u(t[1],17),t[1]=t[1]+t[2],t[1]=Math.imul(t[1],5)+197830471,i[2]=Math.imul(i[2],d[2]),i[2]=u(i[2],17),i[2]=Math.imul(i[2],d[3]),t[2]=t[2]^i[2],t[2]=u(t[2],15),t[2]=t[2]+t[3],t[2]=Math.imul(t[2],5)+2530024501,i[3]=Math.imul(i[3],d[3]),i[3]=u(i[3],18),i[3]=Math.imul(i[3],d[0]),t[3]=t[3]^i[3],t[3]=u(t[3],13),t[3]=t[3]+t[0],t[3]=Math.imul(t[3],5)+850148119}}(e,i),function(e,t){const i=e.byteLength/16|0,n=e.byteLength%16,r=new Uint32Array(4),o=new Uint8Array(e,16*i,n);switch(n){case 15:r[3]=r[3]^o[14]<<16;case 14:r[3]=r[3]^o[13]<<8;case 13:r[3]=r[3]^o[12],r[3]=Math.imul(r[3],d[3]),r[3]=u(r[3],18),r[3]=Math.imul(r[3],d[0]),t[3]=t[3]^r[3];case 12:r[2]=r[2]^o[11]<<24;case 11:r[2]=r[2]^o[10]<<16;case 10:r[2]=r[2]^o[9]<<8;case 9:r[2]=r[2]^o[8],r[2]=Math.imul(r[2],d[2]),r[2]=u(r[2],17),r[2]=Math.imul(r[2],d[3]),t[2]=t[2]^r[2];case 8:r[1]=r[1]^o[7]<<24;case 7:r[1]=r[1]^o[6]<<16;case 6:r[1]=r[1]^o[5]<<8;case 5:r[1]=r[1]^o[4],r[1]=Math.imul(r[1],d[1]),r[1]=u(r[1],16),r[1]=Math.imul(r[1],d[2]),t[1]=t[1]^r[1];case 4:r[0]=r[0]^o[3]<<24;case 3:r[0]=r[0]^o[2]<<16;case 2:r[0]=r[0]^o[1]<<8;case 1:r[0]=r[0]^o[0],r[0]=Math.imul(r[0],d[0]),r[0]=u(r[0],15),r[0]=Math.imul(r[0],d[1]),t[0]=t[0]^r[0]}}(e,i),function(e,t){t[0]=t[0]^e.byteLength,t[1]=t[1]^e.byteLength,t[2]=t[2]^e.byteLength,t[3]=t[3]^e.byteLength,t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0,t[0]=l(t[0]),t[1]=l(t[1]),t[2]=l(t[2]),t[3]=l(t[3]),t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0}(e,i);const n=new Uint8Array(i.buffer);return Array.from(n).map((e=>e.toString(16).padStart(2,"0"))).join("")}async function m(e){for(var t;!document.body;)await p(50);const i=document.createElement("iframe");i.setAttribute("frameBorder","0");const n=i.style;n.setProperty("position","fixed"),n.setProperty("display","block","important"),n.setProperty("visibility","visible"),n.setProperty("border","0"),n.setProperty("opacity","0"),i.src="about:blank",document.body.appendChild(i);const r=i.contentDocument||(null===(t=i.contentWindow)||void 0===t?void 0:t.document);if(!r)throw new Error("Iframe document is not accessible");e({iframe:r}),setTimeout((()=>{document.body.removeChild(i)}),0)}function p(e,t){return new Promise((i=>setTimeout(i,e,t)))}const f=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],w=["monospace","sans-serif","serif"];function g(e,t){return e.font=`72px ${t}`,e.measureText("WwMmLli0Oo").width}function b(){var e;const t=document.createElement("canvas"),i=null!==(e=t.getContext("webgl"))&&void 0!==e?e:t.getContext("experimental-webgl");if(i&&"getParameter"in i)try{const e=(i.getParameter(i.VENDOR)||"").toString(),t=(i.getParameter(i.RENDERER)||"").toString();let n={vendor:e,renderer:t,version:(i.getParameter(i.VERSION)||"").toString(),shadingLanguageVersion:(i.getParameter(i.SHADING_LANGUAGE_VERSION)||"").toString()};if(!t.length||!e.length){const e=i.getExtension("WEBGL_debug_renderer_info");if(e){const t=(i.getParameter(e.UNMASKED_VENDOR_WEBGL)||"").toString(),r=(i.getParameter(e.UNMASKED_RENDERER_WEBGL)||"").toString();t&&(n.vendorUnmasked=t),r&&(n.rendererUnmasked=r)}}return n}catch(e){}return"undefined"}function v(){const e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],t[3]}const y=(e,t,i,n)=>{const r=(i-t)/n;let o=0;for(let i=0;i<n;i++)o+=e(t+(i+.5)*r);return o*r};const x=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function S(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};const e=[{name:"Brave",detect:()=>!!navigator.brave}];for(const t of e)if(t.detect()){const e=k(navigator.userAgent);return{name:t.name,version:e.version}}return k(navigator.userAgent)}function k(e){var t,i,n,r,o,a;const s=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>EdgA|EdgiOS|Edg)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>OPR|OPX)\/(?<version>\d+(?:\.\d+)+)/,/Opera[\s\/](?<version>\d+(?:\.\d+)+)/,/Opera Mini\/(?<version>\d+(?:\.\d+)+)/,/Opera Mobi\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Vivaldi)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>CriOS)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>FxiOS)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Chrome|Chromium)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Firefox|Waterfox|Iceweasel|IceCat)\/(?<version>\d+(?:\.\d+)+)/,/Version\/(?<version1>[\d.]+).*Safari\/[\d.]+|(?<name>Safari)\/(?<version2>[\d.]+)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)+)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)+)/],c={edg:"Edge",edga:"Edge",edgios:"Edge",opr:"Opera",opx:"Opera",crios:"Chrome",fxios:"Firefox",samsung:"SamsungBrowser",vivaldi:"Vivaldi"};for(const l of s){const s=e.match(l);if(s){let e=null===(t=s.groups)||void 0===t?void 0:t.name,d=(null===(i=s.groups)||void 0===i?void 0:i.version)||(null===(n=s.groups)||void 0===n?void 0:n.version1)||(null===(r=s.groups)||void 0===r?void 0:r.version2);if(e||!(null===(o=s.groups)||void 0===o?void 0:o.version1)&&!(null===(a=s.groups)||void 0===a?void 0:a.version2)||(e="Safari"),!e&&l.source.includes("Opera Mini")&&(e="Opera Mini"),!e&&l.source.includes("Opera Mobi")&&(e="Opera Mobi"),!e&&l.source.includes("Opera")&&(e="Opera"),!e&&s[1]&&(e=s[1]),!d&&s[2]&&(d=s[2]),e)return{name:c[e.toLowerCase()]||e,version:d||"unknown"}}}return{name:"unknown",version:"unknown"}}function E(){if("undefined"==typeof navigator||!navigator.userAgent)return!1;const e=navigator.userAgent;return/Mobi|Android|iPhone|iPod|IEMobile|Opera Mini|Opera Mobi|webOS|BlackBerry|Windows Phone/i.test(e)&&!/iPad/i.test(e)}function _(){let e=[];const t={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(t).forEach((i=>{t[i].forEach((t=>{matchMedia(`(${i}: ${t})`).matches&&e.push(`${i}: ${t}`)}))})),e}function C(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{const e=window.ApplePaySession.supportsVersion;for(let t=15;t>0;t--)if(e(t))return t}catch(e){return 0}return 0}const P="SamsungBrowser"!==S().name?1:3;let O,I=null;function L(e){const t=[];return function e(i){if(i&&i.toJSON&&"function"==typeof i.toJSON&&(i=i.toJSON()),void 0===i)return;if("number"==typeof i)return isFinite(i)?""+i:"null";if("object"!=typeof i)return JSON.stringify(i);let n,r;if(Array.isArray(i)){for(r="[",n=0;n<i.length;n++)n&&(r+=","),r+=e(i[n])||"null";return r+"]"}if(null===i)return"null";if(-1!==t.indexOf(i))throw new TypeError("Converting circular structure to JSON");const o=t.push(i)-1,a=Object.keys(i).sort();for(r="",n=0;n<a.length;n++){const t=a[n],o=e(i[t]);o&&(r&&(r+=","),r+=JSON.stringify(t)+":"+o)}return t.splice(o,1),"{"+r+"}"}(e)||""}const T=["𝔄","𝔅","ℭ","𝔇","𝔈","𝔉","𝔸","𝔹","ℂ","𝔻","𝔼","𝔽"],M=["β","ψ","λ","ε","ζ","α","ξ","μ","ρ","φ","κ","τ","η","σ","ι","ω","γ","ν","χ","δ","θ","π","υ","ο"];function A(e,t){return`<math><mrow>${t}</mrow></math>`}function R(){let e="<mo>∏</mo>";return T.forEach(((t,i)=>{const n=2*i,r=M.slice(n,n+2);2===r.length&&(e+=`<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`)})),A(0,`<munderover><mmultiscripts>${e}</mmultiscripts></munderover>`)}function B(){const e=[];return T.forEach(((t,i)=>{const n=2*i,r=M.slice(n,n+2);2===r.length&&e.push(A(0,`<mmultiscripts><mi>${t}</mi><none/><mi>${r[1]}</mi><mprescripts></mprescripts><mi>${r[0]}</mi><none/></mmultiscripts>`))})),e}const N={audio:async function(){return o?async function(){return new Promise(((e,t)=>{try{const t=new o(1,5e3,44100),i=t.createBufferSource(),n=t.createOscillator();n.frequency.value=1e3;const r=t.createDynamicsCompressor();let s;r.threshold.value=-50,r.knee.value=40,r.ratio.value=12,r.attack.value=0,r.release.value=.2,n.connect(r),r.connect(t.destination),n.start(),t.oncomplete=n=>{s=n.renderedBuffer.getChannelData(0),e({sampleHash:a(s),maxChannels:t.destination.maxChannelCount,channelCountMode:i.channelCountMode})},t.startRendering()}catch(e){t(e)}}))}():null},canvas:async function(){return new Promise((e=>{const t=Array.from({length:3},(()=>function(){const e=document.createElement("canvas"),t=e.getContext("2d");if(!t)return null;e.width=280,e.height=20;const i=t.createLinearGradient(0,0,e.width,e.height);i.addColorStop(0,"red"),i.addColorStop(1/6,"orange"),i.addColorStop(2/6,"yellow"),i.addColorStop(.5,"green"),i.addColorStop(4/6,"blue"),i.addColorStop(5/6,"indigo"),i.addColorStop(1,"violet"),t.fillStyle=i,t.fillRect(0,0,e.width,e.height);const n="Random Text WMwmil10Oo";t.font="23.123px Arial",t.fillStyle="black",t.fillText(n,-5,15),t.fillStyle="rgba(0, 0, 255, 0.5)",t.fillText(n,-3.3,17.7),t.beginPath(),t.moveTo(0,0),t.lineTo(2*e.width/7,e.height),t.strokeStyle="white",t.lineWidth=2,t.stroke();return t.getImageData(0,0,e.width,e.height)}())).filter((e=>null!==e));0!==t.length?e({commonPixelsHash:h(s(t,280,20).data.toString()).toString()}):e(null)}))},fonts:async function(e){return new Promise((e=>{try{m((async({iframe:t})=>{const i=t.createElement("canvas").getContext("2d");if(!i)return void e(null);const n=w.map((e=>g(i,e)));let r={};f.forEach((e=>{const t=g(i,e);n.includes(t)||(r[e]=t)})),e(r)}))}catch(t){e(null)}}))},hardware:function(){return new Promise(((e,t)=>{const i=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,n=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:b(),architecture:v(),deviceMemory:i.toString()||"undefined",jsHeapSizeLimit:n.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:y(Math.asin,-1,1,97),cos:y(Math.cos,0,Math.PI,97),largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),sin:y(Math.sin,-Math.PI,Math.PI,97),tan:y(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){const t=(null==e?void 0:e.permissions_to_check)||x;return function(e,t){const i={};return t.forEach((t=>{const n=function(e){if(0===e.length)return null;const t={};e.forEach((e=>{const i=String(e);t[i]=(t[i]||0)+1}));let i=e[0],n=1;return Object.keys(t).forEach((e=>{t[e]>n&&(i=e,n=t[e])})),i}(e.map((e=>t in e?e[t]:void 0)).filter((e=>void 0!==e)));n&&(i[t]=n)})),i}(await Promise.all(Array.from({length:3},(()=>async function(e){const t={};for(const i of e)try{const e=await navigator.permissions.query({name:i});t[i]=e.state.toString()}catch(e){}return t}(t)))),t)},plugins:async function(){const e=[];if(navigator.plugins)for(let t=0;t<navigator.plugins.length;t++){const i=navigator.plugins[t];e.push([i.name,i.filename,i.description].join("|"))}return new Promise((t=>{t({plugins:e})}))},screen:function(){return new Promise((e=>{if("undefined"==typeof matchMedia||"undefined"==typeof screen)return void e(null);const t={is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:_()};E()&&navigator.maxTouchPoints>0&&(t.resolution=function(){const e=window.screen.width,t=window.screen.height;return`${Math.max(e,t).toString()}x${Math.min(e,t).toString()}`}()),e(t)}))},system:function(){return new Promise((e=>{const t=S();e({platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:t.name,version:t.version},mobile:E(),applePayVersion:C(),cookieEnabled:window.navigator.cookieEnabled})}))},webgl:async function(){"undefined"!=typeof document&&(O=document.createElement("canvas"),O.width=200,O.height=100,I=O.getContext("webgl"));try{if(!I)throw new Error("WebGL not supported");const e=Array.from({length:P},(()=>function(){try{if(!I)throw new Error("WebGL not supported");const e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",t="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",i=I.createShader(I.VERTEX_SHADER),n=I.createShader(I.FRAGMENT_SHADER);if(!i||!n)throw new Error("Failed to create shaders");if(I.shaderSource(i,e),I.shaderSource(n,t),I.compileShader(i),!I.getShaderParameter(i,I.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+I.getShaderInfoLog(i));if(I.compileShader(n),!I.getShaderParameter(n,I.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+I.getShaderInfoLog(n));const r=I.createProgram();if(!r)throw new Error("Failed to create shader program");if(I.attachShader(r,i),I.attachShader(r,n),I.linkProgram(r),!I.getProgramParameter(r,I.LINK_STATUS))throw new Error("Shader program linking failed: "+I.getProgramInfoLog(r));I.useProgram(r);const o=137,a=new Float32Array(4*o),s=2*Math.PI/o;for(let e=0;e<o;e++){const t=e*s;a[4*e]=0,a[4*e+1]=0,a[4*e+2]=Math.cos(t)*(O.width/2),a[4*e+3]=Math.sin(t)*(O.height/2)}const c=I.createBuffer();I.bindBuffer(I.ARRAY_BUFFER,c),I.bufferData(I.ARRAY_BUFFER,a,I.STATIC_DRAW);const l=I.getAttribLocation(r,"position");I.enableVertexAttribArray(l),I.vertexAttribPointer(l,2,I.FLOAT,!1,0,0),I.viewport(0,0,O.width,O.height),I.clearColor(0,0,0,1),I.clear(I.COLOR_BUFFER_BIT),I.drawArrays(I.LINES,0,2*o);const d=new Uint8ClampedArray(O.width*O.height*4);return I.readPixels(0,0,O.width,O.height,I.RGBA,I.UNSIGNED_BYTE,d),new ImageData(d,O.width,O.height)}catch(e){return new ImageData(1,1)}finally{I&&(I.bindBuffer(I.ARRAY_BUFFER,null),I.useProgram(null),I.viewport(0,0,I.drawingBufferWidth,I.drawingBufferHeight),I.clearColor(0,0,0,0))}}()));return{commonPixelsHash:h(s(e,O.width,O.height).data.toString()).toString()}}catch(e){return{webgl:"unsupported"}}},webrtc:async function(e){return new Promise((t=>{try{const i=window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection;if(!i)return void t({supported:!1,error:"WebRTC not supported"});const n=new i({iceCandidatePoolSize:1,iceServers:[]});n.createDataChannel(""),(async()=>{try{const i={offerToReceiveAudio:!0,offerToReceiveVideo:!0},r=await n.createOffer(i);await n.setLocalDescription(r);const o=r.sdp||"",a=[...new Set((o.match(/extmap:\d+ [^\n\r]+/g)||[]).map((e=>e.replace(/extmap:\d+ /,""))))].sort(),s=e=>{const t=o.match(new RegExp(`m=${e} [^\\s]+ [^\\s]+ ([^\\n\\r]+)`));return t?t[1].split(" "):[]},c=(e,t)=>t.map((t=>{const i=new RegExp(`(rtpmap|fmtp|rtcp-fb):${t} (.+)`,"g"),n=[...o.matchAll(i)];if(!n.length)return null;const r={};return n.forEach((t=>{const[i,n,o]=t,a=o.split("/");"rtpmap"===n?(r.mimeType=`${e}/${a[0]}`,r.clockRate=+a[1],"audio"===e&&(r.channels=+a[2]||1)):"rtcp-fb"===n?(r.feedbackSupport=r.feedbackSupport||[],r.feedbackSupport.push(o)):"fmtp"===n&&(r.sdpFmtpLine=o)})),r})).filter(Boolean),l=c("audio",s("audio")),d=c("video",s("video")),u={audio:{count:l.length,hash:h(L(l))},video:{count:d.length,hash:h(L(d))},extensionsHash:h(L(a))},m=(null==e?void 0:e.timeout)||5e3,p=Math.floor(.9*m),f=await new Promise((e=>{const t=setTimeout((()=>{n.removeEventListener("icecandidate",i),n.close(),e({supported:!0,...u,timeout:!0})}),p),i=r=>{const o=r.candidate;o&&o.candidate&&(clearTimeout(t),n.removeEventListener("icecandidate",i),n.close(),e({supported:!0,...u,candidateType:o.type||""}))};n.addEventListener("icecandidate",i)}));t({details:f,hash:h(L(f))})}catch(e){n.close(),t({supported:!0,error:`WebRTC offer failed: ${e.message}`})}})()}catch(e){t({supported:!1,error:`WebRTC error: ${e.message}`})}}))},speech:async function(){return new Promise((e=>{try{if("undefined"==typeof window||!window.speechSynthesis||"function"!=typeof window.speechSynthesis.getVoices)return void e({supported:!1,error:"Speech Synthesis API not supported"});let t=!1,i=null;const n=n=>{if(!t){t=!0,i&&clearTimeout(i);try{const t=n.map((e=>{const t=e=>e.replace(/\\/g,"\\\\").replace(/,/g,"\\,");return[t(e.voiceURI||""),t(e.name||""),t(e.lang||""),e.localService?"1":"0",e.default?"1":"0"].join(",")}));t.sort();const i={voiceCount:n.length,voicesHash:h(L(t))};e({details:i,hash:h(L(i))})}catch(t){e({supported:!0,error:`Voice processing failed: ${t.message}`})}}},r=window.speechSynthesis.getVoices();if(r.length>0)return void n(r);i=setTimeout((()=>{const e=window.speechSynthesis.getVoices();n(e)}),800);const o=()=>{window.speechSynthesis.removeEventListener("voiceschanged",o);const e=window.speechSynthesis.getVoices();n(e)};window.speechSynthesis.addEventListener("voiceschanged",o)}catch(t){e({supported:!1,error:`Speech Synthesis error: ${t.message}`})}}))}},D={mathml:async function(){return new Promise((e=>{try{m((async({iframe:t})=>{try{if(!function(e){try{const t=e.createElement("math");t.innerHTML="<mrow><mi>x</mi></mrow>",t.style.position="absolute",t.style.visibility="hidden",e.body.appendChild(t);const i=t.getBoundingClientRect();return e.body.removeChild(t),i.width>0&&i.height>0}catch(e){return!1}}(t))return void e({supported:!1,error:"MathML not supported"});const i=[A(0,"<msubsup><mo>∫</mo><mi>a</mi><mi>b</mi></msubsup><mfrac><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mi>g</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mfrac><mi>dx</mi>"),A(0,"<mfrac><mrow><mi>π</mi><mo>×</mo><msup><mi>r</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><mi>σ</mi></mrow></mfrac>"),A(0,"<mo>[</mo><mtable><mtr><mtd><mi>α</mi></mtd><mtd><mi>β</mi></mtd></mtr><mtr><mtd><mi>γ</mi></mtd><mtd><mi>δ</mi></mtd></mtr></mtable><mo>]</mo>"),R(),...B()],n=[];let r="";i.forEach(((e,i)=>{const o=function(e,t){try{const i=t.createElement("math");i.innerHTML=e.replace(/<\/?math>/g,""),i.style.whiteSpace="nowrap",i.style.position="absolute",i.style.visibility="hidden",i.style.top="-9999px",t.body.appendChild(i);const n=i.getBoundingClientRect(),r=(t.defaultView||window).getComputedStyle(i),o={dimensions:{width:n.width,height:n.height},fontInfo:{fontFamily:r.fontFamily,fontSize:r.fontSize,fontWeight:r.fontWeight,fontStyle:r.fontStyle,lineHeight:r.lineHeight,fontVariant:r.fontVariant||"normal",fontStretch:r.fontStretch||"normal",fontSizeAdjust:r.fontSizeAdjust||"none",textRendering:r.textRendering||"auto",fontFeatureSettings:r.fontFeatureSettings||"normal",fontVariantNumeric:r.fontVariantNumeric||"normal",fontKerning:r.fontKerning||"auto"}};return t.body.removeChild(i),o}catch(e){return{error:e.message}}}(e,t);n.push({width:o.dimensions.width,height:o.dimensions.height}),0===i&&o.fontInfo&&(r=h(L(o.fontInfo)))}));const o={fontStyleHash:r,dimensions:n};e({details:o,hash:h(L(o))})}catch(t){e({supported:!1,error:`MathML error: ${t.message}`})}}))}catch(t){e({supported:!1,error:`MathML error: ${t.message}`})}}))}},j={},U={timeout:"true"};function H(e,t){var i,n;let o=S();if("unknown"===o.name&&t){const e=null===(i=t.system)||void 0===i?void 0:i.browser;(null==e?void 0:e.name)&&(o={name:String(e.name),version:String(e.version||"unknown")})}const a=o.name.toLowerCase(),s=parseInt(o.version.split(".")[0]||"0",10),c=[...(null==e?void 0:e.exclude)||[]],l=[...new Set([...(null==e?void 0:e.stabilize)||[],"always"])];for(const e of l){const t=r[e];if(t)for(const e of t)"browsers"in e&&!(null===(n=e.browsers)||void 0===n?void 0:n.some((e=>{const t=e.match(/(.+?)(>=)(\d+)/);return t?a===t[1]&&s>=+t[3]:a===e})))||c.push(...e.exclude)}return c}function $(e,t){const i=H(t,e),n=(null==t?void 0:t.include)||[];return function e(t,r=""){const o={};for(const[a,s]of Object.entries(t)){const t=r?`${r}.${a}`:a;if("object"!=typeof s||Array.isArray(s)||null===s){const e=i.some((e=>t.startsWith(e))),r=n.some((e=>t.startsWith(e)));e&&!r||(o[a]=s)}else{const i=e(s,t);Object.keys(i).length>0&&(o[a]=i)}}return o}(e)}const V="visitor_id";function q(e){return e.storage_property_name?e.storage_property_name:e.property_name_factory(V)}const F=`${t}_${V}`;function z(e,t){try{localStorage.setItem(q(t),e)}catch(e){}}const W="cache";function G(e){try{const t=localStorage.getItem(e.property_name_factory(W));return JSON.parse(t)||{}}catch(e){}return{}}function K(t){return t.cache_lifetime_in_ms>e?Date.now()+e:Date.now()+t.cache_lifetime_in_ms}let J=null,X=null;async function Y(e){var t,r;if("undefined"==typeof document||"undefined"==typeof window)return{thumbmark:"",components:{},info:{},version:"1.7.4",error:[{type:"fatal",message:"Browser environment required"}]};try{const o={...n,...e},a=[],s=o.logging&&!sessionStorage.getItem("_tmjs_l")&&Math.random()<1e-4,c={...N,...j},{elapsed:l,resolvedComponents:d,errors:u}=await Z(c,o);a.push(...u);let m={},p={};if(s||o.experimental){const{elapsed:e,resolvedComponents:t,errors:i}=await Z(D,o);m=t,p=e,a.push(...i)}const f=o.api_key?((e,t)=>{if(e.cache_api_call){if(X)return Promise.resolve(X);const t=function(e){const t=G(e);if(t&&t.apiResponse&&t.apiResponseExpiry&&Date.now()<=t.apiResponseExpiry)return t.apiResponse}(e);if(t)return Promise.resolve(t);if(J)return J}const n=`${e.api_endpoint||i}/thumbmark`,r=function(e){try{const t=q(e);let i=localStorage.getItem(t);return i||t===F||(i=localStorage.getItem(F),i&&z(i,e)),i}catch(e){return null}}(e),o={components:t,options:e,clientHash:h(L(t)),version:"1.7.4"};if(r&&(o.visitorId=r),e.metadata){const t="function"==typeof e.metadata?e.metadata():e.metadata;t&&(("string"==typeof t?t.length:JSON.stringify(t).length)>1e3||(o.metadata=t))}const a=fetch(n,{method:"POST",headers:{"x-api-key":e.api_key,Authorization:"custom-authorized","Content-Type":"application/json"},body:JSON.stringify(o)}).then((e=>{if(!e.ok){if(403===e.status)throw new Error("INVALID_API_KEY");throw new Error(`HTTP error! status: ${e.status}`)}return e.json()})).then((t=>(t.visitorId&&t.visitorId!==r&&z(t.visitorId,e),X=t,function(e,t){e.cache_api_call&&e.cache_lifetime_in_ms&&function(e,t){const i={...G(e),...t};try{localStorage.setItem(e.property_name_factory(W),JSON.stringify(i))}catch(e){}}(e,{apiResponseExpiry:K(e),apiResponse:t})}(e,t),J=null,t))).catch((e=>{throw J=null,e})),s=e.timeout||5e3,c=new Promise((t=>{setTimeout((()=>{const i=G(e);i&&i.apiResponse?t(i.apiResponse):t({info:{timed_out:!0},...r&&{visitorId:r}})}),s)}));return J=Promise.race([a,c]),J})(o,d):null;let w=null;if(f)try{w=await f}catch(e){if(e instanceof Error&&"INVALID_API_KEY"===e.message)return{error:[{type:"api_unauthorized",message:"Invalid API key or quota exceeded"}],components:{},info:{},version:"1.7.4",thumbmark:""};a.push({type:"api_error",message:e instanceof Error?e.message:String(e)})}(null===(t=null==w?void 0:w.info)||void 0===t?void 0:t.timed_out)&&a.push({type:"api_timeout",message:"API request timed out"});const g={...l,...p},b=o.performance?{elapsed:g}:{},v=$((null==w?void 0:w.components)||{},o),y={...d,...v},x=(null==w?void 0:w.info)||{uniqueness:{score:"api only"}},S=null!==(r=null==w?void 0:w.thumbmark)&&void 0!==r?r:h(L(y)),k="1.7.4";return s&&async function(e,t,n,r={},o=[]){var a;const s=`${i}/log`,c={thumbmark:e,components:t,experimental:r,version:"1.7.4",options:n,path:null===(a=null===window||void 0===window?void 0:window.location)||void 0===a?void 0:a.pathname,...o.length>0&&{errors:o}};sessionStorage.setItem("_tmjs_l","1");try{await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)})}catch(e){}}(S,y,o,m,a).catch((()=>{})),{...(null==w?void 0:w.visitorId)&&{visitorId:w.visitorId},thumbmark:S,components:y,info:x,version:k,...b,...a.length>0&&{error:a},...Object.keys(m).length>0&&o.experimental&&{experimental:m},...(null==w?void 0:w.requestId)&&{requestId:w.requestId},...(null==w?void 0:w.metadata)&&{metadata:w.metadata}}}catch(e){return{thumbmark:"",components:{},info:{},version:"1.7.4",error:[{type:"fatal",message:e instanceof Error?e.message:String(e)}]}}}async function Z(e,t){const i={...n,...t},r=H(i).filter((e=>!e.includes("."))),o=Object.entries(e).filter((([e])=>{var t;return!(null===(t=null==i?void 0:i.exclude)||void 0===t?void 0:t.includes(e))})).filter((([e])=>!r.includes(e))).filter((([e])=>{var t,n,r,o;return(null===(t=null==i?void 0:i.include)||void 0===t?void 0:t.some((e=>e.includes("."))))?null===(n=null==i?void 0:i.include)||void 0===n?void 0:n.some((t=>t.startsWith(e))):0===(null===(r=null==i?void 0:i.include)||void 0===r?void 0:r.length)||(null===(o=null==i?void 0:i.include)||void 0===o?void 0:o.includes(e))})),a=o.map((([e])=>e)),s=o.map((([e,i])=>i(t))),c=await function(e,t,i){return Promise.all(e.map((e=>{const n=performance.now();return Promise.race([e.then((e=>({value:e,elapsed:performance.now()-n}))).catch((e=>({value:i,elapsed:performance.now()-n,error:e instanceof Error?e.message:String(e)}))),(r=t,o=i,new Promise((e=>{setTimeout((()=>e(o)),r)}))).then((e=>({value:e,elapsed:performance.now()-n,error:"timeout"})))]);var r,o})))}(s,(null==i?void 0:i.timeout)||5e3,U),l={},d={},u=[];c.forEach(((e,t)=>{var i;const n=a[t];l[n]=null!==(i=e.elapsed)&&void 0!==i?i:0,"timeout"===e.error?u.push({type:"component_timeout",message:`Component '${n}' timed out`,component:n}):e.error&&u.push({type:"component_error",message:e.error,component:n}),null!=e.value&&(d[n]=e.value)}));const h=$(d,i);return{elapsed:l,resolvedComponents:h,errors:u}}class Q{constructor(e){this.options={...n,...e}}async get(e){return Y({...this.options,...e})}getVersion(){return"1.7.4"}includeComponent(e,t){((e,t)=>{j[e]=t})(e,t)}}var ee;!function(e){e[e.HIT=1]="HIT",e[e.EXTERNAL_LINK=2]="EXTERNAL_LINK",e[e.ELEMENT_CLICK=3]="ELEMENT_CLICK",e[e.FORM_DATA=4]="FORM_DATA",e[e.CUSTOM_EVENT=5]="CUSTOM_EVENT",e[e.LCP=6]="LCP",e[e.SCROLL_TOP=10]="SCROLL_TOP",e[e.SCROLL_MIDDLE=11]="SCROLL_MIDDLE",e[e.SCROLL_BOTTOM=12]="SCROLL_BOTTOM"}(ee||(ee={}));const te=["utm_source","utm_medium","utm_campaign","utm_content","utm_term"],ie=["openstat_service","openstat_campaign","openstat_ad","openstat_source"],ne=["gclid","gbraid","wbraid","dclid","fbclid","yclid","msclkid","ttclid","twclid","li_fat_id","epik","sccid","irclickid","_kx","_openstat"],re="https://minimetrika.xsolla.com",oe="hit";class ae{constructor(e){Object.defineProperty(this,"analytics",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.analytics=e}}const se=(e,t)=>`_mm_${e}_${t}`,ce=e=>{const t=e.textContent?.trim()||"",i=t.length>50?t.slice(0,47)+"…":t,n=e.classList.item(0)||"";return(()=>{const t=["data-testid","data-qa","data-cy","data-id","data-name"];for(const i of t){const t=e.getAttribute(i);if(t)return t}return""})()||e.id||e.getAttribute("name")||e.getAttribute("aria-label")||n||i||e.tagName.toLowerCase()},le=(e=0,t=1073741824)=>Math.floor(Math.random()*(t-e))+e;class de extends ae{constructor(){super(...arguments),Object.defineProperty(this,"selector",{enumerable:!0,configurable:!0,writable:!0,value:'[data-analytics="true"]'}),Object.defineProperty(this,"listenerOptions",{enumerable:!0,configurable:!0,writable:!0,value:{capture:!0,passive:!0}}),Object.defineProperty(this,"handleClick",{enumerable:!0,configurable:!0,writable:!0,value:e=>{const t=e.target;if(!t)return;const i=t.closest(this.selector);if(!i)return;const n=this.extractUrl(i),r=n?location.href:void 0,o={type:ee.ELEMENT_CLICK,data:{en:ce(i),url:n,referer:r},useBeacon:!0};this.analytics.sendEvent(o)}})}init(){"undefined"!=typeof document&&document.addEventListener("click",this.handleClick,this.listenerOptions)}destroy(){"undefined"!=typeof document&&document.removeEventListener("click",this.handleClick,this.listenerOptions)}extractUrl(e){if(e instanceof HTMLAnchorElement&&e.href)return e.href;const t=e.getAttribute("href");return t&&!t.startsWith("javascript:")?t:void 0}}const ue=["_xm","_xsollauid","_xmvid"];class he extends ae{constructor(){super(...arguments),Object.defineProperty(this,"allowedDomains",{enumerable:!0,configurable:!0,writable:!0,value:new Set}),Object.defineProperty(this,"listenerOptions",{enumerable:!0,configurable:!0,writable:!0,value:{capture:!0,passive:!0}}),Object.defineProperty(this,"handleMouseDown",{enumerable:!0,configurable:!0,writable:!0,value:e=>{const t=this.getIds();if(!t)return;const i=e.target.closest("a");i&&this.allowedDomains.has(i.host)&&this.decorateUrl(i,t.xsollauid,t.visitorId)}}),Object.defineProperty(this,"handleKeyUp",{enumerable:!0,configurable:!0,writable:!0,value:e=>{if("Enter"!==e.key)return;const t=this.getIds();if(!t)return;const i=e.target.closest("a");i&&this.allowedDomains.has(i.host)&&this.decorateUrl(i,t.xsollauid,t.visitorId)}}),Object.defineProperty(this,"handleSubmit",{enumerable:!0,configurable:!0,writable:!0,value:e=>{const t=this.getIds();if(!t)return;const i=e.target;if(i.action)try{const e=new URL(i.action,window.location.origin);if(!this.allowedDomains.has(e.host))return;"GET"===i.method.toUpperCase()?(this.addHiddenInput(i,"_xm",t.xsollauid),t.visitorId&&this.addHiddenInput(i,"_xmvid",t.visitorId)):this.decorateFormAction(i,e,t.xsollauid,t.visitorId)}catch{}}})}init(){const{siteDomains:e}=this.analytics.config;e.forEach((e=>this.allowedDomains.add(e))),document.addEventListener("mousedown",this.handleMouseDown,this.listenerOptions),document.addEventListener("keyup",this.handleKeyUp,this.listenerOptions),document.addEventListener("submit",this.handleSubmit,this.listenerOptions)}destroy(){"undefined"!=typeof document&&(document.removeEventListener("mousedown",this.handleMouseDown,this.listenerOptions),document.removeEventListener("keyup",this.handleKeyUp,this.listenerOptions),document.removeEventListener("submit",this.handleSubmit,this.listenerOptions))}getIds(){const{xsollauid:e,visitorId:t}=this.analytics.config;return e?{xsollauid:e,visitorId:t}:null}decorateUrl(e,t,i){try{const n=new URL(e.href,window.location.origin);if(n.searchParams.get("_xm")===t||n.searchParams.get("_xsollauid")===t)return;n.searchParams.has("_xsollauid")?n.searchParams.set("_xsollauid",t):n.searchParams.set("_xm",t),i&&!n.searchParams.has("_xmvid")&&n.searchParams.set("_xmvid",i),e.href=n.toString()}catch{}}decorateFormAction(e,t,i,n){t.searchParams.has("_xsollauid")?t.searchParams.set("_xsollauid",i):t.searchParams.set("_xm",i),n&&!t.searchParams.has("_xmvid")&&t.searchParams.set("_xmvid",n),e.action=t.toString()}addHiddenInput(e,t,i){let n=e.querySelector(`input[type="hidden"][name="${t}"]`);n?n.value=i:(n=document.createElement("input"),n.type="hidden",n.name=t,n.value=i,e.appendChild(n))}static cleanUrl(){try{const e=new URL(window.location.href);let t=!1;for(const i of ue)e.searchParams.has(i)&&(e.searchParams.delete(i),t=!0);t&&history.replaceState(history.state,"",e.toString())}catch{}}}class me extends ae{constructor(){super(...arguments),Object.defineProperty(this,"selector",{enumerable:!0,configurable:!0,writable:!0,value:"a"}),Object.defineProperty(this,"allowedDomains",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"listenerOptions",{enumerable:!0,configurable:!0,writable:!0,value:{capture:!0,passive:!0}}),Object.defineProperty(this,"handleClick",{enumerable:!0,configurable:!0,writable:!0,value:e=>{const t=e.target;if(!t)return;const i=t.closest(this.selector);if(!i)return;const n=i.host;if(this.allowedDomains.includes(n))return;const r={type:ee.EXTERNAL_LINK,data:{url:i.href,referer:location.href},useBeacon:!0};this.analytics.sendEvent(r)}})}init(){const e=this.analytics.config;document.addEventListener("click",this.handleClick,this.listenerOptions),this.allowedDomains=e.siteDomains}destroy(){"undefined"!=typeof document&&document.removeEventListener("click",this.handleClick,this.listenerOptions)}}const pe=new Set,fe={passive:!0};let we=!1,ge="undefined"!=typeof location?location.href:"";const be=()=>{if("undefined"==typeof location)return;const e=location.href;if(e===ge)return;const t=ge;ge=e,((e,t)=>{pe.forEach((i=>{try{i(e,t)}catch(e){}}))})(e,t)};let ve;const ye="undefined"!=typeof History?History.prototype.pushState:void 0,xe="undefined"!=typeof History?History.prototype.replaceState:void 0;let Se,ke;const Ee=()=>{"undefined"!=typeof history&&(ye&&(Se=function(...e){const t=ye.apply(this,e);return be(),t},history.pushState=Se),xe&&(ke=function(...e){const t=xe.apply(this,e);return be(),t},history.replaceState=ke),window.addEventListener("popstate",be,fe),window.addEventListener("hashchange",be,fe))},_e=()=>{we||"undefined"!=typeof window&&(we=!0,ge="undefined"!=typeof location?location.href:ge,"navigation"in window?(ve=()=>{be()},window.navigation.addEventListener("navigate",ve)):Ee())},Ce=()=>{we&&("undefined"!=typeof window&&"navigation"in window?ve&&(window.navigation.removeEventListener("navigate",ve),ve=void 0):"undefined"!=typeof history&&"undefined"!=typeof window&&(window.removeEventListener("popstate",be,fe),window.removeEventListener("hashchange",be,fe),Se&&history.pushState===Se&&(history.pushState=ye),ke&&history.replaceState===ke&&(history.replaceState=xe),Se=void 0,ke=void 0),we=!1)},Pe=e=>(pe.add(e),we||_e(),()=>{pe.delete(e),0===pe.size&&Ce()});class Oe extends ae{constructor(){super(...arguments),Object.defineProperty(this,"removeListener",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}destroy(){this.removeListener?.(),this.removeListener=void 0}init(){"undefined"!=typeof window&&(this.removeListener||(this.removeListener=Pe(((e,t)=>{this.analytics.sendEvent({type:ee.HIT,data:{url:e,referer:t},useBeacon:!0})}))))}}class Ie extends ae{constructor(){super(...arguments),Object.defineProperty(this,"loadOptions",{enumerable:!0,configurable:!0,writable:!0,value:{once:!0,passive:!0}}),Object.defineProperty(this,"loadHandler",{enumerable:!0,configurable:!0,writable:!0,value:()=>this.sendPageLoad()})}init(){"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState?this.sendPageLoad():window.addEventListener("load",this.loadHandler,this.loadOptions))}destroy(){"undefined"!=typeof window&&window.removeEventListener("load",this.loadHandler,this.loadOptions)}sendPageLoad(){"undefined"!=typeof window&&(this.analytics.plt=(()=>{const e=performance.getEntriesByType("navigation")[0];return e&&e.loadEventEnd>0?e.loadEventEnd-e.startTime:performance.now()})(),this.analytics.sendEvent({type:ee.HIT,useBeacon:!0}))}}let Le=-1;const Te=e=>{addEventListener("pageshow",(t=>{t.persisted&&(Le=t.timeStamp,e(t))}),!0)},Me=(e,t,i,n)=>{let r,o;return a=>{t.value>=0&&(a||n)&&(o=t.value-(r??0),(o||void 0===r)&&(r=t.value,t.delta=o,t.rating=((e,t)=>e>t[1]?"poor":e>t[0]?"needs-improvement":"good")(t.value,i),e(t)))}},Ae=()=>{const e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},Re=()=>{const e=Ae();return e?.activationStart??0},Be=(e,t=-1)=>{const i=Ae();let n="navigate";return Le>=0?n="back-forward-cache":i&&(document.prerendering||Re()>0?n="prerender":document.wasDiscarded?n="restore":i.type&&(n=i.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:n}},Ne=new WeakMap;function De(e,t){return Ne.get(e)||Ne.set(e,new t),Ne.get(e)}const je=e=>{let t=!1;return()=>{t||(e(),t=!0)}};let Ue=-1;const He=new Set,$e=()=>"hidden"!==document.visibilityState||document.prerendering?1/0:0,Ve=e=>{if("hidden"===document.visibilityState){if("visibilitychange"===e.type)for(const e of He)e();isFinite(Ue)||(Ue="visibilitychange"===e.type?e.timeStamp:0,removeEventListener("prerenderingchange",Ve,!0))}},qe=()=>{if(Ue<0){const e=Re(),t=document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter((t=>"hidden"===t.name&&t.startTime>e))[0]?.startTime;Ue=t??$e(),addEventListener("visibilitychange",Ve,!0),addEventListener("prerenderingchange",Ve,!0),Te((()=>{setTimeout((()=>{Ue=$e()}))}))}return{get firstHiddenTime(){return Ue},onHidden(e){He.add(e)}}};class Fe{m;h(e){this.m?.(e)}}const ze=[2500,4e3],We=(e,t={})=>{(e=>{document.prerendering?addEventListener("prerenderingchange",(()=>e()),!0):e()})((()=>{const i=qe();let n,r=Be("LCP");const o=De(t,Fe),a=e=>{t.reportAllChanges||(e=e.slice(-1));for(const t of e)o.h(t),t.startTime<i.firstHiddenTime&&(r.value=Math.max(t.startTime-Re(),0),r.entries=[t],n())},s=((e,t,i={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const n=new PerformanceObserver((e=>{Promise.resolve().then((()=>{t(e.getEntries())}))}));return n.observe({type:e,buffered:!0,...i}),n}}catch{}})("largest-contentful-paint",a);if(s){n=Me(e,r,ze,t.reportAllChanges);const i=je((()=>{a(s.takeRecords()),s.disconnect(),n(!0)})),o=e=>{e.isTrusted&&((e=>{const t=globalThis.requestIdleCallback||setTimeout;"hidden"===document.visibilityState?e():(e=je(e),addEventListener("visibilitychange",e,{once:!0,capture:!0}),t((()=>{e(),removeEventListener("visibilitychange",e,{capture:!0})})))})(i),removeEventListener(e.type,o,{capture:!0}))};for(const e of["keydown","click","visibilitychange"])addEventListener(e,o,{capture:!0});Te((i=>{r=Be("LCP"),n=Me(e,r,ze,t.reportAllChanges),(e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))))})((()=>{r.value=performance.now()-i.timeStamp,n(!0)}))}))}}))};class Ge extends ae{init(){"undefined"!=typeof window&&"undefined"!=typeof document&&We((e=>{this.analytics.lcp=e.value,this.analytics.sendEvent({type:ee.LCP,useBeacon:!0})}))}}class Ke extends ae{constructor(){super(...arguments),Object.defineProperty(this,"thresholds",{enumerable:!0,configurable:!0,writable:!0,value:[{percent:10,type:ee.SCROLL_TOP,triggered:!1},{percent:50,type:ee.SCROLL_MIDDLE,triggered:!1},{percent:90,type:ee.SCROLL_BOTTOM,triggered:!1}]}),Object.defineProperty(this,"ticking",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"scrollOptions",{enumerable:!0,configurable:!0,writable:!0,value:{passive:!0}}),Object.defineProperty(this,"removeNavigationListener",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"listening",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"onScroll",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.ticking||(this.ticking=!0,"function"==typeof requestAnimationFrame?requestAnimationFrame(this.handleScroll):this.handleScroll())}}),Object.defineProperty(this,"handleScroll",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.ticking=!1;const e=window.scrollY,t=document.documentElement.scrollHeight,i=window.innerHeight;if(t<=1.25*i||t<=0)return;const n=(e+i)/t*100;for(const e of this.thresholds)!e.triggered&&n>=e.percent&&(e.triggered=!0,this.analytics.sendEvent({type:e.type,useBeacon:!0}));this.thresholds.every((e=>e.triggered))&&this.stopScrollListener()}}),Object.defineProperty(this,"handleNavigation",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.resetThresholds(),this.ticking=!1,this.startScrollListener()}})}init(){"undefined"!=typeof window&&"undefined"!=typeof document&&(this.removeNavigationListener||(this.removeNavigationListener=Pe(this.handleNavigation)),this.startScrollListener())}destroy(){this.stopScrollListener(),this.removeNavigationListener?.(),this.removeNavigationListener=void 0}startScrollListener(){this.listening||"undefined"==typeof window||(window.addEventListener("scroll",this.onScroll,this.scrollOptions),this.listening=!0)}stopScrollListener(){this.listening&&"undefined"!=typeof window&&(window.removeEventListener("scroll",this.onScroll,this.scrollOptions),this.listening=!1)}resetThresholds(){for(const e of this.thresholds)e.triggered=!1}}var Je,Xe="user-agent",Ye="",Ze="function",Qe="object",et="string",tt="undefined",it="browser",nt="cpu",rt="device",ot="engine",at="os",st="result",ct="name",lt="type",dt="vendor",ut="version",ht="architecture",mt="major",pt="model",ft="console",wt="mobile",gt="tablet",bt="smarttv",vt="wearable",yt="xr",xt="embedded",St="inapp",kt="brands",Et="formFactors",_t="fullVersionList",Ct="platform",Pt="platformVersion",Ot="bitness",It="sec-ch-ua",Lt=It+"-full-version-list",Tt=It+"-arch",Mt=It+"-"+Ot,At=It+"-form-factors",Rt=It+"-"+wt,Bt=It+"-"+pt,Nt=It+"-"+Ct,Dt=Nt+"-version",jt=[kt,_t,wt,pt,Ct,Pt,ht,Et,Ot],Ut="Amazon",Ht="Apple",$t="ASUS",Vt="BlackBerry",qt="Google",Ft="Huawei",zt="Lenovo",Wt="Honor",Gt="LG",Kt="Microsoft",Jt="Motorola",Xt="Nvidia",Yt="OnePlus",Zt="OPPO",Qt="Samsung",ei="Sharp",ti="Sony",ii="Xiaomi",ni="Zebra",ri="Chrome",oi="Chromium",ai="Chromecast",si="Edge",ci="Firefox",li="Opera",di="Facebook",ui="Sogou",hi="Mobile ",mi=" Browser",pi="Windows",fi=typeof window!==tt&&window.navigator?window.navigator:void 0,wi=fi&&fi.userAgentData?fi.userAgentData:void 0,gi=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},bi=function(e,t){if(typeof e===Qe&&e.length>0){for(var i in e)if(Si(t)==Si(e[i]))return!0;return!1}return!!yi(e)&&Si(t)==Si(e)},vi=function(e,t){for(var i in e)return/^(browser|cpu|device|engine|os)$/.test(i)||!!t&&vi(e[i])},yi=function(e){return typeof e===et},xi=function(e){if(e){for(var t=[],i=_i(/\\?\"/g,e).split(","),n=0;n<i.length;n++)if(i[n].indexOf(";")>-1){var r=Pi(i[n]).split(";v=");t[n]={brand:r[0],version:r[1]}}else t[n]=Pi(i[n]);return t}},Si=function(e){return yi(e)?e.toLowerCase():e},ki=function(e){return yi(e)?_i(/[^\d\.]/g,e).split(".")[0]:void 0},Ei=function(e){for(var t in e)if(e.hasOwnProperty(t)){var i=e[t];typeof i==Qe&&2==i.length?this[i[0]]=i[1]:this[i]=void 0}return this},_i=function(e,t){return yi(t)?t.replace(e,Ye):t},Ci=function(e){return _i(/\\?\"/g,e)},Pi=function(e,t){return e=_i(/^\s\s*/,String(e)),typeof t===tt?e:e.substring(0,t)},Oi=function(e,t){if(e&&t)for(var i,n,r,o,a,s,c=0;c<t.length&&!a;){var l=t[c],d=t[c+1];for(i=n=0;i<l.length&&!a&&l[i];)if(a=l[i++].exec(e))for(r=0;r<d.length;r++)s=a[++n],typeof(o=d[r])===Qe&&o.length>0?2===o.length?typeof o[1]==Ze?this[o[0]]=o[1].call(this,s):this[o[0]]=o[1]:o.length>=3&&(typeof o[1]!==Ze||o[1].exec&&o[1].test?3==o.length?this[o[0]]=s?s.replace(o[1],o[2]):void 0:4==o.length?this[o[0]]=s?o[3].call(this,s.replace(o[1],o[2])):void 0:o.length>4&&(this[o[0]]=s?o[3].apply(this,[s.replace(o[1],o[2])].concat(o.slice(4))):void 0):o.length>3?this[o[0]]=s?o[1].apply(this,o.slice(2)):void 0:this[o[0]]=s?o[1].call(this,s,o[2]):void 0):this[o]=s||void 0;c+=2}},Ii=function(e,t){for(var i in t)if(typeof t[i]===Qe&&t[i].length>0){for(var n=0;n<t[i].length;n++)if(bi(t[i][n],e))return"?"===i?void 0:i}else if(bi(t[i],e))return"?"===i?void 0:i;return t.hasOwnProperty("*")?t["*"]:e},Li={ME:"4.90","NT 3.51":"3.51","NT 4.0":"4.0",2e3:["5.0","5.01"],XP:["5.1","5.2"],Vista:"6.0",7:"6.1",8:"6.2",8.1:"6.3",10:["6.4","10.0"],NT:""},Ti={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Mi={Chrome:"Google Chrome",Edge:"Microsoft Edge","Edge WebView2":"Microsoft Edge WebView2","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome","Huawei Browser":"HuaweiBrowser","MIUI Browser":"Miui Browser","Opera Mobi":"OperaMobile",Yandex:"YaBrowser"},Ai={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[ut,[ct,hi+"Chrome"]],[/webview.+edge\/([\w\.]+)/i],[ut,[ct,si+" WebView"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[ut,[ct,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[ct,ut],[/opios[\/ ]+([\w\.]+)/i],[ut,[ct,li+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[ut,[ct,li+" GX"]],[/\bopr\/([\w\.]+)/i],[ut,[ct,li]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[ut,[ct,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[ut,[ct,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\/v?([-\w\.]+)/i,/(brave)(?: chrome)?\/([\d\.]+)/i,/(aloha|heytap|ovi|115|surf|qwant)browser\/([\d\.]+)/i,/(qwant)(?:ios|mobile)\/([\d\.]+)/i,/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i],[ct,ut],[/quark(?:pc)?\/([-\w\.]+)/i],[ut,[ct,"Quark"]],[/\bddg\/([\w\.]+)/i],[ut,[ct,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[ut,[ct,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[ut,[ct,"WeChat"]],[/konqueror\/([\w\.]+)/i],[ut,[ct,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[ut,[ct,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[ut,[ct,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[ut,[ct,"Smart "+zt+mi]],[/(av(?:ast|g|ira))\/([\w\.]+)/i],[[ct,/(.+)/,"$1 Secure"+mi],ut],[/norton\/([\w\.]+)/i],[ut,[ct,"Norton Private"+mi]],[/\bfocus\/([\w\.]+)/i],[ut,[ct,ci+" Focus"]],[/ mms\/([\w\.]+)$/i],[ut,[ct,li+" Neon"]],[/ opt\/([\w\.]+)$/i],[ut,[ct,li+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[ut,[ct,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[ut,[ct,"Dolphin"]],[/coast\/([\w\.]+)/i],[ut,[ct,li+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[ut,[ct,"MIUI"+mi]],[/fxios\/([\w\.-]+)/i],[ut,[ct,hi+ci]],[/\bqihoobrowser\/?([\w\.]*)/i],[ut,[ct,"360"]],[/\b(qq)\/([\w\.]+)/i],[[ct,/(.+)/,"$1Browser"],ut],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[ct,/(.+)/,"$1"+mi],ut],[/samsungbrowser\/([\w\.]+)/i],[ut,[ct,Qt+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[ut,[ct,ui+" Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[ct,ui+" Mobile"],ut],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[ct,ut],[/(lbbrowser|luakit|rekonq|steam(?= (clie|tenf|gameo)))/i],[ct],[/ome\/([\w\.]+).+(iron(?= saf)|360(?=[es]e$))/i],[ut,ct],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[ct,di],ut,[lt,St]],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.