clarity-js 0.8.19 → 0.8.21
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.
- package/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +279 -113
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +279 -113
- package/build/clarity.performance.js +1 -1
- package/package.json +3 -3
- package/src/core/throttle.ts +15 -4
- package/src/core/time.ts +10 -3
- package/src/core/version.ts +1 -1
- package/src/data/encode.ts +3 -3
- package/src/data/metadata.ts +1 -1
- package/src/data/upload.ts +18 -2
- package/src/interaction/click.ts +2 -1
- package/src/interaction/encode.ts +1 -0
- package/src/interaction/pointer.ts +2 -2
- package/src/interaction/scroll.ts +1 -0
- package/src/performance/blank.ts +1 -0
- package/src/performance/observer.ts +1 -1
- package/types/data.d.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return _t},get start(){return St},get stop(){return It},get track(){return vt}}),n=Object.freeze({__proto__:null,get check(){return zt},get compute(){return At},get data(){return gt},get start(){return jt},get stop(){return Pt},get trigger(){return Ct}}),e=Object.freeze({__proto__:null,get compute(){return Xt},get data(){return qt},get log(){return Ut},get reset(){return Lt},get start(){return Rt},get stop(){return Ht},get updates(){return Nt}}),r=Object.freeze({__proto__:null,get callback(){return an},get callbacks(){return Bt},get clear(){return rn},get consent(){return $t},get consentv2(){return tn},get data(){return Vt},get electron(){return Yt},get id(){return Qt},get metadata(){return Kt},get save(){return on},get shortid(){return sn},get start(){return Gt},get stop(){return Ft}}),a=Object.freeze({__proto__:null,get data(){return gn},get envelope(){return wn},get start(){return mn},get stop(){return yn}}),o={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};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=0;function c(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-u),0)}var s="0.8.19";var l=255,d=!0,p=null,f=null;function h(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var a=o.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),u=i[0],c=i[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,l)),r}function v(t,n,e){return function(){if(d&&null===p)try{p=new RegExp("\\p{N}","gu"),f=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){d=!1}}(),t?t.replace(f,n).replace(p,e):t}var g=[],m=null;function y(){}var w=[];function b(){}function k(){}var S=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:m,hashText:b,keys:w,log:y,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:g,stop:function(){},trigger:k}),_=null,I=!0;function E(){M(2)}function M(t){Ut(36,t.toString())}var O=null;function T(t,n){Bn()&&t&&"string"==typeof t&&t.length<255&&(O=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},xt(24))}var x,j=null,z=null;function C(t){t in j||(j[t]=0),t in z||(z[t]=0),j[t]++,z[t]++}function A(t,n){null!==n&&(t in j||(j[t]=0),t in z||(z[t]=0),j[t]+=n,z[t]+=n)}function P(t,n){null!==n&&!1===isNaN(n)&&(t in j||(j[t]=0),(n>j[t]||0===j[t])&&(z[t]=n,j[t]=n))}function q(t,n,e){return window.setTimeout(Sn(t),n,e)}function N(t){return window.clearTimeout(t)}var D=0,R=0,H=null;function U(){H&&N(H),H=q(X,R),D=c()}function X(){var t=c();x={gap:t-D},xt(25),x.gap<3e5?H=q(X,R):Xn&&(T("clarity","suspend"),he(),["mousemove","touchstart"].forEach((function(t){return In(document,t,Yn)})),["resize","scroll","pageshow"].forEach((function(t){return In(window,t,Yn)})))}var L=Object.freeze({__proto__:null,get data(){return x},reset:U,start:function(){R=6e4,D=0},stop:function(){N(H),D=0,R=0}}),V=null;function B(t){Bn()&&o.lean&&(o.lean=!1,V={key:t},an(),on(),o.upgrade&&o.upgrade(t),xt(3),o.lite)}var Y=Object.freeze({__proto__:null,get data(){return V},start:function(){!o.lean&&o.upgrade&&o.upgrade("Config"),V=null},stop:function(){V=null},upgrade:B});function W(t,n,e,r){return new(e||(e=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 n;t.done?a(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,u)}c((r=r.apply(t,n||[])).next())}))}function Z(t,n){var e,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(e)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(e=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=n.call(t,i)}catch(t){u=[6,t],r=0}finally{e=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var J=null;function G(t,n){K(t,"string"==typeof n?[n]:n)}function F(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),W(this,void 0,void 0,(function(){var a,o;return Z(this,(function(i){switch(i.label){case 0:return o={},[4,tt(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(v(u.substring(2),"*","*")):v(u,"*","*")),K("userId",[(a=o).userId]),K("userHint",[a.userHint]),K("userType",[nt(t)]),n&&(K("sessionId",[n]),a.sessionId=n),e&&(K("pageId",[e]),a.pageId=e),[2,a]}var u}))}))}function K(t,n){if(Bn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in J?J[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);J[t]=e}}function Q(){xt(34)}function $(){J={}}function tt(t){return W(this,void 0,void 0,(function(){var n;return Z(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function nt(t){return t&&t.indexOf("@")>0?"email":"string"}var et="CompressionStream"in window;function rt(t){return W(this,void 0,void 0,(function(){var n,e;return Z(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),et?(n=new ReadableStream({start:function(n){return W(this,void 0,void 0,(function(){return Z(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,at(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function at(t){return W(this,void 0,void 0,(function(){var n,e,r,a,o;return Z(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,e]:(e.push.apply(e,a),[3,1]);case 3:return[2,e]}}))}))}var ot=null;function it(t){try{if(!ot)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){ot(t)}))}catch(t){}}var ut=[S,e,Object.freeze({__proto__:null,compute:Q,get data(){return J},identify:F,reset:$,set:G,start:function(){$()},stop:function(){$()}}),n,S,r,a,t,L,Y,S];function ct(){j={},z={},C(5),ut.forEach((function(t){return Sn(t.start)()}))}function st(){ut.slice().reverse().forEach((function(t){return Sn(t.stop)()})),j={},z={}}function lt(){Q(),Xt(),xt(0),At(),I&&(xt(47),I=!1)}var dt,pt,ft,ht,vt,gt,mt=0,yt=0,wt=null,bt=0,kt=!1;function St(){ht=!0,mt=0,yt=0,kt=!1,bt=0,dt=[],pt=[],ft={},vt=null}function _t(t,n){if(void 0===n&&(n=!0),ht){var e=c(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(o.lean?!kt&&yt+a.length>10485760&&(kt=!0):kt=!1,r){case 5:if(kt)break;mt+=a.length;case 37:case 6:case 43:case 45:case 46:if(kt)break;yt+=a.length,dt.push(a);break;default:pt.push(a)}C(25);var i=function(){var t=!1===o.lean&&mt>0?100:gn.sequence*o.delay;return"string"==typeof o.upload?Math.max(Math.min(t,3e4),100):o.delay}();e-bt>2*i&&(N(wt),wt=null),n&&null===wt&&(25!==r&&U(),wt=q(Et,i),bt=e,zt(yt))}}function It(){N(wt),Et(!0),mt=0,yt=0,kt=!1,bt=0,dt=[],pt=[],ft={},vt=null,ht=!1}function Et(t){return void 0===t&&(t=!1),W(this,void 0,void 0,(function(){var n,e,r,a,i,u,c,s;return Z(this,(function(l){switch(l.label){case 0:return ht?(wt=null,(n=!1===o.lean&&yt>0&&(yt<1048576||gn.sequence>0))&&P(1,1),lt(),e=!0===t,gn?(r=JSON.stringify(wn(e)),a="[".concat(pt.join(),"]"),i=n?"[".concat(dt.join(),"]"):"",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:i}),e?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,rt(u)];case 2:s=l.sent(),l.label=3;case 3:return A(2,(c=s)?c.length:u.length),Mt(u,c,gn.sequence,e),pt=[],n&&(dt=[],yt=0,mt=0,kt=!1),[2]}}))}))}function Mt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof o.upload){var a=o.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(a,t))&&Tt(e)}catch(t){}if(!1===i){e in ft?ft[e].attempts++:ft[e]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){kn(new Error("".concat("Timeout"," : ").concat(a)))},null!==e&&(u.onreadystatechange=function(){Sn(Ot)(u,e)}),u.withCredentials=!0,n?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(n)):u.send(t)}}else if(o.upload){(0,o.upload)(t),Tt(e)}}function Ot(t,n){var e=ft[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Ct(6):(0===t.status&&(o.upload=o.fallback?o.fallback:o.upload),Mt(e.data,null,n)):(vt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&xt(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var a=r[e],i=a&&a.length>0?a.split(/ (.*)/):[""];switch(i[0]){case"END":Ct(6);break;case"UPGRADE":B("Auto");break;case"ACTION":o.action&&i.length>1&&o.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&it(i[1])}}}(t.responseText),0===t.status&&(Mt(e.data,null,n,!0),Ct(3)),t.status>=200&&t.status<=208&&Tt(n),delete ft[n]))}function Tt(t){1===t&&(on(),an())}function xt(t){var n=[c(),t];switch(t){case 4:var e=g;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),n.push(e.data.pointerTime),n.push(e.data.moveX),n.push(e.data.moveY),n.push(e.data.moveTime),n.push(e.data.downX),n.push(e.data.downY),n.push(e.data.downTime),n.push(e.data.upX),n.push(e.data.upY),n.push(e.data.upTime),n.push(e.data.pointerPrevX),n.push(e.data.pointerPrevY),n.push(e.data.pointerPrevTime),_t(n,!1));break;case 25:n.push(x.gap),_t(n);break;case 35:n.push(gt.check),_t(n,!1);break;case 3:n.push(V.key),_t(n);break;case 2:n.push(vt.sequence),n.push(vt.attempts),n.push(vt.status),_t(n,!1);break;case 24:O.key&&n.push(O.key),n.push(O.value),_t(n);break;case 34:var r=Object.keys(J);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];n.push(i),n.push(J[i])}$(),_t(n,!1)}break;case 0:var u=Object.keys(z);if(u.length>0){for(var s=0,l=u;s<l.length;s++){var d=l[s],p=parseInt(d,10);n.push(p),n.push(Math.round(z[d]))}z={},_t(n,!1)}break;case 1:var f=Object.keys(Nt);if(f.length>0){for(var h=0,v=f;h<v.length;h++){var y=v[h];p=parseInt(y,10);n.push(p),n.push(Nt[y])}Lt(),_t(n,!1)}break;case 36:var b=Object.keys(m);if(b.length>0){for(var k=0,S=b;k<S.length;k++){var I=S[k];p=parseInt(I,10);n.push(p),n.push([].concat.apply([],m[I]))}_t(n,!1)}break;case 40:w.forEach((function(t){n.push(t);var e=[];for(var r in m[t]){var a=parseInt(r,10);e.push(a),e.push(m[t][r])}n.push(e)})),_t(n,!1);break;case 47:n.push(_.source),n.push(_.ad_Storage),n.push(_.analytics_Storage),_t(n,!1)}}function jt(){gt={check:0}}function zt(t){if(0===gt.check){var n=gt.check;n=gn.sequence>=128?1:n,n=gn.pageNum>=128?7:n,n=c()>72e5?2:n,(n=t>10485760?2:n)!==gt.check&&Ct(n)}}function Ct(t){gt.check=t,5!==t&&(rn(),he())}function At(){0!==gt.check&&xt(35)}function Pt(){gt=null}var qt=null,Nt=null,Dt=!1;function Rt(){qt={},Nt={},Dt=!1}function Ht(){qt={},Nt={},Dt=!1}function Ut(t,n){if(n&&(n="".concat(n),t in qt||(qt[t]=[]),qt[t].indexOf(n)<0)){if(qt[t].length>128)return void(Dt||(Dt=!0,Ct(5)));qt[t].push(n),t in Nt||(Nt[t]=[]),Nt[t].push(n)}}function Xt(){xt(1)}function Lt(){Nt={},Dt=!1}var Vt=null,Bt=[],Yt=0,Wt=null,Zt=null,Jt={ad_Storage:"denied",analytics_Storage:"denied"};function Gt(){var t,n,e;Wt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";Yt=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:sn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=pn("_clsk",!o.includeSubdomains);if(n){var e=n.includes("^")?n.split("^"):n.split("|");e.length>=5&&t.ts-ln(e[1])<18e5&&(t.session=e[0],t.count=ln(e[2])+1,t.upgrade=ln(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),l=dn(),d=o.projectId||function(t,n){void 0===n&&(n=null);for(var e,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 e=Math.abs(r+11579*a),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Vt={projectId:d,userId:l.id,sessionId:s.session,pageNum:s.count},o.lean=o.track&&null!==s.upgrade?0===s.upgrade:o.lean,o.upload=o.track&&"string"==typeof o.upload&&s.upload&&s.upload.length>"https://".length?s.upload:o.upload,Ut(0,r),Ut(3,c),Ut(1,h(location.href,!!Yt)),Ut(2,document.referrer),Ut(15,function(){var t=sn();if(o.track&&un(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Ut(16,document.documentElement.lang),Ut(17,document.dir),Ut(26,"".concat(window.devicePixelRatio)),Ut(28,l.dob.toString()),Ut(29,l.version.toString()),Ut(33,u),Ut(34,a),Ut(35,i),P(0,s.ts),P(1,0),P(35,Yt);var p,f=null===window||void 0===window?void 0:window.Zone;f&&"__symbol__"in f&&P(39,1),navigator&&(Ut(9,navigator.language),P(33,navigator.hardwareConcurrency),P(32,navigator.maxTouchPoints),P(34,Math.round(navigator.deviceMemory)),(p=navigator.userAgentData)&&p.getHighEntropyValues?p.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Ut(22,t.platform),Ut(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Ut(24,t.name+"~"+t.version)})),Ut(25,t.model),P(27,t.mobile?1:0)})):Ut(22,navigator.platform)),screen&&(P(14,Math.round(screen.width)),P(15,Math.round(screen.height)),P(16,Math.round(screen.colorDepth)));for(var v=0,g=o.cookies;v<g.length;v++){var m=g[v],y=pn(m);y&&G(m,y)}!function(t){M(t.analytics_Storage?1:0),_=t}(nn(Zt={ad_Storage:o.track?"granted":"denied",analytics_Storage:o.track?"granted":"denied"},0)),cn(l)}function Ft(){Wt=null,Vt=null,Zt=null,Bt.forEach((function(t){t.called=!1}))}function Kt(t,n,e,r){void 0===n&&(n=!0),void 0===e&&(e=!1),void 0===r&&(r=!1);var a=o.lean?0:1,i=!1;Vt&&(a||!1===n)&&(t(Vt,!o.lean,r?Zt:void 0),i=!0),!e&&i||Bt.push({callback:t,wait:n,recall:e,called:i,consentInfo:r})}function Qt(){return Vt?[Vt.userId,Vt.sessionId,Vt.pageNum].join("."):""}function $t(t){void 0===t&&(t=!0),t?(tn({ad_Storage:"granted",analytics_Storage:"granted"}),E()):tn()}function tn(t,n){void 0===t&&(t=Jt),void 0===n&&(n=1),Zt={ad_Storage:en(t.ad_Storage),analytics_Storage:en(t.analytics_Storage)},an(!0);var e=nn(Zt,n);if(!e.analytics_Storage)return o.track=!1,hn("_clsk","",-Number.MAX_VALUE),hn("_clck","",-Number.MAX_VALUE),he(),void window.setTimeout(fe,250);Bn()&&(o.track=!0,cn(dn(),1),on(),function(t){_=t,xt(47)}(e),E())}function nn(t,n){return{source:n,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function en(t){return"string"==typeof t?t.toLowerCase():"denied"}function rn(){hn("_clsk","",0)}function an(t){void 0===t&&(t=!1),function(t,n){void 0===n&&(n=!1);if(Bt.length>0)for(var e=0;e<Bt.length;e++){var r=Bt[e];r.callback&&(!r.called&&!n||r.consentInfo&&n)&&(!r.wait||t)&&(r.callback(Vt,!o.lean,r.consentInfo?Zt:void 0),r.called=!0,r.recall||(Bt.splice(e,1),e--))}}(o.lean?0:1,t)}function on(){if(Vt&&o.track){var t=Math.round(Date.now()),n=o.upload&&"string"==typeof o.upload?o.upload.replace("https://",""):"",e=o.lean?0:1;hn("_clsk",[Vt.sessionId,t,Vt.pageNum,e,n].join("|"),1)}}function un(t,n){try{return!!t[n]}catch(t){return!1}}function cn(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===o.dob?0:o.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&hn("_clck",[Vt.userId,2,e.toString(36),n,r].join("|"),365)}function sn(){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 ln(t,n){return void 0===n&&(n=10),parseInt(t,n)}function dn(){var t={id:sn(),version:0,expiry:null,consent:0,dob:0},n=pn("_clck",!o.includeSubdomains);if(n&&n.length>0){var e=n.includes("^")?n.split("^"):n.split("|");e.length>1&&(t.version=ln(e[1])),e.length>2&&(t.expiry=ln(e[2],36)),e.length>3&&1===ln(e[3])&&(t.consent=1),e.length>4&&ln(e[1])>1&&(t.dob=ln(e[4])),o.track=o.track||1===t.consent,t.id=o.track?e[0]:t.id}return t}function pn(t,n){var e;if(void 0===n&&(n=!1),un(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=fn(o[1]),u=i[0],c=i[1];u;)u=(e=fn(c))[0],c=e[1];return n?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function fn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function hn(t,n,e){if((o.track||""==n)&&(navigator&&navigator.cookieEnabled||un(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),a=new Date;a.setDate(a.getDate()+e);var i=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Wt){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(Wt=".".concat(c[s]).concat(Wt||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(Wt),pn(t)===n))return;Wt=""}}catch(t){Wt=""}document.cookie=Wt?"".concat(u).concat(";").concat("domain=").concat(Wt):u}}var vn,gn=null;function mn(){var t=Vt;gn={version:s,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 yn(){gn=null}function wn(t){return gn.start=gn.start+gn.duration,gn.duration=c()-gn.start,gn.sequence++,gn.upload=t&&"sendBeacon"in navigator?1:0,gn.end=t?1:0,gn.applicationPlatform=0,gn.url=h(location.href,!1,!0),[gn.version,gn.sequence,gn.start,gn.duration,gn.projectId,gn.userId,gn.sessionId,gn.pageNum,gn.upload,gn.end,gn.applicationPlatform,gn.url]}function bn(){vn=[]}function kn(t){if(vn&&-1===vn.indexOf(t.message)){var n=o.report;if(n&&n.length>0&&gn){var e={v:gn.version,p:gn.projectId,u:gn.userId,s:gn.sessionId,n:gn.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),vn.push(t.message)}}return t}function Sn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw kn(t)}var e=performance.now()-n;A(4,e),e>30&&(C(7),P(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var _n=new Map;function In(t,n,e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),e=Sn(e);try{t[i("addEventListener")](n,e,{capture:r,passive:a}),function(t){return _n.has(t)}(t)||_n.set(t,[]),_n.get(t).push({event:n,listener:e,options:{capture:r,passive:a}})}catch(t){}}function En(){_n.forEach((function(t,n){!function(t,n){t.forEach((function(t){try{n[i("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),_n.delete(n)}(t,n)})),_n=new Map}var Mn=null,On=null,Tn=null,xn=0;function jn(){return!(xn++>20)}function zn(){zn.dn=1,xn=0,Tn!==An()&&(he(),window.setTimeout(Cn,250))}function Cn(){fe(),P(29,1)}function An(){return location.href?location.href.replace(location.hash,""):location.href}var Pn=[],qn=null,Nn=null,Dn=null;function Rn(){Nn&&(Dn(),Nn=null,null===qn&&Un())}function Hn(){Pn=[],qn=null,Nn=null}function Un(){var t=Pn.shift();t&&(qn=t,t.task().then((function(){t.id===Qt()&&(t.resolve(),qn=null,Un())})).catch((function(n){t.id===Qt()&&(n&&(n.name,n.message,n.stack),qn=null,Un())})))}var Xn=!1;function Ln(){Xn=!0,u=performance.now()+performance.timeOrigin,Hn(),En(),bn(),Tn=An(),xn=0,In(window,"popstate",zn),null===Mn&&(Mn=history.pushState,history.pushState=function(){Mn.apply(this,arguments),Bn()&&jn()&&zn()}),null===On&&(On=history.replaceState,history.replaceState=function(){On.apply(this,arguments),Bn()&&jn()&&zn()})}function Vn(){Tn=null,xn=0,bn(),En(),Hn(),u=0,Xn=!1}function Bn(){return Xn}function Yn(){Yn.dn=2,fe(),T("clarity","restart")}var Wn=null;function Zn(){Wn=null}function Jn(t){Wn={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){W(this,void 0,void 0,(function(){var n,e;return Z(this,(function(r){return n=c(),e=[n,t],29===t&&(e.push(Wn.fetchStart),e.push(Wn.connectStart),e.push(Wn.connectEnd),e.push(Wn.requestStart),e.push(Wn.responseStart),e.push(Wn.responseEnd),e.push(Wn.domInteractive),e.push(Wn.domComplete),e.push(Wn.loadEventStart),e.push(Wn.loadEventEnd),e.push(Wn.redirectCount),e.push(Wn.size),e.push(Wn.type),e.push(Wn.protocol),e.push(Wn.encodedSize),e.push(Wn.decodedSize),Zn(),_t(e)),[2]}))}))}(29)}var Gn,Fn=0,Kn=1/0,Qn=0,$n=0,te=[],ne=new Map,ee=function(){return Fn||0},re=function(){if(!te.length)return-1;var t=Math.min(te.length-1,Math.floor((ee()-$n)/50));return te[t].latency},ae=function(){$n=ee(),te.length=0,ne.clear()},oe=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Fn=performance.interactionCount:t.interactionId&&(Kn=Math.min(Kn,t.interactionId),Qn=Math.max(Qn,t.interactionId),Fn=Qn?(Qn-Kn)/7+1:0)}(t);var n=te[te.length-1],e=ne.get(t.interactionId);if(e||te.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};ne.set(r.id,r),te.push(r)}te.sort((function(t,n){return n.latency-t.latency})),te.length>10&&te.splice(10).forEach((function(t){return ne.delete(t.id)}))}}},ie=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function ue(){ue.dn=26;try{Gn&&Gn.disconnect(),Gn=new PerformanceObserver(Sn(ce));for(var t=0,n=ie;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&A(9,0),Gn.observe({type:e,buffered:!0}))}}catch(t){}}function ce(t){ce.dn=27,function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Jn(r);break;case"resource":var a=r.name;Ut(4,le(a)),a!==o.upload&&a!==o.fallback||P(28,r.duration);break;case"longtask":C(7);break;case"first-input":n&&P(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(oe(r),Ut(37,re().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&A(9,1e3*r.value);break;case"largest-contentful-paint":n&&P(8,r.startTime)}}}(t.getEntries())}var se=null;function le(t){return se||(se=document.createElement("a")),se.href=t,se.host}var de=Object.freeze({__proto__:null,start:function t(){t.dn=25,Zn(),function(){navigator&&"connection"in navigator&&Ut(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?In(window,"load",q.bind(this,ue,0)):ue())}()},stop:function(){Gn&&Gn.disconnect(),Gn=null,ae(),se=null,Zn()}}),pe=[S,S,S,de];function fe(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Xn&&"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||Xn)return!1;for(var n in t)n in o&&(o[n]=t[n])}(t),Ln(),ct(),pe.forEach((function(t){return Sn(t.start)()})),null===t&&ye())}function he(){Bn()&&(pe.slice().reverse().forEach((function(t){return Sn(t.stop)()})),st(),Vn(),void 0!==ge&&(ge[me]=function(){(ge[me].q=ge[me].q||[]).push(arguments),"start"===arguments[0]&&ge[me].q.unshift(ge[me].q.pop())&&ye()}))}var ve=Object.freeze({__proto__:null,consent:$t,consentv2:tn,event:T,hashText:b,identify:F,metadata:Kt,pause:function(){Bn()&&(T("clarity","pause"),null===Nn&&(Nn=new Promise((function(t){Dn=t}))))},resume:function(){Bn()&&(Rn(),T("clarity","resume"))},set:G,signal:function(t){ot=t},start:fe,stop:he,upgrade:B,version:s}),ge=window,me="clarity";function ye(){if(void 0!==ge){if(ge[me]&&ge[me].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=ge[me]&&ge[me].q||[];for(ge[me]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ve[t].apply(ve,n)},ge[me].v=s;t.length>0;)ge[me].apply(ge,t.shift())}}ye()}();
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return Ht},get start(){return Rt},get stop(){return Ut},get track(){return jt}}),n=Object.freeze({__proto__:null,get check(){return Zt},get compute(){return Gt},get data(){return Ct},get start(){return Wt},get stop(){return Ft},get trigger(){return Jt}}),e=Object.freeze({__proto__:null,get compute(){return rn},get data(){return Kt},get log(){return en},get reset(){return an},get start(){return tn},get stop(){return nn},get updates(){return Qt}}),r=Object.freeze({__proto__:null,get callback(){return kn},get callbacks(){return un},get clear(){return wn},get consent(){return gn},get consentv2(){return mn},get data(){return on},get electron(){return cn},get id(){return vn},get metadata(){return hn},get save(){return Sn},get shortid(){return In},get start(){return pn},get stop(){return fn}}),a=Object.freeze({__proto__:null,get data(){return Cn},get envelope(){return Pn},get start(){return zn},get stop(){return An}}),o={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};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=0;function c(){return performance.now()+performance.timeOrigin}function s(t){void 0===t&&(t=null);var n=0===u?c():u,e=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(e+r-n),0)}var l="0.8.21";var d=/\S/gi,p=255,f=!0,h=null,v=null,g=null;function m(t,n,e,r,a){if(void 0===r&&(r=!1),t){if("input"==n&&("checkbox"===a||"radio"===a))return t;switch(e){case 0:return t;case 1:switch(n){case"*T":case"value":case"placeholder":case"click":return function(t){var n=-1,e=0,r=!1,a=!1,o=!1,i=null;_();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(n+1,o?u:u+1);s=f&&null!==g?s.match(g)?s:k(s,"▪","▫"):w(s),i.splice(n+1-e,s.length,s),e+=s.length-1}o&&(r=!1,a=!1,n=u)}}return i?i.join(""):t}(t);case"input":case"change":return S(t)}return t;case 2:case 3:switch(n){case"*T":case"data-":return r?b(t):w(t);case"src":case"srcset":case"title":case"alt":return 3===e?"src"===n&&(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return S(t);case"placeholder":return w(t)}break;case 4:switch(n){case"*T":case"data-":return r?b(t):w(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(n){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 y(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var a=o.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),u=i[0],c=i[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,p)),r}function b(t){var n=t.trim();if(n.length>0){var e=n[0],r=t.indexOf(e),a=t.substr(0,r),o=t.substr(r+n.length);return"".concat(a).concat(n.length.toString(36)).concat(o)}return t}function w(t){return t.replace(d,"•")}function k(t,n,e){return _(),t?t.replace(v,n).replace(h,e):t}function S(t){for(var n=5*(Math.floor(t.length/5)+1),e="",r=0;r<n;r++)e+=r>0&&r%5==0?" ":"•";return e}function _(){if(f&&null===h)try{h=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),g=new RegExp("\\p{Sc}","gu")}catch(t){f=!1}}var E=[],I=null;function T(){}var O=[];function M(){}function x(){}function N(){}var j=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:I,hashText:M,keys:O,log:T,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:N,trigger:x}),C=null,z=!0;function A(){P(2)}function P(t){en(36,t.toString())}var q=null;function D(t,n){ie()&&t&&"string"==typeof t&&t.length<255&&(q=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},Yt(24))}var R,H=null,U=null;function L(t){t in H||(H[t]=0),t in U||(U[t]=0),H[t]++,U[t]++}function X(t,n){null!==n&&(t in H||(H[t]=0),t in U||(U[t]=0),H[t]+=n,U[t]+=n)}function V(t,n){null!==n&&!1===isNaN(n)&&(t in H||(H[t]=0),(n>H[t]||0===H[t])&&(U[t]=n,H[t]=n))}function B(t,n,e){return window.setTimeout(Rn(t),n,e)}function Y(t){return window.clearTimeout(t)}var W=0,Z=0,J=null;function G(){J&&Y(J),J=B(F,Z),W=s()}function F(){var t=s();R={gap:t-W},Yt(25),R.gap<3e5?J=B(F,Z):re&&(D("clarity","suspend"),Ne(),["mousemove","touchstart"].forEach((function(t){return Un(document,t,ue)})),["resize","scroll","pageshow"].forEach((function(t){return Un(window,t,ue)})))}var K=Object.freeze({__proto__:null,get data(){return R},reset:G,start:function(){Z=6e4,W=0},stop:function(){Y(J),W=0,Z=0}}),Q=null;function $(t){ie()&&o.lean&&(o.lean=!1,Q={key:t},kn(),Sn(),o.upgrade&&o.upgrade(t),Yt(3),o.lite)}var tt=Object.freeze({__proto__:null,get data(){return Q},start:function(){!o.lean&&o.upgrade&&o.upgrade("Config"),Q=null},stop:function(){Q=null},upgrade:$});function nt(t,n,e,r){return new(e||(e=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 n;t.done?a(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,u)}c((r=r.apply(t,n||[])).next())}))}function et(t,n){var e,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(e)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(e=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=n.call(t,i)}catch(t){u=[6,t],r=0}finally{e=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var rt=null;function at(t,n){it(t,"string"==typeof n?[n]:n)}function ot(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),nt(this,void 0,void 0,(function(){var a,o;return et(this,(function(i){switch(i.label){case 0:return o={},[4,st(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,"*","*")),it("userId",[(a=o).userId]),it("userHint",[a.userHint]),it("userType",[lt(t)]),n&&(it("sessionId",[n]),a.sessionId=n),e&&(it("pageId",[e]),a.pageId=e),[2,a]}var u}))}))}function it(t,n){if(ie()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in rt?rt[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);rt[t]=e}}function ut(){Yt(34)}function ct(){rt={}}function st(t){return nt(this,void 0,void 0,(function(){var n;return et(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function lt(t){return t&&t.indexOf("@")>0?"email":"string"}var dt="CompressionStream"in window;function pt(t){return nt(this,void 0,void 0,(function(){var n,e;return et(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),dt?(n=new ReadableStream({start:function(n){return nt(this,void 0,void 0,(function(){return et(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,ft(n)]):[3,2];case 1:return[2,new(e.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 nt(this,void 0,void 0,(function(){var n,e,r,a,o;return et(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,e]:(e.push.apply(e,a),[3,1]);case 3:return[2,e]}}))}))}var ht=null;function vt(t){try{if(!ht)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){ht(t)}))}catch(t){}}var gt=[j,e,Object.freeze({__proto__:null,compute:ut,get data(){return rt},identify:ot,reset:ct,set:at,start:function(){ct()},stop:function(){ct()}}),n,j,r,a,t,K,tt,j];function mt(){H={},U={},L(5),gt.forEach((function(t){return Rn(t.start)()}))}function yt(){gt.slice().reverse().forEach((function(t){return Rn(t.stop)()})),H={},U={}}function bt(){ut(),rn(),Yt(0),Gt(),z&&(Yt(47),z=!1)}function wt(t,n,e){return"".concat(t,"=").concat(m(n,0===t.indexOf("data-")?"data-":t,e))}var kt=[],St=1,_t=null;function Et(){kt=[],function(t){var n=[t];for(;n.length>0;){for(var e=null,r=null,a=null,o=n.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)n.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",e={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=_t.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;e=It(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}Tt(o,u,{tag:r,attributes:e,value:a})}}(document),function(t){nt(this,void 0,void 0,(function(){var n,e,r,a,o,i,u,c,l,d,p,f,h;return et(this,(function(v){switch(n=s(),e=[n,t],t){case 8:r=I,e.push(r.width),e.push(r.height),r.width,r.height,Ht(e);break;case 43:if((a=kt).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,l=u.data,d=0,p=["tag","attributes","value"];d<p.length;d++)if(l[f=p[d]])switch(f){case"tag":e.push(u.id),u.parent&&e.push(u.parent),u.previous&&e.push(u.previous),e.push(l[f]);break;case"attributes":for(h in l[f])void 0!==l[f][h]&&e.push(wt(h,l[f][h],c));break;case"value":e.push(m(l[f],l.tag,c))}Ht(function(t){for(var n=[],e={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=e[i]||-1;u>=0?a?a.push(u):(a=[u],n.push(a),r++):(a=null,n.push(i),e[i]=r++)}else a=null,n.push(t[o]),r++;return n}(e),!0)}}return[2]}))}))}(43)}function It(t){var n={},e=t.attributes;if(e&&e.length>0)for(var r=0;r<e.length;r++)n[e[r].name]=e[r].value;return n}function Tt(t,n,e){if(t&&e&&e.tag){var r=function(t){return null===t?null:_t.has(t)?_t.get(t):(_t.set(t,St),St++)}(t),a=n?_t.get(n):null,o=t.previousSibling?_t.get(t.previousSibling):null;kt.push({id:r,parent:a,previous:o,children:[],data:e,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Ot,Mt,xt,Nt,jt,Ct,zt=0,At=0,Pt=null,qt=0,Dt=!1;function Rt(){Nt=!0,zt=0,At=0,Dt=!1,qt=0,Ot=[],Mt=[],xt={},jt=null}function Ht(t,n){if(void 0===n&&(n=!0),Nt){var e=s(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(o.lean?!Dt&&At+a.length>10485760&&(Dt=!0):Dt=!1,r){case 5:if(Dt)break;zt+=a.length;case 37:case 6:case 43:case 45:case 46:if(Dt)break;At+=a.length,Ot.push(a);break;default:Mt.push(a)}L(25);var i=function(){var t=!1===o.lean&&zt>0?100:Cn.sequence*o.delay;return"string"==typeof o.upload?Math.max(Math.min(t,3e4),100):o.delay}();e-qt>2*i&&(Y(Pt),Pt=null),n&&null===Pt&&(25!==r&&G(),Pt=B(Lt,i),qt=e,Zt(At))}}function Ut(){Y(Pt),Lt(!0),zt=0,At=0,Dt=!1,qt=0,Ot=[],Mt=[],xt={},jt=null,Nt=!1}function Lt(t){return void 0===t&&(t=!1),nt(this,void 0,void 0,(function(){var n,e,r,a,i,u,c,s;return et(this,(function(l){switch(l.label){case 0:return Nt?(Pt=null,(n=!1===o.lean&&At>0&&(At<1048576||Cn.sequence>0))&&V(1,1),bt(),e=!0===t,Cn?(r=JSON.stringify(Pn(e)),a="[".concat(Mt.join(),"]"),i=n?"[".concat(Ot.join(),"]"):"",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:i}),e?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,pt(u)];case 2:s=l.sent(),l.label=3;case 3:return X(2,(c=s)?c.length:u.length),Xt(u,c,Cn.sequence,e),Mt=[],n&&(Ot=[],At=0,zt=0,Dt=!1),[2]}}))}))}function Xt(t,n,e,r){var a;if(void 0===r&&(r=!1),"string"==typeof o.upload){var i=o.upload,u=!1;if(r&&"sendBeacon"in navigator)try{(u=navigator.sendBeacon.bind(navigator)(i,t))?Bt(e):Dn(new Error("".concat("BeaconError",": ").concat(t.length)))}catch(n){Dn(new Error("".concat("BeaconError",": ").concat(null===(a=null==n?void 0:n.message)||void 0===a?void 0:a.substring(0,50)," : ").concat(t.length)))}if(!1===u){e in xt?xt[e].attempts++:xt[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",i,!0),c.timeout=15e3,c.ontimeout=function(){Dn(new Error("".concat("Timeout"," : ").concat(i)))},null!==e&&(c.onreadystatechange=function(){Rn(Vt)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(o.upload){(0,o.upload)(t),Bt(e)}}function Vt(t,n){var e=xt[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Jt(6):(0===t.status&&(o.upload=o.fallback?o.fallback:o.upload),jt={sequence:n,attempts:e.attempts,status:t.status},Yt(2),Xt(e.data,null,n)):(jt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&Yt(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var a=r[e],i=a&&a.length>0?a.split(/ (.*)/):[""];switch(i[0]){case"END":Jt(6);break;case"UPGRADE":$("Auto");break;case"ACTION":o.action&&i.length>1&&o.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&vt(i[1]);break;case"SNAPSHOT":o.lean=!1,Et()}}}(t.responseText),0===t.status&&(Xt(e.data,null,n,!0),Jt(3)),t.status>=200&&t.status<=208&&Bt(n),delete xt[n]))}function Bt(t){1===t&&(Sn(),kn())}function Yt(t){var n=[s(),t];switch(t){case 4:var e=E;e&&e.data&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),n.push(e.data.pointerTime),n.push(e.data.moveX),n.push(e.data.moveY),n.push(e.data.moveTime),n.push(e.data.downX),n.push(e.data.downY),n.push(e.data.downTime),n.push(e.data.upX),n.push(e.data.upY),n.push(e.data.upTime),n.push(e.data.pointerPrevX),n.push(e.data.pointerPrevY),n.push(e.data.pointerPrevTime),Ht(n,!1));break;case 25:n.push(R.gap),Ht(n);break;case 35:n.push(Ct.check),Ht(n,!1);break;case 3:n.push(Q.key),Ht(n);break;case 2:n.push(jt.sequence),n.push(jt.attempts),n.push(jt.status),Ht(n,!1);break;case 24:q.key&&n.push(q.key),n.push(q.value),Ht(n);break;case 34:var r=Object.keys(rt);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];n.push(i),n.push(rt[i])}ct(),Ht(n,!1)}break;case 0:var u=Object.keys(U);if(u.length>0){for(var c=0,l=u;c<l.length;c++){var d=l[c],p=parseInt(d,10);n.push(p),n.push(Math.round(U[d]))}U={},Ht(n,!1)}break;case 1:var f=Object.keys(Qt);if(f.length>0){for(var h=0,v=f;h<v.length;h++){var g=v[h];p=parseInt(g,10);n.push(p),n.push(Qt[g])}an(),Ht(n,!1)}break;case 36:var m=Object.keys(I);if(m.length>0){for(var y=0,b=m;y<b.length;y++){var w=b[y];p=parseInt(w,10);n.push(p),n.push([].concat.apply([],I[w]))}Ht(n,!1)}break;case 40:O.forEach((function(t){n.push(t);var e=[];for(var r in I[t]){var a=parseInt(r,10);e.push(a),e.push(I[t][r])}n.push(e)})),Ht(n,!1);break;case 47:n.push(C.source),n.push(C.ad_Storage),n.push(C.analytics_Storage),Ht(n,!1)}}function Wt(){Ct={check:0}}function Zt(t){if(0===Ct.check){var n=Ct.check;n=Cn.sequence>=128?1:n,n=Cn.pageNum>=128?7:n,n=s()>72e5?2:n,(n=t>10485760?2:n)!==Ct.check&&Jt(n)}}function Jt(t){Ct.check=t,5!==t&&(wn(),Ne())}function Gt(){0!==Ct.check&&Yt(35)}function Ft(){Ct=null}var Kt=null,Qt=null,$t=!1;function tn(){Kt={},Qt={},$t=!1}function nn(){Kt={},Qt={},$t=!1}function en(t,n){if(n&&(n="".concat(n),t in Kt||(Kt[t]=[]),Kt[t].indexOf(n)<0)){if(Kt[t].length>128)return void($t||($t=!0,Jt(5)));Kt[t].push(n),t in Qt||(Qt[t]=[]),Qt[t].push(n)}}function rn(){Yt(1)}function an(){Qt={},$t=!1}var on=null,un=[],cn=0,sn=null,ln=null,dn={ad_Storage:"denied",analytics_Storage:"denied"};function pn(){var t,n,e;sn=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(e="undefined"!=typeof Intl&&(null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone))&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";cn=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:In(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=Mn("_clsk",!o.includeSubdomains);if(n){var e=n.includes("^")?n.split("^"):n.split("|");e.length>=5&&t.ts-Tn(e[1])<18e5&&(t.session=e[0],t.count=Tn(e[2])+1,t.upgrade=Tn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),l=On(),d=o.projectId||function(t,n){void 0===n&&(n=null);for(var e,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 e=Math.abs(r+11579*a),(n?e%Math.pow(2,n):e).toString(36)}(location.host);on={projectId:d,userId:l.id,sessionId:s.session,pageNum:s.count},o.lean=o.track&&null!==s.upgrade?0===s.upgrade:o.lean,o.upload=o.track&&"string"==typeof o.upload&&s.upload&&s.upload.length>"https://".length?s.upload:o.upload,en(0,r),en(3,c),en(1,y(location.href,!!cn)),en(2,document.referrer),en(15,function(){var t=In();if(o.track&&_n(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),en(16,document.documentElement.lang),en(17,document.dir),en(26,"".concat(window.devicePixelRatio)),en(28,l.dob.toString()),en(29,l.version.toString()),en(33,u),en(34,a),en(35,i),V(0,s.ts),V(1,0),V(35,cn);var p,f=null===window||void 0===window?void 0:window.Zone;f&&"__symbol__"in f&&V(39,1),navigator&&(en(9,navigator.language),V(33,navigator.hardwareConcurrency),V(32,navigator.maxTouchPoints),V(34,Math.round(navigator.deviceMemory)),(p=navigator.userAgentData)&&p.getHighEntropyValues?p.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;en(22,t.platform),en(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){en(24,t.name+"~"+t.version)})),en(25,t.model),V(27,t.mobile?1:0)})):en(22,navigator.platform)),screen&&(V(14,Math.round(screen.width)),V(15,Math.round(screen.height)),V(16,Math.round(screen.colorDepth)));for(var h=0,v=o.cookies;h<v.length;h++){var g=v[h],m=Mn(g);m&&at(g,m)}!function(t){P(t.analytics_Storage?1:0),C=t}(yn(ln={ad_Storage:o.track?"granted":"denied",analytics_Storage:o.track?"granted":"denied"},0)),En(l)}function fn(){sn=null,on=null,ln=null,un.forEach((function(t){t.called=!1}))}function hn(t,n,e,r){void 0===n&&(n=!0),void 0===e&&(e=!1),void 0===r&&(r=!1);var a=o.lean?0:1,i=!1;on&&(a||!1===n)&&(t(on,!o.lean,r?ln:void 0),i=!0),!e&&i||un.push({callback:t,wait:n,recall:e,called:i,consentInfo:r})}function vn(){return on?[on.userId,on.sessionId,on.pageNum].join("."):""}function gn(t){void 0===t&&(t=!0),t?(mn({ad_Storage:"granted",analytics_Storage:"granted"}),A()):mn()}function mn(t,n){void 0===t&&(t=dn),void 0===n&&(n=1),ln={ad_Storage:bn(t.ad_Storage),analytics_Storage:bn(t.analytics_Storage)},kn(!0);var e=yn(ln,n);if(!e.analytics_Storage)return o.track=!1,Nn("_clsk","",-Number.MAX_VALUE),Nn("_clck","",-Number.MAX_VALUE),Ne(),void window.setTimeout(xe,250);ie()&&(o.track=!0,En(On(),1),Sn(),function(t){C=t,Yt(47)}(e),A())}function yn(t,n){return{source:n,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function bn(t){return"string"==typeof t?t.toLowerCase():"denied"}function wn(){Nn("_clsk","",0)}function kn(t){void 0===t&&(t=!1),function(t,n){void 0===n&&(n=!1);if(un.length>0)for(var e=0;e<un.length;e++){var r=un[e];r.callback&&(!r.called&&!n||r.consentInfo&&n)&&(!r.wait||t)&&(r.callback(on,!o.lean,r.consentInfo?ln:void 0),r.called=!0,r.recall||(un.splice(e,1),e--))}}(o.lean?0:1,t)}function Sn(){if(on&&o.track){var t=Math.round(Date.now()),n=o.upload&&"string"==typeof o.upload?o.upload.replace("https://",""):"",e=o.lean?0:1;Nn("_clsk",[on.sessionId,t,on.pageNum,e,n].join("|"),1)}}function _n(t,n){try{return!!t[n]}catch(t){return!1}}function En(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===o.dob?0:o.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&Nn("_clck",[on.userId,2,e.toString(36),n,r].join("|"),365)}function In(){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 Tn(t,n){return void 0===n&&(n=10),parseInt(t,n)}function On(){var t={id:In(),version:0,expiry:null,consent:0,dob:0},n=Mn("_clck",!o.includeSubdomains);if(n&&n.length>0){var e=n.includes("^")?n.split("^"):n.split("|");e.length>1&&(t.version=Tn(e[1])),e.length>2&&(t.expiry=Tn(e[2],36)),e.length>3&&1===Tn(e[3])&&(t.consent=1),e.length>4&&Tn(e[1])>1&&(t.dob=Tn(e[4])),o.track=o.track||1===t.consent,t.id=o.track?e[0]:t.id}return t}function Mn(t,n){var e;if(void 0===n&&(n=!1),_n(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=xn(o[1]),u=i[0],c=i[1];u;)u=(e=xn(c))[0],c=e[1];return n?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function xn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function Nn(t,n,e){if((o.track||""==n)&&(navigator&&navigator.cookieEnabled||_n(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),a=new Date;a.setDate(a.getDate()+e);var i=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===sn){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(sn=".".concat(c[s]).concat(sn||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(sn),Mn(t)===n))return;sn=""}}catch(t){sn=""}document.cookie=sn?"".concat(u).concat(";").concat("domain=").concat(sn):u}}var jn,Cn=null;function zn(){var t=on;Cn={version:l,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 An(){Cn=null}function Pn(t){return Cn.start=Cn.start+Cn.duration,Cn.duration=s()-Cn.start,Cn.sequence++,Cn.upload=t&&"sendBeacon"in navigator?1:0,Cn.end=t?1:0,Cn.applicationPlatform=0,Cn.url=y(location.href,!1,!0),[Cn.version,Cn.sequence,Cn.start,Cn.duration,Cn.projectId,Cn.userId,Cn.sessionId,Cn.pageNum,Cn.upload,Cn.end,Cn.applicationPlatform,Cn.url]}function qn(){jn=[]}function Dn(t){if(jn&&-1===jn.indexOf(t.message)){var n=o.report;if(n&&n.length>0&&Cn){var e={v:Cn.version,p:Cn.projectId,u:Cn.userId,s:Cn.sessionId,n:Cn.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),jn.push(t.message)}}return t}function Rn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw Dn(t)}var e=performance.now()-n;X(4,e),e>30&&(L(7),V(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var Hn=new Map;function Un(t,n,e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),e=Rn(e);try{t[i("addEventListener")](n,e,{capture:r,passive:a}),function(t){return Hn.has(t)}(t)||Hn.set(t,[]),Hn.get(t).push({event:n,listener:e,options:{capture:r,passive:a}})}catch(t){}}function Ln(){Hn.forEach((function(t,n){!function(t,n){t.forEach((function(t){try{n[i("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),Hn.delete(n)}(t,n)})),Hn=new Map}var Xn=null,Vn=null,Bn=null,Yn=0;function Wn(){return!(Yn++>20)}function Zn(){Zn.dn=1,Yn=0,Bn!==Gn()&&(Ne(),window.setTimeout(Jn,250))}function Jn(){xe(),V(29,1)}function Gn(){return location.href?location.href.replace(location.hash,""):location.href}var Fn=[],Kn=null,Qn=null,$n=null;function te(){Qn&&($n(),Qn=null,null===Kn&&ee())}function ne(){Fn=[],Kn=null,Qn=null}function ee(){var t=Fn.shift();t&&(Kn=t,t.task().then((function(){t.id===vn()&&(t.resolve(),Kn=null,ee())})).catch((function(n){t.id===vn()&&(n&&(n.name,n.message,n.stack),Kn=null,ee())})))}var re=!1;function ae(){re=!0,u=c(),ne(),Ln(),qn(),Bn=Gn(),Yn=0,Un(window,"popstate",Zn),null===Xn&&(Xn=history.pushState,history.pushState=function(){Xn.apply(this,arguments),ie()&&Wn()&&Zn()}),null===Vn&&(Vn=history.replaceState,history.replaceState=function(){Vn.apply(this,arguments),ie()&&Wn()&&Zn()})}function oe(){Bn=null,Yn=0,qn(),Ln(),ne(),u=0,re=!1}function ie(){return re}function ue(){ue.dn=2,xe(),D("clarity","restart")}var ce=null;function se(){ce=null}function le(t){ce={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){nt(this,void 0,void 0,(function(){var n,e;return et(this,(function(r){return n=s(),e=[n,t],29===t&&(e.push(ce.fetchStart),e.push(ce.connectStart),e.push(ce.connectEnd),e.push(ce.requestStart),e.push(ce.responseStart),e.push(ce.responseEnd),e.push(ce.domInteractive),e.push(ce.domComplete),e.push(ce.loadEventStart),e.push(ce.loadEventEnd),e.push(ce.redirectCount),e.push(ce.size),e.push(ce.type),e.push(ce.protocol),e.push(ce.encodedSize),e.push(ce.decodedSize),se(),Ht(e)),[2]}))}))}(29)}var de,pe=0,fe=1/0,he=0,ve=0,ge=[],me=new Map,ye=function(){return pe||0},be=function(){if(!ge.length)return-1;var t=Math.min(ge.length-1,Math.floor((ye()-ve)/50));return ge[t].latency},we=function(){ve=ye(),ge.length=0,me.clear()},ke=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?pe=performance.interactionCount:t.interactionId&&(fe=Math.min(fe,t.interactionId),he=Math.max(he,t.interactionId),pe=he?(he-fe)/7+1:0)}(t);var n=ge[ge.length-1],e=me.get(t.interactionId);if(e||ge.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};me.set(r.id,r),ge.push(r)}ge.sort((function(t,n){return n.latency-t.latency})),ge.length>10&&ge.splice(10).forEach((function(t){return me.delete(t.id)}))}}},Se=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function _e(){_e.dn=26;try{de&&de.disconnect(),de=new PerformanceObserver(Rn(Ee));for(var t=0,n=Se;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&X(9,0),de.observe({type:e,buffered:!0}))}}catch(t){}}function Ee(t){Ee.dn=27,function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":le(r);break;case"resource":var a=r.name;en(4,Te(a)),a!==o.upload&&a!==o.fallback||V(28,r.duration);break;case"longtask":L(7);break;case"first-input":n&&V(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(ke(r),en(37,be().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&X(9,1e3*r.value);break;case"largest-contentful-paint":n&&V(8,r.startTime)}}}(t.getEntries())}var Ie=null;function Te(t){return Ie||(Ie=document.createElement("a")),Ie.href=t,Ie.host}var Oe=Object.freeze({__proto__:null,start:function t(){t.dn=25,se(),function(){navigator&&navigator.connection&&en(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?Un(window,"load",B.bind(this,_e,0)):_e())}()},stop:function(){de&&de.disconnect(),de=null,we(),Ie=null,se()}}),Me=[j,j,j,Oe];function xe(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===re&&"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||re)return!1;for(var n in t)n in o&&(o[n]=t[n])}(t),ae(),mt(),Me.forEach((function(t){return Rn(t.start)()})),null===t&&Ae())}function Ne(){ie()&&(Me.slice().reverse().forEach((function(t){return Rn(t.stop)()})),yt(),oe(),void 0!==Ce&&(Ce[ze]=function(){(Ce[ze].q=Ce[ze].q||[]).push(arguments),"start"===arguments[0]&&Ce[ze].q.unshift(Ce[ze].q.pop())&&Ae()}))}var je=Object.freeze({__proto__:null,consent:gn,consentv2:mn,event:D,hashText:M,identify:ot,metadata:hn,pause:function(){ie()&&(D("clarity","pause"),null===Qn&&(Qn=new Promise((function(t){$n=t}))))},resume:function(){ie()&&(te(),D("clarity","resume"))},set:at,signal:function(t){ht=t},start:xe,stop:Ne,upgrade:$,version:l}),Ce=window,ze="clarity";function Ae(){if(void 0!==Ce){if(Ce[ze]&&Ce[ze].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=Ce[ze]&&Ce[ze].q||[];for(Ce[ze]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return je[t].apply(je,n)},Ce[ze].v=l;t.length>0;)Ce[ze].apply(Ce,t.shift())}}Ae()}();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clarity-js",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.21",
|
|
4
4
|
"description": "An analytics library that uses web page interactions to generate aggregated insights",
|
|
5
5
|
"author": "Microsoft Corp.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
"@rollup/plugin-node-resolve": "^15.0.0",
|
|
35
35
|
"@rollup/plugin-terser": "^0.4.0",
|
|
36
36
|
"@rollup/plugin-typescript": "^11.0.0",
|
|
37
|
-
"@types/chai": "^4.
|
|
37
|
+
"@types/chai": "^4.3.0",
|
|
38
38
|
"@types/mocha": "^10.0.0",
|
|
39
39
|
"@types/resize-observer-browser": "^0.1.6",
|
|
40
|
-
"chai": "^4.
|
|
40
|
+
"chai": "^4.3.0",
|
|
41
41
|
"del-cli": "^5.0.0",
|
|
42
42
|
"husky": "^8.0.0",
|
|
43
43
|
"lint-staged": "^13.1.0",
|
package/src/core/throttle.ts
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
* every specified duration in milliseconds, ensuring the last event is not lost.
|
|
4
4
|
* @param func - The function to throttle.
|
|
5
5
|
* @param duration - The duration in milliseconds to wait before allowing the next execution.
|
|
6
|
-
* @returns A throttled version of the provided function.
|
|
6
|
+
* @returns A throttled version of the provided function with a cleanup method.
|
|
7
7
|
*/
|
|
8
|
-
export default function throttle<T extends (...args: any[]) => void>(func: T, duration: number): T {
|
|
8
|
+
export default function throttle<T extends (...args: any[]) => void>(func: T, duration: number): T & { cleanup: () => void } {
|
|
9
9
|
let lastExecutionTime = 0;
|
|
10
10
|
let timeoutId: ReturnType<typeof setTimeout> | null = null;
|
|
11
11
|
let lastArgs: Parameters<T> | null = null;
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
function throttledFunction(...args: Parameters<T>) {
|
|
14
14
|
const now = performance.now();
|
|
15
15
|
const timeSinceLastExecution = now - lastExecutionTime;
|
|
16
16
|
|
|
@@ -31,5 +31,16 @@ export default function throttle<T extends (...args: any[]) => void>(func: T, du
|
|
|
31
31
|
lastExecutionTime = now;
|
|
32
32
|
func.apply(this, args);
|
|
33
33
|
}
|
|
34
|
-
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Add cleanup method to clear pending timeouts
|
|
37
|
+
throttledFunction.cleanup = function () {
|
|
38
|
+
if (timeoutId) {
|
|
39
|
+
clearTimeout(timeoutId);
|
|
40
|
+
timeoutId = null;
|
|
41
|
+
lastArgs = null;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return throttledFunction as T & { cleanup: () => void };
|
|
35
46
|
}
|
package/src/core/time.ts
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
let startTime = 0;
|
|
2
2
|
|
|
3
|
+
function computeStartTime(): number {
|
|
4
|
+
return performance.now() + performance.timeOrigin;
|
|
5
|
+
}
|
|
6
|
+
|
|
3
7
|
export function start(): void {
|
|
4
|
-
startTime =
|
|
8
|
+
startTime = computeStartTime();
|
|
5
9
|
}
|
|
6
10
|
|
|
7
|
-
// event.timestamp is number of milliseconds elapsed since the document was loaded
|
|
11
|
+
// event.timestamp is number of milliseconds elapsed since the document was loaded
|
|
8
12
|
// since iframes can be loaded later the event timestamp is not the same as performance.now()
|
|
9
13
|
// converting everything to absolute time by adding timeorigin of the event view
|
|
10
14
|
// to synchronize times before calculating the difference with start time
|
|
11
15
|
export function time(event: UIEvent | PageTransitionEvent = null): number {
|
|
16
|
+
// If startTime is 0, Clarity hasn't been started or has been stopped
|
|
17
|
+
// Use a local baseline to maintain relative timing semantics without affecting global state
|
|
18
|
+
let baseline = startTime === 0 ? computeStartTime() : startTime;
|
|
12
19
|
let ts = event && event.timeStamp > 0 ? event.timeStamp : performance.now();
|
|
13
20
|
let origin = event && (event as UIEvent).view ? (event as UIEvent).view.performance.timeOrigin : performance.timeOrigin;
|
|
14
|
-
return Math.max(Math.round(ts + origin -
|
|
21
|
+
return Math.max(Math.round(ts + origin - baseline), 0);
|
|
15
22
|
}
|
|
16
23
|
|
|
17
24
|
export function stop(): void {
|
package/src/core/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let version = "0.8.
|
|
1
|
+
let version = "0.8.21";
|
|
2
2
|
export default version;
|
package/src/data/encode.ts
CHANGED
|
@@ -19,7 +19,7 @@ export default function(event: Event): void {
|
|
|
19
19
|
switch (event) {
|
|
20
20
|
case Event.Baseline: {
|
|
21
21
|
const b = baseline.state;
|
|
22
|
-
if (b) {
|
|
22
|
+
if (b && b.data) {
|
|
23
23
|
tokens = [b.time, b.event];
|
|
24
24
|
tokens.push(b.data.visible);
|
|
25
25
|
tokens.push(b.data.docWidth);
|
|
@@ -129,7 +129,7 @@ export default function(event: Event): void {
|
|
|
129
129
|
}
|
|
130
130
|
case Event.Extract: {
|
|
131
131
|
const extractKeys = extract.keys;
|
|
132
|
-
extractKeys.forEach(
|
|
132
|
+
extractKeys.forEach(e => {
|
|
133
133
|
tokens.push(e);
|
|
134
134
|
const token = []
|
|
135
135
|
for (const d in extract.data[e]) {
|
|
@@ -138,7 +138,7 @@ export default function(event: Event): void {
|
|
|
138
138
|
token.push(extract.data[e][d]);
|
|
139
139
|
}
|
|
140
140
|
tokens.push(token);
|
|
141
|
-
})
|
|
141
|
+
});
|
|
142
142
|
|
|
143
143
|
extract.reset();
|
|
144
144
|
queue(tokens, false);
|
package/src/data/metadata.ts
CHANGED
|
@@ -21,7 +21,7 @@ let defaultStatus: ConsentState = {ad_Storage: Constant.Denied, analytics_Storag
|
|
|
21
21
|
export function start(): void {
|
|
22
22
|
rootDomain = null;
|
|
23
23
|
const ua = navigator && "userAgent" in navigator ? navigator.userAgent : Constant.Empty;
|
|
24
|
-
const timezone = Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone ?? '';
|
|
24
|
+
const timezone = (typeof Intl !== 'undefined' && Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone) ?? '';
|
|
25
25
|
const timezoneOffset = new Date().getTimezoneOffset().toString();
|
|
26
26
|
const ancestorOrigins = window.location.ancestorOrigins ? Array.from(window.location.ancestorOrigins).toString() : '';
|
|
27
27
|
const title = document && document.title ? document.title : Constant.Empty;
|
package/src/data/upload.ts
CHANGED
|
@@ -20,6 +20,7 @@ import * as extract from "@src/data/extract";
|
|
|
20
20
|
import * as style from "@src/layout/style";
|
|
21
21
|
import { report } from "@src/core/report";
|
|
22
22
|
import { signalsEvent } from "@src/data/signal";
|
|
23
|
+
import { snapshot } from "@src/insight/snapshot";
|
|
23
24
|
|
|
24
25
|
let discoverBytes: number = 0;
|
|
25
26
|
let playbackBytes: number = 0;
|
|
@@ -186,8 +187,16 @@ function send(payload: string, zipped: Uint8Array, sequence: number, beacon: boo
|
|
|
186
187
|
try {
|
|
187
188
|
// Navigator needs to be bound to sendBeacon before it is used to avoid errors in some browsers
|
|
188
189
|
dispatched = navigator.sendBeacon.bind(navigator)(url, payload);
|
|
189
|
-
if (dispatched) {
|
|
190
|
-
|
|
190
|
+
if (dispatched) {
|
|
191
|
+
done(sequence);
|
|
192
|
+
} else {
|
|
193
|
+
// If sendBeacon fails, we report the error and continue with XHR upload
|
|
194
|
+
report(new Error(`${Constant.BeaconError}: ${payload.length}`));
|
|
195
|
+
}
|
|
196
|
+
} catch(error) {
|
|
197
|
+
// If sendBeacon fails, we report the error and continue with XHR upload
|
|
198
|
+
report(new Error(`${Constant.BeaconError}: ${error?.message?.substring(0, 50)} : ${payload.length}`));
|
|
199
|
+
}
|
|
191
200
|
}
|
|
192
201
|
|
|
193
202
|
// Before initiating XHR upload, we check if the data has already been uploaded using sendBeacon
|
|
@@ -237,6 +246,9 @@ function check(xhr: XMLHttpRequest, sequence: number): void {
|
|
|
237
246
|
// 2: Safari will terminate pending XHR requests with status code 0 if the user navigates away from the page
|
|
238
247
|
// In any case, we switch the upload URL to fallback configuration (if available) before re-trying one more time
|
|
239
248
|
if (xhr.status === 0) { config.upload = config.fallback ? config.fallback : config.upload; }
|
|
249
|
+
// Capture the status code and number of attempts so we can report it back to the server
|
|
250
|
+
track = { sequence, attempts: transitData.attempts, status: xhr.status };
|
|
251
|
+
encode(Event.Upload);
|
|
240
252
|
// In all other cases, re-attempt sending the same data
|
|
241
253
|
// For retry we always fallback to string payload, even though we may have attempted
|
|
242
254
|
// sending zipped payload earlier
|
|
@@ -302,6 +314,10 @@ function response(payload: string): void {
|
|
|
302
314
|
case Constant.Signal:
|
|
303
315
|
if (parts.length > 1) { signalsEvent(parts[1]); }
|
|
304
316
|
break;
|
|
317
|
+
case Constant.Snapshot:
|
|
318
|
+
config.lean = false; // Disable lean mode to ensure we can send playback information to server.
|
|
319
|
+
snapshot();
|
|
320
|
+
break;
|
|
305
321
|
}
|
|
306
322
|
}
|
|
307
323
|
}
|
package/src/interaction/click.ts
CHANGED
|
@@ -19,12 +19,13 @@ export function start(): void {
|
|
|
19
19
|
|
|
20
20
|
export function observe(root: Node): void {
|
|
21
21
|
bind(root, "click", handler.bind(this, Event.Click, root), true);
|
|
22
|
+
bind(root, "contextmenu", handler.bind(this, Event.ContextMenu, root), true);
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
function handler(event: Event, root: Node, evt: MouseEvent): void {
|
|
25
26
|
handler.dn = FunctionNames.ClickHandler;
|
|
26
27
|
let frame = iframe(root);
|
|
27
|
-
let d = frame ? frame.contentDocument.documentElement : document.documentElement;
|
|
28
|
+
let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
28
29
|
let x = "pageX" in evt ? Math.round(evt.pageX) : ("clientX" in evt ? Math.round(evt["clientX"] + d.scrollLeft) : null);
|
|
29
30
|
let y = "pageY" in evt ? Math.round(evt.pageY) : ("clientY" in evt ? Math.round(evt["clientY"] + d.scrollTop) : null);
|
|
30
31
|
// In case of iframe, we adjust (x,y) to be relative to top parent's origin
|
|
@@ -53,6 +53,7 @@ export default async function (type: Event, ts: number = null): Promise<void> {
|
|
|
53
53
|
pointer.reset();
|
|
54
54
|
break;
|
|
55
55
|
case Event.Click:
|
|
56
|
+
case Event.ContextMenu:
|
|
56
57
|
for (let entry of click.state) {
|
|
57
58
|
let cTarget = metadata(entry.data.target as Node, entry.event, entry.data.text);
|
|
58
59
|
tokens = [entry.time, entry.event];
|
|
@@ -35,7 +35,7 @@ export function observe(root: Node): void {
|
|
|
35
35
|
function mouse(event: Event, root: Node, evt: MouseEvent): void {
|
|
36
36
|
mouse.dn = FunctionNames.PointerMouse;
|
|
37
37
|
let frame = iframe(root);
|
|
38
|
-
let d = frame ? frame.contentDocument.documentElement : document.documentElement;
|
|
38
|
+
let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
39
39
|
let x = "pageX" in evt ? Math.round(evt.pageX) : ("clientX" in evt ? Math.round(evt["clientX"] + d.scrollLeft) : null);
|
|
40
40
|
let y = "pageY" in evt ? Math.round(evt.pageY) : ("clientY" in evt ? Math.round(evt["clientY"] + d.scrollTop) : null);
|
|
41
41
|
// In case of iframe, we adjust (x,y) to be relative to top parent's origin
|
|
@@ -52,7 +52,7 @@ function mouse(event: Event, root: Node, evt: MouseEvent): void {
|
|
|
52
52
|
function touch(event: Event, root: Node, evt: TouchEvent): void {
|
|
53
53
|
touch.dn = FunctionNames.PointerTouch;
|
|
54
54
|
let frame = iframe(root);
|
|
55
|
-
let d = frame ? frame.contentDocument.documentElement : document.documentElement;
|
|
55
|
+
let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
56
56
|
let touches = evt.changedTouches;
|
|
57
57
|
|
|
58
58
|
let t = time(evt);
|
package/src/performance/blank.ts
CHANGED
|
@@ -15,7 +15,7 @@ const types: string[] = [Constant.Navigation, Constant.Resource, Constant.LongTa
|
|
|
15
15
|
|
|
16
16
|
export function start(): void {
|
|
17
17
|
// Capture connection properties, if available
|
|
18
|
-
if (navigator && "connection"
|
|
18
|
+
if (navigator && navigator["connection"]) {
|
|
19
19
|
dimension.log(Dimension.ConnectionType, navigator["connection"]["effectiveType"]);
|
|
20
20
|
}
|
|
21
21
|
|
package/types/data.d.ts
CHANGED
|
@@ -73,6 +73,7 @@ export const enum Event {
|
|
|
73
73
|
StyleSheetAdoption = 45,
|
|
74
74
|
StyleSheetUpdate = 46,
|
|
75
75
|
Consent = 47,
|
|
76
|
+
ContextMenu = 48,
|
|
76
77
|
|
|
77
78
|
// Apps specific events
|
|
78
79
|
WebViewDiscover = 100,
|
|
@@ -318,6 +319,7 @@ export const enum Constant {
|
|
|
318
319
|
Action = "ACTION",
|
|
319
320
|
Signal = "SIGNAL",
|
|
320
321
|
Extract = "EXTRACT",
|
|
322
|
+
Snapshot = "SNAPSHOT",
|
|
321
323
|
UserHint = "userHint",
|
|
322
324
|
UserType = "userType",
|
|
323
325
|
UserId = "userId",
|
|
@@ -351,6 +353,7 @@ export const enum Constant {
|
|
|
351
353
|
Caret = "^",
|
|
352
354
|
Granted = "granted",
|
|
353
355
|
Denied = "denied",
|
|
356
|
+
BeaconError = "BeaconError",
|
|
354
357
|
}
|
|
355
358
|
|
|
356
359
|
export const enum XMLReadyState {
|