{"version":3,"file":"dash0-session-recording.umd.cjs","sources":["../node_modules/.pnpm/@rrweb+record@2.1.1_patch_hash=dfb3ae4326a2041bfbda6387db857f6e2463227b274148e32d25c5808fafc96c/node_modules/@rrweb/record/dist/record.js","modules/entrypoint/session-recording.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n  EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n  EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n  EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n  EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n  EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n  EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n  EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n  EventType2[EventType2[\"Asset\"] = 7] = \"Asset\";\n  return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n  IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n  IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n  IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n  IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n  IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n  IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n  IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n  IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n  IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n  IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n  IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n  IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n  IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n  IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n  IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n  IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n  return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n  MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n  MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n  MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n  MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n  MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n  MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n  MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n  MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n  MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n  MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n  MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n  return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n  CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n  CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n  CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n  return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n  MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n  MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n  MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n  MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n  MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n  return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n  NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n  NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n  NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n  NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n  NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n  NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n  return NodeType2;\n})(NodeType || {});\nconst testableAccessors = {\n  Node: [\n    \"childNodes\",\n    \"parentNode\",\n    \"parentElement\",\n    \"textContent\",\n    \"ownerDocument\"\n  ],\n  ShadowRoot: [\"host\", \"styleSheets\"],\n  Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n  MutationObserver: []\n};\nconst testableMethods = {\n  Node: [\"contains\", \"getRootNode\"],\n  ShadowRoot: [\"getSelection\"],\n  Element: [],\n  MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst untaintedBaseIframeCleanup = {};\nconst isAngularZonePresent = () => {\n  return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n  if (untaintedBasePrototype[key])\n    return untaintedBasePrototype[key];\n  const defaultObj = globalThis[key];\n  const defaultPrototype = defaultObj.prototype;\n  const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n  const isUntaintedAccessors = Boolean(\n    accessorNames && // @ts-expect-error 2345\n    accessorNames.every(\n      (accessor) => {\n        var _a2, _b;\n        return Boolean(\n          (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n        );\n      }\n    )\n  );\n  const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n  const isUntaintedMethods = Boolean(\n    methodNames && methodNames.every(\n      // @ts-expect-error 2345\n      (method) => {\n        var _a2;\n        return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n      }\n    )\n  );\n  if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n    untaintedBasePrototype[key] = defaultObj.prototype;\n    return defaultObj.prototype;\n  }\n  try {\n    const iframeEl = document.createElement(\"iframe\");\n    iframeEl.style.display = \"none\";\n    document.body.appendChild(iframeEl);\n    const win = iframeEl.contentWindow;\n    if (!win) return defaultObj.prototype;\n    const untaintedObject = win[key].prototype;\n    if (!untaintedObject) {\n      iframeEl.remove();\n      return defaultPrototype;\n    }\n    const ua = navigator.userAgent;\n    if (ua.includes(\"Safari\") && !ua.includes(\"Chrome\")) {\n      iframeEl.classList.add(\"rr-block\");\n      iframeEl.setAttribute(\"__rrwebUntaintedMutationObserver\", \"\");\n      untaintedBaseIframeCleanup[key] = () => iframeEl.remove();\n    } else {\n      iframeEl.remove();\n    }\n    return untaintedBasePrototype[key] = untaintedObject;\n  } catch {\n    return defaultPrototype;\n  }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n  var _a2;\n  const cacheKey = `${key}.${String(accessor)}`;\n  if (untaintedAccessorCache[cacheKey])\n    return untaintedAccessorCache[cacheKey].call(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype(key);\n  const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n    untaintedPrototype,\n    accessor\n  )) == null ? void 0 : _a2.get;\n  if (!untaintedAccessor) return instance[accessor];\n  untaintedAccessorCache[cacheKey] = untaintedAccessor;\n  return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n  const cacheKey = `${key}.${String(method)}`;\n  if (untaintedMethodCache[cacheKey])\n    return untaintedMethodCache[cacheKey].bind(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype(key);\n  const untaintedMethod = untaintedPrototype[method];\n  if (typeof untaintedMethod !== \"function\") return instance[method];\n  untaintedMethodCache[cacheKey] = untaintedMethod;\n  return untaintedMethod.bind(instance);\n}\nfunction ownerDocument(n) {\n  return getUntaintedAccessor(\"Node\", n, \"ownerDocument\");\n}\nfunction childNodes(n) {\n  return getUntaintedAccessor(\"Node\", n, \"childNodes\");\n}\nfunction parentNode(n) {\n  return getUntaintedAccessor(\"Node\", n, \"parentNode\");\n}\nfunction parentElement(n) {\n  return getUntaintedAccessor(\"Node\", n, \"parentElement\");\n}\nfunction textContent(n) {\n  return getUntaintedAccessor(\"Node\", n, \"textContent\");\n}\nfunction contains(n, other) {\n  return getUntaintedMethod(\"Node\", n, \"contains\")(other);\n}\nfunction getRootNode(n) {\n  return getUntaintedMethod(\"Node\", n, \"getRootNode\")();\n}\nfunction host(n) {\n  if (!n || !(\"host\" in n)) return null;\n  return getUntaintedAccessor(\"ShadowRoot\", n, \"host\");\n}\nfunction styleSheets(n) {\n  return n.styleSheets;\n}\nfunction shadowRoot(n) {\n  if (!n || !(\"shadowRoot\" in n)) return null;\n  return getUntaintedAccessor(\"Element\", n, \"shadowRoot\");\n}\nfunction querySelector(n, selectors) {\n  return getUntaintedAccessor(\"Element\", n, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n, selectors) {\n  return getUntaintedAccessor(\"Element\", n, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n  return [\n    getUntaintedPrototype(\"MutationObserver\").constructor,\n    untaintedBaseIframeCleanup[\"MutationObserver\"] ?? (() => {\n    })\n  ];\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n  nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction patch(source, name, replacement) {\n  try {\n    if (!(name in source)) {\n      return () => {\n      };\n    }\n    const original = source[name];\n    const wrapped = replacement(original);\n    if (typeof wrapped === \"function\") {\n      wrapped.prototype = wrapped.prototype || {};\n      Object.defineProperties(wrapped, {\n        __rrweb_original__: {\n          enumerable: false,\n          value: original\n        }\n      });\n    }\n    source[name] = wrapped;\n    return () => {\n      source[name] = original;\n    };\n  } catch {\n    return () => {\n    };\n  }\n}\nconst index = {\n  ownerDocument,\n  childNodes,\n  parentNode,\n  parentElement,\n  textContent,\n  contains,\n  getRootNode,\n  host,\n  styleSheets,\n  shadowRoot,\n  querySelector,\n  querySelectorAll,\n  nowTimestamp,\n  mutationObserverCtor,\n  patch\n};\nfunction isElement(n) {\n  return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n  const hostEl = (\n    // anchor and textarea elements also have a `host` property\n    // but only shadow roots have a `mode` property\n    n && \"host\" in n && \"mode\" in n && index.host(n) || null\n  );\n  return Boolean(\n    hostEl && \"shadowRoot\" in hostEl && index.shadowRoot(hostEl) === n\n  );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n  return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n  if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n    cssText = cssText.replace(\n      /\\sbackground-clip:\\s*text;/g,\n      \" -webkit-background-clip: text; background-clip: text;\"\n    );\n  }\n  return cssText;\n}\nfunction escapeImportStatement(rule) {\n  const { cssText } = rule;\n  if (cssText.split('\"').length < 3) return cssText;\n  const statement = [\"@import\", `url(${JSON.stringify(rule.href)})`];\n  if (rule.layerName === \"\") {\n    statement.push(`layer`);\n  } else if (rule.layerName) {\n    statement.push(`layer(${rule.layerName})`);\n  }\n  if (rule.supportsText) {\n    statement.push(`supports(${rule.supportsText})`);\n  }\n  if (rule.media.length) {\n    statement.push(rule.media.mediaText);\n  }\n  return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s) {\n  try {\n    const rules = s.rules || s.cssRules;\n    if (!rules) {\n      return null;\n    }\n    let sheetHref = s.href;\n    if (!sheetHref && s.ownerNode) {\n      sheetHref = s.ownerNode.baseURI;\n    }\n    const stringifiedRules = Array.from(\n      rules,\n      (rule) => stringifyRule(rule, sheetHref)\n    ).join(\"\");\n    return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n  } catch (error) {\n    return null;\n  }\n}\nfunction stringifyRule(rule, sheetHref) {\n  if (isCSSImportRule(rule)) {\n    let importStringified;\n    try {\n      importStringified = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      stringifyStylesheet(rule.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      escapeImportStatement(rule);\n    } catch (error) {\n      importStringified = rule.cssText;\n    }\n    if (rule.styleSheet.href) {\n      return absolutifyURLs(importStringified, rule.styleSheet.href);\n    }\n    return importStringified;\n  } else {\n    let ruleStringified = rule.cssText;\n    if (isCSSStyleRule(rule) && rule.selectorText.includes(\":\")) {\n      ruleStringified = fixSafariColons(ruleStringified);\n    }\n    if (sheetHref) {\n      return absolutifyURLs(ruleStringified, sheetHref);\n    }\n    return ruleStringified;\n  }\n}\nfunction fixSafariColons(cssStringified) {\n  const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule) {\n  return \"styleSheet\" in rule;\n}\nfunction isCSSStyleRule(rule) {\n  return \"selectorText\" in rule;\n}\nclass Mirror {\n  constructor() {\n    __publicField(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n) {\n    var _a2;\n    if (!n) return -1;\n    const id = (_a2 = this.getMeta(n)) == null ? void 0 : _a2.id;\n    return id ?? -1;\n  }\n  getNode(id) {\n    return this.idNodeMap.get(id) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(n) {\n    return this.nodeMetaMap.get(n) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n) {\n    const id = this.getId(n);\n    this.idNodeMap.delete(id);\n    if (n.childNodes) {\n      n.childNodes.forEach(\n        (childNode) => this.removeNodeFromMap(childNode)\n      );\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node) {\n    return this.nodeMetaMap.has(node);\n  }\n  add(n, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n);\n    this.nodeMetaMap.set(n, meta);\n  }\n  replace(id, n) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n, meta);\n    }\n    this.idNodeMap.set(id, n);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction createMirror() {\n  return new Mirror();\n}\nfunction maskInputValue({\n  element,\n  maskInputOptions,\n  tagName,\n  type,\n  value,\n  maskInputFn\n}) {\n  let text = value || \"\";\n  const actualType = type && toLowerCase(type);\n  if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n    if (maskInputFn) {\n      text = maskInputFn(text, element);\n    } else {\n      text = \"*\".repeat(text.length);\n    }\n  }\n  return text;\n}\nfunction toLowerCase(str) {\n  return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n  const ctx = canvas.getContext(\"2d\");\n  if (!ctx) return true;\n  const chunkSize = 50;\n  for (let x = 0; x < canvas.width; x += chunkSize) {\n    for (let y = 0; y < canvas.height; y += chunkSize) {\n      const getImageData = ctx.getImageData;\n      const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n      const pixelBuffer = new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        originalGetImageData.call(\n          ctx,\n          x,\n          y,\n          Math.min(chunkSize, canvas.width - x),\n          Math.min(chunkSize, canvas.height - y)\n        ).data.buffer\n      );\n      if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n    }\n  }\n  return true;\n}\nfunction getInputType(element) {\n  const type = element.type;\n  return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    toLowerCase(type)\n  ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n  let url;\n  try {\n    url = new URL(path, baseURL ?? window.location.href);\n  } catch (err) {\n    return null;\n  }\n  const regex = /\\.([0-9a-z]+)(?:$)/i;\n  const match = url.pathname.match(regex);\n  return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n  let origin = \"\";\n  if (url.indexOf(\"//\") > -1) {\n    origin = url.split(\"/\").slice(0, 3).join(\"/\");\n  } else {\n    origin = url.split(\"/\")[0];\n  }\n  origin = origin.split(\"?\")[0];\n  return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n  return (cssText || \"\").replace(\n    URL_IN_CSS_REF,\n    (origin, quote1, path1, quote2, path2, path3) => {\n      const filePath = path1 || path2 || path3;\n      const maybeQuote = quote1 || quote2 || \"\";\n      if (!filePath) {\n        return origin;\n      }\n      if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (DATA_URI.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (filePath[0] === \"/\") {\n        return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n      }\n      const filePathNoHash = filePath.split(\"#\")[0];\n      const maybeHash = filePath.substring(filePathNoHash.length);\n      const stack = href.split(\"#\")[0].split(\"/\");\n      const parts = filePathNoHash.split(\"/\");\n      stack.pop();\n      for (const part of parts) {\n        if (part === \".\") {\n          continue;\n        } else if (part === \"..\") {\n          stack.pop();\n        } else {\n          stack.push(part);\n        }\n      }\n      return `url(${maybeQuote}${stack.join(\"/\")}${maybeHash}${maybeQuote})`;\n    }\n  );\n}\nfunction normalizeCssString(cssText, _testNoPxNorm = false) {\n  if (_testNoPxNorm) {\n    return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n  } else {\n    return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\").replace(/0px/g, \"0\");\n  }\n}\nfunction splitCssText(cssText, style, _testNoPxNorm = false) {\n  const childNodes2 = Array.from(style.childNodes);\n  const splits = [];\n  let iterCount = 0;\n  if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n    let cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n    const normFactor = cssTextNorm.length / cssText.length;\n    for (let i = 1; i < childNodes2.length; i++) {\n      if (childNodes2[i].textContent && typeof childNodes2[i].textContent === \"string\") {\n        const textContentNorm = normalizeCssString(\n          childNodes2[i].textContent,\n          _testNoPxNorm\n        );\n        const jLimit = 100;\n        let j = 3;\n        for (; j < textContentNorm.length; j++) {\n          if (\n            // keep consuming css identifiers (to get a decent chunk more quickly)\n            textContentNorm[j].match(/[a-zA-Z0-9]/) || // substring needs to be unique to this section\n            textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1\n          ) {\n            continue;\n          }\n          break;\n        }\n        for (; j < textContentNorm.length; j++) {\n          let startSubstring = textContentNorm.substring(0, j);\n          let cssNormSplits = cssTextNorm.split(startSubstring);\n          let splitNorm = -1;\n          if (cssNormSplits.length === 2) {\n            splitNorm = cssNormSplits[0].length;\n          } else if (cssNormSplits.length > 2 && cssNormSplits[0] === \"\" && childNodes2[i - 1].textContent !== \"\") {\n            splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n          } else if (cssNormSplits.length === 1) {\n            startSubstring = startSubstring.substring(\n              0,\n              startSubstring.length - 1\n            );\n            cssNormSplits = cssTextNorm.split(startSubstring);\n            if (cssNormSplits.length <= 1) {\n              splits.push(cssText);\n              return splits;\n            }\n            j = jLimit + 1;\n          } else if (j === textContentNorm.length - 1) {\n            splitNorm = cssTextNorm.indexOf(startSubstring);\n          }\n          if (cssNormSplits.length >= 2 && j > jLimit) {\n            const prevTextContent = childNodes2[i - 1].textContent;\n            if (prevTextContent && typeof prevTextContent === \"string\") {\n              const prevMinLength = normalizeCssString(prevTextContent).length;\n              splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n            }\n            if (splitNorm === -1) {\n              splitNorm = cssNormSplits[0].length;\n            }\n          }\n          if (splitNorm !== -1) {\n            let k = Math.floor(splitNorm / normFactor);\n            for (; k > 0 && k < cssText.length; ) {\n              iterCount += 1;\n              if (iterCount > 50 * childNodes2.length) {\n                splits.push(cssText);\n                return splits;\n              }\n              const normPart = normalizeCssString(\n                cssText.substring(0, k),\n                _testNoPxNorm\n              );\n              if (normPart.length === splitNorm) {\n                splits.push(cssText.substring(0, k));\n                cssText = cssText.substring(k);\n                cssTextNorm = cssTextNorm.substring(splitNorm);\n                break;\n              } else if (normPart.length < splitNorm) {\n                k += Math.max(\n                  1,\n                  Math.floor((splitNorm - normPart.length) / normFactor)\n                );\n              } else {\n                k -= Math.max(\n                  1,\n                  Math.floor((normPart.length - splitNorm) * normFactor)\n                );\n              }\n            }\n            break;\n          }\n        }\n      }\n    }\n  }\n  splits.push(cssText);\n  return splits;\n}\nfunction markCssSplits(cssText, style) {\n  return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n  return _id++;\n}\nfunction getValidTagName(element) {\n  if (element instanceof HTMLFormElement) {\n    return \"form\";\n  }\n  const processedTagName = toLowerCase(element.tagName);\n  if (tagNameRegex.test(processedTagName)) {\n    return \"div\";\n  }\n  return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n  if (attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  let pos = 0;\n  function collectCharacters(regEx) {\n    let chars2;\n    const match = regEx.exec(attributeValue.substring(pos));\n    if (match) {\n      chars2 = match[0];\n      pos += chars2.length;\n      return chars2;\n    }\n    return \"\";\n  }\n  const output = [];\n  while (true) {\n    collectCharacters(SRCSET_COMMAS_OR_SPACES);\n    if (pos >= attributeValue.length) {\n      break;\n    }\n    let url = collectCharacters(SRCSET_NOT_SPACES);\n    if (url.slice(-1) === \",\") {\n      url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n      output.push(url);\n    } else {\n      let descriptorsStr = \"\";\n      url = absoluteToDoc(doc, url);\n      let inParens = false;\n      while (true) {\n        const c = attributeValue.charAt(pos);\n        if (c === \"\") {\n          output.push((url + descriptorsStr).trim());\n          break;\n        } else if (!inParens) {\n          if (c === \",\") {\n            pos += 1;\n            output.push((url + descriptorsStr).trim());\n            break;\n          } else if (c === \"(\") {\n            inParens = true;\n          }\n        } else {\n          if (c === \")\") {\n            inParens = false;\n          }\n        }\n        descriptorsStr += c;\n        pos += 1;\n      }\n    }\n  }\n  return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n  if (!attributeValue || attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n  return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n  let a = cachedDocument.get(doc);\n  if (!a) {\n    a = doc.createElement(\"a\");\n    cachedDocument.set(doc, a);\n  }\n  if (!customHref) {\n    customHref = \"\";\n  } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n    return customHref;\n  }\n  a.setAttribute(\"href\", customHref);\n  return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n  if (!value) {\n    return value;\n  }\n  if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"background\" && [\"table\", \"td\", \"th\"].includes(tagName)) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"srcset\") {\n    return getAbsoluteSrcsetString(doc, value);\n  } else if (name === \"style\") {\n    return absolutifyURLs(value, getHref(doc));\n  } else if (tagName === \"object\" && name === \"data\") {\n    return absoluteToDoc(doc, value);\n  }\n  return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n  return [\"video\", \"audio\"].includes(tagName) && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n  try {\n    if (typeof blockClass === \"string\") {\n      if (element.classList.contains(blockClass)) {\n        return true;\n      }\n    } else {\n      for (let eIndex = element.classList.length; eIndex--; ) {\n        const className = element.classList[eIndex];\n        if (blockClass.test(className)) {\n          return true;\n        }\n      }\n    }\n    if (blockSelector) {\n      return element.matches(blockSelector);\n    }\n  } catch (e) {\n  }\n  return false;\n}\nfunction classMatchesRegex(node, regex, checkAncestors) {\n  if (!node) return false;\n  if (node.nodeType !== node.ELEMENT_NODE) {\n    if (!checkAncestors) return false;\n    return classMatchesRegex(index.parentNode(node), regex, checkAncestors);\n  }\n  for (let eIndex = node.classList.length; eIndex--; ) {\n    const className = node.classList[eIndex];\n    if (regex.test(className)) {\n      return true;\n    }\n  }\n  if (!checkAncestors) return false;\n  return classMatchesRegex(index.parentNode(node), regex, checkAncestors);\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, checkAncestors) {\n  let el;\n  if (isElement(node)) {\n    el = node;\n    if (!index.childNodes(el).length) {\n      return false;\n    }\n  } else if (index.parentElement(node) === null) {\n    return false;\n  } else {\n    el = index.parentElement(node);\n  }\n  try {\n    if (typeof maskTextClass === \"string\") {\n      if (checkAncestors) {\n        if (el.closest(`.${maskTextClass}`)) return true;\n      } else {\n        if (el.classList.contains(maskTextClass)) return true;\n      }\n    } else {\n      if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n    }\n    if (maskTextSelector) {\n      if (checkAncestors) {\n        if (el.closest(maskTextSelector)) return true;\n      } else {\n        if (el.matches(maskTextSelector)) return true;\n      }\n    }\n  } catch (e) {\n  }\n  return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n  const win = iframeEl.contentWindow;\n  if (!win) {\n    return;\n  }\n  let fired = false;\n  let readyState;\n  try {\n    readyState = win.document.readyState;\n  } catch (error) {\n    return;\n  }\n  if (readyState !== \"complete\") {\n    const timer = setTimeout(() => {\n      if (!fired) {\n        listener();\n        fired = true;\n      }\n    }, iframeLoadTimeout);\n    iframeEl.addEventListener(\"load\", () => {\n      clearTimeout(timer);\n      fired = true;\n      listener();\n    });\n    return;\n  }\n  const blankUrl = \"about:blank\";\n  if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n    setTimeout(listener, 0);\n    return iframeEl.addEventListener(\"load\", listener);\n  }\n  iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n  let fired = false;\n  let styleSheetLoaded;\n  try {\n    styleSheetLoaded = link.sheet;\n  } catch (error) {\n    return;\n  }\n  if (styleSheetLoaded) return;\n  const timer = setTimeout(() => {\n    if (!fired) {\n      listener();\n      fired = true;\n    }\n  }, styleSheetLoadTimeout);\n  link.addEventListener(\"load\", () => {\n    clearTimeout(timer);\n    fired = true;\n    listener();\n  });\n}\nfunction serializeNode(n, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    cssCaptured = false\n  } = options;\n  const rootId = getRootId(doc, mirror2);\n  switch (n.nodeType) {\n    case n.DOCUMENT_NODE:\n      if (n.compatMode !== \"CSS1Compat\") {\n        return {\n          type: NodeType.Document,\n          childNodes: [],\n          compatMode: n.compatMode\n          // probably \"BackCompat\"\n        };\n      } else {\n        return {\n          type: NodeType.Document,\n          childNodes: []\n        };\n      }\n    case n.DOCUMENT_TYPE_NODE:\n      return {\n        type: NodeType.DocumentType,\n        name: n.name,\n        publicId: n.publicId,\n        systemId: n.systemId,\n        rootId\n      };\n    case n.ELEMENT_NODE:\n      return serializeElementNode(n, {\n        doc,\n        blockClass,\n        blockSelector,\n        inlineStylesheet,\n        maskInputOptions,\n        maskInputFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n        newlyAddedElement,\n        rootId\n      });\n    case n.TEXT_NODE:\n      return serializeTextNode(n, {\n        doc,\n        needsMask,\n        maskTextFn,\n        rootId,\n        cssCaptured\n      });\n    case n.CDATA_SECTION_NODE:\n      return {\n        type: NodeType.CDATA,\n        textContent: \"\",\n        rootId\n      };\n    case n.COMMENT_NODE:\n      return {\n        type: NodeType.Comment,\n        textContent: index.textContent(n) || \"\",\n        rootId\n      };\n    default:\n      return false;\n  }\n}\nfunction getRootId(doc, mirror2) {\n  if (!mirror2.hasNode(doc)) return void 0;\n  const docId = mirror2.getId(doc);\n  return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n, options) {\n  const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n  const parent = index.parentNode(n);\n  const parentTagName = parent && parent.tagName;\n  let textContent2 = \"\";\n  const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n  const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n  if (isScript) {\n    textContent2 = \"SCRIPT_PLACEHOLDER\";\n  } else if (!cssCaptured) {\n    textContent2 = index.textContent(n);\n    if (isStyle && textContent2) {\n      textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n    }\n  }\n  if (!isStyle && !isScript && textContent2 && needsMask) {\n    textContent2 = maskTextFn ? maskTextFn(textContent2, index.parentElement(n)) : textContent2.replace(/[\\S]/g, \"*\");\n  }\n  return {\n    type: NodeType.Text,\n    textContent: textContent2 || \"\",\n    rootId\n  };\n}\nfunction serializeElementNode(n, options) {\n  const {\n    doc,\n    blockClass,\n    blockSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    rootId\n  } = options;\n  const needBlock = _isBlockedElement(n, blockClass, blockSelector);\n  const tagName = getValidTagName(n);\n  let attributes = {};\n  const len = n.attributes.length;\n  for (let i = 0; i < len; i++) {\n    const attr = n.attributes[i];\n    if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n      attributes[attr.name] = transformAttribute(\n        doc,\n        tagName,\n        toLowerCase(attr.name),\n        attr.value\n      );\n    }\n  }\n  if (tagName === \"link\" && inlineStylesheet) {\n    const stylesheet = Array.from(doc.styleSheets).find((s) => {\n      return s.href === n.href;\n    });\n    let cssText = null;\n    if (stylesheet) {\n      cssText = stringifyStylesheet(stylesheet);\n    }\n    if (cssText) {\n      delete attributes.rel;\n      delete attributes.href;\n      attributes._cssText = cssText;\n    }\n  }\n  if (tagName === \"style\" && n.sheet) {\n    let cssText = stringifyStylesheet(\n      n.sheet\n    );\n    if (cssText) {\n      if (n.childNodes.length > 1) {\n        cssText = markCssSplits(cssText, n);\n      }\n      attributes._cssText = cssText;\n    }\n  }\n  if ([\"input\", \"textarea\", \"select\"].includes(tagName)) {\n    const value = n.value;\n    const checked = n.checked;\n    if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n      attributes.value = maskInputValue({\n        element: n,\n        type: getInputType(n),\n        tagName,\n        value,\n        maskInputOptions,\n        maskInputFn\n      });\n    } else if (checked) {\n      attributes.checked = checked;\n    }\n  }\n  if (tagName === \"option\") {\n    if (n.selected && !maskInputOptions[\"select\"]) {\n      attributes.selected = true;\n    } else {\n      delete attributes.selected;\n    }\n  }\n  if (tagName === \"dialog\" && n.open) {\n    attributes.rr_open_mode = n.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n  }\n  if (tagName === \"canvas\" && recordCanvas) {\n    if (n.__context === \"2d\") {\n      if (!is2DCanvasBlank(n)) {\n        attributes.rr_dataURL = n.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      }\n    } else if (!(\"__context\" in n)) {\n      const canvasDataURL = n.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      const blankCanvas = doc.createElement(\"canvas\");\n      blankCanvas.width = n.width;\n      blankCanvas.height = n.height;\n      const blankCanvasDataURL = blankCanvas.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      if (canvasDataURL !== blankCanvasDataURL) {\n        attributes.rr_dataURL = canvasDataURL;\n      }\n    }\n  }\n  if (tagName === \"img\" && inlineImages) {\n    if (!canvasService) {\n      canvasService = doc.createElement(\"canvas\");\n      canvasCtx = canvasService.getContext(\"2d\");\n    }\n    const image = n;\n    const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n    const priorCrossOrigin = image.crossOrigin;\n    const recordInlineImage = () => {\n      image.removeEventListener(\"load\", recordInlineImage);\n      try {\n        canvasService.width = image.naturalWidth;\n        canvasService.height = image.naturalHeight;\n        canvasCtx.drawImage(image, 0, 0);\n        attributes.rr_dataURL = canvasService.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      } catch (err) {\n        if (image.crossOrigin !== \"anonymous\") {\n          image.crossOrigin = \"anonymous\";\n          if (image.complete && image.naturalWidth !== 0)\n            recordInlineImage();\n          else image.addEventListener(\"load\", recordInlineImage);\n          return;\n        } else {\n          console.warn(\n            `Cannot inline img src=${imageSrc}! Error: ${err}`\n          );\n        }\n      }\n      if (image.crossOrigin === \"anonymous\") {\n        priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n      }\n    };\n    if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n    else image.addEventListener(\"load\", recordInlineImage);\n  }\n  if ([\"audio\", \"video\"].includes(tagName)) {\n    const mediaAttributes = attributes;\n    mediaAttributes.rr_mediaState = n.paused ? \"paused\" : \"played\";\n    mediaAttributes.rr_mediaCurrentTime = n.currentTime;\n    mediaAttributes.rr_mediaPlaybackRate = n.playbackRate;\n    mediaAttributes.rr_mediaMuted = n.muted;\n    mediaAttributes.rr_mediaLoop = n.loop;\n    mediaAttributes.rr_mediaVolume = n.volume;\n  }\n  if (!newlyAddedElement) {\n    if (n.scrollLeft) {\n      attributes.rr_scrollLeft = n.scrollLeft;\n    }\n    if (n.scrollTop) {\n      attributes.rr_scrollTop = n.scrollTop;\n    }\n  }\n  if (needBlock) {\n    const { width, height } = n.getBoundingClientRect();\n    attributes = {\n      class: attributes.class,\n      rr_width: `${width}px`,\n      rr_height: `${height}px`\n    };\n  }\n  if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n    if (!n.contentDocument) {\n      attributes.rr_src = attributes.src;\n    }\n    delete attributes.src;\n  }\n  let isCustomElement;\n  try {\n    if (customElements.get(tagName)) isCustomElement = true;\n  } catch (e) {\n  }\n  return {\n    type: NodeType.Element,\n    tagName,\n    attributes,\n    childNodes: [],\n    isSVG: isSVGElement(n) || void 0,\n    needBlock,\n    rootId,\n    isCustom: isCustomElement\n  };\n}\nfunction lowerIfExists(maybeAttr) {\n  if (maybeAttr === void 0 || maybeAttr === null) {\n    return \"\";\n  } else {\n    return maybeAttr.toLowerCase();\n  }\n}\nfunction slimDOMDefaults(_slimDOMOptions) {\n  if (_slimDOMOptions === true || _slimDOMOptions === \"all\") {\n    return {\n      script: true,\n      comment: true,\n      headFavicon: true,\n      headWhitespace: true,\n      headMetaSocial: true,\n      headMetaRobots: true,\n      headMetaHttpEquiv: true,\n      headMetaVerification: true,\n      // the following are off for slimDOMOptions === true,\n      // as they destroy some (hidden) info:\n      headMetaAuthorship: _slimDOMOptions === \"all\",\n      headMetaDescKeywords: _slimDOMOptions === \"all\",\n      headTitleMutations: _slimDOMOptions === \"all\"\n    };\n  } else if (_slimDOMOptions) {\n    return _slimDOMOptions;\n  }\n  return {};\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n  if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n    return true;\n  } else if (sn.type === NodeType.Element) {\n    if (slimDOMOptions.script && // script tag\n    (sn.tagName === \"script\" || // (module)preload link\n    sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n    sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n      return true;\n    } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n      return true;\n    } else if (sn.tagName === \"meta\") {\n      if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n        return true;\n      } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n        return true;\n      } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n        return true;\n      } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction serializeNodeWithId(n, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    maskTextClass,\n    maskTextSelector,\n    skipChild = false,\n    inlineStylesheet = true,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions = {},\n    inlineImages = false,\n    recordCanvas = false,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout = 5e3,\n    onStylesheetLoad,\n    stylesheetLoadTimeout = 5e3,\n    keepIframeSrcFn = () => false,\n    newlyAddedElement = false,\n    cssCaptured = false\n  } = options;\n  let { needsMask } = options;\n  let { preserveWhiteSpace = true } = options;\n  if (!needsMask) {\n    const checkAncestors = needsMask === void 0;\n    needsMask = needMaskingText(\n      n,\n      maskTextClass,\n      maskTextSelector,\n      checkAncestors\n    );\n  }\n  const _serializedNode = serializeNode(n, {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement,\n    cssCaptured\n  });\n  if (!_serializedNode) {\n    console.warn(n, \"not serialized\");\n    return null;\n  }\n  let id;\n  if (mirror2.hasNode(n)) {\n    id = mirror2.getId(n);\n  } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n    id = IGNORED_NODE;\n  } else {\n    id = genId();\n  }\n  const serializedNode = Object.assign(_serializedNode, { id });\n  mirror2.add(n, serializedNode);\n  if (id === IGNORED_NODE) {\n    return null;\n  }\n  if (onSerialize) {\n    onSerialize(n);\n  }\n  let recordChild = !skipChild;\n  if (serializedNode.type === NodeType.Element) {\n    recordChild = recordChild && !serializedNode.needBlock;\n    delete serializedNode.needBlock;\n    const shadowRootEl = index.shadowRoot(n);\n    if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n      serializedNode.isShadowHost = true;\n  }\n  if ((serializedNode.type === NodeType.Document || serializedNode.type === NodeType.Element) && recordChild) {\n    if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType.Element && serializedNode.tagName === \"head\") {\n      preserveWhiteSpace = false;\n    }\n    const bypassOptions = {\n      doc,\n      mirror: mirror2,\n      blockClass,\n      blockSelector,\n      needsMask,\n      maskTextClass,\n      maskTextSelector,\n      skipChild,\n      inlineStylesheet,\n      maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOMOptions,\n      dataURLOptions,\n      inlineImages,\n      recordCanvas,\n      preserveWhiteSpace,\n      onSerialize,\n      onIframeLoad,\n      iframeLoadTimeout,\n      onStylesheetLoad,\n      stylesheetLoadTimeout,\n      keepIframeSrcFn,\n      cssCaptured: false\n    };\n    if (serializedNode.type === NodeType.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n    else {\n      if (serializedNode.type === NodeType.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n        bypassOptions.cssCaptured = true;\n      }\n      for (const childN of Array.from(index.childNodes(n))) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          serializedNode.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n    let shadowRootEl = null;\n    if (isElement(n) && (shadowRootEl = index.shadowRoot(n))) {\n      for (const childN of Array.from(index.childNodes(shadowRootEl))) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n          serializedNode.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n  }\n  const parent = index.parentNode(n);\n  if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n    serializedNode.isShadow = true;\n  }\n  if (serializedNode.type === NodeType.Element && serializedNode.tagName === \"iframe\") {\n    onceIframeLoaded(\n      n,\n      () => {\n        const iframeDoc = n.contentDocument;\n        if (iframeDoc && onIframeLoad) {\n          const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n            doc: iframeDoc,\n            mirror: mirror2,\n            blockClass,\n            blockSelector,\n            needsMask,\n            maskTextClass,\n            maskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn\n          });\n          if (serializedIframeNode) {\n            onIframeLoad(\n              n,\n              serializedIframeNode\n            );\n          }\n        }\n      },\n      iframeLoadTimeout\n    );\n  }\n  if (serializedNode.type === NodeType.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n    onceStylesheetLoaded(\n      n,\n      () => {\n        if (onStylesheetLoad) {\n          const serializedLinkNode = serializeNodeWithId(n, {\n            doc,\n            mirror: mirror2,\n            blockClass,\n            blockSelector,\n            needsMask,\n            maskTextClass,\n            maskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn\n          });\n          if (serializedLinkNode) {\n            onStylesheetLoad(\n              n,\n              serializedLinkNode\n            );\n          }\n        }\n      },\n      stylesheetLoadTimeout\n    );\n  }\n  return serializedNode;\n}\nfunction snapshot(n, options) {\n  const {\n    mirror: mirror2 = new Mirror(),\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    inlineImages = false,\n    recordCanvas = false,\n    maskAllInputs = false,\n    maskTextFn,\n    maskInputFn,\n    slimDOM = false,\n    dataURLOptions,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn = () => false\n  } = options;\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true,\n    password: true\n  } : maskAllInputs === false ? {\n    password: true\n  } : maskAllInputs;\n  const slimDOMOptions = slimDOMDefaults(slimDOM);\n  return serializeNodeWithId(n, {\n    doc: n,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    maskTextClass,\n    maskTextSelector,\n    skipChild: false,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn,\n    newlyAddedElement: false\n  });\n}\nclass BaseRRNode {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  constructor(..._args) {\n    __publicField(this, \"parentElement\", null);\n    __publicField(this, \"parentNode\", null);\n    __publicField(this, \"ownerDocument\");\n    __publicField(this, \"firstChild\", null);\n    __publicField(this, \"lastChild\", null);\n    __publicField(this, \"previousSibling\", null);\n    __publicField(this, \"nextSibling\", null);\n    __publicField(this, \"ELEMENT_NODE\", 1);\n    __publicField(this, \"TEXT_NODE\", 3);\n    // corresponding nodeType value of standard HTML Node\n    __publicField(this, \"nodeType\");\n    __publicField(this, \"nodeName\");\n    __publicField(this, \"RRNodeType\");\n  }\n  get childNodes() {\n    const childNodes2 = [];\n    let childIterator = this.firstChild;\n    while (childIterator) {\n      childNodes2.push(childIterator);\n      childIterator = childIterator.nextSibling;\n    }\n    return childNodes2;\n  }\n  contains(node) {\n    if (!(node instanceof BaseRRNode)) return false;\n    else if (node.ownerDocument !== this.ownerDocument) return false;\n    else if (node === this) return true;\n    while (node.parentNode) {\n      if (node.parentNode === this) return true;\n      node = node.parentNode;\n    }\n    return false;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  appendChild(_newChild) {\n    throw new Error(\n      `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  insertBefore(_newChild, _refChild) {\n    throw new Error(\n      `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  removeChild(_node) {\n    throw new Error(\n      `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  toString() {\n    return \"RRNode\";\n  }\n}\nfunction on(type, fn, target = document) {\n  const options = { capture: true, passive: true };\n  target.addEventListener(type, fn, options);\n  return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n  map: {},\n  getId() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return -1;\n  },\n  getNode() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return null;\n  },\n  removeNodeFromMap() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  },\n  has() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return false;\n  },\n  reset() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n  _mirror = new Proxy(_mirror, {\n    get(target, prop, receiver) {\n      if (prop === \"map\") {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n      }\n      return Reflect.get(target, prop, receiver);\n    }\n  });\n}\nfunction throttle(func, wait, options = {}) {\n  let timeout = null;\n  let previous = 0;\n  return function(...args) {\n    const now = Date.now();\n    if (!previous && options.leading === false) {\n      previous = now;\n    }\n    const remaining = wait - (now - previous);\n    const context = this;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = now;\n      func.apply(context, args);\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(() => {\n        previous = options.leading === false ? 0 : Date.now();\n        timeout = null;\n        func.apply(context, args);\n      }, remaining);\n    }\n  };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n  const original = win.Object.getOwnPropertyDescriptor(target, key);\n  win.Object.defineProperty(\n    target,\n    key,\n    isRevoked ? d : {\n      set(value) {\n        setTimeout(() => {\n          d.set.call(this, value);\n        }, 0);\n        if (original && original.set) {\n          original.set.call(this, value);\n        }\n      }\n    }\n  );\n  return () => hookSetter(target, key, original || {}, true);\n}\nfunction getWindowScroll(win) {\n  var _a2, _b, _c, _d;\n  const doc = win.document;\n  return {\n    left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n    top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n  };\n}\nfunction getWindowHeight() {\n  return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n  return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node) {\n  if (!node) {\n    return null;\n  }\n  const el = node.nodeType === node.ELEMENT_NODE ? node : index.parentElement(node);\n  return el;\n}\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\n  if (!node) {\n    return false;\n  }\n  const el = closestElementOfNode(node);\n  if (!el) {\n    return false;\n  }\n  try {\n    if (typeof blockClass === \"string\") {\n      if (el.classList.contains(blockClass)) return true;\n      if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n    } else {\n      if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n    }\n  } catch (e) {\n  }\n  if (blockSelector) {\n    if (el.matches(blockSelector)) return true;\n    if (checkAncestors && el.closest(blockSelector) !== null) return true;\n  }\n  return false;\n}\nfunction isSerialized(n, mirror2) {\n  return mirror2.getId(n) !== -1;\n}\nfunction isIgnored(n, mirror2, slimDOMOptions) {\n  if (n.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n    return true;\n  }\n  return mirror2.getId(n) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n  if (isShadowRoot(target)) {\n    return false;\n  }\n  const id = mirror2.getId(target);\n  if (!mirror2.has(id)) {\n    return true;\n  }\n  const parent = index.parentNode(target);\n  if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n    return false;\n  }\n  if (!parent) {\n    return true;\n  }\n  return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n  return Boolean(event.changedTouches);\n}\nfunction polyfill(win = window) {\n  if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n    win.NodeList.prototype.forEach = Array.prototype.forEach;\n  }\n  if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n    win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n  }\n}\nfunction isSerializedIframe(n, mirror2) {\n  return Boolean(n.nodeName === \"IFRAME\" && mirror2.getMeta(n));\n}\nfunction isSerializedStylesheet(n, mirror2) {\n  return Boolean(\n    n.nodeName === \"LINK\" && n.nodeType === n.ELEMENT_NODE && n.getAttribute && n.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n)\n  );\n}\nfunction hasShadowRoot(n) {\n  if (!n) return false;\n  if (n instanceof BaseRRNode && \"shadowRoot\" in n) {\n    return Boolean(n.shadowRoot);\n  }\n  return Boolean(index.shadowRoot(n));\n}\nclass StyleSheetMirror {\n  constructor() {\n    __publicField(this, \"id\", 1);\n    __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n  }\n  getId(stylesheet) {\n    return this.styleIDMap.get(stylesheet) ?? -1;\n  }\n  has(stylesheet) {\n    return this.styleIDMap.has(stylesheet);\n  }\n  /**\n   * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n   */\n  add(stylesheet, id) {\n    if (this.has(stylesheet)) return this.getId(stylesheet);\n    let newId;\n    if (id === void 0) {\n      newId = this.id++;\n    } else newId = id;\n    this.styleIDMap.set(stylesheet, newId);\n    this.idStyleMap.set(newId, stylesheet);\n    return newId;\n  }\n  getStyle(id) {\n    return this.idStyleMap.get(id) || null;\n  }\n  reset() {\n    this.styleIDMap = /* @__PURE__ */ new WeakMap();\n    this.idStyleMap = /* @__PURE__ */ new Map();\n    this.id = 1;\n  }\n  generateId() {\n    return this.id++;\n  }\n}\nfunction getShadowHost(n) {\n  var _a2;\n  let shadowHost = null;\n  if (\"getRootNode\" in n && ((_a2 = index.getRootNode(n)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n)))\n    shadowHost = index.host(index.getRootNode(n));\n  return shadowHost;\n}\nfunction getRootShadowHost(n) {\n  let rootShadowHost = n;\n  let shadowHost;\n  while (shadowHost = getShadowHost(rootShadowHost))\n    rootShadowHost = shadowHost;\n  return rootShadowHost;\n}\nfunction shadowHostInDom(n) {\n  const doc = index.ownerDocument(n);\n  if (!doc) return false;\n  const shadowHost = getRootShadowHost(n);\n  return index.contains(doc, shadowHost);\n}\nfunction inDom(n) {\n  const doc = index.ownerDocument(n);\n  if (!doc) return false;\n  return index.contains(doc, n) || shadowHostInDom(n);\n}\nfunction isNodeInLinkedList(n) {\n  return \"__ln\" in n;\n}\nclass DoubleLinkedList {\n  constructor() {\n    __publicField(this, \"length\", 0);\n    __publicField(this, \"head\", null);\n    __publicField(this, \"tail\", null);\n  }\n  get(position) {\n    if (position >= this.length) {\n      throw new Error(\"Position outside of list range\");\n    }\n    let current = this.head;\n    for (let index2 = 0; index2 < position; index2++) {\n      current = (current == null ? void 0 : current.next) || null;\n    }\n    return current;\n  }\n  addNode(n) {\n    const node = {\n      value: n,\n      previous: null,\n      next: null\n    };\n    n.__ln = node;\n    if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n      const current = n.previousSibling.__ln.next;\n      node.next = current;\n      node.previous = n.previousSibling.__ln;\n      n.previousSibling.__ln.next = node;\n      if (current) {\n        current.previous = node;\n      }\n    } else if (n.nextSibling && isNodeInLinkedList(n.nextSibling) && n.nextSibling.__ln.previous) {\n      const current = n.nextSibling.__ln.previous;\n      node.previous = current;\n      node.next = n.nextSibling.__ln;\n      n.nextSibling.__ln.previous = node;\n      if (current) {\n        current.next = node;\n      }\n    } else {\n      if (this.head) {\n        this.head.previous = node;\n      }\n      node.next = this.head;\n      this.head = node;\n    }\n    if (node.next === null) {\n      this.tail = node;\n    }\n    this.length++;\n  }\n  removeNode(n) {\n    const current = n.__ln;\n    if (!this.head) {\n      return;\n    }\n    if (!current.previous) {\n      this.head = current.next;\n      if (this.head) {\n        this.head.previous = null;\n      } else {\n        this.tail = null;\n      }\n    } else {\n      current.previous.next = current.next;\n      if (current.next) {\n        current.next.previous = current.previous;\n      } else {\n        this.tail = current.previous;\n      }\n    }\n    if (n.__ln) {\n      delete n.__ln;\n    }\n    this.length--;\n  }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n  constructor() {\n    __publicField(this, \"frozen\", false);\n    __publicField(this, \"locked\", false);\n    __publicField(this, \"texts\", []);\n    __publicField(this, \"attributes\", []);\n    __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"removes\", []);\n    __publicField(this, \"mapRemoves\", []);\n    __publicField(this, \"movedMap\", {});\n    /**\n     * the browser MutationObserver emits multiple mutations after\n     * a delay for performance reasons, making tracing added nodes hard\n     * in our `processMutations` callback function.\n     * For example, if we append an element el_1 into body, and then append\n     * another element el_2 into el_1, these two mutations may be passed to the\n     * callback function together when the two operations were done.\n     * Generally we need to trace child nodes of newly added nodes, but in this\n     * case if we count el_2 as el_1's child node in the first mutation record,\n     * then we will count el_2 again in the second mutation record which was\n     * duplicated.\n     * To avoid of duplicate counting added nodes, we use a Set to store\n     * added nodes and its child nodes during iterate mutation records. Then\n     * collect added nodes from the Set which have no duplicate copy. But\n     * this also causes newly added nodes will not be serialized with id ASAP,\n     * which means all the id related calculation should be lazy too.\n     */\n    __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"blockClass\");\n    __publicField(this, \"blockSelector\");\n    __publicField(this, \"maskTextClass\");\n    __publicField(this, \"maskTextSelector\");\n    __publicField(this, \"inlineStylesheet\");\n    __publicField(this, \"maskInputOptions\");\n    __publicField(this, \"maskTextFn\");\n    __publicField(this, \"maskInputFn\");\n    __publicField(this, \"keepIframeSrcFn\");\n    __publicField(this, \"recordCanvas\");\n    __publicField(this, \"inlineImages\");\n    __publicField(this, \"slimDOMOptions\");\n    __publicField(this, \"dataURLOptions\");\n    __publicField(this, \"doc\");\n    __publicField(this, \"mirror\");\n    __publicField(this, \"iframeManager\");\n    __publicField(this, \"stylesheetManager\");\n    __publicField(this, \"shadowDomManager\");\n    __publicField(this, \"canvasManager\");\n    __publicField(this, \"processedNodeManager\");\n    __publicField(this, \"unattachedDoc\");\n    __publicField(this, \"processMutations\", (mutations) => {\n      mutations.forEach(this.processMutation);\n      this.emit();\n    });\n    __publicField(this, \"emit\", () => {\n      if (this.frozen || this.locked) {\n        return;\n      }\n      const adds = [];\n      const addedIds = /* @__PURE__ */ new Set();\n      const addList = new DoubleLinkedList();\n      const getNextId = (n) => {\n        let ns = n;\n        let nextId = IGNORED_NODE;\n        while (nextId === IGNORED_NODE) {\n          ns = ns && ns.nextSibling;\n          nextId = ns && this.mirror.getId(ns);\n        }\n        return nextId;\n      };\n      const pushAdd = (n) => {\n        const parent = index.parentNode(n);\n        if (!parent || !inDom(n)) {\n          return;\n        }\n        let cssCaptured = false;\n        if (n.nodeType === Node.TEXT_NODE) {\n          const parentTag = parent.tagName;\n          if (parentTag === \"TEXTAREA\") {\n            return;\n          } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n            cssCaptured = true;\n          }\n        }\n        const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n)) : this.mirror.getId(parent);\n        const nextId = getNextId(n);\n        if (parentId === -1 || nextId === -1) {\n          return addList.addNode(n);\n        }\n        const sn = serializeNodeWithId(n, {\n          doc: this.doc,\n          mirror: this.mirror,\n          blockClass: this.blockClass,\n          blockSelector: this.blockSelector,\n          maskTextClass: this.maskTextClass,\n          maskTextSelector: this.maskTextSelector,\n          skipChild: true,\n          newlyAddedElement: true,\n          inlineStylesheet: this.inlineStylesheet,\n          maskInputOptions: this.maskInputOptions,\n          maskTextFn: this.maskTextFn,\n          maskInputFn: this.maskInputFn,\n          slimDOMOptions: this.slimDOMOptions,\n          dataURLOptions: this.dataURLOptions,\n          recordCanvas: this.recordCanvas,\n          inlineImages: this.inlineImages,\n          onSerialize: (currentN) => {\n            if (isSerializedIframe(currentN, this.mirror)) {\n              this.iframeManager.addIframe(currentN);\n            }\n            if (isSerializedStylesheet(currentN, this.mirror)) {\n              this.stylesheetManager.trackLinkElement(\n                currentN\n              );\n            }\n            if (hasShadowRoot(n)) {\n              this.shadowDomManager.addShadowRoot(index.shadowRoot(n), this.doc);\n            }\n          },\n          onIframeLoad: (iframe, childSn) => {\n            this.iframeManager.attachIframe(iframe, childSn);\n            this.shadowDomManager.observeAttachShadow(iframe);\n          },\n          onStylesheetLoad: (link, childSn) => {\n            this.stylesheetManager.attachLinkElement(link, childSn);\n          },\n          cssCaptured\n        });\n        if (sn) {\n          adds.push({\n            parentId,\n            nextId,\n            node: sn\n          });\n          addedIds.add(sn.id);\n        }\n      };\n      while (this.mapRemoves.length) {\n        this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n      }\n      for (const n of this.movedSet) {\n        if (isParentRemoved(this.removesSubTreeCache, n, this.mirror) && !this.movedSet.has(index.parentNode(n))) {\n          continue;\n        }\n        pushAdd(n);\n      }\n      for (const n of this.addedSet) {\n        if (!isAncestorInSet(this.droppedSet, n) && !isParentRemoved(this.removesSubTreeCache, n, this.mirror)) {\n          pushAdd(n);\n        } else if (isAncestorInSet(this.movedSet, n)) {\n          pushAdd(n);\n        } else {\n          this.droppedSet.add(n);\n        }\n      }\n      let candidate = null;\n      while (addList.length) {\n        let node = null;\n        if (candidate) {\n          const parentId = this.mirror.getId(index.parentNode(candidate.value));\n          const nextId = getNextId(candidate.value);\n          if (parentId !== -1 && nextId !== -1) {\n            node = candidate;\n          }\n        }\n        if (!node) {\n          let tailNode = addList.tail;\n          while (tailNode) {\n            const _node = tailNode;\n            tailNode = tailNode.previous;\n            if (_node) {\n              const parentId = this.mirror.getId(index.parentNode(_node.value));\n              const nextId = getNextId(_node.value);\n              if (nextId === -1) continue;\n              else if (parentId !== -1) {\n                node = _node;\n                break;\n              } else {\n                const unhandledNode = _node.value;\n                const parent = index.parentNode(unhandledNode);\n                if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n                  const shadowHost = index.host(parent);\n                  const parentId2 = this.mirror.getId(shadowHost);\n                  if (parentId2 !== -1) {\n                    node = _node;\n                    break;\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (!node) {\n          while (addList.head) {\n            addList.removeNode(addList.head.value);\n          }\n          break;\n        }\n        candidate = node.previous;\n        addList.removeNode(node.value);\n        pushAdd(node.value);\n      }\n      const payload = {\n        texts: this.texts.map((text) => {\n          const n = text.node;\n          const parent = index.parentNode(n);\n          if (parent && parent.tagName === \"TEXTAREA\") {\n            this.genTextAreaValueMutation(parent);\n          }\n          return {\n            id: this.mirror.getId(n),\n            value: text.value\n          };\n        }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n        attributes: this.attributes.map((attribute) => {\n          const { attributes } = attribute;\n          if (typeof attributes.style === \"string\") {\n            const diffAsStr = JSON.stringify(attribute.styleDiff);\n            const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n            if (diffAsStr.length < attributes.style.length) {\n              if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n                attributes.style = attribute.styleDiff;\n              }\n            }\n          }\n          return {\n            id: this.mirror.getId(attribute.node),\n            attributes\n          };\n        }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n        removes: this.removes,\n        adds\n      };\n      if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n        return;\n      }\n      this.texts = [];\n      this.attributes = [];\n      this.attributeMap = /* @__PURE__ */ new WeakMap();\n      this.removes = [];\n      this.addedSet = /* @__PURE__ */ new Set();\n      this.movedSet = /* @__PURE__ */ new Set();\n      this.droppedSet = /* @__PURE__ */ new Set();\n      this.removesSubTreeCache = /* @__PURE__ */ new Set();\n      this.movedMap = {};\n      this.mutationCb(payload);\n    });\n    __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n      let item = this.attributeMap.get(textarea);\n      if (!item) {\n        item = {\n          node: textarea,\n          attributes: {},\n          styleDiff: {},\n          _unchangedStyles: {}\n        };\n        this.attributes.push(item);\n        this.attributeMap.set(textarea, item);\n      }\n      const value = Array.from(\n        index.childNodes(textarea),\n        (cn) => index.textContent(cn) || \"\"\n      ).join(\"\");\n      item.attributes.value = maskInputValue({\n        element: textarea,\n        maskInputOptions: this.maskInputOptions,\n        tagName: textarea.tagName,\n        type: getInputType(textarea),\n        value,\n        maskInputFn: this.maskInputFn\n      });\n    });\n    __publicField(this, \"processMutation\", (m) => {\n      if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n        return;\n      }\n      switch (m.type) {\n        case \"characterData\": {\n          const value = index.textContent(m.target);\n          if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n            this.texts.push({\n              value: needMaskingText(\n                m.target,\n                this.maskTextClass,\n                this.maskTextSelector,\n                true\n                // checkAncestors\n              ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n              node: m.target\n            });\n          }\n          break;\n        }\n        case \"attributes\": {\n          const target = m.target;\n          let attributeName = m.attributeName;\n          let value = m.target.getAttribute(attributeName);\n          if (attributeName === \"value\") {\n            const type = getInputType(target);\n            value = maskInputValue({\n              element: target,\n              maskInputOptions: this.maskInputOptions,\n              tagName: target.tagName,\n              type,\n              value,\n              maskInputFn: this.maskInputFn\n            });\n          }\n          if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n            return;\n          }\n          let item = this.attributeMap.get(m.target);\n          if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n            if (!target.contentDocument) {\n              attributeName = \"rr_src\";\n            } else {\n              return;\n            }\n          }\n          if (!item) {\n            item = {\n              node: m.target,\n              attributes: {},\n              styleDiff: {},\n              _unchangedStyles: {}\n            };\n            this.attributes.push(item);\n            this.attributeMap.set(m.target, item);\n          }\n          if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n            target.setAttribute(\"data-rr-is-password\", \"true\");\n          }\n          if (!ignoreAttribute(target.tagName, attributeName)) {\n            item.attributes[attributeName] = transformAttribute(\n              this.doc,\n              toLowerCase(target.tagName),\n              toLowerCase(attributeName),\n              value\n            );\n            if (attributeName === \"style\") {\n              if (!this.unattachedDoc) {\n                try {\n                  this.unattachedDoc = document.implementation.createHTMLDocument();\n                } catch (e) {\n                  this.unattachedDoc = this.doc;\n                }\n              }\n              const old = this.unattachedDoc.createElement(\"span\");\n              if (m.oldValue) {\n                old.setAttribute(\"style\", m.oldValue);\n              }\n              for (const pname of Array.from(target.style)) {\n                const newValue = target.style.getPropertyValue(pname);\n                const newPriority = target.style.getPropertyPriority(pname);\n                if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n                  if (newPriority === \"\") {\n                    item.styleDiff[pname] = newValue;\n                  } else {\n                    item.styleDiff[pname] = [newValue, newPriority];\n                  }\n                } else {\n                  item._unchangedStyles[pname] = [newValue, newPriority];\n                }\n              }\n              for (const pname of Array.from(old.style)) {\n                if (target.style.getPropertyValue(pname) === \"\") {\n                  item.styleDiff[pname] = false;\n                }\n              }\n            } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n              if (target.matches(\"dialog:modal\")) {\n                item.attributes[\"rr_open_mode\"] = \"modal\";\n              } else {\n                item.attributes[\"rr_open_mode\"] = \"non-modal\";\n              }\n            }\n          }\n          break;\n        }\n        case \"childList\": {\n          if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n            return;\n          if (m.target.tagName === \"TEXTAREA\") {\n            this.genTextAreaValueMutation(m.target);\n            return;\n          }\n          m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n          m.removedNodes.forEach((n) => {\n            const nodeId = this.mirror.getId(n);\n            const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n            if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n, this.mirror, this.slimDOMOptions) || !isSerialized(n, this.mirror)) {\n              return;\n            }\n            if (this.addedSet.has(n)) {\n              deepDelete(this.addedSet, n);\n              this.droppedSet.add(n);\n            } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n            else if (isAncestorRemoved(m.target, this.mirror)) ;\n            else if (this.movedSet.has(n) && this.movedMap[moveKey(nodeId, parentId)]) {\n              deepDelete(this.movedSet, n);\n            } else {\n              this.removes.push({\n                parentId,\n                id: nodeId,\n                isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n              });\n              processRemoves(n, this.removesSubTreeCache);\n            }\n            this.mapRemoves.push(n);\n          });\n          break;\n        }\n      }\n    });\n    /**\n     * Make sure you check if `n`'s parent is blocked before calling this function\n     * */\n    __publicField(this, \"genAdds\", (n, target) => {\n      if (this.processedNodeManager.inOtherBuffer(n, this)) return;\n      if (this.addedSet.has(n) || this.movedSet.has(n)) return;\n      if (this.mirror.hasNode(n)) {\n        if (isIgnored(n, this.mirror, this.slimDOMOptions)) {\n          return;\n        }\n        this.movedSet.add(n);\n        let targetId = null;\n        if (target && this.mirror.hasNode(target)) {\n          targetId = this.mirror.getId(target);\n        }\n        if (targetId && targetId !== -1) {\n          this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n        }\n      } else {\n        this.addedSet.add(n);\n        this.droppedSet.delete(n);\n      }\n      if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\n        index.childNodes(n).forEach((childN) => this.genAdds(childN));\n        if (hasShadowRoot(n)) {\n          index.childNodes(index.shadowRoot(n)).forEach((childN) => {\n            this.processedNodeManager.add(childN, this);\n            this.genAdds(childN, n);\n          });\n        }\n      }\n    });\n  }\n  init(options) {\n    [\n      \"mutationCb\",\n      \"blockClass\",\n      \"blockSelector\",\n      \"maskTextClass\",\n      \"maskTextSelector\",\n      \"inlineStylesheet\",\n      \"maskInputOptions\",\n      \"maskTextFn\",\n      \"maskInputFn\",\n      \"keepIframeSrcFn\",\n      \"recordCanvas\",\n      \"inlineImages\",\n      \"slimDOMOptions\",\n      \"dataURLOptions\",\n      \"doc\",\n      \"mirror\",\n      \"iframeManager\",\n      \"stylesheetManager\",\n      \"shadowDomManager\",\n      \"canvasManager\",\n      \"processedNodeManager\"\n    ].forEach((key) => {\n      this[key] = options[key];\n    });\n  }\n  freeze() {\n    this.frozen = true;\n    this.canvasManager.freeze();\n  }\n  unfreeze() {\n    this.frozen = false;\n    this.canvasManager.unfreeze();\n    this.emit();\n  }\n  isFrozen() {\n    return this.frozen;\n  }\n  lock() {\n    this.locked = true;\n    this.canvasManager.lock();\n  }\n  unlock() {\n    this.locked = false;\n    this.canvasManager.unlock();\n    this.emit();\n  }\n  reset() {\n    this.shadowDomManager.reset();\n    this.canvasManager.reset();\n  }\n}\nfunction deepDelete(addsSet, n) {\n  addsSet.delete(n);\n  index.childNodes(n).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n, cache) {\n  const queue = [n];\n  while (queue.length) {\n    const next = queue.pop();\n    if (cache.has(next)) continue;\n    cache.add(next);\n    index.childNodes(next).forEach((n2) => queue.push(n2));\n  }\n  return;\n}\nfunction isParentRemoved(removes, n, mirror2) {\n  if (removes.size === 0) return false;\n  return _isParentRemoved(removes, n);\n}\nfunction _isParentRemoved(removes, n, _mirror2) {\n  const node = index.parentNode(n);\n  if (!node) return false;\n  return removes.has(node);\n}\nfunction isAncestorInSet(set, n) {\n  if (set.size === 0) return false;\n  return _isAncestorInSet(set, n);\n}\nfunction _isAncestorInSet(set, n) {\n  const parent = index.parentNode(n);\n  if (!parent) {\n    return false;\n  }\n  if (set.has(parent)) {\n    return true;\n  }\n  return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n  errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n  errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n  if (!errorHandler) {\n    return cb;\n  }\n  const rrwebWrapped = (...rest) => {\n    try {\n      return cb(...rest);\n    } catch (error) {\n      if (errorHandler && errorHandler(error) === true) {\n        return;\n      }\n      throw error;\n    }\n  };\n  return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n  try {\n    if (\"composedPath\" in event) {\n      const path = event.composedPath();\n      if (path.length) {\n        return path[0];\n      }\n    } else if (\"path\" in event && event.path.length) {\n      return event.path[0];\n    }\n  } catch {\n  }\n  return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n  const mutationBuffer = new MutationBuffer();\n  mutationBuffers.push(mutationBuffer);\n  mutationBuffer.init(options);\n  const [ObserverCtor, iframeCleanup] = mutationObserverCtor();\n  const observer = new ObserverCtor(\n    callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n  );\n  observer.observe(rootEl, {\n    attributes: true,\n    attributeOldValue: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true\n  });\n  // Patched by @dash0/sdk-web: drop the buffer from the module-level list once its observer is disconnected.\n  // Upstream only ever pushes to `mutationBuffers`, so every stopped recorder (and every shadow root observed\n  // during a recording) stays reachable, together with the full snapshot its closure references.\n  const disconnect = observer.disconnect.bind(observer);\n  observer.disconnect = () => {\n    disconnect();\n    const index = mutationBuffers.indexOf(mutationBuffer);\n    if (index !== -1) mutationBuffers.splice(index, 1);\n  };\n  return [observer, iframeCleanup];\n}\nfunction initMoveObserver({\n  mousemoveCb,\n  sampling,\n  doc,\n  mirror: mirror2\n}) {\n  if (sampling.mousemove === false) {\n    return () => {\n    };\n  }\n  const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n  const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n  let positions = [];\n  let timeBaseline;\n  const wrappedCb = throttle(\n    callbackWrapper(\n      (source) => {\n        const totalOffset = Date.now() - timeBaseline;\n        mousemoveCb(\n          positions.map((p) => {\n            p.timeOffset -= totalOffset;\n            return p;\n          }),\n          source\n        );\n        positions = [];\n        timeBaseline = null;\n      }\n    ),\n    callbackThreshold\n  );\n  const updatePosition = callbackWrapper(\n    throttle(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n        if (!timeBaseline) {\n          timeBaseline = nowTimestamp();\n        }\n        positions.push({\n          x: clientX,\n          y: clientY,\n          id: mirror2.getId(target),\n          timeOffset: nowTimestamp() - timeBaseline\n        });\n        wrappedCb(\n          typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n        );\n      }),\n      threshold,\n      {\n        trailing: false\n      }\n    )\n  );\n  const handlers = [\n    on(\"mousemove\", updatePosition, doc),\n    on(\"touchmove\", updatePosition, doc),\n    on(\"drag\", updatePosition, doc)\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initMouseInteractionObserver({\n  mouseInteractionCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  sampling\n}) {\n  if (sampling.mouseInteraction === false) {\n    return () => {\n    };\n  }\n  const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n  const handlers = [];\n  let currentPointerType = null;\n  const getHandler = (eventKey) => {\n    return (event) => {\n      const target = getEventTarget(event);\n      if (isBlocked(target, blockClass, blockSelector, true)) {\n        return;\n      }\n      let pointerType = null;\n      let thisEventKey = eventKey;\n      if (\"pointerType\" in event) {\n        switch (event.pointerType) {\n          case \"mouse\":\n            pointerType = PointerTypes.Mouse;\n            break;\n          case \"touch\":\n            pointerType = PointerTypes.Touch;\n            break;\n          case \"pen\":\n            pointerType = PointerTypes.Pen;\n            break;\n        }\n        if (pointerType === PointerTypes.Touch) {\n          if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n            thisEventKey = \"TouchStart\";\n          } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n            thisEventKey = \"TouchEnd\";\n          }\n        } else if (pointerType === PointerTypes.Pen) ;\n      } else if (legacy_isTouchEvent(event)) {\n        pointerType = PointerTypes.Touch;\n      }\n      if (pointerType !== null) {\n        currentPointerType = pointerType;\n        if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n          pointerType = null;\n        }\n      } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n        pointerType = currentPointerType;\n        currentPointerType = null;\n      }\n      const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n      if (!e) {\n        return;\n      }\n      const id = mirror2.getId(target);\n      const { clientX, clientY } = e;\n      callbackWrapper(mouseInteractionCb)({\n        type: MouseInteractions[thisEventKey],\n        id,\n        x: clientX,\n        y: clientY,\n        ...pointerType !== null && { pointerType }\n      });\n    };\n  };\n  Object.keys(MouseInteractions).filter(\n    (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n  ).forEach((eventKey) => {\n    let eventName = toLowerCase(eventKey);\n    const handler = getHandler(eventKey);\n    if (window.PointerEvent) {\n      switch (MouseInteractions[eventKey]) {\n        case MouseInteractions.MouseDown:\n        case MouseInteractions.MouseUp:\n          eventName = eventName.replace(\n            \"mouse\",\n            \"pointer\"\n          );\n          break;\n        case MouseInteractions.TouchStart:\n        case MouseInteractions.TouchEnd:\n          return;\n      }\n    }\n    handlers.push(on(eventName, handler, doc));\n  });\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initScrollObserver({\n  scrollCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  sampling\n}) {\n  const updatePosition = callbackWrapper(\n    throttle(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n          return;\n        }\n        const id = mirror2.getId(target);\n        if (target === doc && doc.defaultView) {\n          const scrollLeftTop = getWindowScroll(doc.defaultView);\n          scrollCb({\n            id,\n            x: scrollLeftTop.left,\n            y: scrollLeftTop.top\n          });\n        } else {\n          scrollCb({\n            id,\n            x: target.scrollLeft,\n            y: target.scrollTop\n          });\n        }\n      }),\n      sampling.scroll || 100\n    )\n  );\n  return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n  let lastH = -1;\n  let lastW = -1;\n  const updateDimension = callbackWrapper(\n    throttle(\n      callbackWrapper(() => {\n        const height = getWindowHeight();\n        const width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n          viewportResizeCb({\n            width: Number(width),\n            height: Number(height)\n          });\n          lastH = height;\n          lastW = width;\n        }\n      }),\n      200\n    )\n  );\n  return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n  inputCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  ignoreClass,\n  ignoreSelector,\n  maskInputOptions,\n  maskInputFn,\n  sampling,\n  userTriggeredOnInput\n}) {\n  function eventHandler(event) {\n    let target = getEventTarget(event);\n    const userTriggered = event.isTrusted;\n    const tagName = target && target.tagName;\n    if (target && tagName === \"OPTION\") {\n      target = index.parentElement(target);\n    }\n    if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n      return;\n    }\n    if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n      return;\n    }\n    let text = target.value;\n    let isChecked = false;\n    const type = getInputType(target) || \"\";\n    if (type === \"radio\" || type === \"checkbox\") {\n      isChecked = target.checked;\n    } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n      text = maskInputValue({\n        element: target,\n        maskInputOptions,\n        tagName,\n        type,\n        value: text,\n        maskInputFn\n      });\n    }\n    cbWithDedup(\n      target,\n      userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n    );\n    const name = target.name;\n    if (type === \"radio\" && name && isChecked) {\n      doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n        if (el !== target) {\n          const text2 = el.value;\n          cbWithDedup(\n            el,\n            userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n          );\n        }\n      });\n    }\n  }\n  function cbWithDedup(target, v) {\n    const lastInputValue = lastInputValueMap.get(target);\n    if (!lastInputValue || lastInputValue.text !== v.text || lastInputValue.isChecked !== v.isChecked) {\n      lastInputValueMap.set(target, v);\n      const id = mirror2.getId(target);\n      callbackWrapper(inputCb)({\n        ...v,\n        id\n      });\n    }\n  }\n  const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n  const handlers = events.map(\n    (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n  );\n  const currentWindow = doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n      handlers.forEach((h) => h());\n    };\n  }\n  const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n    currentWindow.HTMLInputElement.prototype,\n    \"value\"\n  );\n  const hookProperties = [\n    [currentWindow.HTMLInputElement.prototype, \"value\"],\n    [currentWindow.HTMLInputElement.prototype, \"checked\"],\n    [currentWindow.HTMLSelectElement.prototype, \"value\"],\n    [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n    // Some UI library use selectedIndex to set select value\n    [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n    [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n  ];\n  if (propertyDescriptor && propertyDescriptor.set) {\n    handlers.push(\n      ...hookProperties.map(\n        (p) => hookSetter(\n          p[0],\n          p[1],\n          {\n            set() {\n              callbackWrapper(eventHandler)({\n                target: this,\n                isTrusted: false\n                // userTriggered to false as this could well be programmatic\n              });\n            }\n          },\n          false,\n          currentWindow\n        )\n      )\n    );\n  }\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction getNestedCSSRulePositions(rule) {\n  const positions = [];\n  function recurse(childRule, pos) {\n    if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n      const rules = Array.from(\n        childRule.parentRule.cssRules\n      );\n      const index2 = rules.indexOf(childRule);\n      pos.unshift(index2);\n      return recurse(childRule.parentRule, pos);\n    } else if (childRule.parentStyleSheet) {\n      const rules = Array.from(childRule.parentStyleSheet.cssRules);\n      const index2 = rules.indexOf(childRule);\n      pos.unshift(index2);\n    }\n    return pos;\n  }\n  return recurse(rule, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n  let id, styleId;\n  if (!sheet) return {};\n  if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n  else styleId = styleMirror.getId(sheet);\n  return {\n    styleId,\n    id\n  };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n  if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n    return () => {\n    };\n  }\n  const insertRule = win.CSSStyleSheet.prototype.insertRule;\n  win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        const [rule, index2] = argumentsList;\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            adds: [{ rule, index: index2 }]\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n    const rule = `${selector} { ${styleBlock} }`;\n    return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule, index2]);\n  };\n  const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n  win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        const [index2] = argumentsList;\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            removes: [{ index: index2 }]\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  win.CSSStyleSheet.prototype.removeRule = function(index2) {\n    return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n  };\n  let replace;\n  if (win.CSSStyleSheet.prototype.replace) {\n    replace = win.CSSStyleSheet.prototype.replace;\n    win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n      apply: callbackWrapper(\n        (target, thisArg, argumentsList) => {\n          const [text] = argumentsList;\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror2,\n            stylesheetManager.styleMirror\n          );\n          if (id && id !== -1 || styleId && styleId !== -1) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replace: text\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        }\n      )\n    });\n  }\n  let replaceSync;\n  if (win.CSSStyleSheet.prototype.replaceSync) {\n    replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n    win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n      apply: callbackWrapper(\n        (target, thisArg, argumentsList) => {\n          const [text] = argumentsList;\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror2,\n            stylesheetManager.styleMirror\n          );\n          if (id && id !== -1 || styleId && styleId !== -1) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replaceSync: text\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        }\n      )\n    });\n  }\n  const supportedNestedCSSRuleTypes = {};\n  if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n    supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n  } else {\n    if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n      supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n      supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n      supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n    }\n  }\n  const unmodifiedFunctions = {};\n  Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n    unmodifiedFunctions[typeKey] = {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      insertRule: type.prototype.insertRule,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      deleteRule: type.prototype.deleteRule\n    };\n    type.prototype.insertRule = new Proxy(\n      unmodifiedFunctions[typeKey].insertRule,\n      {\n        apply: callbackWrapper(\n          (target, thisArg, argumentsList) => {\n            const [rule, index2] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror2,\n              stylesheetManager.styleMirror\n            );\n            if (id && id !== -1 || styleId && styleId !== -1) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                adds: [\n                  {\n                    rule,\n                    index: [\n                      ...getNestedCSSRulePositions(thisArg),\n                      index2 || 0\n                      // defaults to 0\n                    ]\n                  }\n                ]\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          }\n        )\n      }\n    );\n    type.prototype.deleteRule = new Proxy(\n      unmodifiedFunctions[typeKey].deleteRule,\n      {\n        apply: callbackWrapper(\n          (target, thisArg, argumentsList) => {\n            const [index2] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror2,\n              stylesheetManager.styleMirror\n            );\n            if (id && id !== -1 || styleId && styleId !== -1) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                removes: [\n                  { index: [...getNestedCSSRulePositions(thisArg), index2] }\n                ]\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          }\n        )\n      }\n    );\n  });\n  return callbackWrapper(() => {\n    win.CSSStyleSheet.prototype.insertRule = insertRule;\n    win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n    replace && (win.CSSStyleSheet.prototype.replace = replace);\n    replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n      type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n      type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n    });\n  });\n}\nfunction initAdoptedStyleSheetObserver({\n  mirror: mirror2,\n  stylesheetManager\n}, host2) {\n  var _a2, _b, _c;\n  let hostId = null;\n  if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n  else hostId = mirror2.getId(index.host(host2));\n  const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n  const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n    patchTarget == null ? void 0 : patchTarget.prototype,\n    \"adoptedStyleSheets\"\n  ) : void 0;\n  if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n    return () => {\n    };\n  Object.defineProperty(host2, \"adoptedStyleSheets\", {\n    configurable: originalPropertyDescriptor.configurable,\n    enumerable: originalPropertyDescriptor.enumerable,\n    get() {\n      var _a3;\n      return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n    },\n    set(sheets) {\n      var _a3;\n      const result = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n      if (hostId !== null && hostId !== -1) {\n        try {\n          stylesheetManager.adoptStyleSheets(sheets, hostId);\n        } catch (e) {\n        }\n      }\n      return result;\n    }\n  });\n  return callbackWrapper(() => {\n    Object.defineProperty(host2, \"adoptedStyleSheets\", {\n      configurable: originalPropertyDescriptor.configurable,\n      enumerable: originalPropertyDescriptor.enumerable,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      get: originalPropertyDescriptor.get,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      set: originalPropertyDescriptor.set\n    });\n  });\n}\nfunction initStyleDeclarationObserver({\n  styleDeclarationCb,\n  mirror: mirror2,\n  ignoreCSSAttributes,\n  stylesheetManager\n}, { win }) {\n  const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n  win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        var _a2;\n        const [property, value, priority] = argumentsList;\n        if (ignoreCSSAttributes.has(property)) {\n          return setProperty.apply(thisArg, [property, value, priority]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            set: {\n              property,\n              value,\n              priority\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule)\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n  win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        var _a2;\n        const [property] = argumentsList;\n        if (ignoreCSSAttributes.has(property)) {\n          return removeProperty.apply(thisArg, [property]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            remove: {\n              property\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule)\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  return callbackWrapper(() => {\n    win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n  });\n}\nfunction initMediaInteractionObserver({\n  mediaInteractionCb,\n  blockClass,\n  blockSelector,\n  mirror: mirror2,\n  sampling,\n  doc\n}) {\n  const handler = callbackWrapper(\n    (type) => throttle(\n      callbackWrapper((event) => {\n        const target = getEventTarget(event);\n        if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n          return;\n        }\n        const { currentTime, volume, muted, playbackRate, loop } = target;\n        mediaInteractionCb({\n          type,\n          id: mirror2.getId(target),\n          currentTime,\n          volume,\n          muted,\n          playbackRate,\n          loop\n        });\n      }),\n      sampling.media || 500\n    )\n  );\n  const handlers = [\n    on(\"play\", handler(MediaInteractions.Play), doc),\n    on(\"pause\", handler(MediaInteractions.Pause), doc),\n    on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n    on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n    on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initFontObserver({ fontCb, doc }) {\n  const win = doc.defaultView;\n  if (!win) {\n    return () => {\n    };\n  }\n  const handlers = [];\n  const fontMap = /* @__PURE__ */ new WeakMap();\n  const originalFontFace = win.FontFace;\n  win.FontFace = function FontFace(family, source, descriptors) {\n    const fontFace = new originalFontFace(family, source, descriptors);\n    fontMap.set(fontFace, {\n      family,\n      buffer: typeof source !== \"string\",\n      descriptors,\n      fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n    });\n    return fontFace;\n  };\n  const restoreHandler = patch(\n    doc.fonts,\n    \"add\",\n    function(original) {\n      return function(fontFace) {\n        setTimeout(\n          callbackWrapper(() => {\n            const p = fontMap.get(fontFace);\n            if (p) {\n              fontCb(p);\n              fontMap.delete(fontFace);\n            }\n          }),\n          0\n        );\n        return original.apply(this, [fontFace]);\n      };\n    }\n  );\n  handlers.push(() => {\n    win.FontFace = originalFontFace;\n  });\n  handlers.push(restoreHandler);\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initSelectionObserver(param) {\n  const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n  let collapsed = true;\n  const updateSelection = callbackWrapper(() => {\n    const selection = doc.getSelection();\n    if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n    collapsed = selection.isCollapsed || false;\n    const ranges = [];\n    const count = selection.rangeCount || 0;\n    for (let i = 0; i < count; i++) {\n      const range = selection.getRangeAt(i);\n      const { startContainer, startOffset, endContainer, endOffset } = range;\n      const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n      if (blocked) continue;\n      ranges.push({\n        start: mirror2.getId(startContainer),\n        startOffset,\n        end: mirror2.getId(endContainer),\n        endOffset\n      });\n    }\n    selectionCb({ ranges });\n  });\n  updateSelection();\n  return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n  doc,\n  customElementCb\n}) {\n  const win = doc.defaultView;\n  if (!win || !win.customElements) return () => {\n  };\n  const restoreHandler = patch(\n    win.customElements,\n    \"define\",\n    function(original) {\n      return function(name, constructor, options) {\n        try {\n          customElementCb({\n            define: {\n              name\n            }\n          });\n        } catch (e) {\n          console.warn(`Custom element callback failed for ${name}`);\n        }\n        return original.apply(this, [name, constructor, options]);\n      };\n    }\n  );\n  return restoreHandler;\n}\nfunction mergeHooks(o, hooks) {\n  const {\n    mutationCb,\n    mousemoveCb,\n    mouseInteractionCb,\n    scrollCb,\n    viewportResizeCb,\n    inputCb,\n    mediaInteractionCb,\n    styleSheetRuleCb,\n    styleDeclarationCb,\n    canvasMutationCb,\n    fontCb,\n    selectionCb,\n    customElementCb\n  } = o;\n  o.mutationCb = (...p) => {\n    if (hooks.mutation) {\n      hooks.mutation(...p);\n    }\n    mutationCb(...p);\n  };\n  o.mousemoveCb = (...p) => {\n    if (hooks.mousemove) {\n      hooks.mousemove(...p);\n    }\n    mousemoveCb(...p);\n  };\n  o.mouseInteractionCb = (...p) => {\n    if (hooks.mouseInteraction) {\n      hooks.mouseInteraction(...p);\n    }\n    mouseInteractionCb(...p);\n  };\n  o.scrollCb = (...p) => {\n    if (hooks.scroll) {\n      hooks.scroll(...p);\n    }\n    scrollCb(...p);\n  };\n  o.viewportResizeCb = (...p) => {\n    if (hooks.viewportResize) {\n      hooks.viewportResize(...p);\n    }\n    viewportResizeCb(...p);\n  };\n  o.inputCb = (...p) => {\n    if (hooks.input) {\n      hooks.input(...p);\n    }\n    inputCb(...p);\n  };\n  o.mediaInteractionCb = (...p) => {\n    if (hooks.mediaInteaction) {\n      hooks.mediaInteaction(...p);\n    }\n    mediaInteractionCb(...p);\n  };\n  o.styleSheetRuleCb = (...p) => {\n    if (hooks.styleSheetRule) {\n      hooks.styleSheetRule(...p);\n    }\n    styleSheetRuleCb(...p);\n  };\n  o.styleDeclarationCb = (...p) => {\n    if (hooks.styleDeclaration) {\n      hooks.styleDeclaration(...p);\n    }\n    styleDeclarationCb(...p);\n  };\n  o.canvasMutationCb = (...p) => {\n    if (hooks.canvasMutation) {\n      hooks.canvasMutation(...p);\n    }\n    canvasMutationCb(...p);\n  };\n  o.fontCb = (...p) => {\n    if (hooks.font) {\n      hooks.font(...p);\n    }\n    fontCb(...p);\n  };\n  o.selectionCb = (...p) => {\n    if (hooks.selection) {\n      hooks.selection(...p);\n    }\n    selectionCb(...p);\n  };\n  o.customElementCb = (...c) => {\n    if (hooks.customElement) {\n      hooks.customElement(...c);\n    }\n    customElementCb(...c);\n  };\n}\nfunction initObservers(o, hooks = {}) {\n  const currentWindow = o.doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n    };\n  }\n  mergeHooks(o, hooks);\n  let mutationObserver;\n  let cleanupMutationIframe = () => {\n  };\n  if (o.recordDOM) {\n    [mutationObserver, cleanupMutationIframe] = initMutationObserver(o, o.doc);\n  }\n  const mousemoveHandler = initMoveObserver(o);\n  const mouseInteractionHandler = initMouseInteractionObserver(o);\n  const scrollHandler = initScrollObserver(o);\n  const viewportResizeHandler = initViewportResizeObserver(o, {\n    win: currentWindow\n  });\n  const inputHandler = initInputObserver(o);\n  const mediaInteractionHandler = initMediaInteractionObserver(o);\n  let styleSheetObserver = () => {\n  };\n  let adoptedStyleSheetObserver = () => {\n  };\n  let styleDeclarationObserver = () => {\n  };\n  let fontObserver = () => {\n  };\n  if (o.recordDOM) {\n    styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n    adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n    styleDeclarationObserver = initStyleDeclarationObserver(o, {\n      win: currentWindow\n    });\n    if (o.collectFonts) {\n      fontObserver = initFontObserver(o);\n    }\n  }\n  const selectionObserver = initSelectionObserver(o);\n  const customElementObserver = initCustomElementObserver(o);\n  const pluginHandlers = [];\n  for (const plugin of o.plugins) {\n    pluginHandlers.push(\n      plugin.observer(plugin.callback, currentWindow, plugin.options)\n    );\n  }\n  return callbackWrapper(() => {\n    mutationBuffers.forEach((b) => b.reset());\n    mutationObserver == null ? void 0 : mutationObserver.disconnect();\n    cleanupMutationIframe();\n    mousemoveHandler();\n    mouseInteractionHandler();\n    scrollHandler();\n    viewportResizeHandler();\n    inputHandler();\n    mediaInteractionHandler();\n    styleSheetObserver();\n    adoptedStyleSheetObserver();\n    styleDeclarationObserver();\n    fontObserver();\n    selectionObserver();\n    customElementObserver();\n    pluginHandlers.forEach((h) => h());\n  });\n}\nfunction hasNestedCSSRule(prop) {\n  return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n  return Boolean(\n    typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n    // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n    window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n  );\n}\nclass CrossOriginIframeMirror {\n  constructor(generateIdFn) {\n    __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n    this.generateIdFn = generateIdFn;\n  }\n  getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n    const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n    let id = idToRemoteIdMap.get(remoteId);\n    if (!id) {\n      id = this.generateIdFn();\n      idToRemoteIdMap.set(remoteId, id);\n      remoteIdToIdMap.set(id, remoteId);\n    }\n    return id;\n  }\n  getIds(iframe, remoteId) {\n    const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return remoteId.map(\n      (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n    );\n  }\n  getRemoteId(iframe, id, map) {\n    const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n    if (typeof id !== \"number\") return id;\n    const remoteId = remoteIdToIdMap.get(id);\n    if (!remoteId) return -1;\n    return remoteId;\n  }\n  getRemoteIds(iframe, ids) {\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n  }\n  reset(iframe) {\n    if (!iframe) {\n      this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n      this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n      return;\n    }\n    this.iframeIdToRemoteIdMap.delete(iframe);\n    this.iframeRemoteIdToIdMap.delete(iframe);\n  }\n  getIdToRemoteIdMap(iframe) {\n    let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n    if (!idToRemoteIdMap) {\n      idToRemoteIdMap = /* @__PURE__ */ new Map();\n      this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n    }\n    return idToRemoteIdMap;\n  }\n  getRemoteIdToIdMap(iframe) {\n    let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n    if (!remoteIdToIdMap) {\n      remoteIdToIdMap = /* @__PURE__ */ new Map();\n      this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n    }\n    return remoteIdToIdMap;\n  }\n}\nclass IframeManager {\n  constructor(options) {\n    __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n    __publicField(this, \"crossOriginIframeStyleMirror\");\n    __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"mirror\");\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"wrappedEmit\");\n    __publicField(this, \"loadListener\");\n    __publicField(this, \"stylesheetManager\");\n    __publicField(this, \"recordCrossOriginIframes\");\n    this.mutationCb = options.mutationCb;\n    this.wrappedEmit = options.wrappedEmit;\n    this.stylesheetManager = options.stylesheetManager;\n    this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n    this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n      this.stylesheetManager.styleMirror.generateId.bind(\n        this.stylesheetManager.styleMirror\n      )\n    );\n    this.mirror = options.mirror;\n    if (this.recordCrossOriginIframes) {\n      window.addEventListener(\"message\", this.handleMessage.bind(this));\n    }\n  }\n  addIframe(iframeEl) {\n    this.iframes.set(iframeEl, true);\n    if (iframeEl.contentWindow)\n      this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n  }\n  addLoadListener(cb) {\n    this.loadListener = cb;\n  }\n  attachIframe(iframeEl, childSn) {\n    var _a2, _b;\n    this.mutationCb({\n      adds: [\n        {\n          parentId: this.mirror.getId(iframeEl),\n          nextId: null,\n          node: childSn\n        }\n      ],\n      removes: [],\n      texts: [],\n      attributes: [],\n      isAttachIframe: true\n    });\n    if (this.recordCrossOriginIframes)\n      (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n        \"message\",\n        this.handleMessage.bind(this)\n      );\n    (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n    if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n      this.stylesheetManager.adoptStyleSheets(\n        iframeEl.contentDocument.adoptedStyleSheets,\n        this.mirror.getId(iframeEl.contentDocument)\n      );\n  }\n  handleMessage(message) {\n    const crossOriginMessageEvent = message;\n    if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n    crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n      return;\n    const iframeSourceWindow = message.source;\n    if (!iframeSourceWindow) return;\n    const iframeEl = this.crossOriginIframeMap.get(message.source);\n    if (!iframeEl) return;\n    const transformedEvent = this.transformCrossOriginEvent(\n      iframeEl,\n      crossOriginMessageEvent.data.event\n    );\n    if (transformedEvent)\n      this.wrappedEmit(\n        transformedEvent,\n        crossOriginMessageEvent.data.isCheckout\n      );\n  }\n  transformCrossOriginEvent(iframeEl, e) {\n    var _a2;\n    switch (e.type) {\n      case EventType.FullSnapshot: {\n        this.crossOriginIframeMirror.reset(iframeEl);\n        this.crossOriginIframeStyleMirror.reset(iframeEl);\n        this.replaceIdOnNode(e.data.node, iframeEl);\n        const rootId = e.data.node.id;\n        this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n        this.patchRootIdOnNode(e.data.node, rootId);\n        return {\n          timestamp: e.timestamp,\n          type: EventType.IncrementalSnapshot,\n          data: {\n            source: IncrementalSource.Mutation,\n            adds: [\n              {\n                parentId: this.mirror.getId(iframeEl),\n                nextId: null,\n                node: e.data.node\n              }\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true\n          }\n        };\n      }\n      case EventType.Meta:\n      case EventType.Load:\n      case EventType.DomContentLoaded: {\n        return false;\n      }\n      case EventType.Plugin: {\n        return e;\n      }\n      case EventType.Custom: {\n        this.replaceIds(\n          e.data.payload,\n          iframeEl,\n          [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n        );\n        return e;\n      }\n      case EventType.IncrementalSnapshot: {\n        switch (e.data.source) {\n          case IncrementalSource.Mutation: {\n            e.data.adds.forEach((n) => {\n              this.replaceIds(n, iframeEl, [\n                \"parentId\",\n                \"nextId\",\n                \"previousId\"\n              ]);\n              this.replaceIdOnNode(n.node, iframeEl);\n              const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n              rootId && this.patchRootIdOnNode(n.node, rootId);\n            });\n            e.data.removes.forEach((n) => {\n              this.replaceIds(n, iframeEl, [\"parentId\", \"id\"]);\n            });\n            e.data.attributes.forEach((n) => {\n              this.replaceIds(n, iframeEl, [\"id\"]);\n            });\n            e.data.texts.forEach((n) => {\n              this.replaceIds(n, iframeEl, [\"id\"]);\n            });\n            return e;\n          }\n          case IncrementalSource.Drag:\n          case IncrementalSource.TouchMove:\n          case IncrementalSource.MouseMove: {\n            e.data.positions.forEach((p) => {\n              this.replaceIds(p, iframeEl, [\"id\"]);\n            });\n            return e;\n          }\n          case IncrementalSource.ViewportResize: {\n            return false;\n          }\n          case IncrementalSource.MediaInteraction:\n          case IncrementalSource.MouseInteraction:\n          case IncrementalSource.Scroll:\n          case IncrementalSource.CanvasMutation:\n          case IncrementalSource.Input: {\n            this.replaceIds(e.data, iframeEl, [\"id\"]);\n            return e;\n          }\n          case IncrementalSource.StyleSheetRule:\n          case IncrementalSource.StyleDeclaration: {\n            this.replaceIds(e.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e.data, iframeEl, [\"styleId\"]);\n            return e;\n          }\n          case IncrementalSource.Font: {\n            return e;\n          }\n          case IncrementalSource.Selection: {\n            e.data.ranges.forEach((range) => {\n              this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n            });\n            return e;\n          }\n          case IncrementalSource.AdoptedStyleSheet: {\n            this.replaceIds(e.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e.data, iframeEl, [\"styleIds\"]);\n            (_a2 = e.data.styles) == null ? void 0 : _a2.forEach((style) => {\n              this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n            });\n            return e;\n          }\n        }\n      }\n    }\n    return false;\n  }\n  replace(iframeMirror, obj, iframeEl, keys) {\n    for (const key of keys) {\n      if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n      if (Array.isArray(obj[key])) {\n        obj[key] = iframeMirror.getIds(\n          iframeEl,\n          obj[key]\n        );\n      } else {\n        obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n      }\n    }\n    return obj;\n  }\n  replaceIds(obj, iframeEl, keys) {\n    return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n  }\n  replaceStyleIds(obj, iframeEl, keys) {\n    return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n  }\n  replaceIdOnNode(node, iframeEl) {\n    this.replaceIds(node, iframeEl, [\"id\", \"rootId\"]);\n    if (\"childNodes\" in node) {\n      node.childNodes.forEach((child) => {\n        this.replaceIdOnNode(child, iframeEl);\n      });\n    }\n  }\n  patchRootIdOnNode(node, rootId) {\n    if (node.type !== NodeType.Document && !node.rootId) node.rootId = rootId;\n    if (\"childNodes\" in node) {\n      node.childNodes.forEach((child) => {\n        this.patchRootIdOnNode(child, rootId);\n      });\n    }\n  }\n}\nclass ShadowDomManager {\n  constructor(options) {\n    __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"scrollCb\");\n    __publicField(this, \"bypassOptions\");\n    __publicField(this, \"mirror\");\n    __publicField(this, \"restoreHandlers\", []);\n    this.mutationCb = options.mutationCb;\n    this.scrollCb = options.scrollCb;\n    this.bypassOptions = options.bypassOptions;\n    this.mirror = options.mirror;\n    this.init();\n  }\n  init() {\n    this.reset();\n    this.patchAttachShadow(Element, document);\n  }\n  addShadowRoot(shadowRoot2, doc) {\n    if (!isNativeShadowDom(shadowRoot2)) return;\n    if (this.shadowDoms.has(shadowRoot2)) return;\n    this.shadowDoms.add(shadowRoot2);\n    const [observer] = initMutationObserver(\n      {\n        ...this.bypassOptions,\n        doc,\n        mutationCb: this.mutationCb,\n        mirror: this.mirror,\n        shadowDomManager: this\n      },\n      shadowRoot2\n    );\n    this.restoreHandlers.push(() => observer.disconnect());\n    this.restoreHandlers.push(\n      initScrollObserver({\n        ...this.bypassOptions,\n        scrollCb: this.scrollCb,\n        // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n        // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n        doc: shadowRoot2,\n        mirror: this.mirror\n      })\n    );\n    setTimeout(() => {\n      if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n        this.bypassOptions.stylesheetManager.adoptStyleSheets(\n          shadowRoot2.adoptedStyleSheets,\n          this.mirror.getId(index.host(shadowRoot2))\n        );\n      this.restoreHandlers.push(\n        initAdoptedStyleSheetObserver(\n          {\n            mirror: this.mirror,\n            stylesheetManager: this.bypassOptions.stylesheetManager\n          },\n          shadowRoot2\n        )\n      );\n    }, 0);\n  }\n  /**\n   * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n   */\n  observeAttachShadow(iframeElement) {\n    if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n    this.patchAttachShadow(\n      iframeElement.contentWindow.Element,\n      iframeElement.contentDocument\n    );\n  }\n  /**\n   * Patch 'attachShadow' to observe newly added shadow doms.\n   */\n  patchAttachShadow(element, doc) {\n    const manager = this;\n    this.restoreHandlers.push(\n      patch(\n        element.prototype,\n        \"attachShadow\",\n        function(original) {\n          return function(option) {\n            const sRoot = original.call(this, option);\n            const shadowRootEl = index.shadowRoot(this);\n            if (shadowRootEl && inDom(this))\n              manager.addShadowRoot(shadowRootEl, doc);\n            return sRoot;\n          };\n        }\n      )\n    );\n  }\n  reset() {\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e) {\n      }\n    });\n    this.restoreHandlers = [];\n    this.shadowDoms = /* @__PURE__ */ new WeakSet();\n  }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n  lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function(arraybuffer) {\n  var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = \"\";\n  for (i = 0; i < len; i += 3) {\n    base64 += chars[bytes[i] >> 2];\n    base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n    base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n    base64 += chars[bytes[i + 2] & 63];\n  }\n  if (len % 3 === 2) {\n    base64 = base64.substring(0, base64.length - 1) + \"=\";\n  } else if (len % 3 === 1) {\n    base64 = base64.substring(0, base64.length - 2) + \"==\";\n  }\n  return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor(ctx, ctor) {\n  let contextMap = canvasVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = /* @__PURE__ */ new Map();\n    canvasVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n  if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n    return;\n  const name = value.constructor.name;\n  const list = variableListFor(ctx, name);\n  let index2 = list.indexOf(value);\n  if (index2 === -1) {\n    index2 = list.length;\n    list.push(value);\n  }\n  return index2;\n};\nfunction serializeArg(value, win, ctx) {\n  if (value instanceof Array) {\n    return value.map((arg) => serializeArg(arg, win, ctx));\n  } else if (value === null) {\n    return value;\n  } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [Object.values(value)]\n    };\n  } else if (\n    // SharedArrayBuffer disabled on most browsers due to spectre.\n    // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n    // value instanceof SharedArrayBuffer ||\n    value instanceof ArrayBuffer\n  ) {\n    const name = value.constructor.name;\n    const base64 = encode(value);\n    return {\n      rr_type: name,\n      base64\n    };\n  } else if (value instanceof DataView) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [\n        serializeArg(value.buffer, win, ctx),\n        value.byteOffset,\n        value.byteLength\n      ]\n    };\n  } else if (value instanceof HTMLImageElement) {\n    const name = value.constructor.name;\n    const { src } = value;\n    return {\n      rr_type: name,\n      src\n    };\n  } else if (value instanceof HTMLCanvasElement) {\n    const name = \"HTMLImageElement\";\n    const src = value.toDataURL();\n    return {\n      rr_type: name,\n      src\n    };\n  } else if (value instanceof ImageData) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [serializeArg(value.data, win, ctx), value.width, value.height]\n    };\n  } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n    const name = value.constructor.name;\n    const index2 = saveWebGLVar(value, win, ctx);\n    return {\n      rr_type: name,\n      index: index2\n    };\n  }\n  return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n  return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n  const webGLConstructorNames = [\n    \"WebGLActiveInfo\",\n    \"WebGLBuffer\",\n    \"WebGLFramebuffer\",\n    \"WebGLProgram\",\n    \"WebGLRenderbuffer\",\n    \"WebGLShader\",\n    \"WebGLShaderPrecisionFormat\",\n    \"WebGLTexture\",\n    \"WebGLUniformLocation\",\n    \"WebGLVertexArrayObject\",\n    // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n    \"WebGLVertexArrayObjectOES\"\n  ];\n  const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n    (name) => typeof win[name] === \"function\"\n  );\n  return Boolean(\n    supportedWebGLConstructorNames.find(\n      (name) => value instanceof win[name]\n    )\n  );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n  const handlers = [];\n  const props2D = Object.getOwnPropertyNames(\n    win.CanvasRenderingContext2D.prototype\n  );\n  for (const prop of props2D) {\n    try {\n      if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n        continue;\n      }\n      const restoreHandler = patch(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        function(original) {\n          return function(...args) {\n            if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n              setTimeout(() => {\n                const recordArgs = serializeArgs(args, win, this);\n                cb(this.canvas, {\n                  type: CanvasContext[\"2D\"],\n                  property: prop,\n                  args: recordArgs\n                });\n              }, 0);\n            }\n            return original.apply(this, args);\n          };\n        }\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        {\n          set(v) {\n            cb(this.canvas, {\n              type: CanvasContext[\"2D\"],\n              property: prop,\n              args: [v],\n              setter: true\n            });\n          }\n        }\n      );\n      handlers.push(hookHandler);\n    }\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nfunction getNormalizedContextName(contextType) {\n  return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n  const handlers = [];\n  try {\n    const restoreHandler = patch(\n      win.HTMLCanvasElement.prototype,\n      \"getContext\",\n      function(original) {\n        return function(contextType, ...args) {\n          if (!isBlocked(this, blockClass, blockSelector, true)) {\n            const ctxName = getNormalizedContextName(contextType);\n            if (!(\"__context\" in this)) this.__context = ctxName;\n            if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n              if (args[0] && typeof args[0] === \"object\") {\n                const contextAttributes = args[0];\n                if (!contextAttributes.preserveDrawingBuffer) {\n                  contextAttributes.preserveDrawingBuffer = true;\n                }\n              } else {\n                args.splice(0, 1, {\n                  preserveDrawingBuffer: true\n                });\n              }\n            }\n          }\n          return original.apply(this, [contextType, ...args]);\n        };\n      }\n    );\n    handlers.push(restoreHandler);\n  } catch {\n    console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n  const handlers = [];\n  const props = Object.getOwnPropertyNames(prototype);\n  for (const prop of props) {\n    if (\n      //prop.startsWith('get') ||  // e.g. getProgramParameter, but too risky\n      [\n        \"isContextLost\",\n        \"canvas\",\n        \"drawingBufferWidth\",\n        \"drawingBufferHeight\"\n      ].includes(prop)\n    ) {\n      continue;\n    }\n    try {\n      if (typeof prototype[prop] !== \"function\") {\n        continue;\n      }\n      const restoreHandler = patch(\n        prototype,\n        prop,\n        function(original) {\n          return function(...args) {\n            const result = original.apply(this, args);\n            saveWebGLVar(result, win, this);\n            if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n              const recordArgs = serializeArgs(args, win, this);\n              const mutation = {\n                type,\n                property: prop,\n                args: recordArgs\n              };\n              cb(this.canvas, mutation);\n            }\n            return result;\n          };\n        }\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter(prototype, prop, {\n        set(v) {\n          cb(this.canvas, {\n            type,\n            property: prop,\n            args: [v],\n            setter: true\n          });\n        }\n      });\n      handlers.push(hookHandler);\n    }\n  }\n  return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n  const handlers = [];\n  if (typeof win.WebGLRenderingContext !== \"undefined\") {\n    handlers.push(\n      ...patchGLPrototype(\n        win.WebGLRenderingContext.prototype,\n        CanvasContext.WebGL,\n        cb,\n        blockClass,\n        blockSelector,\n        win\n      )\n    );\n  }\n  if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n    handlers.push(\n      ...patchGLPrototype(\n        win.WebGL2RenderingContext.prototype,\n        CanvasContext.WebGL2,\n        cb,\n        blockClass,\n        blockSelector,\n        win\n      )\n    );\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nconst jsContent = '(function() {\\n  \"use strict\";\\n  var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\\n  var lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\\n  for (var i = 0; i < chars.length; i++) {\\n    lookup[chars.charCodeAt(i)] = i;\\n  }\\n  var encode = function(arraybuffer) {\\n    var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\\n    for (i2 = 0; i2 < len; i2 += 3) {\\n      base64 += chars[bytes[i2] >> 2];\\n      base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\\n      base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\\n      base64 += chars[bytes[i2 + 2] & 63];\\n    }\\n    if (len % 3 === 2) {\\n      base64 = base64.substring(0, base64.length - 1) + \"=\";\\n    } else if (len % 3 === 1) {\\n      base64 = base64.substring(0, base64.length - 2) + \"==\";\\n    }\\n    return base64;\\n  };\\n  const lastBlobMap = /* @__PURE__ */ new Map();\\n  const transparentBlobMap = /* @__PURE__ */ new Map();\\n  async function getTransparentBlobFor(width, height, dataURLOptions) {\\n    const id = `${width}-${height}`;\\n    if (\"OffscreenCanvas\" in globalThis) {\\n      if (transparentBlobMap.has(id)) return transparentBlobMap.get(id);\\n      const offscreen = new OffscreenCanvas(width, height);\\n      offscreen.getContext(\"2d\");\\n      const blob = await offscreen.convertToBlob(dataURLOptions);\\n      const arrayBuffer = await blob.arrayBuffer();\\n      const base64 = encode(arrayBuffer);\\n      transparentBlobMap.set(id, base64);\\n      return base64;\\n    } else {\\n      return \"\";\\n    }\\n  }\\n  const worker = self;\\n  worker.onmessage = async function(e) {\\n    if (\"OffscreenCanvas\" in globalThis) {\\n      const { id, bitmap, width, height, dataURLOptions } = e.data;\\n      const transparentBase64 = getTransparentBlobFor(\\n        width,\\n        height,\\n        dataURLOptions\\n      );\\n      const offscreen = new OffscreenCanvas(width, height);\\n      const ctx = offscreen.getContext(\"2d\");\\n      ctx.drawImage(bitmap, 0, 0);\\n      bitmap.close();\\n      const blob = await offscreen.convertToBlob(dataURLOptions);\\n      const type = blob.type;\\n      const arrayBuffer = await blob.arrayBuffer();\\n      const base64 = encode(arrayBuffer);\\n      if (!lastBlobMap.has(id) && await transparentBase64 === base64) {\\n        lastBlobMap.set(id, base64);\\n        return worker.postMessage({ id });\\n      }\\n      if (lastBlobMap.get(id) === base64) return worker.postMessage({ id });\\n      worker.postMessage({\\n        id,\\n        type,\\n        base64,\\n        width,\\n        height\\n      });\\n      lastBlobMap.set(id, base64);\\n    } else {\\n      return worker.postMessage({ id: e.data.id });\\n    }\\n  };\\n})();\\n//# sourceMappingURL=image-bitmap-data-url-worker-IJpC7g_b.js.map\\n';\nconst blob = typeof self !== \"undefined\" && self.Blob && new Blob([jsContent], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n  let objURL;\n  try {\n    objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);\n    if (!objURL) throw \"\";\n    const worker = new Worker(objURL, {\n      name: options == null ? void 0 : options.name\n    });\n    worker.addEventListener(\"error\", () => {\n      (self.URL || self.webkitURL).revokeObjectURL(objURL);\n    });\n    return worker;\n  } catch (e) {\n    return new Worker(\n      \"data:text/javascript;charset=utf-8,\" + encodeURIComponent(jsContent),\n      {\n        name: options == null ? void 0 : options.name\n      }\n    );\n  } finally {\n    objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL);\n  }\n}\nclass CanvasManager {\n  constructor(options) {\n    __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n    __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n    __publicField(this, \"mirror\");\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"resetObservers\");\n    __publicField(this, \"frozen\", false);\n    __publicField(this, \"locked\", false);\n    __publicField(this, \"processMutation\", (target, mutation) => {\n      const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n      if (newFrame || !this.rafStamps.invokeId)\n        this.rafStamps.invokeId = this.rafStamps.latestId;\n      if (!this.pendingCanvasMutations.has(target)) {\n        this.pendingCanvasMutations.set(target, []);\n      }\n      this.pendingCanvasMutations.get(target).push(mutation);\n    });\n    const {\n      sampling = \"all\",\n      win,\n      blockClass,\n      blockSelector,\n      recordCanvas,\n      dataURLOptions\n    } = options;\n    this.mutationCb = options.mutationCb;\n    this.mirror = options.mirror;\n    if (recordCanvas && sampling === \"all\")\n      this.initCanvasMutationObserver(win, blockClass, blockSelector);\n    if (recordCanvas && typeof sampling === \"number\")\n      this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n        dataURLOptions\n      });\n  }\n  reset() {\n    this.pendingCanvasMutations.clear();\n    this.resetObservers && this.resetObservers();\n  }\n  freeze() {\n    this.frozen = true;\n  }\n  unfreeze() {\n    this.frozen = false;\n  }\n  lock() {\n    this.locked = true;\n  }\n  unlock() {\n    this.locked = false;\n  }\n  initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      true\n    );\n    const snapshotInProgressMap = /* @__PURE__ */ new Map();\n    const worker = new WorkerWrapper();\n    worker.onmessage = (e) => {\n      const { id } = e.data;\n      snapshotInProgressMap.set(id, false);\n      if (!(\"base64\" in e.data)) return;\n      const { base64, type, width, height } = e.data;\n      this.mutationCb({\n        id,\n        type: CanvasContext[\"2D\"],\n        commands: [\n          {\n            property: \"clearRect\",\n            // wipe canvas\n            args: [0, 0, width, height]\n          },\n          {\n            property: \"drawImage\",\n            // draws (semi-transparent) image\n            args: [\n              {\n                rr_type: \"ImageBitmap\",\n                args: [\n                  {\n                    rr_type: \"Blob\",\n                    data: [{ rr_type: \"ArrayBuffer\", base64 }],\n                    type\n                  }\n                ]\n              },\n              0,\n              0\n            ]\n          }\n        ]\n      });\n    };\n    const timeBetweenSnapshots = 1e3 / fps;\n    let lastSnapshotTime = 0;\n    let rafId;\n    const getCanvas = () => {\n      const matchedCanvas = [];\n      win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n        if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n          matchedCanvas.push(canvas);\n        }\n      });\n      return matchedCanvas;\n    };\n    const takeCanvasSnapshots = (timestamp) => {\n      if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n        rafId = requestAnimationFrame(takeCanvasSnapshots);\n        return;\n      }\n      lastSnapshotTime = timestamp;\n      getCanvas().forEach(async (canvas) => {\n        var _a2;\n        const id = this.mirror.getId(canvas);\n        if (snapshotInProgressMap.get(id)) return;\n        if (canvas.width === 0 || canvas.height === 0) return;\n        snapshotInProgressMap.set(id, true);\n        if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n          const context = canvas.getContext(canvas.__context);\n          if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n            context.clear(context.COLOR_BUFFER_BIT);\n          }\n        }\n        const bitmap = await createImageBitmap(canvas);\n        worker.postMessage(\n          {\n            id,\n            bitmap,\n            width: canvas.width,\n            height: canvas.height,\n            dataURLOptions: options.dataURLOptions\n          },\n          [bitmap]\n        );\n      });\n      rafId = requestAnimationFrame(takeCanvasSnapshots);\n    };\n    rafId = requestAnimationFrame(takeCanvasSnapshots);\n    this.resetObservers = () => {\n      canvasContextReset();\n      cancelAnimationFrame(rafId);\n    };\n  }\n  initCanvasMutationObserver(win, blockClass, blockSelector) {\n    this.startRAFTimestamping();\n    this.startPendingCanvasMutationFlusher();\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      false\n    );\n    const canvas2DReset = initCanvas2DMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector\n    );\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector\n    );\n    this.resetObservers = () => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    };\n  }\n  startPendingCanvasMutationFlusher() {\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n  startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp) => {\n      this.rafStamps.latestId = timestamp;\n      requestAnimationFrame(setLatestRAFTimestamp);\n    };\n    requestAnimationFrame(setLatestRAFTimestamp);\n  }\n  flushPendingCanvasMutations() {\n    this.pendingCanvasMutations.forEach(\n      (_values, canvas) => {\n        const id = this.mirror.getId(canvas);\n        this.flushPendingCanvasMutationFor(canvas, id);\n      }\n    );\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n  flushPendingCanvasMutationFor(canvas, id) {\n    if (this.frozen || this.locked) {\n      return;\n    }\n    const valuesWithType = this.pendingCanvasMutations.get(canvas);\n    if (!valuesWithType || id === -1) return;\n    const values = valuesWithType.map((value) => {\n      const { type: type2, ...rest } = value;\n      return rest;\n    });\n    const { type } = valuesWithType[0];\n    this.mutationCb({ id, type, commands: values });\n    this.pendingCanvasMutations.delete(canvas);\n  }\n}\nclass StylesheetManager {\n  constructor(options) {\n    __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"adoptedStyleSheetCb\");\n    __publicField(this, \"styleMirror\", new StyleSheetMirror());\n    this.mutationCb = options.mutationCb;\n    this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n  }\n  attachLinkElement(linkEl, childSn) {\n    if (\"_cssText\" in childSn.attributes)\n      this.mutationCb({\n        adds: [],\n        removes: [],\n        texts: [],\n        attributes: [\n          {\n            id: childSn.id,\n            attributes: childSn.attributes\n          }\n        ]\n      });\n    this.trackLinkElement(linkEl);\n  }\n  trackLinkElement(linkEl) {\n    if (this.trackedLinkElements.has(linkEl)) return;\n    this.trackedLinkElements.add(linkEl);\n    this.trackStylesheetInLinkElement(linkEl);\n  }\n  adoptStyleSheets(sheets, hostId) {\n    if (sheets.length === 0) return;\n    const adoptedStyleSheetData = {\n      id: hostId,\n      styleIds: []\n    };\n    const styles = [];\n    for (const sheet of sheets) {\n      let styleId;\n      if (!this.styleMirror.has(sheet)) {\n        styleId = this.styleMirror.add(sheet);\n        styles.push({\n          styleId,\n          rules: Array.from(sheet.rules || CSSRule, (r, index2) => ({\n            rule: stringifyRule(r, sheet.href),\n            index: index2\n          }))\n        });\n      } else styleId = this.styleMirror.getId(sheet);\n      adoptedStyleSheetData.styleIds.push(styleId);\n    }\n    if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n    this.adoptedStyleSheetCb(adoptedStyleSheetData);\n  }\n  reset() {\n    this.styleMirror.reset();\n    this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n  }\n  // TODO: take snapshot on stylesheet reload by applying event listener\n  trackStylesheetInLinkElement(_linkEl) {\n  }\n}\nclass ProcessedNodeManager {\n  constructor() {\n    __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"active\", false);\n  }\n  inOtherBuffer(node, thisBuffer) {\n    const buffers = this.nodeMap.get(node);\n    return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n  }\n  add(node, buffer) {\n    if (!this.active) {\n      this.active = true;\n      requestAnimationFrame(() => {\n        this.nodeMap = /* @__PURE__ */ new WeakMap();\n        this.active = false;\n      });\n    }\n    this.nodeMap.set(node, (this.nodeMap.get(node) || /* @__PURE__ */ new Set()).add(buffer));\n  }\n  destroy() {\n  }\n}\nlet wrappedEmit;\nlet takeFullSnapshot;\nlet canvasManager;\nlet recording = false;\ntry {\n  if (Array.from([1], (x) => x * 2)[0] !== 2) {\n    const cleanFrame = document.createElement(\"iframe\");\n    document.body.appendChild(cleanFrame);\n    Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n    document.body.removeChild(cleanFrame);\n  }\n} catch (err) {\n  console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror();\nfunction record(options = {}) {\n  const {\n    emit,\n    checkoutEveryNms,\n    checkoutEveryNth,\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    ignoreClass = \"rr-ignore\",\n    ignoreSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    maskAllInputs,\n    maskInputOptions: _maskInputOptions,\n    slimDOMOptions: _slimDOMOptions,\n    maskInputFn,\n    maskTextFn,\n    hooks,\n    packFn,\n    sampling = {},\n    dataURLOptions = {},\n    mousemoveWait,\n    recordDOM = true,\n    recordCanvas = false,\n    recordCrossOriginIframes = false,\n    recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n    userTriggeredOnInput = false,\n    collectFonts = false,\n    inlineImages = false,\n    plugins,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n    errorHandler: errorHandler2\n  } = options;\n  registerErrorHandler(errorHandler2);\n  const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n  let passEmitsToParent = false;\n  if (!inEmittingFrame) {\n    try {\n      if (window.parent.document) {\n        passEmitsToParent = false;\n      }\n    } catch (e) {\n      passEmitsToParent = true;\n    }\n  }\n  if (inEmittingFrame && !emit) {\n    throw new Error(\"emit function is required\");\n  }\n  if (!inEmittingFrame && !passEmitsToParent) {\n    return () => {\n    };\n  }\n  if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n    sampling.mousemove = mousemoveWait;\n  }\n  mirror.reset();\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true,\n    password: true\n  } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n  const slimDOMOptions = slimDOMDefaults(_slimDOMOptions);\n  polyfill();\n  let lastFullSnapshotEvent;\n  let incrementalSnapshotCount = 0;\n  const eventProcessor = (e) => {\n    for (const plugin of plugins || []) {\n      if (plugin.eventProcessor) {\n        e = plugin.eventProcessor(e);\n      }\n    }\n    if (packFn && // Disable packing events which will be emitted to parent frames.\n    !passEmitsToParent) {\n      e = packFn(e);\n    }\n    return e;\n  };\n  wrappedEmit = (r, isCheckout) => {\n    var _a2;\n    const e = r;\n    e.timestamp = nowTimestamp();\n    if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e.type !== EventType.FullSnapshot && !(e.type === EventType.IncrementalSnapshot && e.data.source === IncrementalSource.Mutation)) {\n      mutationBuffers.forEach((buf) => buf.unfreeze());\n    }\n    if (inEmittingFrame) {\n      emit == null ? void 0 : emit(eventProcessor(e), isCheckout);\n    } else if (passEmitsToParent) {\n      const message = {\n        type: \"rrweb\",\n        event: eventProcessor(e),\n        origin: window.location.origin,\n        isCheckout\n      };\n      window.parent.postMessage(message, \"*\");\n    }\n    if (e.type === EventType.FullSnapshot) {\n      lastFullSnapshotEvent = e;\n      incrementalSnapshotCount = 0;\n    } else if (e.type === EventType.IncrementalSnapshot) {\n      if (e.data.source === IncrementalSource.Mutation && e.data.isAttachIframe) {\n        return;\n      }\n      incrementalSnapshotCount++;\n      const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n      const exceedTime = checkoutEveryNms && e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n      if (exceedCount || exceedTime) {\n        takeFullSnapshot(true);\n      }\n    }\n  };\n  const wrappedMutationEmit = (m) => {\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Mutation,\n        ...m\n      }\n    });\n  };\n  const wrappedScrollEmit = (p) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.Scroll,\n      ...p\n    }\n  });\n  const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.CanvasMutation,\n      ...p\n    }\n  });\n  const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.AdoptedStyleSheet,\n      ...a\n    }\n  });\n  const stylesheetManager = new StylesheetManager({\n    mutationCb: wrappedMutationEmit,\n    adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n  });\n  const iframeManager = new IframeManager({\n    mirror,\n    mutationCb: wrappedMutationEmit,\n    stylesheetManager,\n    recordCrossOriginIframes,\n    wrappedEmit\n  });\n  for (const plugin of plugins || []) {\n    if (plugin.getMirror)\n      plugin.getMirror({\n        nodeMirror: mirror,\n        crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n        crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n      });\n  }\n  const processedNodeManager = new ProcessedNodeManager();\n  canvasManager = new CanvasManager({\n    recordCanvas,\n    mutationCb: wrappedCanvasMutationEmit,\n    win: window,\n    blockClass,\n    blockSelector,\n    mirror,\n    sampling: sampling.canvas,\n    dataURLOptions\n  });\n  const shadowDomManager = new ShadowDomManager({\n    mutationCb: wrappedMutationEmit,\n    scrollCb: wrappedScrollEmit,\n    bypassOptions: {\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskInputOptions,\n      dataURLOptions,\n      maskTextFn,\n      maskInputFn,\n      recordCanvas,\n      inlineImages,\n      sampling,\n      slimDOMOptions,\n      iframeManager,\n      stylesheetManager,\n      canvasManager,\n      keepIframeSrcFn,\n      processedNodeManager\n    },\n    mirror\n  });\n  takeFullSnapshot = (isCheckout = false) => {\n    if (!recordDOM) {\n      return;\n    }\n    wrappedEmit(\n      {\n        type: EventType.Meta,\n        data: {\n          href: window.location.href,\n          width: getWindowWidth(),\n          height: getWindowHeight()\n        }\n      },\n      isCheckout\n    );\n    stylesheetManager.reset();\n    shadowDomManager.init();\n    mutationBuffers.forEach((buf) => buf.lock());\n    const node = snapshot(document, {\n      mirror,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskAllInputs: maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOM: slimDOMOptions,\n      dataURLOptions,\n      recordCanvas,\n      inlineImages,\n      onSerialize: (n) => {\n        if (isSerializedIframe(n, mirror)) {\n          iframeManager.addIframe(n);\n        }\n        if (isSerializedStylesheet(n, mirror)) {\n          stylesheetManager.trackLinkElement(n);\n        }\n        if (hasShadowRoot(n)) {\n          shadowDomManager.addShadowRoot(index.shadowRoot(n), document);\n        }\n      },\n      onIframeLoad: (iframe, childSn) => {\n        iframeManager.attachIframe(iframe, childSn);\n        shadowDomManager.observeAttachShadow(iframe);\n      },\n      onStylesheetLoad: (linkEl, childSn) => {\n        stylesheetManager.attachLinkElement(linkEl, childSn);\n      },\n      keepIframeSrcFn\n    });\n    if (!node) {\n      return console.warn(\"Failed to snapshot the document\");\n    }\n    wrappedEmit(\n      {\n        type: EventType.FullSnapshot,\n        data: {\n          node,\n          initialOffset: getWindowScroll(window)\n        }\n      },\n      isCheckout\n    );\n    mutationBuffers.forEach((buf) => buf.unlock());\n    if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n      stylesheetManager.adoptStyleSheets(\n        document.adoptedStyleSheets,\n        mirror.getId(document)\n      );\n  };\n  try {\n    const handlers = [];\n    const observe = (doc) => {\n      var _a2;\n      return callbackWrapper(initObservers)(\n        {\n          mutationCb: wrappedMutationEmit,\n          mousemoveCb: (positions, source) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source,\n              positions\n            }\n          }),\n          mouseInteractionCb: (d) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.MouseInteraction,\n              ...d\n            }\n          }),\n          scrollCb: wrappedScrollEmit,\n          viewportResizeCb: (d) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.ViewportResize,\n              ...d\n            }\n          }),\n          inputCb: (v) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.Input,\n              ...v\n            }\n          }),\n          mediaInteractionCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.MediaInteraction,\n              ...p\n            }\n          }),\n          styleSheetRuleCb: (r) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleSheetRule,\n              ...r\n            }\n          }),\n          styleDeclarationCb: (r) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleDeclaration,\n              ...r\n            }\n          }),\n          canvasMutationCb: wrappedCanvasMutationEmit,\n          fontCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.Font,\n              ...p\n            }\n          }),\n          selectionCb: (p) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Selection,\n                ...p\n              }\n            });\n          },\n          customElementCb: (c) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.CustomElement,\n                ...c\n              }\n            });\n          },\n          blockClass,\n          ignoreClass,\n          ignoreSelector,\n          maskTextClass,\n          maskTextSelector,\n          maskInputOptions,\n          inlineStylesheet,\n          sampling,\n          recordDOM,\n          recordCanvas,\n          inlineImages,\n          userTriggeredOnInput,\n          collectFonts,\n          doc,\n          maskInputFn,\n          maskTextFn,\n          keepIframeSrcFn,\n          blockSelector,\n          slimDOMOptions,\n          dataURLOptions,\n          mirror,\n          iframeManager,\n          stylesheetManager,\n          shadowDomManager,\n          processedNodeManager,\n          canvasManager,\n          ignoreCSSAttributes,\n          plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n            observer: p.observer,\n            options: p.options,\n            callback: (payload) => wrappedEmit({\n              type: EventType.Plugin,\n              data: {\n                plugin: p.name,\n                payload\n              }\n            })\n          }))) || []\n        },\n        hooks\n      );\n    };\n    iframeManager.addLoadListener((iframeEl) => {\n      try {\n        handlers.push(observe(iframeEl.contentDocument));\n      } catch (error) {\n        console.warn(error);\n      }\n    });\n    const init = () => {\n      takeFullSnapshot();\n      handlers.push(observe(document));\n      recording = true;\n    };\n    if ([\"interactive\", \"complete\"].includes(document.readyState)) {\n      init();\n    } else {\n      handlers.push(\n        on(\"DOMContentLoaded\", () => {\n          wrappedEmit({\n            type: EventType.DomContentLoaded,\n            data: {}\n          });\n          if (recordAfter === \"DOMContentLoaded\") init();\n        })\n      );\n      handlers.push(\n        on(\n          \"load\",\n          () => {\n            wrappedEmit({\n              type: EventType.Load,\n              data: {}\n            });\n            if (recordAfter === \"load\") init();\n          },\n          window\n        )\n      );\n    }\n    return () => {\n      handlers.forEach((handler) => {\n        try {\n          handler();\n        } catch (error) {\n          const msg = String(error).toLowerCase();\n          if (!msg.includes(\"cross-origin\")) {\n            console.warn(error);\n          }\n        }\n      });\n      processedNodeManager.destroy();\n      recording = false;\n      unregisterErrorHandler();\n    };\n  } catch (error) {\n    console.warn(error);\n  }\n}\nrecord.addCustomEvent = (tag, payload) => {\n  if (!recording) {\n    throw new Error(\"please add custom event after start recording\");\n  }\n  wrappedEmit({\n    type: EventType.Custom,\n    data: {\n      tag,\n      payload\n    }\n  });\n};\nrecord.freezePage = () => {\n  mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n  if (!recording) {\n    throw new Error(\"please take full snapshot after start recording\");\n  }\n  takeFullSnapshot(isCheckout);\n};\nrecord.mirror = mirror;\nexport {\n  record\n};\n//# sourceMappingURL=record.js.map\n","/**\n * npm entrypoint of `@dash0/sdk-web/session-recording`.\n *\n * This bundle contains only rrweb's recorder. It must not import any SDK module (see eslint.config.js), so the\n * main SDK bundle stays the single owner of configuration, session and transport state.\n */\nimport { record } from \"@rrweb/record\";\n/**\n * The rrweb recorder. Pass it to `init({ sessionRecording: { recorder } })` or to `startSessionRecording(recorder)`.\n */\nexport const recorder = record;\n"],"names":["_a","__defProp","Object","defineProperty","__publicField","obj","key","value","enumerable","configurable","writable","__defNormalProp","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","NodeType2","testableAccessors","Node","ShadowRoot","Element","MutationObserver","testableMethods","untaintedBasePrototype","untaintedBaseIframeCleanup","getUntaintedPrototype","defaultObj","globalThis","defaultPrototype","prototype","accessorNames","isUntaintedAccessors","Boolean","every","accessor","_a2","_b","getOwnPropertyDescriptor","get","toString","includes","methodNames","isUntaintedMethods","method","Zone","iframeEl","document","createElement","style","display","body","appendChild","win","contentWindow","untaintedObject","remove","ua","navigator","userAgent","classList","add","setAttribute","untaintedAccessorCache","getUntaintedAccessor","instance","cacheKey","String","call","untaintedPrototype","untaintedAccessor","untaintedMethodCache","getUntaintedMethod","bind","untaintedMethod","mutationObserverCtor","constructor","nowTimestamp","Date","now","patch","source","name","replacement","original","wrapped","defineProperties","__rrweb_original__","test","getTime","index","ownerDocument","n","childNodes","parentNode","parentElement","textContent","contains","other","getRootNode","host","styleSheets","shadowRoot","querySelector","selectors","querySelectorAll","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s","rules","cssRules","sheetHref","href","ownerNode","baseURI","stringifiedRules","Array","from","rule","stringifyRule","join","cssText","replace","error","isCSSImportRule","importStringified","styleSheet","split","length","statement","JSON","stringify","layerName","push","supportsText","media","mediaText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","cssStringified","regex","fixSafariColons","Mirror","this","Map","WeakMap","getId","getMeta","id","getNode","idNodeMap","getIds","keys","nodeMetaMap","removeNodeFromMap","delete","forEach","childNode","has","hasNode","node","meta","set","oldNode","reset","maskInputValue","element","maskInputOptions","tagName","type","maskInputFn","text","actualType","toLowerCase","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","url","URL","window","location","err","match","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","indexOf","slice","extractOrigin","filePathNoHash","maybeHash","substring","stack","parts","pop","part","normalizeCssString","_testNoPxNorm","markCssSplits","childNodes2","splits","iterCount","cssTextNorm","normFactor","i","textContentNorm","jLimit","j","startSubstring","cssNormSplits","splitNorm","prevTextContent","prevMinLength","k","Math","floor","normPart","max","splitCssText","_id","tagNameRegex","RegExp","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","trim","getHref","isSVGElement","el","ownerSVGElement","customHref","a","startsWith","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","className","needMaskingText","maskTextClass","maskTextSelector","closest","matches","e","serializeNode","options","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","attr","stylesheet","find","rel","_cssText","sheet","checked","selected","open","rr_open_mode","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","getAttribute","priorCrossOrigin","crossOrigin","recordInlineImage","removeEventListener","naturalWidth","naturalHeight","drawImage","complete","addEventListener","console","warn","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parent","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","slimDOMDefaults","_slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaVerification","headMetaAuthorship","headMetaDescKeywords","headTitleMutations","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","as","property","slimDOMExcluded","serializedNode","assign","recordChild","shadowRootEl","isShadowHost","bypassOptions","childN","serializedChildNode","isShadow","listener","readyState","fired","timer","setTimeout","clearTimeout","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","BaseRRNode","_args","childIterator","firstChild","nextSibling","_newChild","Error","insertBefore","_refChild","removeChild","_node","on","fn","target","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","map","throttle","func","wait","timeout","previous","args","leading","remaining","context","apply","trailing","hookSetter","d","isRevoked","getWindowScroll","_c","_d","left","scrollingElement","pageXOffset","documentElement","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","Proxy","Reflect","prop","receiver","StyleSheetMirror","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","isNodeInLinkedList","DoubleLinkedList","position","current","head","index2","next","addNode","__ln","previousSibling","tail","removeNode","moveKey","parentId","MutationBuffer","Set","mutations","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","shift","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","payload","texts","genTextAreaValueMutation","filter","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","item","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","cache","queue","n2","processRemoves","processedNodeManager","inOtherBuffer","targetId","init","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","size","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","cb","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","ObserverCtor","iframeCleanup","observer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","disconnect","splice","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","handler","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","recurse","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","unshift","parentStyleSheet","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","result","adoptStyleSheets","initObservers","o","hooks","currentWindow","mutationObserver","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","p","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","cleanupMutationIframe","recordDOM","mousemoveHandler","threshold","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","selector","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","start","end","initSelectionObserver","customElementObserver","define","initCustomElementObserver","pluginHandlers","plugin","plugins","callback","b","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","message","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","isArray","child","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","charCodeAt","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list","ctor","contextMap","variableListFor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","props","getOwnPropertyNames","recordArgs","hookHandler","setter","jsContent","blob","self","Blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","encodeURIComponent","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","async","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","postMessage","requestAnimationFrame","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","r","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","destroy","takeFullSnapshot","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","color","date","email","month","number","search","tel","time","week","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill","incrementalSnapshotCount","eventProcessor","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","addCustomEvent","tag","freezePage","recorder"],"mappings":"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","x_google_ignoreList":[0]}