clarity-visualize 0.6.39 → 0.6.41

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.
@@ -170,12 +170,15 @@ function hash (input) {
170
170
  return hash.toString(36);
171
171
  }
172
172
 
173
- var TAGS = ["DIV", "TR", "P", "LI", "UL", "A", "BUTTON"];
174
- function selector (input, beta) {
175
- if (beta === void 0) { beta = false; }
173
+ var excludeClassNames = "load,active,fixed,visible,focus,show,collaps,animat" /* Constant.ExcludeClassNames */.split("," /* Constant.Comma */);
174
+ var selectorMap = {};
175
+ function reset$k() {
176
+ selectorMap = {};
177
+ }
178
+ function get$1(input, type) {
176
179
  var a = input.attributes;
177
- var prefix = input.prefix ? input.prefix[beta ? 1 /* Selector.Beta */ : 0 /* Selector.Stable */] : null;
178
- var suffix = beta || ((a && !("class" /* Constant.Class */ in a)) || TAGS.indexOf(input.tag) >= 0) ? ":nth-of-type(".concat(input.position, ")") : "" /* Constant.Empty */;
180
+ var prefix = input.prefix ? input.prefix[type] : null;
181
+ var suffix = type === 0 /* Selector.Alpha */ ? "".concat("~" /* Constant.Tilde */).concat(input.position - 1) : ":nth-of-type(".concat(input.position, ")");
179
182
  switch (input.tag) {
180
183
  case "STYLE":
181
184
  case "TITLE":
@@ -190,23 +193,33 @@ function selector (input, beta) {
190
193
  if (prefix === null) {
191
194
  return "" /* Constant.Empty */;
192
195
  }
193
- prefix = "".concat(prefix, ">");
196
+ prefix = "".concat(prefix).concat(">" /* Constant.Separator */);
194
197
  input.tag = input.tag.indexOf("svg:" /* Constant.SvgPrefix */) === 0 ? input.tag.substr("svg:" /* Constant.SvgPrefix */.length) : input.tag;
195
198
  var selector = "".concat(prefix).concat(input.tag).concat(suffix);
196
- var classes = "class" /* Constant.Class */ in a && a["class" /* Constant.Class */].length > 0 ? a["class" /* Constant.Class */].trim().split(/\s+/) : null;
197
- if (beta) {
198
- // In beta mode, update selector to use "id" field when available. There are two exceptions:
199
- // (1) if "id" appears to be an auto generated string token, e.g. guid or a random id containing digits
200
- // (2) if "id" appears inside a shadow DOM, in which case we continue to prefix up to shadow DOM to prevent conflicts
201
- var id = "id" /* Constant.Id */ in a && a["id" /* Constant.Id */].length > 0 ? a["id" /* Constant.Id */] : null;
202
- classes = input.tag !== "BODY" /* Constant.BodyTag */ && classes ? classes.filter(function (c) { return !hasDigits(c); }) : [];
203
- selector = classes.length > 0 ? "".concat(prefix).concat(input.tag, ".").concat(classes.join(".")).concat(suffix) : selector;
204
- selector = id && hasDigits(id) === false ? "".concat(getDomPrefix(prefix), "#").concat(id) : selector;
205
- }
206
- else {
207
- // Otherwise, fallback to stable mode, where we include class names as part of the selector
208
- selector = classes ? "".concat(prefix).concat(input.tag, ".").concat(classes.join(".")).concat(suffix) : selector;
199
+ var id = "id" /* Constant.Id */ in a && a["id" /* Constant.Id */].length > 0 ? a["id" /* Constant.Id */] : null;
200
+ var classes = input.tag !== "BODY" /* Constant.BodyTag */ && "class" /* Constant.Class */ in a && a["class" /* Constant.Class */].length > 0 ? a["class" /* Constant.Class */].trim().split(/\s+/).filter(function (c) { return filter(c); }).join("." /* Constant.Period */) : null;
201
+ if (classes && classes.length > 0) {
202
+ if (type === 0 /* Selector.Alpha */) {
203
+ // In Alpha mode, update selector to use class names, with relative positioning within the parent id container.
204
+ // If the node has valid class name(s) then drop relative positioning within the parent path to keep things simple.
205
+ var key = "".concat(getDomPath(prefix)).concat(input.tag).concat("." /* Constant.Dot */).concat(classes);
206
+ if (!(key in selectorMap)) {
207
+ selectorMap[key] = [];
208
+ }
209
+ if (selectorMap[key].indexOf(input.id) < 0) {
210
+ selectorMap[key].push(input.id);
211
+ }
212
+ selector = "".concat(key).concat("~" /* Constant.Tilde */).concat(selectorMap[key].indexOf(input.id));
213
+ }
214
+ else {
215
+ // In Beta mode, we continue to look at query selectors in context of the full page
216
+ selector = "".concat(prefix).concat(input.tag, ".").concat(classes).concat(suffix);
217
+ }
209
218
  }
219
+ // Update selector to use "id" field when available. There are two exceptions:
220
+ // (1) if "id" appears to be an auto generated string token, e.g. guid or a random id containing digits
221
+ // (2) if "id" appears inside a shadow DOM, in which case we continue to prefix up to shadow DOM to prevent conflicts
222
+ selector = id && filter(id) ? "".concat(getDomPrefix(prefix)).concat("#" /* Constant.Hash */).concat(id) : selector;
210
223
  return selector;
211
224
  }
212
225
  }
@@ -215,22 +228,42 @@ function getDomPrefix(prefix) {
215
228
  var iframeDomStart = prefix.lastIndexOf("".concat("iframe:" /* Constant.IFramePrefix */).concat("HTML" /* Constant.HTML */));
216
229
  var domStart = Math.max(shadowDomStart, iframeDomStart);
217
230
  if (domStart < 0) {
218
- return "";
231
+ return "" /* Constant.Empty */;
232
+ }
233
+ return prefix.substring(0, prefix.indexOf(">" /* Constant.Separator */, domStart) + 1);
234
+ }
235
+ function getDomPath(input) {
236
+ var parts = input.split(">" /* Constant.Separator */);
237
+ for (var i = 0; i < parts.length; i++) {
238
+ var tIndex = parts[i].indexOf("~" /* Constant.Tilde */);
239
+ var dIndex = parts[i].indexOf("." /* Constant.Dot */);
240
+ parts[i] = parts[i].substring(0, dIndex > 0 ? dIndex : (tIndex > 0 ? tIndex : parts[i].length));
219
241
  }
220
- var domEnd = prefix.indexOf(">", domStart) + 1;
221
- return prefix.substr(0, domEnd);
242
+ return parts.join(">" /* Constant.Separator */);
222
243
  }
223
- // Check if the given input string has digits or not
224
- function hasDigits(value) {
244
+ // Check if the given input string has digits or excluded class names
245
+ function filter(value) {
246
+ if (!value) {
247
+ return false;
248
+ } // Do not process empty strings
249
+ if (excludeClassNames.some(function (x) { return value.toLowerCase().indexOf(x) >= 0; })) {
250
+ return false;
251
+ }
225
252
  for (var i = 0; i < value.length; i++) {
226
253
  var c = value.charCodeAt(i);
227
254
  if (c >= 48 /* Character.Zero */ && c <= 57 /* Character.Nine */) {
228
- return true;
255
+ return false;
229
256
  }
230
257
  }
231
- return false;
258
+ return true;
232
259
  }
233
260
 
261
+ var selector = /*#__PURE__*/Object.freeze({
262
+ __proto__: null,
263
+ reset: reset$k,
264
+ get: get$1
265
+ });
266
+
234
267
  var index = 1;
235
268
  var nodes = [];
236
269
  var values = [];
@@ -255,7 +288,7 @@ function getNode(id) {
255
288
  }
256
289
  return null;
257
290
  }
258
- function get$1(node) {
291
+ function get$2(node) {
259
292
  var id = getId(node);
260
293
  return id in values ? values[id] : null;
261
294
  }
@@ -263,7 +296,7 @@ function lookup(hash) {
263
296
  return hash in hashMap ? hashMap[hash] : null;
264
297
  }
265
298
 
266
- var helper = { hash: hash, selector: selector, get: get$1, getNode: getNode, lookup: lookup };
299
+ var helper = { hash: hash, selector: selector, get: get$2, getNode: getNode, lookup: lookup };
267
300
 
268
301
  var EnrichHelper = /** @class */ (function () {
269
302
  function EnrichHelper() {
@@ -271,6 +304,7 @@ var EnrichHelper = /** @class */ (function () {
271
304
  this.reset = function () {
272
305
  _this.children = {};
273
306
  _this.nodes = {};
307
+ helper.selector.reset();
274
308
  };
275
309
  this.selectors = function (event) {
276
310
  event.data.forEach(function (d) {
@@ -298,18 +332,18 @@ var EnrichHelper = /** @class */ (function () {
298
332
  /* Get current position */
299
333
  node.position = _this.position(d.id, d.tag, node, children, children.map(function (c) { return _this.nodes[c]; }));
300
334
  /* For backward compatibility, continue populating current selector and hash like before in addition to beta selector and hash */
301
- var input = { tag: d.tag, prefix: parent ? [parent.stable, parent.beta] : null, position: node.position, attributes: attributes };
335
+ var input = { id: d.id, tag: d.tag, prefix: parent ? [parent.alpha, parent.beta] : null, position: node.position, attributes: attributes };
302
336
  // Get stable selector
303
337
  // We intentionally use "null" value for empty selectors to keep parity with v0.6.25 and before.
304
- var selector = helper.selector(input);
305
- d.selector = selector.length > 0 ? selector : null;
306
- d.hash = selector.length > 0 ? helper.hash(d.selector) : null;
338
+ var selectorAlpha = helper.selector.get(input, 0 /* Layout.Selector.Alpha */);
339
+ d.selectorAlpha = selectorAlpha.length > 0 ? selectorAlpha : null;
340
+ d.hashAlpha = selectorAlpha.length > 0 ? helper.hash(d.selectorAlpha) : null;
307
341
  // Get beta selector
308
- var selectorBeta = helper.selector(input, true);
342
+ var selectorBeta = helper.selector.get(input, 1 /* Layout.Selector.Beta */);
309
343
  d.selectorBeta = selectorBeta.length > 0 ? selectorBeta : null;
310
344
  d.hashBeta = selectorBeta.length > 0 ? helper.hash(d.selectorBeta) : null;
311
345
  /* Track state for future reference */
312
- node.stable = selector;
346
+ node.alpha = selectorAlpha;
313
347
  node.beta = selectorBeta;
314
348
  _this.nodes[d.id] = node;
315
349
  if (d.parent) {
@@ -1002,29 +1036,28 @@ var LayoutHelper = /** @class */ (function () {
1002
1036
  this.stylesheets = [];
1003
1037
  this.nodes = {};
1004
1038
  this.events = {};
1005
- this.hashMap = {};
1039
+ this.hashMapAlpha = {};
1006
1040
  this.hashMapBeta = {};
1007
1041
  this.state = null;
1008
1042
  this.reset = function () {
1009
1043
  _this.nodes = {};
1010
1044
  _this.stylesheets = [];
1011
1045
  _this.events = {};
1012
- _this.hashMap = {};
1046
+ _this.hashMapAlpha = {};
1013
1047
  _this.hashMapBeta = {};
1014
1048
  };
1015
- this.get = function (hash, beta) {
1016
- if (beta === void 0) { beta = false; }
1017
- if (hash in _this.hashMap && _this.hashMap[hash].isConnected && beta === false) {
1018
- return _this.hashMap[hash];
1019
- }
1020
- else if (hash in _this.hashMapBeta && _this.hashMapBeta[hash].isConnected) {
1049
+ this.get = function (hash) {
1050
+ if (hash in _this.hashMapBeta && _this.hashMapBeta[hash].isConnected) {
1021
1051
  return _this.hashMapBeta[hash];
1022
1052
  }
1053
+ else if (hash in _this.hashMapAlpha && _this.hashMapAlpha[hash].isConnected) {
1054
+ return _this.hashMapAlpha[hash];
1055
+ }
1023
1056
  return null;
1024
1057
  };
1025
1058
  this.addToHashMap = function (data, parent) {
1026
1059
  // In case of selector collision, prefer the first inserted node
1027
- _this.hashMap[data.hash] = _this.get(data.hash) || parent;
1060
+ _this.hashMapAlpha[data.hashAlpha] = _this.get(data.hashAlpha) || parent;
1028
1061
  _this.hashMapBeta[data.hashBeta] = _this.get(data.hashBeta) || parent;
1029
1062
  };
1030
1063
  this.resize = function (el, width, height) {
@@ -1296,7 +1329,7 @@ var LayoutHelper = /** @class */ (function () {
1296
1329
  var sameorigin = false;
1297
1330
  // Clarity attributes
1298
1331
  attributes["data-clarity-id" /* Constant.Id */] = "".concat(data.id);
1299
- attributes["data-clarity-hash" /* Constant.Hash */] = "".concat(data.hash);
1332
+ attributes["data-clarity-hashalpha" /* Constant.HashAlpha */] = "".concat(data.hashAlpha);
1300
1333
  attributes["data-clarity-hashbeta" /* Constant.HashBeta */] = "".concat(data.hashBeta);
1301
1334
  var tag = node.nodeType === 1 /* NodeType.ELEMENT_NODE */ ? node.tagName.toLowerCase() : null;
1302
1335
  // First remove all its existing attributes
@@ -1 +1 @@
1
- !function(){"use strict";function t(t,e,a,n){return new(a||(a=Promise))((function(i,r){function o(t){try{c(n.next(t))}catch(t){r(t)}}function s(t){try{c(n.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof a?e:new a((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))}function e(t,e){var a,n,i,r,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(r){return function(s){return function(r){if(a)throw new TypeError("Generator is already executing.");for(;o;)try{if(a=1,n&&(i=2&r[0]?n.return:r[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,r[1])).done)return i;switch(n=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return o.label++,{value:r[1],done:!1};case 5:o.label++,n=r[1],r=[0];continue;case 7:r=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==r[0]&&2!==r[0])){o=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){o.label=r[1];break}if(6===r[0]&&o.label<i[1]){o.label=i[1],i=r;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(r);break}i[2]&&o.ops.pop(),o.trys.pop();continue}r=e.call(t,o)}catch(t){r=[6,t],n=0}finally{a=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,s])}}}var a,n=function(){function t(e){var a=this;this.regionMap={},this.regions={},this.metrics={},this.lean=!1,this.reset=function(){a.metrics={},a.lean=!1,a.regions={},a.regionMap={}},this.metric=function(e){if(a.state.options.metadata){var n=[],i=[];for(var r in e.data)if("number"==typeof e.data[r]){r in a.metrics||(a.metrics[r]=0);var o=parseInt(r,10);!(r in t.METRIC_MAP)||"html-price"!==t.METRIC_MAP[r].unit&&"ld-price"!==t.METRIC_MAP[r].unit?a.metrics[r]+=e.data[r]:a.metrics[r]=e.data[r],a.lean=1===o&&0===e.data[r]||a.lean}for(var s in a.metrics)if(s in t.METRIC_MAP){r=a.metrics[s];var c=t.METRIC_MAP[s],l="unit"in c?c.unit:"";n.push("<li><h2>".concat(a.value(r,l),"<span>").concat(a.key(l),"</span></h2>").concat(c.name,"</li>"))}for(var A in a.regions){var u=a.regions[A],d=10===u.visibility?"visible":20===u.interaction?"clicked":"";i.push('<span class="'.concat(d,'">').concat(A,"</span>"))}a.state.options.metadata.innerHTML="<ul>".concat(n.join(""),"</ul><div>").concat(i.join(""),"</div>")}},this.key=function(t){switch(t){case"html-price":case"ld-price":case"cls":return"";default:return t}},this.value=function(t,e){switch(e){case"KB":return Math.round(t/1024);case"s":return Math.round(t/10)/100;case"cls":return t/1e3;case"html-price":return t/100;default:return t}},this.state=e}return t.prototype.region=function(t){for(var e=0,a=t.data;e<a.length;e++){var n=a[e];n.name in this.regions||(this.regions[n.name]={interaction:n.interaction,visibility:n.visibility}),this.regionMap[n.id]=n.name}},t.METRIC_MAP=((a={})[2]={name:"Total Bytes",unit:"KB"},a[4]={name:"Total Cost",unit:"ms"},a[3]={name:"Layout Cost",unit:"ms"},a[8]={name:"LCP",unit:"s"},a[9]={name:"CLS",unit:"cls"},a[7]={name:"Long Tasks"},a[24]={name:"Cart Total",unit:"html-price"},a[13]={name:"Product Price",unit:"ld-price"},a[6]={name:"Thread Blocked",unit:"ms"},a),t}();var i=["DIV","TR","P","LI","UL","A","BUTTON"];function r(t){for(var e=0;e<t.length;e++){var a=t.charCodeAt(e);if(a>=48&&a<=57)return!0}return!1}var o=1,s=[],c=[],l={};var A,u={hash:function(t){for(var e=5381,a=e,n=0;n<t.length;n+=2){if(e=(e<<5)+e^t.charCodeAt(n),n+1<t.length)a=(a<<5)+a^t.charCodeAt(n+1)}return Math.abs(e+11579*a).toString(36)},selector:function(t,e){void 0===e&&(e=!1);var a=t.attributes,n=t.prefix?t.prefix[e?1:0]:null,o=e||a&&!("class"in a)||i.indexOf(t.tag)>=0?":nth-of-type(".concat(t.position,")"):"";switch(t.tag){case"STYLE":case"TITLE":case"LINK":case"META":case"*T":case"*D":return"";case"HTML":return"HTML";default:if(null===n)return"";n="".concat(n,">"),t.tag=0===t.tag.indexOf("svg:")?t.tag.substr("svg:".length):t.tag;var s="".concat(n).concat(t.tag).concat(o),c="class"in a&&a.class.length>0?a.class.trim().split(/\s+/):null;if(e){var l="id"in a&&a.id.length>0?a.id:null;s=(c="BODY"!==t.tag&&c?c.filter((function(t){return!r(t)})):[]).length>0?"".concat(n).concat(t.tag,".").concat(c.join(".")).concat(o):s,s=l&&!1===r(l)?"".concat(function(t){var e=t.lastIndexOf("*S"),a=t.lastIndexOf("".concat("iframe:").concat("HTML")),n=Math.max(e,a);if(n<0)return"";var i=t.indexOf(">",n)+1;return t.substr(0,i)}(n),"#").concat(l):s}else s=c?"".concat(n).concat(t.tag,".").concat(c.join(".")).concat(o):s;return s}},get:function(t){var e=function(t,e){if(void 0===e&&(e=!1),null===t)return null;var a=null.get(t);return!a&&e&&(a=o++,null.set(t,a)),a||null}(t);return e in c?c[e]:null},getNode:function(t){return t in s?s[t]:null},lookup:function(t){return t in l?l[t]:null}},d=function(){var t=this;this.reset=function(){t.children={},t.nodes={}},this.selectors=function(e){return e.data.forEach((function(e){var a=t.nodes[e.parent],n=t.children[e.parent]||[],i=t.nodes[e.id]||{tag:e.tag,parent:e.parent,previous:e.previous},r=e.attributes||{};if(i.parent!==e.parent){var o=null===e.previous?0:n.indexOf(e.previous)+1;if(n.splice(o,0,e.id),i.parent!==e.parent){var s=t.children[i.parent],c=s?s.indexOf(e.id):-1;c>=0&&t.children[i.parent].splice(c,1)}i.parent=e.parent}else n.indexOf(e.id)<0&&n.push(e.id);i.position=t.position(e.id,e.tag,i,n,n.map((function(e){return t.nodes[e]})));var l={tag:e.tag,prefix:a?[a.stable,a.beta]:null,position:i.position,attributes:r},A=u.selector(l);e.selector=A.length>0?A:null,e.hash=A.length>0?u.hash(e.selector):null;var d=u.selector(l,!0);e.selectorBeta=d.length>0?d:null,e.hashBeta=d.length>0?u.hash(e.selectorBeta):null,i.stable=A,i.beta=d,t.nodes[e.id]=i,e.parent&&(t.children[e.parent]=n)})),e},this.position=function(t,e,a,n,i){a.position=1;for(var r=n?n.indexOf(t):-1;r-- >0;)if(e===i[r].tag){a.position=i[r].position+1;break}return a.position},this.reset()},h=function(){function t(e,a){var n=this;this.data=null,this.scrollData=null,this.max=null,this.offscreenRing=null,this.gradientPixels=null,this.timeout=null,this.observer=null,this.state=null,this.layout=null,this.scrollAvgFold=null,this.addScrollMakers=!1,this.reset=function(){if(n.data=null,n.scrollData=null,n.max=null,n.offscreenRing=null,n.gradientPixels=null,n.timeout=null,n.observer&&(n.observer.disconnect(),n.observer=null),n.state&&n.state.window){var t=n.state.window;t.removeEventListener("scroll",n.redraw,!0),t.removeEventListener("resize",n.redraw,!0)}},this.clear=function(){var t=n.state.window.document,e=n.state.window,a=t.getElementById("clarity-heatmap-canvas"),i=t.documentElement;a&&(a.width=i.clientWidth,a.height=i.clientHeight,a.style.left=e.pageXOffset+"px",a.style.top=e.pageYOffset+"px",a.getContext("2d").clearRect(0,0,a.width,a.height)),n.reset()},this.scroll=function(t,e,a){n.scrollData=n.scrollData||t,n.scrollAvgFold=null!=e?e:n.scrollAvgFold,n.addScrollMakers=null!=a?a:n.addScrollMakers;var i=n.overlay(),r=i.getContext("2d"),o=n.state.window.document,s=o.body,c=o.documentElement,l=Math.max(s.scrollHeight,s.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight);if(i.height=Math.min(l,4e4),i.style.top="0px",i.width>0&&i.height>0&&n.scrollData){for(var A=r.createLinearGradient(0,0,0,i.height),u=0,d=n.scrollData;u<d.length;u++){var h=d[u],m=1-h.cumulativeSum/n.scrollData[0].cumulativeSum,f=h.scrollReachY/100*(l/i.height),p=240*m;f<=1&&A.addColorStop(f,"hsla(".concat(p,", 100%, 50%, 0.6)"))}r.fillStyle=A,r.fillRect(0,0,i.width,i.height),n.addScrollMakers&&n.addInfoMarkers(r,n.scrollData,i.width,i.height,n.scrollAvgFold)}},this.addInfoMarkers=function(t,e,a,i,r){n.addMarker(t,a,"Average Fold",r,84);for(var o=function(r){var o=e.reduce((function(t,e){return Math.abs(e.percUsers-r)<Math.abs(t.percUsers-r)?e:t}));if(o.percUsers>=r-2&&o.percUsers<=r+2){var s=o.scrollReachY/100*i;n.addMarker(t,a,"".concat(r,"%"),s,35)}},s=0,c=[75,50,25];s<c.length;s++){o(c[s])}},this.addMarker=function(t,e,a,n,i){t.beginPath(),t.moveTo(0,n),t.lineTo(e,n),t.setLineDash([2,2]),t.lineWidth=1,t.strokeStyle="white",t.stroke(),t.fillStyle="#323130",t.fillRect(0,n-16,i,32),t.fillStyle="white",t.font="500 12px Segoe UI",t.fillText(a,5,n+5)},this.click=function(t){n.data=n.data||t;var e=n.transform(),a=n.overlay(),i=a.getContext("2d");if(a.width>0&&a.height>0){for(var r=n.getRing(),o=n.getGradient(),s=0,c=e;s<c.length;s++){var l=c[s];i.globalAlpha=l.a,i.drawImage(r,l.x-20,l.y-20)}for(var A=i.getImageData(0,0,a.width,a.height),u=0;u<A.data.length;u+=4){var d=A.data[u+3];if(d>0){var h=4*(d-1);A.data[u]=o.data[h],A.data[u+1]=o.data[h+1],A.data[u+2]=o.data[h+2]}}i.putImageData(A,0,0)}},this.overlay=function(){var t=n.state.window.document,e=n.state.window,a=t.documentElement,i=t.getElementById("clarity-heatmap-canvas");return null===i&&((i=t.createElement("CANVAS")).id="clarity-heatmap-canvas",i.width=0,i.height=0,i.style.position="absolute",i.style.zIndex="".concat(2147483647),a.appendChild(i),e.addEventListener("scroll",n.redraw,!0),e.addEventListener("resize",n.redraw,!0),n.observer=n.state.window.ResizeObserver?new ResizeObserver(n.redraw):null,n.observer&&n.observer.observe(t.body)),i.width=a.clientWidth,i.height=a.clientHeight,i.style.left=e.pageXOffset+"px",i.style.top=e.pageYOffset+"px",i.getContext("2d").clearRect(0,0,i.width,i.height),i},this.getRing=function(){if(null===n.offscreenRing){var t=n.state.window.document;n.offscreenRing=t.createElement("CANVAS"),n.offscreenRing.width=40,n.offscreenRing.height=40;var e=n.offscreenRing.getContext("2d");e.shadowOffsetX=40,e.shadowBlur=10,e.shadowColor="black",e.beginPath(),e.arc(-20,20,10,0,2*Math.PI,!0),e.closePath(),e.fill()}return n.offscreenRing},this.getGradient=function(){if(null===n.gradientPixels){var e=n.state.window.document.createElement("CANVAS");e.width=1,e.height=256;for(var a=e.getContext("2d"),i=a.createLinearGradient(0,0,0,256),r=1/t.COLORS.length,o=0;o<t.COLORS.length;o++)i.addColorStop(r*(o+1),t.COLORS[o]);a.fillStyle=i,a.fillRect(0,0,1,256),n.gradientPixels=a.getImageData(0,0,1,256)}return n.gradientPixels},this.redraw=function(t){n.data?(n.timeout&&clearTimeout(n.timeout),n.timeout=setTimeout(n.click,30)):n.scrollData&&"scroll"!=t.type&&(n.timeout&&clearTimeout(n.timeout),n.timeout=setTimeout(n.scroll,30))},this.transform=function(){for(var t=[],e={},a=0,i=n.state.window&&n.state.window.document?n.state.window.document.documentElement.clientHeight:0,r=0,o=n.data;r<o.length;r++){var s=o[r],c=n.layout.get(s.hash);if(c&&"function"==typeof c.getBoundingClientRect){var l=c.getBoundingClientRect(),A=n.visible(c,l,i);if(null===n.max||A)for(var u=0;u<s.points;u++){var d=Math.round(l.left+s.x[u]/32767*l.width),h=Math.round(l.top+s.y[u]/32767*l.height),m="".concat(d).concat("X").concat(h).concat("X").concat(A?1:0);e[m]=m in e?e[m]+s.clicks[u]:s.clicks[u],a=Math.max(e[m],a)}}}n.max=n.max?n.max:a;for(var f=0,p=Object.keys(e);f<p.length;f++){var g=p[f],v=g.split("X"),w=Math.min(e[g]/n.max+.15,1);"1"===v[2]&&t.push({x:parseInt(v[0],10),y:parseInt(v[1],10),a:w})}return t},this.visible=function(t,e,a){var i=n.state.window.document,r=e.height>a;if(!1===r&&e.width>0&&e.height>0)for(;!r&&i;){for(var o=null,s=0,c=i.elementsFromPoint(e.left+e.width/2,e.top+e.height/2);s<c.length;s++){var l=c[s];if(!("CANVAS"===l.tagName||l.id&&0===l.id.indexOf("clarity-"))){r=l===t,o=l.shadowRoot&&l.shadowRoot!=i?l.shadowRoot:null;break}}i=o}return r&&e.bottom>=0&&e.top<=a},this.state=e,this.layout=a}return t.COLORS=["blue","cyan","lime","yellow","red"],t}(),m=function(){function t(e,a){var n=this;this.hoverId=null,this.targetId=null,this.points=[],this.scrollPointIndex=0,this.clickAudio=null,this.reset=function(){n.points=[],n.scrollPointIndex=0,n.clickAudio=null,n.hoverId=null,n.targetId=null,n.layout.reset()},this.scroll=function(t){var e=t.data,a=n.state.window.document,i=a.documentElement,r=n.layout.element(e.target)||a.body,o=r.scrollHeight>r.clientHeight||r.scrollWidth>r.clientWidth;if(r&&o&&r.scrollTo(e.x,e.y),r===i||r===a.body){o||n.state.window.scrollTo(e.x,e.y);var s=n.overlay();s&&(s.style.left=e.x+"px",s.style.top=e.y+"px",s.width=i.clientWidth,s.height=i.clientHeight),n.scrollPointIndex=n.points.length}},this.resize=function(t){var e=t.data,a=e.width,i=e.height;n.state.options.onresize&&n.state.options.onresize(a,i)},this.visibility=function(t){var e=n.state.window.document;e&&e.documentElement&&"visible"!==t.data.visible?(e.documentElement.style.backgroundColor="black",e.documentElement.style.opacity="0.4"):(e.documentElement.style.backgroundColor="transparent",e.documentElement.style.opacity="1")},this.input=function(t){var e=t.data,a=n.layout.element(e.target);if(a)switch(a.type){case"checkbox":case"radio":a.checked="true"===e.value;break;default:a.value=e.value}},this.selection=function(t){var e=t.data,a=n.state.window.document.getSelection();try{a.setBaseAndExtent(n.layout.element(e.start),e.startOffset,n.layout.element(e.end),e.endOffset)}catch(t){console.warn("Exception encountered while trying to set selection: "+t)}},this.pointer=function(t){var e=t.data,a=t.event,i=n.state.window.document,r=i.documentElement,o=i.getElementById("clarity-pointer");if(null===o){(o=i.createElement("DIV")).id="clarity-pointer",r.appendChild(o);var s=i.createElement("STYLE");s.textContent="@keyframes pulsate-one { 0% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(3, 3); opacity: 0; } }@keyframes pulsate-two { 0% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(5, 5); opacity: 0; } }@keyframes pulsate-touch { 0% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(2, 2); opacity: 0; } }@keyframes disappear { 90% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(1.3, 1.3); opacity: 0; } }"+"#".concat("clarity-interaction-canvas"," { position: absolute; left: 0; top: 0; z-index: ").concat(2147483647,"; background: none; }")+"#".concat("clarity-pointer"," { position: absolute; z-index: ").concat(2147483647,"; url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAmCAYAAAA4LpBhAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASDSURBVHgB7VdPTCNlFH8z0/+FFmRatnFNiDGR4O4mBk08smZvXjjIxRueNME9eHGNxoLxSNwr4WyigYToQRJLjXDzQtDNmnhR4kWWAJm20ymddtrx94bvI9NBWAptsod9ycvM92fe73vv/b73fUP0DIlCfRQ1AMTtjwcHB1+gPgOT67oK6+TkZBjNbxRF+X1gYCCDPpX6IKdGAaTu7++HuG9tbe1ONBr9GR7r+Xy+98DsIRuemJiIjI6OJgH+3e7urruzs+OOjIw8SiaTNwRwz8OtQWPpdHoYoKt///ar2/jxaw84k8k8gt5YWVnRqEfi90BrtVph0Uetx0V67d9fqFAo3G6324XZ2VldLK4noK4AVqvVaoh8YZTAxWLxdiwW20CoM70IdceWicfjSpCxfuBEIrGxsLCQZR7QNcQDwFaRRhRmcXCSL9S3kN8CtlP2Oqz2QoWt4Q4NDanHx8cy3HQBMIe6sLS0pF811B7I5uYmhUKh1nmAQWAOteM4xcXFxczMzEzXHp+u9PDwUBHvymWBmVzr6+t6t9tJhtPzEEYuFaoguebm5nTqJOXFoMxEVCO50tMFXBaYcwwbGwAfRagv5bEKthK2igdUr9epG/EDYw//xKGmzoLz/6BQd3t7m5i9dAUJsJoLSPZp5PIGp6amXHjsVSaEirqVALk8jy/axx2hwAcMTlcRH/Ad5LfA24kEZ4JzudbySSJzyqDnomq37pH14utH/iUrCA5HCeRwHYXc8dzNNs5jfXp6uoD+e/Pz8zzfDYIqq6urihg4NyTaK2/Rw8fNo0/euWvBWI3TwGAiHW2RnjY7LRVjX+7t7d3nSWL8FFSKIj46I0r2ZXr4R/PoQT5f1TTtU3Q5OAbbbAxtV4BwXx07wUI5raJdTaVS5vLysmYYhlyMDJBHJBoeHpbFwQ0CfmuP04P8V1VVVb9AVwXGy/xE6SyHw2FuW9Aa2jYAHVx1HAZh78bGxs44wYkm0zS9PPrC1QE4+8HcPwD8HONPYNzEkAU1UX+raFcYmPswzhu9ISLmShIdHBx0lFfVH2s+SyWR/IBofgYvnmCIPTQjkYiBk8mARwYWU4aW8F5uNpslXHkstBncxjcOeyqJ6vfUO9oQd2avlyeKJj3A9z/8yAOE7uHKUgGoiRQYMFZCdEq2bZfgpYFnmd9xzprlcrnCOdV13cbWaWKezGVnAUBOmVBpkOAlPH/AxuYJu/DoPQDcxfubeB/ncZCDL+IpaDKgiVwul8AzDo1BI3RC1HPLIg+mYPQmvPke+hdY+S68ehuevIHQvYpV5/i2KIxKg5pUUew1AaL6wM4cl4oPFJjxFMJ0H6BbIIgBwAbeLSzABLBVKpVszGvSCf27r5dCNE7h1tYWX1U0ECHUaDT+REhryKENrTFbwdLj+skRxIAeM+ka4rGV2QWv2vCIjVoAryC0Jk6MCk6fGvoY0OkFoF80UDsG8AG8j/BtD78YWRSMNNoJQbSe/1Zw0tmwBB6kE0ZG+wXI4v1ECYAIdbKzf/+povypEui6t/jnwvIf5FVJ1Cj/1+UAAAAASUVORK5CYII=",") no-repeat left center; width: ").concat(29,"px; height: ").concat(38,"px; }")+".".concat("clarity-click",", .").concat("clarity-click-ring",", .").concat("clarity-touch",", .").concat("clarity-touch-ring"," { position: absolute; z-index: ").concat(2147483647,"; border-radius: 50%; background: radial-gradient(rgba(0,90,158,0.8), transparent); width: ").concat(22,"px; height: ").concat(22,"px;}")+".".concat("clarity-click-ring"," { background: transparent; border: 1px solid rgba(0,90,158,0.8); }")+".".concat("clarity-touch"," { background: radial-gradient(rgba(242,97,12,1), transparent); }")+".".concat("clarity-touch-ring"," { background: transparent; border: 1px solid rgba(242,97,12,0.8); }")+".".concat("clarity-pointer-click"," { background-image: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAmCAYAAAA4LpBhAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVoSURBVHgB7VdNTCRFGP2qe6aBGRhA5mfJ7kZcV0XQTQx68MYabl44yMWbetAY3IMX12gWMCZeSLwSEi/GiAHF1SjqMAhoshuTJbg/GkM0xMQIBMj8D/Nfvq+6enZmEtFdhsSDRT66q6qnXr33varqJvoPFUHHWIw6IK6/2tbWdg8dMzBJKQXHwMCAG9UPhBDXW1tbA2gz6BhKZVAAGTs7Oy5um5+fP9fU1LQExv6xsbHGAzNDHrivr88KhUJegH+0ubkp19fXZVdX1w2v13tCAzdcbhPR3N7e3gnQuY0ry3L7nRcUcCAQuIE4MTs7a1IDi9CgXuQxCNBPNq6uyF+HWuTO5IvVjEP6uSMXlk1qYCOVSnFOgYvRLUtmVmbp9HfvUSQSebS5uXkRwIFGSF2zZFpaWoTtWEHCcgvDclPm+4/p3qvvK2CPx7M4MTERZB/QEYoCxVJxBhHsYvwn0+2WKiyLslc+pfuufSjD4fAjyG+Y03AUVyupsDRkR0eHcXBwYMuNKQi3BaYIt5uYce6Hz8XZ63MMzFKHp6am/HcrtQJZWVkhl8tVIju/KqkmgBxAdQXr3LUv6exPl5XUxWIxMjk5GRgZGbljxpWZ7u3tCX3PPCuALDEYk2Ytij9+RQ9ufFEx18LCgv9Ol5PjXsUQg9hSsXubLA3IwC7JoVgjSjfD9PDm1xVzjY6O+qnWlIeDshOxGzkzVRNgeW2mdl6FfXVkxiQsKv/8LfX9sUScY4yxCPAQpP5XjA0GwFJRTLPZrG5mUFcln6Ytc+Uq0CdcLgAvyf4/lxUw1vA3LDVVpexQedfW1ojdW2m1N4cKM8PllqLKUMI0SRhCsuVKtyLUv7XsuJo3kOA/mUt1Dg4OsqRqZ4JUPJZtIttAaqMAMzQarH8NCzwqSzcjghlrcynGh63jGinwA5VP9efIaBr2vqgBnGeltH+nJonCjPts4HPIb5iXE2nP1IPyXssniZNTBhVq0RhC3p6QTd/oHxLpk4/t356yelQawijrecnek6fKOI/9w8PDYQw1ND4+zs/LelAxNzcndIdRLRwzs5kIYT7wJL17q7D/2tPn0+jIcDunRDMt6/SUmbQT6Htra2vrAj+k+yugFRT9I6qVEGxCZwCY3784dillmubr6CqWSqUyD4a61CDclsVKSGM7TaGe8vl8yenpaTMajTqTqeSUjUSdnZ3O5iCrYUXwDM1ke+ni2NspwzAuoTGBweN8xdYZd7vdXE8jMqjnAFjEq06RQZhdT08P1RdONCWTSaEFdeSyqQfvFzO5XnrupdHfAfgm+rcxeBJdaUQS+28K9QQDcxv6eaHntWLSMdHu7q6zxWorVGnNZ6nQVmVJmSEDovoGWGyjixkmLcuK4mSKglEUk4kjYriPFwqFGF550qgzeA6/KTJTx6jVTNXRBt3ZvSpP1OSlmYNeev7lVxQgYqtcLicAmkQKohgsBnViuVwuBpZRXON8j3M2GY/HE5xTv9+fw9Ip4DknlzXAnFM2VDtMcBrXz7Cw+YFNMHoWAOdx/wTue7kf5uAXcR/CWxee7u5uD64tiGaERbZR/3Zb5E4fBj0FNpcRv8GVz4DVU2DyOKR7CLPu5rdFPagzoOmE3uxNDWJUgYl6UFEFCswWH2S6ANBVGCQKwDzu05hAEsDpWCyWw3MFsu0v6S6LySlcXV3lVxUTRnDl8/lfIGkGOcwhMuxWuPQgax9BDKicSUcoyq3sLrAqgxEPmgZ4AtImcWIkcPpk0MaAxUYAVhcT1m4GeCvuu/htD58YQWwY7ah7tNEa/lnBSeeBHeA2sh3ZdFyAXNRHlAawqNadx/edqrc/wwE66lv8/4XLX3gjac6XP/Y1AAAAAElFTkSuQmCC","); }")+".".concat("clarity-pointer-none"," { background: none; }")+".".concat("clarity-pointer-move"," { background-image: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAmCAYAAAA4LpBhAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASDSURBVHgB7VdPTCNlFH8z0/+FFmRatnFNiDGR4O4mBk08smZvXjjIxRueNME9eHGNxoLxSNwr4WyigYToQRJLjXDzQtDNmnhR4kWWAJm20ymddtrx94bvI9NBWAptsod9ycvM92fe73vv/b73fUP0DIlCfRQ1AMTtjwcHB1+gPgOT67oK6+TkZBjNbxRF+X1gYCCDPpX6IKdGAaTu7++HuG9tbe1ONBr9GR7r+Xy+98DsIRuemJiIjI6OJgH+3e7urruzs+OOjIw8SiaTNwRwz8OtQWPpdHoYoKt///ar2/jxaw84k8k8gt5YWVnRqEfi90BrtVph0Uetx0V67d9fqFAo3G6324XZ2VldLK4noK4AVqvVaoh8YZTAxWLxdiwW20CoM70IdceWicfjSpCxfuBEIrGxsLCQZR7QNcQDwFaRRhRmcXCSL9S3kN8CtlP2Oqz2QoWt4Q4NDanHx8cy3HQBMIe6sLS0pF811B7I5uYmhUKh1nmAQWAOteM4xcXFxczMzEzXHp+u9PDwUBHvymWBmVzr6+t6t9tJhtPzEEYuFaoguebm5nTqJOXFoMxEVCO50tMFXBaYcwwbGwAfRagv5bEKthK2igdUr9epG/EDYw//xKGmzoLz/6BQd3t7m5i9dAUJsJoLSPZp5PIGp6amXHjsVSaEirqVALk8jy/axx2hwAcMTlcRH/Ad5LfA24kEZ4JzudbySSJzyqDnomq37pH14utH/iUrCA5HCeRwHYXc8dzNNs5jfXp6uoD+e/Pz8zzfDYIqq6urihg4NyTaK2/Rw8fNo0/euWvBWI3TwGAiHW2RnjY7LRVjX+7t7d3nSWL8FFSKIj46I0r2ZXr4R/PoQT5f1TTtU3Q5OAbbbAxtV4BwXx07wUI5raJdTaVS5vLysmYYhlyMDJBHJBoeHpbFwQ0CfmuP04P8V1VVVb9AVwXGy/xE6SyHw2FuW9Aa2jYAHVx1HAZh78bGxs44wYkm0zS9PPrC1QE4+8HcPwD8HONPYNzEkAU1UX+raFcYmPswzhu9ISLmShIdHBx0lFfVH2s+SyWR/IBofgYvnmCIPTQjkYiBk8mARwYWU4aW8F5uNpslXHkstBncxjcOeyqJ6vfUO9oQd2avlyeKJj3A9z/8yAOE7uHKUgGoiRQYMFZCdEq2bZfgpYFnmd9xzprlcrnCOdV13cbWaWKezGVnAUBOmVBpkOAlPH/AxuYJu/DoPQDcxfubeB/ncZCDL+IpaDKgiVwul8AzDo1BI3RC1HPLIg+mYPQmvPke+hdY+S68ehuevIHQvYpV5/i2KIxKg5pUUew1AaL6wM4cl4oPFJjxFMJ0H6BbIIgBwAbeLSzABLBVKpVszGvSCf27r5dCNE7h1tYWX1U0ECHUaDT+REhryKENrTFbwdLj+skRxIAeM+ka4rGV2QWv2vCIjVoAryC0Jk6MCk6fGvoY0OkFoF80UDsG8AG8j/BtD78YWRSMNNoJQbSe/1Zw0tmwBB6kE0ZG+wXI4v1ECYAIdbKzf/+povypEui6t/jnwvIf5FVJ1Cj/1+UAAAAASUVORK5CYII=","); }"),o.appendChild(s)}o.style.left=e.x-4+"px",o.style.top=e.y-4+"px";var c="Pointer";switch(a){case 9:case 16:c="Click",n.drawClick(i,e.x,e.y,c),o.className="clarity-pointer-none";break;case 17:case 18:case 20:c="Touch",n.drawTouch(i,e.x,e.y,c),o.className="clarity-pointer-none";break;case 19:c="Touch Move",o.className="clarity-pointer-none";break;case 12:c="Mouse Move",o.className="clarity-pointer-move",n.addPoint({time:t.time,x:e.x,y:e.y}),n.targetId=e.target;break;default:o.className="clarity-pointer-move"}o.setAttribute("title","".concat(c," (").concat(e.x).concat("px",", ").concat(e.y).concat("px",")"))},this.hover=function(){if(n.targetId&&n.targetId!==n.hoverId){for(var t=0,e=n.hoverId?n.layout.element(n.hoverId):null;e&&t<7;)"removeAttribute"in e&&e.removeAttribute("clarity-hover"),e=e.parentElement,t++;t=0;for(var a=n.targetId?n.layout.element(n.targetId):null;a&&t<7;)"setAttribute"in a&&a.setAttribute("clarity-hover",""),a=a.parentElement,t++;n.hoverId=n.targetId}},this.addPoint=function(t){var e=n.points.length>0?n.points[n.points.length-1]:null;e&&t.x===e.x&&t.y===e.y?e.time=t.time:n.points.push(t)},this.drawTouch=function(t,e,a,n){var i=t.documentElement,r=t.createElement("DIV");r.className="clarity-touch",r.setAttribute("title","".concat(n," (").concat(e).concat("px",", ").concat(a).concat("px",")")),r.style.left=e-11+"px",r.style.top=a-11+"px",r.style.animation="disappear 1 1s",r.style.animationFillMode="forwards",i.appendChild(r);var o=r.cloneNode();o.className="clarity-touch-ring",o.style.left="-0.5px",o.style.top="-0.5px",o.style.animation="pulsate-touch 1 1s",o.style.animationFillMode="forwards",r.appendChild(o)},this.drawClick=function(t,e,a,i){var r=t.documentElement,o=t.createElement("DIV");o.className="clarity-click",o.setAttribute("title","".concat(i," (").concat(e).concat("px",", ").concat(a).concat("px",")")),o.style.left=e-11+"px",o.style.top=a-11+"px",r.appendChild(o);var s=o.cloneNode();s.className="clarity-click-ring",s.style.left="-0.5px",s.style.top="-0.5px",s.style.animation="pulsate-one 1 1s",s.style.animationFillMode="forwards",o.appendChild(s);var c=s.cloneNode();c.style.animation="pulsate-two 1 1s",o.appendChild(c),"undefined"!=typeof Audio&&(null===n.clickAudio&&(n.clickAudio=new Audio("data:video/webm;base64,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"),o.appendChild(n.clickAudio)),n.clickAudio.play())},this.overlay=function(){var t=n.state.window.document,e=t.documentElement,a=t.getElementById("clarity-interaction-canvas");return null===a&&((a=t.createElement("canvas")).id="clarity-interaction-canvas",a.width=0,a.height=0,e.appendChild(a)),a.width===e.clientWidth&&a.height===e.clientHeight||(a.width=e.clientWidth,a.height=e.clientHeight),a},this.match=function(t){for(var e=[],a=n.points.length-1;a>0&&(a>=n.scrollPointIndex&&t-n.points[a].time<3e3);a--)e.push(n.points[a]);return e.slice(0,75)},this.trail=function(t){var e=n.overlay();if(n.state.options.canvas&&e){var a=e.getContext("2d"),i=n.state.options.keyframes?n.curve(n.points.reverse()):n.curve(n.match(t));if(n.hover(),i.length>1){var r=i[0];a.clearRect(0,0,a.canvas.width,a.canvas.height);for(var o=i.length,s=e.offsetLeft,c=e.offsetTop,l=1;l<o;l++){var A=i[l],u=1-(l-1)/o,d=1-l/o,h=a.createLinearGradient(r.x,r.y,A.x,A.y);h.addColorStop(1,n.color(d)),h.addColorStop(0,n.color(u)),a.lineWidth=6*d,a.lineCap="round",a.lineJoin="round",a.strokeStyle=h,a.beginPath(),a.moveTo(r.x-s,r.y-c),a.lineTo(A.x-s,A.y-c),a.stroke(),a.closePath(),r=A}}n.state.options.keyframes&&(n.points=[])}},this.color=function(e){for(var a=t.TRAIL_START_COLOR,n=t.TRAIL_END_COLOR,i=[],r=0;r<3;r++)i[r]=Math.round(n[r]+e*(a[r]-n[r]));return"rgba(".concat(i[0],", ").concat(i[1],", ").concat(i[2],", ").concat(e,")")},this.curve=function(t){var e=.5,a=[],i=[];(a=t.slice(0)).unshift(t[0]),a.push(t[t.length-1]);for(var r=1;r<a.length-2;r++)for(var o=a[r].time,s=Math.max(Math.min(Math.round(n.distance(a[r],a[r-1])),10),1),c=0;c<=s;c++){var l={time:o,x:(a[r+1].x-a[r-1].x)*e,y:(a[r+1].y-a[r-1].y)*e},A={time:o,x:(a[r+2].x-a[r].x)*e,y:(a[r+2].y-a[r].y)*e},u=c/s,d=2*Math.pow(u,3)-3*Math.pow(u,2)+1,h=-2*Math.pow(u,3)+3*Math.pow(u,2),m=Math.pow(u,3)-2*Math.pow(u,2)+u,f=Math.pow(u,3)-Math.pow(u,2),p=d*a[r].x+h*a[r+1].x+m*l.x+f*A.x,g=d*a[r].y+h*a[r+1].y+m*l.y+f*A.y;i.push({time:o,x:p,y:g})}return i},this.distance=function(t,e){var a=t.x-e.x,n=t.y-e.y;return Math.sqrt(a*a+n*n)},this.state=e,this.layout=a}return t.TRAIL_START_COLOR=[242,97,12],t.TRAIL_END_COLOR=[249,220,209],t}(),f=function(){function a(n){var i=this;this.stylesheets=[],this.nodes={},this.events={},this.hashMap={},this.hashMapBeta={},this.state=null,this.reset=function(){i.nodes={},i.stylesheets=[],i.events={},i.hashMap={},i.hashMapBeta={}},this.get=function(t,e){return void 0===e&&(e=!1),t in i.hashMap&&i.hashMap[t].isConnected&&!1===e?i.hashMap[t]:t in i.hashMapBeta&&i.hashMapBeta[t].isConnected?i.hashMapBeta[t]:null},this.addToHashMap=function(t,e){i.hashMap[t.hash]=i.get(t.hash)||e,i.hashMapBeta[t.hashBeta]=i.get(t.hashBeta)||e},this.resize=function(t,e,a){t&&1===t.nodeType&&e&&a&&(t.style.width=e+"px",t.style.height=a+"px",t.style.boxSizing="border-box")},this.element=function(t){return null!==t&&t>0&&t in i.nodes?i.nodes[t]:null},this.dom=function(a){return t(i,void 0,void 0,(function(){var t;return e(this,(function(e){switch(e.label){case 0:return a&&((t=this.state.window.document)&&t.documentElement)?(t.documentElement.style.visibility="hidden",this.markup(a),[4,Promise.all(this.stylesheets)]):[3,2];case 1:e.sent(),t.documentElement.style.visibility="visible",e.label=2;case 2:return[2]}}))}))},this.exists=function(t){if(t){var e=i.get(t);if(e){var a=e.getBoundingClientRect();return a&&a.width>0&&a.height>0}}return!1},this.markup=function(t){for(var e=t.data,n=t.event,r=i.state.window.document,o=function(t){var e=i.element(t.parent),o=i.element(t.previous),s=i.insertAfter,c=t.tag;switch(c&&0===c.indexOf("iframe:")&&(c=t.tag.substr("iframe:".length)),c){case"*D":var l=c!==t.tag?e?e.contentDocument:null:r;l&&l===r&&5===n&&i.reset(),"undefined"!=typeof XMLSerializer&&l&&(l.open(),l.write((new XMLSerializer).serializeToString(l.implementation.createDocumentType(t.attributes.name,t.attributes.publicId,t.attributes.systemId))),l.close());break;case"*P":i.nodes[t.id]=e,i.addToHashMap(t,e);break;case"*S":if(e){var A=i.element(t.id);if(A=A||e.attachShadow({mode:"open"}),"style"in t.attributes){var u=r.createElement("style");A.firstChild&&"clarity-adopted-style"===A.firstChild.id&&(u=A.firstChild),u.id="clarity-adopted-style",u.textContent=t.attributes.style,A.appendChild(u)}i.nodes[t.id]=A,i.addToHashMap(t,A)}break;case"*T":var d=i.element(t.id);(d=d||r.createTextNode(null)).nodeValue=t.value,s(t,e,d,o);break;case"*M":var h=i.element(t.id);h&&h.nodeType===Node.ELEMENT_NODE&&h.setAttribute("data-clarity-suspend","");break;case"HTML":var m=c!==t.tag?e?e.contentDocument:null:r;if(null!==m){var f=i.element(t.id);if(null===f){f=m.implementation.createHTMLDocument("").documentElement;var p=m.importNode(f,!0);m.replaceChild(p,m.documentElement),m.head&&m.head.parentNode.removeChild(m.head),m.body&&m.body.parentNode.removeChild(m.body)}i.setAttributes(m.documentElement,t),5!==n||e||(m.documentElement.style.visibility="hidden"),i.nodes[t.id]=m.documentElement,i.addToHashMap(t,m.documentElement)}break;case"HEAD":var g=i.element(t.id);if(null===g){if(g=r.createElement(t.tag),t.attributes&&"*B"in t.attributes){var v=r.createElement("base");v.href=t.attributes["*B"],g.appendChild(v)}var w=r.createElement("style");w.innerText=i.getCustomStyle(),g.appendChild(w)}i.setAttributes(g,t),s(t,e,g,o);break;case"LINK":var y=i.element(t.id);y=y||i.createElement(r,t.tag),t.attributes||(t.attributes={}),i.setAttributes(y,t),"rel"in t.attributes&&"stylesheet"===t.attributes.rel&&i.stylesheets.push(new Promise((function(t){y.onload=y.onerror=i.style.bind(i,y,t),setTimeout(t,a.TIMEOUT)}))),s(t,e,y,o);break;case"STYLE":var b=i.element(t.id);b=b||r.createElement(t.tag),i.setAttributes(b,t),b.textContent=t.value,s(t,e,b,o),i.style(b);break;case"IFRAME":var x=i.element(t.id);x=x||i.createElement(r,t.tag),t.attributes||(t.attributes={}),i.setAttributes(x,t),s(t,e,x,o);break;default:var E=i.element(t.id);E=E||i.createElement(r,t.tag),i.setAttributes(E,t),i.resize(E,t.width,t.height),s(t,e,E,o)}t.id&&(i.events[t.id]=t)},s=0,c=e;s<c.length;s++){o(c[s])}},this.style=function(t,e){void 0===e&&(e=null);try{for(var a=t.sheet,n=a?a.cssRules:[],i=0;i<n.length;i++)if(n[i].cssText.indexOf(":hover")>=0){var r=n[i].cssText.replace(/:hover/g,"[".concat("clarity-hover","]"));a.removeRule(i),a.insertRule(r,i)}}catch(t){}e&&e()},this.createElement=function(t,e){if(e&&0===e.indexOf("svg:"))return t.createElementNS("http://www.w3.org/2000/svg",e.substr("svg:".length));try{return t.createElement(e)}catch(a){return console.warn("Exception encountered while creating element ".concat(e,": ").concat(a)),t.createElement("clarity-unknown")}},this.insertAfter=function(t,e,a,n){if(!i.events[t.id]||i.events[t.id].parent!==t.parent||i.events[t.id].previous!==t.previous){var r=n&&n.parentElement===e?n.nextSibling:null;r=null===n&&e?i.firstChild(e):r,i.insertBefore(t,e,a,r)}},this.firstChild=function(t){var e=t.firstChild;return e&&1===e.nodeType&&"BASE"===e.tagName?e.nextSibling:e},this.insertBefore=function(t,e,a,n){if(null!==e){n=n&&n.parentElement!==e?null:n;try{e.insertBefore(a,n)}catch(n){console.warn("Node: "+a+" | Parent: "+e+" | Data: "+JSON.stringify(t)),console.warn("Exception encountered while inserting node: "+n)}}else null===e&&null!==a.parentElement&&a.parentElement.removeChild(a);i.nodes[t.id]=a,i.addToHashMap(t,a)},this.setAttributes=function(t,e){var a=e.attributes||{},n=!1;a["data-clarity-id"]="".concat(e.id),a["data-clarity-hash"]="".concat(e.hash),a["data-clarity-hashbeta"]="".concat(e.hashBeta);var i=1===t.nodeType?t.tagName.toLowerCase():null;if(t.attributes)for(var r=t.attributes.length;t.attributes&&r>0;)"clarity-hover"!==t.attributes[0].name&&t.removeAttribute(t.attributes[0].name),r--;for(var o in a)if(void 0!==a[o])try{var s=a[o];if(0===o.indexOf("xlink:"))t.setAttributeNS("http://www.w3.org/1999/xlink",o,s);else if(0===o.indexOf("*O"))n=!0;else if(0===o.indexOf("*"));else if("iframe"===i&&(0===o.indexOf("src")||0===o.indexOf("allow"))||"sandbox"===o)t.setAttribute("data-clarity-".concat(o),s);else if("img"!==i||0!==o.indexOf("src")||null!==s&&0!==s.length)t.setAttribute(o,s);else{t.setAttribute(o,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=");var c="l";e.width&&(c=e.width<=200?"m":e.width<=75?"s":c),t.setAttribute("data-clarity-hide",c)}}catch(e){console.warn("Node: "+t+" | "+JSON.stringify(a)),console.warn("Exception encountered while adding attributes: "+e)}!1===n&&"iframe"===i&&"function"==typeof t.setAttribute&&t.setAttribute("data-clarity-unavailable",""),"img"!==i||t.hasAttribute("alt")||t.setAttribute("alt",""),"form"!==i&&"input"!==i||(t.hasAttribute("autocomplete")&&t.removeAttribute("autocomplete"),t.setAttribute("autocomplete","new-password"))},this.getCustomStyle=function(){return"".concat("img","[").concat("data-clarity-hide","] { background-color: #CCC; background-image: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANvSURBVHgB7Ve9VhpREJ5dU6BNVqt0wS6dpEuX9QmiTyA+gfgE4BOgZSrJE4hlKvEJxDKVa2caoaSSfB87F4Z7dtmFhFTMOfcMe52Z+935u6PIhjb0dxTIihRFUQ2M6z0/dXuI9ay8PwTJklQaEADw0JMgCI4USFSkMx6Pe2BdrFtgS6QEFQICjirYGYDUc0AMcXCCvw8XAVVwHQD7IasAokfCMGzB0NmCA1o44N7T+wpwlwouT+80z2NbOWAaMHqDn7FuJcorapRATkej0bOvyz2s7zs7O2L0GbYXrCrscjUqlUoAuZ6vH3hAIr3diW4xHC3wW+w/KZhLgDmXEgRzbR6udvbBD/DdITB3UewfWm+FRpnIHwyYLo1A+Aq/vzkDWFdSni4krTjm1RnDOxgM9nFOS//OM++0YmeAFMydQw4gDSgeu7LVyprE3489je3u7t5waQFMifrQ6ehn7PZfX18v6BkFOwcq9MDQQKxeseRu0PXARJprBHxED2t7sPSol6p5YHs467OkXo8cqBA/rmXmmVO/atzZzk4G0Kond+DJJJLmStc3Sm+rpxLVbYcEoRu8xbWNp9U1B1rqyzzIRNQj5tAe84ZVKVmGZ6BoK5Vh2JADT1hjLny3rBL27nS/7RtUXZdDmb1H5Ug1rDgjrFMKrGGb2CzPt7e3C95gb2+vqeU/1Mor/UZpg21og50CsfYzATllsLY+E6TE60OTPoUqOV8EQNKKmuTTgifHAmO4GOokyDFah2BTTAOTNFcmIQFI3qyVoxurp+dIL3ZF72bYdzL1zKcDLb2P1n4rqUfcg/nB3Cre3t6uQeY3ZBOri72q87B7ULHY035CdmTs85H9BVlR23yWumVf+6YJo0/MK7qcI8al9RCqq9R4w4ICq9JDYZEwk44ly2TWFtGT+VKnF2PwB6cis8sUzkw+vSsrqNXQ0eUmxo+S5gEPfvQBSTpNLjU1rjzCLiKEYAAWMQRFA5m2GzdJxIUhW5H6yutFguhRToapcb8WQGwL5MwtDnt5cvQOZJuq0yHfkjUQWwHbAn5+AqgvKHGW/IsPRquR+ZdgcQIdrStkYh5tN1ocZYCpSto2Dqezl6yRMga/yQSpXToyYFzOrReQAcUhzp8E+E4eWzD/lTgxuPFGR5Wlm+Y/J3qL/7fJhja0RvoDR4Tn4Lo/zi8AAAAASUVORK5CYII=","); background-repeat:no-repeat; background-position: center; }")+"".concat("img","[").concat("data-clarity-hide","=").concat("s","] { background-size: 18px 18px; }")+"".concat("img","[").concat("data-clarity-hide","=").concat("m","] { background-size: 24px 24px; }")+"".concat("img","[").concat("data-clarity-hide","=").concat("l","] { background-size: 36px 36px; }")+"".concat("iframe","[").concat("data-clarity-unavailable","] { background: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAiCAYAAAAge+tMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAU6SURBVHgBzVg7TyNJEG6bh5AIjpOQeCXj7LL18pDIdpztRYuzy7CjCzG/ADu8CO8vwEQXrgkvws6QeNiEFzEk4GznIFnxvO/zVntrhx6/kLxb0mh6uqurvq6urqqehHklra+ve3d3dx8SiUT6+fk5ja4ZtGf4tjzoD9AXoBmiXUsmk+cnJyc18wpKmCFodXXVx8t/enraBCDPDEchniqeg9PT06oZkAYCTsCw2A6afjc+8IQCjGR3oBtxR/bHx8crR0dHgemD+gIugPfQ9OJ4BGwF72qj0ajrsTQI7rEFcDnTndoLeHh4KDebzdAMC5z+e39/T8B+Nz6AbcJtslAWdOMDfg8LONTuJf7vRVgDPEW40H6crLG4AVi58Pj4+Deav0WUFIjBfDt8NYD+HaBbpge1Wq1wbm5uH+DXjewe5IXQ85buxAMurJS9sbi46IG/jnlforKS0Q7f92dWVlYOAXLXgqMb4CmcnZ2l8E5YpVwIlGZ7basm8nIO50qXNzY29g6y8+hP0RCKPYexBne+K3Ay3N7eNoxyDViziicFwR+la8uOwULFQUBr8LB6XgOU/gDukcGittUY3bUBY25oGR0fX1tbSwPgoVFWxquoAFufv5DxgDvgAsZdu7m52WR7cnLyIC5SAMxnqw+6PRzqSzvmOg9coPX7ZAzoAN9vNWgSQKfVpzP2yq5dQGGZD61F+S5e6KnYNkD6eozWBwZav6m6K1hs2yBJB2hGiIwrQmDsjfp8MS6L2zMqa7INebvGTedKthcdtODN90Yi+I2kCO0owsq3e4U1EqOBq98FwNWnxgKCgd66a5znAe6RjYDfGsdJzmtfgqBPWFE+Jg2HSmFcNuS8QqSv5mLkwQewiumDBKcn87JJ5UuB8BDQJ8TxYnQyFnep2ukYMCXzvXUY57ddvIOGUeIUNw47UQWneEYsrwFVJiYmSjYqkAdx9bOMMR6n4pSTF7J+0ZHCRVKwfaA7SXUZ0g3xNJn+j4+Pm655L1L+8vLyrmRHS4FR6ZfJyUichyKGy5IZgvot2EA1GC8fDanOWgXgCwBPodqPqxCwjQKIljmUPiaSTJxVuoAuCui+CXhKqOGLne84xpgEQKqoSwMpwIIy/ZajUdBytspSVV6KblaT79AsaP0afM+yFtbP4bXT48LAWqYEtymbHrIgZy/SnYurAsV4O7ocRjvD21Nf9bgIYMbK9VgAq8f2rYYHbHp6OqjVau3DK+UCXcw1P9ethI2cO9YzqYFuQLIA3/TegTYxpbPqE+UdazM7o82suWn6AC8Rr2F10upjZgBiPX19fd3E83F+fr5mviakKQiad/FDWfHq6upftlFbM0N7AvwP1kHoY5Fmzwrr7wCyzx16vywsLBDwe9s31GU5ShKz30gOmLGWQZwv2fIBYfRZ2JnCf7Vz0V8xyvIsaV1nReeQ9oXGjIDoYlB6IZ811tx6PAo+Gvoswd0urFGS5icgLCSHV8e/GS5dJYemUQHXxZnnYugFXtzRzg1HApz1jC3iqFzqkxfUDTxcTc9pDhRVXkOICrSYb78RPQ5cfOivRqKNv7S0lMAi/lTRqziSw0mSqMADauufbLdfb45ir032rjsyi0ssnlJWfw/Ltlxxm4T+fyR2+7qfi+GckQEXMHWA9c3XRDRl5KcPXOE/JKrA8vEvwezsLH8a5YwqEWDtMqz9F9sjcxVL4jJM/RuRoVB+iZjob2qSgO7cpEYO3BJrfry2etU8XAx4XtyBfxhwki3aAGyT9b39HS3/KJsoGSr4rLuuh/8DlPszm7LNbUUAAAAASUVORK5CYII=",") no-repeat center center, url('").concat('data:image/svg+xml,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"><rect width="100%" height="100%" style="fill:rgb(204,204,204)"/><line stroke-dasharray="5, 5" x1="0" y1="100%" x2="100%" y2="0" style="stroke:rgb(119,119,119);stroke-width:1"/><line stroke-dasharray="5, 5" x1="0" y1="0" x2="100%" y2="100%" style="stroke:rgb(119,119,119);stroke-width:1"/><circle cx="50%" cy="50%" r="40" fill="rgb(204,204,204)"/></svg>',"'); }")+"*[".concat("data-clarity-suspend","] { filter: grayscale(100%); }")},this.state=n}return a.TIMEOUT=3e3,a}(),p=function(){function a(){var a=this;this._state=null,this.renderTime=0,this.dom=function(n){return t(a,void 0,void 0,(function(){return e(this,(function(t){switch(t.label){case 0:return[4,this.layout.dom(n)];case 1:return t.sent(),[2]}}))}))},this.get=function(t){return a.layout.get(t)},this.html=function(t,e,n,i){if(void 0===n&&(n=null),t&&t.length>0&&e){var r=a.merge(t);for(a.setup(e,{version:t[0].envelope.version,dom:r.dom});r.events.length>0&&!1===a.layout.exists(n);){var o=r.events.shift();switch(o.event){case 6:var s=o;if(a.renderTime=s.time,i&&a.renderTime>i)break;a.layout.markup(s)}}}return a},this.time=function(){return a.renderTime},this.clickmap=function(t){if(null===a.state)throw new Error('Initialize heatmap by calling "html" or "setup" prior to making this call.');a.heatmap.click(t)},this.clearmap=function(){if(null===a.state)throw new Error('Initialize heatmap by calling "html" or "setup" prior to making this call.');a.heatmap.clear()},this.scrollmap=function(t,e,n){if(null===a.state)throw new Error('Initialize heatmap by calling "html" or "setup" prior to making this call.');a.heatmap.scroll(t,e,n)},this.merge=function(t){var e={timestamp:null,envelope:null,dom:null,events:[]};t=t.sort(a.sortPayloads),a.enrich=a.enrich||new d,a.enrich.reset();for(var n=0,i=t;n<i.length;n++){var r=i[n];e.timestamp=e.timestamp?e.timestamp:r.timestamp,e.envelope=r.envelope;for(var o=0,s=Object.keys(r);o<s.length;o++){var c=s[o],l=r[c];if(Array.isArray(l))for(var A=0,u=l;A<u.length;A++){var h=u[A];if("dom"===c){var m=a.enrich.selectors(h);5===h.event?e.dom=m:e.events.push(h)}else e.events.push(h)}}}return e.events=e.events.sort(a.sortEvents),e},this.setup=function(t,e){return a.reset(),e.canvas=!("canvas"in e)||e.canvas,e.keyframes="keyframes"in e&&e.keyframes,a._state={window:t,options:e},a.enrich=new d,a.data=new n(a.state),a.layout=new f(a.state),a.heatmap=new h(a.state,a.layout),a.interaction=new m(a.state,a.layout),e.dom&&a.layout.dom(e.dom),a},this.render=function(t){if(null===a.state)throw new Error('Initialize visualization by calling "setup" prior to making this call.');for(var e=0,n=0,i=t;n<i.length;n++){var r=i[n];switch(e=r.time,r.event){case 0:a.data.metric(r);break;case 7:a.data.region(r);break;case 6:a.layout.markup(r);break;case 13:case 14:case 12:case 15:case 9:case 16:case 17:case 20:case 18:case 19:a.interaction.pointer(r);break;case 28:a.interaction.visibility(r);break;case 27:a.interaction.input(r);break;case 21:a.interaction.selection(r);break;case 11:a.interaction.resize(r);break;case 10:a.interaction.scroll(r)}}t.length>0&&a.interaction.trail(e)},this.reset=function(){var t,e,n,i,r;null===(t=a.data)||void 0===t||t.reset(),null===(e=a.interaction)||void 0===e||e.reset(),null===(n=a.layout)||void 0===n||n.reset(),null===(i=a.heatmap)||void 0===i||i.reset(),null===(r=a.enrich)||void 0===r||r.reset(),a._state=null,a.renderTime=0},this.sortEvents=function(t,e){return t.time-e.time},this.sortPayloads=function(t,e){return t.envelope.sequence-e.envelope.sequence}}return Object.defineProperty(a.prototype,"state",{get:function(){return this._state},enumerable:!1,configurable:!0}),a}(),g=(A=new p).state,v=A.dom,w=A.get,y=A.html,b=A.time,x=A.clickmap,E=A.clearmap,C=A.scrollmap,k=A.merge,I=A.setup,B=A.render,R=Object.freeze({__proto__:null,state:g,dom:v,get:w,html:y,time:b,clickmap:x,clearmap:E,scrollmap:C,merge:k,setup:I,render:B});"undefined"!=typeof window&&(void 0!==window.clarity&&null!==window.clarity||(window.clarity={}),window.clarity.visualize=R)}();
1
+ !function(){"use strict";function t(t,e,a,n){return new(a||(a=Promise))((function(i,r){function o(t){try{c(n.next(t))}catch(t){r(t)}}function s(t){try{c(n.throw(t))}catch(t){r(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof a?e:new a((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))}function e(t,e){var a,n,i,r,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(r){return function(s){return function(r){if(a)throw new TypeError("Generator is already executing.");for(;o;)try{if(a=1,n&&(i=2&r[0]?n.return:r[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,r[1])).done)return i;switch(n=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return o.label++,{value:r[1],done:!1};case 5:o.label++,n=r[1],r=[0];continue;case 7:r=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==r[0]&&2!==r[0])){o=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){o.label=r[1];break}if(6===r[0]&&o.label<i[1]){o.label=i[1],i=r;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(r);break}i[2]&&o.ops.pop(),o.trys.pop();continue}r=e.call(t,o)}catch(t){r=[6,t],n=0}finally{a=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,s])}}}var a,n=function(){function t(e){var a=this;this.regionMap={},this.regions={},this.metrics={},this.lean=!1,this.reset=function(){a.metrics={},a.lean=!1,a.regions={},a.regionMap={}},this.metric=function(e){if(a.state.options.metadata){var n=[],i=[];for(var r in e.data)if("number"==typeof e.data[r]){r in a.metrics||(a.metrics[r]=0);var o=parseInt(r,10);!(r in t.METRIC_MAP)||"html-price"!==t.METRIC_MAP[r].unit&&"ld-price"!==t.METRIC_MAP[r].unit?a.metrics[r]+=e.data[r]:a.metrics[r]=e.data[r],a.lean=1===o&&0===e.data[r]||a.lean}for(var s in a.metrics)if(s in t.METRIC_MAP){r=a.metrics[s];var c=t.METRIC_MAP[s],l="unit"in c?c.unit:"";n.push("<li><h2>".concat(a.value(r,l),"<span>").concat(a.key(l),"</span></h2>").concat(c.name,"</li>"))}for(var A in a.regions){var u=a.regions[A],d=10===u.visibility?"visible":20===u.interaction?"clicked":"";i.push('<span class="'.concat(d,'">').concat(A,"</span>"))}a.state.options.metadata.innerHTML="<ul>".concat(n.join(""),"</ul><div>").concat(i.join(""),"</div>")}},this.key=function(t){switch(t){case"html-price":case"ld-price":case"cls":return"";default:return t}},this.value=function(t,e){switch(e){case"KB":return Math.round(t/1024);case"s":return Math.round(t/10)/100;case"cls":return t/1e3;case"html-price":return t/100;default:return t}},this.state=e}return t.prototype.region=function(t){for(var e=0,a=t.data;e<a.length;e++){var n=a[e];n.name in this.regions||(this.regions[n.name]={interaction:n.interaction,visibility:n.visibility}),this.regionMap[n.id]=n.name}},t.METRIC_MAP=((a={})[2]={name:"Total Bytes",unit:"KB"},a[4]={name:"Total Cost",unit:"ms"},a[3]={name:"Layout Cost",unit:"ms"},a[8]={name:"LCP",unit:"s"},a[9]={name:"CLS",unit:"cls"},a[7]={name:"Long Tasks"},a[24]={name:"Cart Total",unit:"html-price"},a[13]={name:"Product Price",unit:"ld-price"},a[6]={name:"Thread Blocked",unit:"ms"},a),t}();var i="load,active,fixed,visible,focus,show,collaps,animat".split(","),r={};function o(t){if(!t)return!1;if(i.some((function(e){return t.toLowerCase().indexOf(e)>=0})))return!1;for(var e=0;e<t.length;e++){var a=t.charCodeAt(e);if(a>=48&&a<=57)return!1}return!0}var s=1,c=[],l=[],A={};var u,d={hash:function(t){for(var e=5381,a=e,n=0;n<t.length;n+=2){if(e=(e<<5)+e^t.charCodeAt(n),n+1<t.length)a=(a<<5)+a^t.charCodeAt(n+1)}return Math.abs(e+11579*a).toString(36)},selector:Object.freeze({__proto__:null,reset:function(){r={}},get:function(t,e){var a=t.attributes,n=t.prefix?t.prefix[e]:null,i=0===e?"".concat("~").concat(t.position-1):":nth-of-type(".concat(t.position,")");switch(t.tag){case"STYLE":case"TITLE":case"LINK":case"META":case"*T":case"*D":return"";case"HTML":return"HTML";default:if(null===n)return"";n="".concat(n).concat(">"),t.tag=0===t.tag.indexOf("svg:")?t.tag.substr("svg:".length):t.tag;var s="".concat(n).concat(t.tag).concat(i),c="id"in a&&a.id.length>0?a.id:null,l="BODY"!==t.tag&&"class"in a&&a.class.length>0?a.class.trim().split(/\s+/).filter((function(t){return o(t)})).join("."):null;if(l&&l.length>0)if(0===e){var A="".concat(function(t){for(var e=t.split(">"),a=0;a<e.length;a++){var n=e[a].indexOf("~"),i=e[a].indexOf(".");e[a]=e[a].substring(0,i>0?i:n>0?n:e[a].length)}return e.join(">")}(n)).concat(t.tag).concat(".").concat(l);A in r||(r[A]=[]),r[A].indexOf(t.id)<0&&r[A].push(t.id),s="".concat(A).concat("~").concat(r[A].indexOf(t.id))}else s="".concat(n).concat(t.tag,".").concat(l).concat(i);return s=c&&o(c)?"".concat(function(t){var e=t.lastIndexOf("*S"),a=t.lastIndexOf("".concat("iframe:").concat("HTML")),n=Math.max(e,a);if(n<0)return"";return t.substring(0,t.indexOf(">",n)+1)}(n)).concat("#").concat(c):s,s}}}),get:function(t){var e=function(t,e){if(void 0===e&&(e=!1),null===t)return null;var a=null.get(t);return!a&&e&&(a=s++,null.set(t,a)),a||null}(t);return e in l?l[e]:null},getNode:function(t){return t in c?c[t]:null},lookup:function(t){return t in A?A[t]:null}},h=function(){var t=this;this.reset=function(){t.children={},t.nodes={},d.selector.reset()},this.selectors=function(e){return e.data.forEach((function(e){var a=t.nodes[e.parent],n=t.children[e.parent]||[],i=t.nodes[e.id]||{tag:e.tag,parent:e.parent,previous:e.previous},r=e.attributes||{};if(i.parent!==e.parent){var o=null===e.previous?0:n.indexOf(e.previous)+1;if(n.splice(o,0,e.id),i.parent!==e.parent){var s=t.children[i.parent],c=s?s.indexOf(e.id):-1;c>=0&&t.children[i.parent].splice(c,1)}i.parent=e.parent}else n.indexOf(e.id)<0&&n.push(e.id);i.position=t.position(e.id,e.tag,i,n,n.map((function(e){return t.nodes[e]})));var l={id:e.id,tag:e.tag,prefix:a?[a.alpha,a.beta]:null,position:i.position,attributes:r},A=d.selector.get(l,0);e.selectorAlpha=A.length>0?A:null,e.hashAlpha=A.length>0?d.hash(e.selectorAlpha):null;var u=d.selector.get(l,1);e.selectorBeta=u.length>0?u:null,e.hashBeta=u.length>0?d.hash(e.selectorBeta):null,i.alpha=A,i.beta=u,t.nodes[e.id]=i,e.parent&&(t.children[e.parent]=n)})),e},this.position=function(t,e,a,n,i){a.position=1;for(var r=n?n.indexOf(t):-1;r-- >0;)if(e===i[r].tag){a.position=i[r].position+1;break}return a.position},this.reset()},m=function(){function t(e,a){var n=this;this.data=null,this.scrollData=null,this.max=null,this.offscreenRing=null,this.gradientPixels=null,this.timeout=null,this.observer=null,this.state=null,this.layout=null,this.scrollAvgFold=null,this.addScrollMakers=!1,this.reset=function(){if(n.data=null,n.scrollData=null,n.max=null,n.offscreenRing=null,n.gradientPixels=null,n.timeout=null,n.observer&&(n.observer.disconnect(),n.observer=null),n.state&&n.state.window){var t=n.state.window;t.removeEventListener("scroll",n.redraw,!0),t.removeEventListener("resize",n.redraw,!0)}},this.clear=function(){var t=n.state.window.document,e=n.state.window,a=t.getElementById("clarity-heatmap-canvas"),i=t.documentElement;a&&(a.width=i.clientWidth,a.height=i.clientHeight,a.style.left=e.pageXOffset+"px",a.style.top=e.pageYOffset+"px",a.getContext("2d").clearRect(0,0,a.width,a.height)),n.reset()},this.scroll=function(t,e,a){n.scrollData=n.scrollData||t,n.scrollAvgFold=null!=e?e:n.scrollAvgFold,n.addScrollMakers=null!=a?a:n.addScrollMakers;var i=n.overlay(),r=i.getContext("2d"),o=n.state.window.document,s=o.body,c=o.documentElement,l=Math.max(s.scrollHeight,s.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight);if(i.height=Math.min(l,4e4),i.style.top="0px",i.width>0&&i.height>0&&n.scrollData){for(var A=r.createLinearGradient(0,0,0,i.height),u=0,d=n.scrollData;u<d.length;u++){var h=d[u],m=1-h.cumulativeSum/n.scrollData[0].cumulativeSum,f=h.scrollReachY/100*(l/i.height),p=240*m;f<=1&&A.addColorStop(f,"hsla(".concat(p,", 100%, 50%, 0.6)"))}r.fillStyle=A,r.fillRect(0,0,i.width,i.height),n.addScrollMakers&&n.addInfoMarkers(r,n.scrollData,i.width,i.height,n.scrollAvgFold)}},this.addInfoMarkers=function(t,e,a,i,r){n.addMarker(t,a,"Average Fold",r,84);for(var o=function(r){var o=e.reduce((function(t,e){return Math.abs(e.percUsers-r)<Math.abs(t.percUsers-r)?e:t}));if(o.percUsers>=r-2&&o.percUsers<=r+2){var s=o.scrollReachY/100*i;n.addMarker(t,a,"".concat(r,"%"),s,35)}},s=0,c=[75,50,25];s<c.length;s++){o(c[s])}},this.addMarker=function(t,e,a,n,i){t.beginPath(),t.moveTo(0,n),t.lineTo(e,n),t.setLineDash([2,2]),t.lineWidth=1,t.strokeStyle="white",t.stroke(),t.fillStyle="#323130",t.fillRect(0,n-16,i,32),t.fillStyle="white",t.font="500 12px Segoe UI",t.fillText(a,5,n+5)},this.click=function(t){n.data=n.data||t;var e=n.transform(),a=n.overlay(),i=a.getContext("2d");if(a.width>0&&a.height>0){for(var r=n.getRing(),o=n.getGradient(),s=0,c=e;s<c.length;s++){var l=c[s];i.globalAlpha=l.a,i.drawImage(r,l.x-20,l.y-20)}for(var A=i.getImageData(0,0,a.width,a.height),u=0;u<A.data.length;u+=4){var d=A.data[u+3];if(d>0){var h=4*(d-1);A.data[u]=o.data[h],A.data[u+1]=o.data[h+1],A.data[u+2]=o.data[h+2]}}i.putImageData(A,0,0)}},this.overlay=function(){var t=n.state.window.document,e=n.state.window,a=t.documentElement,i=t.getElementById("clarity-heatmap-canvas");return null===i&&((i=t.createElement("CANVAS")).id="clarity-heatmap-canvas",i.width=0,i.height=0,i.style.position="absolute",i.style.zIndex="".concat(2147483647),a.appendChild(i),e.addEventListener("scroll",n.redraw,!0),e.addEventListener("resize",n.redraw,!0),n.observer=n.state.window.ResizeObserver?new ResizeObserver(n.redraw):null,n.observer&&n.observer.observe(t.body)),i.width=a.clientWidth,i.height=a.clientHeight,i.style.left=e.pageXOffset+"px",i.style.top=e.pageYOffset+"px",i.getContext("2d").clearRect(0,0,i.width,i.height),i},this.getRing=function(){if(null===n.offscreenRing){var t=n.state.window.document;n.offscreenRing=t.createElement("CANVAS"),n.offscreenRing.width=40,n.offscreenRing.height=40;var e=n.offscreenRing.getContext("2d");e.shadowOffsetX=40,e.shadowBlur=10,e.shadowColor="black",e.beginPath(),e.arc(-20,20,10,0,2*Math.PI,!0),e.closePath(),e.fill()}return n.offscreenRing},this.getGradient=function(){if(null===n.gradientPixels){var e=n.state.window.document.createElement("CANVAS");e.width=1,e.height=256;for(var a=e.getContext("2d"),i=a.createLinearGradient(0,0,0,256),r=1/t.COLORS.length,o=0;o<t.COLORS.length;o++)i.addColorStop(r*(o+1),t.COLORS[o]);a.fillStyle=i,a.fillRect(0,0,1,256),n.gradientPixels=a.getImageData(0,0,1,256)}return n.gradientPixels},this.redraw=function(t){n.data?(n.timeout&&clearTimeout(n.timeout),n.timeout=setTimeout(n.click,30)):n.scrollData&&"scroll"!=t.type&&(n.timeout&&clearTimeout(n.timeout),n.timeout=setTimeout(n.scroll,30))},this.transform=function(){for(var t=[],e={},a=0,i=n.state.window&&n.state.window.document?n.state.window.document.documentElement.clientHeight:0,r=0,o=n.data;r<o.length;r++){var s=o[r],c=n.layout.get(s.hash);if(c&&"function"==typeof c.getBoundingClientRect){var l=c.getBoundingClientRect(),A=n.visible(c,l,i);if(null===n.max||A)for(var u=0;u<s.points;u++){var d=Math.round(l.left+s.x[u]/32767*l.width),h=Math.round(l.top+s.y[u]/32767*l.height),m="".concat(d).concat("X").concat(h).concat("X").concat(A?1:0);e[m]=m in e?e[m]+s.clicks[u]:s.clicks[u],a=Math.max(e[m],a)}}}n.max=n.max?n.max:a;for(var f=0,p=Object.keys(e);f<p.length;f++){var g=p[f],v=g.split("X"),w=Math.min(e[g]/n.max+.15,1);"1"===v[2]&&t.push({x:parseInt(v[0],10),y:parseInt(v[1],10),a:w})}return t},this.visible=function(t,e,a){var i=n.state.window.document,r=e.height>a;if(!1===r&&e.width>0&&e.height>0)for(;!r&&i;){for(var o=null,s=0,c=i.elementsFromPoint(e.left+e.width/2,e.top+e.height/2);s<c.length;s++){var l=c[s];if(!("CANVAS"===l.tagName||l.id&&0===l.id.indexOf("clarity-"))){r=l===t,o=l.shadowRoot&&l.shadowRoot!=i?l.shadowRoot:null;break}}i=o}return r&&e.bottom>=0&&e.top<=a},this.state=e,this.layout=a}return t.COLORS=["blue","cyan","lime","yellow","red"],t}(),f=function(){function t(e,a){var n=this;this.hoverId=null,this.targetId=null,this.points=[],this.scrollPointIndex=0,this.clickAudio=null,this.reset=function(){n.points=[],n.scrollPointIndex=0,n.clickAudio=null,n.hoverId=null,n.targetId=null,n.layout.reset()},this.scroll=function(t){var e=t.data,a=n.state.window.document,i=a.documentElement,r=n.layout.element(e.target)||a.body,o=r.scrollHeight>r.clientHeight||r.scrollWidth>r.clientWidth;if(r&&o&&r.scrollTo(e.x,e.y),r===i||r===a.body){o||n.state.window.scrollTo(e.x,e.y);var s=n.overlay();s&&(s.style.left=e.x+"px",s.style.top=e.y+"px",s.width=i.clientWidth,s.height=i.clientHeight),n.scrollPointIndex=n.points.length}},this.resize=function(t){var e=t.data,a=e.width,i=e.height;n.state.options.onresize&&n.state.options.onresize(a,i)},this.visibility=function(t){var e=n.state.window.document;e&&e.documentElement&&"visible"!==t.data.visible?(e.documentElement.style.backgroundColor="black",e.documentElement.style.opacity="0.4"):(e.documentElement.style.backgroundColor="transparent",e.documentElement.style.opacity="1")},this.input=function(t){var e=t.data,a=n.layout.element(e.target);if(a)switch(a.type){case"checkbox":case"radio":a.checked="true"===e.value;break;default:a.value=e.value}},this.selection=function(t){var e=t.data,a=n.state.window.document.getSelection();try{a.setBaseAndExtent(n.layout.element(e.start),e.startOffset,n.layout.element(e.end),e.endOffset)}catch(t){console.warn("Exception encountered while trying to set selection: "+t)}},this.pointer=function(t){var e=t.data,a=t.event,i=n.state.window.document,r=i.documentElement,o=i.getElementById("clarity-pointer");if(null===o){(o=i.createElement("DIV")).id="clarity-pointer",r.appendChild(o);var s=i.createElement("STYLE");s.textContent="@keyframes pulsate-one { 0% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(3, 3); opacity: 0; } }@keyframes pulsate-two { 0% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(5, 5); opacity: 0; } }@keyframes pulsate-touch { 0% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(2, 2); opacity: 0; } }@keyframes disappear { 90% { transform: scale(1, 1); opacity: 1; } 100% { transform: scale(1.3, 1.3); opacity: 0; } }"+"#".concat("clarity-interaction-canvas"," { position: absolute; left: 0; top: 0; z-index: ").concat(2147483647,"; background: none; }")+"#".concat("clarity-pointer"," { position: absolute; z-index: ").concat(2147483647,"; url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAmCAYAAAA4LpBhAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASDSURBVHgB7VdPTCNlFH8z0/+FFmRatnFNiDGR4O4mBk08smZvXjjIxRueNME9eHGNxoLxSNwr4WyigYToQRJLjXDzQtDNmnhR4kWWAJm20ymddtrx94bvI9NBWAptsod9ycvM92fe73vv/b73fUP0DIlCfRQ1AMTtjwcHB1+gPgOT67oK6+TkZBjNbxRF+X1gYCCDPpX6IKdGAaTu7++HuG9tbe1ONBr9GR7r+Xy+98DsIRuemJiIjI6OJgH+3e7urruzs+OOjIw8SiaTNwRwz8OtQWPpdHoYoKt///ar2/jxaw84k8k8gt5YWVnRqEfi90BrtVph0Uetx0V67d9fqFAo3G6324XZ2VldLK4noK4AVqvVaoh8YZTAxWLxdiwW20CoM70IdceWicfjSpCxfuBEIrGxsLCQZR7QNcQDwFaRRhRmcXCSL9S3kN8CtlP2Oqz2QoWt4Q4NDanHx8cy3HQBMIe6sLS0pF811B7I5uYmhUKh1nmAQWAOteM4xcXFxczMzEzXHp+u9PDwUBHvymWBmVzr6+t6t9tJhtPzEEYuFaoguebm5nTqJOXFoMxEVCO50tMFXBaYcwwbGwAfRagv5bEKthK2igdUr9epG/EDYw//xKGmzoLz/6BQd3t7m5i9dAUJsJoLSPZp5PIGp6amXHjsVSaEirqVALk8jy/axx2hwAcMTlcRH/Ad5LfA24kEZ4JzudbySSJzyqDnomq37pH14utH/iUrCA5HCeRwHYXc8dzNNs5jfXp6uoD+e/Pz8zzfDYIqq6urihg4NyTaK2/Rw8fNo0/euWvBWI3TwGAiHW2RnjY7LRVjX+7t7d3nSWL8FFSKIj46I0r2ZXr4R/PoQT5f1TTtU3Q5OAbbbAxtV4BwXx07wUI5raJdTaVS5vLysmYYhlyMDJBHJBoeHpbFwQ0CfmuP04P8V1VVVb9AVwXGy/xE6SyHw2FuW9Aa2jYAHVx1HAZh78bGxs44wYkm0zS9PPrC1QE4+8HcPwD8HONPYNzEkAU1UX+raFcYmPswzhu9ISLmShIdHBx0lFfVH2s+SyWR/IBofgYvnmCIPTQjkYiBk8mARwYWU4aW8F5uNpslXHkstBncxjcOeyqJ6vfUO9oQd2avlyeKJj3A9z/8yAOE7uHKUgGoiRQYMFZCdEq2bZfgpYFnmd9xzprlcrnCOdV13cbWaWKezGVnAUBOmVBpkOAlPH/AxuYJu/DoPQDcxfubeB/ncZCDL+IpaDKgiVwul8AzDo1BI3RC1HPLIg+mYPQmvPke+hdY+S68ehuevIHQvYpV5/i2KIxKg5pUUew1AaL6wM4cl4oPFJjxFMJ0H6BbIIgBwAbeLSzABLBVKpVszGvSCf27r5dCNE7h1tYWX1U0ECHUaDT+REhryKENrTFbwdLj+skRxIAeM+ka4rGV2QWv2vCIjVoAryC0Jk6MCk6fGvoY0OkFoF80UDsG8AG8j/BtD78YWRSMNNoJQbSe/1Zw0tmwBB6kE0ZG+wXI4v1ECYAIdbKzf/+povypEui6t/jnwvIf5FVJ1Cj/1+UAAAAASUVORK5CYII=",") no-repeat left center; width: ").concat(29,"px; height: ").concat(38,"px; }")+".".concat("clarity-click",", .").concat("clarity-click-ring",", .").concat("clarity-touch",", .").concat("clarity-touch-ring"," { position: absolute; z-index: ").concat(2147483647,"; border-radius: 50%; background: radial-gradient(rgba(0,90,158,0.8), transparent); width: ").concat(22,"px; height: ").concat(22,"px;}")+".".concat("clarity-click-ring"," { background: transparent; border: 1px solid rgba(0,90,158,0.8); }")+".".concat("clarity-touch"," { background: radial-gradient(rgba(242,97,12,1), transparent); }")+".".concat("clarity-touch-ring"," { background: transparent; border: 1px solid rgba(242,97,12,0.8); }")+".".concat("clarity-pointer-click"," { background-image: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAmCAYAAAA4LpBhAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVoSURBVHgB7VdNTCRFGP2qe6aBGRhA5mfJ7kZcV0XQTQx68MYabl44yMWbetAY3IMX12gWMCZeSLwSEi/GiAHF1SjqMAhoshuTJbg/GkM0xMQIBMj8D/Nfvq+6enZmEtFdhsSDRT66q6qnXr33varqJvoPFUHHWIw6IK6/2tbWdg8dMzBJKQXHwMCAG9UPhBDXW1tbA2gz6BhKZVAAGTs7Oy5um5+fP9fU1LQExv6xsbHGAzNDHrivr88KhUJegH+0ubkp19fXZVdX1w2v13tCAzdcbhPR3N7e3gnQuY0ry3L7nRcUcCAQuIE4MTs7a1IDi9CgXuQxCNBPNq6uyF+HWuTO5IvVjEP6uSMXlk1qYCOVSnFOgYvRLUtmVmbp9HfvUSQSebS5uXkRwIFGSF2zZFpaWoTtWEHCcgvDclPm+4/p3qvvK2CPx7M4MTERZB/QEYoCxVJxBhHsYvwn0+2WKiyLslc+pfuufSjD4fAjyG+Y03AUVyupsDRkR0eHcXBwYMuNKQi3BaYIt5uYce6Hz8XZ63MMzFKHp6am/HcrtQJZWVkhl8tVIju/KqkmgBxAdQXr3LUv6exPl5XUxWIxMjk5GRgZGbljxpWZ7u3tCX3PPCuALDEYk2Ytij9+RQ9ufFEx18LCgv9Ol5PjXsUQg9hSsXubLA3IwC7JoVgjSjfD9PDm1xVzjY6O+qnWlIeDshOxGzkzVRNgeW2mdl6FfXVkxiQsKv/8LfX9sUScY4yxCPAQpP5XjA0GwFJRTLPZrG5mUFcln6Ytc+Uq0CdcLgAvyf4/lxUw1vA3LDVVpexQedfW1ojdW2m1N4cKM8PllqLKUMI0SRhCsuVKtyLUv7XsuJo3kOA/mUt1Dg4OsqRqZ4JUPJZtIttAaqMAMzQarH8NCzwqSzcjghlrcynGh63jGinwA5VP9efIaBr2vqgBnGeltH+nJonCjPts4HPIb5iXE2nP1IPyXssniZNTBhVq0RhC3p6QTd/oHxLpk4/t356yelQawijrecnek6fKOI/9w8PDYQw1ND4+zs/LelAxNzcndIdRLRwzs5kIYT7wJL17q7D/2tPn0+jIcDunRDMt6/SUmbQT6Htra2vrAj+k+yugFRT9I6qVEGxCZwCY3784dillmubr6CqWSqUyD4a61CDclsVKSGM7TaGe8vl8yenpaTMajTqTqeSUjUSdnZ3O5iCrYUXwDM1ke+ni2NspwzAuoTGBweN8xdYZd7vdXE8jMqjnAFjEq06RQZhdT08P1RdONCWTSaEFdeSyqQfvFzO5XnrupdHfAfgm+rcxeBJdaUQS+28K9QQDcxv6eaHntWLSMdHu7q6zxWorVGnNZ6nQVmVJmSEDovoGWGyjixkmLcuK4mSKglEUk4kjYriPFwqFGF550qgzeA6/KTJTx6jVTNXRBt3ZvSpP1OSlmYNeev7lVxQgYqtcLicAmkQKohgsBnViuVwuBpZRXON8j3M2GY/HE5xTv9+fw9Ip4DknlzXAnFM2VDtMcBrXz7Cw+YFNMHoWAOdx/wTue7kf5uAXcR/CWxee7u5uD64tiGaERbZR/3Zb5E4fBj0FNpcRv8GVz4DVU2DyOKR7CLPu5rdFPagzoOmE3uxNDWJUgYl6UFEFCswWH2S6ANBVGCQKwDzu05hAEsDpWCyWw3MFsu0v6S6LySlcXV3lVxUTRnDl8/lfIGkGOcwhMuxWuPQgax9BDKicSUcoyq3sLrAqgxEPmgZ4AtImcWIkcPpk0MaAxUYAVhcT1m4GeCvuu/htD58YQWwY7ah7tNEa/lnBSeeBHeA2sh3ZdFyAXNRHlAawqNadx/edqrc/wwE66lv8/4XLX3gjac6XP/Y1AAAAAElFTkSuQmCC","); }")+".".concat("clarity-pointer-none"," { background: none; }")+".".concat("clarity-pointer-move"," { background-image: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAmCAYAAAA4LpBhAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASDSURBVHgB7VdPTCNlFH8z0/+FFmRatnFNiDGR4O4mBk08smZvXjjIxRueNME9eHGNxoLxSNwr4WyigYToQRJLjXDzQtDNmnhR4kWWAJm20ymddtrx94bvI9NBWAptsod9ycvM92fe73vv/b73fUP0DIlCfRQ1AMTtjwcHB1+gPgOT67oK6+TkZBjNbxRF+X1gYCCDPpX6IKdGAaTu7++HuG9tbe1ONBr9GR7r+Xy+98DsIRuemJiIjI6OJgH+3e7urruzs+OOjIw8SiaTNwRwz8OtQWPpdHoYoKt///ar2/jxaw84k8k8gt5YWVnRqEfi90BrtVph0Uetx0V67d9fqFAo3G6324XZ2VldLK4noK4AVqvVaoh8YZTAxWLxdiwW20CoM70IdceWicfjSpCxfuBEIrGxsLCQZR7QNcQDwFaRRhRmcXCSL9S3kN8CtlP2Oqz2QoWt4Q4NDanHx8cy3HQBMIe6sLS0pF811B7I5uYmhUKh1nmAQWAOteM4xcXFxczMzEzXHp+u9PDwUBHvymWBmVzr6+t6t9tJhtPzEEYuFaoguebm5nTqJOXFoMxEVCO50tMFXBaYcwwbGwAfRagv5bEKthK2igdUr9epG/EDYw//xKGmzoLz/6BQd3t7m5i9dAUJsJoLSPZp5PIGp6amXHjsVSaEirqVALk8jy/axx2hwAcMTlcRH/Ad5LfA24kEZ4JzudbySSJzyqDnomq37pH14utH/iUrCA5HCeRwHYXc8dzNNs5jfXp6uoD+e/Pz8zzfDYIqq6urihg4NyTaK2/Rw8fNo0/euWvBWI3TwGAiHW2RnjY7LRVjX+7t7d3nSWL8FFSKIj46I0r2ZXr4R/PoQT5f1TTtU3Q5OAbbbAxtV4BwXx07wUI5raJdTaVS5vLysmYYhlyMDJBHJBoeHpbFwQ0CfmuP04P8V1VVVb9AVwXGy/xE6SyHw2FuW9Aa2jYAHVx1HAZh78bGxs44wYkm0zS9PPrC1QE4+8HcPwD8HONPYNzEkAU1UX+raFcYmPswzhu9ISLmShIdHBx0lFfVH2s+SyWR/IBofgYvnmCIPTQjkYiBk8mARwYWU4aW8F5uNpslXHkstBncxjcOeyqJ6vfUO9oQd2avlyeKJj3A9z/8yAOE7uHKUgGoiRQYMFZCdEq2bZfgpYFnmd9xzprlcrnCOdV13cbWaWKezGVnAUBOmVBpkOAlPH/AxuYJu/DoPQDcxfubeB/ncZCDL+IpaDKgiVwul8AzDo1BI3RC1HPLIg+mYPQmvPke+hdY+S68ehuevIHQvYpV5/i2KIxKg5pUUew1AaL6wM4cl4oPFJjxFMJ0H6BbIIgBwAbeLSzABLBVKpVszGvSCf27r5dCNE7h1tYWX1U0ECHUaDT+REhryKENrTFbwdLj+skRxIAeM+ka4rGV2QWv2vCIjVoAryC0Jk6MCk6fGvoY0OkFoF80UDsG8AG8j/BtD78YWRSMNNoJQbSe/1Zw0tmwBB6kE0ZG+wXI4v1ECYAIdbKzf/+povypEui6t/jnwvIf5FVJ1Cj/1+UAAAAASUVORK5CYII=","); }"),o.appendChild(s)}o.style.left=e.x-4+"px",o.style.top=e.y-4+"px";var c="Pointer";switch(a){case 9:case 16:c="Click",n.drawClick(i,e.x,e.y,c),o.className="clarity-pointer-none";break;case 17:case 18:case 20:c="Touch",n.drawTouch(i,e.x,e.y,c),o.className="clarity-pointer-none";break;case 19:c="Touch Move",o.className="clarity-pointer-none";break;case 12:c="Mouse Move",o.className="clarity-pointer-move",n.addPoint({time:t.time,x:e.x,y:e.y}),n.targetId=e.target;break;default:o.className="clarity-pointer-move"}o.setAttribute("title","".concat(c," (").concat(e.x).concat("px",", ").concat(e.y).concat("px",")"))},this.hover=function(){if(n.targetId&&n.targetId!==n.hoverId){for(var t=0,e=n.hoverId?n.layout.element(n.hoverId):null;e&&t<7;)"removeAttribute"in e&&e.removeAttribute("clarity-hover"),e=e.parentElement,t++;t=0;for(var a=n.targetId?n.layout.element(n.targetId):null;a&&t<7;)"setAttribute"in a&&a.setAttribute("clarity-hover",""),a=a.parentElement,t++;n.hoverId=n.targetId}},this.addPoint=function(t){var e=n.points.length>0?n.points[n.points.length-1]:null;e&&t.x===e.x&&t.y===e.y?e.time=t.time:n.points.push(t)},this.drawTouch=function(t,e,a,n){var i=t.documentElement,r=t.createElement("DIV");r.className="clarity-touch",r.setAttribute("title","".concat(n," (").concat(e).concat("px",", ").concat(a).concat("px",")")),r.style.left=e-11+"px",r.style.top=a-11+"px",r.style.animation="disappear 1 1s",r.style.animationFillMode="forwards",i.appendChild(r);var o=r.cloneNode();o.className="clarity-touch-ring",o.style.left="-0.5px",o.style.top="-0.5px",o.style.animation="pulsate-touch 1 1s",o.style.animationFillMode="forwards",r.appendChild(o)},this.drawClick=function(t,e,a,i){var r=t.documentElement,o=t.createElement("DIV");o.className="clarity-click",o.setAttribute("title","".concat(i," (").concat(e).concat("px",", ").concat(a).concat("px",")")),o.style.left=e-11+"px",o.style.top=a-11+"px",r.appendChild(o);var s=o.cloneNode();s.className="clarity-click-ring",s.style.left="-0.5px",s.style.top="-0.5px",s.style.animation="pulsate-one 1 1s",s.style.animationFillMode="forwards",o.appendChild(s);var c=s.cloneNode();c.style.animation="pulsate-two 1 1s",o.appendChild(c),"undefined"!=typeof Audio&&(null===n.clickAudio&&(n.clickAudio=new Audio("data:video/webm;base64,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"),o.appendChild(n.clickAudio)),n.clickAudio.play())},this.overlay=function(){var t=n.state.window.document,e=t.documentElement,a=t.getElementById("clarity-interaction-canvas");return null===a&&((a=t.createElement("canvas")).id="clarity-interaction-canvas",a.width=0,a.height=0,e.appendChild(a)),a.width===e.clientWidth&&a.height===e.clientHeight||(a.width=e.clientWidth,a.height=e.clientHeight),a},this.match=function(t){for(var e=[],a=n.points.length-1;a>0&&(a>=n.scrollPointIndex&&t-n.points[a].time<3e3);a--)e.push(n.points[a]);return e.slice(0,75)},this.trail=function(t){var e=n.overlay();if(n.state.options.canvas&&e){var a=e.getContext("2d"),i=n.state.options.keyframes?n.curve(n.points.reverse()):n.curve(n.match(t));if(n.hover(),i.length>1){var r=i[0];a.clearRect(0,0,a.canvas.width,a.canvas.height);for(var o=i.length,s=e.offsetLeft,c=e.offsetTop,l=1;l<o;l++){var A=i[l],u=1-(l-1)/o,d=1-l/o,h=a.createLinearGradient(r.x,r.y,A.x,A.y);h.addColorStop(1,n.color(d)),h.addColorStop(0,n.color(u)),a.lineWidth=6*d,a.lineCap="round",a.lineJoin="round",a.strokeStyle=h,a.beginPath(),a.moveTo(r.x-s,r.y-c),a.lineTo(A.x-s,A.y-c),a.stroke(),a.closePath(),r=A}}n.state.options.keyframes&&(n.points=[])}},this.color=function(e){for(var a=t.TRAIL_START_COLOR,n=t.TRAIL_END_COLOR,i=[],r=0;r<3;r++)i[r]=Math.round(n[r]+e*(a[r]-n[r]));return"rgba(".concat(i[0],", ").concat(i[1],", ").concat(i[2],", ").concat(e,")")},this.curve=function(t){var e=.5,a=[],i=[];(a=t.slice(0)).unshift(t[0]),a.push(t[t.length-1]);for(var r=1;r<a.length-2;r++)for(var o=a[r].time,s=Math.max(Math.min(Math.round(n.distance(a[r],a[r-1])),10),1),c=0;c<=s;c++){var l={time:o,x:(a[r+1].x-a[r-1].x)*e,y:(a[r+1].y-a[r-1].y)*e},A={time:o,x:(a[r+2].x-a[r].x)*e,y:(a[r+2].y-a[r].y)*e},u=c/s,d=2*Math.pow(u,3)-3*Math.pow(u,2)+1,h=-2*Math.pow(u,3)+3*Math.pow(u,2),m=Math.pow(u,3)-2*Math.pow(u,2)+u,f=Math.pow(u,3)-Math.pow(u,2),p=d*a[r].x+h*a[r+1].x+m*l.x+f*A.x,g=d*a[r].y+h*a[r+1].y+m*l.y+f*A.y;i.push({time:o,x:p,y:g})}return i},this.distance=function(t,e){var a=t.x-e.x,n=t.y-e.y;return Math.sqrt(a*a+n*n)},this.state=e,this.layout=a}return t.TRAIL_START_COLOR=[242,97,12],t.TRAIL_END_COLOR=[249,220,209],t}(),p=function(){function a(n){var i=this;this.stylesheets=[],this.nodes={},this.events={},this.hashMapAlpha={},this.hashMapBeta={},this.state=null,this.reset=function(){i.nodes={},i.stylesheets=[],i.events={},i.hashMapAlpha={},i.hashMapBeta={}},this.get=function(t){return t in i.hashMapBeta&&i.hashMapBeta[t].isConnected?i.hashMapBeta[t]:t in i.hashMapAlpha&&i.hashMapAlpha[t].isConnected?i.hashMapAlpha[t]:null},this.addToHashMap=function(t,e){i.hashMapAlpha[t.hashAlpha]=i.get(t.hashAlpha)||e,i.hashMapBeta[t.hashBeta]=i.get(t.hashBeta)||e},this.resize=function(t,e,a){t&&1===t.nodeType&&e&&a&&(t.style.width=e+"px",t.style.height=a+"px",t.style.boxSizing="border-box")},this.element=function(t){return null!==t&&t>0&&t in i.nodes?i.nodes[t]:null},this.dom=function(a){return t(i,void 0,void 0,(function(){var t;return e(this,(function(e){switch(e.label){case 0:return a&&((t=this.state.window.document)&&t.documentElement)?(t.documentElement.style.visibility="hidden",this.markup(a),[4,Promise.all(this.stylesheets)]):[3,2];case 1:e.sent(),t.documentElement.style.visibility="visible",e.label=2;case 2:return[2]}}))}))},this.exists=function(t){if(t){var e=i.get(t);if(e){var a=e.getBoundingClientRect();return a&&a.width>0&&a.height>0}}return!1},this.markup=function(t){for(var e=t.data,n=t.event,r=i.state.window.document,o=function(t){var e=i.element(t.parent),o=i.element(t.previous),s=i.insertAfter,c=t.tag;switch(c&&0===c.indexOf("iframe:")&&(c=t.tag.substr("iframe:".length)),c){case"*D":var l=c!==t.tag?e?e.contentDocument:null:r;l&&l===r&&5===n&&i.reset(),"undefined"!=typeof XMLSerializer&&l&&(l.open(),l.write((new XMLSerializer).serializeToString(l.implementation.createDocumentType(t.attributes.name,t.attributes.publicId,t.attributes.systemId))),l.close());break;case"*P":i.nodes[t.id]=e,i.addToHashMap(t,e);break;case"*S":if(e){var A=i.element(t.id);if(A=A||e.attachShadow({mode:"open"}),"style"in t.attributes){var u=r.createElement("style");A.firstChild&&"clarity-adopted-style"===A.firstChild.id&&(u=A.firstChild),u.id="clarity-adopted-style",u.textContent=t.attributes.style,A.appendChild(u)}i.nodes[t.id]=A,i.addToHashMap(t,A)}break;case"*T":var d=i.element(t.id);(d=d||r.createTextNode(null)).nodeValue=t.value,s(t,e,d,o);break;case"*M":var h=i.element(t.id);h&&h.nodeType===Node.ELEMENT_NODE&&h.setAttribute("data-clarity-suspend","");break;case"HTML":var m=c!==t.tag?e?e.contentDocument:null:r;if(null!==m){var f=i.element(t.id);if(null===f){f=m.implementation.createHTMLDocument("").documentElement;var p=m.importNode(f,!0);m.replaceChild(p,m.documentElement),m.head&&m.head.parentNode.removeChild(m.head),m.body&&m.body.parentNode.removeChild(m.body)}i.setAttributes(m.documentElement,t),5!==n||e||(m.documentElement.style.visibility="hidden"),i.nodes[t.id]=m.documentElement,i.addToHashMap(t,m.documentElement)}break;case"HEAD":var g=i.element(t.id);if(null===g){if(g=r.createElement(t.tag),t.attributes&&"*B"in t.attributes){var v=r.createElement("base");v.href=t.attributes["*B"],g.appendChild(v)}var w=r.createElement("style");w.innerText=i.getCustomStyle(),g.appendChild(w)}i.setAttributes(g,t),s(t,e,g,o);break;case"LINK":var y=i.element(t.id);y=y||i.createElement(r,t.tag),t.attributes||(t.attributes={}),i.setAttributes(y,t),"rel"in t.attributes&&"stylesheet"===t.attributes.rel&&i.stylesheets.push(new Promise((function(t){y.onload=y.onerror=i.style.bind(i,y,t),setTimeout(t,a.TIMEOUT)}))),s(t,e,y,o);break;case"STYLE":var x=i.element(t.id);x=x||r.createElement(t.tag),i.setAttributes(x,t),x.textContent=t.value,s(t,e,x,o),i.style(x);break;case"IFRAME":var b=i.element(t.id);b=b||i.createElement(r,t.tag),t.attributes||(t.attributes={}),i.setAttributes(b,t),s(t,e,b,o);break;default:var E=i.element(t.id);E=E||i.createElement(r,t.tag),i.setAttributes(E,t),i.resize(E,t.width,t.height),s(t,e,E,o)}t.id&&(i.events[t.id]=t)},s=0,c=e;s<c.length;s++){o(c[s])}},this.style=function(t,e){void 0===e&&(e=null);try{for(var a=t.sheet,n=a?a.cssRules:[],i=0;i<n.length;i++)if(n[i].cssText.indexOf(":hover")>=0){var r=n[i].cssText.replace(/:hover/g,"[".concat("clarity-hover","]"));a.removeRule(i),a.insertRule(r,i)}}catch(t){}e&&e()},this.createElement=function(t,e){if(e&&0===e.indexOf("svg:"))return t.createElementNS("http://www.w3.org/2000/svg",e.substr("svg:".length));try{return t.createElement(e)}catch(a){return console.warn("Exception encountered while creating element ".concat(e,": ").concat(a)),t.createElement("clarity-unknown")}},this.insertAfter=function(t,e,a,n){if(!i.events[t.id]||i.events[t.id].parent!==t.parent||i.events[t.id].previous!==t.previous){var r=n&&n.parentElement===e?n.nextSibling:null;r=null===n&&e?i.firstChild(e):r,i.insertBefore(t,e,a,r)}},this.firstChild=function(t){var e=t.firstChild;return e&&1===e.nodeType&&"BASE"===e.tagName?e.nextSibling:e},this.insertBefore=function(t,e,a,n){if(null!==e){n=n&&n.parentElement!==e?null:n;try{e.insertBefore(a,n)}catch(n){console.warn("Node: "+a+" | Parent: "+e+" | Data: "+JSON.stringify(t)),console.warn("Exception encountered while inserting node: "+n)}}else null===e&&null!==a.parentElement&&a.parentElement.removeChild(a);i.nodes[t.id]=a,i.addToHashMap(t,a)},this.setAttributes=function(t,e){var a=e.attributes||{},n=!1;a["data-clarity-id"]="".concat(e.id),a["data-clarity-hashalpha"]="".concat(e.hashAlpha),a["data-clarity-hashbeta"]="".concat(e.hashBeta);var i=1===t.nodeType?t.tagName.toLowerCase():null;if(t.attributes)for(var r=t.attributes.length;t.attributes&&r>0;)"clarity-hover"!==t.attributes[0].name&&t.removeAttribute(t.attributes[0].name),r--;for(var o in a)if(void 0!==a[o])try{var s=a[o];if(0===o.indexOf("xlink:"))t.setAttributeNS("http://www.w3.org/1999/xlink",o,s);else if(0===o.indexOf("*O"))n=!0;else if(0===o.indexOf("*"));else if("iframe"===i&&(0===o.indexOf("src")||0===o.indexOf("allow"))||"sandbox"===o)t.setAttribute("data-clarity-".concat(o),s);else if("img"!==i||0!==o.indexOf("src")||null!==s&&0!==s.length)t.setAttribute(o,s);else{t.setAttribute(o,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=");var c="l";e.width&&(c=e.width<=200?"m":e.width<=75?"s":c),t.setAttribute("data-clarity-hide",c)}}catch(e){console.warn("Node: "+t+" | "+JSON.stringify(a)),console.warn("Exception encountered while adding attributes: "+e)}!1===n&&"iframe"===i&&"function"==typeof t.setAttribute&&t.setAttribute("data-clarity-unavailable",""),"img"!==i||t.hasAttribute("alt")||t.setAttribute("alt",""),"form"!==i&&"input"!==i||(t.hasAttribute("autocomplete")&&t.removeAttribute("autocomplete"),t.setAttribute("autocomplete","new-password"))},this.getCustomStyle=function(){return"".concat("img","[").concat("data-clarity-hide","] { background-color: #CCC; background-image: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANvSURBVHgB7Ve9VhpREJ5dU6BNVqt0wS6dpEuX9QmiTyA+gfgE4BOgZSrJE4hlKvEJxDKVa2caoaSSfB87F4Z7dtmFhFTMOfcMe52Z+935u6PIhjb0dxTIihRFUQ2M6z0/dXuI9ay8PwTJklQaEADw0JMgCI4USFSkMx6Pe2BdrFtgS6QEFQICjirYGYDUc0AMcXCCvw8XAVVwHQD7IasAokfCMGzB0NmCA1o44N7T+wpwlwouT+80z2NbOWAaMHqDn7FuJcorapRATkej0bOvyz2s7zs7O2L0GbYXrCrscjUqlUoAuZ6vH3hAIr3diW4xHC3wW+w/KZhLgDmXEgRzbR6udvbBD/DdITB3UewfWm+FRpnIHwyYLo1A+Aq/vzkDWFdSni4krTjm1RnDOxgM9nFOS//OM++0YmeAFMydQw4gDSgeu7LVyprE3489je3u7t5waQFMifrQ6ehn7PZfX18v6BkFOwcq9MDQQKxeseRu0PXARJprBHxED2t7sPSol6p5YHs467OkXo8cqBA/rmXmmVO/atzZzk4G0Kond+DJJJLmStc3Sm+rpxLVbYcEoRu8xbWNp9U1B1rqyzzIRNQj5tAe84ZVKVmGZ6BoK5Vh2JADT1hjLny3rBL27nS/7RtUXZdDmb1H5Ug1rDgjrFMKrGGb2CzPt7e3C95gb2+vqeU/1Mor/UZpg21og50CsfYzATllsLY+E6TE60OTPoUqOV8EQNKKmuTTgifHAmO4GOokyDFah2BTTAOTNFcmIQFI3qyVoxurp+dIL3ZF72bYdzL1zKcDLb2P1n4rqUfcg/nB3Cre3t6uQeY3ZBOri72q87B7ULHY035CdmTs85H9BVlR23yWumVf+6YJo0/MK7qcI8al9RCqq9R4w4ICq9JDYZEwk44ly2TWFtGT+VKnF2PwB6cis8sUzkw+vSsrqNXQ0eUmxo+S5gEPfvQBSTpNLjU1rjzCLiKEYAAWMQRFA5m2GzdJxIUhW5H6yutFguhRToapcb8WQGwL5MwtDnt5cvQOZJuq0yHfkjUQWwHbAn5+AqgvKHGW/IsPRquR+ZdgcQIdrStkYh5tN1ocZYCpSto2Dqezl6yRMga/yQSpXToyYFzOrReQAcUhzp8E+E4eWzD/lTgxuPFGR5Wlm+Y/J3qL/7fJhja0RvoDR4Tn4Lo/zi8AAAAASUVORK5CYII=","); background-repeat:no-repeat; background-position: center; }")+"".concat("img","[").concat("data-clarity-hide","=").concat("s","] { background-size: 18px 18px; }")+"".concat("img","[").concat("data-clarity-hide","=").concat("m","] { background-size: 24px 24px; }")+"".concat("img","[").concat("data-clarity-hide","=").concat("l","] { background-size: 36px 36px; }")+"".concat("iframe","[").concat("data-clarity-unavailable","] { background: url(").concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAiCAYAAAAge+tMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAU6SURBVHgBzVg7TyNJEG6bh5AIjpOQeCXj7LL18pDIdpztRYuzy7CjCzG/ADu8CO8vwEQXrgkvws6QeNiEFzEk4GznIFnxvO/zVntrhx6/kLxb0mh6uqurvq6urqqehHklra+ve3d3dx8SiUT6+fk5ja4ZtGf4tjzoD9AXoBmiXUsmk+cnJyc18wpKmCFodXXVx8t/enraBCDPDEchniqeg9PT06oZkAYCTsCw2A6afjc+8IQCjGR3oBtxR/bHx8crR0dHgemD+gIugPfQ9OJ4BGwF72qj0ajrsTQI7rEFcDnTndoLeHh4KDebzdAMC5z+e39/T8B+Nz6AbcJtslAWdOMDfg8LONTuJf7vRVgDPEW40H6crLG4AVi58Pj4+Deav0WUFIjBfDt8NYD+HaBbpge1Wq1wbm5uH+DXjewe5IXQ85buxAMurJS9sbi46IG/jnlforKS0Q7f92dWVlYOAXLXgqMb4CmcnZ2l8E5YpVwIlGZ7basm8nIO50qXNzY29g6y8+hP0RCKPYexBne+K3Ay3N7eNoxyDViziicFwR+la8uOwULFQUBr8LB6XgOU/gDukcGittUY3bUBY25oGR0fX1tbSwPgoVFWxquoAFufv5DxgDvgAsZdu7m52WR7cnLyIC5SAMxnqw+6PRzqSzvmOg9coPX7ZAzoAN9vNWgSQKfVpzP2yq5dQGGZD61F+S5e6KnYNkD6eozWBwZav6m6K1hs2yBJB2hGiIwrQmDsjfp8MS6L2zMqa7INebvGTedKthcdtODN90Yi+I2kCO0owsq3e4U1EqOBq98FwNWnxgKCgd66a5znAe6RjYDfGsdJzmtfgqBPWFE+Jg2HSmFcNuS8QqSv5mLkwQewiumDBKcn87JJ5UuB8BDQJ8TxYnQyFnep2ukYMCXzvXUY57ddvIOGUeIUNw47UQWneEYsrwFVJiYmSjYqkAdx9bOMMR6n4pSTF7J+0ZHCRVKwfaA7SXUZ0g3xNJn+j4+Pm655L1L+8vLyrmRHS4FR6ZfJyUichyKGy5IZgvot2EA1GC8fDanOWgXgCwBPodqPqxCwjQKIljmUPiaSTJxVuoAuCui+CXhKqOGLne84xpgEQKqoSwMpwIIy/ZajUdBytspSVV6KblaT79AsaP0afM+yFtbP4bXT48LAWqYEtymbHrIgZy/SnYurAsV4O7ocRjvD21Nf9bgIYMbK9VgAq8f2rYYHbHp6OqjVau3DK+UCXcw1P9ethI2cO9YzqYFuQLIA3/TegTYxpbPqE+UdazM7o82suWn6AC8Rr2F10upjZgBiPX19fd3E83F+fr5mviakKQiad/FDWfHq6upftlFbM0N7AvwP1kHoY5Fmzwrr7wCyzx16vywsLBDwe9s31GU5ShKz30gOmLGWQZwv2fIBYfRZ2JnCf7Vz0V8xyvIsaV1nReeQ9oXGjIDoYlB6IZ811tx6PAo+Gvoswd0urFGS5icgLCSHV8e/GS5dJYemUQHXxZnnYugFXtzRzg1HApz1jC3iqFzqkxfUDTxcTc9pDhRVXkOICrSYb78RPQ5cfOivRqKNv7S0lMAi/lTRqziSw0mSqMADauufbLdfb45ir032rjsyi0ssnlJWfw/Ltlxxm4T+fyR2+7qfi+GckQEXMHWA9c3XRDRl5KcPXOE/JKrA8vEvwezsLH8a5YwqEWDtMqz9F9sjcxVL4jJM/RuRoVB+iZjob2qSgO7cpEYO3BJrfry2etU8XAx4XtyBfxhwki3aAGyT9b39HS3/KJsoGSr4rLuuh/8DlPszm7LNbUUAAAAASUVORK5CYII=",") no-repeat center center, url('").concat('data:image/svg+xml,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"><rect width="100%" height="100%" style="fill:rgb(204,204,204)"/><line stroke-dasharray="5, 5" x1="0" y1="100%" x2="100%" y2="0" style="stroke:rgb(119,119,119);stroke-width:1"/><line stroke-dasharray="5, 5" x1="0" y1="0" x2="100%" y2="100%" style="stroke:rgb(119,119,119);stroke-width:1"/><circle cx="50%" cy="50%" r="40" fill="rgb(204,204,204)"/></svg>',"'); }")+"*[".concat("data-clarity-suspend","] { filter: grayscale(100%); }")},this.state=n}return a.TIMEOUT=3e3,a}(),g=function(){function a(){var a=this;this._state=null,this.renderTime=0,this.dom=function(n){return t(a,void 0,void 0,(function(){return e(this,(function(t){switch(t.label){case 0:return[4,this.layout.dom(n)];case 1:return t.sent(),[2]}}))}))},this.get=function(t){return a.layout.get(t)},this.html=function(t,e,n,i){if(void 0===n&&(n=null),t&&t.length>0&&e){var r=a.merge(t);for(a.setup(e,{version:t[0].envelope.version,dom:r.dom});r.events.length>0&&!1===a.layout.exists(n);){var o=r.events.shift();switch(o.event){case 6:var s=o;if(a.renderTime=s.time,i&&a.renderTime>i)break;a.layout.markup(s)}}}return a},this.time=function(){return a.renderTime},this.clickmap=function(t){if(null===a.state)throw new Error('Initialize heatmap by calling "html" or "setup" prior to making this call.');a.heatmap.click(t)},this.clearmap=function(){if(null===a.state)throw new Error('Initialize heatmap by calling "html" or "setup" prior to making this call.');a.heatmap.clear()},this.scrollmap=function(t,e,n){if(null===a.state)throw new Error('Initialize heatmap by calling "html" or "setup" prior to making this call.');a.heatmap.scroll(t,e,n)},this.merge=function(t){var e={timestamp:null,envelope:null,dom:null,events:[]};t=t.sort(a.sortPayloads),a.enrich=a.enrich||new h,a.enrich.reset();for(var n=0,i=t;n<i.length;n++){var r=i[n];e.timestamp=e.timestamp?e.timestamp:r.timestamp,e.envelope=r.envelope;for(var o=0,s=Object.keys(r);o<s.length;o++){var c=s[o],l=r[c];if(Array.isArray(l))for(var A=0,u=l;A<u.length;A++){var d=u[A];if("dom"===c){var m=a.enrich.selectors(d);5===d.event?e.dom=m:e.events.push(d)}else e.events.push(d)}}}return e.events=e.events.sort(a.sortEvents),e},this.setup=function(t,e){return a.reset(),e.canvas=!("canvas"in e)||e.canvas,e.keyframes="keyframes"in e&&e.keyframes,a._state={window:t,options:e},a.enrich=new h,a.data=new n(a.state),a.layout=new p(a.state),a.heatmap=new m(a.state,a.layout),a.interaction=new f(a.state,a.layout),e.dom&&a.layout.dom(e.dom),a},this.render=function(t){if(null===a.state)throw new Error('Initialize visualization by calling "setup" prior to making this call.');for(var e=0,n=0,i=t;n<i.length;n++){var r=i[n];switch(e=r.time,r.event){case 0:a.data.metric(r);break;case 7:a.data.region(r);break;case 6:a.layout.markup(r);break;case 13:case 14:case 12:case 15:case 9:case 16:case 17:case 20:case 18:case 19:a.interaction.pointer(r);break;case 28:a.interaction.visibility(r);break;case 27:a.interaction.input(r);break;case 21:a.interaction.selection(r);break;case 11:a.interaction.resize(r);break;case 10:a.interaction.scroll(r)}}t.length>0&&a.interaction.trail(e)},this.reset=function(){var t,e,n,i,r;null===(t=a.data)||void 0===t||t.reset(),null===(e=a.interaction)||void 0===e||e.reset(),null===(n=a.layout)||void 0===n||n.reset(),null===(i=a.heatmap)||void 0===i||i.reset(),null===(r=a.enrich)||void 0===r||r.reset(),a._state=null,a.renderTime=0},this.sortEvents=function(t,e){return t.time-e.time},this.sortPayloads=function(t,e){return t.envelope.sequence-e.envelope.sequence}}return Object.defineProperty(a.prototype,"state",{get:function(){return this._state},enumerable:!1,configurable:!0}),a}(),v=(u=new g).state,w=u.dom,y=u.get,x=u.html,b=u.time,E=u.clickmap,C=u.clearmap,k=u.scrollmap,I=u.merge,B=u.setup,R=u.render,M=Object.freeze({__proto__:null,state:v,dom:w,get:y,html:x,time:b,clickmap:E,clearmap:C,scrollmap:k,merge:I,setup:B,render:R});"undefined"!=typeof window&&(void 0!==window.clarity&&null!==window.clarity||(window.clarity={}),window.clarity.visualize=M)}();
@@ -166,12 +166,15 @@ function hash (input) {
166
166
  return hash.toString(36);
167
167
  }
168
168
 
169
- var TAGS = ["DIV", "TR", "P", "LI", "UL", "A", "BUTTON"];
170
- function selector (input, beta) {
171
- if (beta === void 0) { beta = false; }
169
+ var excludeClassNames = "load,active,fixed,visible,focus,show,collaps,animat" /* Constant.ExcludeClassNames */.split("," /* Constant.Comma */);
170
+ var selectorMap = {};
171
+ function reset$k() {
172
+ selectorMap = {};
173
+ }
174
+ function get$1(input, type) {
172
175
  var a = input.attributes;
173
- var prefix = input.prefix ? input.prefix[beta ? 1 /* Selector.Beta */ : 0 /* Selector.Stable */] : null;
174
- var suffix = beta || ((a && !("class" /* Constant.Class */ in a)) || TAGS.indexOf(input.tag) >= 0) ? ":nth-of-type(".concat(input.position, ")") : "" /* Constant.Empty */;
176
+ var prefix = input.prefix ? input.prefix[type] : null;
177
+ var suffix = type === 0 /* Selector.Alpha */ ? "".concat("~" /* Constant.Tilde */).concat(input.position - 1) : ":nth-of-type(".concat(input.position, ")");
175
178
  switch (input.tag) {
176
179
  case "STYLE":
177
180
  case "TITLE":
@@ -186,23 +189,33 @@ function selector (input, beta) {
186
189
  if (prefix === null) {
187
190
  return "" /* Constant.Empty */;
188
191
  }
189
- prefix = "".concat(prefix, ">");
192
+ prefix = "".concat(prefix).concat(">" /* Constant.Separator */);
190
193
  input.tag = input.tag.indexOf("svg:" /* Constant.SvgPrefix */) === 0 ? input.tag.substr("svg:" /* Constant.SvgPrefix */.length) : input.tag;
191
194
  var selector = "".concat(prefix).concat(input.tag).concat(suffix);
192
- var classes = "class" /* Constant.Class */ in a && a["class" /* Constant.Class */].length > 0 ? a["class" /* Constant.Class */].trim().split(/\s+/) : null;
193
- if (beta) {
194
- // In beta mode, update selector to use "id" field when available. There are two exceptions:
195
- // (1) if "id" appears to be an auto generated string token, e.g. guid or a random id containing digits
196
- // (2) if "id" appears inside a shadow DOM, in which case we continue to prefix up to shadow DOM to prevent conflicts
197
- var id = "id" /* Constant.Id */ in a && a["id" /* Constant.Id */].length > 0 ? a["id" /* Constant.Id */] : null;
198
- classes = input.tag !== "BODY" /* Constant.BodyTag */ && classes ? classes.filter(function (c) { return !hasDigits(c); }) : [];
199
- selector = classes.length > 0 ? "".concat(prefix).concat(input.tag, ".").concat(classes.join(".")).concat(suffix) : selector;
200
- selector = id && hasDigits(id) === false ? "".concat(getDomPrefix(prefix), "#").concat(id) : selector;
201
- }
202
- else {
203
- // Otherwise, fallback to stable mode, where we include class names as part of the selector
204
- selector = classes ? "".concat(prefix).concat(input.tag, ".").concat(classes.join(".")).concat(suffix) : selector;
195
+ var id = "id" /* Constant.Id */ in a && a["id" /* Constant.Id */].length > 0 ? a["id" /* Constant.Id */] : null;
196
+ var classes = input.tag !== "BODY" /* Constant.BodyTag */ && "class" /* Constant.Class */ in a && a["class" /* Constant.Class */].length > 0 ? a["class" /* Constant.Class */].trim().split(/\s+/).filter(function (c) { return filter(c); }).join("." /* Constant.Period */) : null;
197
+ if (classes && classes.length > 0) {
198
+ if (type === 0 /* Selector.Alpha */) {
199
+ // In Alpha mode, update selector to use class names, with relative positioning within the parent id container.
200
+ // If the node has valid class name(s) then drop relative positioning within the parent path to keep things simple.
201
+ var key = "".concat(getDomPath(prefix)).concat(input.tag).concat("." /* Constant.Dot */).concat(classes);
202
+ if (!(key in selectorMap)) {
203
+ selectorMap[key] = [];
204
+ }
205
+ if (selectorMap[key].indexOf(input.id) < 0) {
206
+ selectorMap[key].push(input.id);
207
+ }
208
+ selector = "".concat(key).concat("~" /* Constant.Tilde */).concat(selectorMap[key].indexOf(input.id));
209
+ }
210
+ else {
211
+ // In Beta mode, we continue to look at query selectors in context of the full page
212
+ selector = "".concat(prefix).concat(input.tag, ".").concat(classes).concat(suffix);
213
+ }
205
214
  }
215
+ // Update selector to use "id" field when available. There are two exceptions:
216
+ // (1) if "id" appears to be an auto generated string token, e.g. guid or a random id containing digits
217
+ // (2) if "id" appears inside a shadow DOM, in which case we continue to prefix up to shadow DOM to prevent conflicts
218
+ selector = id && filter(id) ? "".concat(getDomPrefix(prefix)).concat("#" /* Constant.Hash */).concat(id) : selector;
206
219
  return selector;
207
220
  }
208
221
  }
@@ -211,22 +224,42 @@ function getDomPrefix(prefix) {
211
224
  var iframeDomStart = prefix.lastIndexOf("".concat("iframe:" /* Constant.IFramePrefix */).concat("HTML" /* Constant.HTML */));
212
225
  var domStart = Math.max(shadowDomStart, iframeDomStart);
213
226
  if (domStart < 0) {
214
- return "";
227
+ return "" /* Constant.Empty */;
228
+ }
229
+ return prefix.substring(0, prefix.indexOf(">" /* Constant.Separator */, domStart) + 1);
230
+ }
231
+ function getDomPath(input) {
232
+ var parts = input.split(">" /* Constant.Separator */);
233
+ for (var i = 0; i < parts.length; i++) {
234
+ var tIndex = parts[i].indexOf("~" /* Constant.Tilde */);
235
+ var dIndex = parts[i].indexOf("." /* Constant.Dot */);
236
+ parts[i] = parts[i].substring(0, dIndex > 0 ? dIndex : (tIndex > 0 ? tIndex : parts[i].length));
215
237
  }
216
- var domEnd = prefix.indexOf(">", domStart) + 1;
217
- return prefix.substr(0, domEnd);
238
+ return parts.join(">" /* Constant.Separator */);
218
239
  }
219
- // Check if the given input string has digits or not
220
- function hasDigits(value) {
240
+ // Check if the given input string has digits or excluded class names
241
+ function filter(value) {
242
+ if (!value) {
243
+ return false;
244
+ } // Do not process empty strings
245
+ if (excludeClassNames.some(function (x) { return value.toLowerCase().indexOf(x) >= 0; })) {
246
+ return false;
247
+ }
221
248
  for (var i = 0; i < value.length; i++) {
222
249
  var c = value.charCodeAt(i);
223
250
  if (c >= 48 /* Character.Zero */ && c <= 57 /* Character.Nine */) {
224
- return true;
251
+ return false;
225
252
  }
226
253
  }
227
- return false;
254
+ return true;
228
255
  }
229
256
 
257
+ var selector = /*#__PURE__*/Object.freeze({
258
+ __proto__: null,
259
+ reset: reset$k,
260
+ get: get$1
261
+ });
262
+
230
263
  var index = 1;
231
264
  var nodes = [];
232
265
  var values = [];
@@ -251,7 +284,7 @@ function getNode(id) {
251
284
  }
252
285
  return null;
253
286
  }
254
- function get$1(node) {
287
+ function get$2(node) {
255
288
  var id = getId(node);
256
289
  return id in values ? values[id] : null;
257
290
  }
@@ -259,7 +292,7 @@ function lookup(hash) {
259
292
  return hash in hashMap ? hashMap[hash] : null;
260
293
  }
261
294
 
262
- var helper = { hash: hash, selector: selector, get: get$1, getNode: getNode, lookup: lookup };
295
+ var helper = { hash: hash, selector: selector, get: get$2, getNode: getNode, lookup: lookup };
263
296
 
264
297
  var EnrichHelper = /** @class */ (function () {
265
298
  function EnrichHelper() {
@@ -267,6 +300,7 @@ var EnrichHelper = /** @class */ (function () {
267
300
  this.reset = function () {
268
301
  _this.children = {};
269
302
  _this.nodes = {};
303
+ helper.selector.reset();
270
304
  };
271
305
  this.selectors = function (event) {
272
306
  event.data.forEach(function (d) {
@@ -294,18 +328,18 @@ var EnrichHelper = /** @class */ (function () {
294
328
  /* Get current position */
295
329
  node.position = _this.position(d.id, d.tag, node, children, children.map(function (c) { return _this.nodes[c]; }));
296
330
  /* For backward compatibility, continue populating current selector and hash like before in addition to beta selector and hash */
297
- var input = { tag: d.tag, prefix: parent ? [parent.stable, parent.beta] : null, position: node.position, attributes: attributes };
331
+ var input = { id: d.id, tag: d.tag, prefix: parent ? [parent.alpha, parent.beta] : null, position: node.position, attributes: attributes };
298
332
  // Get stable selector
299
333
  // We intentionally use "null" value for empty selectors to keep parity with v0.6.25 and before.
300
- var selector = helper.selector(input);
301
- d.selector = selector.length > 0 ? selector : null;
302
- d.hash = selector.length > 0 ? helper.hash(d.selector) : null;
334
+ var selectorAlpha = helper.selector.get(input, 0 /* Layout.Selector.Alpha */);
335
+ d.selectorAlpha = selectorAlpha.length > 0 ? selectorAlpha : null;
336
+ d.hashAlpha = selectorAlpha.length > 0 ? helper.hash(d.selectorAlpha) : null;
303
337
  // Get beta selector
304
- var selectorBeta = helper.selector(input, true);
338
+ var selectorBeta = helper.selector.get(input, 1 /* Layout.Selector.Beta */);
305
339
  d.selectorBeta = selectorBeta.length > 0 ? selectorBeta : null;
306
340
  d.hashBeta = selectorBeta.length > 0 ? helper.hash(d.selectorBeta) : null;
307
341
  /* Track state for future reference */
308
- node.stable = selector;
342
+ node.alpha = selectorAlpha;
309
343
  node.beta = selectorBeta;
310
344
  _this.nodes[d.id] = node;
311
345
  if (d.parent) {
@@ -998,29 +1032,28 @@ var LayoutHelper = /** @class */ (function () {
998
1032
  this.stylesheets = [];
999
1033
  this.nodes = {};
1000
1034
  this.events = {};
1001
- this.hashMap = {};
1035
+ this.hashMapAlpha = {};
1002
1036
  this.hashMapBeta = {};
1003
1037
  this.state = null;
1004
1038
  this.reset = function () {
1005
1039
  _this.nodes = {};
1006
1040
  _this.stylesheets = [];
1007
1041
  _this.events = {};
1008
- _this.hashMap = {};
1042
+ _this.hashMapAlpha = {};
1009
1043
  _this.hashMapBeta = {};
1010
1044
  };
1011
- this.get = function (hash, beta) {
1012
- if (beta === void 0) { beta = false; }
1013
- if (hash in _this.hashMap && _this.hashMap[hash].isConnected && beta === false) {
1014
- return _this.hashMap[hash];
1015
- }
1016
- else if (hash in _this.hashMapBeta && _this.hashMapBeta[hash].isConnected) {
1045
+ this.get = function (hash) {
1046
+ if (hash in _this.hashMapBeta && _this.hashMapBeta[hash].isConnected) {
1017
1047
  return _this.hashMapBeta[hash];
1018
1048
  }
1049
+ else if (hash in _this.hashMapAlpha && _this.hashMapAlpha[hash].isConnected) {
1050
+ return _this.hashMapAlpha[hash];
1051
+ }
1019
1052
  return null;
1020
1053
  };
1021
1054
  this.addToHashMap = function (data, parent) {
1022
1055
  // In case of selector collision, prefer the first inserted node
1023
- _this.hashMap[data.hash] = _this.get(data.hash) || parent;
1056
+ _this.hashMapAlpha[data.hashAlpha] = _this.get(data.hashAlpha) || parent;
1024
1057
  _this.hashMapBeta[data.hashBeta] = _this.get(data.hashBeta) || parent;
1025
1058
  };
1026
1059
  this.resize = function (el, width, height) {
@@ -1292,7 +1325,7 @@ var LayoutHelper = /** @class */ (function () {
1292
1325
  var sameorigin = false;
1293
1326
  // Clarity attributes
1294
1327
  attributes["data-clarity-id" /* Constant.Id */] = "".concat(data.id);
1295
- attributes["data-clarity-hash" /* Constant.Hash */] = "".concat(data.hash);
1328
+ attributes["data-clarity-hashalpha" /* Constant.HashAlpha */] = "".concat(data.hashAlpha);
1296
1329
  attributes["data-clarity-hashbeta" /* Constant.HashBeta */] = "".concat(data.hashBeta);
1297
1330
  var tag = node.nodeType === 1 /* NodeType.ELEMENT_NODE */ ? node.tagName.toLowerCase() : null;
1298
1331
  // First remove all its existing attributes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarity-visualize",
3
- "version": "0.6.39",
3
+ "version": "0.6.41",
4
4
  "description": "An analytics library that uses web page interactions to generate aggregated insights",
5
5
  "author": "Microsoft Corp.",
6
6
  "license": "MIT",
@@ -27,7 +27,7 @@
27
27
  "url": "https://github.com/Microsoft/clarity/issues"
28
28
  },
29
29
  "dependencies": {
30
- "clarity-decode": "^0.6.39"
30
+ "clarity-decode": "^0.6.41"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@rollup/plugin-commonjs": "^19.0.1",
package/src/enrich.ts CHANGED
@@ -14,6 +14,7 @@ export class EnrichHelper {
14
14
  public reset = (): void => {
15
15
  this.children = {};
16
16
  this.nodes = {};
17
+ helper.selector.reset();
17
18
  }
18
19
 
19
20
  public selectors = (event: Layout.DomEvent): Layout.DomEvent => {
@@ -43,21 +44,21 @@ export class EnrichHelper {
43
44
  node.position = this.position(d.id, d.tag, node, children, children.map(c => this.nodes[c]));
44
45
 
45
46
  /* For backward compatibility, continue populating current selector and hash like before in addition to beta selector and hash */
46
- let input: Layout.SelectorInput = { tag: d.tag, prefix: parent ? [parent.stable, parent.beta] : null, position: node.position, attributes };
47
+ let input: Layout.SelectorInput = { id: d.id, tag: d.tag, prefix: parent ? [parent.alpha, parent.beta] : null, position: node.position, attributes };
47
48
 
48
49
  // Get stable selector
49
50
  // We intentionally use "null" value for empty selectors to keep parity with v0.6.25 and before.
50
- let selector = helper.selector(input);
51
- d.selector = selector.length > 0 ? selector : null;
52
- d.hash = selector.length > 0 ? helper.hash(d.selector) : null;
51
+ let selectorAlpha = helper.selector.get(input, Layout.Selector.Alpha);
52
+ d.selectorAlpha = selectorAlpha.length > 0 ? selectorAlpha : null;
53
+ d.hashAlpha = selectorAlpha.length > 0 ? helper.hash(d.selectorAlpha) : null;
53
54
 
54
55
  // Get beta selector
55
- let selectorBeta = helper.selector(input, true);
56
+ let selectorBeta = helper.selector.get(input, Layout.Selector.Beta);
56
57
  d.selectorBeta = selectorBeta.length > 0 ? selectorBeta : null;
57
58
  d.hashBeta = selectorBeta.length > 0 ? helper.hash(d.selectorBeta) : null;
58
59
 
59
60
  /* Track state for future reference */
60
- node.stable = selector;
61
+ node.alpha = selectorAlpha;
61
62
  node.beta = selectorBeta;
62
63
  this.nodes[d.id] = node;
63
64
  if (d.parent) { this.children[d.parent] = children; }
package/src/layout.ts CHANGED
@@ -7,7 +7,7 @@ export class LayoutHelper {
7
7
  stylesheets: Promise<void>[] = [];
8
8
  nodes = {};
9
9
  events = {};
10
- hashMap = {};
10
+ hashMapAlpha = {};
11
11
  hashMapBeta = {};
12
12
  state: PlaybackState = null;
13
13
 
@@ -19,22 +19,22 @@ export class LayoutHelper {
19
19
  this.nodes = {};
20
20
  this.stylesheets = [];
21
21
  this.events = {};
22
- this.hashMap = {};
22
+ this.hashMapAlpha = {};
23
23
  this.hashMapBeta = {};
24
24
  }
25
25
 
26
- public get = (hash, beta: boolean = false) => {
27
- if (hash in this.hashMap && this.hashMap[hash].isConnected && beta === false) {
28
- return this.hashMap[hash];
29
- } else if (hash in this.hashMapBeta && this.hashMapBeta[hash].isConnected) {
26
+ public get = (hash) => {
27
+ if (hash in this.hashMapBeta && this.hashMapBeta[hash].isConnected) {
30
28
  return this.hashMapBeta[hash];
29
+ } else if (hash in this.hashMapAlpha && this.hashMapAlpha[hash].isConnected) {
30
+ return this.hashMapAlpha[hash];
31
31
  }
32
32
  return null;
33
33
  }
34
34
 
35
35
  private addToHashMap = (data: Layout.DomData, parent: Node) => {
36
36
  // In case of selector collision, prefer the first inserted node
37
- this.hashMap[data.hash] = this.get(data.hash) || parent;
37
+ this.hashMapAlpha[data.hashAlpha] = this.get(data.hashAlpha) || parent;
38
38
  this.hashMapBeta[data.hashBeta] = this.get(data.hashBeta) || parent;
39
39
  }
40
40
 
@@ -289,7 +289,7 @@ export class LayoutHelper {
289
289
 
290
290
  // Clarity attributes
291
291
  attributes[Constant.Id] = `${data.id}`;
292
- attributes[Constant.Hash] = `${data.hash}`;
292
+ attributes[Constant.HashAlpha] = `${data.hashAlpha}`;
293
293
  attributes[Constant.HashBeta] = `${data.hashBeta}`;
294
294
 
295
295
  let tag = node.nodeType === NodeType.ELEMENT_NODE ? node.tagName.toLowerCase() : null;
@@ -60,7 +60,7 @@ export interface NodeData {
60
60
  parent: number;
61
61
  previous: number;
62
62
  position?: number;
63
- stable?: string;
63
+ alpha?: string;
64
64
  beta?: string;
65
65
  }
66
66
 
@@ -131,7 +131,7 @@ export const enum Constant {
131
131
  Region = "clarity-region",
132
132
  AdoptedStyleSheet = "clarity-adopted-style",
133
133
  Id = "data-clarity-id",
134
- Hash = "data-clarity-hash",
134
+ HashAlpha = "data-clarity-hashalpha",
135
135
  HashBeta = "data-clarity-hashbeta",
136
136
  Hide = "data-clarity-hide",
137
137
  Unavailable = "data-clarity-unavailable",