@gemx-dev/clarity-js 0.8.67 → 0.8.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return Vt},get start(){return Gt},get stop(){return Yt},get track(){return At}}),e=Object.freeze({__proto__:null,get check(){return Qt},get compute(){return te},get data(){return Dt},get start(){return Kt},get stop(){return ee},get trigger(){return $t}}),n=Object.freeze({__proto__:null,get compute(){return ce},get data(){return ne},get log(){return ue},get reset(){return se},get start(){return oe},get stop(){return ie},get updates(){return re}}),r=Object.freeze({__proto__:null,get compute(){return be},get config(){return ge},get consent(){return ve},get data(){return le},get start(){return fe},get stop(){return pe},get trackConsentv2(){return ye}}),a=Object.freeze({__proto__:null,get callback(){return Pe},get callbacks(){return Se},get clear(){return ze},get consent(){return xe},get consentv2(){return Ce},get data(){return we},get electron(){return ke},get id(){return Me},get metadata(){return Te},get save(){return qe},get shortid(){return De},get start(){return Ee},get stop(){return Oe}}),o=Object.freeze({__proto__:null,get data(){return Le},get envelope(){return Ve},get start(){return Ue},get stop(){return Ge}}),i={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0,modules:[],excludeClassNames:[],externalSession:!1,userId:null,sessionId:null};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function s(){return performance.now()+performance.timeOrigin}function l(t){void 0===t&&(t=null);var e=0===c?s():c,n=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+r-e),0)}var d="0.8.67";var f=/\S/gi,p=255,h=!0,g=null,v=null,m=null;function y(t,e,n,r,a){if(void 0===r&&(r=!1),t){if("input"==e&&("checkbox"===a||"radio"===a))return t;switch(n){case 0:return t;case 1:switch(e){case"*T":case"value":case"placeholder":case"click":return function(t){var e=-1,n=0,r=!1,a=!1,o=!1,i=null;I();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(e+1,o?u:u+1);s=h&&null!==m?s.match(m)?s:k(s,"▪","▫"):S(s),i.splice(e+1-n,s.length,s),n+=s.length-1}o&&(r=!1,a=!1,e=u)}}return i?i.join(""):t}(t);case"input":case"change":return _(t)}return t;case 2:case 3:switch(e){case"*T":case"data-":return r?w(t):S(t);case"src":case"srcset":case"title":case"alt":case"href":case"xlink:href":return 3===n?"src"===e&&(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return _(t);case"placeholder":return S(t)}break;case 4:switch(e){case"*T":case"data-":return r?w(t):S(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(e){case"*T":case"data-":return k(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function b(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r=t;if(e)r="".concat("https://").concat("Electron");else{var a=i.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var o=t.split("?"),u=o[0],c=o[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(e){return 0===t.indexOf("".concat(e,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return n&&(r=r.substring(0,p)),r}function w(t){var e=t.trim();if(e.length>0){var n=e[0],r=t.indexOf(n),a=t.substr(0,r),o=t.substr(r+e.length);return"".concat(a).concat(e.length.toString(36)).concat(o)}return t}function S(t){return t.replace(f,"•")}function k(t,e,n){return I(),t?t.replace(v,e).replace(g,n):t}function _(t){for(var e=5*(Math.floor(t.length/5)+1),n="",r=0;r<e;r++)n+=r>0&&r%5==0?" ":"•";return n}function I(){if(h&&null===g)try{g=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),m=new RegExp("\\p{Sc}","gu")}catch(t){h=!1}}var E=[],O=null;function T(){}var M=[];function x(){}function C(){}function j(){}function N(){}function z(){}var P=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:O,event:N,hashText:x,keys:M,log:T,observe:function(){},register:z,reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:j,trigger:C}),q=null;function A(t,e){gn()&&t&&"string"==typeof t&&t.length<255&&(q=e&&"string"==typeof e&&e.length<255?{key:t,value:e}:{value:t},Ft(24))}var D,R=null,X=null;function H(t){t in R||(R[t]=0),t in X||(X[t]=0),R[t]++,X[t]++}function L(t,e){null!==e&&(t in R||(R[t]=0),t in X||(X[t]=0),R[t]+=e,X[t]+=e)}function U(t,e){null!==e&&!1===isNaN(e)&&(t in R||(R[t]=0),(e>R[t]||0===R[t])&&(X[t]=e,R[t]=e))}function G(t,e,n){return window.setTimeout(We(t),e,n)}function V(t){return window.clearTimeout(t)}var Y=0,B=0,W=null;function Z(){W&&V(W),W=G(J,B),Y=l()}function J(){var t=l();D={gap:t-Y},Ft(25),D.gap<3e5?W=G(J,B):fn&&(A("clarityGemX","suspend"),Rn(),["mousemove","touchstart"].forEach((function(t){return Je(document,t,vn)})),["resize","scroll","pageshow"].forEach((function(t){return Je(window,t,vn)})))}var F=Object.freeze({__proto__:null,get data(){return D},reset:Z,start:function(){B=6e4,Y=0},stop:function(){V(W),Y=0,B=0}}),K=null;function Q(t){gn()&&i.lean&&(i.lean=!1,K={key:t},Pe(),qe(),i.upgrade&&i.upgrade(t),Ft(3),i.lite)}var $=Object.freeze({__proto__:null,get data(){return K},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),K=null},stop:function(){K=null},upgrade:Q});function tt(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))}function et(t,e){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(t){u=[6,t],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var nt=null;function rt(t,e){ot(t,"string"==typeof e?[e]:e)}function at(t,e,n,r){return void 0===e&&(e=null),void 0===n&&(n=null),void 0===r&&(r=null),tt(this,void 0,void 0,(function(){var a,o;return et(this,(function(i){switch(i.label){case 0:return o={},[4,ct(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(k(u.substring(2),"*","*")):k(u,"*","*")),ot("userId",[(a=o).userId]),ot("userHint",[a.userHint]),ot("userType",[st(t)]),e&&(ot("sessionId",[e]),a.sessionId=e),n&&(ot("pageId",[n]),a.pageId=n),[2,a]}var u}))}))}function ot(t,e){if(gn()&&t&&e&&"string"==typeof t&&t.length<255){for(var n=(t in nt?nt[t]:[]),r=0;r<e.length;r++)"string"==typeof e[r]&&e[r].length<255&&n.push(e[r]);nt[t]=n}}function it(){Ft(34)}function ut(){nt={}}function ct(t){return tt(this,void 0,void 0,(function(){var e;return et(this,(function(n){switch(n.label){case 0:return n.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return e=n.sent(),[2,Array.prototype.map.call(new Uint8Array(e),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return n.sent(),[2,""];case 5:return[2]}}))}))}function st(t){return t&&t.indexOf("@")>0?"email":"string"}var lt="CompressionStream"in window;function dt(t){return tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),lt?(e=new ReadableStream({start:function(e){return tt(this,void 0,void 0,(function(){return et(this,(function(n){return e.enqueue(t),e.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),n=Uint8Array.bind,[4,ft(e)]):[3,2];case 1:return[2,new(n.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function ft(t){return tt(this,void 0,void 0,(function(){var e,n,r,a,o;return et(this,(function(i){switch(i.label){case 0:e=t.getReader(),n=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,e.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,n]:(n.push.apply(n,a),[3,1]);case 3:return[2,n]}}))}))}function pt(t,e){try{return!!t[e]}catch(t){return!1}}function ht(t){try{var e=decodeURIComponent(t);return[e!=t,e]}catch(t){}return[!1,t]}var gt=null,vt="^";function mt(t,e){var n;if(void 0===e&&(e=!1),pt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=ht(o[1]),u=i[0],c=i[1];u;)u=(n=ht(c))[0],c=n[1];return e?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function yt(t,e,n){if((i.track||""==e)&&(navigator&&navigator.cookieEnabled||pt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(e),a=new Date;a.setDate(a.getDate()+n);var o=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(o).concat(";path=/");try{if(null===gt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(gt=".".concat(c[s]).concat(gt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(gt),mt(t)===e))return;gt=""}}catch(t){gt=""}document.cookie=gt?"".concat(u).concat(";").concat("domain=").concat(gt):u}}var bt=null;function wt(t){try{if(!bt)return;var e=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);e.forEach((function(t){bt(t)}))}catch(t){}}var St=[P,n,Object.freeze({__proto__:null,compute:it,get data(){return nt},identify:at,reset:ut,set:rt,start:function(){ut()},stop:function(){ut()}}),e,P,Object.freeze({__proto__:null,COOKIE_SEP:vt,getCookie:mt,setCookie:yt,start:function(){gt=null},stop:function(){gt=null}}),r,a,o,t,F,$,P];function kt(){R={},X={},H(5),St.forEach((function(t){return We(t.start)()}))}function _t(){St.slice().reverse().forEach((function(t){return We(t.stop)()})),R={},X={}}function It(){it(),ce(),Ft(0),te(),be()}function Et(t,e,n){return"".concat(t,"=").concat(y(e,0===t.indexOf("data-")?"data-":t,n))}var Ot=[],Tt=1,Mt=null;function xt(){Ot=[],function(t){var e=[t];for(;e.length>0;){for(var n=null,r=null,a=null,o=e.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)e.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",n={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Mt.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;n=Ct(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}jt(o,u,{tag:r,attributes:n,value:a})}}(document),function(t){tt(this,void 0,void 0,(function(){var e,n,r,a,o,i,u,c,s,d,f,p,h;return et(this,(function(g){switch(e=l(),n=[e,t],t){case 8:r=O,n.push(r.width),n.push(r.height),r.width,r.height,Vt(n);break;case 43:if((a=Ot).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,s=u.data,d=0,f=["tag","attributes","value"];d<f.length;d++)if(s[p=f[d]])switch(p){case"tag":n.push(u.id),u.parent&&n.push(u.parent),u.previous&&n.push(u.previous),n.push(s[p]);break;case"attributes":for(h in s[p])void 0!==s[p][h]&&n.push(Et(h,s[p][h],c));break;case"value":n.push(y(s[p],s.tag,c))}Vt(function(t){for(var e=[],n={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=n[i]||-1;u>=0?a?a.push(u):(a=[u],e.push(a),r++):(a=null,e.push(i),n[i]=r++)}else a=null,e.push(t[o]),r++;return e}(n),!0)}}return[2]}))}))}(43)}function Ct(t){var e={},n=t.attributes;if(n&&n.length>0)for(var r=0;r<n.length;r++)e[n[r].name]=n[r].value;return e}function jt(t,e,n){if(t&&n&&n.tag){var r=function(t){return null===t?null:Mt.has(t)?Mt.get(t):(Mt.set(t,Tt),Tt++)}(t),a=e?Mt.get(e):null,o=t.previousSibling?Mt.get(t.previousSibling):null;Ot.push({id:r,parent:a,previous:o,children:[],data:n,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Nt,zt,Pt,qt,At,Dt,Rt=0,Xt=0,Ht=null,Lt=0,Ut=!1;function Gt(){qt=!0,Rt=0,Xt=0,Ut=!1,Lt=0,Nt=[],zt=[],Pt={},At=null}function Vt(t,e){if(void 0===e&&(e=!0),qt){var n=l(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(i.lean?!Ut&&Xt+a.length>10485760&&(Ut=!0):Ut=!1,r){case 5:if(Ut)break;Rt+=a.length;case 37:case 6:case 43:case 45:case 46:case 44:case 51:if(Ut)break;Xt+=a.length,Nt.push(a);break;default:zt.push(a)}H(25);var o=function(){var t=!1===i.lean&&Rt>0?100:Le.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();n-Lt>2*o&&(V(Ht),Ht=null),e&&null===Ht&&(25!==r&&Z(),Ht=G(Bt,o),Lt=n,Qt(Xt))}}function Yt(){V(Ht),Bt(!0),Rt=0,Xt=0,Ut=!1,Lt=0,Nt=[],zt=[],Pt={},At=null,qt=!1}function Bt(t){return void 0===t&&(t=!1),tt(this,void 0,void 0,(function(){var e,n,r,a,o,u,c,s;return et(this,(function(l){switch(l.label){case 0:return qt?(Ht=null,(e=!1===i.lean&&Xt>0&&(Xt<1048576||Le.sequence>0))&&U(1,1),It(),n=!0===t,Le?(r=JSON.stringify(Ve(n)),a="[".concat(zt.join(),"]"),o=e?"[".concat(Nt.join(),"]"):"",n&&o.length>0&&r.length+a.length+o.length>65536&&(o=""),u=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:a,p:o}),n?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,dt(u)];case 2:s=l.sent(),l.label=3;case 3:return L(2,(c=s)?c.length:u.length),Wt(u,c,Le.sequence,n),zt=[],e&&(Nt=[],Xt=0,Rt=0,Ut=!1),[2]}}))}))}function Wt(t,e,n,r){if(void 0===r&&(r=!1),"string"==typeof i.upload){var a=i.upload,o=!1;if(r&&navigator&&navigator.sendBeacon)try{(o=navigator.sendBeacon.bind(navigator)(a,t))&&Jt(n)}catch(t){}if(!1===o){n in Pt?Pt[n].attempts++:Pt[n]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){Be(new Error("".concat("Timeout"," : ").concat(a)))},null!==n&&(u.onreadystatechange=function(){We(Zt)(u,n)}),u.withCredentials=!0,e?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(e)):u.send(t)}}else if(i.upload){(0,i.upload)(t),Jt(n)}}function Zt(t,e){var n=Pt[e];t&&4===t.readyState&&n&&((t.status<200||t.status>208)&&n.attempts<=1?t.status>=400&&t.status<500?$t(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),At={sequence:e,attempts:n.attempts,status:t.status},Ft(2),Wt(n.data,null,e)):(At={sequence:e,attempts:n.attempts,status:t.status},n.attempts>1&&Ft(2),200===t.status&&t.responseText&&function(t){for(var e=t&&t.length>0?t.split("\n"):[],n=0,r=e;n<r.length;n++){var a=r[n],o=a&&a.length>0?a.split(/ (.*)/):[""];switch(o[0]){case"END":$t(6);break;case"UPGRADE":Q("Auto");break;case"ACTION":i.action&&o.length>1&&i.action(o[1]);break;case"EXTRACT":case"MODULE":o.length>1&&o[1];break;case"SIGNAL":o.length>1&&wt(o[1]);break;case"SNAPSHOT":i.lean=!1,xt()}}}(t.responseText),0===t.status&&(Wt(n.data,null,e,!0),$t(3)),t.status>=200&&t.status<=208&&Jt(e),delete Pt[e]))}function Jt(t){1===t&&(qe(),Pe())}function Ft(t){var e=[l(),t];switch(t){case 4:var n=E;n&&n.data&&((e=[n.time,n.event]).push(n.data.visible),e.push(n.data.docWidth),e.push(n.data.docHeight),e.push(n.data.screenWidth),e.push(n.data.screenHeight),e.push(n.data.scrollX),e.push(n.data.scrollY),e.push(n.data.pointerX),e.push(n.data.pointerY),e.push(n.data.activityTime),e.push(n.data.scrollTime),e.push(n.data.pointerTime),e.push(n.data.moveX),e.push(n.data.moveY),e.push(n.data.moveTime),e.push(n.data.downX),e.push(n.data.downY),e.push(n.data.downTime),e.push(n.data.upX),e.push(n.data.upY),e.push(n.data.upTime),e.push(n.data.pointerPrevX),e.push(n.data.pointerPrevY),e.push(n.data.pointerPrevTime),e.push(n.data.modules),Vt(e,!1));break;case 25:e.push(D.gap),Vt(e);break;case 35:e.push(Dt.check),Vt(e,!1);break;case 3:e.push(K.key),Vt(e);break;case 2:e.push(At.sequence),e.push(At.attempts),e.push(At.status),Vt(e,!1);break;case 24:q.key&&e.push(q.key),e.push(q.value),Vt(e);break;case 34:var r=Object.keys(nt);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];e.push(i),e.push(nt[i])}ut(),Vt(e,!1)}break;case 0:var u=Object.keys(X);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var d=s[c],f=parseInt(d,10);e.push(f),e.push(Math.round(X[d]))}X={},Vt(e,!1)}break;case 1:var p=Object.keys(re);if(p.length>0){for(var h=0,g=p;h<g.length;h++){var v=g[h];f=parseInt(v,10);e.push(f),e.push(re[v])}se(),Vt(e,!1)}break;case 36:var m=Object.keys(O);if(m.length>0){for(var y=0,b=m;y<b.length;y++){var w=b[y];f=parseInt(w,10);e.push(f),e.push([].concat.apply([],O[w]))}Vt(e,!1)}break;case 40:M.forEach((function(t){e.push(t);var n=[];for(var r in O[t]){var a=parseInt(r,10);n.push(a),n.push(O[t][r])}e.push(n)})),Vt(e,!1);break;case 47:e.push(le.source),e.push(le.ad_Storage),e.push(le.analytics_Storage),Vt(e,!1)}}function Kt(){Dt={check:0}}function Qt(t){if(0===Dt.check){var e=Dt.check;e=Le.sequence>=128?1:e,e=Le.pageNum>=128?7:e,e=l()>72e5?2:e,(e=t>10485760?2:e)!==Dt.check&&$t(e)}}function $t(t){Dt.check=t,5!==t&&(ze(),Rn())}function te(){0!==Dt.check&&Ft(35)}function ee(){Dt=null}var ne=null,re=null,ae=!1;function oe(){ne={},re={},ae=!1}function ie(){ne={},re={},ae=!1}function ue(t,e){if(e&&(e="".concat(e),t in ne||(ne[t]=[]),ne[t].indexOf(e)<0)){if(ne[t].length>128)return void(ae||(ae=!0,$t(5)));ne[t].push(e),t in re||(re[t]=[]),re[t].push(e)}}function ce(){Ft(1)}function se(){re={},ae=!1}var le=null,de=!0;function fe(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;de=!0,(null==e?void 0:e.addListener)&&e.addListener(["ad_storage","analytics_storage"],he)}function pe(){de=!0}function he(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;if(null==e?void 0:e.getConsentState){var n=e.getConsentState("analytics_storage");Ce(function(t){var e={source:2,ad_Storage:1===t.ad_Storage?"granted":"denied",analytics_Storage:1===t.analytics_Storage?"granted":"denied"};return e}({ad_Storage:e.getConsentState("ad_storage"),analytics_Storage:n}))}}function ge(t){me(t.analytics_Storage?1:0),le=t}function ve(){me(2)}function me(t){ue(36,t.toString())}function ye(t){le=t,Ft(47)}function be(){var t;if(de&&(Ft(47),de=!1,!i.track)){var e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;(null==e?void 0:e.usedUpdate)&&he()}}var we=null,Se=[],ke=0,_e=null,Ie={source:7,ad_Storage:"denied",analytics_Storage:"denied"};function Ee(){var t,e,n,r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(n="undefined"!=typeof Intl&&(null===(e=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===e?void 0:e.timeZone))&&void 0!==n?n:"",o=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";ke=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:De(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},e=mt("_clsk",!i.includeSubdomains);if(e){var n=e.includes("^")?e.split("^"):e.split("|");n.length>=5&&t.ts-Re(n[1])<18e5&&(t.session=n[0],t.count=Re(n[2])+1,t.upgrade=Re(n[3]),t.upload=n.length>=6?"".concat("https://").concat(n[5],"/").concat(n[4]):"".concat("https://").concat(n[4]))}return t}(),l=Xe(),d=i.projectId||function(t,e){void 0===e&&(e=null);for(var n,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return n=Math.abs(r+11579*a),(e?n%Math.pow(2,e):n).toString(36)}(location.host),f=i.externalSession&&i.userId?i.userId:l.id,p=i.externalSession&&i.sessionId?i.sessionId:s.session;we={projectId:d,userId:f,sessionId:p,pageNum:s.count},i.lean=i.track&&null!==s.upgrade?0===s.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&s.upload&&s.upload.length>"https://".length?s.upload:i.upload,ue(0,r),ue(3,c),ue(1,b(location.href,!!ke)),ue(2,document.referrer),ue(15,function(){var t=De();if(i.track&&pt(window,"sessionStorage")){var e=sessionStorage.getItem("_cltk");t=e||t,sessionStorage.setItem("_cltk",t)}return t}()),ue(16,document.documentElement.lang),ue(17,document.dir),ue(26,"".concat(window.devicePixelRatio)),ue(28,l.dob.toString()),ue(29,l.version.toString()),ue(33,u),ue(34,a),ue(35,o),U(0,s.ts),U(1,0),U(35,ke);var h,g=null===window||void 0===window?void 0:window.Zone;g&&"__symbol__"in g&&U(39,1),navigator&&(ue(9,navigator.language),U(33,navigator.hardwareConcurrency),U(32,navigator.maxTouchPoints),U(34,Math.round(navigator.deviceMemory)),(h=navigator.userAgentData)&&h.getHighEntropyValues?h.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var e;ue(22,t.platform),ue(23,t.platformVersion),null===(e=t.brands)||void 0===e||e.forEach((function(t){ue(24,t.name+"~"+t.version)})),ue(25,t.model),U(27,t.mobile?1:0)})):ue(22,navigator.platform)),screen&&(U(14,Math.round(screen.width)),U(15,Math.round(screen.height)),U(16,Math.round(screen.colorDepth)));for(var v=0,m=i.cookies;v<m.length;v++){var y=m[v],w=mt(y);w&&rt(y,w)}null===_e&&(_e={source:l.consent?6:0,ad_Storage:i.track?"granted":"denied",analytics_Storage:i.track?"granted":"denied"}),ge(je(_e)),i.externalSession||Ae(l)}function Oe(){we=null,Se.forEach((function(t){t.called=!1}))}function Te(t,e,n,r){void 0===e&&(e=!0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=i.lean?0:1,o=!1;we&&(a||!1===e)&&(t(we,!i.lean,r?_e:void 0),o=!0),!n&&o||Se.push({callback:t,wait:e,recall:n,called:o,consentInfo:r})}function Me(){return we?[we.userId,we.sessionId,we.pageNum].join("."):""}function xe(t){void 0===t&&(t=!0),t?(Ce({source:4,ad_Storage:"granted",analytics_Storage:"granted"}),ve()):Ce({source:4,ad_Storage:"denied",analytics_Storage:"denied"})}function Ce(t,e){var n;void 0===t&&(t=Ie),void 0===e&&(e=5);var r={source:null!==(n=t.source)&&void 0!==n?n:e,ad_Storage:Ne(t.ad_Storage,null==_e?void 0:_e.ad_Storage),analytics_Storage:Ne(t.analytics_Storage,null==_e?void 0:_e.analytics_Storage)};if(_e&&r.ad_Storage===_e.ad_Storage&&r.analytics_Storage===_e.analytics_Storage)return _e.source=r.source,ye(je(_e)),void ve();_e=r,Pe(!0);var a=je(_e);if(!a.analytics_Storage&&i.track)return i.track=!1,ze(!0),Rn(),void window.setTimeout(Dn,250);gn()&&a.analytics_Storage&&(i.track=!0,Ae(Xe(),1),qe()),ye(a),ve()}function je(t){var e;return{source:null!==(e=t.source)&&void 0!==e?e:255,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function Ne(t,e){return void 0===e&&(e="denied"),"string"==typeof t?t.toLowerCase():e}function ze(t){void 0===t&&(t=!1),yt("_clsk","",0),t&&yt("_clck","",0)}function Pe(t){void 0===t&&(t=!1),function(t,e){void 0===e&&(e=!1);if(Se.length>0)for(var n=0;n<Se.length;n++){var r=Se[n];r.callback&&(!r.called&&!e||r.consentInfo&&e)&&(!r.wait||t)&&(r.callback(we,!i.lean,r.consentInfo?_e:void 0),r.called=!0,r.recall||(Se.splice(n,1),n--))}}(i.lean?0:1,t)}function qe(){if(we&&i.track&&!i.externalSession){var t=Math.round(Date.now()),e=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",n=i.lean?0:1;yt("_clsk",[we.sessionId,t,we.pageNum,n,e].join(vt),1)}}function Ae(t,e){void 0===e&&(e=null),e=null===e?t.consent:e;var n=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(n-t.expiry)>=1||t.consent!==e||t.dob!==r)&&yt("_clck",[we.userId,2,n.toString(36),e,r].join(vt),365)}function De(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Re(t,e){return void 0===e&&(e=10),parseInt(t,e)}function Xe(){var t={id:De(),version:0,expiry:null,consent:0,dob:0},e=mt("_clck",!i.includeSubdomains);if(e&&e.length>0){var n=e.includes("^")?e.split("^"):e.split("|");n.length>1&&(t.version=Re(n[1])),n.length>2&&(t.expiry=Re(n[2],36)),n.length>3&&1===Re(n[3])&&(t.consent=1),n.length>4&&Re(n[1])>1&&(t.dob=Re(n[4])),i.track=i.track||1===t.consent,t.id=i.track?n[0]:t.id}return t}var He,Le=null;function Ue(){var t=we;Le={version:d,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function Ge(){Le=null}function Ve(t){return Le.start=Le.start+Le.duration,Le.duration=l()-Le.start,Le.sequence++,Le.upload=t&&"sendBeacon"in navigator?1:0,Le.end=t?1:0,Le.applicationPlatform=0,Le.url=b(location.href,!1,!0),[Le.version,Le.sequence,Le.start,Le.duration,Le.projectId,Le.userId,Le.sessionId,Le.pageNum,Le.upload,Le.end,Le.applicationPlatform,Le.url]}function Ye(){He=[]}function Be(t){if(He&&-1===He.indexOf(t.message)){var e=i.report;if(e&&e.length>0&&Le){var n={v:Le.version,p:Le.projectId,u:Le.userId,s:Le.sessionId,n:Le.pageNum};t.message&&(n.m=t.message),t.stack&&(n.e=t.stack);var r=new XMLHttpRequest;r.open("POST",e,!0),r.send(JSON.stringify(n)),He.push(t.message)}}return t}function We(t){return function(){var e=performance.now();try{t.apply(this,arguments)}catch(t){throw Be(t)}var n=performance.now()-e;L(4,n),n>30&&(H(7),U(6,n),t.dn&&"".concat(t.dn,"-").concat(n))}}var Ze=new Map;function Je(t,e,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),n=We(n);try{t[u("addEventListener")](e,n,{capture:r,passive:a}),function(t){return Ze.has(t)}(t)||Ze.set(t,[]),Ze.get(t).push({event:e,listener:n,options:{capture:r,passive:a}})}catch(t){}}function Fe(){Ze.forEach((function(t,e){!function(t,e){t.forEach((function(t){try{e[u("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),Ze.delete(e)}(t,e)})),Ze=new Map}var Ke=null,Qe=null,$e=null,tn=0;function en(){return!(tn++>20)}function nn(){tn=0,$e!==an()&&(Rn(),window.setTimeout(rn,250))}function rn(){Dn(),U(29,1)}function an(){return location.href?location.href.replace(location.hash,""):location.href}var on=[],un=null,cn=null,sn=null;function ln(){on=[],un=null,cn=null}function dn(){var t=on.shift();t&&(un=t,t.task().then((function(){t.id===Me()&&(t.resolve(),un=null,dn())})).catch((function(e){t.id===Me()&&(e&&(e.name,e.message,e.stack),un=null,dn())})))}var fn=!1;function pn(){fn=!0,c=s(),ln(),Fe(),Ye(),$e=an(),tn=0,Je(window,"popstate",nn),null===Ke&&(Ke=history.pushState,history.pushState=function(){Ke.apply(this,arguments),gn()&&en()&&nn()}),null===Qe&&(Qe=history.replaceState,history.replaceState=function(){Qe.apply(this,arguments),gn()&&en()&&nn()})}function hn(){$e=null,tn=0,Ye(),Fe(),ln(),c=0,fn=!1}function gn(){return fn}function vn(){Dn(),A("clarityGemX","restart")}var mn=null;function yn(){mn=null}function bn(t){mn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){return e=l(),n=[e,t],29===t&&(n.push(mn.fetchStart),n.push(mn.connectStart),n.push(mn.connectEnd),n.push(mn.requestStart),n.push(mn.responseStart),n.push(mn.responseEnd),n.push(mn.domInteractive),n.push(mn.domComplete),n.push(mn.loadEventStart),n.push(mn.loadEventEnd),n.push(mn.redirectCount),n.push(mn.size),n.push(mn.type),n.push(mn.protocol),n.push(mn.encodedSize),n.push(mn.decodedSize),yn(),Vt(n)),[2]}))}))}(29)}var wn,Sn=0,kn=1/0,_n=0,In=0,En=[],On=new Map,Tn=function(){return Sn||0},Mn=function(){if(!En.length)return-1;var t=Math.min(En.length-1,Math.floor((Tn()-In)/50));return En[t].latency},xn=function(){In=Tn(),En.length=0,On.clear()},Cn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Sn=performance.interactionCount:t.interactionId&&(kn=Math.min(kn,t.interactionId),_n=Math.max(_n,t.interactionId),Sn=_n?(_n-kn)/7+1:0)}(t);var e=En[En.length-1],n=On.get(t.interactionId);if(n||En.length<10||t.duration>(null==e?void 0:e.latency)){if(n)t.duration>n.latency&&(n.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};On.set(r.id,r),En.push(r)}En.sort((function(t,e){return e.latency-t.latency})),En.length>10&&En.splice(10).forEach((function(t){return On.delete(t.id)}))}}},jn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Nn(){try{wn&&wn.disconnect(),wn=new PerformanceObserver(We(zn));for(var t=0,e=jn;t<e.length;t++){var n=e[t];PerformanceObserver.supportedEntryTypes.indexOf(n)>=0&&("layout-shift"===n&&L(9,0),wn.observe({type:n,buffered:!0}))}}catch(t){}}function zn(t){!function(t){for(var e=(!("visibilityState"in document)||"visible"===document.visibilityState),n=0;n<t.length;n++){var r=t[n];switch(r.entryType){case"navigation":bn(r);break;case"resource":var a=r.name;ue(4,qn(a)),a!==i.upload&&a!==i.fallback||U(28,r.duration);break;case"longtask":H(7);break;case"first-input":e&&U(10,r.processingStart-r.startTime);break;case"event":e&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Cn(r),ue(37,Mn().toString()));break;case"layout-shift":e&&!r.hadRecentInput&&L(9,1e3*r.value);break;case"largest-contentful-paint":e&&U(8,r.startTime)}}}(t.getEntries())}var Pn=null;function qn(t){return Pn||(Pn=document.createElement("a")),Pn.href=t,Pn.host}var An=[P,P,P,Object.freeze({__proto__:null,start:function(){yn(),function(){navigator&&navigator.connection&&ue(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?Je(window,"load",G.bind(this,Nn,0)):Nn())}()},stop:function(){wn&&wn.disconnect(),wn=null,xn(),Pn=null,yn()}}),P];function Dn(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===fn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||fn)return!1;for(var e in t)e in i&&(i[e]=t[e])}(t),pn(),kt(),An.forEach((function(t){return We(t.start)()})),null===t&&Un())}function Rn(){gn()&&(An.slice().reverse().forEach((function(t){return We(t.stop)()})),_t(),hn(),void 0!==Hn&&(Hn[Ln]=function(){(Hn[Ln].q=Hn[Ln].q||[]).push(arguments),"start"===arguments[0]&&Hn[Ln].q.unshift(Hn[Ln].q.pop())&&Un()}))}var Xn=Object.freeze({__proto__:null,consent:xe,consentv2:Ce,dlog:ue,event:A,hashText:x,identify:at,maxMetric:U,measure:We,metadata:Te,pause:function(){gn()&&(A("clarityGemX","pause"),null===cn&&(cn=new Promise((function(t){sn=t}))))},queue:Vt,register:z,resume:function(){gn()&&(cn&&(sn(),cn=null,null===un&&dn()),A("clarityGemX","resume"))},schedule:function(t,e){return void 0===e&&(e=0),tt(this,void 0,void 0,(function(){var n,r,a;return et(this,(function(o){for(n=0,r=on;n<r.length;n++)if(r[n].task===t)return[2];return a=new Promise((function(n){on[1===e?"unshift":"push"]({task:t,resolve:n,id:Me()})})),null===un&&null===cn&&dn(),[2,a]}))}))},set:rt,signal:function(t){bt=t},start:Dn,stop:Rn,time:l,upgrade:Q,version:d}),Hn=window,Ln="clarityGemX";function Un(){if(void 0!==Hn){if(Hn[Ln]&&Hn[Ln].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=Hn[Ln]&&Hn[Ln].q||[];for(Hn[Ln]=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return Xn[t].apply(Xn,e)},Hn[Ln].v=d;t.length>0;)Hn[Ln].apply(Hn,t.shift())}}Un()}();
1
+ !function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return Vt},get start(){return Gt},get stop(){return Yt},get track(){return At}}),e=Object.freeze({__proto__:null,get check(){return Qt},get compute(){return te},get data(){return Dt},get start(){return Kt},get stop(){return ee},get trigger(){return $t}}),n=Object.freeze({__proto__:null,get compute(){return ce},get data(){return ne},get log(){return ue},get reset(){return se},get start(){return oe},get stop(){return ie},get updates(){return re}}),r=Object.freeze({__proto__:null,get compute(){return be},get config(){return ge},get consent(){return ve},get data(){return le},get start(){return fe},get stop(){return pe},get trackConsentv2(){return ye}}),a=Object.freeze({__proto__:null,get callback(){return Ae},get callbacks(){return Se},get clear(){return qe},get consent(){return je},get consentv2(){return Ne},get data(){return we},get electron(){return _e},get id(){return Ce},get metadata(){return xe},get save(){return De},get shortid(){return Xe},get start(){return Oe},get stop(){return Me}}),o=Object.freeze({__proto__:null,get data(){return Ge},get envelope(){return Be},get start(){return Ve},get stop(){return Ye}}),i={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0,modules:[],diagnostics:!1,excludeClassNames:[],externalSession:!1,userId:null,sessionId:null};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function s(){return performance.now()+performance.timeOrigin}function l(t){void 0===t&&(t=null);var e=0===c?s():c,n=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+r-e),0)}var d="0.8.68";var f=/\S/gi,p=255,h=!0,g=null,v=null,m=null;function y(t,e,n,r,a){if(void 0===r&&(r=!1),t){if("input"==e&&("checkbox"===a||"radio"===a))return t;switch(n){case 0:return t;case 1:switch(e){case"*T":case"value":case"placeholder":case"click":return function(t){var e=-1,n=0,r=!1,a=!1,o=!1,i=null;I();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(e+1,o?u:u+1);s=h&&null!==m?s.match(m)?s:_(s,"▪","▫"):S(s),i.splice(e+1-n,s.length,s),n+=s.length-1}o&&(r=!1,a=!1,e=u)}}return i?i.join(""):t}(t);case"input":case"change":return k(t)}return t;case 2:case 3:switch(e){case"*T":case"data-":return r?w(t):S(t);case"src":case"srcset":case"title":case"alt":case"href":case"xlink:href":return 3===n?(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return k(t);case"placeholder":return S(t)}break;case 4:switch(e){case"*T":case"data-":return r?w(t):S(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(e){case"*T":case"data-":return _(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function b(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r=t;if(e)r="".concat("https://").concat("Electron");else{var a=i.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var o=t.split("?"),u=o[0],c=o[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(e){return 0===t.indexOf("".concat(e,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return n&&(r=r.substring(0,p)),r}function w(t){var e=t.trim();if(e.length>0){var n=e[0],r=t.indexOf(n),a=t.substr(0,r),o=t.substr(r+e.length);return"".concat(a).concat(e.length.toString(36)).concat(o)}return t}function S(t){return t.replace(f,"•")}function _(t,e,n){return I(),t?t.replace(v,e).replace(g,n):t}function k(t){for(var e=5*(Math.floor(t.length/5)+1),n="",r=0;r<e;r++)n+=r>0&&r%5==0?" ":"•";return n}function I(){if(h&&null===g)try{g=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),m=new RegExp("\\p{Sc}","gu")}catch(t){h=!1}}var E=[],O=null;function T(){}var M=[];function x(){}function C(){}function j(){}function N(){}function z(){}var P=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:O,event:N,hashText:x,keys:M,log:T,observe:function(){},register:z,reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:j,trigger:C}),q=null;function A(t,e){mn()&&t&&"string"==typeof t&&t.length<255&&(q=e&&"string"==typeof e&&e.length<255?{key:t,value:e}:{value:t},Ft(24))}var D,R=null,X=null;function L(t){t in R||(R[t]=0),t in X||(X[t]=0),R[t]++,X[t]++}function H(t,e){null!==e&&(t in R||(R[t]=0),t in X||(X[t]=0),R[t]+=e,X[t]+=e)}function U(t,e){null!==e&&!1===isNaN(e)&&(t in R||(R[t]=0),(e>R[t]||0===R[t])&&(X[t]=e,R[t]=e))}function G(t,e,n){return window.setTimeout(Je(t),e,n)}function V(t){return window.clearTimeout(t)}var Y=0,B=0,W=null;function Z(){W&&V(W),W=G(J,B),Y=l()}function J(){var t=l();D={gap:t-Y},Ft(25),D.gap<3e5?W=G(J,B):hn&&(A("clarityGemX","suspend"),Ln(),["mousemove","touchstart"].forEach((function(t){return Ke(document,t,yn)})),["resize","scroll","pageshow"].forEach((function(t){return Ke(window,t,yn)})))}var F=Object.freeze({__proto__:null,get data(){return D},reset:Z,start:function(){B=6e4,Y=0},stop:function(){V(W),Y=0,B=0}}),K=null;function Q(t){mn()&&i.lean&&(i.lean=!1,K={key:t},Ae(),De(),i.upgrade&&i.upgrade(t),Ft(3),i.lite)}var $=Object.freeze({__proto__:null,get data(){return K},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),K=null},stop:function(){K=null},upgrade:Q});function tt(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,u)}c((r=r.apply(t,e||[])).next())}))}function et(t,e){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=e.call(t,i)}catch(t){u=[6,t],r=0}finally{n=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var nt=null;function rt(t,e){ot(t,"string"==typeof e?[e]:e)}function at(t,e,n,r){return void 0===e&&(e=null),void 0===n&&(n=null),void 0===r&&(r=null),tt(this,void 0,void 0,(function(){var a,o;return et(this,(function(i){switch(i.label){case 0:return o={},[4,ct(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(_(u.substring(2),"*","*")):_(u,"*","*")),ot("userId",[(a=o).userId]),ot("userHint",[a.userHint]),ot("userType",[st(t)]),e&&(ot("sessionId",[e]),a.sessionId=e),n&&(ot("pageId",[n]),a.pageId=n),[2,a]}var u}))}))}function ot(t,e){if(mn()&&t&&e&&"string"==typeof t&&t.length<255){for(var n=(t in nt?nt[t]:[]),r=0;r<e.length;r++)"string"==typeof e[r]&&e[r].length<255&&n.push(e[r]);nt[t]=n}}function it(){Ft(34)}function ut(){nt={}}function ct(t){return tt(this,void 0,void 0,(function(){var e;return et(this,(function(n){switch(n.label){case 0:return n.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return e=n.sent(),[2,Array.prototype.map.call(new Uint8Array(e),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return n.sent(),[2,""];case 5:return[2]}}))}))}function st(t){return t&&t.indexOf("@")>0?"email":"string"}var lt="CompressionStream"in window;function dt(t){return tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),lt?(e=new ReadableStream({start:function(e){return tt(this,void 0,void 0,(function(){return et(this,(function(n){return e.enqueue(t),e.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),n=Uint8Array.bind,[4,ft(e)]):[3,2];case 1:return[2,new(n.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function ft(t){return tt(this,void 0,void 0,(function(){var e,n,r,a,o;return et(this,(function(i){switch(i.label){case 0:e=t.getReader(),n=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,e.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,n]:(n.push.apply(n,a),[3,1]);case 3:return[2,n]}}))}))}function pt(t,e){try{return!!t[e]}catch(t){return!1}}function ht(t){try{var e=decodeURIComponent(t);return[e!=t,e]}catch(t){}return[!1,t]}var gt=null,vt="^";function mt(t,e){var n;if(void 0===e&&(e=!1),pt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=ht(o[1]),u=i[0],c=i[1];u;)u=(n=ht(c))[0],c=n[1];return e?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function yt(t,e,n){if((i.track||""==e)&&(navigator&&navigator.cookieEnabled||pt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(e),a=new Date;a.setDate(a.getDate()+n);var o=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(o).concat(";path=/");try{if(null===gt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(gt=".".concat(c[s]).concat(gt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(gt),mt(t)===e))return;gt=""}}catch(t){gt=""}document.cookie=gt?"".concat(u).concat(";").concat("domain=").concat(gt):u}}var bt=null;function wt(t){try{if(!bt)return;var e=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);e.forEach((function(t){bt(t)}))}catch(t){}}var St=[P,n,Object.freeze({__proto__:null,compute:it,get data(){return nt},identify:at,reset:ut,set:rt,start:function(){ut()},stop:function(){ut()}}),e,P,Object.freeze({__proto__:null,COOKIE_SEP:vt,getCookie:mt,setCookie:yt,start:function(){gt=null},stop:function(){gt=null}}),r,a,o,t,F,$,P];function _t(){R={},X={},L(5),St.forEach((function(t){return Je(t.start)()}))}function kt(){St.slice().reverse().forEach((function(t){return Je(t.stop)()})),R={},X={}}function It(){it(),ce(),Ft(0),te(),be()}function Et(t,e,n,r){return"href"===t&&"LINK"===r?"".concat(t,"=").concat(e):"".concat(t,"=").concat(y(e,0===t.indexOf("data-")?"data-":t,n))}var Ot=[],Tt=1,Mt=null;function xt(){Ot=[],function(t){var e=[t];for(;e.length>0;){for(var n=null,r=null,a=null,o=e.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)e.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",n={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Mt.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;n=Ct(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}jt(o,u,{tag:r,attributes:n,value:a})}}(document),function(t){tt(this,void 0,void 0,(function(){var e,n,r,a,o,i,u,c,s,d,f,p,h;return et(this,(function(g){switch(e=l(),n=[e,t],t){case 8:r=O,n.push(r.width),n.push(r.height),r.width,r.height,Vt(n);break;case 43:if((a=Ot).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,s=u.data,d=0,f=["tag","attributes","value"];d<f.length;d++)if(s[p=f[d]])switch(p){case"tag":n.push(u.id),u.parent&&n.push(u.parent),u.previous&&n.push(u.previous),n.push(s[p]);break;case"attributes":for(h in s[p])void 0!==s[p][h]&&n.push(Et(h,s[p][h],c,s.tag));break;case"value":n.push(y(s[p],s.tag,c))}Vt(function(t){for(var e=[],n={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=n[i]||-1;u>=0?a?a.push(u):(a=[u],e.push(a),r++):(a=null,e.push(i),n[i]=r++)}else a=null,e.push(t[o]),r++;return e}(n),!0)}}return[2]}))}))}(43)}function Ct(t){var e={},n=t.attributes;if(n&&n.length>0)for(var r=0;r<n.length;r++)e[n[r].name]=n[r].value;return e}function jt(t,e,n){if(t&&n&&n.tag){var r=function(t){return null===t?null:Mt.has(t)?Mt.get(t):(Mt.set(t,Tt),Tt++)}(t),a=e?Mt.get(e):null,o=t.previousSibling?Mt.get(t.previousSibling):null;Ot.push({id:r,parent:a,previous:o,children:[],data:n,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Nt,zt,Pt,qt,At,Dt,Rt=0,Xt=0,Lt=null,Ht=0,Ut=!1;function Gt(){qt=!0,Rt=0,Xt=0,Ut=!1,Ht=0,Nt=[],zt=[],Pt={},At=null}function Vt(t,e){if(void 0===e&&(e=!0),qt){var n=l(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(i.lean?!Ut&&Xt+a.length>10485760&&(Ut=!0):Ut=!1,r){case 5:if(Ut)break;Rt+=a.length;case 37:case 6:case 43:case 45:case 46:case 44:case 51:if(Ut)break;Xt+=a.length,Nt.push(a);break;default:zt.push(a)}L(25);var o=function(){var t=!1===i.lean&&Rt>0?100:Ge.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();n-Ht>2*o&&(V(Lt),Lt=null),e&&null===Lt&&(25!==r&&Z(),Lt=G(Bt,o),Ht=n,Qt(Xt))}}function Yt(){V(Lt),Bt(!0),Rt=0,Xt=0,Ut=!1,Ht=0,Nt=[],zt=[],Pt={},At=null,qt=!1}function Bt(t){return void 0===t&&(t=!1),tt(this,void 0,void 0,(function(){var e,n,r,a,o,u,c,s;return et(this,(function(l){switch(l.label){case 0:return qt?(Lt=null,(e=!1===i.lean&&Xt>0&&(Xt<1048576||Ge.sequence>0))&&U(1,1),It(),n=!0===t,Ge?(r=JSON.stringify(Be(n)),a="[".concat(zt.join(),"]"),o=e?"[".concat(Nt.join(),"]"):"",n&&o.length>0&&r.length+a.length+o.length>65536&&(o=""),u=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:a,p:o}),n?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,dt(u)];case 2:s=l.sent(),l.label=3;case 3:return H(2,(c=s)?c.length:u.length),Wt(u,c,Ge.sequence,n),zt=[],e&&(Nt=[],Xt=0,Rt=0,Ut=!1),[2]}}))}))}function Wt(t,e,n,r){if(void 0===r&&(r=!1),"string"==typeof i.upload){var a=i.upload,o=!1;if(r&&navigator&&navigator.sendBeacon)try{(o=navigator.sendBeacon.bind(navigator)(a,t))&&Jt(n)}catch(t){}if(!1===o){n in Pt?Pt[n].attempts++:Pt[n]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){Ze(new Error("".concat("Timeout"," : ").concat(a)))},null!==n&&(u.onreadystatechange=function(){Je(Zt)(u,n)}),u.withCredentials=!0,e?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(e)):u.send(t)}}else if(i.upload){(0,i.upload)(t),Jt(n)}}function Zt(t,e){var n=Pt[e];t&&4===t.readyState&&n&&((t.status<200||t.status>208)&&n.attempts<=1?t.status>=400&&t.status<500?$t(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),At={sequence:e,attempts:n.attempts,status:t.status},Ft(2),Wt(n.data,null,e)):(At={sequence:e,attempts:n.attempts,status:t.status},n.attempts>1&&Ft(2),200===t.status&&t.responseText&&function(t){for(var e=t&&t.length>0?t.split("\n"):[],n=0,r=e;n<r.length;n++){var a=r[n],o=a&&a.length>0?a.split(/ (.*)/):[""];switch(o[0]){case"END":$t(6);break;case"UPGRADE":Q("Auto");break;case"ACTION":i.action&&o.length>1&&i.action(o[1]);break;case"EXTRACT":case"MODULE":o.length>1&&o[1];break;case"SIGNAL":o.length>1&&wt(o[1]);break;case"SNAPSHOT":i.lean=!1,xt()}}}(t.responseText),0===t.status&&(Wt(n.data,null,e,!0),$t(3)),t.status>=200&&t.status<=208&&Jt(e),delete Pt[e]))}function Jt(t){1===t&&(De(),Ae())}function Ft(t){var e=[l(),t];switch(t){case 4:var n=E;n&&n.data&&((e=[n.time,n.event]).push(n.data.visible),e.push(n.data.docWidth),e.push(n.data.docHeight),e.push(n.data.screenWidth),e.push(n.data.screenHeight),e.push(n.data.scrollX),e.push(n.data.scrollY),e.push(n.data.pointerX),e.push(n.data.pointerY),e.push(n.data.activityTime),e.push(n.data.scrollTime),e.push(n.data.pointerTime),e.push(n.data.moveX),e.push(n.data.moveY),e.push(n.data.moveTime),e.push(n.data.downX),e.push(n.data.downY),e.push(n.data.downTime),e.push(n.data.upX),e.push(n.data.upY),e.push(n.data.upTime),e.push(n.data.pointerPrevX),e.push(n.data.pointerPrevY),e.push(n.data.pointerPrevTime),e.push(n.data.modules),Vt(e,!1));break;case 25:e.push(D.gap),Vt(e);break;case 35:e.push(Dt.check),Vt(e,!1);break;case 3:e.push(K.key),Vt(e);break;case 2:e.push(At.sequence),e.push(At.attempts),e.push(At.status),Vt(e,!1);break;case 24:q.key&&e.push(q.key),e.push(q.value),Vt(e);break;case 34:var r=Object.keys(nt);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];e.push(i),e.push(nt[i])}ut(),Vt(e,!1)}break;case 0:var u=Object.keys(X);if(u.length>0){for(var c=0,s=u;c<s.length;c++){var d=s[c],f=parseInt(d,10);e.push(f),e.push(Math.round(X[d]))}X={},Vt(e,!1)}break;case 1:var p=Object.keys(re);if(p.length>0){for(var h=0,g=p;h<g.length;h++){var v=g[h];f=parseInt(v,10);e.push(f),e.push(re[v])}se(),Vt(e,!1)}break;case 36:var m=Object.keys(O);if(m.length>0){for(var y=0,b=m;y<b.length;y++){var w=b[y];f=parseInt(w,10);e.push(f),e.push([].concat.apply([],O[w]))}Vt(e,!1)}break;case 40:M.forEach((function(t){e.push(t);var n=[];for(var r in O[t]){var a=parseInt(r,10);n.push(a),n.push(O[t][r])}e.push(n)})),Vt(e,!1);break;case 47:e.push(le.source),e.push(le.ad_Storage),e.push(le.analytics_Storage),Vt(e,!1)}}function Kt(){Dt={check:0}}function Qt(t){if(0===Dt.check){var e=Dt.check;e=Ge.sequence>=128?1:e,e=Ge.pageNum>=128?7:e,e=l()>72e5?2:e,(e=t>10485760?2:e)!==Dt.check&&$t(e)}}function $t(t){Dt.check=t,5!==t&&(qe(),Ln())}function te(){0!==Dt.check&&Ft(35)}function ee(){Dt=null}var ne=null,re=null,ae=!1;function oe(){ne={},re={},ae=!1}function ie(){ne={},re={},ae=!1}function ue(t,e){if(e&&(e="".concat(e),t in ne||(ne[t]=[]),ne[t].indexOf(e)<0)){if(ne[t].length>128)return void(ae||(ae=!0,$t(5)));ne[t].push(e),t in re||(re[t]=[]),re[t].push(e)}}function ce(){Ft(1)}function se(){re={},ae=!1}var le=null,de=!0;function fe(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;de=!0,(null==e?void 0:e.addListener)&&e.addListener(["ad_storage","analytics_storage"],he)}function pe(){de=!0}function he(){var t,e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;if(null==e?void 0:e.getConsentState)try{var n=e.getConsentState("analytics_storage");Ne(function(t){var e={source:2,ad_Storage:1===t.ad_Storage?"granted":"denied",analytics_Storage:1===t.analytics_Storage?"granted":"denied"};return e}({ad_Storage:e.getConsentState("ad_storage"),analytics_Storage:n}))}catch(t){return}}function ge(t){me(t.analytics_Storage?1:0),le=t}function ve(){me(2)}function me(t){ue(36,t.toString())}function ye(t){le=t,Ft(47)}function be(){var t;if(de&&(Ft(47),de=!1,!i.track)){var e=null===(t=window.google_tag_data)||void 0===t?void 0:t.ics;(null==e?void 0:e.usedUpdate)&&he()}}var we=null,Se=[],_e=0,ke=null,Ie=!1,Ee={source:7,ad_Storage:"denied",analytics_Storage:"denied"};function Oe(){var t,e,n,r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(n="undefined"!=typeof Intl&&(null===(e=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===e?void 0:e.timeZone))&&void 0!==n?n:"",o=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";_e=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:Xe(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},e=mt("_clsk",!i.includeSubdomains);if(e){var n=e.includes("^")?e.split("^"):e.split("|");n.length>=5&&t.ts-Le(n[1])<18e5&&(t.session=n[0],t.count=Le(n[2])+1,t.upgrade=Le(n[3]),t.upload=n.length>=6?"".concat("https://").concat(n[5],"/").concat(n[4]):"".concat("https://").concat(n[4]))}return t}(),l=He(),d=i.projectId||function(t,e){void 0===e&&(e=null);for(var n,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return n=Math.abs(r+11579*a),(e?n%Math.pow(2,e):n).toString(36)}(location.host),f=i.externalSession&&i.userId?i.userId:l.id,p=i.externalSession&&i.sessionId?i.sessionId:s.session;we={projectId:d,userId:f,sessionId:p,pageNum:s.count},i.lean=i.track&&null!==s.upgrade?0===s.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&s.upload&&s.upload.length>"https://".length?s.upload:i.upload,ue(0,r),ue(3,c),ue(1,b(location.href,!!_e)),ue(2,document.referrer),ue(15,function(){var t=Xe();if(i.track&&pt(window,"sessionStorage")){var e=sessionStorage.getItem("_cltk");t=e||t,sessionStorage.setItem("_cltk",t)}return t}()),ue(16,document.documentElement.lang),ue(17,document.dir),ue(26,"".concat(window.devicePixelRatio)),ue(28,l.dob.toString()),ue(29,l.version.toString()),ue(33,u),ue(34,a),ue(35,o),U(0,s.ts),U(1,0),U(35,_e);var h,g=null===window||void 0===window?void 0:window.Zone;g&&"__symbol__"in g&&U(39,1),navigator&&(ue(9,navigator.language),U(33,navigator.hardwareConcurrency),U(32,navigator.maxTouchPoints),U(34,Math.round(navigator.deviceMemory)),(h=navigator.userAgentData)&&h.getHighEntropyValues?h.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var e;ue(22,t.platform),ue(23,t.platformVersion),null===(e=t.brands)||void 0===e||e.forEach((function(t){ue(24,t.name+"~"+t.version)})),ue(25,t.model),U(27,t.mobile?1:0)})):ue(22,navigator.platform)),screen&&(U(14,Math.round(screen.width)),U(15,Math.round(screen.height)),U(16,Math.round(screen.colorDepth))),null===ke&&(ke={source:l.consent?6:0,ad_Storage:i.track?"granted":"denied",analytics_Storage:i.track?"granted":"denied"}),Te(),ge(ze(ke)),i.externalSession||Re(l)}function Te(){if(!Ie&&"granted"===(null==ke?void 0:ke.analytics_Storage)&&"granted"===(null==ke?void 0:ke.ad_Storage)){for(var t=0,e=i.cookies;t<e.length;t++){var n=e[t],r=mt(n);r&&rt(n,r)}Ie=!0}}function Me(){we=null,Ie=!1,Se.forEach((function(t){t.called=!1}))}function xe(t,e,n,r){void 0===e&&(e=!0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=i.lean?0:1,o=!1;we&&(a||!1===e)&&(t(we,!i.lean,r?ke:void 0),o=!0),!n&&o||Se.push({callback:t,wait:e,recall:n,called:o,consentInfo:r})}function Ce(){return we?[we.userId,we.sessionId,we.pageNum].join("."):""}function je(t){void 0===t&&(t=!0),Ne(t?{source:4,ad_Storage:"granted",analytics_Storage:"granted"}:{source:4,ad_Storage:"denied",analytics_Storage:"denied"})}function Ne(t,e){var n;if(void 0===t&&(t=Ee),void 0===e&&(e=5),mn()){var r={source:null!==(n=t.source)&&void 0!==n?n:e,ad_Storage:Pe(t.ad_Storage,null==ke?void 0:ke.ad_Storage),analytics_Storage:Pe(t.analytics_Storage,null==ke?void 0:ke.analytics_Storage)};if(ke&&r.ad_Storage===ke.ad_Storage&&r.analytics_Storage===ke.analytics_Storage)return ke.source=r.source,ye(ze(ke)),void ve();ke=r,Ae(!0);var a=ze(ke);if(!a.analytics_Storage&&i.track)return i.track=!1,qe(!0),Ln(),void window.setTimeout(Xn,250);mn()&&a.analytics_Storage&&(i.track=!0,Re(He(),1),De()),Te(),ye(a),ve()}}function ze(t){var e;return{source:null!==(e=t.source)&&void 0!==e?e:255,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function Pe(t,e){return void 0===e&&(e="denied"),"string"==typeof t?t.toLowerCase():e}function qe(t){void 0===t&&(t=!1),yt("_clsk","",0),t&&yt("_clck","",0)}function Ae(t){void 0===t&&(t=!1),function(t,e){void 0===e&&(e=!1);if(Se.length>0)for(var n=0;n<Se.length;n++){var r=Se[n];r.callback&&(!r.called&&!e||r.consentInfo&&e)&&(!r.wait||t)&&(r.callback(we,!i.lean,r.consentInfo?ke:void 0),r.called=!0,r.recall||(Se.splice(n,1),n--))}}(i.lean?0:1,t)}function De(){if(we&&i.track&&!i.externalSession){var t=Math.round(Date.now()),e=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",n=i.lean?0:1;yt("_clsk",[we.sessionId,t,we.pageNum,n,e].join(vt),1)}}function Re(t,e){void 0===e&&(e=null),e=null===e?t.consent:e;var n=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(n-t.expiry)>=1||t.consent!==e||t.dob!==r)&&yt("_clck",[we.userId,2,n.toString(36),e,r].join(vt),365)}function Xe(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Le(t,e){return void 0===e&&(e=10),parseInt(t,e)}function He(){var t={id:Xe(),version:0,expiry:null,consent:0,dob:0},e=mt("_clck",!i.includeSubdomains);if(e&&e.length>0){var n=e.includes("^")?e.split("^"):e.split("|");n.length>1&&(t.version=Le(n[1])),n.length>2&&(t.expiry=Le(n[2],36)),n.length>3&&1===Le(n[3])&&(t.consent=1),n.length>4&&Le(n[1])>1&&(t.dob=Le(n[4])),i.track=i.track||1===t.consent,t.id=i.track?n[0]:t.id}return t}var Ue,Ge=null;function Ve(){var t=we;Ge={version:d,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function Ye(){Ge=null}function Be(t){return Ge.start=Ge.start+Ge.duration,Ge.duration=l()-Ge.start,Ge.sequence++,Ge.upload=t&&"sendBeacon"in navigator?1:0,Ge.end=t?1:0,Ge.applicationPlatform=0,Ge.url=b(location.href,!1,!0),[Ge.version,Ge.sequence,Ge.start,Ge.duration,Ge.projectId,Ge.userId,Ge.sessionId,Ge.pageNum,Ge.upload,Ge.end,Ge.applicationPlatform,Ge.url]}function We(){Ue=[]}function Ze(t){if(Ue&&-1===Ue.indexOf(t.message)){var e=i.report;if(e&&e.length>0&&Ge){var n={v:Ge.version,p:Ge.projectId,u:Ge.userId,s:Ge.sessionId,n:Ge.pageNum};t.message&&(n.m=t.message),t.stack&&(n.e=t.stack);var r=new XMLHttpRequest;r.open("POST",e,!0),r.send(JSON.stringify(n)),Ue.push(t.message)}}return t}function Je(t){return function(){var e=performance.now();try{t.apply(this,arguments)}catch(t){throw Ze(t)}var n=performance.now()-e;H(4,n),n>30&&(L(7),U(6,n),t.dn&&"".concat(t.dn,"-").concat(n))}}var Fe=new Map;function Ke(t,e,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),n=Je(n);try{t[u("addEventListener")](e,n,{capture:r,passive:a}),function(t){return Fe.has(t)}(t)||Fe.set(t,[]),Fe.get(t).push({event:e,listener:n,options:{capture:r,passive:a}})}catch(t){}}function Qe(){Fe.forEach((function(t,e){!function(t,e){t.forEach((function(t){try{e[u("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),Fe.delete(e)}(t,e)})),Fe=new Map}var $e=null,tn=null,en=null,nn=0;function rn(){return!(nn++>20)}function an(){nn=0,en!==un()&&(Ln(),window.setTimeout(on,250))}function on(){Xn(),U(29,1)}function un(){return location.href?location.href.replace(location.hash,""):location.href}var cn=[],sn=null,ln=null,dn=null;function fn(){cn=[],sn=null,ln=null}function pn(){var t=cn.shift();t&&(sn=t,t.task().then((function(){t.id===Ce()&&(t.resolve(),sn=null,pn())})).catch((function(e){t.id===Ce()&&(e&&(e.name,e.message,e.stack),sn=null,pn())})))}var hn=!1;function gn(){hn=!0,c=s(),fn(),Qe(),We(),function(){if(en=un(),nn=0,Ke(window,"popstate",an),null===$e)try{$e=history.pushState,history.pushState=function(){$e.apply(this,arguments),mn()&&rn()&&an()}}catch(t){$e=null}if(null===tn)try{tn=history.replaceState,history.replaceState=function(){tn.apply(this,arguments),mn()&&rn()&&an()}}catch(t){tn=null}}()}function vn(){en=null,nn=0,We(),Qe(),fn(),c=0,hn=!1}function mn(){return hn}function yn(){Xn(),A("clarityGemX","restart")}var bn=null;function wn(){bn=null}function Sn(t){bn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){tt(this,void 0,void 0,(function(){var e,n;return et(this,(function(r){return e=l(),n=[e,t],29===t&&(n.push(bn.fetchStart),n.push(bn.connectStart),n.push(bn.connectEnd),n.push(bn.requestStart),n.push(bn.responseStart),n.push(bn.responseEnd),n.push(bn.domInteractive),n.push(bn.domComplete),n.push(bn.loadEventStart),n.push(bn.loadEventEnd),n.push(bn.redirectCount),n.push(bn.size),n.push(bn.type),n.push(bn.protocol),n.push(bn.encodedSize),n.push(bn.decodedSize),wn(),Vt(n)),[2]}))}))}(29)}var _n,kn=0,In=1/0,En=0,On=0,Tn=[],Mn=new Map,xn=function(){return kn||0},Cn=function(){if(!Tn.length)return-1;var t=Math.min(Tn.length-1,Math.floor((xn()-On)/50));return Tn[t].latency},jn=function(){On=xn(),Tn.length=0,Mn.clear()},Nn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?kn=performance.interactionCount:t.interactionId&&(In=Math.min(In,t.interactionId),En=Math.max(En,t.interactionId),kn=En?(En-In)/7+1:0)}(t);var e=Tn[Tn.length-1],n=Mn.get(t.interactionId);if(n||Tn.length<10||t.duration>(null==e?void 0:e.latency)){if(n)t.duration>n.latency&&(n.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Mn.set(r.id,r),Tn.push(r)}Tn.sort((function(t,e){return e.latency-t.latency})),Tn.length>10&&Tn.splice(10).forEach((function(t){return Mn.delete(t.id)}))}}},zn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Pn(){try{_n&&_n.disconnect(),_n=new PerformanceObserver(Je(qn));for(var t=0,e=zn;t<e.length;t++){var n=e[t];PerformanceObserver.supportedEntryTypes.indexOf(n)>=0&&("layout-shift"===n&&H(9,0),_n.observe({type:n,buffered:!0}))}}catch(t){}}function qn(t){!function(t){for(var e=(!("visibilityState"in document)||"visible"===document.visibilityState),n=0;n<t.length;n++){var r=t[n];switch(r.entryType){case"navigation":Sn(r);break;case"resource":var a=r.name;ue(4,Dn(a)),a!==i.upload&&a!==i.fallback||U(28,r.duration);break;case"longtask":L(7);break;case"first-input":e&&U(10,r.processingStart-r.startTime);break;case"event":e&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Nn(r),ue(37,Cn().toString()));break;case"layout-shift":e&&!r.hadRecentInput&&H(9,1e3*r.value);break;case"largest-contentful-paint":e&&U(8,r.startTime)}}}(t.getEntries())}var An=null;function Dn(t){return An||(An=document.createElement("a")),An.href=t,An.host}var Rn=[P,P,P,Object.freeze({__proto__:null,start:function(){wn(),function(){navigator&&navigator.connection&&ue(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?Ke(window,"load",G.bind(this,Pn,0)):Pn())}()},stop:function(){_n&&_n.disconnect(),_n=null,jn(),An=null,wn()}}),P];function Xn(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===hn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||hn)return!1;for(var e in t)e in i&&(i[e]=t[e])}(t),gn(),_t(),Rn.forEach((function(t){return Je(t.start)()})),null===t&&Vn())}function Ln(){mn()&&(Rn.slice().reverse().forEach((function(t){return Je(t.stop)()})),kt(),vn(),void 0!==Un&&(Un[Gn]=function(){(Un[Gn].q=Un[Gn].q||[]).push(arguments),"start"===arguments[0]&&Un[Gn].q.unshift(Un[Gn].q.pop())&&Vn()}))}var Hn=Object.freeze({__proto__:null,consent:je,consentv2:Ne,dlog:ue,event:A,hashText:x,identify:at,maxMetric:U,measure:Je,metadata:xe,pause:function(){mn()&&(A("clarityGemX","pause"),null===ln&&(ln=new Promise((function(t){dn=t}))))},queue:Vt,register:z,resume:function(){mn()&&(ln&&(dn(),ln=null,null===sn&&pn()),A("clarityGemX","resume"))},schedule:function(t,e){return void 0===e&&(e=0),tt(this,void 0,void 0,(function(){var n,r,a;return et(this,(function(o){for(n=0,r=cn;n<r.length;n++)if(r[n].task===t)return[2];return a=new Promise((function(n){cn[1===e?"unshift":"push"]({task:t,resolve:n,id:Ce()})})),null===sn&&null===ln&&pn(),[2,a]}))}))},set:rt,signal:function(t){bt=t},start:Xn,stop:Ln,time:l,upgrade:Q,version:d}),Un=window,Gn="clarityGemX";function Vn(){if(void 0!==Un){if(Un[Gn]&&Un[Gn].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=Un[Gn]&&Un[Gn].q||[];for(Un[Gn]=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return Hn[t].apply(Hn,e)},Un[Gn].v=d;t.length>0;)Un[Gn].apply(Un,t.shift())}}Vn()}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gemx-dev/clarity-js",
3
- "version": "0.8.67",
3
+ "version": "0.8.69",
4
4
  "description": "Clarity js",
5
5
  "author": "Microsoft Corp.",
6
6
  "license": "MIT",
@@ -25,6 +25,7 @@ let config: Config = {
25
25
  conversions: false,
26
26
  includeSubdomains: true,
27
27
  modules: [],
28
+ diagnostics: false,
28
29
  excludeClassNames: [],
29
30
  externalSession: false,
30
31
  userId: null,
@@ -16,26 +16,37 @@ export function start(): void {
16
16
  bind(window, "popstate", compute);
17
17
 
18
18
  // Add a proxy to history.pushState function
19
- if (pushState === null) {
20
- pushState = history.pushState;
21
- history.pushState = function(): void {
22
- pushState.apply(this, arguments);
23
- if (core.active() && check()) {
24
- compute();
25
- }
26
- };
19
+ // Wrap in try-catch to handle Safari iOS where history methods may be readonly
20
+ if (pushState === null) {
21
+ try {
22
+ pushState = history.pushState;
23
+ history.pushState = function(): void {
24
+ pushState.apply(this, arguments);
25
+ if (core.active() && check()) {
26
+ compute();
27
+ }
28
+ };
29
+ } catch (e) {
30
+ // history.pushState is readonly in this environment (e.g., Safari iOS WKWebView)
31
+ pushState = null;
32
+ }
27
33
  }
28
34
 
29
35
  // Add a proxy to history.replaceState function
30
- if (replaceState === null)
31
- {
32
- replaceState = history.replaceState;
33
- history.replaceState = function(): void {
34
- replaceState.apply(this, arguments);
35
- if (core.active() && check()) {
36
- compute();
37
- }
38
- };
36
+ // Wrap in try-catch to handle Safari iOS where history methods may be readonly
37
+ if (replaceState === null) {
38
+ try {
39
+ replaceState = history.replaceState;
40
+ history.replaceState = function(): void {
41
+ replaceState.apply(this, arguments);
42
+ if (core.active() && check()) {
43
+ compute();
44
+ }
45
+ };
46
+ } catch (e) {
47
+ // history.replaceState is readonly in this environment (e.g., Safari iOS WKWebView)
48
+ replaceState = null;
49
+ }
39
50
  }
40
51
  }
41
52
 
package/src/core/scrub.ts CHANGED
@@ -44,10 +44,7 @@ export function text(value: string, hint: string, privacy: Privacy, mangle: bool
44
44
  case "href":
45
45
  case "xlink:href":
46
46
  if (privacy === Privacy.TextImage) {
47
- if (hint === 'src' && value?.startsWith('blob:')) {
48
- return 'blob:';
49
- }
50
- return Data.Constant.Empty;
47
+ return value?.startsWith('blob:') ? 'blob:' : Data.Constant.Empty;
51
48
  }
52
49
  return value;
53
50
  case "value":
@@ -1,2 +1,2 @@
1
- let version = "0.8.67";
1
+ let version = "0.8.69";
2
2
  export default version;
@@ -28,10 +28,15 @@ function processConsent(): void {
28
28
  return;
29
29
  }
30
30
 
31
- const analytics_storage = ics.getConsentState(Constant.AnalyticsStorage);
32
- const ad_storage = ics.getConsentState(Constant.AdStorage);
33
- const consentState = getGcmConsentState({ ad_Storage: ad_storage, analytics_Storage: analytics_storage });
34
- consentv2(consentState);
31
+ try {
32
+ const analytics_storage = ics.getConsentState(Constant.AnalyticsStorage);
33
+ const ad_storage = ics.getConsentState(Constant.AdStorage);
34
+ const consentState = getGcmConsentState({ ad_Storage: ad_storage, analytics_Storage: analytics_storage });
35
+ consentv2(consentState);
36
+ } catch {
37
+ // Handle GTM errors gracefully (e.g., misconfigured consent initialization)
38
+ return;
39
+ }
35
40
  }
36
41
 
37
42
  function getGcmConsentState(googleConsent: GCMConsentState): ConsentState {
@@ -29,7 +29,7 @@ export function log(dimension: Dimension, value: string): void {
29
29
  if (data[dimension].length > Setting.CollectionLimit) {
30
30
  if (!limited) {
31
31
  limited = true;
32
- limit.trigger(Check.Collection);
32
+ limit.trigger(Check.Collection);
33
33
  }
34
34
  return;
35
35
  }
@@ -13,9 +13,9 @@ import * as variable from "@src/data/variable";
13
13
  import * as extract from "@src/data/extract";
14
14
  import { queue, track } from "./upload";
15
15
 
16
- export default function(event: Event): void {
16
+ export default function (event: Event): void {
17
17
  const t = time();
18
- let tokens: Token[] = [t, event];
18
+ let tokens: Token[] = [t, event];
19
19
  switch (event) {
20
20
  case Event.Baseline: {
21
21
  const b = baseline.state;
@@ -140,12 +140,12 @@ export default function(event: Event): void {
140
140
  }
141
141
  tokens.push(token);
142
142
  });
143
-
143
+
144
144
  extract.reset();
145
145
  queue(tokens, false);
146
146
  break;
147
147
  }
148
- case Event.Consent:
148
+ case Event.Consent:
149
149
  tokens.push(consent.data.source);
150
150
  tokens.push(consent.data.ad_Storage);
151
151
  tokens.push(consent.data.analytics_Storage);
@@ -16,6 +16,7 @@ export let data: Metadata = null;
16
16
  export let callbacks: MetadataCallbackOptions[] = [];
17
17
  export let electron = BooleanFlag.False;
18
18
  let consentStatus: ConsentState = null;
19
+ let cookiesLogged = false;
19
20
  let defaultStatus: ConsentState = { source: ConsentSource.Default, ad_Storage: Constant.Denied, analytics_Storage: Constant.Denied };
20
21
 
21
22
  export function start(): void {
@@ -80,12 +81,6 @@ export function start(): void {
80
81
  metric.max(Metric.ColorDepth, Math.round(screen.colorDepth));
81
82
  }
82
83
 
83
- // Read cookies specified in configuration
84
- for (let key of config.cookies) {
85
- let value = getCookie(key);
86
- if (value) { set(key, value); }
87
- }
88
-
89
84
  // Track consent config
90
85
  // If consent status is not already set, initialize it based on project configuration. Otherwise, use the existing consent status.
91
86
  if (consentStatus === null) {
@@ -95,6 +90,9 @@ export function start(): void {
95
90
  analytics_Storage: config.track ? Constant.Granted : Constant.Denied,
96
91
  };
97
92
  }
93
+
94
+ logCookies();
95
+
98
96
  const consent = getConsentData(consentStatus);
99
97
  trackConsent.config(consent);
100
98
  // Track ids using a cookie if configuration allows it, skip if using external session
@@ -114,8 +112,21 @@ function userAgentData(): void {
114
112
  } else { dimension.log(Dimension.Platform, navigator.platform); }
115
113
  }
116
114
 
115
+ function logCookies(): void {
116
+ // Only log cookies if both analytics_Storage and ad_Storage are granted, and we haven't already logged them
117
+ if (cookiesLogged || consentStatus?.analytics_Storage !== Constant.Granted || consentStatus?.ad_Storage !== Constant.Granted) { return; }
118
+ for (let key of config.cookies) {
119
+ let value = getCookie(key);
120
+ if (value) { set(key, value); }
121
+ }
122
+ cookiesLogged = true;
123
+ }
124
+
117
125
  export function stop(): void {
118
126
  data = null;
127
+ // Reset cookiesLogged so cookies are re-logged on restart. Each session generates new metadata
128
+ // (sessionId, pageNum), and cookie values need to be recorded in the new session's data stream.
129
+ cookiesLogged = false;
119
130
  callbacks.forEach(cb => { cb.called = false; });
120
131
  }
121
132
 
@@ -147,10 +158,12 @@ export function consent(status = true): void {
147
158
  }
148
159
 
149
160
  consentv2({ source: ConsentSource.APIv1, ad_Storage: Constant.Granted, analytics_Storage: Constant.Granted });
150
- trackConsent.consent();
151
161
  }
152
162
 
153
163
  export function consentv2(consentState: ConsentState = defaultStatus, source: number = ConsentSource.APIv2): void {
164
+ // Guard against calling consent API when Clarity hasn't started (e.g., due to GPC)
165
+ if (!core.active()) { return; }
166
+
154
167
  const updatedStatus = {
155
168
  source: consentState.source ?? source,
156
169
  ad_Storage: normalizeConsent(consentState.ad_Storage, consentStatus?.ad_Storage),
@@ -186,6 +199,7 @@ export function consentv2(consentState: ConsentState = defaultStatus, source: nu
186
199
  save();
187
200
  }
188
201
 
202
+ logCookies();
189
203
  trackConsent.trackConsentv2(consentData);
190
204
  trackConsent.consent();
191
205
  }
@@ -39,7 +39,7 @@ export default async function (type: Event): Promise<void> {
39
39
  case "attributes":
40
40
  for (let attr in data[key]) {
41
41
  if (data[key][attr] !== undefined) {
42
- tokens.push(attribute(attr, data[key][attr], privacy));
42
+ tokens.push(attribute(attr, data[key][attr], privacy, data.tag));
43
43
  }
44
44
  }
45
45
  break;
@@ -56,6 +56,9 @@ export default async function (type: Event): Promise<void> {
56
56
  }
57
57
  }
58
58
 
59
- function attribute(key: string, value: string, privacy: Privacy): string {
59
+ function attribute(key: string, value: string, privacy: Privacy, tag: string): string {
60
+ if (key === Constant.Href && tag === Constant.LinkTag) {
61
+ return `${key}=${value}`;
62
+ }
60
63
  return `${key}=${scrub.text(value, key.indexOf(Constant.DataAttribute) === 0 ? Constant.DataAttribute : key, privacy)}`;
61
64
  }
@@ -7,7 +7,7 @@ import { schedule } from "@src/core/task";
7
7
  import { time } from "@src/core/time";
8
8
  import { target } from "@src/layout/target";
9
9
  import encode from "./encode";
10
- import { Mask } from "@clarity-types/layout";
10
+ import { MaskExcludeList } from "@src/layout/constants";
11
11
 
12
12
  export let state: ChangeState[] = [];
13
13
 
@@ -23,10 +23,10 @@ function recompute(evt: UIEvent): void {
23
23
  let element = target(evt) as HTMLInputElement;
24
24
  if (element) {
25
25
  let value = element.value;
26
- let checksum = value && value.length >= Setting.WordLength && config.fraud && Mask.Exclude.indexOf(element.type) === -1 ? hash(value, Setting.ChecksumPrecision) : Constant.Empty;
26
+ let checksum = value && value.length >= Setting.WordLength && config.fraud && MaskExcludeList.indexOf(element.type) === -1 ? hash(value, Setting.ChecksumPrecision) : Constant.Empty;
27
27
  state.push({ time: time(evt), event: Event.Change, data: { target: target(evt), type: element.type, value, checksum } });
28
28
  schedule(encode.bind(this, Event.Change));
29
- }
29
+ }
30
30
  }
31
31
 
32
32
  export function reset(): void {
@@ -1,6 +1,8 @@
1
1
  import { BooleanFlag, Constant, Event, Setting } from "@clarity-types/data";
2
- import { BrowsingContext, ClickState, TextInfo } from "@clarity-types/interaction";
2
+ import { BrowsingContext, ClickSource, ClickState, TextInfo } from "@clarity-types/interaction";
3
3
  import { Box } from "@clarity-types/layout";
4
+ import { FunctionNames } from "@clarity-types/performance";
5
+ import config from "@src/core/config";
4
6
  import { bind } from "@src/core/event";
5
7
  import { schedule } from "@src/core/task";
6
8
  import { time } from "@src/core/time";
@@ -10,6 +12,7 @@ import { target } from "@src/layout/target";
10
12
  import encode from "./encode";
11
13
 
12
14
  const UserInputTags = ["input", "textarea", "radio", "button", "canvas", "select"];
15
+ const VM_PATTERN = /VM\d/;
13
16
  export let state: ClickState[] = [];
14
17
 
15
18
  export function start(): void {
@@ -49,8 +52,9 @@ function handler(event: Event, root: Node, evt: MouseEvent): void {
49
52
  y = Math.round(l.y + (l.h / 2));
50
53
  }
51
54
 
52
- let eX = l ? Math.max(Math.floor(((x - l.x) / l.w) * Setting.ClickPrecision), 0) : 0;
53
- let eY = l ? Math.max(Math.floor(((y - l.y) / l.h) * Setting.ClickPrecision), 0) : 0;
55
+ let relativeCoords = computeRelativeCoordinates(t as Element, x, y, l);
56
+ let eX = relativeCoords.eX;
57
+ let eY = relativeCoords.eY;
54
58
 
55
59
  // Check for null values before processing this event
56
60
  if (x !== null && y !== null) {
@@ -75,6 +79,7 @@ function handler(event: Event, root: Node, evt: MouseEvent): void {
75
79
  tag: getElementAttribute(t, "tagName").substring(0, Setting.ClickTag),
76
80
  class: getElementAttribute(t, "className").substring(0, Setting.ClickClass),
77
81
  id: getElementAttribute(t, "id").substring(0, Setting.ClickId),
82
+ source: config.diagnostics && !evt.isTrusted ? source() : ClickSource.Undefined
78
83
  }
79
84
  });
80
85
  schedule(encode.bind(this, event));
@@ -132,7 +137,10 @@ function getElementAttribute(element: Node, attribute: "tagName" | "className" |
132
137
 
133
138
  function layout(element: Element): Box {
134
139
  let box: Box = null;
135
- let de = document.documentElement;
140
+ let doc = element.ownerDocument || document;
141
+ let de = doc.documentElement;
142
+ let win = doc.defaultView || window;
143
+
136
144
  if (typeof element.getBoundingClientRect === "function") {
137
145
  // getBoundingClientRect returns rectangle relative positioning to viewport
138
146
  let rect = element.getBoundingClientRect();
@@ -142,17 +150,53 @@ function layout(element: Element): Box {
142
150
  // Also: using Math.floor() instead of Math.round() because in Edge,
143
151
  // getBoundingClientRect returns partial pixel values (e.g. 162.5px) and Chrome already
144
152
  // floors the value (e.g. 162px). This keeps consistent behavior across browsers.
153
+ let scrollLeft = "pageXOffset" in win ? win.pageXOffset : de.scrollLeft;
154
+ let scrollTop = "pageYOffset" in win ? win.pageYOffset : de.scrollTop;
155
+
145
156
  box = {
146
- x: Math.floor(rect.left + ("pageXOffset" in window ? window.pageXOffset : de.scrollLeft)),
147
- y: Math.floor(rect.top + ("pageYOffset" in window ? window.pageYOffset : de.scrollTop)),
157
+ x: Math.floor(rect.left + scrollLeft),
158
+ y: Math.floor(rect.top + scrollTop),
148
159
  w: Math.floor(rect.width),
149
160
  h: Math.floor(rect.height)
150
161
  };
162
+
163
+ // If this element is inside an iframe, add the iframe's offset to get parent-page coordinates
164
+ let frame = iframe(doc);
165
+ if (frame) {
166
+ let distance = offset(frame);
167
+ box.x += Math.round(distance.x);
168
+ box.y += Math.round(distance.y);
169
+ }
151
170
  }
152
171
  }
153
172
  return box;
154
173
  }
155
174
 
175
+ function computeRelativeCoordinates(element: Element, x: number, y: number, l: Box): { eX: number, eY: number } {
176
+ if (!l) return { eX: 0, eY: 0 };
177
+
178
+ let box = l;
179
+ let el = element;
180
+
181
+ let eX = Math.max(Math.floor(((x - box.x) / box.w) * Setting.ClickPrecision), 0);
182
+ let eY = Math.max(Math.floor(((y - box.y) / box.h) * Setting.ClickPrecision), 0);
183
+
184
+ // Walk up parent chain if coords exceed bounds (can happen with CSS-rendered text)
185
+ // Cap iterations to prevent performance issues with deeply nested DOM
186
+ let iterations = 0;
187
+ while ((eX > Setting.ClickPrecision || eY > Setting.ClickPrecision) && el.parentElement && iterations < Setting.ClickParentTraversal) {
188
+ el = el.parentElement;
189
+ iterations++;
190
+ box = layout(el);
191
+ if (!box) continue;
192
+
193
+ eX = Math.max(Math.floor(((x - box.x) / box.w) * Setting.ClickPrecision), 0);
194
+ eY = Math.max(Math.floor(((y - box.y) / box.h) * Setting.ClickPrecision), 0);
195
+ }
196
+
197
+ return { eX, eY };
198
+ }
199
+
156
200
  function context(a: HTMLAnchorElement): BrowsingContext {
157
201
  if (a && a.hasAttribute(Constant.Target)) {
158
202
  switch (a.getAttribute(Constant.Target)) {
@@ -164,6 +208,29 @@ function context(a: HTMLAnchorElement): BrowsingContext {
164
208
  return BrowsingContext.Self;
165
209
  }
166
210
 
211
+ function source(): ClickSource {
212
+ source.dn = FunctionNames.ClickSource;
213
+ try {
214
+ const stack = new Error().stack || "";
215
+ const origin = location.origin;
216
+ let result = ClickSource.Unknown;
217
+
218
+ for (const line of stack.split("\n")) {
219
+ if (line.indexOf("://") >= 0) {
220
+ result = line.indexOf("extension") < 0 && line.indexOf(origin) >= 0
221
+ ? ClickSource.FirstParty
222
+ : ClickSource.ThirdParty;
223
+ } else if (line.indexOf("eval") >= 0 || line.indexOf("Function") >= 0 || line.indexOf("<a") >= 0 || VM_PATTERN.test(line)) {
224
+ result = ClickSource.Eval;
225
+ }
226
+ }
227
+
228
+ return result;
229
+ } catch {
230
+ return ClickSource.Unknown;
231
+ }
232
+ }
233
+
167
234
  export function reset(): void {
168
235
  state = [];
169
236
  }
@@ -77,6 +77,7 @@ export default async function (type: Event, ts: number = null): Promise<void> {
77
77
  tokens.push(entry.data.tag);
78
78
  tokens.push(entry.data.class);
79
79
  tokens.push(entry.data.id);
80
+ tokens.push(entry.data.source);
80
81
  queue(tokens);
81
82
  timeline.track(entry.time, entry.event, cHash, entry.data.x, entry.data.y, entry.data.reaction, entry.data.context);
82
83
  }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Pre-computed arrays for better minification and performance
3
+ * These replace comma-separated strings that were previously split at runtime
4
+ */
5
+
6
+ // Pre-computed mask arrays (replaces Mask.Text.split(), etc.)
7
+ export const MaskTextList = ["address", "password", "contact"];
8
+ export const MaskDisableList = ["radio", "checkbox", "range", "button", "reset", "submit"];
9
+ export const MaskExcludeList = ["password", "secret", "pass", "social", "ssn", "code", "hidden"];
10
+ export const MaskTagsList = ["INPUT", "SELECT", "TEXTAREA"];
11
+
12
+ // Pre-computed exclude class names (replaces Constant.ExcludeClassNames.split())
13
+ export const ExcludeClassNamesList = ["load", "active", "fixed", "visible", "focus", "show", "collaps", "animat"];
@@ -21,15 +21,20 @@ export function check(tag: string) {
21
21
  }
22
22
 
23
23
  export function start() {
24
- window.clarityOverrides = window.clarityOverrides || {};
25
- if (window.customElements?.define && !window.clarityOverrides.define) {
26
- window.clarityOverrides.define = window.customElements.define;
27
- window.customElements.define = function () {
28
- if (active()) {
29
- register(arguments[0]);
30
- }
31
- return window.clarityOverrides.define.apply(this, arguments);
32
- };
24
+ // Wrap in try-catch to handle Safari iOS where window properties or customElements.define may be readonly
25
+ try {
26
+ window.clarityOverrides = window.clarityOverrides || {};
27
+ if (window.customElements?.define && !window.clarityOverrides.define) {
28
+ window.clarityOverrides.define = window.customElements.define;
29
+ window.customElements.define = function () {
30
+ if (active()) {
31
+ register(arguments[0]);
32
+ }
33
+ return window.clarityOverrides.define.apply(this, arguments);
34
+ };
35
+ }
36
+ } catch (e) {
37
+ // customElements.define or window properties are readonly in this environment (e.g., Safari iOS WKWebView)
33
38
  }
34
39
  }
35
40