clarity-js 0.7.61 → 0.7.63

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,5 +1,3 @@
1
- import { WebApp } from '@clarity-types/data';
2
-
3
1
  var upload$1 = /*#__PURE__*/Object.freeze({
4
2
  __proto__: null,
5
3
  get queue () { return queue; },
@@ -139,6 +137,7 @@ var config$2 = {
139
137
  conversions: false,
140
138
  longTask: 30,
141
139
  includeSubdomains: true,
140
+ throttleMutations: false,
142
141
  };
143
142
 
144
143
  function api(method) {
@@ -166,7 +165,7 @@ function stop$F() {
166
165
  startTime = 0;
167
166
  }
168
167
 
169
- var version$1 = "0.7.58";
168
+ var version$1 = "0.7.63";
170
169
 
171
170
  // tslint:disable: no-bitwise
172
171
  function hash (input, precision) {
@@ -1136,8 +1135,12 @@ function getId(node, autogen) {
1136
1135
  return id ? id : null;
1137
1136
  }
1138
1137
  function add(node, parent, data, source) {
1139
- var id = getId(node, true);
1140
1138
  var parentId = parent ? getId(parent) : null;
1139
+ // Do not add detached nodes
1140
+ if ((!parent || !parentId) && node.host == null && node.nodeType !== Node.DOCUMENT_TYPE_NODE) {
1141
+ return;
1142
+ }
1143
+ var id = getId(node, true);
1141
1144
  var previousId = getPreviousId(node);
1142
1145
  var parentValue = null;
1143
1146
  var regionId = exists(node) ? id : null;
@@ -2440,12 +2443,14 @@ var timeout$1 = null;
2440
2443
  var throttleDelay = null;
2441
2444
  var activePeriod = null;
2442
2445
  var history$4 = {};
2446
+ var criticalPeriod = null;
2443
2447
  function start$k() {
2444
2448
  observers = [];
2445
2449
  queue$2 = [];
2446
2450
  timeout$1 = null;
2447
2451
  activePeriod = 0;
2448
2452
  history$4 = {};
2453
+ criticalPeriod = 0;
2449
2454
  // Some popular open source libraries, like styled-components, optimize performance
2450
2455
  // by injecting CSS using insertRule API vs. appending text node. A side effect of
2451
2456
  // using javascript API is that it doesn't trigger DOM mutation and therefore we
@@ -2546,9 +2551,11 @@ function stop$i() {
2546
2551
  queue$2 = [];
2547
2552
  activePeriod = 0;
2548
2553
  timeout$1 = null;
2554
+ criticalPeriod = 0;
2549
2555
  }
2550
2556
  function active$2() {
2551
2557
  activePeriod = time() + 3000 /* Setting.MutationActivePeriod */;
2558
+ criticalPeriod = time() + 200 /* Setting.INPCriticalPeriod */;
2552
2559
  }
2553
2560
  function handle$1(m) {
2554
2561
  // Queue up mutation records for asynchronous processing
@@ -2668,9 +2675,13 @@ function track$5(m, timer, instance, timestamp) {
2668
2675
  if (value && value.data.tag !== "HTML" /* Constant.HTML */) {
2669
2676
  // calculate inactive period based on the timestamp of the mutation not when the mutation is processed
2670
2677
  var inactive = timestamp > activePeriod;
2678
+ // Calculate critical period based on when mutation is processed
2679
+ var critical = instance < criticalPeriod;
2671
2680
  var target = get(m.target);
2672
2681
  var element = target && target.selector ? target.selector.join() : m.target.nodeName;
2673
2682
  var parent_1 = value.selector ? value.selector.join() : "" /* Constant.Empty */;
2683
+ // Check if its a low priority (e.g., ads related) element mutation happening during critical period
2684
+ var lowPriMutation = config$2.throttleMutations && critical && element.indexOf("adthrive-ad") !== -1;
2674
2685
  // We use selector, instead of id, to determine the key (signature for the mutation) because in some cases
2675
2686
  // repeated mutations can cause elements to be destroyed and then recreated as new DOM nodes
2676
2687
  // In those cases, IDs will change however the selector (which is relative to DOM xPath) remains the same
@@ -2682,11 +2693,13 @@ function track$5(m, timer, instance, timestamp) {
2682
2693
  if (inactive === false && h[0] >= 10 /* Setting.MutationSuspendThreshold */) {
2683
2694
  processNodeList(h[2], 2 /* Source.ChildListRemove */, timer, timestamp);
2684
2695
  }
2685
- // Update the counter
2686
- h[0] = inactive ? (h[1] === instance ? h[0] : h[0] + 1) : 1;
2696
+ // Update the counter, do not reset counter if its critical period
2697
+ h[0] = inactive || lowPriMutation ? (h[1] === instance ? h[0] : h[0] + 1) : 1;
2687
2698
  h[1] = instance;
2688
- // Return updated mutation type based on if we have already hit the threshold or not
2689
- if (h[0] >= 10 /* Setting.MutationSuspendThreshold */) {
2699
+ // Return updated mutation type based on,
2700
+ // 1. if we have already hit the threshold or not
2701
+ // 2. if its a low priority mutation happening during critical time period
2702
+ if (h[0] >= 10 /* Setting.MutationSuspendThreshold */ || lowPriMutation) {
2690
2703
  // Store a reference to removedNodes so we can process them later
2691
2704
  // when we resume mutations again on user interactions
2692
2705
  h[2] = m.removedNodes;
@@ -2709,7 +2722,7 @@ function names(nodes) {
2709
2722
  }
2710
2723
  function processNodeList(list, source, timer, timestamp) {
2711
2724
  return __awaiter(this, void 0, void 0, function () {
2712
- var length, i, state;
2725
+ var length, i, node, state;
2713
2726
  return __generator(this, function (_a) {
2714
2727
  switch (_a.label) {
2715
2728
  case 0:
@@ -2718,8 +2731,9 @@ function processNodeList(list, source, timer, timestamp) {
2718
2731
  _a.label = 1;
2719
2732
  case 1:
2720
2733
  if (!(i < length)) return [3 /*break*/, 6];
2734
+ node = list[i];
2721
2735
  if (!(source === 1 /* Source.ChildListAdd */)) return [3 /*break*/, 2];
2722
- traverse(list[i], timer, source, timestamp);
2736
+ traverse(node, timer, source, timestamp);
2723
2737
  return [3 /*break*/, 5];
2724
2738
  case 2:
2725
2739
  state = state$a(timer);
@@ -2732,7 +2746,7 @@ function processNodeList(list, source, timer, timestamp) {
2732
2746
  if (state === 2 /* Task.Stop */) {
2733
2747
  return [3 /*break*/, 6];
2734
2748
  }
2735
- processNode(list[i], source, timestamp);
2749
+ processNode(node, source, timestamp);
2736
2750
  _a.label = 5;
2737
2751
  case 5:
2738
2752
  i++;
@@ -5068,7 +5082,7 @@ function start$8() {
5068
5082
  pageNum: m.pageNum,
5069
5083
  upload: 0 /* Upload.Async */,
5070
5084
  end: 0 /* BooleanFlag.False */,
5071
- applicationPlatform: WebApp,
5085
+ applicationPlatform: 0 /* ApplicationPlatform.WebApp */,
5072
5086
  url: ''
5073
5087
  };
5074
5088
  }
@@ -5081,7 +5095,7 @@ function envelope(last) {
5081
5095
  data$1.sequence++;
5082
5096
  data$1.upload = last && "sendBeacon" in navigator ? 1 /* Upload.Beacon */ : 0 /* Upload.Async */;
5083
5097
  data$1.end = last ? 1 /* BooleanFlag.True */ : 0 /* BooleanFlag.False */;
5084
- data$1.applicationPlatform = WebApp;
5098
+ data$1.applicationPlatform = 0 /* ApplicationPlatform.WebApp */;
5085
5099
  data$1.url = url$1(location.href, false, true);
5086
5100
  return [
5087
5101
  data$1.version,
@@ -1 +1 @@
1
- !function(t){"use strict";var n=Object.freeze({__proto__:null,get queue(){return bt},get start(){return yt},get stop(){return wt},get track(){return ft}}),e=Object.freeze({__proto__:null,get check(){return Ot},get compute(){return xt},get data(){return pt},get start(){return Mt},get stop(){return jt},get trigger(){return Tt}}),r=Object.freeze({__proto__:null,get compute(){return Dt},get data(){return zt},get log(){return Pt},get reset(){return Rt},get start(){return qt},get stop(){return Nt},get updates(){return At}}),o=Object.freeze({__proto__:null,get callback(){return Yt},get callbacks(){return Lt},get clear(){return Ft},get consent(){return Gt},get data(){return Ht},get electron(){return Vt},get id(){return Zt},get metadata(){return Jt},get save(){return $t},get shortid(){return tn},get start(){return Wt},get stop(){return Xt}}),a=Object.freeze({__proto__:null,get data(){return un},get envelope(){return dn},get start(){return sn},get stop(){return ln}}),i={projectId:null,delay:1e3,lean:!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,longTask:30,includeSubdomains:!0};function c(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=0;function s(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 l="0.7.58";var d=255,f=!0,p=null,h=null;function v(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 o=i.drop;if(o&&o.length>0&&t&&t.indexOf("?")>0){var a=t.split("?"),c=a[0],u=a[1];r=c+"?"+u.split("&").map((function(t){return o.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,d)),r}function g(t,n,e){return function(){if(f&&null===p)try{p=new RegExp("\\p{N}","gu"),h=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){f=!1}}(),t?t.replace(h,n).replace(p,e):t}var m=[],y=null;function b(){}var w=[];function k(){}function S(){}var _=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:y,hashText:k,keys:w,log:b,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:m,stop:function(){},trigger:S}),E=null;function I(t,n){Pn()&&t&&"string"==typeof t&&t.length<255&&(E=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},It(24))}var M,O=null,T=null;function x(t){t in O||(O[t]=0),t in T||(T[t]=0),O[t]++,T[t]++}function j(t,n){null!==n&&(t in O||(O[t]=0),t in T||(T[t]=0),O[t]+=n,T[t]+=n)}function z(t,n){null!==n&&!1===isNaN(n)&&(t in O||(O[t]=0),(n>O[t]||0===O[t])&&(T[t]=n,O[t]=n))}function A(t,n,e){return window.setTimeout(hn(t),n,e)}function C(t){return window.clearTimeout(t)}var q=0,N=0,P=null;function D(){P&&C(P),P=A(R,N),q=s()}function R(){var t=s();M={gap:t-q},It(25),M.gap<3e5?P=A(R,N):Cn&&(I("clarity","suspend"),ae(),["mousemove","touchstart"].forEach((function(t){return gn(document,t,Dn)})),["resize","scroll","pageshow"].forEach((function(t){return gn(window,t,Dn)})))}var U=Object.freeze({__proto__:null,get data(){return M},reset:D,start:function(){N=6e4,q=0},stop:function(){C(P),q=0,N=0}}),H=null;function L(t){Pn()&&i.lean&&(i.lean=!1,H={key:t},Yt(),$t(),i.upgrade&&i.upgrade(t),It(3))}var V=Object.freeze({__proto__:null,get data(){return H},start:function(){!i.lean&&i.upgrade&&i.upgrade("Config"),H=null},stop:function(){H=null},upgrade:L});function B(t,n,e,r){return new(e||(e=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,c)}u((r=r.apply(t,n||[])).next())}))}function W(t,n){var e,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(t,i)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var X=null;function J(t,n){G(t,"string"==typeof n?[n]:n)}function Z(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),B(this,void 0,void 0,(function(){var o,a;return W(this,(function(i){switch(i.label){case 0:return a={},[4,$(t)];case 1:return a.userId=i.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(g(c.substring(2),"*","*")):g(c,"*","*")),G("userId",[(o=a).userId]),G("userHint",[o.userHint]),G("userType",[K(t)]),n&&(G("sessionId",[n]),o.sessionId=n),e&&(G("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function G(t,n){if(Pn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in X?X[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);X[t]=e}}function F(){It(34)}function Y(){X={}}function $(t){return B(this,void 0,void 0,(function(){var n;return W(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 K(t){return t&&t.indexOf("@")>0?"email":"string"}var Q="CompressionStream"in window;function tt(t){return B(this,void 0,void 0,(function(){var n,e;return W(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Q?(n=new ReadableStream({start:function(n){return B(this,void 0,void 0,(function(){return W(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,nt(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 nt(t){return B(this,void 0,void 0,(function(){var n,e,r,o,a;return W(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,o=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=i.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var et=null;function rt(t){try{if(!et)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){et(t)}))}catch(t){}}var ot=[_,r,Object.freeze({__proto__:null,compute:F,get data(){return X},identify:Z,reset:Y,set:J,start:function(){Y()},stop:function(){Y()}}),e,_,o,a,n,U,V,_];function at(){O={},T={},x(5),ot.forEach((function(t){return hn(t.start)()}))}function it(){ot.slice().reverse().forEach((function(t){return hn(t.stop)()})),O={},T={}}function ct(){F(),Dt(),It(0),xt()}var ut,st,lt,dt,ft,pt,ht=0,vt=0,gt=null,mt=0;function yt(){dt=!0,ht=0,vt=0,mt=0,ut=[],st=[],lt={},ft=null}function bt(t,n){if(void 0===n&&(n=!0),dt){var e=s(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:ht+=o.length;case 37:case 6:case 43:case 45:case 46:vt+=o.length,ut.push(o);break;default:st.push(o)}x(25);var a=function(){var t=!1===i.lean&&ht>0?100:un.sequence*i.delay;return"string"==typeof i.upload?Math.max(Math.min(t,3e4),100):i.delay}();e-mt>2*a&&(C(gt),gt=null),n&&null===gt&&(25!==r&&D(),gt=A(kt,a),mt=e,Ot(vt))}}function wt(){C(gt),kt(!0),ht=0,vt=0,mt=0,ut=[],st=[],lt={},ft=null,dt=!1}function kt(t){return void 0===t&&(t=!1),B(this,void 0,void 0,(function(){var n,e,r,o,a,c,u,s;return W(this,(function(l){switch(l.label){case 0:return gt=null,(n=!1===i.lean&&vt>0&&(vt<1048576||un.sequence>0))&&z(1,1),ct(),e=!0===t,r=JSON.stringify(dn(e)),o="[".concat(st.join(),"]"),a=n?"[".concat(ut.join(),"]"):"",c=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:o,p:a}),e?(s=null,[3,3]):[3,1];case 1:return[4,tt(c)];case 2:s=l.sent(),l.label=3;case 3:return j(2,(u=s)?u.length:c.length),St(c,u,un.sequence,e),st=[],n&&(ut=[],vt=0,ht=0),[2]}}))}))}function St(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof i.upload){var o=i.upload,a=!1;if(r&&"sendBeacon"in navigator)try{(a=navigator.sendBeacon.bind(navigator)(o,t))&&Et(e)}catch(t){}if(!1===a){e in lt?lt[e].attempts++:lt[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){pn(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){hn(_t)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(i.upload){(0,i.upload)(t),Et(e)}}function _t(t,n){var e=lt[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Tt(6):(0===t.status&&(i.upload=i.fallback?i.fallback:i.upload),St(e.data,null,n)):(ft={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&It(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 o=r[e],a=o&&o.length>0?o.split(/ (.*)/):[""];switch(a[0]){case"END":Tt(6);break;case"UPGRADE":L("Auto");break;case"ACTION":i.action&&a.length>1&&i.action(a[1]);break;case"EXTRACT":a.length>1&&a[1];break;case"SIGNAL":a.length>1&&rt(a[1])}}}(t.responseText),0===t.status&&(St(e.data,null,n,!0),Tt(3)),t.status>=200&&t.status<=208&&Et(n),delete lt[n]))}function Et(t){1===t&&($t(),Yt())}function It(t){var n=[s(),t];switch(t){case 4:var e=m;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),bt(n,!1));break;case 25:n.push(M.gap),bt(n);break;case 35:n.push(pt.check),bt(n,!1);break;case 3:n.push(H.key),bt(n);break;case 2:n.push(ft.sequence),n.push(ft.attempts),n.push(ft.status),bt(n,!1);break;case 24:E.key&&n.push(E.key),n.push(E.value),bt(n);break;case 34:var r=Object.keys(X);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var i=a[o];n.push(i),n.push(X[i])}Y(),bt(n,!1)}break;case 0:var c=Object.keys(T);if(c.length>0){for(var u=0,l=c;u<l.length;u++){var d=l[u],f=parseInt(d,10);n.push(f),n.push(Math.round(T[d]))}T={},bt(n,!1)}break;case 1:var p=Object.keys(At);if(p.length>0){for(var h=0,v=p;h<v.length;h++){var g=v[h];f=parseInt(g,10);n.push(f),n.push(At[g])}Rt(),bt(n,!1)}break;case 36:var b=Object.keys(y);if(b.length>0){for(var k=0,S=b;k<S.length;k++){var _=S[k];f=parseInt(_,10);n.push(f),n.push([].concat.apply([],y[_]))}bt(n,!1)}break;case 40:w.forEach((function(t){n.push(t);var e=[];for(var r in y[t]){var o=parseInt(r,10);e.push(o),e.push(y[t][r])}n.push(e)})),bt(n,!1)}}function Mt(){pt={check:0}}function Ot(t){if(0===pt.check){var n=pt.check;n=un.sequence>=128?1:n,n=un.pageNum>=128?7:n,n=s()>72e5?2:n,(n=t>10485760?2:n)!==pt.check&&Tt(n)}}function Tt(t){pt.check=t,5!==t&&(Ft(),ae())}function xt(){0!==pt.check&&It(35)}function jt(){pt=null}var zt=null,At=null,Ct=!1;function qt(){zt={},At={},Ct=!1}function Nt(){zt={},At={},Ct=!1}function Pt(t,n){if(n&&(n="".concat(n),t in zt||(zt[t]=[]),zt[t].indexOf(n)<0)){if(zt[t].length>128)return void(Ct||(Ct=!0,Tt(5)));zt[t].push(n),t in At||(At[t]=[]),At[t].push(n)}}function Dt(){It(1)}function Rt(){At={},Ct=!1}function Ut(t){Pt(36,t.toString())}var Ht=null,Lt=[],Vt=0,Bt=null;function Wt(){var t,n,e;Bt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",o=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:"",a=(new Date).getTimezoneOffset().toString(),c=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",u=document&&document.title?document.title:"";Vt=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:tn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=rn("_clsk",!i.includeSubdomains);if(n){var e=n.split("|");e.length>=5&&t.ts-nn(e[1])<18e5&&(t.session=e[0],t.count=nn(e[2])+1,t.upgrade=nn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),d=en(),f=i.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Ht={projectId:f,userId:d.id,sessionId:l.session,pageNum:l.count},i.lean=i.track&&null!==l.upgrade?0===l.upgrade:i.lean,i.upload=i.track&&"string"==typeof i.upload&&l.upload&&l.upload.length>"https://".length?l.upload:i.upload,Pt(0,r),Pt(3,u),Pt(1,v(location.href,!!Vt)),Pt(2,document.referrer),Pt(15,function(){var t=tn();if(i.track&&Kt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Pt(16,document.documentElement.lang),Pt(17,document.dir),Pt(26,"".concat(window.devicePixelRatio)),Pt(28,d.dob.toString()),Pt(29,d.version.toString()),Pt(33,c),Pt(34,o),Pt(35,a),z(0,l.ts),z(1,0),z(35,Vt),navigator&&(Pt(9,navigator.language),z(33,navigator.hardwareConcurrency),z(32,navigator.maxTouchPoints),z(34,Math.round(navigator.deviceMemory)),(s=navigator.userAgentData)&&s.getHighEntropyValues?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Pt(22,t.platform),Pt(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Pt(24,t.name+"~"+t.version)})),Pt(25,t.model),z(27,t.mobile?1:0)})):Pt(22,navigator.platform)),screen&&(z(14,Math.round(screen.width)),z(15,Math.round(screen.height)),z(16,Math.round(screen.colorDepth)));for(var p=0,h=i.cookies;p<h.length;p++){var g=h[p],m=rn(g);m&&J(g,m)}!function(t){Ut(t?1:0)}(i.track),Qt(d)}function Xt(){Bt=null,Ht=null,Lt.forEach((function(t){t.called=!1}))}function Jt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=i.lean?0:1,o=!1;Ht&&(r||!1===n)&&(t(Ht,!i.lean),o=!0),!e&&o||Lt.push({callback:t,wait:n,recall:e,called:o})}function Zt(){return Ht?[Ht.userId,Ht.sessionId,Ht.pageNum].join("."):""}function Gt(t){if(void 0===t&&(t=!0),!t)return i.track=!1,an("_clsk","",-Number.MAX_VALUE),an("_clck","",-Number.MAX_VALUE),ae(),void window.setTimeout(oe,250);Pn()&&(i.track=!0,Qt(en(),1),$t(),Ut(2))}function Ft(){an("_clsk","",0)}function Yt(){!function(t){if(Lt.length>0)for(var n=0;n<Lt.length;n++){var e=Lt[n];!e.callback||e.called||e.wait&&!t||(e.callback(Ht,!i.lean),e.called=!0,e.recall||(Lt.splice(n,1),n--))}}(i.lean?0:1)}function $t(){if(Ht){var t=Math.round(Date.now()),n=i.upload&&"string"==typeof i.upload?i.upload.replace("https://",""):"",e=i.lean?0:1;an("_clsk",[Ht.sessionId,t,Ht.pageNum,e,n].join("|"),1)}}function Kt(t,n){try{return!!t[n]}catch(t){return!1}}function Qt(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===i.dob?0:i.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&an("_clck",[Ht.userId,2,e.toString(36),n,r].join("|"),365)}function tn(){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 nn(t,n){return void 0===n&&(n=10),parseInt(t,n)}function en(){var t={id:tn(),version:0,expiry:null,consent:0,dob:0},n=rn("_clck",!i.includeSubdomains);if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,a=document.cookie.split(";");o<a.length;o++){r+="_clck"===a[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}e.length>1&&(t.version=nn(e[1])),e.length>2&&(t.expiry=nn(e[2],36)),e.length>3&&1===nn(e[3])&&(t.consent=1),e.length>4&&nn(e[1])>1&&(t.dob=nn(e[4])),i.track=i.track||1===t.consent,t.id=i.track?e[0]:t.id}return t}function rn(t,n){var e;if(void 0===n&&(n=!1),Kt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var o=0;o<r.length;o++){var a=r[o].split("=");if(a.length>1&&a[0]&&a[0].trim()===t){for(var i=on(a[1]),c=i[0],u=i[1];c;)c=(e=on(u))[0],u=e[1];return n?u.endsWith("".concat("~","1"))?u.substring(0,u.length-2):null:u}}}return null}function on(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function an(t,n,e){if((i.track||""==n)&&(navigator&&navigator.cookieEnabled||Kt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var a=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(a).concat(";path=/");try{if(null===Bt){for(var u=location.hostname?location.hostname.split("."):[],s=u.length-1;s>=0;s--)if(Bt=".".concat(u[s]).concat(Bt||""),s<u.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Bt),rn(t)===n))return;Bt=""}}catch(t){Bt=""}document.cookie=Bt?"".concat(c).concat(";").concat("domain=").concat(Bt):c}}var cn,un=null;function sn(){var n=Ht;un={version:l,sequence:0,start:0,duration:0,projectId:n.projectId,userId:n.userId,sessionId:n.sessionId,pageNum:n.pageNum,upload:0,end:0,applicationPlatform:t.WebApp,url:""}}function ln(){un=null}function dn(n){return un.start=un.start+un.duration,un.duration=s()-un.start,un.sequence++,un.upload=n&&"sendBeacon"in navigator?1:0,un.end=n?1:0,un.applicationPlatform=t.WebApp,un.url=v(location.href,!1,!0),[un.version,un.sequence,un.start,un.duration,un.projectId,un.userId,un.sessionId,un.pageNum,un.upload,un.end,un.applicationPlatform,un.url]}function fn(){cn=[]}function pn(t){if(cn&&-1===cn.indexOf(t.message)){var n=i.report;if(n&&n.length>0){var e={v:un.version,p:un.projectId,u:un.userId,s:un.sessionId,n:un.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)),cn.push(t.message)}}return t}function hn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw pn(t)}var e=performance.now()-n;j(4,e),e>i.longTask&&(x(7),z(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var vn=[];function gn(t,n,e,r){void 0===r&&(r=!1),e=hn(e);try{t[c("addEventListener")](n,e,r),vn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function mn(){for(var t=0,n=vn;t<n.length;t++){var e=n[t];try{e.target[c("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}vn=[]}var yn=null,bn=null,wn=null,kn=0;function Sn(){return!(kn++>20)}function _n(){kn=0,wn!==In()&&(ae(),window.setTimeout(En,250))}function En(){oe(),z(29,1)}function In(){return location.href?location.href.replace(location.hash,""):location.href}_n.dn=1;var Mn=[],On=null,Tn=null,xn=null;function jn(){Tn&&(xn(),Tn=null,null===On&&An())}function zn(){Mn=[],On=null,Tn=null}function An(){var t=Mn.shift();t&&(On=t,t.task().then((function(){t.id===Zt()&&(t.resolve(),On=null,An())})).catch((function(n){t.id===Zt()&&(n&&(n.name,n.message,n.stack),On=null,An())})))}var Cn=!1;function qn(){Cn=!0,u=performance.now()+performance.timeOrigin,zn(),mn(),fn(),wn=In(),kn=0,gn(window,"popstate",_n),null===yn&&(yn=history.pushState,history.pushState=function(){yn.apply(this,arguments),Pn()&&Sn()&&_n()}),null===bn&&(bn=history.replaceState,history.replaceState=function(){bn.apply(this,arguments),Pn()&&Sn()&&_n()})}function Nn(){wn=null,kn=0,fn(),mn(),zn(),u=0,Cn=!1}function Pn(){return Cn}function Dn(){oe(),I("clarity","restart")}Dn.dn=2;var Rn=null;function Un(){Rn=null}function Hn(t){Rn={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){B(this,void 0,void 0,(function(){var n,e;return W(this,(function(r){return n=s(),e=[n,t],29===t&&(e.push(Rn.fetchStart),e.push(Rn.connectStart),e.push(Rn.connectEnd),e.push(Rn.requestStart),e.push(Rn.responseStart),e.push(Rn.responseEnd),e.push(Rn.domInteractive),e.push(Rn.domComplete),e.push(Rn.loadEventStart),e.push(Rn.loadEventEnd),e.push(Rn.redirectCount),e.push(Rn.size),e.push(Rn.type),e.push(Rn.protocol),e.push(Rn.encodedSize),e.push(Rn.decodedSize),Un(),bt(e)),[2]}))}))}(29)}var Ln,Vn=0,Bn=1/0,Wn=0,Xn=0,Jn=[],Zn=new Map,Gn=function(){return Vn||0},Fn=function(){if(!Jn.length)return-1;var t=Math.min(Jn.length-1,Math.floor((Gn()-Xn)/50));return Jn[t].latency},Yn=function(){Xn=Gn(),Jn.length=0,Zn.clear()},$n=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Vn=performance.interactionCount:t.interactionId&&(Bn=Math.min(Bn,t.interactionId),Wn=Math.max(Wn,t.interactionId),Vn=Wn?(Wn-Bn)/7+1:0)}(t);var n=Jn[Jn.length-1],e=Zn.get(t.interactionId);if(e||Jn.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};Zn.set(r.id,r),Jn.push(r)}Jn.sort((function(t,n){return n.latency-t.latency})),Jn.length>10&&Jn.splice(10).forEach((function(t){return Zn.delete(t.id)}))}}},Kn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Qn(){try{Ln&&Ln.disconnect(),Ln=new PerformanceObserver(hn(te));for(var t=0,n=Kn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&j(9,0),Ln.observe({type:e,buffered:!0}))}}catch(t){}}function te(t){!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":Hn(r);break;case"resource":var o=r.name;Pt(4,ne(o)),o!==i.upload&&o!==i.fallback||z(28,r.duration);break;case"longtask":x(7);break;case"first-input":n&&z(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&($n(r),Pt(37,Fn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&j(9,1e3*r.value);break;case"largest-contentful-paint":n&&z(8,r.startTime)}}}(t.getEntries())}function ne(t){var n=document.createElement("a");return n.href=t,n.host}function ee(){Un(),function(){navigator&&"connection"in navigator&&Pt(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?gn(window,"load",A.bind(this,Qn,0)):Qn())}()}Qn.dn=26,te.dn=27,ee.dn=25;var re=[_,_,_,Object.freeze({__proto__:null,start:ee,stop:function(){Ln&&Ln.disconnect(),Ln=null,Yn(),Un()}})];function oe(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Cn&&"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||Cn)return!1;for(var n in t)n in i&&(i[n]=t[n])}(t),qn(),at(),re.forEach((function(t){return hn(t.start)()})),null===t&&se())}function ae(){Pn()&&(re.slice().reverse().forEach((function(t){return hn(t.stop)()})),it(),Nn(),void 0!==ce&&(ce[ue]=function(){(ce[ue].q=ce[ue].q||[]).push(arguments),"start"===arguments[0]&&ce[ue].q.unshift(ce[ue].q.pop())&&se()}))}var ie=Object.freeze({__proto__:null,consent:Gt,event:I,hashText:k,identify:Z,metadata:Jt,pause:function(){Pn()&&(I("clarity","pause"),null===Tn&&(Tn=new Promise((function(t){xn=t}))))},resume:function(){Pn()&&(jn(),I("clarity","resume"))},set:J,signal:function(t){et=t},start:oe,stop:ae,upgrade:L,version:l}),ce=window,ue="clarity";function se(){if(void 0!==ce){if(ce[ue]&&ce[ue].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=ce[ue]&&ce[ue].q||[];for(ce[ue]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ie[t].apply(ie,n)},ce[ue].v=l;t.length>0;)ce[ue].apply(ce,t.shift())}}se()}(data$b);
1
+ !function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return yt},get start(){return mt},get stop(){return bt},get track(){return dt}}),n=Object.freeze({__proto__:null,get check(){return Mt},get compute(){return Tt},get data(){return ft},get start(){return It},get stop(){return xt},get trigger(){return Ot}}),e=Object.freeze({__proto__:null,get compute(){return Pt},get data(){return jt},get log(){return Nt},get reset(){return Dt},get start(){return At},get stop(){return qt},get updates(){return zt}}),r=Object.freeze({__proto__:null,get callback(){return Ft},get callbacks(){return Ht},get clear(){return Gt},get consent(){return Zt},get data(){return Ut},get electron(){return Lt},get id(){return Jt},get metadata(){return Wt},get save(){return Yt},get shortid(){return $t},get start(){return Bt},get stop(){return Xt}}),o=Object.freeze({__proto__:null,get data(){return cn},get envelope(){return ln},get start(){return un},get stop(){return sn}}),a={projectId:null,delay:1e3,lean:!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,longTask:30,includeSubdomains:!0,throttleMutations:!1};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function u(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-c),0)}var s="0.7.63";var l=255,d=!0,f=null,p=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 o=a.drop;if(o&&o.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),c=i[0],u=i[1];r=c+"?"+u.split("&").map((function(t){return o.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===f)try{f=new RegExp("\\p{N}","gu"),p=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){d=!1}}(),t?t.replace(p,n).replace(f,e):t}var g=[],m=null;function y(){}var b=[];function w(){}function k(){}var S=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:m,hashText:w,keys:b,log:y,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:g,stop:function(){},trigger:k}),_=null;function E(t,n){Nn()&&t&&"string"==typeof t&&t.length<255&&(_=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},Et(24))}var I,M=null,O=null;function T(t){t in M||(M[t]=0),t in O||(O[t]=0),M[t]++,O[t]++}function x(t,n){null!==n&&(t in M||(M[t]=0),t in O||(O[t]=0),M[t]+=n,O[t]+=n)}function j(t,n){null!==n&&!1===isNaN(n)&&(t in M||(M[t]=0),(n>M[t]||0===M[t])&&(O[t]=n,M[t]=n))}function z(t,n,e){return window.setTimeout(pn(t),n,e)}function C(t){return window.clearTimeout(t)}var A=0,q=0,N=null;function P(){N&&C(N),N=z(D,q),A=u()}function D(){var t=u();I={gap:t-A},Et(25),I.gap<3e5?N=z(D,q):Cn&&(E("clarity","suspend"),oe(),["mousemove","touchstart"].forEach((function(t){return vn(document,t,Pn)})),["resize","scroll","pageshow"].forEach((function(t){return vn(window,t,Pn)})))}var R=Object.freeze({__proto__:null,get data(){return I},reset:P,start:function(){q=6e4,A=0},stop:function(){C(N),A=0,q=0}}),U=null;function H(t){Nn()&&a.lean&&(a.lean=!1,U={key:t},Ft(),Yt(),a.upgrade&&a.upgrade(t),Et(3))}var L=Object.freeze({__proto__:null,get data(){return U},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),U=null},stop:function(){U=null},upgrade:H});function V(t,n,e,r){return new(e||(e=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,c)}u((r=r.apply(t,n||[])).next())}))}function B(t,n){var e,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(t,i)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var X=null;function W(t,n){Z(t,"string"==typeof n?[n]:n)}function J(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),V(this,void 0,void 0,(function(){var o,a;return B(this,(function(i){switch(i.label){case 0:return a={},[4,Y(t)];case 1:return a.userId=i.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(v(c.substring(2),"*","*")):v(c,"*","*")),Z("userId",[(o=a).userId]),Z("userHint",[o.userHint]),Z("userType",[K(t)]),n&&(Z("sessionId",[n]),o.sessionId=n),e&&(Z("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function Z(t,n){if(Nn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in X?X[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);X[t]=e}}function G(){Et(34)}function F(){X={}}function Y(t){return V(this,void 0,void 0,(function(){var n;return B(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 K(t){return t&&t.indexOf("@")>0?"email":"string"}var Q="CompressionStream"in window;function $(t){return V(this,void 0,void 0,(function(){var n,e;return B(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Q?(n=new ReadableStream({start:function(n){return V(this,void 0,void 0,(function(){return B(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,tt(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 tt(t){return V(this,void 0,void 0,(function(){var n,e,r,o,a;return B(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,o=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=i.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var nt=null;function et(t){try{if(!nt)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){nt(t)}))}catch(t){}}var rt=[S,e,Object.freeze({__proto__:null,compute:G,get data(){return X},identify:J,reset:F,set:W,start:function(){F()},stop:function(){F()}}),n,S,r,o,t,R,L,S];function ot(){M={},O={},T(5),rt.forEach((function(t){return pn(t.start)()}))}function at(){rt.slice().reverse().forEach((function(t){return pn(t.stop)()})),M={},O={}}function it(){G(),Pt(),Et(0),Tt()}var ct,ut,st,lt,dt,ft,pt=0,ht=0,vt=null,gt=0;function mt(){lt=!0,pt=0,ht=0,gt=0,ct=[],ut=[],st={},dt=null}function yt(t,n){if(void 0===n&&(n=!0),lt){var e=u(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:pt+=o.length;case 37:case 6:case 43:case 45:case 46:ht+=o.length,ct.push(o);break;default:ut.push(o)}T(25);var i=function(){var t=!1===a.lean&&pt>0?100:cn.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();e-gt>2*i&&(C(vt),vt=null),n&&null===vt&&(25!==r&&P(),vt=z(wt,i),gt=e,Mt(ht))}}function bt(){C(vt),wt(!0),pt=0,ht=0,gt=0,ct=[],ut=[],st={},dt=null,lt=!1}function wt(t){return void 0===t&&(t=!1),V(this,void 0,void 0,(function(){var n,e,r,o,i,c,u,s;return B(this,(function(l){switch(l.label){case 0:return vt=null,(n=!1===a.lean&&ht>0&&(ht<1048576||cn.sequence>0))&&j(1,1),it(),e=!0===t,r=JSON.stringify(ln(e)),o="[".concat(ut.join(),"]"),i=n?"[".concat(ct.join(),"]"):"",c=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:o,p:i}),e?(s=null,[3,3]):[3,1];case 1:return[4,$(c)];case 2:s=l.sent(),l.label=3;case 3:return x(2,(u=s)?u.length:c.length),kt(c,u,cn.sequence,e),ut=[],n&&(ct=[],ht=0,pt=0),[2]}}))}))}function kt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof a.upload){var o=a.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(o,t))&&_t(e)}catch(t){}if(!1===i){e in st?st[e].attempts++:st[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){fn(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){pn(St)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(a.upload){(0,a.upload)(t),_t(e)}}function St(t,n){var e=st[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Ot(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),kt(e.data,null,n)):(dt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&Et(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 o=r[e],i=o&&o.length>0?o.split(/ (.*)/):[""];switch(i[0]){case"END":Ot(6);break;case"UPGRADE":H("Auto");break;case"ACTION":a.action&&i.length>1&&a.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&et(i[1])}}}(t.responseText),0===t.status&&(kt(e.data,null,n,!0),Ot(3)),t.status>=200&&t.status<=208&&_t(n),delete st[n]))}function _t(t){1===t&&(Yt(),Ft())}function Et(t){var n=[u(),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),yt(n,!1));break;case 25:n.push(I.gap),yt(n);break;case 35:n.push(ft.check),yt(n,!1);break;case 3:n.push(U.key),yt(n);break;case 2:n.push(dt.sequence),n.push(dt.attempts),n.push(dt.status),yt(n,!1);break;case 24:_.key&&n.push(_.key),n.push(_.value),yt(n);break;case 34:var r=Object.keys(X);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var i=a[o];n.push(i),n.push(X[i])}F(),yt(n,!1)}break;case 0:var c=Object.keys(O);if(c.length>0){for(var s=0,l=c;s<l.length;s++){var d=l[s],f=parseInt(d,10);n.push(f),n.push(Math.round(O[d]))}O={},yt(n,!1)}break;case 1:var p=Object.keys(zt);if(p.length>0){for(var h=0,v=p;h<v.length;h++){var y=v[h];f=parseInt(y,10);n.push(f),n.push(zt[y])}Dt(),yt(n,!1)}break;case 36:var w=Object.keys(m);if(w.length>0){for(var k=0,S=w;k<S.length;k++){var E=S[k];f=parseInt(E,10);n.push(f),n.push([].concat.apply([],m[E]))}yt(n,!1)}break;case 40:b.forEach((function(t){n.push(t);var e=[];for(var r in m[t]){var o=parseInt(r,10);e.push(o),e.push(m[t][r])}n.push(e)})),yt(n,!1)}}function It(){ft={check:0}}function Mt(t){if(0===ft.check){var n=ft.check;n=cn.sequence>=128?1:n,n=cn.pageNum>=128?7:n,n=u()>72e5?2:n,(n=t>10485760?2:n)!==ft.check&&Ot(n)}}function Ot(t){ft.check=t,5!==t&&(Gt(),oe())}function Tt(){0!==ft.check&&Et(35)}function xt(){ft=null}var jt=null,zt=null,Ct=!1;function At(){jt={},zt={},Ct=!1}function qt(){jt={},zt={},Ct=!1}function Nt(t,n){if(n&&(n="".concat(n),t in jt||(jt[t]=[]),jt[t].indexOf(n)<0)){if(jt[t].length>128)return void(Ct||(Ct=!0,Ot(5)));jt[t].push(n),t in zt||(zt[t]=[]),zt[t].push(n)}}function Pt(){Et(1)}function Dt(){zt={},Ct=!1}function Rt(t){Nt(36,t.toString())}var Ut=null,Ht=[],Lt=0,Vt=null;function Bt(){var t,n,e;Vt=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",o=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(),c=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",u=document&&document.title?document.title:"";Lt=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:$t(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=en("_clsk",!a.includeSubdomains);if(n){var e=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}(),d=nn(),f=a.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Ut={projectId:f,userId:d.id,sessionId:l.session,pageNum:l.count},a.lean=a.track&&null!==l.upgrade?0===l.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&l.upload&&l.upload.length>"https://".length?l.upload:a.upload,Nt(0,r),Nt(3,u),Nt(1,h(location.href,!!Lt)),Nt(2,document.referrer),Nt(15,function(){var t=$t();if(a.track&&Kt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Nt(16,document.documentElement.lang),Nt(17,document.dir),Nt(26,"".concat(window.devicePixelRatio)),Nt(28,d.dob.toString()),Nt(29,d.version.toString()),Nt(33,c),Nt(34,o),Nt(35,i),j(0,l.ts),j(1,0),j(35,Lt),navigator&&(Nt(9,navigator.language),j(33,navigator.hardwareConcurrency),j(32,navigator.maxTouchPoints),j(34,Math.round(navigator.deviceMemory)),(s=navigator.userAgentData)&&s.getHighEntropyValues?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Nt(22,t.platform),Nt(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Nt(24,t.name+"~"+t.version)})),Nt(25,t.model),j(27,t.mobile?1:0)})):Nt(22,navigator.platform)),screen&&(j(14,Math.round(screen.width)),j(15,Math.round(screen.height)),j(16,Math.round(screen.colorDepth)));for(var p=0,v=a.cookies;p<v.length;p++){var g=v[p],m=en(g);m&&W(g,m)}!function(t){Rt(t?1:0)}(a.track),Qt(d)}function Xt(){Vt=null,Ut=null,Ht.forEach((function(t){t.called=!1}))}function Wt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=a.lean?0:1,o=!1;Ut&&(r||!1===n)&&(t(Ut,!a.lean),o=!0),!e&&o||Ht.push({callback:t,wait:n,recall:e,called:o})}function Jt(){return Ut?[Ut.userId,Ut.sessionId,Ut.pageNum].join("."):""}function Zt(t){if(void 0===t&&(t=!0),!t)return a.track=!1,on("_clsk","",-Number.MAX_VALUE),on("_clck","",-Number.MAX_VALUE),oe(),void window.setTimeout(re,250);Nn()&&(a.track=!0,Qt(nn(),1),Yt(),Rt(2))}function Gt(){on("_clsk","",0)}function Ft(){!function(t){if(Ht.length>0)for(var n=0;n<Ht.length;n++){var e=Ht[n];!e.callback||e.called||e.wait&&!t||(e.callback(Ut,!a.lean),e.called=!0,e.recall||(Ht.splice(n,1),n--))}}(a.lean?0:1)}function Yt(){if(Ut){var t=Math.round(Date.now()),n=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",e=a.lean?0:1;on("_clsk",[Ut.sessionId,t,Ut.pageNum,e,n].join("|"),1)}}function Kt(t,n){try{return!!t[n]}catch(t){return!1}}function Qt(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===a.dob?0:a.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&on("_clck",[Ut.userId,2,e.toString(36),n,r].join("|"),365)}function $t(){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 nn(){var t={id:$t(),version:0,expiry:null,consent:0,dob:0},n=en("_clck",!a.includeSubdomains);if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,i=document.cookie.split(";");o<i.length;o++){r+="_clck"===i[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}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])),a.track=a.track||1===t.consent,t.id=a.track?e[0]:t.id}return t}function en(t,n){var e;if(void 0===n&&(n=!1),Kt(document,"cookie")){var r=document.cookie.split(";");if(r)for(var o=0;o<r.length;o++){var a=r[o].split("=");if(a.length>1&&a[0]&&a[0].trim()===t){for(var i=rn(a[1]),c=i[0],u=i[1];c;)c=(e=rn(u))[0],u=e[1];return n?u.endsWith("".concat("~","1"))?u.substring(0,u.length-2):null:u}}}return null}function rn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function on(t,n,e){if((a.track||""==n)&&(navigator&&navigator.cookieEnabled||Kt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var i=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Vt){for(var u=location.hostname?location.hostname.split("."):[],s=u.length-1;s>=0;s--)if(Vt=".".concat(u[s]).concat(Vt||""),s<u.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Vt),en(t)===n))return;Vt=""}}catch(t){Vt=""}document.cookie=Vt?"".concat(c).concat(";").concat("domain=").concat(Vt):c}}var an,cn=null;function un(){var t=Ut;cn={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 sn(){cn=null}function ln(t){return cn.start=cn.start+cn.duration,cn.duration=u()-cn.start,cn.sequence++,cn.upload=t&&"sendBeacon"in navigator?1:0,cn.end=t?1:0,cn.applicationPlatform=0,cn.url=h(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 dn(){an=[]}function fn(t){if(an&&-1===an.indexOf(t.message)){var n=a.report;if(n&&n.length>0){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)),an.push(t.message)}}return t}function pn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw fn(t)}var e=performance.now()-n;x(4,e),e>a.longTask&&(T(7),j(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var hn=[];function vn(t,n,e,r){void 0===r&&(r=!1),e=pn(e);try{t[i("addEventListener")](n,e,r),hn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function gn(){for(var t=0,n=hn;t<n.length;t++){var e=n[t];try{e.target[i("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}hn=[]}var mn=null,yn=null,bn=null,wn=0;function kn(){return!(wn++>20)}function Sn(){wn=0,bn!==En()&&(oe(),window.setTimeout(_n,250))}function _n(){re(),j(29,1)}function En(){return location.href?location.href.replace(location.hash,""):location.href}Sn.dn=1;var In=[],Mn=null,On=null,Tn=null;function xn(){On&&(Tn(),On=null,null===Mn&&zn())}function jn(){In=[],Mn=null,On=null}function zn(){var t=In.shift();t&&(Mn=t,t.task().then((function(){t.id===Jt()&&(t.resolve(),Mn=null,zn())})).catch((function(n){t.id===Jt()&&(n&&(n.name,n.message,n.stack),Mn=null,zn())})))}var Cn=!1;function An(){Cn=!0,c=performance.now()+performance.timeOrigin,jn(),gn(),dn(),bn=En(),wn=0,vn(window,"popstate",Sn),null===mn&&(mn=history.pushState,history.pushState=function(){mn.apply(this,arguments),Nn()&&kn()&&Sn()}),null===yn&&(yn=history.replaceState,history.replaceState=function(){yn.apply(this,arguments),Nn()&&kn()&&Sn()})}function qn(){bn=null,wn=0,dn(),gn(),jn(),c=0,Cn=!1}function Nn(){return Cn}function Pn(){re(),E("clarity","restart")}Pn.dn=2;var Dn=null;function Rn(){Dn=null}function Un(t){Dn={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){V(this,void 0,void 0,(function(){var n,e;return B(this,(function(r){return n=u(),e=[n,t],29===t&&(e.push(Dn.fetchStart),e.push(Dn.connectStart),e.push(Dn.connectEnd),e.push(Dn.requestStart),e.push(Dn.responseStart),e.push(Dn.responseEnd),e.push(Dn.domInteractive),e.push(Dn.domComplete),e.push(Dn.loadEventStart),e.push(Dn.loadEventEnd),e.push(Dn.redirectCount),e.push(Dn.size),e.push(Dn.type),e.push(Dn.protocol),e.push(Dn.encodedSize),e.push(Dn.decodedSize),Rn(),yt(e)),[2]}))}))}(29)}var Hn,Ln=0,Vn=1/0,Bn=0,Xn=0,Wn=[],Jn=new Map,Zn=function(){return Ln||0},Gn=function(){if(!Wn.length)return-1;var t=Math.min(Wn.length-1,Math.floor((Zn()-Xn)/50));return Wn[t].latency},Fn=function(){Xn=Zn(),Wn.length=0,Jn.clear()},Yn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Ln=performance.interactionCount:t.interactionId&&(Vn=Math.min(Vn,t.interactionId),Bn=Math.max(Bn,t.interactionId),Ln=Bn?(Bn-Vn)/7+1:0)}(t);var n=Wn[Wn.length-1],e=Jn.get(t.interactionId);if(e||Wn.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};Jn.set(r.id,r),Wn.push(r)}Wn.sort((function(t,n){return n.latency-t.latency})),Wn.length>10&&Wn.splice(10).forEach((function(t){return Jn.delete(t.id)}))}}},Kn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Qn(){try{Hn&&Hn.disconnect(),Hn=new PerformanceObserver(pn($n));for(var t=0,n=Kn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&x(9,0),Hn.observe({type:e,buffered:!0}))}}catch(t){}}function $n(t){!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":Un(r);break;case"resource":var o=r.name;Nt(4,te(o)),o!==a.upload&&o!==a.fallback||j(28,r.duration);break;case"longtask":T(7);break;case"first-input":n&&j(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Yn(r),Nt(37,Gn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&x(9,1e3*r.value);break;case"largest-contentful-paint":n&&j(8,r.startTime)}}}(t.getEntries())}function te(t){var n=document.createElement("a");return n.href=t,n.host}function ne(){Rn(),function(){navigator&&"connection"in navigator&&Nt(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?vn(window,"load",z.bind(this,Qn,0)):Qn())}()}Qn.dn=26,$n.dn=27,ne.dn=25;var ee=[S,S,S,Object.freeze({__proto__:null,start:ne,stop:function(){Hn&&Hn.disconnect(),Hn=null,Fn(),Rn()}})];function re(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===Cn&&"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||Cn)return!1;for(var n in t)n in a&&(a[n]=t[n])}(t),An(),ot(),ee.forEach((function(t){return pn(t.start)()})),null===t&&ue())}function oe(){Nn()&&(ee.slice().reverse().forEach((function(t){return pn(t.stop)()})),at(),qn(),void 0!==ie&&(ie[ce]=function(){(ie[ce].q=ie[ce].q||[]).push(arguments),"start"===arguments[0]&&ie[ce].q.unshift(ie[ce].q.pop())&&ue()}))}var ae=Object.freeze({__proto__:null,consent:Zt,event:E,hashText:w,identify:J,metadata:Wt,pause:function(){Nn()&&(E("clarity","pause"),null===On&&(On=new Promise((function(t){Tn=t}))))},resume:function(){Nn()&&(xn(),E("clarity","resume"))},set:W,signal:function(t){nt=t},start:re,stop:oe,upgrade:H,version:s}),ie=window,ce="clarity";function ue(){if(void 0!==ie){if(ie[ce]&&ie[ce].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=ie[ce]&&ie[ce].q||[];for(ie[ce]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ae[t].apply(ae,n)},ie[ce].v=s;t.length>0;)ie[ce].apply(ie,t.shift())}}ue()}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarity-js",
3
- "version": "0.7.61",
3
+ "version": "0.7.63",
4
4
  "description": "An analytics library that uses web page interactions to generate aggregated insights",
5
5
  "author": "Microsoft Corp.",
6
6
  "license": "MIT",
@@ -24,6 +24,7 @@ let config: Config = {
24
24
  conversions: false,
25
25
  longTask: 30,
26
26
  includeSubdomains: true,
27
+ throttleMutations: false,
27
28
  };
28
29
 
29
30
  export default config;
@@ -1,2 +1,2 @@
1
- let version = "0.7.58";
1
+ let version = "0.7.63";
2
2
  export default version;
@@ -1,4 +1,4 @@
1
- import { BooleanFlag, Token, Upload, Envelope, WebApp } from "@clarity-types/data";
1
+ import { BooleanFlag, Token, Upload, Envelope, ApplicationPlatform } from "@clarity-types/data";
2
2
  import { time } from "@src/core/time";
3
3
  import version from "@src/core/version";
4
4
  import * as metadata from "@src/data/metadata";
@@ -19,7 +19,7 @@ export function start(): void {
19
19
  pageNum: m.pageNum,
20
20
  upload: Upload.Async,
21
21
  end: BooleanFlag.False,
22
- applicationPlatform: WebApp,
22
+ applicationPlatform: ApplicationPlatform.WebApp,
23
23
  url: ''
24
24
  };
25
25
  }
@@ -34,7 +34,7 @@ export function envelope(last: boolean): Token[] {
34
34
  data.sequence++;
35
35
  data.upload = last && "sendBeacon" in navigator ? Upload.Beacon : Upload.Async;
36
36
  data.end = last ? BooleanFlag.True : BooleanFlag.False;
37
- data.applicationPlatform = WebApp;
37
+ data.applicationPlatform = ApplicationPlatform.WebApp;
38
38
  data.url = scrub.url(location.href, false, true);
39
39
  return [
40
40
  data.version,
package/src/layout/dom.ts CHANGED
@@ -86,8 +86,14 @@ export function getId(node: Node, autogen: boolean = false): number {
86
86
  }
87
87
 
88
88
  export function add(node: Node, parent: Node, data: NodeInfo, source: Source): void {
89
- let id = getId(node, true);
90
89
  let parentId = parent ? getId(parent) : null;
90
+
91
+ // Do not add detached nodes
92
+ if ((!parent || !parentId) && (node as ShadowRoot).host == null && node.nodeType !== Node.DOCUMENT_TYPE_NODE) {
93
+ return;
94
+ }
95
+
96
+ let id = getId(node, true);
91
97
  let previousId = getPreviousId(node);
92
98
  let parentValue: NodeValue = null;
93
99
  let regionId = region.exists(node) ? id : null;
@@ -34,6 +34,7 @@ let timeout: number = null;
34
34
  let throttleDelay: number = null;
35
35
  let activePeriod = null;
36
36
  let history: MutationHistory = {};
37
+ let criticalPeriod = null;
37
38
 
38
39
  export function start(): void {
39
40
  observers = [];
@@ -41,6 +42,7 @@ export function start(): void {
41
42
  timeout = null;
42
43
  activePeriod = 0;
43
44
  history = {};
45
+ criticalPeriod = 0;
44
46
 
45
47
  // Some popular open source libraries, like styled-components, optimize performance
46
48
  // by injecting CSS using insertRule API vs. appending text node. A side effect of
@@ -126,10 +128,12 @@ export function stop(): void {
126
128
  queue = [];
127
129
  activePeriod = 0;
128
130
  timeout = null;
131
+ criticalPeriod = 0;
129
132
  }
130
133
 
131
134
  export function active(): void {
132
135
  activePeriod = time() + Setting.MutationActivePeriod;
136
+ criticalPeriod = time() + Setting.INPCriticalPeriod;
133
137
  }
134
138
 
135
139
  function handle(m: MutationRecord[]): void {
@@ -223,9 +227,13 @@ function track(m: MutationRecord, timer: Timer, instance: number, timestamp: num
223
227
  if (value && value.data.tag !== Constant.HTML) {
224
228
  // calculate inactive period based on the timestamp of the mutation not when the mutation is processed
225
229
  let inactive = timestamp > activePeriod;
230
+ // Calculate critical period based on when mutation is processed
231
+ const critical = instance < criticalPeriod;
226
232
  let target = dom.get(m.target);
227
233
  let element = target && target.selector ? target.selector.join() : m.target.nodeName;
228
234
  let parent = value.selector ? value.selector.join() : Constant.Empty;
235
+ // Check if its a low priority (e.g., ads related) element mutation happening during critical period
236
+ const lowPriMutation = config.throttleMutations && critical && element.indexOf("adthrive-ad") !== -1;
229
237
  // We use selector, instead of id, to determine the key (signature for the mutation) because in some cases
230
238
  // repeated mutations can cause elements to be destroyed and then recreated as new DOM nodes
231
239
  // In those cases, IDs will change however the selector (which is relative to DOM xPath) remains the same
@@ -235,11 +243,14 @@ function track(m: MutationRecord, timer: Timer, instance: number, timestamp: num
235
243
  let h = history[key];
236
244
  // Lookup any pending nodes queued up for removal, and process them now if we suspended a mutation before
237
245
  if (inactive === false && h[0] >= Setting.MutationSuspendThreshold) { processNodeList(h[2], Source.ChildListRemove, timer, timestamp); }
238
- // Update the counter
239
- h[0] = inactive ? (h[1] === instance ? h[0] : h[0] + 1) : 1;
246
+
247
+ // Update the counter, do not reset counter if its critical period
248
+ h[0] = inactive || lowPriMutation ? (h[1] === instance ? h[0] : h[0] + 1) : 1;
240
249
  h[1] = instance;
241
- // Return updated mutation type based on if we have already hit the threshold or not
242
- if (h[0] >= Setting.MutationSuspendThreshold) {
250
+ // Return updated mutation type based on,
251
+ // 1. if we have already hit the threshold or not
252
+ // 2. if its a low priority mutation happening during critical time period
253
+ if (h[0] >= Setting.MutationSuspendThreshold || lowPriMutation) {
243
254
  // Store a reference to removedNodes so we can process them later
244
255
  // when we resume mutations again on user interactions
245
256
  h[2] = m.removedNodes;
@@ -263,13 +274,14 @@ function names(nodes: NodeList): string {
263
274
  async function processNodeList(list: NodeList, source: Source, timer: Timer, timestamp: number): Promise<void> {
264
275
  let length = list ? list.length : 0;
265
276
  for (let i = 0; i < length; i++) {
277
+ const node = list[i];
266
278
  if (source === Source.ChildListAdd) {
267
- traverse(list[i], timer, source, timestamp);
279
+ traverse(node, timer, source, timestamp);
268
280
  } else {
269
281
  let state = task.state(timer);
270
282
  if (state === Task.Wait) { state = await task.suspend(timer); }
271
283
  if (state === Task.Stop) { break; }
272
- processNode(list[i], source, timestamp);
284
+ processNode(node, source, timestamp);
273
285
  }
274
286
  }
275
287
  }
package/types/core.d.ts CHANGED
@@ -138,6 +138,7 @@ export interface Config {
138
138
  conversions?: boolean;
139
139
  longTask?: number;
140
140
  includeSubdomains?: boolean;
141
+ throttleMutations?: boolean;
141
142
  }
142
143
 
143
144
  export const enum Constant {
package/types/data.d.ts CHANGED
@@ -12,8 +12,6 @@ export interface MetadataCallbackOptions {
12
12
  }
13
13
  export type SignalCallback = (data: ClaritySignal) => void
14
14
 
15
- export const WebApp = 0;
16
-
17
15
  /* Enum */
18
16
  export const enum Event {
19
17
  /* Data */
@@ -47,22 +45,22 @@ export const enum Event {
47
45
  Input = 27,
48
46
  Visibility = 28,
49
47
  Navigation = 29,
50
- /**
51
- * @deprecated No longer support Network Connection
52
- */
48
+ /**
49
+ * @deprecated No longer support Network Connection
50
+ */
53
51
  Connection = 30,
54
52
  ScriptError = 31,
55
- /**
56
- * @deprecated No longer support Image Error
57
- */
53
+ /**
54
+ * @deprecated No longer support Image Error
55
+ */
58
56
  ImageError = 32,
59
57
  Log = 33,
60
58
  Variable = 34,
61
59
  Limit = 35,
62
60
  Summary = 36,
63
- /**
64
- * @deprecated No longer support Box event
65
- */
61
+ /**
62
+ * @deprecated No longer support Box event
63
+ */
66
64
  Box = 37,
67
65
  Clipboard = 38,
68
66
  Submit = 39,
@@ -116,9 +114,9 @@ export const enum Metric {
116
114
  Mobile = 27,
117
115
  UploadTime = 28,
118
116
  SinglePage = 29,
119
- /**
120
- * @deprecated Browser API is deprecated. Reference: https://developer.mozilla.org/en-US/docs/Web/API/Performance/memory
121
- */
117
+ /**
118
+ * @deprecated Browser API is deprecated. Reference: https://developer.mozilla.org/en-US/docs/Web/API/Performance/memory
119
+ */
122
120
  UsedMemory = 30,
123
121
  Iframed = 31,
124
122
  MaxTouchPoints = 32,
@@ -126,9 +124,9 @@ export const enum Metric {
126
124
  DeviceMemory = 34,
127
125
  Electron = 35,
128
126
  ConstructedStyles = 36,
129
- /**
130
- * @deprecated Move it to dimension as it'll report only last value
131
- */
127
+ /**
128
+ * @deprecated Move it to dimension as it'll report only last value
129
+ */
132
130
  InteractionNextPaint = 37,
133
131
  HistoryClear = 38
134
132
  }
@@ -193,9 +191,9 @@ export const enum Code {
193
191
  CallStackDepth = 4,
194
192
  Selector = 5,
195
193
  Metric = 6,
196
- /**
197
- * @deprecated No longer support ContentSecurityPolicy
198
- */
194
+ /**
195
+ * @deprecated No longer support ContentSecurityPolicy
196
+ */
199
197
  ContentSecurityPolicy = 7,
200
198
  Config = 8,
201
199
  FunctionExecutionTime = 9
@@ -270,6 +268,10 @@ export const enum Character {
270
268
  Return = 13
271
269
  }
272
270
 
271
+ export const enum ApplicationPlatform {
272
+ WebApp = 0
273
+ }
274
+
273
275
  export const enum Constant {
274
276
  Auto = "Auto",
275
277
  Config = "Config",
@@ -470,7 +472,7 @@ export interface UpgradeData {
470
472
  }
471
473
 
472
474
  export interface ExtractData {
473
- [key: number]: { [subkey : number]: string }; // Array of { subkey: number } representing the extracted data
475
+ [key: number]: { [subkey: number]: string }; // Array of { subkey: number } representing the extracted data
474
476
  }
475
477
 
476
478
  export interface UploadData {
@@ -488,7 +490,8 @@ export interface PerformanceEventTiming extends PerformanceEntry {
488
490
  duration: DOMHighResTimeStamp;
489
491
  interactionId: number;
490
492
  }
493
+
491
494
  export interface Interaction {
492
495
  id: number;
493
496
  latency: number;
494
- }
497
+ }
package/types/layout.d.ts CHANGED
@@ -159,6 +159,7 @@ export const enum Setting {
159
159
  MutationActivePeriod = 3000, // Unit: milliseconds. Let mutations continue as normal during active periods of user interactions
160
160
  MaxMutationHistoryCount = 10000,
161
161
  MaxMutationHistoryTime = 30000, // Unit: milliseconds. Maximum time to keep mutation history in memory
162
+ INPCriticalPeriod = 200 // Unit: milliseconds. Throttle less important mutations during critical periods of user interactions
162
163
  }
163
164
 
164
165
  export const enum StyleSheetOperation {