{
  "version": 3,
  "sources": ["../../rrweb/dist/rrweb.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 __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__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$3 || {});\nconst testableAccessors$1 = {\n  Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n  ShadowRoot: [\"host\", \"styleSheets\"],\n  Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n  MutationObserver: []\n};\nconst testableMethods$1 = {\n  Node: [\"contains\", \"getRootNode\"],\n  ShadowRoot: [\"getSelection\"],\n  Element: [],\n  MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nfunction angularZoneUnpatchedAlternative$1(key) {\n  var _a2, _b;\n  const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);\n  if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {\n    return globalThis[angularUnpatchedVersionSymbol];\n  } else {\n    return void 0;\n  }\n}\nfunction getUntaintedPrototype$1(key) {\n  if (untaintedBasePrototype$1[key])\n    return untaintedBasePrototype$1[key];\n  const candidate = angularZoneUnpatchedAlternative$1(key) || globalThis[key];\n  const defaultPrototype = candidate.prototype;\n  const accessorNames = key in testableAccessors$1 ? testableAccessors$1[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$1 ? testableMethods$1[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) {\n    untaintedBasePrototype$1[key] = candidate.prototype;\n    return candidate.prototype;\n  }\n  try {\n    const iframeEl = document.createElement(\"iframe\");\n    document.body.appendChild(iframeEl);\n    const win = iframeEl.contentWindow;\n    if (!win) return candidate.prototype;\n    const untaintedObject = win[key].prototype;\n    document.body.removeChild(iframeEl);\n    if (!untaintedObject) return defaultPrototype;\n    return untaintedBasePrototype$1[key] = untaintedObject;\n  } catch {\n    return defaultPrototype;\n  }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n  var _a2;\n  const cacheKey = `${key}.${String(accessor)}`;\n  if (untaintedAccessorCache$1[cacheKey])\n    return untaintedAccessorCache$1[cacheKey].call(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype$1(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$1[cacheKey] = untaintedAccessor;\n  return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n  const cacheKey = `${key}.${String(method)}`;\n  if (untaintedMethodCache$1[cacheKey])\n    return untaintedMethodCache$1[cacheKey].bind(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype$1(key);\n  const untaintedMethod = untaintedPrototype[method];\n  if (typeof untaintedMethod !== \"function\") return instance[method];\n  untaintedMethodCache$1[cacheKey] = untaintedMethod;\n  return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n  return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n  return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n  if (!n2 || !(\"host\" in n2)) return null;\n  return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n  return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n  if (!n2 || !(\"shadowRoot\" in n2)) return null;\n  return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n  return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n  return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n  return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n  childNodes: childNodes$1,\n  parentNode: parentNode$1,\n  parentElement: parentElement$1,\n  textContent: textContent$1,\n  contains: contains$1,\n  getRootNode: getRootNode$1,\n  host: host$1,\n  styleSheets: styleSheets$1,\n  shadowRoot: shadowRoot$1,\n  querySelector: querySelector$1,\n  querySelectorAll: querySelectorAll$1,\n  mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n  return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n  const hostEl = (\n    // anchor and textarea elements also have a `host` property\n    // but only shadow roots have a `mode` property\n    n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n  );\n  return Boolean(\n    hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\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(rule2) {\n  const { cssText } = rule2;\n  if (cssText.split('\"').length < 3) return cssText;\n  const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n  if (rule2.layerName === \"\") {\n    statement.push(`layer`);\n  } else if (rule2.layerName) {\n    statement.push(`layer(${rule2.layerName})`);\n  }\n  if (rule2.supportsText) {\n    statement.push(`supports(${rule2.supportsText})`);\n  }\n  if (rule2.media.length) {\n    statement.push(rule2.media.mediaText);\n  }\n  return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n  try {\n    const rules2 = s2.rules || s2.cssRules;\n    if (!rules2) {\n      return null;\n    }\n    let sheetHref = s2.href;\n    if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n      sheetHref = s2.ownerNode.ownerDocument.location.href;\n    }\n    const stringifiedRules = Array.from(\n      rules2,\n      (rule2) => stringifyRule(rule2, sheetHref)\n    ).join(\"\");\n    return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n  } catch (error) {\n    return null;\n  }\n}\nfunction stringifyRule(rule2, sheetHref) {\n  if (isCSSImportRule(rule2)) {\n    let importStringified;\n    try {\n      importStringified = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      escapeImportStatement(rule2);\n    } catch (error) {\n      importStringified = rule2.cssText;\n    }\n    if (rule2.styleSheet.href) {\n      return absolutifyURLs(importStringified, rule2.styleSheet.href);\n    }\n    return importStringified;\n  } else {\n    let ruleStringified = rule2.cssText;\n    if (isCSSStyleRule(rule2) && rule2.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(rule2) {\n  return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n  return \"selectorText\" in rule2;\n}\nclass Mirror {\n  constructor() {\n    __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n2) {\n    var _a2;\n    if (!n2) return -1;\n    const id = (_a2 = this.getMeta(n2)) == 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(n2) {\n    return this.nodeMetaMap.get(n2) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n2) {\n    const id = this.getId(n2);\n    this.idNodeMap.delete(id);\n    if (n2.childNodes) {\n      n2.childNodes.forEach(\n        (childNode) => this.removeNodeFromMap(childNode)\n      );\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node2) {\n    return this.nodeMetaMap.has(node2);\n  }\n  add(n2, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n2);\n    this.nodeMetaMap.set(n2, meta);\n  }\n  replace(id, n2) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n2, meta);\n    }\n    this.idNodeMap.set(id, n2);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction createMirror$2() {\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 isNodeMetaEqual(a2, b) {\n  if (!a2 || !b || a2.type !== b.type) return false;\n  if (a2.type === NodeType$3.Document)\n    return a2.compatMode === b.compatMode;\n  else if (a2.type === NodeType$3.DocumentType)\n    return a2.name === b.name && a2.publicId === b.publicId && a2.systemId === b.systemId;\n  else if (a2.type === NodeType$3.Comment || a2.type === NodeType$3.Text || a2.type === NodeType$3.CDATA)\n    return a2.textContent === b.textContent;\n  else if (a2.type === NodeType$3.Element)\n    return a2.tagName === b.tagName && JSON.stringify(a2.attributes) === JSON.stringify(b.attributes) && a2.isSVG === b.isSVG && a2.needBlock === b.needBlock;\n  return false;\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 stack = href.split(\"/\");\n      const parts = filePath.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(\"/\")}${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 i2 = 1; i2 < childNodes2.length; i2++) {\n      if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n        const textContentNorm = normalizeCssString(\n          childNodes2[i2].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[i2 - 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[i2 - 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}\nconst _DEFAULT_BLOCKED_ELEMENT_BACKGROUND_COLOR = \"lightgrey\";\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n  return _id++;\n}\nfunction getValidTagName$1(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 c2 = attributeValue.charAt(pos);\n        if (c2 === \"\") {\n          output.push((url + descriptorsStr).trim());\n          break;\n        } else if (!inParens) {\n          if (c2 === \",\") {\n            pos += 1;\n            output.push((url + descriptorsStr).trim());\n            break;\n          } else if (c2 === \"(\") {\n            inParens = true;\n          }\n        } else {\n          if (c2 === \")\") {\n            inParens = false;\n          }\n        }\n        descriptorsStr += c2;\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 a2 = cachedDocument.get(doc);\n  if (!a2) {\n    a2 = doc.createElement(\"a\");\n    cachedDocument.set(doc, a2);\n  }\n  if (!customHref) {\n    customHref = \"\";\n  } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n    return customHref;\n  }\n  a2.setAttribute(\"href\", customHref);\n  return a2.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\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\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 (tagName === \"video\" || tagName === \"audio\") && 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 (e2) {\n  }\n  return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n  if (!node2) return false;\n  if (node2.nodeType !== node2.ELEMENT_NODE) {\n    if (!checkAncestors) return false;\n    return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n  }\n  for (let eIndex = node2.classList.length; eIndex--; ) {\n    const className = node2.classList[eIndex];\n    if (regex.test(className)) {\n      return true;\n    }\n  }\n  if (!checkAncestors) return false;\n  return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n  let el;\n  if (isElement(node2)) {\n    el = node2;\n    if (!index$1.childNodes(el).length) {\n      return false;\n    }\n  } else if (index$1.parentElement(node2) === null) {\n    return false;\n  } else {\n    el = index$1.parentElement(node2);\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 (e2) {\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(n2, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    maskAttributeFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    cssCaptured = false,\n    applyBackgroundColorToBlockedElements = false\n  } = options;\n  const rootId = getRootId(doc, mirror2);\n  switch (n2.nodeType) {\n    case n2.DOCUMENT_NODE:\n      if (n2.compatMode !== \"CSS1Compat\") {\n        return {\n          type: NodeType$3.Document,\n          childNodes: [],\n          compatMode: n2.compatMode\n          // probably \"BackCompat\"\n        };\n      } else {\n        return {\n          type: NodeType$3.Document,\n          childNodes: []\n        };\n      }\n    case n2.DOCUMENT_TYPE_NODE:\n      return {\n        type: NodeType$3.DocumentType,\n        name: n2.name,\n        publicId: n2.publicId,\n        systemId: n2.systemId,\n        rootId\n      };\n    case n2.ELEMENT_NODE:\n      return serializeElementNode(n2, {\n        doc,\n        blockClass,\n        blockSelector,\n        inlineStylesheet,\n        maskInputOptions,\n        maskInputFn,\n        maskAttributeFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n        newlyAddedElement,\n        rootId,\n        applyBackgroundColorToBlockedElements\n      });\n    case n2.TEXT_NODE:\n      return serializeTextNode(n2, {\n        doc,\n        needsMask,\n        maskTextFn,\n        rootId,\n        cssCaptured\n      });\n    case n2.CDATA_SECTION_NODE:\n      return {\n        type: NodeType$3.CDATA,\n        textContent: \"\",\n        rootId\n      };\n    case n2.COMMENT_NODE:\n      return {\n        type: NodeType$3.Comment,\n        textContent: index$1.textContent(n2) || \"\",\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(n2, options) {\n  const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n  const parent = index$1.parentNode(n2);\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$1.textContent(n2);\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$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n  }\n  return {\n    type: NodeType$3.Text,\n    textContent: textContent2 || \"\",\n    rootId\n  };\n}\nfunction serializeElementNode(n2, options) {\n  const {\n    doc,\n    blockClass,\n    blockSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskInputFn,\n    maskAttributeFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    rootId,\n    applyBackgroundColorToBlockedElements = false\n  } = options;\n  const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n  const tagName = getValidTagName$1(n2);\n  let attributes = {};\n  const len = n2.attributes.length;\n  for (let i2 = 0; i2 < len; i2++) {\n    const attr = n2.attributes[i2];\n    if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n      const transformedValue = transformAttribute(\n        doc,\n        tagName,\n        toLowerCase(attr.name),\n        attr.value\n      );\n      if (maskAttributeFn && transformedValue !== null) {\n        const maskedValue = maskAttributeFn(attr.name, transformedValue, n2);\n        if (maskedValue !== null) {\n          attributes[attr.name] = maskedValue;\n        }\n      } else {\n        attributes[attr.name] = transformedValue;\n      }\n    }\n  }\n  if (tagName === \"link\" && inlineStylesheet) {\n    const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n      return s2.href === n2.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\" && n2.sheet) {\n    let cssText = stringifyStylesheet(\n      n2.sheet\n    );\n    if (cssText) {\n      if (n2.childNodes.length > 1) {\n        cssText = markCssSplits(cssText, n2);\n      }\n      attributes._cssText = cssText;\n    }\n  }\n  if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n    const value = n2.value;\n    const checked = n2.checked;\n    if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n      attributes.value = maskInputValue({\n        element: n2,\n        type: getInputType(n2),\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 (n2.selected && !maskInputOptions[\"select\"]) {\n      attributes.selected = true;\n    } else {\n      delete attributes.selected;\n    }\n  }\n  if (tagName === \"dialog\" && n2.open) {\n    attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n  }\n  if (tagName === \"canvas\" && recordCanvas) {\n    if (n2.__context === \"2d\") {\n      if (!is2DCanvasBlank(n2)) {\n        attributes.rr_dataURL = n2.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      }\n    } else if (!(\"__context\" in n2)) {\n      const canvasDataURL = n2.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      const blankCanvas = doc.createElement(\"canvas\");\n      blankCanvas.width = n2.width;\n      blankCanvas.height = n2.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 = n2;\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 (tagName === \"audio\" || tagName === \"video\") {\n    const mediaAttributes = attributes;\n    mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n    mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n    mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n    mediaAttributes.rr_mediaMuted = n2.muted;\n    mediaAttributes.rr_mediaLoop = n2.loop;\n    mediaAttributes.rr_mediaVolume = n2.volume;\n  }\n  if (!newlyAddedElement) {\n    if (n2.scrollLeft) {\n      attributes.rr_scrollLeft = n2.scrollLeft;\n    }\n    if (n2.scrollTop) {\n      attributes.rr_scrollTop = n2.scrollTop;\n    }\n  }\n  if (needBlock) {\n    const { width, height } = n2.getBoundingClientRect();\n    attributes = {\n      class: attributes.class,\n      rr_width: `${width}px`,\n      rr_height: `${height}px`,\n      ...applyBackgroundColorToBlockedElements ? { rr_background_color: _DEFAULT_BLOCKED_ELEMENT_BACKGROUND_COLOR } : {}\n    };\n  }\n  if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n    if (!n2.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 (e2) {\n  }\n  return {\n    type: NodeType$3.Element,\n    tagName,\n    attributes,\n    childNodes: [],\n    isSVG: isSVGElement(n2) || 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 slimDOMExcluded(sn, slimDOMOptions) {\n  if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n    return true;\n  } else if (sn.type === NodeType$3.Element) {\n    if (slimDOMOptions.script && // script tag\n    (sn.tagName === \"script\" || // (module)preload link\n    sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // 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 serializeAdoptedStyleSheets(sheets, onAdoptedStyleSheet, emittedStyleIds) {\n  return Array.from(sheets).map((sheet) => {\n    const styleId = onAdoptedStyleSheet(sheet);\n    let rules2 = [];\n    if (!emittedStyleIds.has(styleId)) {\n      emittedStyleIds.add(styleId);\n      try {\n        rules2 = Array.from(sheet.cssRules, (rule2, index2) => ({\n          rule: stringifyRule(rule2, sheet.href),\n          index: index2\n        }));\n      } catch (e2) {\n        if (e2 instanceof DOMException && e2.name === \"SecurityError\") ;\n        else {\n          throw e2;\n        }\n      }\n    }\n    return { styleId, rules: rules2 };\n  });\n}\nfunction serializeNodeWithId(n2, options) {\n  var _a2, _b;\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    maskAttributeFn,\n    slimDOMOptions,\n    dataURLOptions = {},\n    inlineImages = false,\n    recordCanvas = false,\n    onSerialize,\n    onAdoptedStyleSheet,\n    onIframeLoad,\n    iframeLoadTimeout = 5e3,\n    onStylesheetLoad,\n    stylesheetLoadTimeout = 5e3,\n    keepIframeSrcFn = () => false,\n    newlyAddedElement = false,\n    cssCaptured = false,\n    applyBackgroundColorToBlockedElements = false\n  } = options;\n  const emittedStyleIds = options._emittedStyleIds ?? /* @__PURE__ */ new Set();\n  let { needsMask } = options;\n  let { preserveWhiteSpace = true } = options;\n  if (!needsMask) {\n    const checkAncestors = needsMask === void 0;\n    needsMask = needMaskingText(\n      n2,\n      maskTextClass,\n      maskTextSelector,\n      checkAncestors\n    );\n  }\n  const _serializedNode = serializeNode(n2, {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    maskAttributeFn,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement,\n    cssCaptured,\n    applyBackgroundColorToBlockedElements\n  });\n  if (!_serializedNode) {\n    console.warn(n2, \"not serialized\");\n    return null;\n  }\n  let id;\n  if (mirror2.hasNode(n2)) {\n    id = mirror2.getId(n2);\n  } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.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(n2, serializedNode);\n  if (id === IGNORED_NODE) {\n    return null;\n  }\n  if (onSerialize) {\n    onSerialize(n2);\n  }\n  let recordChild = !skipChild;\n  if (serializedNode.type === NodeType$3.Element) {\n    recordChild = recordChild && !serializedNode.needBlock;\n    delete serializedNode.needBlock;\n    const shadowRootEl = index$1.shadowRoot(n2);\n    if (shadowRootEl && isNativeShadowDom(shadowRootEl)) {\n      serializedNode.isShadowHost = true;\n      if (onAdoptedStyleSheet && ((_a2 = shadowRootEl.adoptedStyleSheets) == null ? void 0 : _a2.length)) {\n        serializedNode.adoptedStyleSheets = serializeAdoptedStyleSheets(\n          shadowRootEl.adoptedStyleSheets,\n          onAdoptedStyleSheet,\n          emittedStyleIds\n        );\n      }\n    }\n  }\n  if (serializedNode.type === NodeType$3.Document && onAdoptedStyleSheet) {\n    const doc2 = n2;\n    if ((_b = doc2.adoptedStyleSheets) == null ? void 0 : _b.length) {\n      serializedNode.adoptedStyleSheets = serializeAdoptedStyleSheets(\n        doc2.adoptedStyleSheets,\n        onAdoptedStyleSheet,\n        emittedStyleIds\n      );\n    }\n  }\n  if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n    if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.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      maskAttributeFn,\n      slimDOMOptions,\n      dataURLOptions,\n      inlineImages,\n      recordCanvas,\n      preserveWhiteSpace,\n      onSerialize,\n      onAdoptedStyleSheet,\n      _emittedStyleIds: emittedStyleIds,\n      onIframeLoad,\n      iframeLoadTimeout,\n      onStylesheetLoad,\n      stylesheetLoadTimeout,\n      keepIframeSrcFn,\n      cssCaptured: false,\n      applyBackgroundColorToBlockedElements\n    };\n    if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n    else {\n      if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n        bypassOptions.cssCaptured = true;\n      }\n      for (const childN of Array.from(index$1.childNodes(n2))) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          serializedNode.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n    let shadowRootEl = null;\n    if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n      for (const childN of Array.from(index$1.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$1.parentNode(n2);\n  if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n    serializedNode.isShadow = true;\n  }\n  if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n    onceIframeLoaded(\n      n2,\n      () => {\n        const iframeDoc = n2.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            maskAttributeFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onAdoptedStyleSheet,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn\n          });\n          if (serializedIframeNode) {\n            onIframeLoad(\n              n2,\n              serializedIframeNode\n            );\n          }\n        }\n      },\n      iframeLoadTimeout\n    );\n  }\n  if (serializedNode.type === NodeType$3.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      n2,\n      () => {\n        if (onStylesheetLoad) {\n          const serializedLinkNode = serializeNodeWithId(n2, {\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            maskAttributeFn,\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              n2,\n              serializedLinkNode\n            );\n          }\n        }\n      },\n      stylesheetLoadTimeout\n    );\n  }\n  return serializedNode;\n}\nfunction snapshot(n2, 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    maskAttributeFn,\n    slimDOM = false,\n    dataURLOptions,\n    preserveWhiteSpace,\n    onSerialize,\n    onAdoptedStyleSheet,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn = () => false,\n    applyBackgroundColorToBlockedElements = 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 = slimDOM === true || slimDOM === \"all\" ? (\n    // if true: set of sensible options that should not throw away any information\n    {\n      script: true,\n      comment: true,\n      headFavicon: true,\n      headWhitespace: true,\n      headMetaDescKeywords: slimDOM === \"all\",\n      // destructive\n      headMetaSocial: true,\n      headMetaRobots: true,\n      headMetaHttpEquiv: true,\n      headMetaAuthorship: true,\n      headMetaVerification: true\n    }\n  ) : slimDOM === false ? {} : slimDOM;\n  return serializeNodeWithId(n2, {\n    doc: n2,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    maskTextClass,\n    maskTextSelector,\n    skipChild: false,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    maskAttributeFn,\n    slimDOMOptions,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    preserveWhiteSpace,\n    onSerialize,\n    onAdoptedStyleSheet,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn,\n    newlyAddedElement: false,\n    applyBackgroundColorToBlockedElements\n  });\n}\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, \"g\");\nconst mediaSelectorPlugin = {\n  postcssPlugin: \"postcss-custom-selectors\",\n  prepare() {\n    return {\n      postcssPlugin: \"postcss-custom-selectors\",\n      AtRule: function(atrule) {\n        if (atrule.params.match(MEDIA_SELECTOR_GLOBAL)) {\n          atrule.params = atrule.params.replace(MEDIA_SELECTOR_GLOBAL, \"$1-$2\");\n        }\n      }\n    };\n  }\n};\nconst pseudoClassPlugin = {\n  postcssPlugin: \"postcss-hover-classes\",\n  prepare: function() {\n    const fixed = [];\n    return {\n      Rule: function(rule2) {\n        if (fixed.indexOf(rule2) !== -1) {\n          return;\n        }\n        fixed.push(rule2);\n        rule2.selectors.forEach(function(selector) {\n          if (selector.includes(\":hover\")) {\n            rule2.selector += \",\\n\" + selector.replace(/:hover/g, \".\\\\:hover\");\n          }\n        });\n      }\n    };\n  }\n};\nfunction getDefaultExportFromCjs$1(x) {\n  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nfunction getAugmentedNamespace$1(n2) {\n  if (Object.prototype.hasOwnProperty.call(n2, \"__esModule\")) return n2;\n  var f2 = n2.default;\n  if (typeof f2 == \"function\") {\n    var a2 = function a22() {\n      if (this instanceof a22) {\n        return Reflect.construct(f2, arguments, this.constructor);\n      }\n      return f2.apply(this, arguments);\n    };\n    a2.prototype = f2.prototype;\n  } else a2 = {};\n  Object.defineProperty(a2, \"__esModule\", { value: true });\n  Object.keys(n2).forEach(function(k) {\n    var d = Object.getOwnPropertyDescriptor(n2, k);\n    Object.defineProperty(a2, k, d.get ? d : {\n      enumerable: true,\n      get: function() {\n        return n2[k];\n      }\n    });\n  });\n  return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar hasRequiredPicocolors_browser$1;\nfunction requirePicocolors_browser$1() {\n  if (hasRequiredPicocolors_browser$1) return picocolors_browser$1.exports;\n  hasRequiredPicocolors_browser$1 = 1;\n  var x = String;\n  var create = function() {\n    return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x };\n  };\n  picocolors_browser$1.exports = create();\n  picocolors_browser$1.exports.createColors = create;\n  return picocolors_browser$1.exports;\n}\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar cssSyntaxError$1;\nvar hasRequiredCssSyntaxError$1;\nfunction requireCssSyntaxError$1() {\n  if (hasRequiredCssSyntaxError$1) return cssSyntaxError$1;\n  hasRequiredCssSyntaxError$1 = 1;\n  let pico = /* @__PURE__ */ requirePicocolors_browser$1();\n  let terminalHighlight = require$$2$1;\n  class CssSyntaxError extends Error {\n    constructor(message, line, column, source, file, plugin) {\n      super(message);\n      this.name = \"CssSyntaxError\";\n      this.reason = message;\n      if (file) {\n        this.file = file;\n      }\n      if (source) {\n        this.source = source;\n      }\n      if (plugin) {\n        this.plugin = plugin;\n      }\n      if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n        if (typeof line === \"number\") {\n          this.line = line;\n          this.column = column;\n        } else {\n          this.line = line.line;\n          this.column = line.column;\n          this.endLine = column.line;\n          this.endColumn = column.column;\n        }\n      }\n      this.setMessage();\n      if (Error.captureStackTrace) {\n        Error.captureStackTrace(this, CssSyntaxError);\n      }\n    }\n    setMessage() {\n      this.message = this.plugin ? this.plugin + \": \" : \"\";\n      this.message += this.file ? this.file : \"<css input>\";\n      if (typeof this.line !== \"undefined\") {\n        this.message += \":\" + this.line + \":\" + this.column;\n      }\n      this.message += \": \" + this.reason;\n    }\n    showSourceCode(color) {\n      if (!this.source) return \"\";\n      let css = this.source;\n      if (color == null) color = pico.isColorSupported;\n      let aside = (text) => text;\n      let mark = (text) => text;\n      let highlight = (text) => text;\n      if (color) {\n        let { bold, gray, red } = pico.createColors(true);\n        mark = (text) => bold(red(text));\n        aside = (text) => gray(text);\n        if (terminalHighlight) {\n          highlight = (text) => terminalHighlight(text);\n        }\n      }\n      let lines = css.split(/\\r?\\n/);\n      let start = Math.max(this.line - 3, 0);\n      let end = Math.min(this.line + 2, lines.length);\n      let maxWidth = String(end).length;\n      return lines.slice(start, end).map((line, index2) => {\n        let number = start + 1 + index2;\n        let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n        if (number === this.line) {\n          if (line.length > 160) {\n            let padding = 20;\n            let subLineStart = Math.max(0, this.column - padding);\n            let subLineEnd = Math.max(\n              this.column + padding,\n              this.endColumn + padding\n            );\n            let subLine = line.slice(subLineStart, subLineEnd);\n            let spacing2 = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\\t]/g, \" \");\n            return mark(\">\") + aside(gutter) + highlight(subLine) + \"\\n \" + spacing2 + mark(\"^\");\n          }\n          let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n          return mark(\">\") + aside(gutter) + highlight(line) + \"\\n \" + spacing + mark(\"^\");\n        }\n        return \" \" + aside(gutter) + highlight(line);\n      }).join(\"\\n\");\n    }\n    toString() {\n      let code = this.showSourceCode();\n      if (code) {\n        code = \"\\n\\n\" + code + \"\\n\";\n      }\n      return this.name + \": \" + this.message + code;\n    }\n  }\n  cssSyntaxError$1 = CssSyntaxError;\n  CssSyntaxError.default = CssSyntaxError;\n  return cssSyntaxError$1;\n}\nvar stringifier$1;\nvar hasRequiredStringifier$1;\nfunction requireStringifier$1() {\n  if (hasRequiredStringifier$1) return stringifier$1;\n  hasRequiredStringifier$1 = 1;\n  const DEFAULT_RAW = {\n    after: \"\\n\",\n    beforeClose: \"\\n\",\n    beforeComment: \"\\n\",\n    beforeDecl: \"\\n\",\n    beforeOpen: \" \",\n    beforeRule: \"\\n\",\n    colon: \": \",\n    commentLeft: \" \",\n    commentRight: \" \",\n    emptyBody: \"\",\n    indent: \"    \",\n    semicolon: false\n  };\n  function capitalize(str) {\n    return str[0].toUpperCase() + str.slice(1);\n  }\n  class Stringifier {\n    constructor(builder) {\n      this.builder = builder;\n    }\n    atrule(node2, semicolon) {\n      let name = \"@\" + node2.name;\n      let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n      if (typeof node2.raws.afterName !== \"undefined\") {\n        name += node2.raws.afterName;\n      } else if (params) {\n        name += \" \";\n      }\n      if (node2.nodes) {\n        this.block(node2, name + params);\n      } else {\n        let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n        this.builder(name + params + end, node2);\n      }\n    }\n    beforeAfter(node2, detect) {\n      let value;\n      if (node2.type === \"decl\") {\n        value = this.raw(node2, null, \"beforeDecl\");\n      } else if (node2.type === \"comment\") {\n        value = this.raw(node2, null, \"beforeComment\");\n      } else if (detect === \"before\") {\n        value = this.raw(node2, null, \"beforeRule\");\n      } else {\n        value = this.raw(node2, null, \"beforeClose\");\n      }\n      let buf = node2.parent;\n      let depth = 0;\n      while (buf && buf.type !== \"root\") {\n        depth += 1;\n        buf = buf.parent;\n      }\n      if (value.includes(\"\\n\")) {\n        let indent = this.raw(node2, null, \"indent\");\n        if (indent.length) {\n          for (let step = 0; step < depth; step++) value += indent;\n        }\n      }\n      return value;\n    }\n    block(node2, start) {\n      let between = this.raw(node2, \"between\", \"beforeOpen\");\n      this.builder(start + between + \"{\", node2, \"start\");\n      let after;\n      if (node2.nodes && node2.nodes.length) {\n        this.body(node2);\n        after = this.raw(node2, \"after\");\n      } else {\n        after = this.raw(node2, \"after\", \"emptyBody\");\n      }\n      if (after) this.builder(after);\n      this.builder(\"}\", node2, \"end\");\n    }\n    body(node2) {\n      let last = node2.nodes.length - 1;\n      while (last > 0) {\n        if (node2.nodes[last].type !== \"comment\") break;\n        last -= 1;\n      }\n      let semicolon = this.raw(node2, \"semicolon\");\n      for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n        let child = node2.nodes[i2];\n        let before = this.raw(child, \"before\");\n        if (before) this.builder(before);\n        this.stringify(child, last !== i2 || semicolon);\n      }\n    }\n    comment(node2) {\n      let left = this.raw(node2, \"left\", \"commentLeft\");\n      let right = this.raw(node2, \"right\", \"commentRight\");\n      this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n    }\n    decl(node2, semicolon) {\n      let between = this.raw(node2, \"between\", \"colon\");\n      let string = node2.prop + between + this.rawValue(node2, \"value\");\n      if (node2.important) {\n        string += node2.raws.important || \" !important\";\n      }\n      if (semicolon) string += \";\";\n      this.builder(string, node2);\n    }\n    document(node2) {\n      this.body(node2);\n    }\n    raw(node2, own, detect) {\n      let value;\n      if (!detect) detect = own;\n      if (own) {\n        value = node2.raws[own];\n        if (typeof value !== \"undefined\") return value;\n      }\n      let parent = node2.parent;\n      if (detect === \"before\") {\n        if (!parent || parent.type === \"root\" && parent.first === node2) {\n          return \"\";\n        }\n        if (parent && parent.type === \"document\") {\n          return \"\";\n        }\n      }\n      if (!parent) return DEFAULT_RAW[detect];\n      let root2 = node2.root();\n      if (!root2.rawCache) root2.rawCache = {};\n      if (typeof root2.rawCache[detect] !== \"undefined\") {\n        return root2.rawCache[detect];\n      }\n      if (detect === \"before\" || detect === \"after\") {\n        return this.beforeAfter(node2, detect);\n      } else {\n        let method = \"raw\" + capitalize(detect);\n        if (this[method]) {\n          value = this[method](root2, node2);\n        } else {\n          root2.walk((i2) => {\n            value = i2.raws[own];\n            if (typeof value !== \"undefined\") return false;\n          });\n        }\n      }\n      if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n      root2.rawCache[detect] = value;\n      return value;\n    }\n    rawBeforeClose(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && i2.nodes.length > 0) {\n          if (typeof i2.raws.after !== \"undefined\") {\n            value = i2.raws.after;\n            if (value.includes(\"\\n\")) {\n              value = value.replace(/[^\\n]+$/, \"\");\n            }\n            return false;\n          }\n        }\n      });\n      if (value) value = value.replace(/\\S/g, \"\");\n      return value;\n    }\n    rawBeforeComment(root2, node2) {\n      let value;\n      root2.walkComments((i2) => {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      });\n      if (typeof value === \"undefined\") {\n        value = this.raw(node2, null, \"beforeDecl\");\n      } else if (value) {\n        value = value.replace(/\\S/g, \"\");\n      }\n      return value;\n    }\n    rawBeforeDecl(root2, node2) {\n      let value;\n      root2.walkDecls((i2) => {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      });\n      if (typeof value === \"undefined\") {\n        value = this.raw(node2, null, \"beforeRule\");\n      } else if (value) {\n        value = value.replace(/\\S/g, \"\");\n      }\n      return value;\n    }\n    rawBeforeOpen(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.type !== \"decl\") {\n          value = i2.raws.between;\n          if (typeof value !== \"undefined\") return false;\n        }\n      });\n      return value;\n    }\n    rawBeforeRule(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n          if (typeof i2.raws.before !== \"undefined\") {\n            value = i2.raws.before;\n            if (value.includes(\"\\n\")) {\n              value = value.replace(/[^\\n]+$/, \"\");\n            }\n            return false;\n          }\n        }\n      });\n      if (value) value = value.replace(/\\S/g, \"\");\n      return value;\n    }\n    rawColon(root2) {\n      let value;\n      root2.walkDecls((i2) => {\n        if (typeof i2.raws.between !== \"undefined\") {\n          value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n          return false;\n        }\n      });\n      return value;\n    }\n    rawEmptyBody(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && i2.nodes.length === 0) {\n          value = i2.raws.after;\n          if (typeof value !== \"undefined\") return false;\n        }\n      });\n      return value;\n    }\n    rawIndent(root2) {\n      if (root2.raws.indent) return root2.raws.indent;\n      let value;\n      root2.walk((i2) => {\n        let p = i2.parent;\n        if (p && p !== root2 && p.parent && p.parent === root2) {\n          if (typeof i2.raws.before !== \"undefined\") {\n            let parts = i2.raws.before.split(\"\\n\");\n            value = parts[parts.length - 1];\n            value = value.replace(/\\S/g, \"\");\n            return false;\n          }\n        }\n      });\n      return value;\n    }\n    rawSemicolon(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n          value = i2.raws.semicolon;\n          if (typeof value !== \"undefined\") return false;\n        }\n      });\n      return value;\n    }\n    rawValue(node2, prop) {\n      let value = node2[prop];\n      let raw = node2.raws[prop];\n      if (raw && raw.value === value) {\n        return raw.raw;\n      }\n      return value;\n    }\n    root(node2) {\n      this.body(node2);\n      if (node2.raws.after) this.builder(node2.raws.after);\n    }\n    rule(node2) {\n      this.block(node2, this.rawValue(node2, \"selector\"));\n      if (node2.raws.ownSemicolon) {\n        this.builder(node2.raws.ownSemicolon, node2, \"end\");\n      }\n    }\n    stringify(node2, semicolon) {\n      if (!this[node2.type]) {\n        throw new Error(\n          \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n        );\n      }\n      this[node2.type](node2, semicolon);\n    }\n  }\n  stringifier$1 = Stringifier;\n  Stringifier.default = Stringifier;\n  return stringifier$1;\n}\nvar stringify_1$1;\nvar hasRequiredStringify$1;\nfunction requireStringify$1() {\n  if (hasRequiredStringify$1) return stringify_1$1;\n  hasRequiredStringify$1 = 1;\n  let Stringifier = requireStringifier$1();\n  function stringify(node2, builder) {\n    let str = new Stringifier(builder);\n    str.stringify(node2);\n  }\n  stringify_1$1 = stringify;\n  stringify.default = stringify;\n  return stringify_1$1;\n}\nvar symbols$1 = {};\nvar hasRequiredSymbols$1;\nfunction requireSymbols$1() {\n  if (hasRequiredSymbols$1) return symbols$1;\n  hasRequiredSymbols$1 = 1;\n  symbols$1.isClean = Symbol(\"isClean\");\n  symbols$1.my = Symbol(\"my\");\n  return symbols$1;\n}\nvar node$1;\nvar hasRequiredNode$1;\nfunction requireNode$1() {\n  if (hasRequiredNode$1) return node$1;\n  hasRequiredNode$1 = 1;\n  let CssSyntaxError = requireCssSyntaxError$1();\n  let Stringifier = requireStringifier$1();\n  let stringify = requireStringify$1();\n  let { isClean, my } = requireSymbols$1();\n  function cloneNode(obj, parent) {\n    let cloned = new obj.constructor();\n    for (let i2 in obj) {\n      if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n        continue;\n      }\n      if (i2 === \"proxyCache\") continue;\n      let value = obj[i2];\n      let type = typeof value;\n      if (i2 === \"parent\" && type === \"object\") {\n        if (parent) cloned[i2] = parent;\n      } else if (i2 === \"source\") {\n        cloned[i2] = value;\n      } else if (Array.isArray(value)) {\n        cloned[i2] = value.map((j) => cloneNode(j, cloned));\n      } else {\n        if (type === \"object\" && value !== null) value = cloneNode(value);\n        cloned[i2] = value;\n      }\n    }\n    return cloned;\n  }\n  function sourceOffset(inputCSS, position) {\n    if (position && typeof position.offset !== \"undefined\") {\n      return position.offset;\n    }\n    let column = 1;\n    let line = 1;\n    let offset = 0;\n    for (let i2 = 0; i2 < inputCSS.length; i2++) {\n      if (line === position.line && column === position.column) {\n        offset = i2;\n        break;\n      }\n      if (inputCSS[i2] === \"\\n\") {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n    return offset;\n  }\n  class Node2 {\n    get proxyOf() {\n      return this;\n    }\n    constructor(defaults = {}) {\n      this.raws = {};\n      this[isClean] = false;\n      this[my] = true;\n      for (let name in defaults) {\n        if (name === \"nodes\") {\n          this.nodes = [];\n          for (let node2 of defaults[name]) {\n            if (typeof node2.clone === \"function\") {\n              this.append(node2.clone());\n            } else {\n              this.append(node2);\n            }\n          }\n        } else {\n          this[name] = defaults[name];\n        }\n      }\n    }\n    addToError(error) {\n      error.postcssNode = this;\n      if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n        let s2 = this.source;\n        error.stack = error.stack.replace(\n          /\\n\\s{4}at /,\n          `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n        );\n      }\n      return error;\n    }\n    after(add) {\n      this.parent.insertAfter(this, add);\n      return this;\n    }\n    assign(overrides = {}) {\n      for (let name in overrides) {\n        this[name] = overrides[name];\n      }\n      return this;\n    }\n    before(add) {\n      this.parent.insertBefore(this, add);\n      return this;\n    }\n    cleanRaws(keepBetween) {\n      delete this.raws.before;\n      delete this.raws.after;\n      if (!keepBetween) delete this.raws.between;\n    }\n    clone(overrides = {}) {\n      let cloned = cloneNode(this);\n      for (let name in overrides) {\n        cloned[name] = overrides[name];\n      }\n      return cloned;\n    }\n    cloneAfter(overrides = {}) {\n      let cloned = this.clone(overrides);\n      this.parent.insertAfter(this, cloned);\n      return cloned;\n    }\n    cloneBefore(overrides = {}) {\n      let cloned = this.clone(overrides);\n      this.parent.insertBefore(this, cloned);\n      return cloned;\n    }\n    error(message, opts = {}) {\n      if (this.source) {\n        let { end, start } = this.rangeBy(opts);\n        return this.source.input.error(\n          message,\n          { column: start.column, line: start.line },\n          { column: end.column, line: end.line },\n          opts\n        );\n      }\n      return new CssSyntaxError(message);\n    }\n    getProxyProcessor() {\n      return {\n        get(node2, prop) {\n          if (prop === \"proxyOf\") {\n            return node2;\n          } else if (prop === \"root\") {\n            return () => node2.root().toProxy();\n          } else {\n            return node2[prop];\n          }\n        },\n        set(node2, prop, value) {\n          if (node2[prop] === value) return true;\n          node2[prop] = value;\n          if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n          prop === \"text\") {\n            node2.markDirty();\n          }\n          return true;\n        }\n      };\n    }\n    /* c8 ignore next 3 */\n    markClean() {\n      this[isClean] = true;\n    }\n    markDirty() {\n      if (this[isClean]) {\n        this[isClean] = false;\n        let next = this;\n        while (next = next.parent) {\n          next[isClean] = false;\n        }\n      }\n    }\n    next() {\n      if (!this.parent) return void 0;\n      let index2 = this.parent.index(this);\n      return this.parent.nodes[index2 + 1];\n    }\n    positionBy(opts = {}) {\n      let pos = this.source.start;\n      if (opts.index) {\n        pos = this.positionInside(opts.index);\n      } else if (opts.word) {\n        let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n        let stringRepresentation = inputString.slice(\n          sourceOffset(inputString, this.source.start),\n          sourceOffset(inputString, this.source.end)\n        );\n        let index2 = stringRepresentation.indexOf(opts.word);\n        if (index2 !== -1) pos = this.positionInside(index2);\n      }\n      return pos;\n    }\n    positionInside(index2) {\n      let column = this.source.start.column;\n      let line = this.source.start.line;\n      let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n      let offset = sourceOffset(inputString, this.source.start);\n      let end = offset + index2;\n      for (let i2 = offset; i2 < end; i2++) {\n        if (inputString[i2] === \"\\n\") {\n          column = 1;\n          line += 1;\n        } else {\n          column += 1;\n        }\n      }\n      return { column, line, offset: end };\n    }\n    prev() {\n      if (!this.parent) return void 0;\n      let index2 = this.parent.index(this);\n      return this.parent.nodes[index2 - 1];\n    }\n    rangeBy(opts = {}) {\n      let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n      let start = {\n        column: this.source.start.column,\n        line: this.source.start.line,\n        offset: sourceOffset(inputString, this.source.start)\n      };\n      let end = this.source.end ? {\n        column: this.source.end.column + 1,\n        line: this.source.end.line,\n        offset: typeof this.source.end.offset === \"number\" ? (\n          // `source.end.offset` is exclusive, so we don't need to add 1\n          this.source.end.offset\n        ) : (\n          // Since line/column in this.source.end is inclusive,\n          // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n          // So, we add 1 to convert it to exclusive.\n          sourceOffset(inputString, this.source.end) + 1\n        )\n      } : {\n        column: start.column + 1,\n        line: start.line,\n        offset: start.offset + 1\n      };\n      if (opts.word) {\n        let stringRepresentation = inputString.slice(\n          sourceOffset(inputString, this.source.start),\n          sourceOffset(inputString, this.source.end)\n        );\n        let index2 = stringRepresentation.indexOf(opts.word);\n        if (index2 !== -1) {\n          start = this.positionInside(index2);\n          end = this.positionInside(index2 + opts.word.length);\n        }\n      } else {\n        if (opts.start) {\n          start = {\n            column: opts.start.column,\n            line: opts.start.line,\n            offset: sourceOffset(inputString, opts.start)\n          };\n        } else if (opts.index) {\n          start = this.positionInside(opts.index);\n        }\n        if (opts.end) {\n          end = {\n            column: opts.end.column,\n            line: opts.end.line,\n            offset: sourceOffset(inputString, opts.end)\n          };\n        } else if (typeof opts.endIndex === \"number\") {\n          end = this.positionInside(opts.endIndex);\n        } else if (opts.index) {\n          end = this.positionInside(opts.index + 1);\n        }\n      }\n      if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n        end = {\n          column: start.column + 1,\n          line: start.line,\n          offset: start.offset + 1\n        };\n      }\n      return { end, start };\n    }\n    raw(prop, defaultType) {\n      let str = new Stringifier();\n      return str.raw(this, prop, defaultType);\n    }\n    remove() {\n      if (this.parent) {\n        this.parent.removeChild(this);\n      }\n      this.parent = void 0;\n      return this;\n    }\n    replaceWith(...nodes) {\n      if (this.parent) {\n        let bookmark = this;\n        let foundSelf = false;\n        for (let node2 of nodes) {\n          if (node2 === this) {\n            foundSelf = true;\n          } else if (foundSelf) {\n            this.parent.insertAfter(bookmark, node2);\n            bookmark = node2;\n          } else {\n            this.parent.insertBefore(bookmark, node2);\n          }\n        }\n        if (!foundSelf) {\n          this.remove();\n        }\n      }\n      return this;\n    }\n    root() {\n      let result2 = this;\n      while (result2.parent && result2.parent.type !== \"document\") {\n        result2 = result2.parent;\n      }\n      return result2;\n    }\n    toJSON(_, inputs) {\n      let fixed = {};\n      let emitInputs = inputs == null;\n      inputs = inputs || /* @__PURE__ */ new Map();\n      let inputsNextIndex = 0;\n      for (let name in this) {\n        if (!Object.prototype.hasOwnProperty.call(this, name)) {\n          continue;\n        }\n        if (name === \"parent\" || name === \"proxyCache\") continue;\n        let value = this[name];\n        if (Array.isArray(value)) {\n          fixed[name] = value.map((i2) => {\n            if (typeof i2 === \"object\" && i2.toJSON) {\n              return i2.toJSON(null, inputs);\n            } else {\n              return i2;\n            }\n          });\n        } else if (typeof value === \"object\" && value.toJSON) {\n          fixed[name] = value.toJSON(null, inputs);\n        } else if (name === \"source\") {\n          if (value == null) continue;\n          let inputId = inputs.get(value.input);\n          if (inputId == null) {\n            inputId = inputsNextIndex;\n            inputs.set(value.input, inputsNextIndex);\n            inputsNextIndex++;\n          }\n          fixed[name] = {\n            end: value.end,\n            inputId,\n            start: value.start\n          };\n        } else {\n          fixed[name] = value;\n        }\n      }\n      if (emitInputs) {\n        fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n      }\n      return fixed;\n    }\n    toProxy() {\n      if (!this.proxyCache) {\n        this.proxyCache = new Proxy(this, this.getProxyProcessor());\n      }\n      return this.proxyCache;\n    }\n    toString(stringifier2 = stringify) {\n      if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n      let result2 = \"\";\n      stringifier2(this, (i2) => {\n        result2 += i2;\n      });\n      return result2;\n    }\n    warn(result2, text, opts = {}) {\n      let data = { node: this };\n      for (let i2 in opts) data[i2] = opts[i2];\n      return result2.warn(text, data);\n    }\n  }\n  node$1 = Node2;\n  Node2.default = Node2;\n  return node$1;\n}\nvar comment$1;\nvar hasRequiredComment$1;\nfunction requireComment$1() {\n  if (hasRequiredComment$1) return comment$1;\n  hasRequiredComment$1 = 1;\n  let Node2 = requireNode$1();\n  class Comment extends Node2 {\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"comment\";\n    }\n  }\n  comment$1 = Comment;\n  Comment.default = Comment;\n  return comment$1;\n}\nvar declaration$1;\nvar hasRequiredDeclaration$1;\nfunction requireDeclaration$1() {\n  if (hasRequiredDeclaration$1) return declaration$1;\n  hasRequiredDeclaration$1 = 1;\n  let Node2 = requireNode$1();\n  class Declaration extends Node2 {\n    get variable() {\n      return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n    }\n    constructor(defaults) {\n      if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n        defaults = { ...defaults, value: String(defaults.value) };\n      }\n      super(defaults);\n      this.type = \"decl\";\n    }\n  }\n  declaration$1 = Declaration;\n  Declaration.default = Declaration;\n  return declaration$1;\n}\nvar container$1;\nvar hasRequiredContainer$1;\nfunction requireContainer$1() {\n  if (hasRequiredContainer$1) return container$1;\n  hasRequiredContainer$1 = 1;\n  let Comment = requireComment$1();\n  let Declaration = requireDeclaration$1();\n  let Node2 = requireNode$1();\n  let { isClean, my } = requireSymbols$1();\n  let AtRule, parse, Root, Rule;\n  function cleanSource(nodes) {\n    return nodes.map((i2) => {\n      if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n      delete i2.source;\n      return i2;\n    });\n  }\n  function markTreeDirty(node2) {\n    node2[isClean] = false;\n    if (node2.proxyOf.nodes) {\n      for (let i2 of node2.proxyOf.nodes) {\n        markTreeDirty(i2);\n      }\n    }\n  }\n  class Container extends Node2 {\n    get first() {\n      if (!this.proxyOf.nodes) return void 0;\n      return this.proxyOf.nodes[0];\n    }\n    get last() {\n      if (!this.proxyOf.nodes) return void 0;\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n    }\n    append(...children) {\n      for (let child of children) {\n        let nodes = this.normalize(child, this.last);\n        for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n      }\n      this.markDirty();\n      return this;\n    }\n    cleanRaws(keepBetween) {\n      super.cleanRaws(keepBetween);\n      if (this.nodes) {\n        for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n      }\n    }\n    each(callback) {\n      if (!this.proxyOf.nodes) return void 0;\n      let iterator = this.getIterator();\n      let index2, result2;\n      while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n        index2 = this.indexes[iterator];\n        result2 = callback(this.proxyOf.nodes[index2], index2);\n        if (result2 === false) break;\n        this.indexes[iterator] += 1;\n      }\n      delete this.indexes[iterator];\n      return result2;\n    }\n    every(condition) {\n      return this.nodes.every(condition);\n    }\n    getIterator() {\n      if (!this.lastEach) this.lastEach = 0;\n      if (!this.indexes) this.indexes = {};\n      this.lastEach += 1;\n      let iterator = this.lastEach;\n      this.indexes[iterator] = 0;\n      return iterator;\n    }\n    getProxyProcessor() {\n      return {\n        get(node2, prop) {\n          if (prop === \"proxyOf\") {\n            return node2;\n          } else if (!node2[prop]) {\n            return node2[prop];\n          } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n            return (...args) => {\n              return node2[prop](\n                ...args.map((i2) => {\n                  if (typeof i2 === \"function\") {\n                    return (child, index2) => i2(child.toProxy(), index2);\n                  } else {\n                    return i2;\n                  }\n                })\n              );\n            };\n          } else if (prop === \"every\" || prop === \"some\") {\n            return (cb) => {\n              return node2[prop](\n                (child, ...other) => cb(child.toProxy(), ...other)\n              );\n            };\n          } else if (prop === \"root\") {\n            return () => node2.root().toProxy();\n          } else if (prop === \"nodes\") {\n            return node2.nodes.map((i2) => i2.toProxy());\n          } else if (prop === \"first\" || prop === \"last\") {\n            return node2[prop].toProxy();\n          } else {\n            return node2[prop];\n          }\n        },\n        set(node2, prop, value) {\n          if (node2[prop] === value) return true;\n          node2[prop] = value;\n          if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n            node2.markDirty();\n          }\n          return true;\n        }\n      };\n    }\n    index(child) {\n      if (typeof child === \"number\") return child;\n      if (child.proxyOf) child = child.proxyOf;\n      return this.proxyOf.nodes.indexOf(child);\n    }\n    insertAfter(exist, add) {\n      let existIndex = this.index(exist);\n      let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n      existIndex = this.index(exist);\n      for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n      let index2;\n      for (let id in this.indexes) {\n        index2 = this.indexes[id];\n        if (existIndex < index2) {\n          this.indexes[id] = index2 + nodes.length;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    insertBefore(exist, add) {\n      let existIndex = this.index(exist);\n      let type = existIndex === 0 ? \"prepend\" : false;\n      let nodes = this.normalize(\n        add,\n        this.proxyOf.nodes[existIndex],\n        type\n      ).reverse();\n      existIndex = this.index(exist);\n      for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n      let index2;\n      for (let id in this.indexes) {\n        index2 = this.indexes[id];\n        if (existIndex <= index2) {\n          this.indexes[id] = index2 + nodes.length;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    normalize(nodes, sample) {\n      if (typeof nodes === \"string\") {\n        nodes = cleanSource(parse(nodes).nodes);\n      } else if (typeof nodes === \"undefined\") {\n        nodes = [];\n      } else if (Array.isArray(nodes)) {\n        nodes = nodes.slice(0);\n        for (let i2 of nodes) {\n          if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n        }\n      } else if (nodes.type === \"root\" && this.type !== \"document\") {\n        nodes = nodes.nodes.slice(0);\n        for (let i2 of nodes) {\n          if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n        }\n      } else if (nodes.type) {\n        nodes = [nodes];\n      } else if (nodes.prop) {\n        if (typeof nodes.value === \"undefined\") {\n          throw new Error(\"Value field is missed in node creation\");\n        } else if (typeof nodes.value !== \"string\") {\n          nodes.value = String(nodes.value);\n        }\n        nodes = [new Declaration(nodes)];\n      } else if (nodes.selector || nodes.selectors) {\n        nodes = [new Rule(nodes)];\n      } else if (nodes.name) {\n        nodes = [new AtRule(nodes)];\n      } else if (nodes.text) {\n        nodes = [new Comment(nodes)];\n      } else {\n        throw new Error(\"Unknown node type in node creation\");\n      }\n      let processed = nodes.map((i2) => {\n        if (!i2[my]) Container.rebuild(i2);\n        i2 = i2.proxyOf;\n        if (i2.parent) i2.parent.removeChild(i2);\n        if (i2[isClean]) markTreeDirty(i2);\n        if (!i2.raws) i2.raws = {};\n        if (typeof i2.raws.before === \"undefined\") {\n          if (sample && typeof sample.raws.before !== \"undefined\") {\n            i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n          }\n        }\n        i2.parent = this.proxyOf;\n        return i2;\n      });\n      return processed;\n    }\n    prepend(...children) {\n      children = children.reverse();\n      for (let child of children) {\n        let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n        for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n        for (let id in this.indexes) {\n          this.indexes[id] = this.indexes[id] + nodes.length;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    push(child) {\n      child.parent = this;\n      this.proxyOf.nodes.push(child);\n      return this;\n    }\n    removeAll() {\n      for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n      this.proxyOf.nodes = [];\n      this.markDirty();\n      return this;\n    }\n    removeChild(child) {\n      child = this.index(child);\n      this.proxyOf.nodes[child].parent = void 0;\n      this.proxyOf.nodes.splice(child, 1);\n      let index2;\n      for (let id in this.indexes) {\n        index2 = this.indexes[id];\n        if (index2 >= child) {\n          this.indexes[id] = index2 - 1;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    replaceValues(pattern, opts, callback) {\n      if (!callback) {\n        callback = opts;\n        opts = {};\n      }\n      this.walkDecls((decl) => {\n        if (opts.props && !opts.props.includes(decl.prop)) return;\n        if (opts.fast && !decl.value.includes(opts.fast)) return;\n        decl.value = decl.value.replace(pattern, callback);\n      });\n      this.markDirty();\n      return this;\n    }\n    some(condition) {\n      return this.nodes.some(condition);\n    }\n    walk(callback) {\n      return this.each((child, i2) => {\n        let result2;\n        try {\n          result2 = callback(child, i2);\n        } catch (e2) {\n          throw child.addToError(e2);\n        }\n        if (result2 !== false && child.walk) {\n          result2 = child.walk(callback);\n        }\n        return result2;\n      });\n    }\n    walkAtRules(name, callback) {\n      if (!callback) {\n        callback = name;\n        return this.walk((child, i2) => {\n          if (child.type === \"atrule\") {\n            return callback(child, i2);\n          }\n        });\n      }\n      if (name instanceof RegExp) {\n        return this.walk((child, i2) => {\n          if (child.type === \"atrule\" && name.test(child.name)) {\n            return callback(child, i2);\n          }\n        });\n      }\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\" && child.name === name) {\n          return callback(child, i2);\n        }\n      });\n    }\n    walkComments(callback) {\n      return this.walk((child, i2) => {\n        if (child.type === \"comment\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    walkDecls(prop, callback) {\n      if (!callback) {\n        callback = prop;\n        return this.walk((child, i2) => {\n          if (child.type === \"decl\") {\n            return callback(child, i2);\n          }\n        });\n      }\n      if (prop instanceof RegExp) {\n        return this.walk((child, i2) => {\n          if (child.type === \"decl\" && prop.test(child.prop)) {\n            return callback(child, i2);\n          }\n        });\n      }\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\" && child.prop === prop) {\n          return callback(child, i2);\n        }\n      });\n    }\n    walkRules(selector, callback) {\n      if (!callback) {\n        callback = selector;\n        return this.walk((child, i2) => {\n          if (child.type === \"rule\") {\n            return callback(child, i2);\n          }\n        });\n      }\n      if (selector instanceof RegExp) {\n        return this.walk((child, i2) => {\n          if (child.type === \"rule\" && selector.test(child.selector)) {\n            return callback(child, i2);\n          }\n        });\n      }\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\" && child.selector === selector) {\n          return callback(child, i2);\n        }\n      });\n    }\n  }\n  Container.registerParse = (dependant) => {\n    parse = dependant;\n  };\n  Container.registerRule = (dependant) => {\n    Rule = dependant;\n  };\n  Container.registerAtRule = (dependant) => {\n    AtRule = dependant;\n  };\n  Container.registerRoot = (dependant) => {\n    Root = dependant;\n  };\n  container$1 = Container;\n  Container.default = Container;\n  Container.rebuild = (node2) => {\n    if (node2.type === \"atrule\") {\n      Object.setPrototypeOf(node2, AtRule.prototype);\n    } else if (node2.type === \"rule\") {\n      Object.setPrototypeOf(node2, Rule.prototype);\n    } else if (node2.type === \"decl\") {\n      Object.setPrototypeOf(node2, Declaration.prototype);\n    } else if (node2.type === \"comment\") {\n      Object.setPrototypeOf(node2, Comment.prototype);\n    } else if (node2.type === \"root\") {\n      Object.setPrototypeOf(node2, Root.prototype);\n    }\n    node2[my] = true;\n    if (node2.nodes) {\n      node2.nodes.forEach((child) => {\n        Container.rebuild(child);\n      });\n    }\n  };\n  return container$1;\n}\nvar atRule$1;\nvar hasRequiredAtRule$1;\nfunction requireAtRule$1() {\n  if (hasRequiredAtRule$1) return atRule$1;\n  hasRequiredAtRule$1 = 1;\n  let Container = requireContainer$1();\n  class AtRule extends Container {\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"atrule\";\n    }\n    append(...children) {\n      if (!this.proxyOf.nodes) this.nodes = [];\n      return super.append(...children);\n    }\n    prepend(...children) {\n      if (!this.proxyOf.nodes) this.nodes = [];\n      return super.prepend(...children);\n    }\n  }\n  atRule$1 = AtRule;\n  AtRule.default = AtRule;\n  Container.registerAtRule(AtRule);\n  return atRule$1;\n}\nvar document$1$1;\nvar hasRequiredDocument$1;\nfunction requireDocument$1() {\n  if (hasRequiredDocument$1) return document$1$1;\n  hasRequiredDocument$1 = 1;\n  let Container = requireContainer$1();\n  let LazyResult, Processor;\n  class Document2 extends Container {\n    constructor(defaults) {\n      super({ type: \"document\", ...defaults });\n      if (!this.nodes) {\n        this.nodes = [];\n      }\n    }\n    toResult(opts = {}) {\n      let lazy = new LazyResult(new Processor(), this, opts);\n      return lazy.stringify();\n    }\n  }\n  Document2.registerLazyResult = (dependant) => {\n    LazyResult = dependant;\n  };\n  Document2.registerProcessor = (dependant) => {\n    Processor = dependant;\n  };\n  document$1$1 = Document2;\n  Document2.default = Document2;\n  return document$1$1;\n}\nvar nonSecure$1;\nvar hasRequiredNonSecure$1;\nfunction requireNonSecure$1() {\n  if (hasRequiredNonSecure$1) return nonSecure$1;\n  hasRequiredNonSecure$1 = 1;\n  let urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n  let customAlphabet = (alphabet, defaultSize = 21) => {\n    return (size = defaultSize) => {\n      let id = \"\";\n      let i2 = size | 0;\n      while (i2--) {\n        id += alphabet[Math.random() * alphabet.length | 0];\n      }\n      return id;\n    };\n  };\n  let nanoid = (size = 21) => {\n    let id = \"\";\n    let i2 = size | 0;\n    while (i2--) {\n      id += urlAlphabet[Math.random() * 64 | 0];\n    }\n    return id;\n  };\n  nonSecure$1 = { nanoid, customAlphabet };\n  return nonSecure$1;\n}\nvar previousMap$1;\nvar hasRequiredPreviousMap$1;\nfunction requirePreviousMap$1() {\n  if (hasRequiredPreviousMap$1) return previousMap$1;\n  hasRequiredPreviousMap$1 = 1;\n  let { existsSync, readFileSync } = require$$2$1;\n  let { dirname, join } = require$$2$1;\n  let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n  function fromBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str, \"base64\").toString();\n    } else {\n      return window.atob(str);\n    }\n  }\n  class PreviousMap {\n    constructor(css, opts) {\n      if (opts.map === false) return;\n      this.loadAnnotation(css);\n      this.inline = this.startWith(this.annotation, \"data:\");\n      let prev = opts.map ? opts.map.prev : void 0;\n      let text = this.loadMap(opts.from, prev);\n      if (!this.mapFile && opts.from) {\n        this.mapFile = opts.from;\n      }\n      if (this.mapFile) this.root = dirname(this.mapFile);\n      if (text) this.text = text;\n    }\n    consumer() {\n      if (!this.consumerCache) {\n        this.consumerCache = new SourceMapConsumer(this.text);\n      }\n      return this.consumerCache;\n    }\n    decodeInline(text) {\n      let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n      let baseUri = /^data:application\\/json;base64,/;\n      let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n      let uri = /^data:application\\/json,/;\n      let uriMatch = text.match(charsetUri) || text.match(uri);\n      if (uriMatch) {\n        return decodeURIComponent(text.substr(uriMatch[0].length));\n      }\n      let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);\n      if (baseUriMatch) {\n        return fromBase64(text.substr(baseUriMatch[0].length));\n      }\n      let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n      throw new Error(\"Unsupported source map encoding \" + encoding);\n    }\n    getAnnotationURL(sourceMapString) {\n      return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n    }\n    isMap(map) {\n      if (typeof map !== \"object\") return false;\n      return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n    }\n    loadAnnotation(css) {\n      let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g);\n      if (!comments) return;\n      let start = css.lastIndexOf(comments.pop());\n      let end = css.indexOf(\"*/\", start);\n      if (start > -1 && end > -1) {\n        this.annotation = this.getAnnotationURL(css.substring(start, end));\n      }\n    }\n    loadFile(path) {\n      this.root = dirname(path);\n      if (existsSync(path)) {\n        this.mapFile = path;\n        return readFileSync(path, \"utf-8\").toString().trim();\n      }\n    }\n    loadMap(file, prev) {\n      if (prev === false) return false;\n      if (prev) {\n        if (typeof prev === \"string\") {\n          return prev;\n        } else if (typeof prev === \"function\") {\n          let prevPath = prev(file);\n          if (prevPath) {\n            let map = this.loadFile(prevPath);\n            if (!map) {\n              throw new Error(\n                \"Unable to load previous source map: \" + prevPath.toString()\n              );\n            }\n            return map;\n          }\n        } else if (prev instanceof SourceMapConsumer) {\n          return SourceMapGenerator.fromSourceMap(prev).toString();\n        } else if (prev instanceof SourceMapGenerator) {\n          return prev.toString();\n        } else if (this.isMap(prev)) {\n          return JSON.stringify(prev);\n        } else {\n          throw new Error(\n            \"Unsupported previous source map format: \" + prev.toString()\n          );\n        }\n      } else if (this.inline) {\n        return this.decodeInline(this.annotation);\n      } else if (this.annotation) {\n        let map = this.annotation;\n        if (file) map = join(dirname(file), map);\n        return this.loadFile(map);\n      }\n    }\n    startWith(string, start) {\n      if (!string) return false;\n      return string.substr(0, start.length) === start;\n    }\n    withContent() {\n      return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n    }\n  }\n  previousMap$1 = PreviousMap;\n  PreviousMap.default = PreviousMap;\n  return previousMap$1;\n}\nvar input$1;\nvar hasRequiredInput$1;\nfunction requireInput$1() {\n  if (hasRequiredInput$1) return input$1;\n  hasRequiredInput$1 = 1;\n  let { nanoid } = /* @__PURE__ */ requireNonSecure$1();\n  let { isAbsolute, resolve } = require$$2$1;\n  let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n  let { fileURLToPath, pathToFileURL } = require$$2$1;\n  let CssSyntaxError = requireCssSyntaxError$1();\n  let PreviousMap = requirePreviousMap$1();\n  let terminalHighlight = require$$2$1;\n  let lineToIndexCache = Symbol(\"lineToIndexCache\");\n  let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n  let pathAvailable = Boolean(resolve && isAbsolute);\n  function getLineToIndex(input2) {\n    if (input2[lineToIndexCache]) return input2[lineToIndexCache];\n    let lines = input2.css.split(\"\\n\");\n    let lineToIndex = new Array(lines.length);\n    let prevIndex = 0;\n    for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n      lineToIndex[i2] = prevIndex;\n      prevIndex += lines[i2].length + 1;\n    }\n    input2[lineToIndexCache] = lineToIndex;\n    return lineToIndex;\n  }\n  class Input {\n    get from() {\n      return this.file || this.id;\n    }\n    constructor(css, opts = {}) {\n      if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n        throw new Error(`PostCSS received ${css} instead of CSS string`);\n      }\n      this.css = css.toString();\n      if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n        this.hasBOM = true;\n        this.css = this.css.slice(1);\n      } else {\n        this.hasBOM = false;\n      }\n      this.document = this.css;\n      if (opts.document) this.document = opts.document.toString();\n      if (opts.from) {\n        if (!pathAvailable || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n          this.file = opts.from;\n        } else {\n          this.file = resolve(opts.from);\n        }\n      }\n      if (pathAvailable && sourceMapAvailable) {\n        let map = new PreviousMap(this.css, opts);\n        if (map.text) {\n          this.map = map;\n          let file = map.consumer().file;\n          if (!this.file && file) this.file = this.mapResolve(file);\n        }\n      }\n      if (!this.file) {\n        this.id = \"<input css \" + nanoid(6) + \">\";\n      }\n      if (this.map) this.map.file = this.from;\n    }\n    error(message, line, column, opts = {}) {\n      let endColumn, endLine, endOffset, offset, result2;\n      if (line && typeof line === \"object\") {\n        let start = line;\n        let end = column;\n        if (typeof start.offset === \"number\") {\n          offset = start.offset;\n          let pos = this.fromOffset(offset);\n          line = pos.line;\n          column = pos.col;\n        } else {\n          line = start.line;\n          column = start.column;\n          offset = this.fromLineAndColumn(line, column);\n        }\n        if (typeof end.offset === \"number\") {\n          endOffset = end.offset;\n          let pos = this.fromOffset(endOffset);\n          endLine = pos.line;\n          endColumn = pos.col;\n        } else {\n          endLine = end.line;\n          endColumn = end.column;\n          endOffset = this.fromLineAndColumn(end.line, end.column);\n        }\n      } else if (!column) {\n        offset = line;\n        let pos = this.fromOffset(offset);\n        line = pos.line;\n        column = pos.col;\n      } else {\n        offset = this.fromLineAndColumn(line, column);\n      }\n      let origin = this.origin(line, column, endLine, endColumn);\n      if (origin) {\n        result2 = new CssSyntaxError(\n          message,\n          origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n          origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n          origin.source,\n          origin.file,\n          opts.plugin\n        );\n      } else {\n        result2 = new CssSyntaxError(\n          message,\n          endLine === void 0 ? line : { column, line },\n          endLine === void 0 ? column : { column: endColumn, line: endLine },\n          this.css,\n          this.file,\n          opts.plugin\n        );\n      }\n      result2.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css };\n      if (this.file) {\n        if (pathToFileURL) {\n          result2.input.url = pathToFileURL(this.file).toString();\n        }\n        result2.input.file = this.file;\n      }\n      return result2;\n    }\n    fromLineAndColumn(line, column) {\n      let lineToIndex = getLineToIndex(this);\n      let index2 = lineToIndex[line - 1];\n      return index2 + column - 1;\n    }\n    fromOffset(offset) {\n      let lineToIndex = getLineToIndex(this);\n      let lastLine = lineToIndex[lineToIndex.length - 1];\n      let min = 0;\n      if (offset >= lastLine) {\n        min = lineToIndex.length - 1;\n      } else {\n        let max = lineToIndex.length - 2;\n        let mid;\n        while (min < max) {\n          mid = min + (max - min >> 1);\n          if (offset < lineToIndex[mid]) {\n            max = mid - 1;\n          } else if (offset >= lineToIndex[mid + 1]) {\n            min = mid + 1;\n          } else {\n            min = mid;\n            break;\n          }\n        }\n      }\n      return {\n        col: offset - lineToIndex[min] + 1,\n        line: min + 1\n      };\n    }\n    mapResolve(file) {\n      if (/^\\w+:\\/\\//.test(file)) {\n        return file;\n      }\n      return resolve(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n    }\n    origin(line, column, endLine, endColumn) {\n      if (!this.map) return false;\n      let consumer = this.map.consumer();\n      let from = consumer.originalPositionFor({ column, line });\n      if (!from.source) return false;\n      let to;\n      if (typeof endLine === \"number\") {\n        to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n      }\n      let fromUrl;\n      if (isAbsolute(from.source)) {\n        fromUrl = pathToFileURL(from.source);\n      } else {\n        fromUrl = new URL(\n          from.source,\n          this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n        );\n      }\n      let result2 = {\n        column: from.column,\n        endColumn: to && to.column,\n        endLine: to && to.line,\n        line: from.line,\n        url: fromUrl.toString()\n      };\n      if (fromUrl.protocol === \"file:\") {\n        if (fileURLToPath) {\n          result2.file = fileURLToPath(fromUrl);\n        } else {\n          throw new Error(`file: protocol is not available in this PostCSS build`);\n        }\n      }\n      let source = consumer.sourceContentFor(from.source);\n      if (source) result2.source = source;\n      return result2;\n    }\n    toJSON() {\n      let json = {};\n      for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n        if (this[name] != null) {\n          json[name] = this[name];\n        }\n      }\n      if (this.map) {\n        json.map = { ...this.map };\n        if (json.map.consumerCache) {\n          json.map.consumerCache = void 0;\n        }\n      }\n      return json;\n    }\n  }\n  input$1 = Input;\n  Input.default = Input;\n  if (terminalHighlight && terminalHighlight.registerInput) {\n    terminalHighlight.registerInput(Input);\n  }\n  return input$1;\n}\nvar root$1;\nvar hasRequiredRoot$1;\nfunction requireRoot$1() {\n  if (hasRequiredRoot$1) return root$1;\n  hasRequiredRoot$1 = 1;\n  let Container = requireContainer$1();\n  let LazyResult, Processor;\n  class Root extends Container {\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"root\";\n      if (!this.nodes) this.nodes = [];\n    }\n    normalize(child, sample, type) {\n      let nodes = super.normalize(child);\n      if (sample) {\n        if (type === \"prepend\") {\n          if (this.nodes.length > 1) {\n            sample.raws.before = this.nodes[1].raws.before;\n          } else {\n            delete sample.raws.before;\n          }\n        } else if (this.first !== sample) {\n          for (let node2 of nodes) {\n            node2.raws.before = sample.raws.before;\n          }\n        }\n      }\n      return nodes;\n    }\n    removeChild(child, ignore) {\n      let index2 = this.index(child);\n      if (!ignore && index2 === 0 && this.nodes.length > 1) {\n        this.nodes[1].raws.before = this.nodes[index2].raws.before;\n      }\n      return super.removeChild(child);\n    }\n    toResult(opts = {}) {\n      let lazy = new LazyResult(new Processor(), this, opts);\n      return lazy.stringify();\n    }\n  }\n  Root.registerLazyResult = (dependant) => {\n    LazyResult = dependant;\n  };\n  Root.registerProcessor = (dependant) => {\n    Processor = dependant;\n  };\n  root$1 = Root;\n  Root.default = Root;\n  Container.registerRoot(Root);\n  return root$1;\n}\nvar list_1$1;\nvar hasRequiredList$1;\nfunction requireList$1() {\n  if (hasRequiredList$1) return list_1$1;\n  hasRequiredList$1 = 1;\n  let list = {\n    comma(string) {\n      return list.split(string, [\",\"], true);\n    },\n    space(string) {\n      let spaces = [\" \", \"\\n\", \"\t\"];\n      return list.split(string, spaces);\n    },\n    split(string, separators, last) {\n      let array = [];\n      let current = \"\";\n      let split = false;\n      let func = 0;\n      let inQuote = false;\n      let prevQuote = \"\";\n      let escape = false;\n      for (let letter of string) {\n        if (escape) {\n          escape = false;\n        } else if (letter === \"\\\\\") {\n          escape = true;\n        } else if (inQuote) {\n          if (letter === prevQuote) {\n            inQuote = false;\n          }\n        } else if (letter === '\"' || letter === \"'\") {\n          inQuote = true;\n          prevQuote = letter;\n        } else if (letter === \"(\") {\n          func += 1;\n        } else if (letter === \")\") {\n          if (func > 0) func -= 1;\n        } else if (func === 0) {\n          if (separators.includes(letter)) split = true;\n        }\n        if (split) {\n          if (current !== \"\") array.push(current.trim());\n          current = \"\";\n          split = false;\n        } else {\n          current += letter;\n        }\n      }\n      if (last || current !== \"\") array.push(current.trim());\n      return array;\n    }\n  };\n  list_1$1 = list;\n  list.default = list;\n  return list_1$1;\n}\nvar rule$1;\nvar hasRequiredRule$1;\nfunction requireRule$1() {\n  if (hasRequiredRule$1) return rule$1;\n  hasRequiredRule$1 = 1;\n  let Container = requireContainer$1();\n  let list = requireList$1();\n  class Rule extends Container {\n    get selectors() {\n      return list.comma(this.selector);\n    }\n    set selectors(values) {\n      let match = this.selector ? this.selector.match(/,\\s*/) : null;\n      let sep = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n      this.selector = values.join(sep);\n    }\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"rule\";\n      if (!this.nodes) this.nodes = [];\n    }\n  }\n  rule$1 = Rule;\n  Rule.default = Rule;\n  Container.registerRule(Rule);\n  return rule$1;\n}\nvar fromJSON_1$1;\nvar hasRequiredFromJSON$1;\nfunction requireFromJSON$1() {\n  if (hasRequiredFromJSON$1) return fromJSON_1$1;\n  hasRequiredFromJSON$1 = 1;\n  let AtRule = requireAtRule$1();\n  let Comment = requireComment$1();\n  let Declaration = requireDeclaration$1();\n  let Input = requireInput$1();\n  let PreviousMap = requirePreviousMap$1();\n  let Root = requireRoot$1();\n  let Rule = requireRule$1();\n  function fromJSON(json, inputs) {\n    if (Array.isArray(json)) return json.map((n2) => fromJSON(n2));\n    let { inputs: ownInputs, ...defaults } = json;\n    if (ownInputs) {\n      inputs = [];\n      for (let input2 of ownInputs) {\n        let inputHydrated = { ...input2, __proto__: Input.prototype };\n        if (inputHydrated.map) {\n          inputHydrated.map = {\n            ...inputHydrated.map,\n            __proto__: PreviousMap.prototype\n          };\n        }\n        inputs.push(inputHydrated);\n      }\n    }\n    if (defaults.nodes) {\n      defaults.nodes = json.nodes.map((n2) => fromJSON(n2, inputs));\n    }\n    if (defaults.source) {\n      let { inputId, ...source } = defaults.source;\n      defaults.source = source;\n      if (inputId != null) {\n        defaults.source.input = inputs[inputId];\n      }\n    }\n    if (defaults.type === \"root\") {\n      return new Root(defaults);\n    } else if (defaults.type === \"decl\") {\n      return new Declaration(defaults);\n    } else if (defaults.type === \"rule\") {\n      return new Rule(defaults);\n    } else if (defaults.type === \"comment\") {\n      return new Comment(defaults);\n    } else if (defaults.type === \"atrule\") {\n      return new AtRule(defaults);\n    } else {\n      throw new Error(\"Unknown node type: \" + json.type);\n    }\n  }\n  fromJSON_1$1 = fromJSON;\n  fromJSON.default = fromJSON;\n  return fromJSON_1$1;\n}\nvar mapGenerator$1;\nvar hasRequiredMapGenerator$1;\nfunction requireMapGenerator$1() {\n  if (hasRequiredMapGenerator$1) return mapGenerator$1;\n  hasRequiredMapGenerator$1 = 1;\n  let { dirname, relative, resolve, sep } = require$$2$1;\n  let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n  let { pathToFileURL } = require$$2$1;\n  let Input = requireInput$1();\n  let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n  let pathAvailable = Boolean(dirname && resolve && relative && sep);\n  class MapGenerator {\n    constructor(stringify, root2, opts, cssString) {\n      this.stringify = stringify;\n      this.mapOpts = opts.map || {};\n      this.root = root2;\n      this.opts = opts;\n      this.css = cssString;\n      this.originalCSS = cssString;\n      this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n      this.memoizedFileURLs = /* @__PURE__ */ new Map();\n      this.memoizedPaths = /* @__PURE__ */ new Map();\n      this.memoizedURLs = /* @__PURE__ */ new Map();\n    }\n    addAnnotation() {\n      let content;\n      if (this.isInline()) {\n        content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n      } else if (typeof this.mapOpts.annotation === \"string\") {\n        content = this.mapOpts.annotation;\n      } else if (typeof this.mapOpts.annotation === \"function\") {\n        content = this.mapOpts.annotation(this.opts.to, this.root);\n      } else {\n        content = this.outputFile() + \".map\";\n      }\n      let eol = \"\\n\";\n      if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n      this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n    }\n    applyPrevMaps() {\n      for (let prev of this.previous()) {\n        let from = this.toUrl(this.path(prev.file));\n        let root2 = prev.root || dirname(prev.file);\n        let map;\n        if (this.mapOpts.sourcesContent === false) {\n          map = new SourceMapConsumer(prev.text);\n          if (map.sourcesContent) {\n            map.sourcesContent = null;\n          }\n        } else {\n          map = prev.consumer();\n        }\n        this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n      }\n    }\n    clearAnnotation() {\n      if (this.mapOpts.annotation === false) return;\n      if (this.root) {\n        let node2;\n        for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n          node2 = this.root.nodes[i2];\n          if (node2.type !== \"comment\") continue;\n          if (node2.text.startsWith(\"# sourceMappingURL=\")) {\n            this.root.removeChild(i2);\n          }\n        }\n      } else if (this.css) {\n        this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n      }\n    }\n    generate() {\n      this.clearAnnotation();\n      if (pathAvailable && sourceMapAvailable && this.isMap()) {\n        return this.generateMap();\n      } else {\n        let result2 = \"\";\n        this.stringify(this.root, (i2) => {\n          result2 += i2;\n        });\n        return [result2];\n      }\n    }\n    generateMap() {\n      if (this.root) {\n        this.generateString();\n      } else if (this.previous().length === 1) {\n        let prev = this.previous()[0].consumer();\n        prev.file = this.outputFile();\n        this.map = SourceMapGenerator.fromSourceMap(prev, {\n          ignoreInvalidMapping: true\n        });\n      } else {\n        this.map = new SourceMapGenerator({\n          file: this.outputFile(),\n          ignoreInvalidMapping: true\n        });\n        this.map.addMapping({\n          generated: { column: 0, line: 1 },\n          original: { column: 0, line: 1 },\n          source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n        });\n      }\n      if (this.isSourcesContent()) this.setSourcesContent();\n      if (this.root && this.previous().length > 0) this.applyPrevMaps();\n      if (this.isAnnotation()) this.addAnnotation();\n      if (this.isInline()) {\n        return [this.css];\n      } else {\n        return [this.css, this.map];\n      }\n    }\n    generateString() {\n      this.css = \"\";\n      this.map = new SourceMapGenerator({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      });\n      let line = 1;\n      let column = 1;\n      let noSource = \"<no source>\";\n      let mapping = {\n        generated: { column: 0, line: 0 },\n        original: { column: 0, line: 0 },\n        source: \"\"\n      };\n      let last, lines;\n      this.stringify(this.root, (str, node2, type) => {\n        this.css += str;\n        if (node2 && type !== \"end\") {\n          mapping.generated.line = line;\n          mapping.generated.column = column - 1;\n          if (node2.source && node2.source.start) {\n            mapping.source = this.sourcePath(node2);\n            mapping.original.line = node2.source.start.line;\n            mapping.original.column = node2.source.start.column - 1;\n            this.map.addMapping(mapping);\n          } else {\n            mapping.source = noSource;\n            mapping.original.line = 1;\n            mapping.original.column = 0;\n            this.map.addMapping(mapping);\n          }\n        }\n        lines = str.match(/\\n/g);\n        if (lines) {\n          line += lines.length;\n          last = str.lastIndexOf(\"\\n\");\n          column = str.length - last;\n        } else {\n          column += str.length;\n        }\n        if (node2 && type !== \"start\") {\n          let p = node2.parent || { raws: {} };\n          let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n          if (!childless || node2 !== p.last || p.raws.semicolon) {\n            if (node2.source && node2.source.end) {\n              mapping.source = this.sourcePath(node2);\n              mapping.original.line = node2.source.end.line;\n              mapping.original.column = node2.source.end.column - 1;\n              mapping.generated.line = line;\n              mapping.generated.column = column - 2;\n              this.map.addMapping(mapping);\n            } else {\n              mapping.source = noSource;\n              mapping.original.line = 1;\n              mapping.original.column = 0;\n              mapping.generated.line = line;\n              mapping.generated.column = column - 1;\n              this.map.addMapping(mapping);\n            }\n          }\n        }\n      });\n    }\n    isAnnotation() {\n      if (this.isInline()) {\n        return true;\n      }\n      if (typeof this.mapOpts.annotation !== \"undefined\") {\n        return this.mapOpts.annotation;\n      }\n      if (this.previous().length) {\n        return this.previous().some((i2) => i2.annotation);\n      }\n      return true;\n    }\n    isInline() {\n      if (typeof this.mapOpts.inline !== \"undefined\") {\n        return this.mapOpts.inline;\n      }\n      let annotation = this.mapOpts.annotation;\n      if (typeof annotation !== \"undefined\" && annotation !== true) {\n        return false;\n      }\n      if (this.previous().length) {\n        return this.previous().some((i2) => i2.inline);\n      }\n      return true;\n    }\n    isMap() {\n      if (typeof this.opts.map !== \"undefined\") {\n        return !!this.opts.map;\n      }\n      return this.previous().length > 0;\n    }\n    isSourcesContent() {\n      if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n        return this.mapOpts.sourcesContent;\n      }\n      if (this.previous().length) {\n        return this.previous().some((i2) => i2.withContent());\n      }\n      return true;\n    }\n    outputFile() {\n      if (this.opts.to) {\n        return this.path(this.opts.to);\n      } else if (this.opts.from) {\n        return this.path(this.opts.from);\n      } else {\n        return \"to.css\";\n      }\n    }\n    path(file) {\n      if (this.mapOpts.absolute) return file;\n      if (file.charCodeAt(0) === 60) return file;\n      if (/^\\w+:\\/\\//.test(file)) return file;\n      let cached = this.memoizedPaths.get(file);\n      if (cached) return cached;\n      let from = this.opts.to ? dirname(this.opts.to) : \".\";\n      if (typeof this.mapOpts.annotation === \"string\") {\n        from = dirname(resolve(from, this.mapOpts.annotation));\n      }\n      let path = relative(from, file);\n      this.memoizedPaths.set(file, path);\n      return path;\n    }\n    previous() {\n      if (!this.previousMaps) {\n        this.previousMaps = [];\n        if (this.root) {\n          this.root.walk((node2) => {\n            if (node2.source && node2.source.input.map) {\n              let map = node2.source.input.map;\n              if (!this.previousMaps.includes(map)) {\n                this.previousMaps.push(map);\n              }\n            }\n          });\n        } else {\n          let input2 = new Input(this.originalCSS, this.opts);\n          if (input2.map) this.previousMaps.push(input2.map);\n        }\n      }\n      return this.previousMaps;\n    }\n    setSourcesContent() {\n      let already = {};\n      if (this.root) {\n        this.root.walk((node2) => {\n          if (node2.source) {\n            let from = node2.source.input.from;\n            if (from && !already[from]) {\n              already[from] = true;\n              let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n              this.map.setSourceContent(fromUrl, node2.source.input.css);\n            }\n          }\n        });\n      } else if (this.css) {\n        let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n        this.map.setSourceContent(from, this.css);\n      }\n    }\n    sourcePath(node2) {\n      if (this.mapOpts.from) {\n        return this.toUrl(this.mapOpts.from);\n      } else if (this.usesFileUrls) {\n        return this.toFileUrl(node2.source.input.from);\n      } else {\n        return this.toUrl(this.path(node2.source.input.from));\n      }\n    }\n    toBase64(str) {\n      if (Buffer) {\n        return Buffer.from(str).toString(\"base64\");\n      } else {\n        return window.btoa(unescape(encodeURIComponent(str)));\n      }\n    }\n    toFileUrl(path) {\n      let cached = this.memoizedFileURLs.get(path);\n      if (cached) return cached;\n      if (pathToFileURL) {\n        let fileURL = pathToFileURL(path).toString();\n        this.memoizedFileURLs.set(path, fileURL);\n        return fileURL;\n      } else {\n        throw new Error(\n          \"`map.absolute` option is not available in this PostCSS build\"\n        );\n      }\n    }\n    toUrl(path) {\n      let cached = this.memoizedURLs.get(path);\n      if (cached) return cached;\n      if (sep === \"\\\\\") {\n        path = path.replace(/\\\\/g, \"/\");\n      }\n      let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n      this.memoizedURLs.set(path, url);\n      return url;\n    }\n  }\n  mapGenerator$1 = MapGenerator;\n  return mapGenerator$1;\n}\nvar tokenize$1;\nvar hasRequiredTokenize$1;\nfunction requireTokenize$1() {\n  if (hasRequiredTokenize$1) return tokenize$1;\n  hasRequiredTokenize$1 = 1;\n  const SINGLE_QUOTE = \"'\".charCodeAt(0);\n  const DOUBLE_QUOTE = '\"'.charCodeAt(0);\n  const BACKSLASH = \"\\\\\".charCodeAt(0);\n  const SLASH = \"/\".charCodeAt(0);\n  const NEWLINE = \"\\n\".charCodeAt(0);\n  const SPACE = \" \".charCodeAt(0);\n  const FEED = \"\\f\".charCodeAt(0);\n  const TAB = \"\t\".charCodeAt(0);\n  const CR = \"\\r\".charCodeAt(0);\n  const OPEN_SQUARE = \"[\".charCodeAt(0);\n  const CLOSE_SQUARE = \"]\".charCodeAt(0);\n  const OPEN_PARENTHESES = \"(\".charCodeAt(0);\n  const CLOSE_PARENTHESES = \")\".charCodeAt(0);\n  const OPEN_CURLY = \"{\".charCodeAt(0);\n  const CLOSE_CURLY = \"}\".charCodeAt(0);\n  const SEMICOLON = \";\".charCodeAt(0);\n  const ASTERISK = \"*\".charCodeAt(0);\n  const COLON = \":\".charCodeAt(0);\n  const AT = \"@\".charCodeAt(0);\n  const RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\n  const RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\n  const RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\n  const RE_HEX_ESCAPE = /[\\da-f]/i;\n  tokenize$1 = function tokenizer(input2, options = {}) {\n    let css = input2.css.valueOf();\n    let ignore = options.ignoreErrors;\n    let code, content, escape, next, quote;\n    let currentToken, escaped, escapePos, n2, prev;\n    let length = css.length;\n    let pos = 0;\n    let buffer = [];\n    let returned = [];\n    function position() {\n      return pos;\n    }\n    function unclosed(what) {\n      throw input2.error(\"Unclosed \" + what, pos);\n    }\n    function endOfFile() {\n      return returned.length === 0 && pos >= length;\n    }\n    function nextToken(opts) {\n      if (returned.length) return returned.pop();\n      if (pos >= length) return;\n      let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n      code = css.charCodeAt(pos);\n      switch (code) {\n        case NEWLINE:\n        case SPACE:\n        case TAB:\n        case CR:\n        case FEED: {\n          next = pos;\n          do {\n            next += 1;\n            code = css.charCodeAt(next);\n          } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n          currentToken = [\"space\", css.slice(pos, next)];\n          pos = next - 1;\n          break;\n        }\n        case OPEN_SQUARE:\n        case CLOSE_SQUARE:\n        case OPEN_CURLY:\n        case CLOSE_CURLY:\n        case COLON:\n        case SEMICOLON:\n        case CLOSE_PARENTHESES: {\n          let controlChar = String.fromCharCode(code);\n          currentToken = [controlChar, controlChar, pos];\n          break;\n        }\n        case OPEN_PARENTHESES: {\n          prev = buffer.length ? buffer.pop()[1] : \"\";\n          n2 = css.charCodeAt(pos + 1);\n          if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n            next = pos;\n            do {\n              escaped = false;\n              next = css.indexOf(\")\", next + 1);\n              if (next === -1) {\n                if (ignore || ignoreUnclosed) {\n                  next = pos;\n                  break;\n                } else {\n                  unclosed(\"bracket\");\n                }\n              }\n              escapePos = next;\n              while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n                escapePos -= 1;\n                escaped = !escaped;\n              }\n            } while (escaped);\n            currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n            pos = next;\n          } else {\n            next = css.indexOf(\")\", pos + 1);\n            content = css.slice(pos, next + 1);\n            if (next === -1 || RE_BAD_BRACKET.test(content)) {\n              currentToken = [\"(\", \"(\", pos];\n            } else {\n              currentToken = [\"brackets\", content, pos, next];\n              pos = next;\n            }\n          }\n          break;\n        }\n        case SINGLE_QUOTE:\n        case DOUBLE_QUOTE: {\n          quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n          next = pos;\n          do {\n            escaped = false;\n            next = css.indexOf(quote, next + 1);\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos + 1;\n                break;\n              } else {\n                unclosed(\"string\");\n              }\n            }\n            escapePos = next;\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n          currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n          break;\n        }\n        case AT: {\n          RE_AT_END.lastIndex = pos + 1;\n          RE_AT_END.test(css);\n          if (RE_AT_END.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_AT_END.lastIndex - 2;\n          }\n          currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n          break;\n        }\n        case BACKSLASH: {\n          next = pos;\n          escape = true;\n          while (css.charCodeAt(next + 1) === BACKSLASH) {\n            next += 1;\n            escape = !escape;\n          }\n          code = css.charCodeAt(next + 1);\n          if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n            next += 1;\n            if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n              while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n                next += 1;\n              }\n              if (css.charCodeAt(next + 1) === SPACE) {\n                next += 1;\n              }\n            }\n          }\n          currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n          break;\n        }\n        default: {\n          if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n            next = css.indexOf(\"*/\", pos + 2) + 1;\n            if (next === 0) {\n              if (ignore || ignoreUnclosed) {\n                next = css.length;\n              } else {\n                unclosed(\"comment\");\n              }\n            }\n            currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n            pos = next;\n          } else {\n            RE_WORD_END.lastIndex = pos + 1;\n            RE_WORD_END.test(css);\n            if (RE_WORD_END.lastIndex === 0) {\n              next = css.length - 1;\n            } else {\n              next = RE_WORD_END.lastIndex - 2;\n            }\n            currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n            buffer.push(currentToken);\n            pos = next;\n          }\n          break;\n        }\n      }\n      pos++;\n      return currentToken;\n    }\n    function back(token) {\n      returned.push(token);\n    }\n    return {\n      back,\n      endOfFile,\n      nextToken,\n      position\n    };\n  };\n  return tokenize$1;\n}\nvar parser$1;\nvar hasRequiredParser$1;\nfunction requireParser$1() {\n  if (hasRequiredParser$1) return parser$1;\n  hasRequiredParser$1 = 1;\n  let AtRule = requireAtRule$1();\n  let Comment = requireComment$1();\n  let Declaration = requireDeclaration$1();\n  let Root = requireRoot$1();\n  let Rule = requireRule$1();\n  let tokenizer = requireTokenize$1();\n  const SAFE_COMMENT_NEIGHBOR = {\n    empty: true,\n    space: true\n  };\n  function findLastWithPosition(tokens) {\n    for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n      let token = tokens[i2];\n      let pos = token[3] || token[2];\n      if (pos) return pos;\n    }\n  }\n  class Parser {\n    constructor(input2) {\n      this.input = input2;\n      this.root = new Root();\n      this.current = this.root;\n      this.spaces = \"\";\n      this.semicolon = false;\n      this.createTokenizer();\n      this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n    }\n    atrule(token) {\n      let node2 = new AtRule();\n      node2.name = token[1].slice(1);\n      if (node2.name === \"\") {\n        this.unnamedAtrule(node2, token);\n      }\n      this.init(node2, token[2]);\n      let type;\n      let prev;\n      let shift;\n      let last = false;\n      let open = false;\n      let params = [];\n      let brackets = [];\n      while (!this.tokenizer.endOfFile()) {\n        token = this.tokenizer.nextToken();\n        type = token[0];\n        if (type === \"(\" || type === \"[\") {\n          brackets.push(type === \"(\" ? \")\" : \"]\");\n        } else if (type === \"{\" && brackets.length > 0) {\n          brackets.push(\"}\");\n        } else if (type === brackets[brackets.length - 1]) {\n          brackets.pop();\n        }\n        if (brackets.length === 0) {\n          if (type === \";\") {\n            node2.source.end = this.getPosition(token[2]);\n            node2.source.end.offset++;\n            this.semicolon = true;\n            break;\n          } else if (type === \"{\") {\n            open = true;\n            break;\n          } else if (type === \"}\") {\n            if (params.length > 0) {\n              shift = params.length - 1;\n              prev = params[shift];\n              while (prev && prev[0] === \"space\") {\n                prev = params[--shift];\n              }\n              if (prev) {\n                node2.source.end = this.getPosition(prev[3] || prev[2]);\n                node2.source.end.offset++;\n              }\n            }\n            this.end(token);\n            break;\n          } else {\n            params.push(token);\n          }\n        } else {\n          params.push(token);\n        }\n        if (this.tokenizer.endOfFile()) {\n          last = true;\n          break;\n        }\n      }\n      node2.raws.between = this.spacesAndCommentsFromEnd(params);\n      if (params.length) {\n        node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n        this.raw(node2, \"params\", params);\n        if (last) {\n          token = params[params.length - 1];\n          node2.source.end = this.getPosition(token[3] || token[2]);\n          node2.source.end.offset++;\n          this.spaces = node2.raws.between;\n          node2.raws.between = \"\";\n        }\n      } else {\n        node2.raws.afterName = \"\";\n        node2.params = \"\";\n      }\n      if (open) {\n        node2.nodes = [];\n        this.current = node2;\n      }\n    }\n    checkMissedSemicolon(tokens) {\n      let colon = this.colon(tokens);\n      if (colon === false) return;\n      let founded = 0;\n      let token;\n      for (let j = colon - 1; j >= 0; j--) {\n        token = tokens[j];\n        if (token[0] !== \"space\") {\n          founded += 1;\n          if (founded === 2) break;\n        }\n      }\n      throw this.input.error(\n        \"Missed semicolon\",\n        token[0] === \"word\" ? token[3] + 1 : token[2]\n      );\n    }\n    colon(tokens) {\n      let brackets = 0;\n      let prev, token, type;\n      for (let [i2, element] of tokens.entries()) {\n        token = element;\n        type = token[0];\n        if (type === \"(\") {\n          brackets += 1;\n        }\n        if (type === \")\") {\n          brackets -= 1;\n        }\n        if (brackets === 0 && type === \":\") {\n          if (!prev) {\n            this.doubleColon(token);\n          } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n            continue;\n          } else {\n            return i2;\n          }\n        }\n        prev = token;\n      }\n      return false;\n    }\n    comment(token) {\n      let node2 = new Comment();\n      this.init(node2, token[2]);\n      node2.source.end = this.getPosition(token[3] || token[2]);\n      node2.source.end.offset++;\n      let text = token[1].slice(2, -2);\n      if (/^\\s*$/.test(text)) {\n        node2.text = \"\";\n        node2.raws.left = text;\n        node2.raws.right = \"\";\n      } else {\n        let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n        node2.text = match[2];\n        node2.raws.left = match[1];\n        node2.raws.right = match[3];\n      }\n    }\n    createTokenizer() {\n      this.tokenizer = tokenizer(this.input);\n    }\n    decl(tokens, customProperty) {\n      let node2 = new Declaration();\n      this.init(node2, tokens[0][2]);\n      let last = tokens[tokens.length - 1];\n      if (last[0] === \";\") {\n        this.semicolon = true;\n        tokens.pop();\n      }\n      node2.source.end = this.getPosition(\n        last[3] || last[2] || findLastWithPosition(tokens)\n      );\n      node2.source.end.offset++;\n      while (tokens[0][0] !== \"word\") {\n        if (tokens.length === 1) this.unknownWord(tokens);\n        node2.raws.before += tokens.shift()[1];\n      }\n      node2.source.start = this.getPosition(tokens[0][2]);\n      node2.prop = \"\";\n      while (tokens.length) {\n        let type = tokens[0][0];\n        if (type === \":\" || type === \"space\" || type === \"comment\") {\n          break;\n        }\n        node2.prop += tokens.shift()[1];\n      }\n      node2.raws.between = \"\";\n      let token;\n      while (tokens.length) {\n        token = tokens.shift();\n        if (token[0] === \":\") {\n          node2.raws.between += token[1];\n          break;\n        } else {\n          if (token[0] === \"word\" && /\\w/.test(token[1])) {\n            this.unknownWord([token]);\n          }\n          node2.raws.between += token[1];\n        }\n      }\n      if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n        node2.raws.before += node2.prop[0];\n        node2.prop = node2.prop.slice(1);\n      }\n      let firstSpaces = [];\n      let next;\n      while (tokens.length) {\n        next = tokens[0][0];\n        if (next !== \"space\" && next !== \"comment\") break;\n        firstSpaces.push(tokens.shift());\n      }\n      this.precheckMissedSemicolon(tokens);\n      for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n        token = tokens[i2];\n        if (token[1].toLowerCase() === \"!important\") {\n          node2.important = true;\n          let string = this.stringFrom(tokens, i2);\n          string = this.spacesFromEnd(tokens) + string;\n          if (string !== \" !important\") node2.raws.important = string;\n          break;\n        } else if (token[1].toLowerCase() === \"important\") {\n          let cache = tokens.slice(0);\n          let str = \"\";\n          for (let j = i2; j > 0; j--) {\n            let type = cache[j][0];\n            if (str.trim().startsWith(\"!\") && type !== \"space\") {\n              break;\n            }\n            str = cache.pop()[1] + str;\n          }\n          if (str.trim().startsWith(\"!\")) {\n            node2.important = true;\n            node2.raws.important = str;\n            tokens = cache;\n          }\n        }\n        if (token[0] !== \"space\" && token[0] !== \"comment\") {\n          break;\n        }\n      }\n      let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n      if (hasWord) {\n        node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n        firstSpaces = [];\n      }\n      this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n      if (node2.value.includes(\":\") && !customProperty) {\n        this.checkMissedSemicolon(tokens);\n      }\n    }\n    doubleColon(token) {\n      throw this.input.error(\n        \"Double colon\",\n        { offset: token[2] },\n        { offset: token[2] + token[1].length }\n      );\n    }\n    emptyRule(token) {\n      let node2 = new Rule();\n      this.init(node2, token[2]);\n      node2.selector = \"\";\n      node2.raws.between = \"\";\n      this.current = node2;\n    }\n    end(token) {\n      if (this.current.nodes && this.current.nodes.length) {\n        this.current.raws.semicolon = this.semicolon;\n      }\n      this.semicolon = false;\n      this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n      this.spaces = \"\";\n      if (this.current.parent) {\n        this.current.source.end = this.getPosition(token[2]);\n        this.current.source.end.offset++;\n        this.current = this.current.parent;\n      } else {\n        this.unexpectedClose(token);\n      }\n    }\n    endFile() {\n      if (this.current.parent) this.unclosedBlock();\n      if (this.current.nodes && this.current.nodes.length) {\n        this.current.raws.semicolon = this.semicolon;\n      }\n      this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n      this.root.source.end = this.getPosition(this.tokenizer.position());\n    }\n    freeSemicolon(token) {\n      this.spaces += token[1];\n      if (this.current.nodes) {\n        let prev = this.current.nodes[this.current.nodes.length - 1];\n        if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n          prev.raws.ownSemicolon = this.spaces;\n          this.spaces = \"\";\n          prev.source.end = this.getPosition(token[2]);\n          prev.source.end.offset += prev.raws.ownSemicolon.length;\n        }\n      }\n    }\n    // Helpers\n    getPosition(offset) {\n      let pos = this.input.fromOffset(offset);\n      return {\n        column: pos.col,\n        line: pos.line,\n        offset\n      };\n    }\n    init(node2, offset) {\n      this.current.push(node2);\n      node2.source = {\n        input: this.input,\n        start: this.getPosition(offset)\n      };\n      node2.raws.before = this.spaces;\n      this.spaces = \"\";\n      if (node2.type !== \"comment\") this.semicolon = false;\n    }\n    other(start) {\n      let end = false;\n      let type = null;\n      let colon = false;\n      let bracket = null;\n      let brackets = [];\n      let customProperty = start[1].startsWith(\"--\");\n      let tokens = [];\n      let token = start;\n      while (token) {\n        type = token[0];\n        tokens.push(token);\n        if (type === \"(\" || type === \"[\") {\n          if (!bracket) bracket = token;\n          brackets.push(type === \"(\" ? \")\" : \"]\");\n        } else if (customProperty && colon && type === \"{\") {\n          if (!bracket) bracket = token;\n          brackets.push(\"}\");\n        } else if (brackets.length === 0) {\n          if (type === \";\") {\n            if (colon) {\n              this.decl(tokens, customProperty);\n              return;\n            } else {\n              break;\n            }\n          } else if (type === \"{\") {\n            this.rule(tokens);\n            return;\n          } else if (type === \"}\") {\n            this.tokenizer.back(tokens.pop());\n            end = true;\n            break;\n          } else if (type === \":\") {\n            colon = true;\n          }\n        } else if (type === brackets[brackets.length - 1]) {\n          brackets.pop();\n          if (brackets.length === 0) bracket = null;\n        }\n        token = this.tokenizer.nextToken();\n      }\n      if (this.tokenizer.endOfFile()) end = true;\n      if (brackets.length > 0) this.unclosedBracket(bracket);\n      if (end && colon) {\n        if (!customProperty) {\n          while (tokens.length) {\n            token = tokens[tokens.length - 1][0];\n            if (token !== \"space\" && token !== \"comment\") break;\n            this.tokenizer.back(tokens.pop());\n          }\n        }\n        this.decl(tokens, customProperty);\n      } else {\n        this.unknownWord(tokens);\n      }\n    }\n    parse() {\n      let token;\n      while (!this.tokenizer.endOfFile()) {\n        token = this.tokenizer.nextToken();\n        switch (token[0]) {\n          case \"space\":\n            this.spaces += token[1];\n            break;\n          case \";\":\n            this.freeSemicolon(token);\n            break;\n          case \"}\":\n            this.end(token);\n            break;\n          case \"comment\":\n            this.comment(token);\n            break;\n          case \"at-word\":\n            this.atrule(token);\n            break;\n          case \"{\":\n            this.emptyRule(token);\n            break;\n          default:\n            this.other(token);\n            break;\n        }\n      }\n      this.endFile();\n    }\n    precheckMissedSemicolon() {\n    }\n    raw(node2, prop, tokens, customProperty) {\n      let token, type;\n      let length = tokens.length;\n      let value = \"\";\n      let clean = true;\n      let next, prev;\n      for (let i2 = 0; i2 < length; i2 += 1) {\n        token = tokens[i2];\n        type = token[0];\n        if (type === \"space\" && i2 === length - 1 && !customProperty) {\n          clean = false;\n        } else if (type === \"comment\") {\n          prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n          next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n          if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n            if (value.slice(-1) === \",\") {\n              clean = false;\n            } else {\n              value += token[1];\n            }\n          } else {\n            clean = false;\n          }\n        } else {\n          value += token[1];\n        }\n      }\n      if (!clean) {\n        let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n        node2.raws[prop] = { raw, value };\n      }\n      node2[prop] = value;\n    }\n    rule(tokens) {\n      tokens.pop();\n      let node2 = new Rule();\n      this.init(node2, tokens[0][2]);\n      node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n      this.raw(node2, \"selector\", tokens);\n      this.current = node2;\n    }\n    spacesAndCommentsFromEnd(tokens) {\n      let lastTokenType;\n      let spaces = \"\";\n      while (tokens.length) {\n        lastTokenType = tokens[tokens.length - 1][0];\n        if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n        spaces = tokens.pop()[1] + spaces;\n      }\n      return spaces;\n    }\n    // Errors\n    spacesAndCommentsFromStart(tokens) {\n      let next;\n      let spaces = \"\";\n      while (tokens.length) {\n        next = tokens[0][0];\n        if (next !== \"space\" && next !== \"comment\") break;\n        spaces += tokens.shift()[1];\n      }\n      return spaces;\n    }\n    spacesFromEnd(tokens) {\n      let lastTokenType;\n      let spaces = \"\";\n      while (tokens.length) {\n        lastTokenType = tokens[tokens.length - 1][0];\n        if (lastTokenType !== \"space\") break;\n        spaces = tokens.pop()[1] + spaces;\n      }\n      return spaces;\n    }\n    stringFrom(tokens, from) {\n      let result2 = \"\";\n      for (let i2 = from; i2 < tokens.length; i2++) {\n        result2 += tokens[i2][1];\n      }\n      tokens.splice(from, tokens.length - from);\n      return result2;\n    }\n    unclosedBlock() {\n      let pos = this.current.source.start;\n      throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n    }\n    unclosedBracket(bracket) {\n      throw this.input.error(\n        \"Unclosed bracket\",\n        { offset: bracket[2] },\n        { offset: bracket[2] + 1 }\n      );\n    }\n    unexpectedClose(token) {\n      throw this.input.error(\n        \"Unexpected }\",\n        { offset: token[2] },\n        { offset: token[2] + 1 }\n      );\n    }\n    unknownWord(tokens) {\n      throw this.input.error(\n        \"Unknown word \" + tokens[0][1],\n        { offset: tokens[0][2] },\n        { offset: tokens[0][2] + tokens[0][1].length }\n      );\n    }\n    unnamedAtrule(node2, token) {\n      throw this.input.error(\n        \"At-rule without name\",\n        { offset: token[2] },\n        { offset: token[2] + token[1].length }\n      );\n    }\n  }\n  parser$1 = Parser;\n  return parser$1;\n}\nvar parse_1$1;\nvar hasRequiredParse$1;\nfunction requireParse$1() {\n  if (hasRequiredParse$1) return parse_1$1;\n  hasRequiredParse$1 = 1;\n  let Container = requireContainer$1();\n  let Input = requireInput$1();\n  let Parser = requireParser$1();\n  function parse(css, opts) {\n    let input2 = new Input(css, opts);\n    let parser2 = new Parser(input2);\n    try {\n      parser2.parse();\n    } catch (e2) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n          if (/\\.scss$/i.test(opts.from)) {\n            e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n          } else if (/\\.sass/i.test(opts.from)) {\n            e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n          } else if (/\\.less$/i.test(opts.from)) {\n            e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n          }\n        }\n      }\n      throw e2;\n    }\n    return parser2.root;\n  }\n  parse_1$1 = parse;\n  parse.default = parse;\n  Container.registerParse(parse);\n  return parse_1$1;\n}\nvar warning$1;\nvar hasRequiredWarning$1;\nfunction requireWarning$1() {\n  if (hasRequiredWarning$1) return warning$1;\n  hasRequiredWarning$1 = 1;\n  class Warning {\n    constructor(text, opts = {}) {\n      this.type = \"warning\";\n      this.text = text;\n      if (opts.node && opts.node.source) {\n        let range = opts.node.rangeBy(opts);\n        this.line = range.start.line;\n        this.column = range.start.column;\n        this.endLine = range.end.line;\n        this.endColumn = range.end.column;\n      }\n      for (let opt in opts) this[opt] = opts[opt];\n    }\n    toString() {\n      if (this.node) {\n        return this.node.error(this.text, {\n          index: this.index,\n          plugin: this.plugin,\n          word: this.word\n        }).message;\n      }\n      if (this.plugin) {\n        return this.plugin + \": \" + this.text;\n      }\n      return this.text;\n    }\n  }\n  warning$1 = Warning;\n  Warning.default = Warning;\n  return warning$1;\n}\nvar result$1;\nvar hasRequiredResult$1;\nfunction requireResult$1() {\n  if (hasRequiredResult$1) return result$1;\n  hasRequiredResult$1 = 1;\n  let Warning = requireWarning$1();\n  class Result {\n    get content() {\n      return this.css;\n    }\n    constructor(processor2, root2, opts) {\n      this.processor = processor2;\n      this.messages = [];\n      this.root = root2;\n      this.opts = opts;\n      this.css = \"\";\n      this.map = void 0;\n    }\n    toString() {\n      return this.css;\n    }\n    warn(text, opts = {}) {\n      if (!opts.plugin) {\n        if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n          opts.plugin = this.lastPlugin.postcssPlugin;\n        }\n      }\n      let warning2 = new Warning(text, opts);\n      this.messages.push(warning2);\n      return warning2;\n    }\n    warnings() {\n      return this.messages.filter((i2) => i2.type === \"warning\");\n    }\n  }\n  result$1 = Result;\n  Result.default = Result;\n  return result$1;\n}\nvar warnOnce$1;\nvar hasRequiredWarnOnce$1;\nfunction requireWarnOnce$1() {\n  if (hasRequiredWarnOnce$1) return warnOnce$1;\n  hasRequiredWarnOnce$1 = 1;\n  let printed = {};\n  warnOnce$1 = function warnOnce2(message) {\n    if (printed[message]) return;\n    printed[message] = true;\n    if (typeof console !== \"undefined\" && console.warn) {\n      console.warn(message);\n    }\n  };\n  return warnOnce$1;\n}\nvar lazyResult$1;\nvar hasRequiredLazyResult$1;\nfunction requireLazyResult$1() {\n  if (hasRequiredLazyResult$1) return lazyResult$1;\n  hasRequiredLazyResult$1 = 1;\n  let Container = requireContainer$1();\n  let Document2 = requireDocument$1();\n  let MapGenerator = requireMapGenerator$1();\n  let parse = requireParse$1();\n  let Result = requireResult$1();\n  let Root = requireRoot$1();\n  let stringify = requireStringify$1();\n  let { isClean, my } = requireSymbols$1();\n  let warnOnce2 = requireWarnOnce$1();\n  const TYPE_TO_CLASS_NAME = {\n    atrule: \"AtRule\",\n    comment: \"Comment\",\n    decl: \"Declaration\",\n    document: \"Document\",\n    root: \"Root\",\n    rule: \"Rule\"\n  };\n  const PLUGIN_PROPS = {\n    AtRule: true,\n    AtRuleExit: true,\n    Comment: true,\n    CommentExit: true,\n    Declaration: true,\n    DeclarationExit: true,\n    Document: true,\n    DocumentExit: true,\n    Once: true,\n    OnceExit: true,\n    postcssPlugin: true,\n    prepare: true,\n    Root: true,\n    RootExit: true,\n    Rule: true,\n    RuleExit: true\n  };\n  const NOT_VISITORS = {\n    Once: true,\n    postcssPlugin: true,\n    prepare: true\n  };\n  const CHILDREN = 0;\n  function isPromise(obj) {\n    return typeof obj === \"object\" && typeof obj.then === \"function\";\n  }\n  function getEvents(node2) {\n    let key = false;\n    let type = TYPE_TO_CLASS_NAME[node2.type];\n    if (node2.type === \"decl\") {\n      key = node2.prop.toLowerCase();\n    } else if (node2.type === \"atrule\") {\n      key = node2.name.toLowerCase();\n    }\n    if (key && node2.append) {\n      return [\n        type,\n        type + \"-\" + key,\n        CHILDREN,\n        type + \"Exit\",\n        type + \"Exit-\" + key\n      ];\n    } else if (key) {\n      return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n    } else if (node2.append) {\n      return [type, CHILDREN, type + \"Exit\"];\n    } else {\n      return [type, type + \"Exit\"];\n    }\n  }\n  function toStack(node2) {\n    let events;\n    if (node2.type === \"document\") {\n      events = [\"Document\", CHILDREN, \"DocumentExit\"];\n    } else if (node2.type === \"root\") {\n      events = [\"Root\", CHILDREN, \"RootExit\"];\n    } else {\n      events = getEvents(node2);\n    }\n    return {\n      eventIndex: 0,\n      events,\n      iterator: 0,\n      node: node2,\n      visitorIndex: 0,\n      visitors: []\n    };\n  }\n  function cleanMarks(node2) {\n    node2[isClean] = false;\n    if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n    return node2;\n  }\n  let postcss2 = {};\n  class LazyResult {\n    get content() {\n      return this.stringify().content;\n    }\n    get css() {\n      return this.stringify().css;\n    }\n    get map() {\n      return this.stringify().map;\n    }\n    get messages() {\n      return this.sync().messages;\n    }\n    get opts() {\n      return this.result.opts;\n    }\n    get processor() {\n      return this.result.processor;\n    }\n    get root() {\n      return this.sync().root;\n    }\n    get [Symbol.toStringTag]() {\n      return \"LazyResult\";\n    }\n    constructor(processor2, css, opts) {\n      this.stringified = false;\n      this.processed = false;\n      let root2;\n      if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n        root2 = cleanMarks(css);\n      } else if (css instanceof LazyResult || css instanceof Result) {\n        root2 = cleanMarks(css.root);\n        if (css.map) {\n          if (typeof opts.map === \"undefined\") opts.map = {};\n          if (!opts.map.inline) opts.map.inline = false;\n          opts.map.prev = css.map;\n        }\n      } else {\n        let parser2 = parse;\n        if (opts.syntax) parser2 = opts.syntax.parse;\n        if (opts.parser) parser2 = opts.parser;\n        if (parser2.parse) parser2 = parser2.parse;\n        try {\n          root2 = parser2(css, opts);\n        } catch (error) {\n          this.processed = true;\n          this.error = error;\n        }\n        if (root2 && !root2[my]) {\n          Container.rebuild(root2);\n        }\n      }\n      this.result = new Result(processor2, root2, opts);\n      this.helpers = { ...postcss2, postcss: postcss2, result: this.result };\n      this.plugins = this.processor.plugins.map((plugin) => {\n        if (typeof plugin === \"object\" && plugin.prepare) {\n          return { ...plugin, ...plugin.prepare(this.result) };\n        } else {\n          return plugin;\n        }\n      });\n    }\n    async() {\n      if (this.error) return Promise.reject(this.error);\n      if (this.processed) return Promise.resolve(this.result);\n      if (!this.processing) {\n        this.processing = this.runAsync();\n      }\n      return this.processing;\n    }\n    catch(onRejected) {\n      return this.async().catch(onRejected);\n    }\n    finally(onFinally) {\n      return this.async().then(onFinally, onFinally);\n    }\n    getAsyncError() {\n      throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n    }\n    handleError(error, node2) {\n      let plugin = this.result.lastPlugin;\n      try {\n        if (node2) node2.addToError(error);\n        this.error = error;\n        if (error.name === \"CssSyntaxError\" && !error.plugin) {\n          error.plugin = plugin.postcssPlugin;\n          error.setMessage();\n        } else if (plugin.postcssVersion) {\n          if (process.env.NODE_ENV !== \"production\") {\n            let pluginName = plugin.postcssPlugin;\n            let pluginVer = plugin.postcssVersion;\n            let runtimeVer = this.result.processor.version;\n            let a2 = pluginVer.split(\".\");\n            let b = runtimeVer.split(\".\");\n            if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n              console.error(\n                \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n              );\n            }\n          }\n        }\n      } catch (err) {\n        if (console && console.error) console.error(err);\n      }\n      return error;\n    }\n    prepareVisitors() {\n      this.listeners = {};\n      let add = (plugin, type, cb) => {\n        if (!this.listeners[type]) this.listeners[type] = [];\n        this.listeners[type].push([plugin, cb]);\n      };\n      for (let plugin of this.plugins) {\n        if (typeof plugin === \"object\") {\n          for (let event in plugin) {\n            if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n              throw new Error(\n                `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n              );\n            }\n            if (!NOT_VISITORS[event]) {\n              if (typeof plugin[event] === \"object\") {\n                for (let filter in plugin[event]) {\n                  if (filter === \"*\") {\n                    add(plugin, event, plugin[event][filter]);\n                  } else {\n                    add(\n                      plugin,\n                      event + \"-\" + filter.toLowerCase(),\n                      plugin[event][filter]\n                    );\n                  }\n                }\n              } else if (typeof plugin[event] === \"function\") {\n                add(plugin, event, plugin[event]);\n              }\n            }\n          }\n        }\n      }\n      this.hasListener = Object.keys(this.listeners).length > 0;\n    }\n    async runAsync() {\n      this.plugin = 0;\n      for (let i2 = 0; i2 < this.plugins.length; i2++) {\n        let plugin = this.plugins[i2];\n        let promise = this.runOnRoot(plugin);\n        if (isPromise(promise)) {\n          try {\n            await promise;\n          } catch (error) {\n            throw this.handleError(error);\n          }\n        }\n      }\n      this.prepareVisitors();\n      if (this.hasListener) {\n        let root2 = this.result.root;\n        while (!root2[isClean]) {\n          root2[isClean] = true;\n          let stack = [toStack(root2)];\n          while (stack.length > 0) {\n            let promise = this.visitTick(stack);\n            if (isPromise(promise)) {\n              try {\n                await promise;\n              } catch (e2) {\n                let node2 = stack[stack.length - 1].node;\n                throw this.handleError(e2, node2);\n              }\n            }\n          }\n        }\n        if (this.listeners.OnceExit) {\n          for (let [plugin, visitor] of this.listeners.OnceExit) {\n            this.result.lastPlugin = plugin;\n            try {\n              if (root2.type === \"document\") {\n                let roots = root2.nodes.map(\n                  (subRoot) => visitor(subRoot, this.helpers)\n                );\n                await Promise.all(roots);\n              } else {\n                await visitor(root2, this.helpers);\n              }\n            } catch (e2) {\n              throw this.handleError(e2);\n            }\n          }\n        }\n      }\n      this.processed = true;\n      return this.stringify();\n    }\n    runOnRoot(plugin) {\n      this.result.lastPlugin = plugin;\n      try {\n        if (typeof plugin === \"object\" && plugin.Once) {\n          if (this.result.root.type === \"document\") {\n            let roots = this.result.root.nodes.map(\n              (root2) => plugin.Once(root2, this.helpers)\n            );\n            if (isPromise(roots[0])) {\n              return Promise.all(roots);\n            }\n            return roots;\n          }\n          return plugin.Once(this.result.root, this.helpers);\n        } else if (typeof plugin === \"function\") {\n          return plugin(this.result.root, this.result);\n        }\n      } catch (error) {\n        throw this.handleError(error);\n      }\n    }\n    stringify() {\n      if (this.error) throw this.error;\n      if (this.stringified) return this.result;\n      this.stringified = true;\n      this.sync();\n      let opts = this.result.opts;\n      let str = stringify;\n      if (opts.syntax) str = opts.syntax.stringify;\n      if (opts.stringifier) str = opts.stringifier;\n      if (str.stringify) str = str.stringify;\n      let map = new MapGenerator(str, this.result.root, this.result.opts);\n      let data = map.generate();\n      this.result.css = data[0];\n      this.result.map = data[1];\n      return this.result;\n    }\n    sync() {\n      if (this.error) throw this.error;\n      if (this.processed) return this.result;\n      this.processed = true;\n      if (this.processing) {\n        throw this.getAsyncError();\n      }\n      for (let plugin of this.plugins) {\n        let promise = this.runOnRoot(plugin);\n        if (isPromise(promise)) {\n          throw this.getAsyncError();\n        }\n      }\n      this.prepareVisitors();\n      if (this.hasListener) {\n        let root2 = this.result.root;\n        while (!root2[isClean]) {\n          root2[isClean] = true;\n          this.walkSync(root2);\n        }\n        if (this.listeners.OnceExit) {\n          if (root2.type === \"document\") {\n            for (let subRoot of root2.nodes) {\n              this.visitSync(this.listeners.OnceExit, subRoot);\n            }\n          } else {\n            this.visitSync(this.listeners.OnceExit, root2);\n          }\n        }\n      }\n      return this.result;\n    }\n    then(onFulfilled, onRejected) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!(\"from\" in this.opts)) {\n          warnOnce2(\n            \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n          );\n        }\n      }\n      return this.async().then(onFulfilled, onRejected);\n    }\n    toString() {\n      return this.css;\n    }\n    visitSync(visitors, node2) {\n      for (let [plugin, visitor] of visitors) {\n        this.result.lastPlugin = plugin;\n        let promise;\n        try {\n          promise = visitor(node2, this.helpers);\n        } catch (e2) {\n          throw this.handleError(e2, node2.proxyOf);\n        }\n        if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n          return true;\n        }\n        if (isPromise(promise)) {\n          throw this.getAsyncError();\n        }\n      }\n    }\n    visitTick(stack) {\n      let visit2 = stack[stack.length - 1];\n      let { node: node2, visitors } = visit2;\n      if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n        stack.pop();\n        return;\n      }\n      if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n        let [plugin, visitor] = visitors[visit2.visitorIndex];\n        visit2.visitorIndex += 1;\n        if (visit2.visitorIndex === visitors.length) {\n          visit2.visitors = [];\n          visit2.visitorIndex = 0;\n        }\n        this.result.lastPlugin = plugin;\n        try {\n          return visitor(node2.toProxy(), this.helpers);\n        } catch (e2) {\n          throw this.handleError(e2, node2);\n        }\n      }\n      if (visit2.iterator !== 0) {\n        let iterator = visit2.iterator;\n        let child;\n        while (child = node2.nodes[node2.indexes[iterator]]) {\n          node2.indexes[iterator] += 1;\n          if (!child[isClean]) {\n            child[isClean] = true;\n            stack.push(toStack(child));\n            return;\n          }\n        }\n        visit2.iterator = 0;\n        delete node2.indexes[iterator];\n      }\n      let events = visit2.events;\n      while (visit2.eventIndex < events.length) {\n        let event = events[visit2.eventIndex];\n        visit2.eventIndex += 1;\n        if (event === CHILDREN) {\n          if (node2.nodes && node2.nodes.length) {\n            node2[isClean] = true;\n            visit2.iterator = node2.getIterator();\n          }\n          return;\n        } else if (this.listeners[event]) {\n          visit2.visitors = this.listeners[event];\n          return;\n        }\n      }\n      stack.pop();\n    }\n    walkSync(node2) {\n      node2[isClean] = true;\n      let events = getEvents(node2);\n      for (let event of events) {\n        if (event === CHILDREN) {\n          if (node2.nodes) {\n            node2.each((child) => {\n              if (!child[isClean]) this.walkSync(child);\n            });\n          }\n        } else {\n          let visitors = this.listeners[event];\n          if (visitors) {\n            if (this.visitSync(visitors, node2.toProxy())) return;\n          }\n        }\n      }\n    }\n    warnings() {\n      return this.sync().warnings();\n    }\n  }\n  LazyResult.registerPostcss = (dependant) => {\n    postcss2 = dependant;\n  };\n  lazyResult$1 = LazyResult;\n  LazyResult.default = LazyResult;\n  Root.registerLazyResult(LazyResult);\n  Document2.registerLazyResult(LazyResult);\n  return lazyResult$1;\n}\nvar noWorkResult$1;\nvar hasRequiredNoWorkResult$1;\nfunction requireNoWorkResult$1() {\n  if (hasRequiredNoWorkResult$1) return noWorkResult$1;\n  hasRequiredNoWorkResult$1 = 1;\n  let MapGenerator = requireMapGenerator$1();\n  let parse = requireParse$1();\n  const Result = requireResult$1();\n  let stringify = requireStringify$1();\n  let warnOnce2 = requireWarnOnce$1();\n  class NoWorkResult {\n    get content() {\n      return this.result.css;\n    }\n    get css() {\n      return this.result.css;\n    }\n    get map() {\n      return this.result.map;\n    }\n    get messages() {\n      return [];\n    }\n    get opts() {\n      return this.result.opts;\n    }\n    get processor() {\n      return this.result.processor;\n    }\n    get root() {\n      if (this._root) {\n        return this._root;\n      }\n      let root2;\n      let parser2 = parse;\n      try {\n        root2 = parser2(this._css, this._opts);\n      } catch (error) {\n        this.error = error;\n      }\n      if (this.error) {\n        throw this.error;\n      } else {\n        this._root = root2;\n        return root2;\n      }\n    }\n    get [Symbol.toStringTag]() {\n      return \"NoWorkResult\";\n    }\n    constructor(processor2, css, opts) {\n      css = css.toString();\n      this.stringified = false;\n      this._processor = processor2;\n      this._css = css;\n      this._opts = opts;\n      this._map = void 0;\n      let root2;\n      let str = stringify;\n      this.result = new Result(this._processor, root2, this._opts);\n      this.result.css = css;\n      let self2 = this;\n      Object.defineProperty(this.result, \"root\", {\n        get() {\n          return self2.root;\n        }\n      });\n      let map = new MapGenerator(str, root2, this._opts, css);\n      if (map.isMap()) {\n        let [generatedCSS, generatedMap] = map.generate();\n        if (generatedCSS) {\n          this.result.css = generatedCSS;\n        }\n        if (generatedMap) {\n          this.result.map = generatedMap;\n        }\n      } else {\n        map.clearAnnotation();\n        this.result.css = map.css;\n      }\n    }\n    async() {\n      if (this.error) return Promise.reject(this.error);\n      return Promise.resolve(this.result);\n    }\n    catch(onRejected) {\n      return this.async().catch(onRejected);\n    }\n    finally(onFinally) {\n      return this.async().then(onFinally, onFinally);\n    }\n    sync() {\n      if (this.error) throw this.error;\n      return this.result;\n    }\n    then(onFulfilled, onRejected) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!(\"from\" in this._opts)) {\n          warnOnce2(\n            \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n          );\n        }\n      }\n      return this.async().then(onFulfilled, onRejected);\n    }\n    toString() {\n      return this._css;\n    }\n    warnings() {\n      return [];\n    }\n  }\n  noWorkResult$1 = NoWorkResult;\n  NoWorkResult.default = NoWorkResult;\n  return noWorkResult$1;\n}\nvar processor$1;\nvar hasRequiredProcessor$1;\nfunction requireProcessor$1() {\n  if (hasRequiredProcessor$1) return processor$1;\n  hasRequiredProcessor$1 = 1;\n  let Document2 = requireDocument$1();\n  let LazyResult = requireLazyResult$1();\n  let NoWorkResult = requireNoWorkResult$1();\n  let Root = requireRoot$1();\n  class Processor {\n    constructor(plugins = []) {\n      this.version = \"8.5.6\";\n      this.plugins = this.normalize(plugins);\n    }\n    normalize(plugins) {\n      let normalized = [];\n      for (let i2 of plugins) {\n        if (i2.postcss === true) {\n          i2 = i2();\n        } else if (i2.postcss) {\n          i2 = i2.postcss;\n        }\n        if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n          normalized = normalized.concat(i2.plugins);\n        } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n          normalized.push(i2);\n        } else if (typeof i2 === \"function\") {\n          normalized.push(i2);\n        } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            throw new Error(\n              \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n            );\n          }\n        } else {\n          throw new Error(i2 + \" is not a PostCSS plugin\");\n        }\n      }\n      return normalized;\n    }\n    process(css, opts = {}) {\n      if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n        return new NoWorkResult(this, css, opts);\n      } else {\n        return new LazyResult(this, css, opts);\n      }\n    }\n    use(plugin) {\n      this.plugins = this.plugins.concat(this.normalize([plugin]));\n      return this;\n    }\n  }\n  processor$1 = Processor;\n  Processor.default = Processor;\n  Root.registerProcessor(Processor);\n  Document2.registerProcessor(Processor);\n  return processor$1;\n}\nvar postcss_1$1;\nvar hasRequiredPostcss$1;\nfunction requirePostcss$1() {\n  if (hasRequiredPostcss$1) return postcss_1$1;\n  hasRequiredPostcss$1 = 1;\n  let AtRule = requireAtRule$1();\n  let Comment = requireComment$1();\n  let Container = requireContainer$1();\n  let CssSyntaxError = requireCssSyntaxError$1();\n  let Declaration = requireDeclaration$1();\n  let Document2 = requireDocument$1();\n  let fromJSON = requireFromJSON$1();\n  let Input = requireInput$1();\n  let LazyResult = requireLazyResult$1();\n  let list = requireList$1();\n  let Node2 = requireNode$1();\n  let parse = requireParse$1();\n  let Processor = requireProcessor$1();\n  let Result = requireResult$1();\n  let Root = requireRoot$1();\n  let Rule = requireRule$1();\n  let stringify = requireStringify$1();\n  let Warning = requireWarning$1();\n  function postcss2(...plugins) {\n    if (plugins.length === 1 && Array.isArray(plugins[0])) {\n      plugins = plugins[0];\n    }\n    return new Processor(plugins);\n  }\n  postcss2.plugin = function plugin(name, initializer) {\n    let warningPrinted = false;\n    function creator(...args) {\n      if (console && console.warn && !warningPrinted) {\n        warningPrinted = true;\n        console.warn(\n          name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n        );\n        if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n          console.warn(\n            name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n          );\n        }\n      }\n      let transformer = initializer(...args);\n      transformer.postcssPlugin = name;\n      transformer.postcssVersion = new Processor().version;\n      return transformer;\n    }\n    let cache;\n    Object.defineProperty(creator, \"postcss\", {\n      get() {\n        if (!cache) cache = creator();\n        return cache;\n      }\n    });\n    creator.process = function(css, processOpts, pluginOpts) {\n      return postcss2([creator(pluginOpts)]).process(css, processOpts);\n    };\n    return creator;\n  };\n  postcss2.stringify = stringify;\n  postcss2.parse = parse;\n  postcss2.fromJSON = fromJSON;\n  postcss2.list = list;\n  postcss2.comment = (defaults) => new Comment(defaults);\n  postcss2.atRule = (defaults) => new AtRule(defaults);\n  postcss2.decl = (defaults) => new Declaration(defaults);\n  postcss2.rule = (defaults) => new Rule(defaults);\n  postcss2.root = (defaults) => new Root(defaults);\n  postcss2.document = (defaults) => new Document2(defaults);\n  postcss2.CssSyntaxError = CssSyntaxError;\n  postcss2.Declaration = Declaration;\n  postcss2.Container = Container;\n  postcss2.Processor = Processor;\n  postcss2.Document = Document2;\n  postcss2.Comment = Comment;\n  postcss2.Warning = Warning;\n  postcss2.AtRule = AtRule;\n  postcss2.Result = Result;\n  postcss2.Input = Input;\n  postcss2.Rule = Rule;\n  postcss2.Root = Root;\n  postcss2.Node = Node2;\n  LazyResult.registerPostcss(postcss2);\n  postcss_1$1 = postcss2;\n  postcss2.default = postcss2;\n  return postcss_1$1;\n}\nvar postcssExports$1 = requirePostcss$1();\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcssExports$1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nconst customElementExclusions = [\"webview\"];\nconst tagMap = {\n  script: \"noscript\",\n  // camel case svg element tag names\n  altglyph: \"altGlyph\",\n  altglyphdef: \"altGlyphDef\",\n  altglyphitem: \"altGlyphItem\",\n  animatecolor: \"animateColor\",\n  animatemotion: \"animateMotion\",\n  animatetransform: \"animateTransform\",\n  clippath: \"clipPath\",\n  feblend: \"feBlend\",\n  fecolormatrix: \"feColorMatrix\",\n  fecomponenttransfer: \"feComponentTransfer\",\n  fecomposite: \"feComposite\",\n  feconvolvematrix: \"feConvolveMatrix\",\n  fediffuselighting: \"feDiffuseLighting\",\n  fedisplacementmap: \"feDisplacementMap\",\n  fedistantlight: \"feDistantLight\",\n  fedropshadow: \"feDropShadow\",\n  feflood: \"feFlood\",\n  fefunca: \"feFuncA\",\n  fefuncb: \"feFuncB\",\n  fefuncg: \"feFuncG\",\n  fefuncr: \"feFuncR\",\n  fegaussianblur: \"feGaussianBlur\",\n  feimage: \"feImage\",\n  femerge: \"feMerge\",\n  femergenode: \"feMergeNode\",\n  femorphology: \"feMorphology\",\n  feoffset: \"feOffset\",\n  fepointlight: \"fePointLight\",\n  fespecularlighting: \"feSpecularLighting\",\n  fespotlight: \"feSpotLight\",\n  fetile: \"feTile\",\n  feturbulence: \"feTurbulence\",\n  foreignobject: \"foreignObject\",\n  glyphref: \"glyphRef\",\n  lineargradient: \"linearGradient\",\n  radialgradient: \"radialGradient\"\n};\nfunction getTagName(n2) {\n  let tagName = tagMap[n2.tagName] ? tagMap[n2.tagName] : n2.tagName;\n  if (tagName === \"link\" && n2.attributes._cssText) {\n    tagName = \"style\";\n  }\n  return tagName;\n}\nfunction adaptCssForReplay(cssText, cache) {\n  const cachedStyle = cache == null ? void 0 : cache.stylesWithHoverClass.get(cssText);\n  if (cachedStyle) return cachedStyle;\n  let result2 = cssText;\n  try {\n    const ast = postcss$1([\n      mediaSelectorPlugin,\n      pseudoClassPlugin\n    ]).process(cssText);\n    result2 = ast.css;\n  } catch (error) {\n    console.warn(\"Failed to adapt css for replay\", error);\n  }\n  cache == null ? void 0 : cache.stylesWithHoverClass.set(cssText, result2);\n  return result2;\n}\nfunction createCache() {\n  const stylesWithHoverClass = /* @__PURE__ */ new Map();\n  return {\n    stylesWithHoverClass\n  };\n}\nfunction applyCssSplits(n2, cssText, hackCss, cache) {\n  const childTextNodes = [];\n  for (const scn of n2.childNodes) {\n    if (scn.type === NodeType$3.Text) {\n      childTextNodes.push(scn);\n    }\n  }\n  const cssTextSplits = cssText.split(\"/* rr_split */\");\n  while (cssTextSplits.length > 1 && cssTextSplits.length > childTextNodes.length) {\n    cssTextSplits.splice(-2, 2, cssTextSplits.slice(-2).join(\"\"));\n  }\n  for (let i2 = 0; i2 < childTextNodes.length; i2++) {\n    const childTextNode = childTextNodes[i2];\n    const cssTextSection = cssTextSplits[i2];\n    if (childTextNode && cssTextSection) {\n      childTextNode.textContent = hackCss ? adaptCssForReplay(cssTextSection, cache) : cssTextSection;\n    }\n  }\n}\nfunction buildStyleNode(n2, styleEl, cssText, options) {\n  const { doc, hackCss, cache } = options;\n  if (n2.childNodes.length) {\n    applyCssSplits(n2, cssText, hackCss, cache);\n  } else {\n    if (hackCss) {\n      cssText = adaptCssForReplay(cssText, cache);\n    }\n    styleEl.appendChild(doc.createTextNode(cssText));\n  }\n}\nfunction buildNode(n2, options) {\n  var _a2;\n  const { doc, hackCss, cache } = options;\n  switch (n2.type) {\n    case NodeType$3.Document:\n      return doc.implementation.createDocument(null, \"\", null);\n    case NodeType$3.DocumentType:\n      return doc.implementation.createDocumentType(\n        n2.name || \"html\",\n        n2.publicId,\n        n2.systemId\n      );\n    case NodeType$3.Element: {\n      const tagName = getTagName(n2);\n      let node2;\n      if (n2.isSVG) {\n        node2 = doc.createElementNS(\"http://www.w3.org/2000/svg\", tagName);\n      } else {\n        if (\n          // If the tag name is a custom element name\n          n2.isCustom && // If the browser supports custom elements\n          ((_a2 = doc.defaultView) == null ? void 0 : _a2.customElements) && // If the custom element hasn't been defined yet\n          !doc.defaultView.customElements.get(n2.tagName) && // If the tag is not in the exclusion list\n          !customElementExclusions.includes(n2.tagName)\n        )\n          doc.defaultView.customElements.define(\n            n2.tagName,\n            class extends doc.defaultView.HTMLElement {\n            }\n          );\n        node2 = doc.createElement(tagName);\n      }\n      const specialAttributes = {};\n      for (const name in n2.attributes) {\n        if (!Object.prototype.hasOwnProperty.call(n2.attributes, name)) {\n          continue;\n        }\n        let value = n2.attributes[name];\n        if (tagName === \"option\" && name === \"selected\" && value === false) {\n          continue;\n        }\n        if (value === null) {\n          continue;\n        }\n        if (value === true) value = \"\";\n        if (name.startsWith(\"rr_\")) {\n          specialAttributes[name] = value;\n          continue;\n        }\n        if (typeof value !== \"string\") ;\n        else if (tagName === \"style\" && name === \"_cssText\") {\n          buildStyleNode(n2, node2, value, options);\n          continue;\n        } else if (tagName === \"textarea\" && name === \"value\") {\n          node2.appendChild(doc.createTextNode(value));\n          n2.childNodes = [];\n          continue;\n        }\n        try {\n          if (n2.isSVG && name === \"xlink:href\") {\n            node2.setAttributeNS(\n              \"http://www.w3.org/1999/xlink\",\n              name,\n              value.toString()\n            );\n          } else if (name === \"onload\" || name === \"onclick\" || name.substring(0, 7) === \"onmouse\") {\n            node2.setAttribute(\"_\" + name, value.toString());\n          } else if (tagName === \"meta\" && n2.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && name === \"content\") {\n            node2.setAttribute(\"csp-content\", value.toString());\n            continue;\n          } else if (tagName === \"link\" && (n2.attributes.rel === \"preload\" || n2.attributes.rel === \"modulepreload\") && n2.attributes.as === \"script\") {\n          } else if (tagName === \"link\" && n2.attributes.rel === \"prefetch\" && typeof n2.attributes.href === \"string\" && n2.attributes.href.endsWith(\".js\")) {\n          } else if (tagName === \"img\" && n2.attributes.srcset && n2.attributes.rr_dataURL) {\n            node2.setAttribute(\n              \"rrweb-original-srcset\",\n              n2.attributes.srcset\n            );\n          } else {\n            node2.setAttribute(name, value.toString());\n          }\n        } catch (error) {\n        }\n      }\n      for (const name in specialAttributes) {\n        const value = specialAttributes[name];\n        if (tagName === \"canvas\" && name === \"rr_dataURL\") {\n          const image = doc.createElement(\"img\");\n          image.onload = () => {\n            const ctx = node2.getContext(\"2d\");\n            if (ctx) {\n              ctx.drawImage(image, 0, 0, image.width, image.height);\n            }\n          };\n          image.src = value.toString();\n          if (node2.RRNodeType)\n            node2.rr_dataURL = value.toString();\n        } else if (tagName === \"img\" && name === \"rr_dataURL\") {\n          const image = node2;\n          if (!image.currentSrc.startsWith(\"data:\")) {\n            image.setAttribute(\n              \"rrweb-original-src\",\n              n2.attributes.src\n            );\n            image.src = value.toString();\n          }\n        }\n        if (name === \"rr_width\") {\n          node2.style.setProperty(\"width\", value.toString());\n        } else if (name === \"rr_height\") {\n          node2.style.setProperty(\"height\", value.toString());\n        } else if (name === \"rr_background_color\") {\n          node2.style.setProperty(\n            \"background-color\",\n            value.toString()\n          );\n        } else if (name === \"rr_mediaCurrentTime\" && typeof value === \"number\") {\n          node2.currentTime = value;\n        } else if (name === \"rr_mediaState\") {\n          switch (value) {\n            case \"played\":\n              node2.play().catch((e2) => console.warn(\"media playback error\", e2));\n              break;\n            case \"paused\":\n              node2.pause();\n              break;\n          }\n        } else if (name === \"rr_mediaPlaybackRate\" && typeof value === \"number\") {\n          node2.playbackRate = value;\n        } else if (name === \"rr_mediaMuted\" && typeof value === \"boolean\") {\n          node2.muted = value;\n        } else if (name === \"rr_mediaLoop\" && typeof value === \"boolean\") {\n          node2.loop = value;\n        } else if (name === \"rr_mediaVolume\" && typeof value === \"number\") {\n          node2.volume = value;\n        } else if (name === \"rr_open_mode\") {\n          node2.setAttribute(\n            \"rr_open_mode\",\n            value\n          );\n        }\n      }\n      if (n2.isShadowHost) {\n        if (!node2.shadowRoot) {\n          node2.attachShadow({ mode: \"open\" });\n        } else {\n          while (node2.shadowRoot.firstChild) {\n            node2.shadowRoot.removeChild(node2.shadowRoot.firstChild);\n          }\n        }\n      }\n      return node2;\n    }\n    case NodeType$3.Text:\n      if (n2.isStyle && hackCss) {\n        return doc.createTextNode(adaptCssForReplay(n2.textContent, cache));\n      }\n      return doc.createTextNode(n2.textContent);\n    case NodeType$3.CDATA:\n      return doc.createCDATASection(n2.textContent);\n    case NodeType$3.Comment:\n      return doc.createComment(n2.textContent);\n    default:\n      return null;\n  }\n}\nfunction buildNodeWithSN(n2, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    skipChild = false,\n    hackCss = true,\n    afterAppend,\n    cache,\n    scrollNodes\n  } = options;\n  if (mirror2.has(n2.id)) {\n    const nodeInMirror = mirror2.getNode(n2.id);\n    const meta = mirror2.getMeta(nodeInMirror);\n    if (isNodeMetaEqual(meta, n2)) return mirror2.getNode(n2.id);\n  }\n  let node2 = buildNode(n2, { doc, hackCss, cache });\n  if (!node2) {\n    return null;\n  }\n  if (n2.rootId && mirror2.getNode(n2.rootId) !== doc) {\n    mirror2.replace(n2.rootId, doc);\n  }\n  if (n2.type === NodeType$3.Document) {\n    doc.close();\n    doc.open();\n    if (n2.compatMode === \"BackCompat\" && n2.childNodes && n2.childNodes[0].type !== NodeType$3.DocumentType) {\n      if (n2.childNodes[0].type === NodeType$3.Element && \"xmlns\" in n2.childNodes[0].attributes && n2.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\") {\n        doc.write(\n          '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">'\n        );\n      } else {\n        doc.write(\n          '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">'\n        );\n      }\n    }\n    node2 = doc;\n  }\n  mirror2.add(node2, n2);\n  if (scrollNodes && n2.type === NodeType$3.Element && n2.attributes && (\"rr_scrollLeft\" in n2.attributes || \"rr_scrollTop\" in n2.attributes)) {\n    scrollNodes.push(node2);\n  }\n  if ((n2.type === NodeType$3.Document || n2.type === NodeType$3.Element) && !skipChild) {\n    for (const childN of n2.childNodes) {\n      const childNode = buildNodeWithSN(childN, {\n        doc,\n        mirror: mirror2,\n        skipChild: false,\n        hackCss,\n        afterAppend,\n        cache,\n        scrollNodes\n      });\n      if (!childNode) {\n        console.warn(\"Failed to rebuild\", childN);\n        continue;\n      }\n      if (childN.isShadow && isElement(node2) && node2.shadowRoot) {\n        node2.shadowRoot.appendChild(childNode);\n      } else if (n2.type === NodeType$3.Document && childN.type == NodeType$3.Element) {\n        const htmlElement = childNode;\n        let body = null;\n        htmlElement.childNodes.forEach((child) => {\n          if (child.nodeName === \"BODY\") body = child;\n        });\n        if (body) {\n          htmlElement.removeChild(body);\n          node2.appendChild(childNode);\n          htmlElement.appendChild(body);\n        } else {\n          node2.appendChild(childNode);\n        }\n      } else {\n        node2.appendChild(childNode);\n      }\n      if (afterAppend) {\n        afterAppend(childNode, childN.id);\n      }\n    }\n  }\n  return node2;\n}\nfunction visit(mirror2, onVisit) {\n  function walk(node2) {\n    onVisit(node2);\n  }\n  for (const id of mirror2.getIds()) {\n    if (mirror2.has(id)) {\n      walk(mirror2.getNode(id));\n    }\n  }\n}\nfunction handleScroll(node2, mirror2) {\n  const n2 = mirror2.getMeta(node2);\n  if ((n2 == null ? void 0 : n2.type) !== NodeType$3.Element) {\n    return;\n  }\n  const el = node2;\n  for (const name in n2.attributes) {\n    if (!(Object.prototype.hasOwnProperty.call(n2.attributes, name) && name.startsWith(\"rr_\"))) {\n      continue;\n    }\n    const value = n2.attributes[name];\n    if (name === \"rr_scrollLeft\") {\n      el.scrollLeft = value;\n    }\n    if (name === \"rr_scrollTop\") {\n      el.scrollTop = value;\n    }\n  }\n}\nfunction rebuild(n2, options) {\n  const {\n    doc,\n    onVisit,\n    hackCss = true,\n    afterAppend,\n    cache,\n    mirror: mirror2 = new Mirror()\n  } = options;\n  const scrollNodes = [];\n  const node2 = buildNodeWithSN(n2, {\n    doc,\n    mirror: mirror2,\n    skipChild: false,\n    hackCss,\n    afterAppend,\n    cache,\n    scrollNodes\n  });\n  if (onVisit) {\n    visit(mirror2, onVisit);\n  }\n  for (const scrollNode of scrollNodes) {\n    handleScroll(scrollNode, mirror2);\n  }\n  return node2;\n}\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __defProp22 = Object.defineProperty;\nvar __defNormalProp22 = (obj, key, value) => key in obj ? __defProp22(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField22 = (obj, key, value) => __defNormalProp22(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nlet Mirror$1 = class Mirror2 {\n  constructor() {\n    __publicField22(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField22(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n2) {\n    var _a2;\n    if (!n2) return -1;\n    const id = (_a2 = this.getMeta(n2)) == 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(n2) {\n    return this.nodeMetaMap.get(n2) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n2) {\n    const id = this.getId(n2);\n    this.idNodeMap.delete(id);\n    if (n2.childNodes) {\n      n2.childNodes.forEach(\n        (childNode) => this.removeNodeFromMap(childNode)\n      );\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node2) {\n    return this.nodeMetaMap.has(node2);\n  }\n  add(n2, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n2);\n    this.nodeMetaMap.set(n2, meta);\n  }\n  replace(id, n2) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n2, meta);\n    }\n    this.idNodeMap.set(id, n2);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n};\nfunction createMirror$1() {\n  return new Mirror$1();\n}\nfunction getDefaultExportFromCjs(x) {\n  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nfunction getAugmentedNamespace(n2) {\n  if (Object.prototype.hasOwnProperty.call(n2, \"__esModule\")) return n2;\n  var f2 = n2.default;\n  if (typeof f2 == \"function\") {\n    var a2 = function a22() {\n      if (this instanceof a22) {\n        return Reflect.construct(f2, arguments, this.constructor);\n      }\n      return f2.apply(this, arguments);\n    };\n    a2.prototype = f2.prototype;\n  } else a2 = {};\n  Object.defineProperty(a2, \"__esModule\", { value: true });\n  Object.keys(n2).forEach(function(k) {\n    var d = Object.getOwnPropertyDescriptor(n2, k);\n    Object.defineProperty(a2, k, d.get ? d : {\n      enumerable: true,\n      get: function() {\n        return n2[k];\n      }\n    });\n  });\n  return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar hasRequiredPicocolors_browser;\nfunction requirePicocolors_browser() {\n  if (hasRequiredPicocolors_browser) return picocolors_browser.exports;\n  hasRequiredPicocolors_browser = 1;\n  var x = String;\n  var create = function() {\n    return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x };\n  };\n  picocolors_browser.exports = create();\n  picocolors_browser.exports.createColors = create;\n  return picocolors_browser.exports;\n}\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar cssSyntaxError;\nvar hasRequiredCssSyntaxError;\nfunction requireCssSyntaxError() {\n  if (hasRequiredCssSyntaxError) return cssSyntaxError;\n  hasRequiredCssSyntaxError = 1;\n  let pico = /* @__PURE__ */ requirePicocolors_browser();\n  let terminalHighlight = require$$2;\n  class CssSyntaxError extends Error {\n    constructor(message, line, column, source, file, plugin) {\n      super(message);\n      this.name = \"CssSyntaxError\";\n      this.reason = message;\n      if (file) {\n        this.file = file;\n      }\n      if (source) {\n        this.source = source;\n      }\n      if (plugin) {\n        this.plugin = plugin;\n      }\n      if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n        if (typeof line === \"number\") {\n          this.line = line;\n          this.column = column;\n        } else {\n          this.line = line.line;\n          this.column = line.column;\n          this.endLine = column.line;\n          this.endColumn = column.column;\n        }\n      }\n      this.setMessage();\n      if (Error.captureStackTrace) {\n        Error.captureStackTrace(this, CssSyntaxError);\n      }\n    }\n    setMessage() {\n      this.message = this.plugin ? this.plugin + \": \" : \"\";\n      this.message += this.file ? this.file : \"<css input>\";\n      if (typeof this.line !== \"undefined\") {\n        this.message += \":\" + this.line + \":\" + this.column;\n      }\n      this.message += \": \" + this.reason;\n    }\n    showSourceCode(color) {\n      if (!this.source) return \"\";\n      let css = this.source;\n      if (color == null) color = pico.isColorSupported;\n      let aside = (text) => text;\n      let mark = (text) => text;\n      let highlight = (text) => text;\n      if (color) {\n        let { bold, gray, red } = pico.createColors(true);\n        mark = (text) => bold(red(text));\n        aside = (text) => gray(text);\n        if (terminalHighlight) {\n          highlight = (text) => terminalHighlight(text);\n        }\n      }\n      let lines = css.split(/\\r?\\n/);\n      let start = Math.max(this.line - 3, 0);\n      let end = Math.min(this.line + 2, lines.length);\n      let maxWidth = String(end).length;\n      return lines.slice(start, end).map((line, index2) => {\n        let number = start + 1 + index2;\n        let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n        if (number === this.line) {\n          if (line.length > 160) {\n            let padding = 20;\n            let subLineStart = Math.max(0, this.column - padding);\n            let subLineEnd = Math.max(\n              this.column + padding,\n              this.endColumn + padding\n            );\n            let subLine = line.slice(subLineStart, subLineEnd);\n            let spacing2 = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\\t]/g, \" \");\n            return mark(\">\") + aside(gutter) + highlight(subLine) + \"\\n \" + spacing2 + mark(\"^\");\n          }\n          let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n          return mark(\">\") + aside(gutter) + highlight(line) + \"\\n \" + spacing + mark(\"^\");\n        }\n        return \" \" + aside(gutter) + highlight(line);\n      }).join(\"\\n\");\n    }\n    toString() {\n      let code = this.showSourceCode();\n      if (code) {\n        code = \"\\n\\n\" + code + \"\\n\";\n      }\n      return this.name + \": \" + this.message + code;\n    }\n  }\n  cssSyntaxError = CssSyntaxError;\n  CssSyntaxError.default = CssSyntaxError;\n  return cssSyntaxError;\n}\nvar stringifier;\nvar hasRequiredStringifier;\nfunction requireStringifier() {\n  if (hasRequiredStringifier) return stringifier;\n  hasRequiredStringifier = 1;\n  const DEFAULT_RAW = {\n    after: \"\\n\",\n    beforeClose: \"\\n\",\n    beforeComment: \"\\n\",\n    beforeDecl: \"\\n\",\n    beforeOpen: \" \",\n    beforeRule: \"\\n\",\n    colon: \": \",\n    commentLeft: \" \",\n    commentRight: \" \",\n    emptyBody: \"\",\n    indent: \"    \",\n    semicolon: false\n  };\n  function capitalize(str) {\n    return str[0].toUpperCase() + str.slice(1);\n  }\n  class Stringifier {\n    constructor(builder) {\n      this.builder = builder;\n    }\n    atrule(node2, semicolon) {\n      let name = \"@\" + node2.name;\n      let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n      if (typeof node2.raws.afterName !== \"undefined\") {\n        name += node2.raws.afterName;\n      } else if (params) {\n        name += \" \";\n      }\n      if (node2.nodes) {\n        this.block(node2, name + params);\n      } else {\n        let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n        this.builder(name + params + end, node2);\n      }\n    }\n    beforeAfter(node2, detect) {\n      let value;\n      if (node2.type === \"decl\") {\n        value = this.raw(node2, null, \"beforeDecl\");\n      } else if (node2.type === \"comment\") {\n        value = this.raw(node2, null, \"beforeComment\");\n      } else if (detect === \"before\") {\n        value = this.raw(node2, null, \"beforeRule\");\n      } else {\n        value = this.raw(node2, null, \"beforeClose\");\n      }\n      let buf = node2.parent;\n      let depth = 0;\n      while (buf && buf.type !== \"root\") {\n        depth += 1;\n        buf = buf.parent;\n      }\n      if (value.includes(\"\\n\")) {\n        let indent = this.raw(node2, null, \"indent\");\n        if (indent.length) {\n          for (let step = 0; step < depth; step++) value += indent;\n        }\n      }\n      return value;\n    }\n    block(node2, start) {\n      let between = this.raw(node2, \"between\", \"beforeOpen\");\n      this.builder(start + between + \"{\", node2, \"start\");\n      let after;\n      if (node2.nodes && node2.nodes.length) {\n        this.body(node2);\n        after = this.raw(node2, \"after\");\n      } else {\n        after = this.raw(node2, \"after\", \"emptyBody\");\n      }\n      if (after) this.builder(after);\n      this.builder(\"}\", node2, \"end\");\n    }\n    body(node2) {\n      let last = node2.nodes.length - 1;\n      while (last > 0) {\n        if (node2.nodes[last].type !== \"comment\") break;\n        last -= 1;\n      }\n      let semicolon = this.raw(node2, \"semicolon\");\n      for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n        let child = node2.nodes[i2];\n        let before = this.raw(child, \"before\");\n        if (before) this.builder(before);\n        this.stringify(child, last !== i2 || semicolon);\n      }\n    }\n    comment(node2) {\n      let left = this.raw(node2, \"left\", \"commentLeft\");\n      let right = this.raw(node2, \"right\", \"commentRight\");\n      this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n    }\n    decl(node2, semicolon) {\n      let between = this.raw(node2, \"between\", \"colon\");\n      let string = node2.prop + between + this.rawValue(node2, \"value\");\n      if (node2.important) {\n        string += node2.raws.important || \" !important\";\n      }\n      if (semicolon) string += \";\";\n      this.builder(string, node2);\n    }\n    document(node2) {\n      this.body(node2);\n    }\n    raw(node2, own, detect) {\n      let value;\n      if (!detect) detect = own;\n      if (own) {\n        value = node2.raws[own];\n        if (typeof value !== \"undefined\") return value;\n      }\n      let parent = node2.parent;\n      if (detect === \"before\") {\n        if (!parent || parent.type === \"root\" && parent.first === node2) {\n          return \"\";\n        }\n        if (parent && parent.type === \"document\") {\n          return \"\";\n        }\n      }\n      if (!parent) return DEFAULT_RAW[detect];\n      let root2 = node2.root();\n      if (!root2.rawCache) root2.rawCache = {};\n      if (typeof root2.rawCache[detect] !== \"undefined\") {\n        return root2.rawCache[detect];\n      }\n      if (detect === \"before\" || detect === \"after\") {\n        return this.beforeAfter(node2, detect);\n      } else {\n        let method = \"raw\" + capitalize(detect);\n        if (this[method]) {\n          value = this[method](root2, node2);\n        } else {\n          root2.walk((i2) => {\n            value = i2.raws[own];\n            if (typeof value !== \"undefined\") return false;\n          });\n        }\n      }\n      if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n      root2.rawCache[detect] = value;\n      return value;\n    }\n    rawBeforeClose(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && i2.nodes.length > 0) {\n          if (typeof i2.raws.after !== \"undefined\") {\n            value = i2.raws.after;\n            if (value.includes(\"\\n\")) {\n              value = value.replace(/[^\\n]+$/, \"\");\n            }\n            return false;\n          }\n        }\n      });\n      if (value) value = value.replace(/\\S/g, \"\");\n      return value;\n    }\n    rawBeforeComment(root2, node2) {\n      let value;\n      root2.walkComments((i2) => {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      });\n      if (typeof value === \"undefined\") {\n        value = this.raw(node2, null, \"beforeDecl\");\n      } else if (value) {\n        value = value.replace(/\\S/g, \"\");\n      }\n      return value;\n    }\n    rawBeforeDecl(root2, node2) {\n      let value;\n      root2.walkDecls((i2) => {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      });\n      if (typeof value === \"undefined\") {\n        value = this.raw(node2, null, \"beforeRule\");\n      } else if (value) {\n        value = value.replace(/\\S/g, \"\");\n      }\n      return value;\n    }\n    rawBeforeOpen(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.type !== \"decl\") {\n          value = i2.raws.between;\n          if (typeof value !== \"undefined\") return false;\n        }\n      });\n      return value;\n    }\n    rawBeforeRule(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n          if (typeof i2.raws.before !== \"undefined\") {\n            value = i2.raws.before;\n            if (value.includes(\"\\n\")) {\n              value = value.replace(/[^\\n]+$/, \"\");\n            }\n            return false;\n          }\n        }\n      });\n      if (value) value = value.replace(/\\S/g, \"\");\n      return value;\n    }\n    rawColon(root2) {\n      let value;\n      root2.walkDecls((i2) => {\n        if (typeof i2.raws.between !== \"undefined\") {\n          value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n          return false;\n        }\n      });\n      return value;\n    }\n    rawEmptyBody(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && i2.nodes.length === 0) {\n          value = i2.raws.after;\n          if (typeof value !== \"undefined\") return false;\n        }\n      });\n      return value;\n    }\n    rawIndent(root2) {\n      if (root2.raws.indent) return root2.raws.indent;\n      let value;\n      root2.walk((i2) => {\n        let p = i2.parent;\n        if (p && p !== root2 && p.parent && p.parent === root2) {\n          if (typeof i2.raws.before !== \"undefined\") {\n            let parts = i2.raws.before.split(\"\\n\");\n            value = parts[parts.length - 1];\n            value = value.replace(/\\S/g, \"\");\n            return false;\n          }\n        }\n      });\n      return value;\n    }\n    rawSemicolon(root2) {\n      let value;\n      root2.walk((i2) => {\n        if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n          value = i2.raws.semicolon;\n          if (typeof value !== \"undefined\") return false;\n        }\n      });\n      return value;\n    }\n    rawValue(node2, prop) {\n      let value = node2[prop];\n      let raw = node2.raws[prop];\n      if (raw && raw.value === value) {\n        return raw.raw;\n      }\n      return value;\n    }\n    root(node2) {\n      this.body(node2);\n      if (node2.raws.after) this.builder(node2.raws.after);\n    }\n    rule(node2) {\n      this.block(node2, this.rawValue(node2, \"selector\"));\n      if (node2.raws.ownSemicolon) {\n        this.builder(node2.raws.ownSemicolon, node2, \"end\");\n      }\n    }\n    stringify(node2, semicolon) {\n      if (!this[node2.type]) {\n        throw new Error(\n          \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n        );\n      }\n      this[node2.type](node2, semicolon);\n    }\n  }\n  stringifier = Stringifier;\n  Stringifier.default = Stringifier;\n  return stringifier;\n}\nvar stringify_1;\nvar hasRequiredStringify;\nfunction requireStringify() {\n  if (hasRequiredStringify) return stringify_1;\n  hasRequiredStringify = 1;\n  let Stringifier = requireStringifier();\n  function stringify(node2, builder) {\n    let str = new Stringifier(builder);\n    str.stringify(node2);\n  }\n  stringify_1 = stringify;\n  stringify.default = stringify;\n  return stringify_1;\n}\nvar symbols = {};\nvar hasRequiredSymbols;\nfunction requireSymbols() {\n  if (hasRequiredSymbols) return symbols;\n  hasRequiredSymbols = 1;\n  symbols.isClean = Symbol(\"isClean\");\n  symbols.my = Symbol(\"my\");\n  return symbols;\n}\nvar node;\nvar hasRequiredNode;\nfunction requireNode() {\n  if (hasRequiredNode) return node;\n  hasRequiredNode = 1;\n  let CssSyntaxError = requireCssSyntaxError();\n  let Stringifier = requireStringifier();\n  let stringify = requireStringify();\n  let { isClean, my } = requireSymbols();\n  function cloneNode(obj, parent) {\n    let cloned = new obj.constructor();\n    for (let i2 in obj) {\n      if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n        continue;\n      }\n      if (i2 === \"proxyCache\") continue;\n      let value = obj[i2];\n      let type = typeof value;\n      if (i2 === \"parent\" && type === \"object\") {\n        if (parent) cloned[i2] = parent;\n      } else if (i2 === \"source\") {\n        cloned[i2] = value;\n      } else if (Array.isArray(value)) {\n        cloned[i2] = value.map((j) => cloneNode(j, cloned));\n      } else {\n        if (type === \"object\" && value !== null) value = cloneNode(value);\n        cloned[i2] = value;\n      }\n    }\n    return cloned;\n  }\n  function sourceOffset(inputCSS, position) {\n    if (position && typeof position.offset !== \"undefined\") {\n      return position.offset;\n    }\n    let column = 1;\n    let line = 1;\n    let offset = 0;\n    for (let i2 = 0; i2 < inputCSS.length; i2++) {\n      if (line === position.line && column === position.column) {\n        offset = i2;\n        break;\n      }\n      if (inputCSS[i2] === \"\\n\") {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n    return offset;\n  }\n  class Node2 {\n    get proxyOf() {\n      return this;\n    }\n    constructor(defaults = {}) {\n      this.raws = {};\n      this[isClean] = false;\n      this[my] = true;\n      for (let name in defaults) {\n        if (name === \"nodes\") {\n          this.nodes = [];\n          for (let node2 of defaults[name]) {\n            if (typeof node2.clone === \"function\") {\n              this.append(node2.clone());\n            } else {\n              this.append(node2);\n            }\n          }\n        } else {\n          this[name] = defaults[name];\n        }\n      }\n    }\n    addToError(error) {\n      error.postcssNode = this;\n      if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n        let s2 = this.source;\n        error.stack = error.stack.replace(\n          /\\n\\s{4}at /,\n          `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n        );\n      }\n      return error;\n    }\n    after(add) {\n      this.parent.insertAfter(this, add);\n      return this;\n    }\n    assign(overrides = {}) {\n      for (let name in overrides) {\n        this[name] = overrides[name];\n      }\n      return this;\n    }\n    before(add) {\n      this.parent.insertBefore(this, add);\n      return this;\n    }\n    cleanRaws(keepBetween) {\n      delete this.raws.before;\n      delete this.raws.after;\n      if (!keepBetween) delete this.raws.between;\n    }\n    clone(overrides = {}) {\n      let cloned = cloneNode(this);\n      for (let name in overrides) {\n        cloned[name] = overrides[name];\n      }\n      return cloned;\n    }\n    cloneAfter(overrides = {}) {\n      let cloned = this.clone(overrides);\n      this.parent.insertAfter(this, cloned);\n      return cloned;\n    }\n    cloneBefore(overrides = {}) {\n      let cloned = this.clone(overrides);\n      this.parent.insertBefore(this, cloned);\n      return cloned;\n    }\n    error(message, opts = {}) {\n      if (this.source) {\n        let { end, start } = this.rangeBy(opts);\n        return this.source.input.error(\n          message,\n          { column: start.column, line: start.line },\n          { column: end.column, line: end.line },\n          opts\n        );\n      }\n      return new CssSyntaxError(message);\n    }\n    getProxyProcessor() {\n      return {\n        get(node2, prop) {\n          if (prop === \"proxyOf\") {\n            return node2;\n          } else if (prop === \"root\") {\n            return () => node2.root().toProxy();\n          } else {\n            return node2[prop];\n          }\n        },\n        set(node2, prop, value) {\n          if (node2[prop] === value) return true;\n          node2[prop] = value;\n          if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n          prop === \"text\") {\n            node2.markDirty();\n          }\n          return true;\n        }\n      };\n    }\n    /* c8 ignore next 3 */\n    markClean() {\n      this[isClean] = true;\n    }\n    markDirty() {\n      if (this[isClean]) {\n        this[isClean] = false;\n        let next = this;\n        while (next = next.parent) {\n          next[isClean] = false;\n        }\n      }\n    }\n    next() {\n      if (!this.parent) return void 0;\n      let index2 = this.parent.index(this);\n      return this.parent.nodes[index2 + 1];\n    }\n    positionBy(opts = {}) {\n      let pos = this.source.start;\n      if (opts.index) {\n        pos = this.positionInside(opts.index);\n      } else if (opts.word) {\n        let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n        let stringRepresentation = inputString.slice(\n          sourceOffset(inputString, this.source.start),\n          sourceOffset(inputString, this.source.end)\n        );\n        let index2 = stringRepresentation.indexOf(opts.word);\n        if (index2 !== -1) pos = this.positionInside(index2);\n      }\n      return pos;\n    }\n    positionInside(index2) {\n      let column = this.source.start.column;\n      let line = this.source.start.line;\n      let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n      let offset = sourceOffset(inputString, this.source.start);\n      let end = offset + index2;\n      for (let i2 = offset; i2 < end; i2++) {\n        if (inputString[i2] === \"\\n\") {\n          column = 1;\n          line += 1;\n        } else {\n          column += 1;\n        }\n      }\n      return { column, line, offset: end };\n    }\n    prev() {\n      if (!this.parent) return void 0;\n      let index2 = this.parent.index(this);\n      return this.parent.nodes[index2 - 1];\n    }\n    rangeBy(opts = {}) {\n      let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n      let start = {\n        column: this.source.start.column,\n        line: this.source.start.line,\n        offset: sourceOffset(inputString, this.source.start)\n      };\n      let end = this.source.end ? {\n        column: this.source.end.column + 1,\n        line: this.source.end.line,\n        offset: typeof this.source.end.offset === \"number\" ? (\n          // `source.end.offset` is exclusive, so we don't need to add 1\n          this.source.end.offset\n        ) : (\n          // Since line/column in this.source.end is inclusive,\n          // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n          // So, we add 1 to convert it to exclusive.\n          sourceOffset(inputString, this.source.end) + 1\n        )\n      } : {\n        column: start.column + 1,\n        line: start.line,\n        offset: start.offset + 1\n      };\n      if (opts.word) {\n        let stringRepresentation = inputString.slice(\n          sourceOffset(inputString, this.source.start),\n          sourceOffset(inputString, this.source.end)\n        );\n        let index2 = stringRepresentation.indexOf(opts.word);\n        if (index2 !== -1) {\n          start = this.positionInside(index2);\n          end = this.positionInside(index2 + opts.word.length);\n        }\n      } else {\n        if (opts.start) {\n          start = {\n            column: opts.start.column,\n            line: opts.start.line,\n            offset: sourceOffset(inputString, opts.start)\n          };\n        } else if (opts.index) {\n          start = this.positionInside(opts.index);\n        }\n        if (opts.end) {\n          end = {\n            column: opts.end.column,\n            line: opts.end.line,\n            offset: sourceOffset(inputString, opts.end)\n          };\n        } else if (typeof opts.endIndex === \"number\") {\n          end = this.positionInside(opts.endIndex);\n        } else if (opts.index) {\n          end = this.positionInside(opts.index + 1);\n        }\n      }\n      if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n        end = {\n          column: start.column + 1,\n          line: start.line,\n          offset: start.offset + 1\n        };\n      }\n      return { end, start };\n    }\n    raw(prop, defaultType) {\n      let str = new Stringifier();\n      return str.raw(this, prop, defaultType);\n    }\n    remove() {\n      if (this.parent) {\n        this.parent.removeChild(this);\n      }\n      this.parent = void 0;\n      return this;\n    }\n    replaceWith(...nodes) {\n      if (this.parent) {\n        let bookmark = this;\n        let foundSelf = false;\n        for (let node2 of nodes) {\n          if (node2 === this) {\n            foundSelf = true;\n          } else if (foundSelf) {\n            this.parent.insertAfter(bookmark, node2);\n            bookmark = node2;\n          } else {\n            this.parent.insertBefore(bookmark, node2);\n          }\n        }\n        if (!foundSelf) {\n          this.remove();\n        }\n      }\n      return this;\n    }\n    root() {\n      let result2 = this;\n      while (result2.parent && result2.parent.type !== \"document\") {\n        result2 = result2.parent;\n      }\n      return result2;\n    }\n    toJSON(_, inputs) {\n      let fixed = {};\n      let emitInputs = inputs == null;\n      inputs = inputs || /* @__PURE__ */ new Map();\n      let inputsNextIndex = 0;\n      for (let name in this) {\n        if (!Object.prototype.hasOwnProperty.call(this, name)) {\n          continue;\n        }\n        if (name === \"parent\" || name === \"proxyCache\") continue;\n        let value = this[name];\n        if (Array.isArray(value)) {\n          fixed[name] = value.map((i2) => {\n            if (typeof i2 === \"object\" && i2.toJSON) {\n              return i2.toJSON(null, inputs);\n            } else {\n              return i2;\n            }\n          });\n        } else if (typeof value === \"object\" && value.toJSON) {\n          fixed[name] = value.toJSON(null, inputs);\n        } else if (name === \"source\") {\n          if (value == null) continue;\n          let inputId = inputs.get(value.input);\n          if (inputId == null) {\n            inputId = inputsNextIndex;\n            inputs.set(value.input, inputsNextIndex);\n            inputsNextIndex++;\n          }\n          fixed[name] = {\n            end: value.end,\n            inputId,\n            start: value.start\n          };\n        } else {\n          fixed[name] = value;\n        }\n      }\n      if (emitInputs) {\n        fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n      }\n      return fixed;\n    }\n    toProxy() {\n      if (!this.proxyCache) {\n        this.proxyCache = new Proxy(this, this.getProxyProcessor());\n      }\n      return this.proxyCache;\n    }\n    toString(stringifier2 = stringify) {\n      if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n      let result2 = \"\";\n      stringifier2(this, (i2) => {\n        result2 += i2;\n      });\n      return result2;\n    }\n    warn(result2, text, opts = {}) {\n      let data = { node: this };\n      for (let i2 in opts) data[i2] = opts[i2];\n      return result2.warn(text, data);\n    }\n  }\n  node = Node2;\n  Node2.default = Node2;\n  return node;\n}\nvar comment;\nvar hasRequiredComment;\nfunction requireComment() {\n  if (hasRequiredComment) return comment;\n  hasRequiredComment = 1;\n  let Node2 = requireNode();\n  class Comment extends Node2 {\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"comment\";\n    }\n  }\n  comment = Comment;\n  Comment.default = Comment;\n  return comment;\n}\nvar declaration;\nvar hasRequiredDeclaration;\nfunction requireDeclaration() {\n  if (hasRequiredDeclaration) return declaration;\n  hasRequiredDeclaration = 1;\n  let Node2 = requireNode();\n  class Declaration extends Node2 {\n    get variable() {\n      return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n    }\n    constructor(defaults) {\n      if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n        defaults = { ...defaults, value: String(defaults.value) };\n      }\n      super(defaults);\n      this.type = \"decl\";\n    }\n  }\n  declaration = Declaration;\n  Declaration.default = Declaration;\n  return declaration;\n}\nvar container;\nvar hasRequiredContainer;\nfunction requireContainer() {\n  if (hasRequiredContainer) return container;\n  hasRequiredContainer = 1;\n  let Comment = requireComment();\n  let Declaration = requireDeclaration();\n  let Node2 = requireNode();\n  let { isClean, my } = requireSymbols();\n  let AtRule, parse, Root, Rule;\n  function cleanSource(nodes) {\n    return nodes.map((i2) => {\n      if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n      delete i2.source;\n      return i2;\n    });\n  }\n  function markTreeDirty(node2) {\n    node2[isClean] = false;\n    if (node2.proxyOf.nodes) {\n      for (let i2 of node2.proxyOf.nodes) {\n        markTreeDirty(i2);\n      }\n    }\n  }\n  class Container extends Node2 {\n    get first() {\n      if (!this.proxyOf.nodes) return void 0;\n      return this.proxyOf.nodes[0];\n    }\n    get last() {\n      if (!this.proxyOf.nodes) return void 0;\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n    }\n    append(...children) {\n      for (let child of children) {\n        let nodes = this.normalize(child, this.last);\n        for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n      }\n      this.markDirty();\n      return this;\n    }\n    cleanRaws(keepBetween) {\n      super.cleanRaws(keepBetween);\n      if (this.nodes) {\n        for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n      }\n    }\n    each(callback) {\n      if (!this.proxyOf.nodes) return void 0;\n      let iterator = this.getIterator();\n      let index2, result2;\n      while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n        index2 = this.indexes[iterator];\n        result2 = callback(this.proxyOf.nodes[index2], index2);\n        if (result2 === false) break;\n        this.indexes[iterator] += 1;\n      }\n      delete this.indexes[iterator];\n      return result2;\n    }\n    every(condition) {\n      return this.nodes.every(condition);\n    }\n    getIterator() {\n      if (!this.lastEach) this.lastEach = 0;\n      if (!this.indexes) this.indexes = {};\n      this.lastEach += 1;\n      let iterator = this.lastEach;\n      this.indexes[iterator] = 0;\n      return iterator;\n    }\n    getProxyProcessor() {\n      return {\n        get(node2, prop) {\n          if (prop === \"proxyOf\") {\n            return node2;\n          } else if (!node2[prop]) {\n            return node2[prop];\n          } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n            return (...args) => {\n              return node2[prop](\n                ...args.map((i2) => {\n                  if (typeof i2 === \"function\") {\n                    return (child, index2) => i2(child.toProxy(), index2);\n                  } else {\n                    return i2;\n                  }\n                })\n              );\n            };\n          } else if (prop === \"every\" || prop === \"some\") {\n            return (cb) => {\n              return node2[prop](\n                (child, ...other) => cb(child.toProxy(), ...other)\n              );\n            };\n          } else if (prop === \"root\") {\n            return () => node2.root().toProxy();\n          } else if (prop === \"nodes\") {\n            return node2.nodes.map((i2) => i2.toProxy());\n          } else if (prop === \"first\" || prop === \"last\") {\n            return node2[prop].toProxy();\n          } else {\n            return node2[prop];\n          }\n        },\n        set(node2, prop, value) {\n          if (node2[prop] === value) return true;\n          node2[prop] = value;\n          if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n            node2.markDirty();\n          }\n          return true;\n        }\n      };\n    }\n    index(child) {\n      if (typeof child === \"number\") return child;\n      if (child.proxyOf) child = child.proxyOf;\n      return this.proxyOf.nodes.indexOf(child);\n    }\n    insertAfter(exist, add) {\n      let existIndex = this.index(exist);\n      let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n      existIndex = this.index(exist);\n      for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n      let index2;\n      for (let id in this.indexes) {\n        index2 = this.indexes[id];\n        if (existIndex < index2) {\n          this.indexes[id] = index2 + nodes.length;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    insertBefore(exist, add) {\n      let existIndex = this.index(exist);\n      let type = existIndex === 0 ? \"prepend\" : false;\n      let nodes = this.normalize(\n        add,\n        this.proxyOf.nodes[existIndex],\n        type\n      ).reverse();\n      existIndex = this.index(exist);\n      for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n      let index2;\n      for (let id in this.indexes) {\n        index2 = this.indexes[id];\n        if (existIndex <= index2) {\n          this.indexes[id] = index2 + nodes.length;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    normalize(nodes, sample) {\n      if (typeof nodes === \"string\") {\n        nodes = cleanSource(parse(nodes).nodes);\n      } else if (typeof nodes === \"undefined\") {\n        nodes = [];\n      } else if (Array.isArray(nodes)) {\n        nodes = nodes.slice(0);\n        for (let i2 of nodes) {\n          if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n        }\n      } else if (nodes.type === \"root\" && this.type !== \"document\") {\n        nodes = nodes.nodes.slice(0);\n        for (let i2 of nodes) {\n          if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n        }\n      } else if (nodes.type) {\n        nodes = [nodes];\n      } else if (nodes.prop) {\n        if (typeof nodes.value === \"undefined\") {\n          throw new Error(\"Value field is missed in node creation\");\n        } else if (typeof nodes.value !== \"string\") {\n          nodes.value = String(nodes.value);\n        }\n        nodes = [new Declaration(nodes)];\n      } else if (nodes.selector || nodes.selectors) {\n        nodes = [new Rule(nodes)];\n      } else if (nodes.name) {\n        nodes = [new AtRule(nodes)];\n      } else if (nodes.text) {\n        nodes = [new Comment(nodes)];\n      } else {\n        throw new Error(\"Unknown node type in node creation\");\n      }\n      let processed = nodes.map((i2) => {\n        if (!i2[my]) Container.rebuild(i2);\n        i2 = i2.proxyOf;\n        if (i2.parent) i2.parent.removeChild(i2);\n        if (i2[isClean]) markTreeDirty(i2);\n        if (!i2.raws) i2.raws = {};\n        if (typeof i2.raws.before === \"undefined\") {\n          if (sample && typeof sample.raws.before !== \"undefined\") {\n            i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n          }\n        }\n        i2.parent = this.proxyOf;\n        return i2;\n      });\n      return processed;\n    }\n    prepend(...children) {\n      children = children.reverse();\n      for (let child of children) {\n        let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n        for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n        for (let id in this.indexes) {\n          this.indexes[id] = this.indexes[id] + nodes.length;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    push(child) {\n      child.parent = this;\n      this.proxyOf.nodes.push(child);\n      return this;\n    }\n    removeAll() {\n      for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n      this.proxyOf.nodes = [];\n      this.markDirty();\n      return this;\n    }\n    removeChild(child) {\n      child = this.index(child);\n      this.proxyOf.nodes[child].parent = void 0;\n      this.proxyOf.nodes.splice(child, 1);\n      let index2;\n      for (let id in this.indexes) {\n        index2 = this.indexes[id];\n        if (index2 >= child) {\n          this.indexes[id] = index2 - 1;\n        }\n      }\n      this.markDirty();\n      return this;\n    }\n    replaceValues(pattern, opts, callback) {\n      if (!callback) {\n        callback = opts;\n        opts = {};\n      }\n      this.walkDecls((decl) => {\n        if (opts.props && !opts.props.includes(decl.prop)) return;\n        if (opts.fast && !decl.value.includes(opts.fast)) return;\n        decl.value = decl.value.replace(pattern, callback);\n      });\n      this.markDirty();\n      return this;\n    }\n    some(condition) {\n      return this.nodes.some(condition);\n    }\n    walk(callback) {\n      return this.each((child, i2) => {\n        let result2;\n        try {\n          result2 = callback(child, i2);\n        } catch (e2) {\n          throw child.addToError(e2);\n        }\n        if (result2 !== false && child.walk) {\n          result2 = child.walk(callback);\n        }\n        return result2;\n      });\n    }\n    walkAtRules(name, callback) {\n      if (!callback) {\n        callback = name;\n        return this.walk((child, i2) => {\n          if (child.type === \"atrule\") {\n            return callback(child, i2);\n          }\n        });\n      }\n      if (name instanceof RegExp) {\n        return this.walk((child, i2) => {\n          if (child.type === \"atrule\" && name.test(child.name)) {\n            return callback(child, i2);\n          }\n        });\n      }\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\" && child.name === name) {\n          return callback(child, i2);\n        }\n      });\n    }\n    walkComments(callback) {\n      return this.walk((child, i2) => {\n        if (child.type === \"comment\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    walkDecls(prop, callback) {\n      if (!callback) {\n        callback = prop;\n        return this.walk((child, i2) => {\n          if (child.type === \"decl\") {\n            return callback(child, i2);\n          }\n        });\n      }\n      if (prop instanceof RegExp) {\n        return this.walk((child, i2) => {\n          if (child.type === \"decl\" && prop.test(child.prop)) {\n            return callback(child, i2);\n          }\n        });\n      }\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\" && child.prop === prop) {\n          return callback(child, i2);\n        }\n      });\n    }\n    walkRules(selector, callback) {\n      if (!callback) {\n        callback = selector;\n        return this.walk((child, i2) => {\n          if (child.type === \"rule\") {\n            return callback(child, i2);\n          }\n        });\n      }\n      if (selector instanceof RegExp) {\n        return this.walk((child, i2) => {\n          if (child.type === \"rule\" && selector.test(child.selector)) {\n            return callback(child, i2);\n          }\n        });\n      }\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\" && child.selector === selector) {\n          return callback(child, i2);\n        }\n      });\n    }\n  }\n  Container.registerParse = (dependant) => {\n    parse = dependant;\n  };\n  Container.registerRule = (dependant) => {\n    Rule = dependant;\n  };\n  Container.registerAtRule = (dependant) => {\n    AtRule = dependant;\n  };\n  Container.registerRoot = (dependant) => {\n    Root = dependant;\n  };\n  container = Container;\n  Container.default = Container;\n  Container.rebuild = (node2) => {\n    if (node2.type === \"atrule\") {\n      Object.setPrototypeOf(node2, AtRule.prototype);\n    } else if (node2.type === \"rule\") {\n      Object.setPrototypeOf(node2, Rule.prototype);\n    } else if (node2.type === \"decl\") {\n      Object.setPrototypeOf(node2, Declaration.prototype);\n    } else if (node2.type === \"comment\") {\n      Object.setPrototypeOf(node2, Comment.prototype);\n    } else if (node2.type === \"root\") {\n      Object.setPrototypeOf(node2, Root.prototype);\n    }\n    node2[my] = true;\n    if (node2.nodes) {\n      node2.nodes.forEach((child) => {\n        Container.rebuild(child);\n      });\n    }\n  };\n  return container;\n}\nvar atRule;\nvar hasRequiredAtRule;\nfunction requireAtRule() {\n  if (hasRequiredAtRule) return atRule;\n  hasRequiredAtRule = 1;\n  let Container = requireContainer();\n  class AtRule extends Container {\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"atrule\";\n    }\n    append(...children) {\n      if (!this.proxyOf.nodes) this.nodes = [];\n      return super.append(...children);\n    }\n    prepend(...children) {\n      if (!this.proxyOf.nodes) this.nodes = [];\n      return super.prepend(...children);\n    }\n  }\n  atRule = AtRule;\n  AtRule.default = AtRule;\n  Container.registerAtRule(AtRule);\n  return atRule;\n}\nvar document$1;\nvar hasRequiredDocument;\nfunction requireDocument() {\n  if (hasRequiredDocument) return document$1;\n  hasRequiredDocument = 1;\n  let Container = requireContainer();\n  let LazyResult, Processor;\n  class Document2 extends Container {\n    constructor(defaults) {\n      super({ type: \"document\", ...defaults });\n      if (!this.nodes) {\n        this.nodes = [];\n      }\n    }\n    toResult(opts = {}) {\n      let lazy = new LazyResult(new Processor(), this, opts);\n      return lazy.stringify();\n    }\n  }\n  Document2.registerLazyResult = (dependant) => {\n    LazyResult = dependant;\n  };\n  Document2.registerProcessor = (dependant) => {\n    Processor = dependant;\n  };\n  document$1 = Document2;\n  Document2.default = Document2;\n  return document$1;\n}\nvar nonSecure;\nvar hasRequiredNonSecure;\nfunction requireNonSecure() {\n  if (hasRequiredNonSecure) return nonSecure;\n  hasRequiredNonSecure = 1;\n  let urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n  let customAlphabet = (alphabet, defaultSize = 21) => {\n    return (size = defaultSize) => {\n      let id = \"\";\n      let i2 = size | 0;\n      while (i2--) {\n        id += alphabet[Math.random() * alphabet.length | 0];\n      }\n      return id;\n    };\n  };\n  let nanoid = (size = 21) => {\n    let id = \"\";\n    let i2 = size | 0;\n    while (i2--) {\n      id += urlAlphabet[Math.random() * 64 | 0];\n    }\n    return id;\n  };\n  nonSecure = { nanoid, customAlphabet };\n  return nonSecure;\n}\nvar previousMap;\nvar hasRequiredPreviousMap;\nfunction requirePreviousMap() {\n  if (hasRequiredPreviousMap) return previousMap;\n  hasRequiredPreviousMap = 1;\n  let { existsSync, readFileSync } = require$$2;\n  let { dirname, join } = require$$2;\n  let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n  function fromBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str, \"base64\").toString();\n    } else {\n      return window.atob(str);\n    }\n  }\n  class PreviousMap {\n    constructor(css, opts) {\n      if (opts.map === false) return;\n      this.loadAnnotation(css);\n      this.inline = this.startWith(this.annotation, \"data:\");\n      let prev = opts.map ? opts.map.prev : void 0;\n      let text = this.loadMap(opts.from, prev);\n      if (!this.mapFile && opts.from) {\n        this.mapFile = opts.from;\n      }\n      if (this.mapFile) this.root = dirname(this.mapFile);\n      if (text) this.text = text;\n    }\n    consumer() {\n      if (!this.consumerCache) {\n        this.consumerCache = new SourceMapConsumer(this.text);\n      }\n      return this.consumerCache;\n    }\n    decodeInline(text) {\n      let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n      let baseUri = /^data:application\\/json;base64,/;\n      let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n      let uri = /^data:application\\/json,/;\n      let uriMatch = text.match(charsetUri) || text.match(uri);\n      if (uriMatch) {\n        return decodeURIComponent(text.substr(uriMatch[0].length));\n      }\n      let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);\n      if (baseUriMatch) {\n        return fromBase64(text.substr(baseUriMatch[0].length));\n      }\n      let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n      throw new Error(\"Unsupported source map encoding \" + encoding);\n    }\n    getAnnotationURL(sourceMapString) {\n      return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n    }\n    isMap(map) {\n      if (typeof map !== \"object\") return false;\n      return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n    }\n    loadAnnotation(css) {\n      let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g);\n      if (!comments) return;\n      let start = css.lastIndexOf(comments.pop());\n      let end = css.indexOf(\"*/\", start);\n      if (start > -1 && end > -1) {\n        this.annotation = this.getAnnotationURL(css.substring(start, end));\n      }\n    }\n    loadFile(path) {\n      this.root = dirname(path);\n      if (existsSync(path)) {\n        this.mapFile = path;\n        return readFileSync(path, \"utf-8\").toString().trim();\n      }\n    }\n    loadMap(file, prev) {\n      if (prev === false) return false;\n      if (prev) {\n        if (typeof prev === \"string\") {\n          return prev;\n        } else if (typeof prev === \"function\") {\n          let prevPath = prev(file);\n          if (prevPath) {\n            let map = this.loadFile(prevPath);\n            if (!map) {\n              throw new Error(\n                \"Unable to load previous source map: \" + prevPath.toString()\n              );\n            }\n            return map;\n          }\n        } else if (prev instanceof SourceMapConsumer) {\n          return SourceMapGenerator.fromSourceMap(prev).toString();\n        } else if (prev instanceof SourceMapGenerator) {\n          return prev.toString();\n        } else if (this.isMap(prev)) {\n          return JSON.stringify(prev);\n        } else {\n          throw new Error(\n            \"Unsupported previous source map format: \" + prev.toString()\n          );\n        }\n      } else if (this.inline) {\n        return this.decodeInline(this.annotation);\n      } else if (this.annotation) {\n        let map = this.annotation;\n        if (file) map = join(dirname(file), map);\n        return this.loadFile(map);\n      }\n    }\n    startWith(string, start) {\n      if (!string) return false;\n      return string.substr(0, start.length) === start;\n    }\n    withContent() {\n      return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n    }\n  }\n  previousMap = PreviousMap;\n  PreviousMap.default = PreviousMap;\n  return previousMap;\n}\nvar input;\nvar hasRequiredInput;\nfunction requireInput() {\n  if (hasRequiredInput) return input;\n  hasRequiredInput = 1;\n  let { nanoid } = /* @__PURE__ */ requireNonSecure();\n  let { isAbsolute, resolve } = require$$2;\n  let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n  let { fileURLToPath, pathToFileURL } = require$$2;\n  let CssSyntaxError = requireCssSyntaxError();\n  let PreviousMap = requirePreviousMap();\n  let terminalHighlight = require$$2;\n  let lineToIndexCache = Symbol(\"lineToIndexCache\");\n  let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n  let pathAvailable = Boolean(resolve && isAbsolute);\n  function getLineToIndex(input2) {\n    if (input2[lineToIndexCache]) return input2[lineToIndexCache];\n    let lines = input2.css.split(\"\\n\");\n    let lineToIndex = new Array(lines.length);\n    let prevIndex = 0;\n    for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n      lineToIndex[i2] = prevIndex;\n      prevIndex += lines[i2].length + 1;\n    }\n    input2[lineToIndexCache] = lineToIndex;\n    return lineToIndex;\n  }\n  class Input {\n    get from() {\n      return this.file || this.id;\n    }\n    constructor(css, opts = {}) {\n      if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n        throw new Error(`PostCSS received ${css} instead of CSS string`);\n      }\n      this.css = css.toString();\n      if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n        this.hasBOM = true;\n        this.css = this.css.slice(1);\n      } else {\n        this.hasBOM = false;\n      }\n      this.document = this.css;\n      if (opts.document) this.document = opts.document.toString();\n      if (opts.from) {\n        if (!pathAvailable || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n          this.file = opts.from;\n        } else {\n          this.file = resolve(opts.from);\n        }\n      }\n      if (pathAvailable && sourceMapAvailable) {\n        let map = new PreviousMap(this.css, opts);\n        if (map.text) {\n          this.map = map;\n          let file = map.consumer().file;\n          if (!this.file && file) this.file = this.mapResolve(file);\n        }\n      }\n      if (!this.file) {\n        this.id = \"<input css \" + nanoid(6) + \">\";\n      }\n      if (this.map) this.map.file = this.from;\n    }\n    error(message, line, column, opts = {}) {\n      let endColumn, endLine, endOffset, offset, result2;\n      if (line && typeof line === \"object\") {\n        let start = line;\n        let end = column;\n        if (typeof start.offset === \"number\") {\n          offset = start.offset;\n          let pos = this.fromOffset(offset);\n          line = pos.line;\n          column = pos.col;\n        } else {\n          line = start.line;\n          column = start.column;\n          offset = this.fromLineAndColumn(line, column);\n        }\n        if (typeof end.offset === \"number\") {\n          endOffset = end.offset;\n          let pos = this.fromOffset(endOffset);\n          endLine = pos.line;\n          endColumn = pos.col;\n        } else {\n          endLine = end.line;\n          endColumn = end.column;\n          endOffset = this.fromLineAndColumn(end.line, end.column);\n        }\n      } else if (!column) {\n        offset = line;\n        let pos = this.fromOffset(offset);\n        line = pos.line;\n        column = pos.col;\n      } else {\n        offset = this.fromLineAndColumn(line, column);\n      }\n      let origin = this.origin(line, column, endLine, endColumn);\n      if (origin) {\n        result2 = new CssSyntaxError(\n          message,\n          origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n          origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n          origin.source,\n          origin.file,\n          opts.plugin\n        );\n      } else {\n        result2 = new CssSyntaxError(\n          message,\n          endLine === void 0 ? line : { column, line },\n          endLine === void 0 ? column : { column: endColumn, line: endLine },\n          this.css,\n          this.file,\n          opts.plugin\n        );\n      }\n      result2.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css };\n      if (this.file) {\n        if (pathToFileURL) {\n          result2.input.url = pathToFileURL(this.file).toString();\n        }\n        result2.input.file = this.file;\n      }\n      return result2;\n    }\n    fromLineAndColumn(line, column) {\n      let lineToIndex = getLineToIndex(this);\n      let index2 = lineToIndex[line - 1];\n      return index2 + column - 1;\n    }\n    fromOffset(offset) {\n      let lineToIndex = getLineToIndex(this);\n      let lastLine = lineToIndex[lineToIndex.length - 1];\n      let min = 0;\n      if (offset >= lastLine) {\n        min = lineToIndex.length - 1;\n      } else {\n        let max = lineToIndex.length - 2;\n        let mid;\n        while (min < max) {\n          mid = min + (max - min >> 1);\n          if (offset < lineToIndex[mid]) {\n            max = mid - 1;\n          } else if (offset >= lineToIndex[mid + 1]) {\n            min = mid + 1;\n          } else {\n            min = mid;\n            break;\n          }\n        }\n      }\n      return {\n        col: offset - lineToIndex[min] + 1,\n        line: min + 1\n      };\n    }\n    mapResolve(file) {\n      if (/^\\w+:\\/\\//.test(file)) {\n        return file;\n      }\n      return resolve(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n    }\n    origin(line, column, endLine, endColumn) {\n      if (!this.map) return false;\n      let consumer = this.map.consumer();\n      let from = consumer.originalPositionFor({ column, line });\n      if (!from.source) return false;\n      let to;\n      if (typeof endLine === \"number\") {\n        to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n      }\n      let fromUrl;\n      if (isAbsolute(from.source)) {\n        fromUrl = pathToFileURL(from.source);\n      } else {\n        fromUrl = new URL(\n          from.source,\n          this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n        );\n      }\n      let result2 = {\n        column: from.column,\n        endColumn: to && to.column,\n        endLine: to && to.line,\n        line: from.line,\n        url: fromUrl.toString()\n      };\n      if (fromUrl.protocol === \"file:\") {\n        if (fileURLToPath) {\n          result2.file = fileURLToPath(fromUrl);\n        } else {\n          throw new Error(`file: protocol is not available in this PostCSS build`);\n        }\n      }\n      let source = consumer.sourceContentFor(from.source);\n      if (source) result2.source = source;\n      return result2;\n    }\n    toJSON() {\n      let json = {};\n      for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n        if (this[name] != null) {\n          json[name] = this[name];\n        }\n      }\n      if (this.map) {\n        json.map = { ...this.map };\n        if (json.map.consumerCache) {\n          json.map.consumerCache = void 0;\n        }\n      }\n      return json;\n    }\n  }\n  input = Input;\n  Input.default = Input;\n  if (terminalHighlight && terminalHighlight.registerInput) {\n    terminalHighlight.registerInput(Input);\n  }\n  return input;\n}\nvar root;\nvar hasRequiredRoot;\nfunction requireRoot() {\n  if (hasRequiredRoot) return root;\n  hasRequiredRoot = 1;\n  let Container = requireContainer();\n  let LazyResult, Processor;\n  class Root extends Container {\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"root\";\n      if (!this.nodes) this.nodes = [];\n    }\n    normalize(child, sample, type) {\n      let nodes = super.normalize(child);\n      if (sample) {\n        if (type === \"prepend\") {\n          if (this.nodes.length > 1) {\n            sample.raws.before = this.nodes[1].raws.before;\n          } else {\n            delete sample.raws.before;\n          }\n        } else if (this.first !== sample) {\n          for (let node2 of nodes) {\n            node2.raws.before = sample.raws.before;\n          }\n        }\n      }\n      return nodes;\n    }\n    removeChild(child, ignore) {\n      let index2 = this.index(child);\n      if (!ignore && index2 === 0 && this.nodes.length > 1) {\n        this.nodes[1].raws.before = this.nodes[index2].raws.before;\n      }\n      return super.removeChild(child);\n    }\n    toResult(opts = {}) {\n      let lazy = new LazyResult(new Processor(), this, opts);\n      return lazy.stringify();\n    }\n  }\n  Root.registerLazyResult = (dependant) => {\n    LazyResult = dependant;\n  };\n  Root.registerProcessor = (dependant) => {\n    Processor = dependant;\n  };\n  root = Root;\n  Root.default = Root;\n  Container.registerRoot(Root);\n  return root;\n}\nvar list_1;\nvar hasRequiredList;\nfunction requireList() {\n  if (hasRequiredList) return list_1;\n  hasRequiredList = 1;\n  let list = {\n    comma(string) {\n      return list.split(string, [\",\"], true);\n    },\n    space(string) {\n      let spaces = [\" \", \"\\n\", \"\t\"];\n      return list.split(string, spaces);\n    },\n    split(string, separators, last) {\n      let array = [];\n      let current = \"\";\n      let split = false;\n      let func = 0;\n      let inQuote = false;\n      let prevQuote = \"\";\n      let escape = false;\n      for (let letter of string) {\n        if (escape) {\n          escape = false;\n        } else if (letter === \"\\\\\") {\n          escape = true;\n        } else if (inQuote) {\n          if (letter === prevQuote) {\n            inQuote = false;\n          }\n        } else if (letter === '\"' || letter === \"'\") {\n          inQuote = true;\n          prevQuote = letter;\n        } else if (letter === \"(\") {\n          func += 1;\n        } else if (letter === \")\") {\n          if (func > 0) func -= 1;\n        } else if (func === 0) {\n          if (separators.includes(letter)) split = true;\n        }\n        if (split) {\n          if (current !== \"\") array.push(current.trim());\n          current = \"\";\n          split = false;\n        } else {\n          current += letter;\n        }\n      }\n      if (last || current !== \"\") array.push(current.trim());\n      return array;\n    }\n  };\n  list_1 = list;\n  list.default = list;\n  return list_1;\n}\nvar rule;\nvar hasRequiredRule;\nfunction requireRule() {\n  if (hasRequiredRule) return rule;\n  hasRequiredRule = 1;\n  let Container = requireContainer();\n  let list = requireList();\n  class Rule extends Container {\n    get selectors() {\n      return list.comma(this.selector);\n    }\n    set selectors(values) {\n      let match = this.selector ? this.selector.match(/,\\s*/) : null;\n      let sep = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n      this.selector = values.join(sep);\n    }\n    constructor(defaults) {\n      super(defaults);\n      this.type = \"rule\";\n      if (!this.nodes) this.nodes = [];\n    }\n  }\n  rule = Rule;\n  Rule.default = Rule;\n  Container.registerRule(Rule);\n  return rule;\n}\nvar fromJSON_1;\nvar hasRequiredFromJSON;\nfunction requireFromJSON() {\n  if (hasRequiredFromJSON) return fromJSON_1;\n  hasRequiredFromJSON = 1;\n  let AtRule = requireAtRule();\n  let Comment = requireComment();\n  let Declaration = requireDeclaration();\n  let Input = requireInput();\n  let PreviousMap = requirePreviousMap();\n  let Root = requireRoot();\n  let Rule = requireRule();\n  function fromJSON(json, inputs) {\n    if (Array.isArray(json)) return json.map((n2) => fromJSON(n2));\n    let { inputs: ownInputs, ...defaults } = json;\n    if (ownInputs) {\n      inputs = [];\n      for (let input2 of ownInputs) {\n        let inputHydrated = { ...input2, __proto__: Input.prototype };\n        if (inputHydrated.map) {\n          inputHydrated.map = {\n            ...inputHydrated.map,\n            __proto__: PreviousMap.prototype\n          };\n        }\n        inputs.push(inputHydrated);\n      }\n    }\n    if (defaults.nodes) {\n      defaults.nodes = json.nodes.map((n2) => fromJSON(n2, inputs));\n    }\n    if (defaults.source) {\n      let { inputId, ...source } = defaults.source;\n      defaults.source = source;\n      if (inputId != null) {\n        defaults.source.input = inputs[inputId];\n      }\n    }\n    if (defaults.type === \"root\") {\n      return new Root(defaults);\n    } else if (defaults.type === \"decl\") {\n      return new Declaration(defaults);\n    } else if (defaults.type === \"rule\") {\n      return new Rule(defaults);\n    } else if (defaults.type === \"comment\") {\n      return new Comment(defaults);\n    } else if (defaults.type === \"atrule\") {\n      return new AtRule(defaults);\n    } else {\n      throw new Error(\"Unknown node type: \" + json.type);\n    }\n  }\n  fromJSON_1 = fromJSON;\n  fromJSON.default = fromJSON;\n  return fromJSON_1;\n}\nvar mapGenerator;\nvar hasRequiredMapGenerator;\nfunction requireMapGenerator() {\n  if (hasRequiredMapGenerator) return mapGenerator;\n  hasRequiredMapGenerator = 1;\n  let { dirname, relative, resolve, sep } = require$$2;\n  let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n  let { pathToFileURL } = require$$2;\n  let Input = requireInput();\n  let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n  let pathAvailable = Boolean(dirname && resolve && relative && sep);\n  class MapGenerator {\n    constructor(stringify, root2, opts, cssString) {\n      this.stringify = stringify;\n      this.mapOpts = opts.map || {};\n      this.root = root2;\n      this.opts = opts;\n      this.css = cssString;\n      this.originalCSS = cssString;\n      this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n      this.memoizedFileURLs = /* @__PURE__ */ new Map();\n      this.memoizedPaths = /* @__PURE__ */ new Map();\n      this.memoizedURLs = /* @__PURE__ */ new Map();\n    }\n    addAnnotation() {\n      let content;\n      if (this.isInline()) {\n        content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n      } else if (typeof this.mapOpts.annotation === \"string\") {\n        content = this.mapOpts.annotation;\n      } else if (typeof this.mapOpts.annotation === \"function\") {\n        content = this.mapOpts.annotation(this.opts.to, this.root);\n      } else {\n        content = this.outputFile() + \".map\";\n      }\n      let eol = \"\\n\";\n      if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n      this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n    }\n    applyPrevMaps() {\n      for (let prev of this.previous()) {\n        let from = this.toUrl(this.path(prev.file));\n        let root2 = prev.root || dirname(prev.file);\n        let map;\n        if (this.mapOpts.sourcesContent === false) {\n          map = new SourceMapConsumer(prev.text);\n          if (map.sourcesContent) {\n            map.sourcesContent = null;\n          }\n        } else {\n          map = prev.consumer();\n        }\n        this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n      }\n    }\n    clearAnnotation() {\n      if (this.mapOpts.annotation === false) return;\n      if (this.root) {\n        let node2;\n        for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n          node2 = this.root.nodes[i2];\n          if (node2.type !== \"comment\") continue;\n          if (node2.text.startsWith(\"# sourceMappingURL=\")) {\n            this.root.removeChild(i2);\n          }\n        }\n      } else if (this.css) {\n        this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n      }\n    }\n    generate() {\n      this.clearAnnotation();\n      if (pathAvailable && sourceMapAvailable && this.isMap()) {\n        return this.generateMap();\n      } else {\n        let result2 = \"\";\n        this.stringify(this.root, (i2) => {\n          result2 += i2;\n        });\n        return [result2];\n      }\n    }\n    generateMap() {\n      if (this.root) {\n        this.generateString();\n      } else if (this.previous().length === 1) {\n        let prev = this.previous()[0].consumer();\n        prev.file = this.outputFile();\n        this.map = SourceMapGenerator.fromSourceMap(prev, {\n          ignoreInvalidMapping: true\n        });\n      } else {\n        this.map = new SourceMapGenerator({\n          file: this.outputFile(),\n          ignoreInvalidMapping: true\n        });\n        this.map.addMapping({\n          generated: { column: 0, line: 1 },\n          original: { column: 0, line: 1 },\n          source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n        });\n      }\n      if (this.isSourcesContent()) this.setSourcesContent();\n      if (this.root && this.previous().length > 0) this.applyPrevMaps();\n      if (this.isAnnotation()) this.addAnnotation();\n      if (this.isInline()) {\n        return [this.css];\n      } else {\n        return [this.css, this.map];\n      }\n    }\n    generateString() {\n      this.css = \"\";\n      this.map = new SourceMapGenerator({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      });\n      let line = 1;\n      let column = 1;\n      let noSource = \"<no source>\";\n      let mapping = {\n        generated: { column: 0, line: 0 },\n        original: { column: 0, line: 0 },\n        source: \"\"\n      };\n      let last, lines;\n      this.stringify(this.root, (str, node2, type) => {\n        this.css += str;\n        if (node2 && type !== \"end\") {\n          mapping.generated.line = line;\n          mapping.generated.column = column - 1;\n          if (node2.source && node2.source.start) {\n            mapping.source = this.sourcePath(node2);\n            mapping.original.line = node2.source.start.line;\n            mapping.original.column = node2.source.start.column - 1;\n            this.map.addMapping(mapping);\n          } else {\n            mapping.source = noSource;\n            mapping.original.line = 1;\n            mapping.original.column = 0;\n            this.map.addMapping(mapping);\n          }\n        }\n        lines = str.match(/\\n/g);\n        if (lines) {\n          line += lines.length;\n          last = str.lastIndexOf(\"\\n\");\n          column = str.length - last;\n        } else {\n          column += str.length;\n        }\n        if (node2 && type !== \"start\") {\n          let p = node2.parent || { raws: {} };\n          let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n          if (!childless || node2 !== p.last || p.raws.semicolon) {\n            if (node2.source && node2.source.end) {\n              mapping.source = this.sourcePath(node2);\n              mapping.original.line = node2.source.end.line;\n              mapping.original.column = node2.source.end.column - 1;\n              mapping.generated.line = line;\n              mapping.generated.column = column - 2;\n              this.map.addMapping(mapping);\n            } else {\n              mapping.source = noSource;\n              mapping.original.line = 1;\n              mapping.original.column = 0;\n              mapping.generated.line = line;\n              mapping.generated.column = column - 1;\n              this.map.addMapping(mapping);\n            }\n          }\n        }\n      });\n    }\n    isAnnotation() {\n      if (this.isInline()) {\n        return true;\n      }\n      if (typeof this.mapOpts.annotation !== \"undefined\") {\n        return this.mapOpts.annotation;\n      }\n      if (this.previous().length) {\n        return this.previous().some((i2) => i2.annotation);\n      }\n      return true;\n    }\n    isInline() {\n      if (typeof this.mapOpts.inline !== \"undefined\") {\n        return this.mapOpts.inline;\n      }\n      let annotation = this.mapOpts.annotation;\n      if (typeof annotation !== \"undefined\" && annotation !== true) {\n        return false;\n      }\n      if (this.previous().length) {\n        return this.previous().some((i2) => i2.inline);\n      }\n      return true;\n    }\n    isMap() {\n      if (typeof this.opts.map !== \"undefined\") {\n        return !!this.opts.map;\n      }\n      return this.previous().length > 0;\n    }\n    isSourcesContent() {\n      if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n        return this.mapOpts.sourcesContent;\n      }\n      if (this.previous().length) {\n        return this.previous().some((i2) => i2.withContent());\n      }\n      return true;\n    }\n    outputFile() {\n      if (this.opts.to) {\n        return this.path(this.opts.to);\n      } else if (this.opts.from) {\n        return this.path(this.opts.from);\n      } else {\n        return \"to.css\";\n      }\n    }\n    path(file) {\n      if (this.mapOpts.absolute) return file;\n      if (file.charCodeAt(0) === 60) return file;\n      if (/^\\w+:\\/\\//.test(file)) return file;\n      let cached = this.memoizedPaths.get(file);\n      if (cached) return cached;\n      let from = this.opts.to ? dirname(this.opts.to) : \".\";\n      if (typeof this.mapOpts.annotation === \"string\") {\n        from = dirname(resolve(from, this.mapOpts.annotation));\n      }\n      let path = relative(from, file);\n      this.memoizedPaths.set(file, path);\n      return path;\n    }\n    previous() {\n      if (!this.previousMaps) {\n        this.previousMaps = [];\n        if (this.root) {\n          this.root.walk((node2) => {\n            if (node2.source && node2.source.input.map) {\n              let map = node2.source.input.map;\n              if (!this.previousMaps.includes(map)) {\n                this.previousMaps.push(map);\n              }\n            }\n          });\n        } else {\n          let input2 = new Input(this.originalCSS, this.opts);\n          if (input2.map) this.previousMaps.push(input2.map);\n        }\n      }\n      return this.previousMaps;\n    }\n    setSourcesContent() {\n      let already = {};\n      if (this.root) {\n        this.root.walk((node2) => {\n          if (node2.source) {\n            let from = node2.source.input.from;\n            if (from && !already[from]) {\n              already[from] = true;\n              let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n              this.map.setSourceContent(fromUrl, node2.source.input.css);\n            }\n          }\n        });\n      } else if (this.css) {\n        let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n        this.map.setSourceContent(from, this.css);\n      }\n    }\n    sourcePath(node2) {\n      if (this.mapOpts.from) {\n        return this.toUrl(this.mapOpts.from);\n      } else if (this.usesFileUrls) {\n        return this.toFileUrl(node2.source.input.from);\n      } else {\n        return this.toUrl(this.path(node2.source.input.from));\n      }\n    }\n    toBase64(str) {\n      if (Buffer) {\n        return Buffer.from(str).toString(\"base64\");\n      } else {\n        return window.btoa(unescape(encodeURIComponent(str)));\n      }\n    }\n    toFileUrl(path) {\n      let cached = this.memoizedFileURLs.get(path);\n      if (cached) return cached;\n      if (pathToFileURL) {\n        let fileURL = pathToFileURL(path).toString();\n        this.memoizedFileURLs.set(path, fileURL);\n        return fileURL;\n      } else {\n        throw new Error(\n          \"`map.absolute` option is not available in this PostCSS build\"\n        );\n      }\n    }\n    toUrl(path) {\n      let cached = this.memoizedURLs.get(path);\n      if (cached) return cached;\n      if (sep === \"\\\\\") {\n        path = path.replace(/\\\\/g, \"/\");\n      }\n      let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n      this.memoizedURLs.set(path, url);\n      return url;\n    }\n  }\n  mapGenerator = MapGenerator;\n  return mapGenerator;\n}\nvar tokenize;\nvar hasRequiredTokenize;\nfunction requireTokenize() {\n  if (hasRequiredTokenize) return tokenize;\n  hasRequiredTokenize = 1;\n  const SINGLE_QUOTE = \"'\".charCodeAt(0);\n  const DOUBLE_QUOTE = '\"'.charCodeAt(0);\n  const BACKSLASH = \"\\\\\".charCodeAt(0);\n  const SLASH = \"/\".charCodeAt(0);\n  const NEWLINE = \"\\n\".charCodeAt(0);\n  const SPACE = \" \".charCodeAt(0);\n  const FEED = \"\\f\".charCodeAt(0);\n  const TAB = \"\t\".charCodeAt(0);\n  const CR = \"\\r\".charCodeAt(0);\n  const OPEN_SQUARE = \"[\".charCodeAt(0);\n  const CLOSE_SQUARE = \"]\".charCodeAt(0);\n  const OPEN_PARENTHESES = \"(\".charCodeAt(0);\n  const CLOSE_PARENTHESES = \")\".charCodeAt(0);\n  const OPEN_CURLY = \"{\".charCodeAt(0);\n  const CLOSE_CURLY = \"}\".charCodeAt(0);\n  const SEMICOLON = \";\".charCodeAt(0);\n  const ASTERISK = \"*\".charCodeAt(0);\n  const COLON = \":\".charCodeAt(0);\n  const AT = \"@\".charCodeAt(0);\n  const RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\n  const RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\n  const RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\n  const RE_HEX_ESCAPE = /[\\da-f]/i;\n  tokenize = function tokenizer(input2, options = {}) {\n    let css = input2.css.valueOf();\n    let ignore = options.ignoreErrors;\n    let code, content, escape, next, quote;\n    let currentToken, escaped, escapePos, n2, prev;\n    let length = css.length;\n    let pos = 0;\n    let buffer = [];\n    let returned = [];\n    function position() {\n      return pos;\n    }\n    function unclosed(what) {\n      throw input2.error(\"Unclosed \" + what, pos);\n    }\n    function endOfFile() {\n      return returned.length === 0 && pos >= length;\n    }\n    function nextToken(opts) {\n      if (returned.length) return returned.pop();\n      if (pos >= length) return;\n      let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n      code = css.charCodeAt(pos);\n      switch (code) {\n        case NEWLINE:\n        case SPACE:\n        case TAB:\n        case CR:\n        case FEED: {\n          next = pos;\n          do {\n            next += 1;\n            code = css.charCodeAt(next);\n          } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n          currentToken = [\"space\", css.slice(pos, next)];\n          pos = next - 1;\n          break;\n        }\n        case OPEN_SQUARE:\n        case CLOSE_SQUARE:\n        case OPEN_CURLY:\n        case CLOSE_CURLY:\n        case COLON:\n        case SEMICOLON:\n        case CLOSE_PARENTHESES: {\n          let controlChar = String.fromCharCode(code);\n          currentToken = [controlChar, controlChar, pos];\n          break;\n        }\n        case OPEN_PARENTHESES: {\n          prev = buffer.length ? buffer.pop()[1] : \"\";\n          n2 = css.charCodeAt(pos + 1);\n          if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n            next = pos;\n            do {\n              escaped = false;\n              next = css.indexOf(\")\", next + 1);\n              if (next === -1) {\n                if (ignore || ignoreUnclosed) {\n                  next = pos;\n                  break;\n                } else {\n                  unclosed(\"bracket\");\n                }\n              }\n              escapePos = next;\n              while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n                escapePos -= 1;\n                escaped = !escaped;\n              }\n            } while (escaped);\n            currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n            pos = next;\n          } else {\n            next = css.indexOf(\")\", pos + 1);\n            content = css.slice(pos, next + 1);\n            if (next === -1 || RE_BAD_BRACKET.test(content)) {\n              currentToken = [\"(\", \"(\", pos];\n            } else {\n              currentToken = [\"brackets\", content, pos, next];\n              pos = next;\n            }\n          }\n          break;\n        }\n        case SINGLE_QUOTE:\n        case DOUBLE_QUOTE: {\n          quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n          next = pos;\n          do {\n            escaped = false;\n            next = css.indexOf(quote, next + 1);\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos + 1;\n                break;\n              } else {\n                unclosed(\"string\");\n              }\n            }\n            escapePos = next;\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n          currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n          break;\n        }\n        case AT: {\n          RE_AT_END.lastIndex = pos + 1;\n          RE_AT_END.test(css);\n          if (RE_AT_END.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_AT_END.lastIndex - 2;\n          }\n          currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n          break;\n        }\n        case BACKSLASH: {\n          next = pos;\n          escape = true;\n          while (css.charCodeAt(next + 1) === BACKSLASH) {\n            next += 1;\n            escape = !escape;\n          }\n          code = css.charCodeAt(next + 1);\n          if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n            next += 1;\n            if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n              while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n                next += 1;\n              }\n              if (css.charCodeAt(next + 1) === SPACE) {\n                next += 1;\n              }\n            }\n          }\n          currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n          break;\n        }\n        default: {\n          if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n            next = css.indexOf(\"*/\", pos + 2) + 1;\n            if (next === 0) {\n              if (ignore || ignoreUnclosed) {\n                next = css.length;\n              } else {\n                unclosed(\"comment\");\n              }\n            }\n            currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n            pos = next;\n          } else {\n            RE_WORD_END.lastIndex = pos + 1;\n            RE_WORD_END.test(css);\n            if (RE_WORD_END.lastIndex === 0) {\n              next = css.length - 1;\n            } else {\n              next = RE_WORD_END.lastIndex - 2;\n            }\n            currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n            buffer.push(currentToken);\n            pos = next;\n          }\n          break;\n        }\n      }\n      pos++;\n      return currentToken;\n    }\n    function back(token) {\n      returned.push(token);\n    }\n    return {\n      back,\n      endOfFile,\n      nextToken,\n      position\n    };\n  };\n  return tokenize;\n}\nvar parser;\nvar hasRequiredParser;\nfunction requireParser() {\n  if (hasRequiredParser) return parser;\n  hasRequiredParser = 1;\n  let AtRule = requireAtRule();\n  let Comment = requireComment();\n  let Declaration = requireDeclaration();\n  let Root = requireRoot();\n  let Rule = requireRule();\n  let tokenizer = requireTokenize();\n  const SAFE_COMMENT_NEIGHBOR = {\n    empty: true,\n    space: true\n  };\n  function findLastWithPosition(tokens) {\n    for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n      let token = tokens[i2];\n      let pos = token[3] || token[2];\n      if (pos) return pos;\n    }\n  }\n  class Parser {\n    constructor(input2) {\n      this.input = input2;\n      this.root = new Root();\n      this.current = this.root;\n      this.spaces = \"\";\n      this.semicolon = false;\n      this.createTokenizer();\n      this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n    }\n    atrule(token) {\n      let node2 = new AtRule();\n      node2.name = token[1].slice(1);\n      if (node2.name === \"\") {\n        this.unnamedAtrule(node2, token);\n      }\n      this.init(node2, token[2]);\n      let type;\n      let prev;\n      let shift;\n      let last = false;\n      let open = false;\n      let params = [];\n      let brackets = [];\n      while (!this.tokenizer.endOfFile()) {\n        token = this.tokenizer.nextToken();\n        type = token[0];\n        if (type === \"(\" || type === \"[\") {\n          brackets.push(type === \"(\" ? \")\" : \"]\");\n        } else if (type === \"{\" && brackets.length > 0) {\n          brackets.push(\"}\");\n        } else if (type === brackets[brackets.length - 1]) {\n          brackets.pop();\n        }\n        if (brackets.length === 0) {\n          if (type === \";\") {\n            node2.source.end = this.getPosition(token[2]);\n            node2.source.end.offset++;\n            this.semicolon = true;\n            break;\n          } else if (type === \"{\") {\n            open = true;\n            break;\n          } else if (type === \"}\") {\n            if (params.length > 0) {\n              shift = params.length - 1;\n              prev = params[shift];\n              while (prev && prev[0] === \"space\") {\n                prev = params[--shift];\n              }\n              if (prev) {\n                node2.source.end = this.getPosition(prev[3] || prev[2]);\n                node2.source.end.offset++;\n              }\n            }\n            this.end(token);\n            break;\n          } else {\n            params.push(token);\n          }\n        } else {\n          params.push(token);\n        }\n        if (this.tokenizer.endOfFile()) {\n          last = true;\n          break;\n        }\n      }\n      node2.raws.between = this.spacesAndCommentsFromEnd(params);\n      if (params.length) {\n        node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n        this.raw(node2, \"params\", params);\n        if (last) {\n          token = params[params.length - 1];\n          node2.source.end = this.getPosition(token[3] || token[2]);\n          node2.source.end.offset++;\n          this.spaces = node2.raws.between;\n          node2.raws.between = \"\";\n        }\n      } else {\n        node2.raws.afterName = \"\";\n        node2.params = \"\";\n      }\n      if (open) {\n        node2.nodes = [];\n        this.current = node2;\n      }\n    }\n    checkMissedSemicolon(tokens) {\n      let colon = this.colon(tokens);\n      if (colon === false) return;\n      let founded = 0;\n      let token;\n      for (let j = colon - 1; j >= 0; j--) {\n        token = tokens[j];\n        if (token[0] !== \"space\") {\n          founded += 1;\n          if (founded === 2) break;\n        }\n      }\n      throw this.input.error(\n        \"Missed semicolon\",\n        token[0] === \"word\" ? token[3] + 1 : token[2]\n      );\n    }\n    colon(tokens) {\n      let brackets = 0;\n      let prev, token, type;\n      for (let [i2, element] of tokens.entries()) {\n        token = element;\n        type = token[0];\n        if (type === \"(\") {\n          brackets += 1;\n        }\n        if (type === \")\") {\n          brackets -= 1;\n        }\n        if (brackets === 0 && type === \":\") {\n          if (!prev) {\n            this.doubleColon(token);\n          } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n            continue;\n          } else {\n            return i2;\n          }\n        }\n        prev = token;\n      }\n      return false;\n    }\n    comment(token) {\n      let node2 = new Comment();\n      this.init(node2, token[2]);\n      node2.source.end = this.getPosition(token[3] || token[2]);\n      node2.source.end.offset++;\n      let text = token[1].slice(2, -2);\n      if (/^\\s*$/.test(text)) {\n        node2.text = \"\";\n        node2.raws.left = text;\n        node2.raws.right = \"\";\n      } else {\n        let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n        node2.text = match[2];\n        node2.raws.left = match[1];\n        node2.raws.right = match[3];\n      }\n    }\n    createTokenizer() {\n      this.tokenizer = tokenizer(this.input);\n    }\n    decl(tokens, customProperty) {\n      let node2 = new Declaration();\n      this.init(node2, tokens[0][2]);\n      let last = tokens[tokens.length - 1];\n      if (last[0] === \";\") {\n        this.semicolon = true;\n        tokens.pop();\n      }\n      node2.source.end = this.getPosition(\n        last[3] || last[2] || findLastWithPosition(tokens)\n      );\n      node2.source.end.offset++;\n      while (tokens[0][0] !== \"word\") {\n        if (tokens.length === 1) this.unknownWord(tokens);\n        node2.raws.before += tokens.shift()[1];\n      }\n      node2.source.start = this.getPosition(tokens[0][2]);\n      node2.prop = \"\";\n      while (tokens.length) {\n        let type = tokens[0][0];\n        if (type === \":\" || type === \"space\" || type === \"comment\") {\n          break;\n        }\n        node2.prop += tokens.shift()[1];\n      }\n      node2.raws.between = \"\";\n      let token;\n      while (tokens.length) {\n        token = tokens.shift();\n        if (token[0] === \":\") {\n          node2.raws.between += token[1];\n          break;\n        } else {\n          if (token[0] === \"word\" && /\\w/.test(token[1])) {\n            this.unknownWord([token]);\n          }\n          node2.raws.between += token[1];\n        }\n      }\n      if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n        node2.raws.before += node2.prop[0];\n        node2.prop = node2.prop.slice(1);\n      }\n      let firstSpaces = [];\n      let next;\n      while (tokens.length) {\n        next = tokens[0][0];\n        if (next !== \"space\" && next !== \"comment\") break;\n        firstSpaces.push(tokens.shift());\n      }\n      this.precheckMissedSemicolon(tokens);\n      for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n        token = tokens[i2];\n        if (token[1].toLowerCase() === \"!important\") {\n          node2.important = true;\n          let string = this.stringFrom(tokens, i2);\n          string = this.spacesFromEnd(tokens) + string;\n          if (string !== \" !important\") node2.raws.important = string;\n          break;\n        } else if (token[1].toLowerCase() === \"important\") {\n          let cache = tokens.slice(0);\n          let str = \"\";\n          for (let j = i2; j > 0; j--) {\n            let type = cache[j][0];\n            if (str.trim().startsWith(\"!\") && type !== \"space\") {\n              break;\n            }\n            str = cache.pop()[1] + str;\n          }\n          if (str.trim().startsWith(\"!\")) {\n            node2.important = true;\n            node2.raws.important = str;\n            tokens = cache;\n          }\n        }\n        if (token[0] !== \"space\" && token[0] !== \"comment\") {\n          break;\n        }\n      }\n      let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n      if (hasWord) {\n        node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n        firstSpaces = [];\n      }\n      this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n      if (node2.value.includes(\":\") && !customProperty) {\n        this.checkMissedSemicolon(tokens);\n      }\n    }\n    doubleColon(token) {\n      throw this.input.error(\n        \"Double colon\",\n        { offset: token[2] },\n        { offset: token[2] + token[1].length }\n      );\n    }\n    emptyRule(token) {\n      let node2 = new Rule();\n      this.init(node2, token[2]);\n      node2.selector = \"\";\n      node2.raws.between = \"\";\n      this.current = node2;\n    }\n    end(token) {\n      if (this.current.nodes && this.current.nodes.length) {\n        this.current.raws.semicolon = this.semicolon;\n      }\n      this.semicolon = false;\n      this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n      this.spaces = \"\";\n      if (this.current.parent) {\n        this.current.source.end = this.getPosition(token[2]);\n        this.current.source.end.offset++;\n        this.current = this.current.parent;\n      } else {\n        this.unexpectedClose(token);\n      }\n    }\n    endFile() {\n      if (this.current.parent) this.unclosedBlock();\n      if (this.current.nodes && this.current.nodes.length) {\n        this.current.raws.semicolon = this.semicolon;\n      }\n      this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n      this.root.source.end = this.getPosition(this.tokenizer.position());\n    }\n    freeSemicolon(token) {\n      this.spaces += token[1];\n      if (this.current.nodes) {\n        let prev = this.current.nodes[this.current.nodes.length - 1];\n        if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n          prev.raws.ownSemicolon = this.spaces;\n          this.spaces = \"\";\n          prev.source.end = this.getPosition(token[2]);\n          prev.source.end.offset += prev.raws.ownSemicolon.length;\n        }\n      }\n    }\n    // Helpers\n    getPosition(offset) {\n      let pos = this.input.fromOffset(offset);\n      return {\n        column: pos.col,\n        line: pos.line,\n        offset\n      };\n    }\n    init(node2, offset) {\n      this.current.push(node2);\n      node2.source = {\n        input: this.input,\n        start: this.getPosition(offset)\n      };\n      node2.raws.before = this.spaces;\n      this.spaces = \"\";\n      if (node2.type !== \"comment\") this.semicolon = false;\n    }\n    other(start) {\n      let end = false;\n      let type = null;\n      let colon = false;\n      let bracket = null;\n      let brackets = [];\n      let customProperty = start[1].startsWith(\"--\");\n      let tokens = [];\n      let token = start;\n      while (token) {\n        type = token[0];\n        tokens.push(token);\n        if (type === \"(\" || type === \"[\") {\n          if (!bracket) bracket = token;\n          brackets.push(type === \"(\" ? \")\" : \"]\");\n        } else if (customProperty && colon && type === \"{\") {\n          if (!bracket) bracket = token;\n          brackets.push(\"}\");\n        } else if (brackets.length === 0) {\n          if (type === \";\") {\n            if (colon) {\n              this.decl(tokens, customProperty);\n              return;\n            } else {\n              break;\n            }\n          } else if (type === \"{\") {\n            this.rule(tokens);\n            return;\n          } else if (type === \"}\") {\n            this.tokenizer.back(tokens.pop());\n            end = true;\n            break;\n          } else if (type === \":\") {\n            colon = true;\n          }\n        } else if (type === brackets[brackets.length - 1]) {\n          brackets.pop();\n          if (brackets.length === 0) bracket = null;\n        }\n        token = this.tokenizer.nextToken();\n      }\n      if (this.tokenizer.endOfFile()) end = true;\n      if (brackets.length > 0) this.unclosedBracket(bracket);\n      if (end && colon) {\n        if (!customProperty) {\n          while (tokens.length) {\n            token = tokens[tokens.length - 1][0];\n            if (token !== \"space\" && token !== \"comment\") break;\n            this.tokenizer.back(tokens.pop());\n          }\n        }\n        this.decl(tokens, customProperty);\n      } else {\n        this.unknownWord(tokens);\n      }\n    }\n    parse() {\n      let token;\n      while (!this.tokenizer.endOfFile()) {\n        token = this.tokenizer.nextToken();\n        switch (token[0]) {\n          case \"space\":\n            this.spaces += token[1];\n            break;\n          case \";\":\n            this.freeSemicolon(token);\n            break;\n          case \"}\":\n            this.end(token);\n            break;\n          case \"comment\":\n            this.comment(token);\n            break;\n          case \"at-word\":\n            this.atrule(token);\n            break;\n          case \"{\":\n            this.emptyRule(token);\n            break;\n          default:\n            this.other(token);\n            break;\n        }\n      }\n      this.endFile();\n    }\n    precheckMissedSemicolon() {\n    }\n    raw(node2, prop, tokens, customProperty) {\n      let token, type;\n      let length = tokens.length;\n      let value = \"\";\n      let clean = true;\n      let next, prev;\n      for (let i2 = 0; i2 < length; i2 += 1) {\n        token = tokens[i2];\n        type = token[0];\n        if (type === \"space\" && i2 === length - 1 && !customProperty) {\n          clean = false;\n        } else if (type === \"comment\") {\n          prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n          next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n          if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n            if (value.slice(-1) === \",\") {\n              clean = false;\n            } else {\n              value += token[1];\n            }\n          } else {\n            clean = false;\n          }\n        } else {\n          value += token[1];\n        }\n      }\n      if (!clean) {\n        let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n        node2.raws[prop] = { raw, value };\n      }\n      node2[prop] = value;\n    }\n    rule(tokens) {\n      tokens.pop();\n      let node2 = new Rule();\n      this.init(node2, tokens[0][2]);\n      node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n      this.raw(node2, \"selector\", tokens);\n      this.current = node2;\n    }\n    spacesAndCommentsFromEnd(tokens) {\n      let lastTokenType;\n      let spaces = \"\";\n      while (tokens.length) {\n        lastTokenType = tokens[tokens.length - 1][0];\n        if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n        spaces = tokens.pop()[1] + spaces;\n      }\n      return spaces;\n    }\n    // Errors\n    spacesAndCommentsFromStart(tokens) {\n      let next;\n      let spaces = \"\";\n      while (tokens.length) {\n        next = tokens[0][0];\n        if (next !== \"space\" && next !== \"comment\") break;\n        spaces += tokens.shift()[1];\n      }\n      return spaces;\n    }\n    spacesFromEnd(tokens) {\n      let lastTokenType;\n      let spaces = \"\";\n      while (tokens.length) {\n        lastTokenType = tokens[tokens.length - 1][0];\n        if (lastTokenType !== \"space\") break;\n        spaces = tokens.pop()[1] + spaces;\n      }\n      return spaces;\n    }\n    stringFrom(tokens, from) {\n      let result2 = \"\";\n      for (let i2 = from; i2 < tokens.length; i2++) {\n        result2 += tokens[i2][1];\n      }\n      tokens.splice(from, tokens.length - from);\n      return result2;\n    }\n    unclosedBlock() {\n      let pos = this.current.source.start;\n      throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n    }\n    unclosedBracket(bracket) {\n      throw this.input.error(\n        \"Unclosed bracket\",\n        { offset: bracket[2] },\n        { offset: bracket[2] + 1 }\n      );\n    }\n    unexpectedClose(token) {\n      throw this.input.error(\n        \"Unexpected }\",\n        { offset: token[2] },\n        { offset: token[2] + 1 }\n      );\n    }\n    unknownWord(tokens) {\n      throw this.input.error(\n        \"Unknown word \" + tokens[0][1],\n        { offset: tokens[0][2] },\n        { offset: tokens[0][2] + tokens[0][1].length }\n      );\n    }\n    unnamedAtrule(node2, token) {\n      throw this.input.error(\n        \"At-rule without name\",\n        { offset: token[2] },\n        { offset: token[2] + token[1].length }\n      );\n    }\n  }\n  parser = Parser;\n  return parser;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n  if (hasRequiredParse) return parse_1;\n  hasRequiredParse = 1;\n  let Container = requireContainer();\n  let Input = requireInput();\n  let Parser = requireParser();\n  function parse(css, opts) {\n    let input2 = new Input(css, opts);\n    let parser2 = new Parser(input2);\n    try {\n      parser2.parse();\n    } catch (e2) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n          if (/\\.scss$/i.test(opts.from)) {\n            e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n          } else if (/\\.sass/i.test(opts.from)) {\n            e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n          } else if (/\\.less$/i.test(opts.from)) {\n            e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n          }\n        }\n      }\n      throw e2;\n    }\n    return parser2.root;\n  }\n  parse_1 = parse;\n  parse.default = parse;\n  Container.registerParse(parse);\n  return parse_1;\n}\nvar warning;\nvar hasRequiredWarning;\nfunction requireWarning() {\n  if (hasRequiredWarning) return warning;\n  hasRequiredWarning = 1;\n  class Warning {\n    constructor(text, opts = {}) {\n      this.type = \"warning\";\n      this.text = text;\n      if (opts.node && opts.node.source) {\n        let range = opts.node.rangeBy(opts);\n        this.line = range.start.line;\n        this.column = range.start.column;\n        this.endLine = range.end.line;\n        this.endColumn = range.end.column;\n      }\n      for (let opt in opts) this[opt] = opts[opt];\n    }\n    toString() {\n      if (this.node) {\n        return this.node.error(this.text, {\n          index: this.index,\n          plugin: this.plugin,\n          word: this.word\n        }).message;\n      }\n      if (this.plugin) {\n        return this.plugin + \": \" + this.text;\n      }\n      return this.text;\n    }\n  }\n  warning = Warning;\n  Warning.default = Warning;\n  return warning;\n}\nvar result;\nvar hasRequiredResult;\nfunction requireResult() {\n  if (hasRequiredResult) return result;\n  hasRequiredResult = 1;\n  let Warning = requireWarning();\n  class Result {\n    get content() {\n      return this.css;\n    }\n    constructor(processor2, root2, opts) {\n      this.processor = processor2;\n      this.messages = [];\n      this.root = root2;\n      this.opts = opts;\n      this.css = \"\";\n      this.map = void 0;\n    }\n    toString() {\n      return this.css;\n    }\n    warn(text, opts = {}) {\n      if (!opts.plugin) {\n        if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n          opts.plugin = this.lastPlugin.postcssPlugin;\n        }\n      }\n      let warning2 = new Warning(text, opts);\n      this.messages.push(warning2);\n      return warning2;\n    }\n    warnings() {\n      return this.messages.filter((i2) => i2.type === \"warning\");\n    }\n  }\n  result = Result;\n  Result.default = Result;\n  return result;\n}\nvar warnOnce;\nvar hasRequiredWarnOnce;\nfunction requireWarnOnce() {\n  if (hasRequiredWarnOnce) return warnOnce;\n  hasRequiredWarnOnce = 1;\n  let printed = {};\n  warnOnce = function warnOnce2(message) {\n    if (printed[message]) return;\n    printed[message] = true;\n    if (typeof console !== \"undefined\" && console.warn) {\n      console.warn(message);\n    }\n  };\n  return warnOnce;\n}\nvar lazyResult;\nvar hasRequiredLazyResult;\nfunction requireLazyResult() {\n  if (hasRequiredLazyResult) return lazyResult;\n  hasRequiredLazyResult = 1;\n  let Container = requireContainer();\n  let Document2 = requireDocument();\n  let MapGenerator = requireMapGenerator();\n  let parse = requireParse();\n  let Result = requireResult();\n  let Root = requireRoot();\n  let stringify = requireStringify();\n  let { isClean, my } = requireSymbols();\n  let warnOnce2 = requireWarnOnce();\n  const TYPE_TO_CLASS_NAME = {\n    atrule: \"AtRule\",\n    comment: \"Comment\",\n    decl: \"Declaration\",\n    document: \"Document\",\n    root: \"Root\",\n    rule: \"Rule\"\n  };\n  const PLUGIN_PROPS = {\n    AtRule: true,\n    AtRuleExit: true,\n    Comment: true,\n    CommentExit: true,\n    Declaration: true,\n    DeclarationExit: true,\n    Document: true,\n    DocumentExit: true,\n    Once: true,\n    OnceExit: true,\n    postcssPlugin: true,\n    prepare: true,\n    Root: true,\n    RootExit: true,\n    Rule: true,\n    RuleExit: true\n  };\n  const NOT_VISITORS = {\n    Once: true,\n    postcssPlugin: true,\n    prepare: true\n  };\n  const CHILDREN = 0;\n  function isPromise(obj) {\n    return typeof obj === \"object\" && typeof obj.then === \"function\";\n  }\n  function getEvents(node2) {\n    let key = false;\n    let type = TYPE_TO_CLASS_NAME[node2.type];\n    if (node2.type === \"decl\") {\n      key = node2.prop.toLowerCase();\n    } else if (node2.type === \"atrule\") {\n      key = node2.name.toLowerCase();\n    }\n    if (key && node2.append) {\n      return [\n        type,\n        type + \"-\" + key,\n        CHILDREN,\n        type + \"Exit\",\n        type + \"Exit-\" + key\n      ];\n    } else if (key) {\n      return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n    } else if (node2.append) {\n      return [type, CHILDREN, type + \"Exit\"];\n    } else {\n      return [type, type + \"Exit\"];\n    }\n  }\n  function toStack(node2) {\n    let events;\n    if (node2.type === \"document\") {\n      events = [\"Document\", CHILDREN, \"DocumentExit\"];\n    } else if (node2.type === \"root\") {\n      events = [\"Root\", CHILDREN, \"RootExit\"];\n    } else {\n      events = getEvents(node2);\n    }\n    return {\n      eventIndex: 0,\n      events,\n      iterator: 0,\n      node: node2,\n      visitorIndex: 0,\n      visitors: []\n    };\n  }\n  function cleanMarks(node2) {\n    node2[isClean] = false;\n    if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n    return node2;\n  }\n  let postcss2 = {};\n  class LazyResult {\n    get content() {\n      return this.stringify().content;\n    }\n    get css() {\n      return this.stringify().css;\n    }\n    get map() {\n      return this.stringify().map;\n    }\n    get messages() {\n      return this.sync().messages;\n    }\n    get opts() {\n      return this.result.opts;\n    }\n    get processor() {\n      return this.result.processor;\n    }\n    get root() {\n      return this.sync().root;\n    }\n    get [Symbol.toStringTag]() {\n      return \"LazyResult\";\n    }\n    constructor(processor2, css, opts) {\n      this.stringified = false;\n      this.processed = false;\n      let root2;\n      if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n        root2 = cleanMarks(css);\n      } else if (css instanceof LazyResult || css instanceof Result) {\n        root2 = cleanMarks(css.root);\n        if (css.map) {\n          if (typeof opts.map === \"undefined\") opts.map = {};\n          if (!opts.map.inline) opts.map.inline = false;\n          opts.map.prev = css.map;\n        }\n      } else {\n        let parser2 = parse;\n        if (opts.syntax) parser2 = opts.syntax.parse;\n        if (opts.parser) parser2 = opts.parser;\n        if (parser2.parse) parser2 = parser2.parse;\n        try {\n          root2 = parser2(css, opts);\n        } catch (error) {\n          this.processed = true;\n          this.error = error;\n        }\n        if (root2 && !root2[my]) {\n          Container.rebuild(root2);\n        }\n      }\n      this.result = new Result(processor2, root2, opts);\n      this.helpers = { ...postcss2, postcss: postcss2, result: this.result };\n      this.plugins = this.processor.plugins.map((plugin) => {\n        if (typeof plugin === \"object\" && plugin.prepare) {\n          return { ...plugin, ...plugin.prepare(this.result) };\n        } else {\n          return plugin;\n        }\n      });\n    }\n    async() {\n      if (this.error) return Promise.reject(this.error);\n      if (this.processed) return Promise.resolve(this.result);\n      if (!this.processing) {\n        this.processing = this.runAsync();\n      }\n      return this.processing;\n    }\n    catch(onRejected) {\n      return this.async().catch(onRejected);\n    }\n    finally(onFinally) {\n      return this.async().then(onFinally, onFinally);\n    }\n    getAsyncError() {\n      throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n    }\n    handleError(error, node2) {\n      let plugin = this.result.lastPlugin;\n      try {\n        if (node2) node2.addToError(error);\n        this.error = error;\n        if (error.name === \"CssSyntaxError\" && !error.plugin) {\n          error.plugin = plugin.postcssPlugin;\n          error.setMessage();\n        } else if (plugin.postcssVersion) {\n          if (process.env.NODE_ENV !== \"production\") {\n            let pluginName = plugin.postcssPlugin;\n            let pluginVer = plugin.postcssVersion;\n            let runtimeVer = this.result.processor.version;\n            let a2 = pluginVer.split(\".\");\n            let b = runtimeVer.split(\".\");\n            if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n              console.error(\n                \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n              );\n            }\n          }\n        }\n      } catch (err) {\n        if (console && console.error) console.error(err);\n      }\n      return error;\n    }\n    prepareVisitors() {\n      this.listeners = {};\n      let add = (plugin, type, cb) => {\n        if (!this.listeners[type]) this.listeners[type] = [];\n        this.listeners[type].push([plugin, cb]);\n      };\n      for (let plugin of this.plugins) {\n        if (typeof plugin === \"object\") {\n          for (let event in plugin) {\n            if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n              throw new Error(\n                `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n              );\n            }\n            if (!NOT_VISITORS[event]) {\n              if (typeof plugin[event] === \"object\") {\n                for (let filter in plugin[event]) {\n                  if (filter === \"*\") {\n                    add(plugin, event, plugin[event][filter]);\n                  } else {\n                    add(\n                      plugin,\n                      event + \"-\" + filter.toLowerCase(),\n                      plugin[event][filter]\n                    );\n                  }\n                }\n              } else if (typeof plugin[event] === \"function\") {\n                add(plugin, event, plugin[event]);\n              }\n            }\n          }\n        }\n      }\n      this.hasListener = Object.keys(this.listeners).length > 0;\n    }\n    async runAsync() {\n      this.plugin = 0;\n      for (let i2 = 0; i2 < this.plugins.length; i2++) {\n        let plugin = this.plugins[i2];\n        let promise = this.runOnRoot(plugin);\n        if (isPromise(promise)) {\n          try {\n            await promise;\n          } catch (error) {\n            throw this.handleError(error);\n          }\n        }\n      }\n      this.prepareVisitors();\n      if (this.hasListener) {\n        let root2 = this.result.root;\n        while (!root2[isClean]) {\n          root2[isClean] = true;\n          let stack = [toStack(root2)];\n          while (stack.length > 0) {\n            let promise = this.visitTick(stack);\n            if (isPromise(promise)) {\n              try {\n                await promise;\n              } catch (e2) {\n                let node2 = stack[stack.length - 1].node;\n                throw this.handleError(e2, node2);\n              }\n            }\n          }\n        }\n        if (this.listeners.OnceExit) {\n          for (let [plugin, visitor] of this.listeners.OnceExit) {\n            this.result.lastPlugin = plugin;\n            try {\n              if (root2.type === \"document\") {\n                let roots = root2.nodes.map(\n                  (subRoot) => visitor(subRoot, this.helpers)\n                );\n                await Promise.all(roots);\n              } else {\n                await visitor(root2, this.helpers);\n              }\n            } catch (e2) {\n              throw this.handleError(e2);\n            }\n          }\n        }\n      }\n      this.processed = true;\n      return this.stringify();\n    }\n    runOnRoot(plugin) {\n      this.result.lastPlugin = plugin;\n      try {\n        if (typeof plugin === \"object\" && plugin.Once) {\n          if (this.result.root.type === \"document\") {\n            let roots = this.result.root.nodes.map(\n              (root2) => plugin.Once(root2, this.helpers)\n            );\n            if (isPromise(roots[0])) {\n              return Promise.all(roots);\n            }\n            return roots;\n          }\n          return plugin.Once(this.result.root, this.helpers);\n        } else if (typeof plugin === \"function\") {\n          return plugin(this.result.root, this.result);\n        }\n      } catch (error) {\n        throw this.handleError(error);\n      }\n    }\n    stringify() {\n      if (this.error) throw this.error;\n      if (this.stringified) return this.result;\n      this.stringified = true;\n      this.sync();\n      let opts = this.result.opts;\n      let str = stringify;\n      if (opts.syntax) str = opts.syntax.stringify;\n      if (opts.stringifier) str = opts.stringifier;\n      if (str.stringify) str = str.stringify;\n      let map = new MapGenerator(str, this.result.root, this.result.opts);\n      let data = map.generate();\n      this.result.css = data[0];\n      this.result.map = data[1];\n      return this.result;\n    }\n    sync() {\n      if (this.error) throw this.error;\n      if (this.processed) return this.result;\n      this.processed = true;\n      if (this.processing) {\n        throw this.getAsyncError();\n      }\n      for (let plugin of this.plugins) {\n        let promise = this.runOnRoot(plugin);\n        if (isPromise(promise)) {\n          throw this.getAsyncError();\n        }\n      }\n      this.prepareVisitors();\n      if (this.hasListener) {\n        let root2 = this.result.root;\n        while (!root2[isClean]) {\n          root2[isClean] = true;\n          this.walkSync(root2);\n        }\n        if (this.listeners.OnceExit) {\n          if (root2.type === \"document\") {\n            for (let subRoot of root2.nodes) {\n              this.visitSync(this.listeners.OnceExit, subRoot);\n            }\n          } else {\n            this.visitSync(this.listeners.OnceExit, root2);\n          }\n        }\n      }\n      return this.result;\n    }\n    then(onFulfilled, onRejected) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!(\"from\" in this.opts)) {\n          warnOnce2(\n            \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n          );\n        }\n      }\n      return this.async().then(onFulfilled, onRejected);\n    }\n    toString() {\n      return this.css;\n    }\n    visitSync(visitors, node2) {\n      for (let [plugin, visitor] of visitors) {\n        this.result.lastPlugin = plugin;\n        let promise;\n        try {\n          promise = visitor(node2, this.helpers);\n        } catch (e2) {\n          throw this.handleError(e2, node2.proxyOf);\n        }\n        if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n          return true;\n        }\n        if (isPromise(promise)) {\n          throw this.getAsyncError();\n        }\n      }\n    }\n    visitTick(stack) {\n      let visit2 = stack[stack.length - 1];\n      let { node: node2, visitors } = visit2;\n      if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n        stack.pop();\n        return;\n      }\n      if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n        let [plugin, visitor] = visitors[visit2.visitorIndex];\n        visit2.visitorIndex += 1;\n        if (visit2.visitorIndex === visitors.length) {\n          visit2.visitors = [];\n          visit2.visitorIndex = 0;\n        }\n        this.result.lastPlugin = plugin;\n        try {\n          return visitor(node2.toProxy(), this.helpers);\n        } catch (e2) {\n          throw this.handleError(e2, node2);\n        }\n      }\n      if (visit2.iterator !== 0) {\n        let iterator = visit2.iterator;\n        let child;\n        while (child = node2.nodes[node2.indexes[iterator]]) {\n          node2.indexes[iterator] += 1;\n          if (!child[isClean]) {\n            child[isClean] = true;\n            stack.push(toStack(child));\n            return;\n          }\n        }\n        visit2.iterator = 0;\n        delete node2.indexes[iterator];\n      }\n      let events = visit2.events;\n      while (visit2.eventIndex < events.length) {\n        let event = events[visit2.eventIndex];\n        visit2.eventIndex += 1;\n        if (event === CHILDREN) {\n          if (node2.nodes && node2.nodes.length) {\n            node2[isClean] = true;\n            visit2.iterator = node2.getIterator();\n          }\n          return;\n        } else if (this.listeners[event]) {\n          visit2.visitors = this.listeners[event];\n          return;\n        }\n      }\n      stack.pop();\n    }\n    walkSync(node2) {\n      node2[isClean] = true;\n      let events = getEvents(node2);\n      for (let event of events) {\n        if (event === CHILDREN) {\n          if (node2.nodes) {\n            node2.each((child) => {\n              if (!child[isClean]) this.walkSync(child);\n            });\n          }\n        } else {\n          let visitors = this.listeners[event];\n          if (visitors) {\n            if (this.visitSync(visitors, node2.toProxy())) return;\n          }\n        }\n      }\n    }\n    warnings() {\n      return this.sync().warnings();\n    }\n  }\n  LazyResult.registerPostcss = (dependant) => {\n    postcss2 = dependant;\n  };\n  lazyResult = LazyResult;\n  LazyResult.default = LazyResult;\n  Root.registerLazyResult(LazyResult);\n  Document2.registerLazyResult(LazyResult);\n  return lazyResult;\n}\nvar noWorkResult;\nvar hasRequiredNoWorkResult;\nfunction requireNoWorkResult() {\n  if (hasRequiredNoWorkResult) return noWorkResult;\n  hasRequiredNoWorkResult = 1;\n  let MapGenerator = requireMapGenerator();\n  let parse = requireParse();\n  const Result = requireResult();\n  let stringify = requireStringify();\n  let warnOnce2 = requireWarnOnce();\n  class NoWorkResult {\n    get content() {\n      return this.result.css;\n    }\n    get css() {\n      return this.result.css;\n    }\n    get map() {\n      return this.result.map;\n    }\n    get messages() {\n      return [];\n    }\n    get opts() {\n      return this.result.opts;\n    }\n    get processor() {\n      return this.result.processor;\n    }\n    get root() {\n      if (this._root) {\n        return this._root;\n      }\n      let root2;\n      let parser2 = parse;\n      try {\n        root2 = parser2(this._css, this._opts);\n      } catch (error) {\n        this.error = error;\n      }\n      if (this.error) {\n        throw this.error;\n      } else {\n        this._root = root2;\n        return root2;\n      }\n    }\n    get [Symbol.toStringTag]() {\n      return \"NoWorkResult\";\n    }\n    constructor(processor2, css, opts) {\n      css = css.toString();\n      this.stringified = false;\n      this._processor = processor2;\n      this._css = css;\n      this._opts = opts;\n      this._map = void 0;\n      let root2;\n      let str = stringify;\n      this.result = new Result(this._processor, root2, this._opts);\n      this.result.css = css;\n      let self2 = this;\n      Object.defineProperty(this.result, \"root\", {\n        get() {\n          return self2.root;\n        }\n      });\n      let map = new MapGenerator(str, root2, this._opts, css);\n      if (map.isMap()) {\n        let [generatedCSS, generatedMap] = map.generate();\n        if (generatedCSS) {\n          this.result.css = generatedCSS;\n        }\n        if (generatedMap) {\n          this.result.map = generatedMap;\n        }\n      } else {\n        map.clearAnnotation();\n        this.result.css = map.css;\n      }\n    }\n    async() {\n      if (this.error) return Promise.reject(this.error);\n      return Promise.resolve(this.result);\n    }\n    catch(onRejected) {\n      return this.async().catch(onRejected);\n    }\n    finally(onFinally) {\n      return this.async().then(onFinally, onFinally);\n    }\n    sync() {\n      if (this.error) throw this.error;\n      return this.result;\n    }\n    then(onFulfilled, onRejected) {\n      if (process.env.NODE_ENV !== \"production\") {\n        if (!(\"from\" in this._opts)) {\n          warnOnce2(\n            \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n          );\n        }\n      }\n      return this.async().then(onFulfilled, onRejected);\n    }\n    toString() {\n      return this._css;\n    }\n    warnings() {\n      return [];\n    }\n  }\n  noWorkResult = NoWorkResult;\n  NoWorkResult.default = NoWorkResult;\n  return noWorkResult;\n}\nvar processor;\nvar hasRequiredProcessor;\nfunction requireProcessor() {\n  if (hasRequiredProcessor) return processor;\n  hasRequiredProcessor = 1;\n  let Document2 = requireDocument();\n  let LazyResult = requireLazyResult();\n  let NoWorkResult = requireNoWorkResult();\n  let Root = requireRoot();\n  class Processor {\n    constructor(plugins = []) {\n      this.version = \"8.5.6\";\n      this.plugins = this.normalize(plugins);\n    }\n    normalize(plugins) {\n      let normalized = [];\n      for (let i2 of plugins) {\n        if (i2.postcss === true) {\n          i2 = i2();\n        } else if (i2.postcss) {\n          i2 = i2.postcss;\n        }\n        if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n          normalized = normalized.concat(i2.plugins);\n        } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n          normalized.push(i2);\n        } else if (typeof i2 === \"function\") {\n          normalized.push(i2);\n        } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            throw new Error(\n              \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n            );\n          }\n        } else {\n          throw new Error(i2 + \" is not a PostCSS plugin\");\n        }\n      }\n      return normalized;\n    }\n    process(css, opts = {}) {\n      if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n        return new NoWorkResult(this, css, opts);\n      } else {\n        return new LazyResult(this, css, opts);\n      }\n    }\n    use(plugin) {\n      this.plugins = this.plugins.concat(this.normalize([plugin]));\n      return this;\n    }\n  }\n  processor = Processor;\n  Processor.default = Processor;\n  Root.registerProcessor(Processor);\n  Document2.registerProcessor(Processor);\n  return processor;\n}\nvar postcss_1;\nvar hasRequiredPostcss;\nfunction requirePostcss() {\n  if (hasRequiredPostcss) return postcss_1;\n  hasRequiredPostcss = 1;\n  let AtRule = requireAtRule();\n  let Comment = requireComment();\n  let Container = requireContainer();\n  let CssSyntaxError = requireCssSyntaxError();\n  let Declaration = requireDeclaration();\n  let Document2 = requireDocument();\n  let fromJSON = requireFromJSON();\n  let Input = requireInput();\n  let LazyResult = requireLazyResult();\n  let list = requireList();\n  let Node2 = requireNode();\n  let parse = requireParse();\n  let Processor = requireProcessor();\n  let Result = requireResult();\n  let Root = requireRoot();\n  let Rule = requireRule();\n  let stringify = requireStringify();\n  let Warning = requireWarning();\n  function postcss2(...plugins) {\n    if (plugins.length === 1 && Array.isArray(plugins[0])) {\n      plugins = plugins[0];\n    }\n    return new Processor(plugins);\n  }\n  postcss2.plugin = function plugin(name, initializer) {\n    let warningPrinted = false;\n    function creator(...args) {\n      if (console && console.warn && !warningPrinted) {\n        warningPrinted = true;\n        console.warn(\n          name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n        );\n        if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n          console.warn(\n            name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n          );\n        }\n      }\n      let transformer = initializer(...args);\n      transformer.postcssPlugin = name;\n      transformer.postcssVersion = new Processor().version;\n      return transformer;\n    }\n    let cache;\n    Object.defineProperty(creator, \"postcss\", {\n      get() {\n        if (!cache) cache = creator();\n        return cache;\n      }\n    });\n    creator.process = function(css, processOpts, pluginOpts) {\n      return postcss2([creator(pluginOpts)]).process(css, processOpts);\n    };\n    return creator;\n  };\n  postcss2.stringify = stringify;\n  postcss2.parse = parse;\n  postcss2.fromJSON = fromJSON;\n  postcss2.list = list;\n  postcss2.comment = (defaults) => new Comment(defaults);\n  postcss2.atRule = (defaults) => new AtRule(defaults);\n  postcss2.decl = (defaults) => new Declaration(defaults);\n  postcss2.rule = (defaults) => new Rule(defaults);\n  postcss2.root = (defaults) => new Root(defaults);\n  postcss2.document = (defaults) => new Document2(defaults);\n  postcss2.CssSyntaxError = CssSyntaxError;\n  postcss2.Declaration = Declaration;\n  postcss2.Container = Container;\n  postcss2.Processor = Processor;\n  postcss2.Document = Document2;\n  postcss2.Comment = Comment;\n  postcss2.Warning = Warning;\n  postcss2.AtRule = AtRule;\n  postcss2.Result = Result;\n  postcss2.Input = Input;\n  postcss2.Rule = Rule;\n  postcss2.Root = Root;\n  postcss2.Node = Node2;\n  LazyResult.registerPostcss(postcss2);\n  postcss_1 = postcss2;\n  postcss2.default = postcss2;\n  return postcss_1;\n}\nvar postcssExports = requirePostcss();\nconst postcss = /* @__PURE__ */ getDefaultExportFromCjs(postcssExports);\npostcss.stringify;\npostcss.fromJSON;\npostcss.plugin;\npostcss.parse;\npostcss.list;\npostcss.document;\npostcss.comment;\npostcss.atRule;\npostcss.rule;\npostcss.decl;\npostcss.root;\npostcss.CssSyntaxError;\npostcss.Declaration;\npostcss.Container;\npostcss.Processor;\npostcss.Document;\npostcss.Comment;\npostcss.Warning;\npostcss.AtRule;\npostcss.Result;\npostcss.Input;\npostcss.Rule;\npostcss.Root;\npostcss.Node;\nvar NodeType$1 = /* @__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$1 || {});\nfunction parseCSSText(cssText) {\n  const res = {};\n  const listDelimiter = /;(?![^(]*\\))/g;\n  const propertyDelimiter = /:(.+)/;\n  const comment2 = /\\/\\*.*?\\*\\//g;\n  cssText.replace(comment2, \"\").split(listDelimiter).forEach(function(item) {\n    if (item) {\n      const tmp = item.split(propertyDelimiter);\n      tmp.length > 1 && (res[camelize(tmp[0].trim())] = tmp[1].trim());\n    }\n  });\n  return res;\n}\nfunction toCSSText(style) {\n  const properties = [];\n  for (const name in style) {\n    const value = style[name];\n    if (typeof value !== \"string\") continue;\n    const normalizedName = hyphenate(name);\n    properties.push(`${normalizedName}: ${value};`);\n  }\n  return properties.join(\" \");\n}\nconst camelizeRE = /-([a-z])/g;\nconst CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;\nconst camelize = (str) => {\n  if (CUSTOM_PROPERTY_REGEX.test(str)) return str;\n  return str.replace(camelizeRE, (_, c2) => c2 ? c2.toUpperCase() : \"\");\n};\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = (str) => {\n  return str.replace(hyphenateRE, \"-$1\").toLowerCase();\n};\nclass BaseRRNode {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  constructor(..._args) {\n    __publicField2(this, \"parentElement\", null);\n    __publicField2(this, \"parentNode\", null);\n    __publicField2(this, \"ownerDocument\");\n    __publicField2(this, \"firstChild\", null);\n    __publicField2(this, \"lastChild\", null);\n    __publicField2(this, \"previousSibling\", null);\n    __publicField2(this, \"nextSibling\", null);\n    __publicField2(this, \"ELEMENT_NODE\", 1);\n    __publicField2(this, \"TEXT_NODE\", 3);\n    __publicField2(this, \"nodeType\");\n    __publicField2(this, \"nodeName\");\n    __publicField2(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(node2) {\n    if (!(node2 instanceof BaseRRNode)) return false;\n    else if (node2.ownerDocument !== this.ownerDocument) return false;\n    else if (node2 === this) return true;\n    while (node2.parentNode) {\n      if (node2.parentNode === this) return true;\n      node2 = node2.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}\nclass BaseRRDocument extends BaseRRNode {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  constructor(...args) {\n    super(args);\n    __publicField2(this, \"nodeType\", 9);\n    __publicField2(this, \"nodeName\", \"#document\");\n    __publicField2(this, \"compatMode\", \"CSS1Compat\");\n    __publicField2(this, \"RRNodeType\", NodeType$1.Document);\n    __publicField2(this, \"textContent\", null);\n    this.ownerDocument = this;\n  }\n  get documentElement() {\n    return this.childNodes.find(\n      (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HTML\"\n    ) || null;\n  }\n  get body() {\n    var _a2;\n    return ((_a2 = this.documentElement) == null ? void 0 : _a2.childNodes.find(\n      (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"BODY\"\n    )) || null;\n  }\n  get head() {\n    var _a2;\n    return ((_a2 = this.documentElement) == null ? void 0 : _a2.childNodes.find(\n      (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HEAD\"\n    )) || null;\n  }\n  get implementation() {\n    return this;\n  }\n  get firstElementChild() {\n    return this.documentElement;\n  }\n  appendChild(newChild) {\n    const nodeType = newChild.RRNodeType;\n    if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n      if (this.childNodes.some((s2) => s2.RRNodeType === nodeType)) {\n        throw new Error(\n          `RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n        );\n      }\n    }\n    const child = appendChild(this, newChild);\n    child.parentElement = null;\n    return child;\n  }\n  insertBefore(newChild, refChild) {\n    const nodeType = newChild.RRNodeType;\n    if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n      if (this.childNodes.some((s2) => s2.RRNodeType === nodeType)) {\n        throw new Error(\n          `RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n        );\n      }\n    }\n    const child = insertBefore(this, newChild, refChild);\n    child.parentElement = null;\n    return child;\n  }\n  removeChild(node2) {\n    return removeChild(this, node2);\n  }\n  open() {\n    this.firstChild = null;\n    this.lastChild = null;\n  }\n  close() {\n  }\n  /**\n   * Adhoc implementation for setting xhtml namespace in rebuilt.ts (rrweb-snapshot).\n   * There are two lines used this function:\n   * 1. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\"\\>')\n   * 2. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\"\\>')\n   */\n  write(content) {\n    let publicId;\n    if (content === '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">')\n      publicId = \"-//W3C//DTD XHTML 1.0 Transitional//EN\";\n    else if (content === '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">')\n      publicId = \"-//W3C//DTD HTML 4.0 Transitional//EN\";\n    if (publicId) {\n      const doctype = this.createDocumentType(\"html\", publicId, \"\");\n      this.open();\n      this.appendChild(doctype);\n    }\n  }\n  createDocument(_namespace, _qualifiedName, _doctype) {\n    return new BaseRRDocument();\n  }\n  createDocumentType(qualifiedName, publicId, systemId) {\n    const doctype = new BaseRRDocumentType(qualifiedName, publicId, systemId);\n    doctype.ownerDocument = this;\n    return doctype;\n  }\n  createElement(tagName) {\n    const element = new BaseRRElement(tagName);\n    element.ownerDocument = this;\n    return element;\n  }\n  createElementNS(_namespaceURI, qualifiedName) {\n    return this.createElement(qualifiedName);\n  }\n  createTextNode(data) {\n    const text = new BaseRRText(data);\n    text.ownerDocument = this;\n    return text;\n  }\n  createComment(data) {\n    const comment2 = new BaseRRComment(data);\n    comment2.ownerDocument = this;\n    return comment2;\n  }\n  createCDATASection(data) {\n    const CDATASection = new BaseRRCDATASection(data);\n    CDATASection.ownerDocument = this;\n    return CDATASection;\n  }\n  toString() {\n    return \"RRDocument\";\n  }\n}\nclass BaseRRDocumentType extends BaseRRNode {\n  constructor(qualifiedName, publicId, systemId) {\n    super();\n    __publicField2(this, \"nodeType\", 10);\n    __publicField2(this, \"RRNodeType\", NodeType$1.DocumentType);\n    __publicField2(this, \"name\");\n    __publicField2(this, \"publicId\");\n    __publicField2(this, \"systemId\");\n    __publicField2(this, \"textContent\", null);\n    this.name = qualifiedName;\n    this.publicId = publicId;\n    this.systemId = systemId;\n    this.nodeName = qualifiedName;\n  }\n  toString() {\n    return \"RRDocumentType\";\n  }\n}\nclass BaseRRElement extends BaseRRNode {\n  constructor(tagName) {\n    super();\n    __publicField2(this, \"nodeType\", 1);\n    __publicField2(this, \"RRNodeType\", NodeType$1.Element);\n    __publicField2(this, \"tagName\");\n    __publicField2(this, \"attributes\", {});\n    __publicField2(this, \"shadowRoot\", null);\n    __publicField2(this, \"scrollLeft\");\n    __publicField2(this, \"scrollTop\");\n    this.tagName = tagName.toUpperCase();\n    this.nodeName = tagName.toUpperCase();\n  }\n  get textContent() {\n    let result2 = \"\";\n    this.childNodes.forEach((node2) => result2 += node2.textContent);\n    return result2;\n  }\n  set textContent(textContent2) {\n    this.firstChild = null;\n    this.lastChild = null;\n    this.appendChild(this.ownerDocument.createTextNode(textContent2));\n  }\n  get classList() {\n    return new ClassList(\n      this.attributes.class,\n      (newClassName) => {\n        this.attributes.class = newClassName;\n      }\n    );\n  }\n  get id() {\n    return this.attributes.id || \"\";\n  }\n  get className() {\n    return this.attributes.class || \"\";\n  }\n  get style() {\n    const style = this.attributes.style ? parseCSSText(this.attributes.style) : {};\n    const hyphenateRE2 = /\\B([A-Z])/g;\n    style.setProperty = (name, value, priority) => {\n      if (hyphenateRE2.test(name)) return;\n      const normalizedName = camelize(name);\n      if (!value) delete style[normalizedName];\n      else style[normalizedName] = value;\n      if (priority === \"important\") style[normalizedName] += \" !important\";\n      this.attributes.style = toCSSText(style);\n    };\n    style.removeProperty = (name) => {\n      if (hyphenateRE2.test(name)) return \"\";\n      const normalizedName = camelize(name);\n      const value = style[normalizedName] || \"\";\n      delete style[normalizedName];\n      this.attributes.style = toCSSText(style);\n      return value;\n    };\n    return style;\n  }\n  getAttribute(name) {\n    if (this.attributes[name] === void 0) return null;\n    return this.attributes[name];\n  }\n  setAttribute(name, attribute) {\n    this.attributes[name] = attribute;\n  }\n  setAttributeNS(_namespace, qualifiedName, value) {\n    this.setAttribute(qualifiedName, value);\n  }\n  removeAttribute(name) {\n    delete this.attributes[name];\n  }\n  appendChild(newChild) {\n    return appendChild(this, newChild);\n  }\n  insertBefore(newChild, refChild) {\n    return insertBefore(this, newChild, refChild);\n  }\n  removeChild(node2) {\n    return removeChild(this, node2);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(_init) {\n    const shadowRoot2 = this.ownerDocument.createElement(\"SHADOWROOT\");\n    this.shadowRoot = shadowRoot2;\n    return shadowRoot2;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  dispatchEvent(_event) {\n    return true;\n  }\n  toString() {\n    let attributeString = \"\";\n    for (const attribute in this.attributes) {\n      attributeString += `${attribute}=\"${this.attributes[attribute]}\" `;\n    }\n    return `${this.tagName} ${attributeString}`;\n  }\n}\nclass BaseRRMediaElement extends BaseRRElement {\n  constructor() {\n    super(...arguments);\n    __publicField2(this, \"currentTime\");\n    __publicField2(this, \"volume\");\n    __publicField2(this, \"paused\");\n    __publicField2(this, \"muted\");\n    __publicField2(this, \"playbackRate\");\n    __publicField2(this, \"loop\");\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(_init) {\n    throw new Error(\n      `RRDomException: Failed to execute 'attachShadow' on 'RRElement': This RRElement does not support attachShadow`\n    );\n  }\n  play() {\n    this.paused = false;\n  }\n  pause() {\n    this.paused = true;\n  }\n}\nclass BaseRRDialogElement extends BaseRRElement {\n  constructor() {\n    super(...arguments);\n    __publicField2(this, \"tagName\", \"DIALOG\");\n    __publicField2(this, \"nodeName\", \"DIALOG\");\n  }\n  get isModal() {\n    return this.getAttribute(\"rr_open_mode\") === \"modal\";\n  }\n  get open() {\n    return this.getAttribute(\"open\") !== null;\n  }\n  close() {\n    this.removeAttribute(\"open\");\n    this.removeAttribute(\"rr_open_mode\");\n  }\n  show() {\n    this.setAttribute(\"open\", \"\");\n    this.setAttribute(\"rr_open_mode\", \"non-modal\");\n  }\n  showModal() {\n    this.setAttribute(\"open\", \"\");\n    this.setAttribute(\"rr_open_mode\", \"modal\");\n  }\n}\nclass BaseRRText extends BaseRRNode {\n  constructor(data) {\n    super();\n    __publicField2(this, \"nodeType\", 3);\n    __publicField2(this, \"nodeName\", \"#text\");\n    __publicField2(this, \"RRNodeType\", NodeType$1.Text);\n    __publicField2(this, \"data\");\n    this.data = data;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(textContent2) {\n    this.data = textContent2;\n  }\n  toString() {\n    return `RRText text=${JSON.stringify(this.data)}`;\n  }\n}\nclass BaseRRComment extends BaseRRNode {\n  constructor(data) {\n    super();\n    __publicField2(this, \"nodeType\", 8);\n    __publicField2(this, \"nodeName\", \"#comment\");\n    __publicField2(this, \"RRNodeType\", NodeType$1.Comment);\n    __publicField2(this, \"data\");\n    this.data = data;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(textContent2) {\n    this.data = textContent2;\n  }\n  toString() {\n    return `RRComment text=${JSON.stringify(this.data)}`;\n  }\n}\nclass BaseRRCDATASection extends BaseRRNode {\n  constructor(data) {\n    super();\n    __publicField2(this, \"nodeName\", \"#cdata-section\");\n    __publicField2(this, \"nodeType\", 4);\n    __publicField2(this, \"RRNodeType\", NodeType$1.CDATA);\n    __publicField2(this, \"data\");\n    this.data = data;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(textContent2) {\n    this.data = textContent2;\n  }\n  toString() {\n    return `RRCDATASection data=${JSON.stringify(this.data)}`;\n  }\n}\nclass ClassList {\n  constructor(classText, onChange) {\n    __publicField2(this, \"onChange\");\n    __publicField2(this, \"classes\", []);\n    __publicField2(this, \"add\", (...classNames) => {\n      for (const item of classNames) {\n        const className = String(item);\n        if (this.classes.indexOf(className) >= 0) continue;\n        this.classes.push(className);\n      }\n      this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    __publicField2(this, \"remove\", (...classNames) => {\n      this.classes = this.classes.filter(\n        (item) => classNames.indexOf(item) === -1\n      );\n      this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    if (classText) {\n      const classes = classText.trim().split(/\\s+/);\n      this.classes.push(...classes);\n    }\n    this.onChange = onChange;\n  }\n}\nfunction appendChild(parent, newChild) {\n  if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n  if (parent.lastChild) {\n    parent.lastChild.nextSibling = newChild;\n    newChild.previousSibling = parent.lastChild;\n  } else {\n    parent.firstChild = newChild;\n    newChild.previousSibling = null;\n  }\n  parent.lastChild = newChild;\n  newChild.nextSibling = null;\n  newChild.parentNode = parent;\n  newChild.parentElement = parent;\n  newChild.ownerDocument = parent.ownerDocument;\n  return newChild;\n}\nfunction insertBefore(parent, newChild, refChild) {\n  if (!refChild) return appendChild(parent, newChild);\n  if (refChild.parentNode !== parent)\n    throw new Error(\n      \"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\"\n    );\n  if (newChild === refChild) return newChild;\n  if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n  newChild.previousSibling = refChild.previousSibling;\n  refChild.previousSibling = newChild;\n  newChild.nextSibling = refChild;\n  if (newChild.previousSibling) newChild.previousSibling.nextSibling = newChild;\n  else parent.firstChild = newChild;\n  newChild.parentElement = parent;\n  newChild.parentNode = parent;\n  newChild.ownerDocument = parent.ownerDocument;\n  return newChild;\n}\nfunction removeChild(parent, child) {\n  if (child.parentNode !== parent)\n    throw new Error(\n      \"Failed to execute 'removeChild' on 'RRNode': The RRNode to be removed is not a child of this RRNode.\"\n    );\n  if (child.previousSibling)\n    child.previousSibling.nextSibling = child.nextSibling;\n  else parent.firstChild = child.nextSibling;\n  if (child.nextSibling)\n    child.nextSibling.previousSibling = child.previousSibling;\n  else parent.lastChild = child.previousSibling;\n  child.previousSibling = null;\n  child.nextSibling = null;\n  child.parentElement = null;\n  child.parentNode = null;\n  return child;\n}\nvar NodeType$2 = /* @__PURE__ */ ((NodeType2) => {\n  NodeType2[NodeType2[\"PLACEHOLDER\"] = 0] = \"PLACEHOLDER\";\n  NodeType2[NodeType2[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\n  NodeType2[NodeType2[\"ATTRIBUTE_NODE\"] = 2] = \"ATTRIBUTE_NODE\";\n  NodeType2[NodeType2[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\n  NodeType2[NodeType2[\"CDATA_SECTION_NODE\"] = 4] = \"CDATA_SECTION_NODE\";\n  NodeType2[NodeType2[\"ENTITY_REFERENCE_NODE\"] = 5] = \"ENTITY_REFERENCE_NODE\";\n  NodeType2[NodeType2[\"ENTITY_NODE\"] = 6] = \"ENTITY_NODE\";\n  NodeType2[NodeType2[\"PROCESSING_INSTRUCTION_NODE\"] = 7] = \"PROCESSING_INSTRUCTION_NODE\";\n  NodeType2[NodeType2[\"COMMENT_NODE\"] = 8] = \"COMMENT_NODE\";\n  NodeType2[NodeType2[\"DOCUMENT_NODE\"] = 9] = \"DOCUMENT_NODE\";\n  NodeType2[NodeType2[\"DOCUMENT_TYPE_NODE\"] = 10] = \"DOCUMENT_TYPE_NODE\";\n  NodeType2[NodeType2[\"DOCUMENT_FRAGMENT_NODE\"] = 11] = \"DOCUMENT_FRAGMENT_NODE\";\n  return NodeType2;\n})(NodeType$2 || {});\nconst NAMESPACES = {\n  svg: \"http://www.w3.org/2000/svg\",\n  \"xlink:href\": \"http://www.w3.org/1999/xlink\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nconst SVGTagMap = {\n  altglyph: \"altGlyph\",\n  altglyphdef: \"altGlyphDef\",\n  altglyphitem: \"altGlyphItem\",\n  animatecolor: \"animateColor\",\n  animatemotion: \"animateMotion\",\n  animatetransform: \"animateTransform\",\n  clippath: \"clipPath\",\n  feblend: \"feBlend\",\n  fecolormatrix: \"feColorMatrix\",\n  fecomponenttransfer: \"feComponentTransfer\",\n  fecomposite: \"feComposite\",\n  feconvolvematrix: \"feConvolveMatrix\",\n  fediffuselighting: \"feDiffuseLighting\",\n  fedisplacementmap: \"feDisplacementMap\",\n  fedistantlight: \"feDistantLight\",\n  fedropshadow: \"feDropShadow\",\n  feflood: \"feFlood\",\n  fefunca: \"feFuncA\",\n  fefuncb: \"feFuncB\",\n  fefuncg: \"feFuncG\",\n  fefuncr: \"feFuncR\",\n  fegaussianblur: \"feGaussianBlur\",\n  feimage: \"feImage\",\n  femerge: \"feMerge\",\n  femergenode: \"feMergeNode\",\n  femorphology: \"feMorphology\",\n  feoffset: \"feOffset\",\n  fepointlight: \"fePointLight\",\n  fespecularlighting: \"feSpecularLighting\",\n  fespotlight: \"feSpotLight\",\n  fetile: \"feTile\",\n  feturbulence: \"feTurbulence\",\n  foreignobject: \"foreignObject\",\n  glyphref: \"glyphRef\",\n  lineargradient: \"linearGradient\",\n  radialgradient: \"radialGradient\"\n};\nlet createdNodeSet = null;\nfunction diff(oldTree, newTree, replayer, rrnodeMirror = newTree.mirror || newTree.ownerDocument.mirror) {\n  oldTree = diffBeforeUpdatingChildren(\n    oldTree,\n    newTree,\n    replayer,\n    rrnodeMirror\n  );\n  diffChildren(oldTree, newTree, replayer, rrnodeMirror);\n  diffAfterUpdatingChildren(oldTree, newTree, replayer);\n}\nfunction diffBeforeUpdatingChildren(oldTree, newTree, replayer, rrnodeMirror) {\n  var _a2;\n  if (replayer.afterAppend && !createdNodeSet) {\n    createdNodeSet = /* @__PURE__ */ new WeakSet();\n    setTimeout(() => {\n      createdNodeSet = null;\n    }, 0);\n  }\n  if (!sameNodeType(oldTree, newTree)) {\n    const calibratedOldTree = createOrGetNode(\n      newTree,\n      replayer.mirror,\n      rrnodeMirror\n    );\n    (_a2 = oldTree.parentNode) == null ? void 0 : _a2.replaceChild(calibratedOldTree, oldTree);\n    oldTree = calibratedOldTree;\n  }\n  switch (newTree.RRNodeType) {\n    case NodeType$1.Document: {\n      if (!nodeMatching(oldTree, newTree, replayer.mirror, rrnodeMirror)) {\n        const newMeta = rrnodeMirror.getMeta(newTree);\n        if (newMeta) {\n          replayer.mirror.removeNodeFromMap(oldTree);\n          oldTree.close();\n          oldTree.open();\n          replayer.mirror.add(oldTree, newMeta);\n          createdNodeSet == null ? void 0 : createdNodeSet.add(oldTree);\n        }\n      }\n      break;\n    }\n    case NodeType$1.Element: {\n      const oldElement = oldTree;\n      const newRRElement = newTree;\n      switch (newRRElement.tagName) {\n        case \"IFRAME\": {\n          const oldContentDocument = oldTree.contentDocument;\n          if (!oldContentDocument) break;\n          diff(\n            oldContentDocument,\n            newTree.contentDocument,\n            replayer,\n            rrnodeMirror\n          );\n          break;\n        }\n      }\n      if (newRRElement.shadowRoot) {\n        if (!oldElement.shadowRoot) oldElement.attachShadow({ mode: \"open\" });\n        diffChildren(\n          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n          oldElement.shadowRoot,\n          newRRElement.shadowRoot,\n          replayer,\n          rrnodeMirror\n        );\n      }\n      diffProps(oldElement, newRRElement, rrnodeMirror);\n      break;\n    }\n  }\n  return oldTree;\n}\nfunction diffAfterUpdatingChildren(oldTree, newTree, replayer) {\n  var _a2;\n  switch (newTree.RRNodeType) {\n    case NodeType$1.Document: {\n      const scrollData = newTree.scrollData;\n      scrollData && replayer.applyScroll(scrollData, true);\n      break;\n    }\n    case NodeType$1.Element: {\n      const oldElement = oldTree;\n      const newRRElement = newTree;\n      newRRElement.scrollData && replayer.applyScroll(newRRElement.scrollData, true);\n      newRRElement.inputData && replayer.applyInput(newRRElement.inputData);\n      switch (newRRElement.tagName) {\n        case \"AUDIO\":\n        case \"VIDEO\": {\n          const oldMediaElement = oldTree;\n          const newMediaRRElement = newRRElement;\n          if (newMediaRRElement.paused !== void 0)\n            newMediaRRElement.paused ? void oldMediaElement.pause() : void oldMediaElement.play();\n          if (newMediaRRElement.muted !== void 0)\n            oldMediaElement.muted = newMediaRRElement.muted;\n          if (newMediaRRElement.volume !== void 0)\n            oldMediaElement.volume = newMediaRRElement.volume;\n          if (newMediaRRElement.currentTime !== void 0)\n            oldMediaElement.currentTime = newMediaRRElement.currentTime;\n          if (newMediaRRElement.playbackRate !== void 0)\n            oldMediaElement.playbackRate = newMediaRRElement.playbackRate;\n          if (newMediaRRElement.loop !== void 0)\n            oldMediaElement.loop = newMediaRRElement.loop;\n          break;\n        }\n        case \"CANVAS\": {\n          const rrCanvasElement = newTree;\n          if (rrCanvasElement.rr_dataURL !== null) {\n            const image = document.createElement(\"img\");\n            image.onload = () => {\n              const ctx = oldElement.getContext(\"2d\");\n              if (ctx) {\n                ctx.drawImage(image, 0, 0, image.width, image.height);\n              }\n            };\n            image.src = rrCanvasElement.rr_dataURL;\n          }\n          rrCanvasElement.canvasMutations.forEach(\n            (canvasMutation2) => replayer.applyCanvas(\n              canvasMutation2.event,\n              canvasMutation2.mutation,\n              oldTree\n            )\n          );\n          break;\n        }\n        // Props of style elements have to be updated after all children are updated. Otherwise the props can be overwritten by textContent.\n        case \"STYLE\": {\n          const styleSheet = oldElement.sheet;\n          styleSheet && newTree.rules.forEach(\n            (data) => replayer.applyStyleSheetMutation(data, styleSheet)\n          );\n          break;\n        }\n        case \"DIALOG\": {\n          const dialog = oldElement;\n          const rrDialog = newRRElement;\n          const wasOpen = dialog.open;\n          const wasModal = dialog.matches(\"dialog:modal\");\n          const shouldBeOpen = rrDialog.open;\n          const shouldBeModal = rrDialog.isModal;\n          const modalChanged = wasModal !== shouldBeModal;\n          const openChanged = wasOpen !== shouldBeOpen;\n          if (modalChanged || wasOpen && openChanged) dialog.close();\n          if (shouldBeOpen && (openChanged || modalChanged)) {\n            try {\n              if (shouldBeModal) dialog.showModal();\n              else dialog.show();\n            } catch (e2) {\n              console.warn(e2);\n            }\n          }\n          break;\n        }\n      }\n      break;\n    }\n    case NodeType$1.Text:\n    case NodeType$1.Comment:\n    case NodeType$1.CDATA: {\n      if (oldTree.textContent !== newTree.data)\n        oldTree.textContent = newTree.data;\n      break;\n    }\n  }\n  if (createdNodeSet == null ? void 0 : createdNodeSet.has(oldTree)) {\n    createdNodeSet.delete(oldTree);\n    (_a2 = replayer.afterAppend) == null ? void 0 : _a2.call(replayer, oldTree, replayer.mirror.getId(oldTree));\n  }\n}\nfunction diffProps(oldTree, newTree, rrnodeMirror) {\n  const oldAttributes = oldTree.attributes;\n  const newAttributes = newTree.attributes;\n  for (const name in newAttributes) {\n    const newValue = newAttributes[name];\n    const sn = rrnodeMirror.getMeta(newTree);\n    if ((sn == null ? void 0 : sn.isSVG) && NAMESPACES[name])\n      oldTree.setAttributeNS(NAMESPACES[name], name, newValue);\n    else if (newTree.tagName === \"CANVAS\" && name === \"rr_dataURL\") {\n      const image = document.createElement(\"img\");\n      image.src = newValue;\n      image.onload = () => {\n        const ctx = oldTree.getContext(\"2d\");\n        if (ctx) {\n          ctx.drawImage(image, 0, 0, image.width, image.height);\n        }\n      };\n    } else if (newTree.tagName === \"IFRAME\" && name === \"srcdoc\") continue;\n    else {\n      try {\n        oldTree.setAttribute(name, newValue);\n      } catch (err) {\n        console.warn(err);\n      }\n    }\n  }\n  for (const { name } of Array.from(oldAttributes))\n    if (!(name in newAttributes)) oldTree.removeAttribute(name);\n  newTree.scrollLeft && (oldTree.scrollLeft = newTree.scrollLeft);\n  newTree.scrollTop && (oldTree.scrollTop = newTree.scrollTop);\n}\nfunction diffChildren(oldTree, newTree, replayer, rrnodeMirror) {\n  const oldChildren = Array.from(oldTree.childNodes);\n  const newChildren = newTree.childNodes;\n  if (oldChildren.length === 0 && newChildren.length === 0) return;\n  let oldStartIndex = 0, oldEndIndex = oldChildren.length - 1, newStartIndex = 0, newEndIndex = newChildren.length - 1;\n  let oldStartNode = oldChildren[oldStartIndex], oldEndNode = oldChildren[oldEndIndex], newStartNode = newChildren[newStartIndex], newEndNode = newChildren[newEndIndex];\n  let oldIdToIndex = void 0, indexInOld = void 0;\n  while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {\n    if (oldStartNode === void 0) {\n      oldStartNode = oldChildren[++oldStartIndex];\n    } else if (oldEndNode === void 0) {\n      oldEndNode = oldChildren[--oldEndIndex];\n    } else if (\n      // same first node?\n      nodeMatching(oldStartNode, newStartNode, replayer.mirror, rrnodeMirror)\n    ) {\n      oldStartNode = oldChildren[++oldStartIndex];\n      newStartNode = newChildren[++newStartIndex];\n    } else if (\n      // same last node?\n      nodeMatching(oldEndNode, newEndNode, replayer.mirror, rrnodeMirror)\n    ) {\n      oldEndNode = oldChildren[--oldEndIndex];\n      newEndNode = newChildren[--newEndIndex];\n    } else if (\n      // is the first old node the same as the last new node?\n      nodeMatching(oldStartNode, newEndNode, replayer.mirror, rrnodeMirror)\n    ) {\n      try {\n        oldTree.insertBefore(oldStartNode, oldEndNode.nextSibling);\n      } catch (e2) {\n        console.warn(e2);\n      }\n      oldStartNode = oldChildren[++oldStartIndex];\n      newEndNode = newChildren[--newEndIndex];\n    } else if (\n      // is the last old node the same as the first new node?\n      nodeMatching(oldEndNode, newStartNode, replayer.mirror, rrnodeMirror)\n    ) {\n      try {\n        oldTree.insertBefore(oldEndNode, oldStartNode);\n      } catch (e2) {\n        console.warn(e2);\n      }\n      oldEndNode = oldChildren[--oldEndIndex];\n      newStartNode = newChildren[++newStartIndex];\n    } else {\n      if (!oldIdToIndex) {\n        oldIdToIndex = {};\n        for (let i2 = oldStartIndex; i2 <= oldEndIndex; i2++) {\n          const oldChild2 = oldChildren[i2];\n          if (oldChild2 && replayer.mirror.hasNode(oldChild2))\n            oldIdToIndex[replayer.mirror.getId(oldChild2)] = i2;\n        }\n      }\n      indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];\n      const nodeToMove = oldChildren[indexInOld];\n      if (indexInOld !== void 0 && nodeToMove && nodeMatching(nodeToMove, newStartNode, replayer.mirror, rrnodeMirror)) {\n        try {\n          oldTree.insertBefore(nodeToMove, oldStartNode);\n        } catch (e2) {\n          console.warn(e2);\n        }\n        oldChildren[indexInOld] = void 0;\n      } else {\n        const newNode = createOrGetNode(\n          newStartNode,\n          replayer.mirror,\n          rrnodeMirror\n        );\n        if (oldTree.nodeName === \"#document\" && oldStartNode && /**\n        * Special case 1: one document isn't allowed to have two doctype nodes at the same time, so we need to remove the old one first before inserting the new one.\n        * How this case happens: A parent document in the old tree already has a doctype node with an id e.g. #1. A new full snapshot rebuilds the replayer with a new doctype node with another id #2. According to the algorithm, the new doctype node will be inserted before the old one, which is not allowed by the Document standard.\n        */\n        (newNode.nodeType === newNode.DOCUMENT_TYPE_NODE && oldStartNode.nodeType === oldStartNode.DOCUMENT_TYPE_NODE || /**\n        * Special case 2: one document isn't allowed to have two HTMLElements at the same time, so we need to remove the old one first before inserting the new one.\n        * How this case happens: A mounted iframe element has an automatically created HTML element. We should delete it before inserting a serialized one. Otherwise, an error 'Only one element on document allowed' will be thrown.\n        */\n        newNode.nodeType === newNode.ELEMENT_NODE && oldStartNode.nodeType === oldStartNode.ELEMENT_NODE)) {\n          oldTree.removeChild(oldStartNode);\n          replayer.mirror.removeNodeFromMap(oldStartNode);\n          oldStartNode = oldChildren[++oldStartIndex];\n        }\n        try {\n          oldTree.insertBefore(newNode, oldStartNode || null);\n        } catch (e2) {\n          console.warn(e2);\n        }\n      }\n      newStartNode = newChildren[++newStartIndex];\n    }\n  }\n  if (oldStartIndex > oldEndIndex) {\n    const referenceRRNode = newChildren[newEndIndex + 1];\n    let referenceNode = null;\n    if (referenceRRNode)\n      referenceNode = replayer.mirror.getNode(\n        rrnodeMirror.getId(referenceRRNode)\n      );\n    for (; newStartIndex <= newEndIndex; ++newStartIndex) {\n      const newNode = createOrGetNode(\n        newChildren[newStartIndex],\n        replayer.mirror,\n        rrnodeMirror\n      );\n      try {\n        oldTree.insertBefore(newNode, referenceNode);\n      } catch (e2) {\n        console.warn(e2);\n      }\n    }\n  } else if (newStartIndex > newEndIndex) {\n    for (; oldStartIndex <= oldEndIndex; oldStartIndex++) {\n      const node2 = oldChildren[oldStartIndex];\n      if (!node2 || node2.parentNode !== oldTree) continue;\n      try {\n        oldTree.removeChild(node2);\n        replayer.mirror.removeNodeFromMap(node2);\n      } catch (e2) {\n        console.warn(e2);\n      }\n    }\n  }\n  let oldChild = oldTree.firstChild;\n  let newChild = newTree.firstChild;\n  while (oldChild !== null && newChild !== null) {\n    diff(oldChild, newChild, replayer, rrnodeMirror);\n    oldChild = oldChild.nextSibling;\n    newChild = newChild.nextSibling;\n  }\n}\nfunction createOrGetNode(rrNode, domMirror, rrnodeMirror) {\n  const nodeId = rrnodeMirror.getId(rrNode);\n  const sn = rrnodeMirror.getMeta(rrNode);\n  let node2 = null;\n  if (nodeId > -1) node2 = domMirror.getNode(nodeId);\n  if (node2 !== null && sameNodeType(node2, rrNode)) return node2;\n  switch (rrNode.RRNodeType) {\n    case NodeType$1.Document:\n      node2 = new Document();\n      break;\n    case NodeType$1.DocumentType:\n      node2 = document.implementation.createDocumentType(\n        rrNode.name,\n        rrNode.publicId,\n        rrNode.systemId\n      );\n      break;\n    case NodeType$1.Element: {\n      let tagName = rrNode.tagName.toLowerCase();\n      tagName = SVGTagMap[tagName] || tagName;\n      if (sn && \"isSVG\" in sn && (sn == null ? void 0 : sn.isSVG)) {\n        node2 = document.createElementNS(NAMESPACES[\"svg\"], tagName);\n      } else node2 = document.createElement(rrNode.tagName);\n      break;\n    }\n    case NodeType$1.Text:\n      node2 = document.createTextNode(rrNode.data);\n      break;\n    case NodeType$1.Comment:\n      node2 = document.createComment(rrNode.data);\n      break;\n    case NodeType$1.CDATA:\n      node2 = document.createCDATASection(rrNode.data);\n      break;\n  }\n  if (sn) domMirror.add(node2, { ...sn });\n  try {\n    createdNodeSet == null ? void 0 : createdNodeSet.add(node2);\n  } catch (e2) {\n  }\n  return node2;\n}\nfunction sameNodeType(node1, node2) {\n  if (node1.nodeType !== node2.nodeType) return false;\n  return node1.nodeType !== node1.ELEMENT_NODE || node1.tagName.toUpperCase() === node2.tagName;\n}\nfunction nodeMatching(node1, node2, domMirror, rrdomMirror) {\n  const node1Id = domMirror.getId(node1);\n  const node2Id = rrdomMirror.getId(node2);\n  if (node1Id === -1 || node1Id !== node2Id) return false;\n  return sameNodeType(node1, node2);\n}\nclass RRDocument extends BaseRRDocument {\n  constructor(mirror2) {\n    super();\n    __publicField2(this, \"UNSERIALIZED_STARTING_ID\", -2);\n    __publicField2(this, \"_unserializedId\", this.UNSERIALIZED_STARTING_ID);\n    __publicField2(this, \"mirror\", createMirror());\n    __publicField2(this, \"scrollData\", null);\n    if (mirror2) {\n      this.mirror = mirror2;\n    }\n  }\n  /**\n   * Every time the id is used, it will minus 1 automatically to avoid collisions.\n   */\n  get unserializedId() {\n    return this._unserializedId--;\n  }\n  createDocument(_namespace, _qualifiedName, _doctype) {\n    return new RRDocument();\n  }\n  createDocumentType(qualifiedName, publicId, systemId) {\n    const documentTypeNode = new RRDocumentType(\n      qualifiedName,\n      publicId,\n      systemId\n    );\n    documentTypeNode.ownerDocument = this;\n    return documentTypeNode;\n  }\n  createElement(tagName) {\n    const upperTagName = tagName.toUpperCase();\n    let element;\n    switch (upperTagName) {\n      case \"AUDIO\":\n      case \"VIDEO\":\n        element = new RRMediaElement(upperTagName);\n        break;\n      case \"IFRAME\":\n        element = new RRIFrameElement(upperTagName, this.mirror);\n        break;\n      case \"CANVAS\":\n        element = new RRCanvasElement(upperTagName);\n        break;\n      case \"STYLE\":\n        element = new RRStyleElement(upperTagName);\n        break;\n      case \"DIALOG\":\n        element = new RRDialogElement(upperTagName);\n        break;\n      default:\n        element = new RRElement(upperTagName);\n        break;\n    }\n    element.ownerDocument = this;\n    return element;\n  }\n  createComment(data) {\n    const commentNode = new RRComment(data);\n    commentNode.ownerDocument = this;\n    return commentNode;\n  }\n  createCDATASection(data) {\n    const sectionNode = new RRCDATASection(data);\n    sectionNode.ownerDocument = this;\n    return sectionNode;\n  }\n  createTextNode(data) {\n    const textNode = new RRText(data);\n    textNode.ownerDocument = this;\n    return textNode;\n  }\n  destroyTree() {\n    this.firstChild = null;\n    this.lastChild = null;\n    this.mirror.reset();\n  }\n  open() {\n    super.open();\n    this._unserializedId = this.UNSERIALIZED_STARTING_ID;\n  }\n}\nconst RRDocumentType = BaseRRDocumentType;\nclass RRElement extends BaseRRElement {\n  constructor() {\n    super(...arguments);\n    __publicField2(this, \"inputData\", null);\n    __publicField2(this, \"scrollData\", null);\n  }\n}\nclass RRMediaElement extends BaseRRMediaElement {\n}\nclass RRDialogElement extends BaseRRDialogElement {\n}\nclass RRCanvasElement extends RRElement {\n  constructor() {\n    super(...arguments);\n    __publicField2(this, \"rr_dataURL\", null);\n    __publicField2(this, \"canvasMutations\", []);\n  }\n  /**\n   * This is a dummy implementation to distinguish RRCanvasElement from real HTMLCanvasElement.\n   */\n  getContext() {\n    return null;\n  }\n}\nclass RRStyleElement extends RRElement {\n  constructor() {\n    super(...arguments);\n    __publicField2(this, \"rules\", []);\n  }\n}\nclass RRIFrameElement extends RRElement {\n  constructor(upperTagName, mirror2) {\n    super(upperTagName);\n    __publicField2(this, \"contentDocument\", new RRDocument());\n    this.contentDocument.mirror = mirror2;\n  }\n}\nconst RRText = BaseRRText;\nconst RRComment = BaseRRComment;\nconst RRCDATASection = BaseRRCDATASection;\nfunction getValidTagName(element) {\n  if (element instanceof HTMLFormElement) {\n    return \"FORM\";\n  }\n  return element.tagName.toUpperCase();\n}\nfunction buildFromNode(node2, rrdom, domMirror, parentRRNode) {\n  let rrNode;\n  switch (node2.nodeType) {\n    case NodeType$2.DOCUMENT_NODE:\n      if (parentRRNode && parentRRNode.nodeName === \"IFRAME\")\n        rrNode = parentRRNode.contentDocument;\n      else {\n        rrNode = rrdom;\n        rrNode.compatMode = node2.compatMode;\n      }\n      break;\n    case NodeType$2.DOCUMENT_TYPE_NODE: {\n      const documentType = node2;\n      rrNode = rrdom.createDocumentType(\n        documentType.name,\n        documentType.publicId,\n        documentType.systemId\n      );\n      break;\n    }\n    case NodeType$2.ELEMENT_NODE: {\n      const elementNode = node2;\n      const tagName = getValidTagName(elementNode);\n      rrNode = rrdom.createElement(tagName);\n      const rrElement = rrNode;\n      for (const { name, value } of Array.from(elementNode.attributes)) {\n        rrElement.attributes[name] = value;\n      }\n      elementNode.scrollLeft && (rrElement.scrollLeft = elementNode.scrollLeft);\n      elementNode.scrollTop && (rrElement.scrollTop = elementNode.scrollTop);\n      break;\n    }\n    case NodeType$2.TEXT_NODE:\n      rrNode = rrdom.createTextNode(node2.textContent || \"\");\n      break;\n    case NodeType$2.CDATA_SECTION_NODE:\n      rrNode = rrdom.createCDATASection(node2.data);\n      break;\n    case NodeType$2.COMMENT_NODE:\n      rrNode = rrdom.createComment(node2.textContent || \"\");\n      break;\n    // if node is a shadow root\n    case NodeType$2.DOCUMENT_FRAGMENT_NODE:\n      rrNode = parentRRNode.attachShadow({ mode: \"open\" });\n      break;\n    default:\n      return null;\n  }\n  let sn = domMirror.getMeta(node2);\n  if (rrdom instanceof RRDocument) {\n    if (!sn) {\n      sn = getDefaultSN(rrNode, rrdom.unserializedId);\n      domMirror.add(node2, sn);\n    }\n    rrdom.mirror.add(rrNode, { ...sn });\n  }\n  return rrNode;\n}\nfunction buildFromDom(dom, domMirror = createMirror$1(), rrdom = new RRDocument()) {\n  function walk2(node2, parentRRNode) {\n    const rrNode = buildFromNode(node2, rrdom, domMirror, parentRRNode);\n    if (rrNode === null) return;\n    if (\n      // if the parentRRNode isn't a RRIFrameElement\n      (parentRRNode == null ? void 0 : parentRRNode.nodeName) !== \"IFRAME\" && // if node isn't a shadow root\n      node2.nodeType !== NodeType$2.DOCUMENT_FRAGMENT_NODE\n    ) {\n      parentRRNode == null ? void 0 : parentRRNode.appendChild(rrNode);\n      rrNode.parentNode = parentRRNode;\n      rrNode.parentElement = parentRRNode;\n    }\n    if (node2.nodeName === \"IFRAME\") {\n      const iframeDoc = node2.contentDocument;\n      iframeDoc && walk2(iframeDoc, rrNode);\n    } else if (node2.nodeType === NodeType$2.DOCUMENT_NODE || node2.nodeType === NodeType$2.ELEMENT_NODE || node2.nodeType === NodeType$2.DOCUMENT_FRAGMENT_NODE) {\n      if (node2.nodeType === NodeType$2.ELEMENT_NODE && node2.shadowRoot)\n        walk2(node2.shadowRoot, rrNode);\n      node2.childNodes.forEach((childNode) => walk2(childNode, rrNode));\n    }\n  }\n  walk2(dom, null);\n  return rrdom;\n}\nfunction createMirror() {\n  return new Mirror22();\n}\nclass Mirror22 {\n  constructor() {\n    __publicField2(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField2(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n2) {\n    var _a2;\n    if (!n2) return -1;\n    const id = (_a2 = this.getMeta(n2)) == 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(n2) {\n    return this.nodeMetaMap.get(n2) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n2) {\n    const id = this.getId(n2);\n    this.idNodeMap.delete(id);\n    if (n2.childNodes) {\n      n2.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node2) {\n    return this.nodeMetaMap.has(node2);\n  }\n  add(n2, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n2);\n    this.nodeMetaMap.set(n2, meta);\n  }\n  replace(id, n2) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n2, meta);\n    }\n    this.idNodeMap.set(id, n2);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction getDefaultSN(node2, id) {\n  switch (node2.RRNodeType) {\n    case NodeType$1.Document:\n      return {\n        id,\n        type: node2.RRNodeType,\n        childNodes: []\n      };\n    case NodeType$1.DocumentType: {\n      const doctype = node2;\n      return {\n        id,\n        type: node2.RRNodeType,\n        name: doctype.name,\n        publicId: doctype.publicId,\n        systemId: doctype.systemId\n      };\n    }\n    case NodeType$1.Element:\n      return {\n        id,\n        type: node2.RRNodeType,\n        tagName: node2.tagName.toLowerCase(),\n        // In rrweb data, all tagNames are lowercase.\n        attributes: {},\n        childNodes: []\n      };\n    case NodeType$1.Text:\n      return {\n        id,\n        type: node2.RRNodeType,\n        textContent: node2.textContent || \"\"\n      };\n    case NodeType$1.Comment:\n      return {\n        id,\n        type: node2.RRNodeType,\n        textContent: node2.textContent || \"\"\n      };\n    case NodeType$1.CDATA:\n      return {\n        id,\n        type: node2.RRNodeType,\n        textContent: \"\"\n      };\n  }\n}\nconst testableAccessors = {\n  Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\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 = {};\nfunction angularZoneUnpatchedAlternative(key) {\n  var _a2, _b;\n  const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);\n  if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {\n    return globalThis[angularUnpatchedVersionSymbol];\n  } else {\n    return void 0;\n  }\n}\nfunction getUntaintedPrototype(key) {\n  if (untaintedBasePrototype[key])\n    return untaintedBasePrototype[key];\n  const candidate = angularZoneUnpatchedAlternative(key) || globalThis[key];\n  const defaultPrototype = candidate.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) {\n    untaintedBasePrototype[key] = candidate.prototype;\n    return candidate.prototype;\n  }\n  try {\n    const iframeEl = document.createElement(\"iframe\");\n    document.body.appendChild(iframeEl);\n    const win = iframeEl.contentWindow;\n    if (!win) return candidate.prototype;\n    const untaintedObject = win[key].prototype;\n    document.body.removeChild(iframeEl);\n    if (!untaintedObject) return defaultPrototype;\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 childNodes(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n  return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n  return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n  if (!n2 || !(\"host\" in n2)) return null;\n  return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n  return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n  if (!n2 || !(\"shadowRoot\" in n2)) return null;\n  return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n  return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n  return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n  return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n  childNodes,\n  parentNode,\n  parentElement,\n  textContent,\n  contains,\n  getRootNode,\n  host,\n  styleSheets,\n  shadowRoot,\n  querySelector,\n  querySelectorAll,\n  mutationObserver: mutationObserverCtor\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 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}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n  nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\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(node2) {\n  if (!node2) {\n    return null;\n  }\n  const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n  return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n  if (!node2) {\n    return false;\n  }\n  const el = closestElementOfNode(node2);\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 (e2) {\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(n2, mirror2) {\n  return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n  if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n    return true;\n  }\n  return mirror2.getId(n2) === 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$1(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 queueToResolveTrees(queue) {\n  const queueNodeMap = {};\n  const putIntoMap = (m, parent) => {\n    const nodeInTree = {\n      value: m,\n      parent,\n      children: []\n    };\n    queueNodeMap[m.node.id] = nodeInTree;\n    return nodeInTree;\n  };\n  const queueNodeTrees = [];\n  for (const mutation of queue) {\n    const { nextId, parentId } = mutation;\n    if (nextId && nextId in queueNodeMap) {\n      const nextInTree = queueNodeMap[nextId];\n      if (nextInTree.parent) {\n        const idx = nextInTree.parent.children.indexOf(nextInTree);\n        nextInTree.parent.children.splice(\n          idx,\n          0,\n          putIntoMap(mutation, nextInTree.parent)\n        );\n      } else {\n        const idx = queueNodeTrees.indexOf(nextInTree);\n        queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\n      }\n      continue;\n    }\n    if (parentId in queueNodeMap) {\n      const parentInTree = queueNodeMap[parentId];\n      parentInTree.children.push(putIntoMap(mutation, parentInTree));\n      continue;\n    }\n    queueNodeTrees.push(putIntoMap(mutation, null));\n  }\n  return queueNodeTrees;\n}\nfunction iterateResolveTree(tree, cb) {\n  cb(tree.value);\n  for (let i2 = tree.children.length - 1; i2 >= 0; i2--) {\n    iterateResolveTree(tree.children[i2], cb);\n  }\n}\nfunction isSerializedIframe(n2, mirror2) {\n  return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n  return Boolean(\n    n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n  );\n}\nfunction getBaseDimension(node2, rootIframe) {\n  var _a2, _b;\n  const frameElement = (_b = (_a2 = node2.ownerDocument) == null ? void 0 : _a2.defaultView) == null ? void 0 : _b.frameElement;\n  if (!frameElement || frameElement === rootIframe) {\n    return {\n      x: 0,\n      y: 0,\n      relativeScale: 1,\n      absoluteScale: 1\n    };\n  }\n  const frameDimension = frameElement.getBoundingClientRect();\n  const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n  const relativeScale = frameDimension.height / frameElement.clientHeight;\n  return {\n    x: frameDimension.x * frameBaseDimension.relativeScale + frameBaseDimension.x,\n    y: frameDimension.y * frameBaseDimension.relativeScale + frameBaseDimension.y,\n    relativeScale,\n    absoluteScale: frameBaseDimension.absoluteScale * relativeScale\n  };\n}\nfunction hasShadowRoot(n2) {\n  if (!n2) return false;\n  if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n    return Boolean(n2.shadowRoot);\n  }\n  return Boolean(index.shadowRoot(n2));\n}\nfunction getNestedRule(rules2, position) {\n  const rule2 = rules2[position[0]];\n  if (position.length === 1) {\n    return rule2;\n  } else {\n    return getNestedRule(\n      rule2.cssRules[position[1]].cssRules,\n      position.slice(2)\n    );\n  }\n}\nfunction getPositionsAndIndex(nestedIndex) {\n  const positions = [...nestedIndex];\n  const index2 = positions.pop();\n  return { positions, index: index2 };\n}\nfunction uniqueTextMutations(mutations) {\n  const idSet = /* @__PURE__ */ new Set();\n  const uniqueMutations = [];\n  for (let i2 = mutations.length; i2--; ) {\n    const mutation = mutations[i2];\n    if (!idSet.has(mutation.id)) {\n      uniqueMutations.push(mutation);\n      idSet.add(mutation.id);\n    }\n  }\n  return uniqueMutations;\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(n2) {\n  var _a2;\n  let shadowHost = null;\n  if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n    shadowHost = index.host(index.getRootNode(n2));\n  return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n  let rootShadowHost = n2;\n  let shadowHost;\n  while (shadowHost = getShadowHost(rootShadowHost))\n    rootShadowHost = shadowHost;\n  return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n  const doc = n2.ownerDocument;\n  if (!doc) return false;\n  const shadowHost = getRootShadowHost(n2);\n  return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n  const doc = n2.ownerDocument;\n  if (!doc) return false;\n  return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nconst utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  StyleSheetMirror,\n  get _mirror() {\n    return _mirror;\n  },\n  closestElementOfNode,\n  getBaseDimension,\n  getNestedRule,\n  getPositionsAndIndex,\n  getRootShadowHost,\n  getShadowHost,\n  getWindowHeight,\n  getWindowScroll,\n  getWindowWidth,\n  hasShadowRoot,\n  hookSetter,\n  inDom,\n  isAncestorRemoved,\n  isBlocked,\n  isIgnored,\n  isSerialized,\n  isSerializedIframe,\n  isSerializedStylesheet,\n  iterateResolveTree,\n  legacy_isTouchEvent,\n  get nowTimestamp() {\n    return nowTimestamp;\n  },\n  on,\n  patch,\n  polyfill: polyfill$1,\n  queueToResolveTrees,\n  shadowHostInDom,\n  throttle,\n  uniqueTextMutations\n}, Symbol.toStringTag, { value: \"Module\" }));\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  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 ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n  ReplayerEvents2[\"Start\"] = \"start\";\n  ReplayerEvents2[\"Pause\"] = \"pause\";\n  ReplayerEvents2[\"Resume\"] = \"resume\";\n  ReplayerEvents2[\"Resize\"] = \"resize\";\n  ReplayerEvents2[\"Finish\"] = \"finish\";\n  ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n  ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n  ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n  ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n  ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n  ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n  ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n  ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n  ReplayerEvents2[\"Flush\"] = \"flush\";\n  ReplayerEvents2[\"StateChange\"] = \"state-change\";\n  ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n  ReplayerEvents2[\"Destroy\"] = \"destroy\";\n  ReplayerEvents2[\"SeekStart\"] = \"seek-start\";\n  ReplayerEvents2[\"SeekEnd\"] = \"seek-end\";\n  return ReplayerEvents2;\n})(ReplayerEvents || {});\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 || {});\nfunction isNodeInLinkedList(n2) {\n  return \"__ln\" in n2;\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(n2) {\n    const node2 = {\n      value: n2,\n      previous: null,\n      next: null\n    };\n    n2.__ln = node2;\n    if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n      const current = n2.previousSibling.__ln.next;\n      node2.next = current;\n      node2.previous = n2.previousSibling.__ln;\n      n2.previousSibling.__ln.next = node2;\n      if (current) {\n        current.previous = node2;\n      }\n    } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n      const current = n2.nextSibling.__ln.previous;\n      node2.previous = current;\n      node2.next = n2.nextSibling.__ln;\n      n2.nextSibling.__ln.previous = node2;\n      if (current) {\n        current.next = node2;\n      }\n    } else {\n      if (this.head) {\n        this.head.previous = node2;\n      }\n      node2.next = this.head;\n      this.head = node2;\n    }\n    if (node2.next === null) {\n      this.tail = node2;\n    }\n    this.length++;\n  }\n  removeNode(n2) {\n    const current = n2.__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 (n2.__ln) {\n      delete n2.__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, \"maskAttributeFn\");\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 = (n2) => {\n        let ns = n2;\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 = (n2) => {\n        const parent = index.parentNode(n2);\n        if (!parent || !inDom(n2)) {\n          return;\n        }\n        let cssCaptured = false;\n        if (n2.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(n2)) : this.mirror.getId(parent);\n        const nextId = getNextId(n2);\n        if (parentId === -1 || nextId === -1) {\n          return addList.addNode(n2);\n        }\n        const sn = serializeNodeWithId(n2, {\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(n2)) {\n              this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), 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 n2 of this.movedSet) {\n        if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n          continue;\n        }\n        pushAdd(n2);\n      }\n      for (const n2 of this.addedSet) {\n        if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n          pushAdd(n2);\n        } else if (isAncestorInSet(this.movedSet, n2)) {\n          pushAdd(n2);\n        } else {\n          this.droppedSet.add(n2);\n        }\n      }\n      let candidate = null;\n      while (addList.length) {\n        let node2 = 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            node2 = candidate;\n          }\n        }\n        if (!node2) {\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                node2 = _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                    node2 = _node;\n                    break;\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (!node2) {\n          while (addList.head) {\n            addList.removeNode(addList.head.value);\n          }\n          break;\n        }\n        candidate = node2.previous;\n        addList.removeNode(node2.value);\n        pushAdd(node2.value);\n      }\n      const payload = {\n        texts: this.texts.map((text) => {\n          const n2 = text.node;\n          const parent = index.parentNode(n2);\n          if (parent && parent.tagName === \"TEXTAREA\") {\n            this.genTextAreaValueMutation(parent);\n          }\n          return {\n            id: this.mirror.getId(n2),\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 (this.maskAttributeFn && typeof item.attributes[attributeName] === \"string\") {\n              const maskedValue = this.maskAttributeFn(\n                attributeName,\n                item.attributes[attributeName],\n                target\n              );\n              if (maskedValue !== null) {\n                item.attributes[attributeName] = maskedValue;\n              } else {\n                delete item.attributes[attributeName];\n              }\n            }\n            if (attributeName === \"style\") {\n              if (!this.unattachedDoc) {\n                try {\n                  this.unattachedDoc = document.implementation.createHTMLDocument();\n                } catch (e2) {\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((n2) => this.genAdds(n2, m.target));\n          m.removedNodes.forEach((n2) => {\n            const nodeId = this.mirror.getId(n2);\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(n2, this.mirror, this.slimDOMOptions)) {\n              return;\n            }\n            if (!isSerialized(n2, this.mirror)) {\n              this.mapRemoves.push(n2);\n              return;\n            }\n            if (this.addedSet.has(n2)) {\n              deepDelete(this.addedSet, n2);\n              this.droppedSet.add(n2);\n            } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n            else if (isAncestorRemoved(m.target, this.mirror)) ;\n            else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n              deepDelete(this.movedSet, n2);\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(n2, this.removesSubTreeCache);\n            }\n            this.mapRemoves.push(n2);\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\", (n2, target) => {\n      if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n      if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n      if (this.mirror.hasNode(n2)) {\n        if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n          return;\n        }\n        this.movedSet.add(n2);\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(n2), targetId)] = true;\n        }\n      } else {\n        this.addedSet.add(n2);\n        this.droppedSet.delete(n2);\n      }\n      if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n        index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n        if (hasShadowRoot(n2)) {\n          index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n            this.processedNodeManager.add(childN, this);\n            this.genAdds(childN, n2);\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      \"maskAttributeFn\",\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, n2) {\n  addsSet.delete(n2);\n  index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n  const queue = [n2];\n  while (queue.length) {\n    const next = queue.pop();\n    if (cache.has(next)) continue;\n    cache.add(next);\n    index.childNodes(next).forEach((n22) => queue.push(n22));\n  }\n  return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n  if (removes.size === 0) return false;\n  return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n  const node2 = index.parentNode(n2);\n  if (!node2) return false;\n  return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n  if (set.size === 0) return false;\n  return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n  const parent = index.parentNode(n2);\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};\nfunction externalFunctionWrapper(func) {\n  return (...args) => {\n    try {\n      return func(...args);\n    } catch (error) {\n      try {\n        error._external_ = true;\n      } catch {\n      }\n      throw error;\n    }\n  };\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 observer = new (mutationObserverCtor())(\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  return observer;\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 e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n      if (!e2) {\n        return;\n      }\n      const id = mirror2.getId(target);\n      const { clientX, clientY } = e2;\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, v2) {\n    const lastInputValue = lastInputValueMap.get(target);\n    if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n      lastInputValueMap.set(target, v2);\n      const id = mirror2.getId(target);\n      callbackWrapper(inputCb)({\n        ...v2,\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(rule2) {\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 rules2 = Array.from(\n        childRule.parentRule.cssRules\n      );\n      const index2 = rules2.indexOf(childRule);\n      pos.unshift(index2);\n    } else if (childRule.parentStyleSheet) {\n      const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n      const index2 = rules2.indexOf(childRule);\n      pos.unshift(index2);\n    }\n    return pos;\n  }\n  return recurse(rule2, 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 [rule2, 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: rule2, index: index2 }]\n          });\n        }\n        return externalFunctionWrapper(\n          () => target.apply(thisArg, argumentsList)\n        )();\n      }\n    )\n  });\n  win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n    const rule2 = `${selector} { ${styleBlock} }`;\n    return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, 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 externalFunctionWrapper(\n          () => target.apply(thisArg, argumentsList)\n        )();\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 [rule2, 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: rule2,\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 result2 = (_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 (e2) {\n        }\n      }\n      return result2;\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 FontFace2(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 i2 = 0; i2 < count; i2++) {\n      const range = selection.getRangeAt(i2);\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 (e2) {\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(o2, 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  } = o2;\n  o2.mutationCb = (...p) => {\n    if (hooks.mutation) {\n      hooks.mutation(...p);\n    }\n    mutationCb(...p);\n  };\n  o2.mousemoveCb = (...p) => {\n    if (hooks.mousemove) {\n      hooks.mousemove(...p);\n    }\n    mousemoveCb(...p);\n  };\n  o2.mouseInteractionCb = (...p) => {\n    if (hooks.mouseInteraction) {\n      hooks.mouseInteraction(...p);\n    }\n    mouseInteractionCb(...p);\n  };\n  o2.scrollCb = (...p) => {\n    if (hooks.scroll) {\n      hooks.scroll(...p);\n    }\n    scrollCb(...p);\n  };\n  o2.viewportResizeCb = (...p) => {\n    if (hooks.viewportResize) {\n      hooks.viewportResize(...p);\n    }\n    viewportResizeCb(...p);\n  };\n  o2.inputCb = (...p) => {\n    if (hooks.input) {\n      hooks.input(...p);\n    }\n    inputCb(...p);\n  };\n  o2.mediaInteractionCb = (...p) => {\n    if (hooks.mediaInteaction) {\n      hooks.mediaInteaction(...p);\n    }\n    mediaInteractionCb(...p);\n  };\n  o2.styleSheetRuleCb = (...p) => {\n    if (hooks.styleSheetRule) {\n      hooks.styleSheetRule(...p);\n    }\n    styleSheetRuleCb(...p);\n  };\n  o2.styleDeclarationCb = (...p) => {\n    if (hooks.styleDeclaration) {\n      hooks.styleDeclaration(...p);\n    }\n    styleDeclarationCb(...p);\n  };\n  o2.canvasMutationCb = (...p) => {\n    if (hooks.canvasMutation) {\n      hooks.canvasMutation(...p);\n    }\n    canvasMutationCb(...p);\n  };\n  o2.fontCb = (...p) => {\n    if (hooks.font) {\n      hooks.font(...p);\n    }\n    fontCb(...p);\n  };\n  o2.selectionCb = (...p) => {\n    if (hooks.selection) {\n      hooks.selection(...p);\n    }\n    selectionCb(...p);\n  };\n  o2.customElementCb = (...c2) => {\n    if (hooks.customElement) {\n      hooks.customElement(...c2);\n    }\n    customElementCb(...c2);\n  };\n}\nfunction initObservers(o2, hooks = {}) {\n  const currentWindow = o2.doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n    };\n  }\n  mergeHooks(o2, hooks);\n  let mutationObserver;\n  if (o2.recordDOM) {\n    mutationObserver = initMutationObserver(o2, o2.doc);\n  }\n  const mousemoveHandler = initMoveObserver(o2);\n  const mouseInteractionHandler = initMouseInteractionObserver(o2);\n  const scrollHandler = initScrollObserver(o2);\n  const viewportResizeHandler = initViewportResizeObserver(o2, {\n    win: currentWindow\n  });\n  const inputHandler = initInputObserver(o2);\n  const mediaInteractionHandler = initMediaInteractionObserver(o2);\n  let styleSheetObserver = () => {\n  };\n  let adoptedStyleSheetObserver = () => {\n  };\n  let styleDeclarationObserver = () => {\n  };\n  let fontObserver = () => {\n  };\n  if (o2.recordDOM) {\n    styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n    adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n    styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n      win: currentWindow\n    });\n    if (o2.collectFonts) {\n      fontObserver = initFontObserver(o2);\n    }\n  }\n  const selectionObserver = initSelectionObserver(o2);\n  const customElementObserver = initCustomElementObserver(o2);\n  const pluginHandlers = [];\n  for (const plugin of o2.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    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, e2) {\n    var _a2;\n    switch (e2.type) {\n      case EventType.FullSnapshot: {\n        this.crossOriginIframeMirror.reset(iframeEl);\n        this.crossOriginIframeStyleMirror.reset(iframeEl);\n        this.replaceIdOnNode(e2.data.node, iframeEl);\n        const rootId = e2.data.node.id;\n        this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n        this.patchRootIdOnNode(e2.data.node, rootId);\n        return {\n          timestamp: e2.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: e2.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 e2;\n      }\n      case EventType.Custom: {\n        this.replaceIds(\n          e2.data.payload,\n          iframeEl,\n          [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n        );\n        return e2;\n      }\n      case EventType.IncrementalSnapshot: {\n        switch (e2.data.source) {\n          case IncrementalSource.Mutation: {\n            e2.data.adds.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\n                \"parentId\",\n                \"nextId\",\n                \"previousId\"\n              ]);\n              this.replaceIdOnNode(n2.node, iframeEl);\n              const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n              rootId && this.patchRootIdOnNode(n2.node, rootId);\n            });\n            e2.data.removes.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n            });\n            e2.data.attributes.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"id\"]);\n            });\n            e2.data.texts.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"id\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.Drag:\n          case IncrementalSource.TouchMove:\n          case IncrementalSource.MouseMove: {\n            e2.data.positions.forEach((p) => {\n              this.replaceIds(p, iframeEl, [\"id\"]);\n            });\n            return e2;\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(e2.data, iframeEl, [\"id\"]);\n            return e2;\n          }\n          case IncrementalSource.StyleSheetRule:\n          case IncrementalSource.StyleDeclaration: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n            return e2;\n          }\n          case IncrementalSource.Font: {\n            return e2;\n          }\n          case IncrementalSource.Selection: {\n            e2.data.ranges.forEach((range) => {\n              this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.AdoptedStyleSheet: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n            (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n              this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n            });\n            return e2;\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(node2, iframeEl) {\n    this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n    if (\"childNodes\" in node2) {\n      node2.childNodes.forEach((child) => {\n        this.replaceIdOnNode(child, iframeEl);\n      });\n    }\n  }\n  patchRootIdOnNode(node2, rootId) {\n    if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n    if (\"childNodes\" in node2) {\n      node2.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 (e2) {\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$1 = 0; i$1 < chars.length; i$1++) {\n  lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar 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};\nvar decode = function(base64) {\n  var bufferLength = base64.length * 0.75, len = base64.length, i2, p = 0, encoded1, encoded2, encoded3, encoded4;\n  if (base64[base64.length - 1] === \"=\") {\n    bufferLength--;\n    if (base64[base64.length - 2] === \"=\") {\n      bufferLength--;\n    }\n  }\n  var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n  for (i2 = 0; i2 < len; i2 += 4) {\n    encoded1 = lookup[base64.charCodeAt(i2)];\n    encoded2 = lookup[base64.charCodeAt(i2 + 1)];\n    encoded3 = lookup[base64.charCodeAt(i2 + 2)];\n    encoded4 = lookup[base64.charCodeAt(i2 + 3)];\n    bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n    bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n    bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n  }\n  return arraybuffer;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(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$1(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(v2) {\n            cb(this.canvas, {\n              type: CanvasContext[\"2D\"],\n              property: prop,\n              args: [v2],\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 result2 = original.apply(this, args);\n            saveWebGLVar(result2, 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 result2;\n          };\n        }\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter(prototype, prop, {\n        set(v2) {\n          cb(this.canvas, {\n            type,\n            property: prop,\n            args: [v2],\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  handlers.push(\n    ...patchGLPrototype(\n      win.WebGLRenderingContext.prototype,\n      CanvasContext.WebGL,\n      cb,\n      blockClass,\n      blockSelector,\n      win\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 (e2) {\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 = (e2) => {\n      const { id } = e2.data;\n      snapshotInProgressMap.set(id, false);\n      if (!(\"base64\" in e2.data)) return;\n      const { base64, type, width, height } = e2.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        let rules2 = [];\n        try {\n          rules2 = Array.from(sheet.cssRules, (r2, index2) => ({\n            rule: stringifyRule(r2, sheet.href),\n            index: index2\n          }));\n        } catch (e2) {\n          if (e2 instanceof DOMException && e2.name === \"SecurityError\") ;\n          else {\n            throw e2;\n          }\n        }\n        styles.push({ styleId, rules: rules2 });\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(node2, thisBuffer) {\n    const buffers = this.nodeMap.get(node2);\n    return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n  }\n  add(node2, 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(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n  }\n  destroy() {\n  }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\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$2();\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    maskAttributeFn,\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    captureAdoptedStyleSheets = true,\n    plugins,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n    errorHandler: errorHandler2,\n    applyBackgroundColorToBlockedElements = false\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 (e2) {\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 = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\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  } : _slimDOMOptions ? _slimDOMOptions : {};\n  polyfill$1();\n  let lastFullSnapshotEvent;\n  let incrementalSnapshotCount = 0;\n  const eventProcessor = (e2) => {\n    for (const plugin of plugins || []) {\n      if (plugin.eventProcessor) {\n        e2 = plugin.eventProcessor(e2);\n      }\n    }\n    if (packFn && // Disable packing events which will be emitted to parent frames.\n    !passEmitsToParent) {\n      e2 = packFn(e2);\n    }\n    return e2;\n  };\n  wrappedEmit = (r2, isCheckout) => {\n    var _a2;\n    const e2 = r2;\n    e2.timestamp = nowTimestamp();\n    if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n      mutationBuffers.forEach((buf) => buf.unfreeze());\n    }\n    if (inEmittingFrame) {\n      emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n    } else if (passEmitsToParent) {\n      const message = {\n        type: \"rrweb\",\n        event: eventProcessor(e2),\n        origin: window.location.origin,\n        isCheckout\n      };\n      window.parent.postMessage(message, \"*\");\n    }\n    if (e2.type === EventType.FullSnapshot) {\n      lastFullSnapshotEvent = e2;\n      incrementalSnapshotCount = 0;\n    } else if (e2.type === EventType.IncrementalSnapshot) {\n      if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n        return;\n      }\n      incrementalSnapshotCount++;\n      const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n      const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n      if (exceedCount || exceedTime) {\n        takeFullSnapshot$1(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 = (a2) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.AdoptedStyleSheet,\n      ...a2\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      maskAttributeFn,\n      recordCanvas,\n      inlineImages,\n      sampling,\n      slimDOMOptions,\n      iframeManager,\n      stylesheetManager,\n      canvasManager,\n      keepIframeSrcFn,\n      processedNodeManager\n    },\n    mirror\n  });\n  takeFullSnapshot$1 = (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 node2 = snapshot(document, {\n      mirror,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskAllInputs: maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      maskAttributeFn,\n      slimDOM: slimDOMOptions,\n      dataURLOptions,\n      recordCanvas,\n      inlineImages,\n      applyBackgroundColorToBlockedElements,\n      onSerialize: (n2) => {\n        if (isSerializedIframe(n2, mirror)) {\n          iframeManager.addIframe(n2);\n        }\n        if (isSerializedStylesheet(n2, mirror)) {\n          stylesheetManager.trackLinkElement(n2);\n        }\n        if (hasShadowRoot(n2)) {\n          shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n        }\n      },\n      // stylesheetManager.reset() runs just before snapshot() so styleMirror\n      // ids are always fresh and in sync with the snapshot's serialized styleIds.\n      onAdoptedStyleSheet: captureAdoptedStyleSheets ? (sheet) => stylesheetManager.styleMirror.add(sheet) : void 0,\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 (!node2) {\n      return console.warn(\"Failed to snapshot the document\");\n    }\n    wrappedEmit(\n      {\n        type: EventType.FullSnapshot,\n        data: {\n          node: node2,\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: (v2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.Input,\n              ...v2\n            }\n          }),\n          mediaInteractionCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.MediaInteraction,\n              ...p\n            }\n          }),\n          styleSheetRuleCb: (r2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleSheetRule,\n              ...r2\n            }\n          }),\n          styleDeclarationCb: (r2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleDeclaration,\n              ...r2\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: (c2) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.CustomElement,\n                ...c2\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          maskAttributeFn,\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$1();\n      handlers.push(observe(document));\n      recording = true;\n    };\n    if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\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((h) => h());\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$1(isCheckout);\n};\nrecord.mirror = mirror;\nclass SeekCache {\n  constructor(maxEntries = 10) {\n    __publicField(this, \"entries\", []);\n    __publicField(this, \"maxEntries\");\n    this.maxEntries = maxEntries;\n  }\n  /**\n   * Store a new checkpoint.  Entries are kept sorted by timestamp.\n   * When the cache is full the oldest entry is evicted.\n   */\n  add(timestamp, snapshotNode, initialOffset) {\n    const event = {\n      type: EventType.FullSnapshot,\n      data: { node: snapshotNode, initialOffset },\n      timestamp\n    };\n    const entry = { timestamp, event };\n    if (!this.entries.length || this.entries[this.entries.length - 1].timestamp < timestamp) {\n      this.entries.push(entry);\n    } else {\n      let lo = 0;\n      let hi = this.entries.length - 1;\n      while (lo <= hi) {\n        const mid = lo + hi >>> 1;\n        if (this.entries[mid].timestamp <= timestamp) lo = mid + 1;\n        else hi = mid - 1;\n      }\n      if (lo > 0 && this.entries[lo - 1].timestamp === timestamp) {\n        this.entries[lo - 1] = entry;\n      } else {\n        this.entries.splice(lo, 0, entry);\n      }\n    }\n    if (this.entries.length > this.maxEntries) {\n      this.entries.shift();\n    }\n  }\n  /**\n   * Find the best cached checkpoint for seeking to `targetTime`.\n   *\n   * The checkpoint must be:\n   *  - at or before `targetTime` (we cannot seek forward past the snapshot)\n   *  - strictly after `baselineMetaTimestamp` (ensures the snapshot belongs to\n   *    the same recording session / checkout as the current seek)\n   *\n   * Returns `null` on cache miss.\n   */\n  findBestFor(targetTime, baselineMetaTimestamp) {\n    let lo = 0;\n    let hi = this.entries.length - 1;\n    let best = -1;\n    while (lo <= hi) {\n      const mid = lo + hi >>> 1;\n      if (this.entries[mid].timestamp <= targetTime) {\n        best = mid;\n        lo = mid + 1;\n      } else {\n        hi = mid - 1;\n      }\n    }\n    if (best === -1) return null;\n    for (let i2 = best; i2 >= 0; i2--) {\n      if (this.entries[i2].timestamp > baselineMetaTimestamp) {\n        return this.entries[i2];\n      }\n    }\n    return null;\n  }\n  /** Remove all cached entries (e.g. when a new set of events is loaded). */\n  clear() {\n    this.entries = [];\n  }\n  get size() {\n    return this.entries.length;\n  }\n  /** Expose entries for testing. */\n  getEntries() {\n    return this.entries;\n  }\n}\nfunction mitt$1(n2) {\n  return { all: n2 = n2 || /* @__PURE__ */ new Map(), on: function(t2, e2) {\n    var i2 = n2.get(t2);\n    i2 ? i2.push(e2) : n2.set(t2, [e2]);\n  }, off: function(t2, e2) {\n    var i2 = n2.get(t2);\n    i2 && (e2 ? i2.splice(i2.indexOf(e2) >>> 0, 1) : n2.set(t2, []));\n  }, emit: function(t2, e2) {\n    var i2 = n2.get(t2);\n    i2 && i2.slice().map(function(n3) {\n      n3(e2);\n    }), (i2 = n2.get(\"*\")) && i2.slice().map(function(n3) {\n      n3(t2, e2);\n    });\n  } };\n}\nconst mittProxy = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: mitt$1\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction polyfill(w = window, d = document) {\n  if (\"scrollBehavior\" in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true) {\n    return;\n  }\n  const Element2 = w.HTMLElement || w.Element;\n  const SCROLL_TIME = 468;\n  const original = {\n    scroll: w.scroll || w.scrollTo,\n    scrollBy: w.scrollBy,\n    elementScroll: Element2.prototype.scroll || scrollElement,\n    scrollIntoView: Element2.prototype.scrollIntoView\n  };\n  const now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now;\n  function isMicrosoftBrowser(userAgent) {\n    const userAgentPatterns = [\"MSIE \", \"Trident/\", \"Edge/\"];\n    return new RegExp(userAgentPatterns.join(\"|\")).test(userAgent);\n  }\n  const ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n  function scrollElement(x, y) {\n    this.scrollLeft = x;\n    this.scrollTop = y;\n  }\n  function ease(k) {\n    return 0.5 * (1 - Math.cos(Math.PI * k));\n  }\n  function shouldBailOut(firstArg) {\n    if (firstArg === null || typeof firstArg !== \"object\" || firstArg.behavior === void 0 || firstArg.behavior === \"auto\" || firstArg.behavior === \"instant\") {\n      return true;\n    }\n    if (typeof firstArg === \"object\" && firstArg.behavior === \"smooth\") {\n      return false;\n    }\n    throw new TypeError(\n      \"behavior member of ScrollOptions \" + firstArg.behavior + \" is not a valid value for enumeration ScrollBehavior.\"\n    );\n  }\n  function hasScrollableSpace(el, axis) {\n    if (axis === \"Y\") {\n      return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n    }\n    if (axis === \"X\") {\n      return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n    }\n  }\n  function canOverflow(el, axis) {\n    const overflowValue = w.getComputedStyle(el, null)[\"overflow\" + axis];\n    return overflowValue === \"auto\" || overflowValue === \"scroll\";\n  }\n  function isScrollable(el) {\n    const isScrollableY = hasScrollableSpace(el, \"Y\") && canOverflow(el, \"Y\");\n    const isScrollableX = hasScrollableSpace(el, \"X\") && canOverflow(el, \"X\");\n    return isScrollableY || isScrollableX;\n  }\n  function findScrollableParent(el) {\n    while (el !== d.body && isScrollable(el) === false) {\n      el = el.parentNode || el.host;\n    }\n    return el;\n  }\n  function step(context) {\n    const time = now();\n    let value;\n    let currentX;\n    let currentY;\n    let elapsed = (time - context.startTime) / SCROLL_TIME;\n    elapsed = elapsed > 1 ? 1 : elapsed;\n    value = ease(elapsed);\n    currentX = context.startX + (context.x - context.startX) * value;\n    currentY = context.startY + (context.y - context.startY) * value;\n    context.method.call(context.scrollable, currentX, currentY);\n    if (currentX !== context.x || currentY !== context.y) {\n      w.requestAnimationFrame(step.bind(w, context));\n    }\n  }\n  function smoothScroll(el, x, y) {\n    let scrollable;\n    let startX;\n    let startY;\n    let method;\n    const startTime = now();\n    if (el === d.body) {\n      scrollable = w;\n      startX = w.scrollX || w.pageXOffset;\n      startY = w.scrollY || w.pageYOffset;\n      method = original.scroll;\n    } else {\n      scrollable = el;\n      startX = el.scrollLeft;\n      startY = el.scrollTop;\n      method = scrollElement;\n    }\n    step({\n      scrollable,\n      method,\n      startTime,\n      startX,\n      startY,\n      x,\n      y\n    });\n  }\n  w.scroll = w.scrollTo = function() {\n    if (arguments[0] === void 0) {\n      return;\n    }\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scroll.call(\n        w,\n        arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] !== \"object\" ? arguments[0] : w.scrollX || w.pageXOffset,\n        // use top prop, second argument if present or fallback to scrollY\n        arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : w.scrollY || w.pageYOffset\n      );\n      return;\n    }\n    smoothScroll.call(\n      w,\n      d.body,\n      arguments[0].left !== void 0 ? ~~arguments[0].left : w.scrollX || w.pageXOffset,\n      arguments[0].top !== void 0 ? ~~arguments[0].top : w.scrollY || w.pageYOffset\n    );\n  };\n  w.scrollBy = function() {\n    if (arguments[0] === void 0) {\n      return;\n    }\n    if (shouldBailOut(arguments[0])) {\n      original.scrollBy.call(\n        w,\n        arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] !== \"object\" ? arguments[0] : 0,\n        arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : 0\n      );\n      return;\n    }\n    smoothScroll.call(\n      w,\n      d.body,\n      ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n      ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n    );\n  };\n  Element2.prototype.scroll = Element2.prototype.scrollTo = function() {\n    if (arguments[0] === void 0) {\n      return;\n    }\n    if (shouldBailOut(arguments[0]) === true) {\n      if (typeof arguments[0] === \"number\" && arguments[1] === void 0) {\n        throw new SyntaxError(\"Value could not be converted\");\n      }\n      original.elementScroll.call(\n        this,\n        // use left prop, first number argument or fallback to scrollLeft\n        arguments[0].left !== void 0 ? ~~arguments[0].left : typeof arguments[0] !== \"object\" ? ~~arguments[0] : this.scrollLeft,\n        // use top prop, second argument or fallback to scrollTop\n        arguments[0].top !== void 0 ? ~~arguments[0].top : arguments[1] !== void 0 ? ~~arguments[1] : this.scrollTop\n      );\n      return;\n    }\n    const left = arguments[0].left;\n    const top = arguments[0].top;\n    smoothScroll.call(\n      this,\n      this,\n      typeof left === \"undefined\" ? this.scrollLeft : ~~left,\n      typeof top === \"undefined\" ? this.scrollTop : ~~top\n    );\n  };\n  Element2.prototype.scrollBy = function() {\n    if (arguments[0] === void 0) {\n      return;\n    }\n    if (shouldBailOut(arguments[0]) === true) {\n      original.elementScroll.call(\n        this,\n        arguments[0].left !== void 0 ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft,\n        arguments[0].top !== void 0 ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop\n      );\n      return;\n    }\n    this.scroll({\n      left: ~~arguments[0].left + this.scrollLeft,\n      top: ~~arguments[0].top + this.scrollTop,\n      behavior: arguments[0].behavior\n    });\n  };\n  Element2.prototype.scrollIntoView = function() {\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scrollIntoView.call(\n        this,\n        arguments[0] === void 0 ? true : arguments[0]\n      );\n      return;\n    }\n    const scrollableParent = findScrollableParent(this);\n    const parentRects = scrollableParent.getBoundingClientRect();\n    const clientRects = this.getBoundingClientRect();\n    if (scrollableParent !== d.body) {\n      smoothScroll.call(\n        this,\n        scrollableParent,\n        scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n        scrollableParent.scrollTop + clientRects.top - parentRects.top\n      );\n      if (w.getComputedStyle(scrollableParent).position !== \"fixed\") {\n        w.scrollBy({\n          left: parentRects.left,\n          top: parentRects.top,\n          behavior: \"smooth\"\n        });\n      }\n    } else {\n      w.scrollBy({\n        left: clientRects.left,\n        top: clientRects.top,\n        behavior: \"smooth\"\n      });\n    }\n  };\n}\nclass Timer {\n  constructor(actions = [], config) {\n    __publicField(this, \"timeOffset\", 0);\n    __publicField(this, \"speed\");\n    __publicField(this, \"actions\");\n    // NOTE: By using an index pointer instead of Array.shift(),\n    // we avoid O(N) re-indexing on every animation frame and achieve O(1) complexity per action.\n    __publicField(this, \"actionIndex\", 0);\n    __publicField(this, \"raf\", null);\n    __publicField(this, \"lastTimestamp\");\n    this.actions = actions;\n    this.speed = config.speed;\n  }\n  /**\n   * Add an action, possibly after the timer starts.\n   */\n  addAction(action) {\n    const rafWasActive = this.raf === true;\n    if (this.actionIndex >= this.actions.length || this.actions[this.actions.length - 1].delay <= action.delay) {\n      this.actions.push(action);\n    } else {\n      const index2 = this.findActionIndex(action);\n      this.actions.splice(index2, 0, action);\n    }\n    if (rafWasActive) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    }\n  }\n  start() {\n    this.timeOffset = 0;\n    this.lastTimestamp = performance.now();\n    this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n  }\n  rafCheck() {\n    const time = performance.now();\n    this.timeOffset += (time - this.lastTimestamp) * this.speed;\n    this.lastTimestamp = time;\n    while (this.actionIndex < this.actions.length) {\n      const action = this.actions[this.actionIndex];\n      if (this.timeOffset >= action.delay) {\n        this.actionIndex++;\n        action.doAction();\n      } else {\n        break;\n      }\n    }\n    if (this.actionIndex < this.actions.length) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    } else {\n      this.raf = true;\n    }\n  }\n  clear() {\n    if (this.raf) {\n      if (this.raf !== true) {\n        cancelAnimationFrame(this.raf);\n      }\n      this.raf = null;\n    }\n    this.actions.length = 0;\n    this.actionIndex = 0;\n  }\n  setSpeed(speed) {\n    this.speed = speed;\n  }\n  isActive() {\n    return this.raf !== null;\n  }\n  findActionIndex(action) {\n    let start = this.actionIndex;\n    let end = this.actions.length - 1;\n    while (start <= end) {\n      const mid = Math.floor((start + end) / 2);\n      if (this.actions[mid].delay < action.delay) {\n        start = mid + 1;\n      } else if (this.actions[mid].delay > action.delay) {\n        end = mid - 1;\n      } else {\n        return mid + 1;\n      }\n    }\n    return start;\n  }\n}\nfunction addDelay(event, baselineTime) {\n  if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.MouseMove && event.data.positions && event.data.positions.length) {\n    const firstOffset = event.data.positions[0].timeOffset;\n    const firstTimestamp = event.timestamp + firstOffset;\n    event.delay = firstTimestamp - baselineTime;\n    return firstTimestamp - baselineTime;\n  }\n  event.delay = event.timestamp - baselineTime;\n  return event.delay;\n}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction t(t2, n2) {\n  var e2 = \"function\" == typeof Symbol && t2[Symbol.iterator];\n  if (!e2) return t2;\n  var r2, o2, i2 = e2.call(t2), a2 = [];\n  try {\n    for (; (void 0 === n2 || n2-- > 0) && !(r2 = i2.next()).done; ) a2.push(r2.value);\n  } catch (t3) {\n    o2 = { error: t3 };\n  } finally {\n    try {\n      r2 && !r2.done && (e2 = i2.return) && e2.call(i2);\n    } finally {\n      if (o2) throw o2.error;\n    }\n  }\n  return a2;\n}\nvar n;\n!(function(t2) {\n  t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n})(n || (n = {}));\nvar e = { type: \"xstate.init\" };\nfunction r(t2) {\n  return void 0 === t2 ? [] : [].concat(t2);\n}\nfunction o(t2) {\n  return { type: \"xstate.assign\", assignment: t2 };\n}\nfunction i(t2, n2) {\n  return \"string\" == typeof (t2 = \"string\" == typeof t2 && n2 && n2[t2] ? n2[t2] : t2) ? { type: t2 } : \"function\" == typeof t2 ? { type: t2.name, exec: t2 } : t2;\n}\nfunction a(t2) {\n  return function(n2) {\n    return t2 === n2;\n  };\n}\nfunction u(t2) {\n  return \"string\" == typeof t2 ? { type: t2 } : t2;\n}\nfunction c(t2, n2) {\n  return { value: t2, context: n2, actions: [], changed: false, matches: a(t2) };\n}\nfunction f(t2, n2, e2) {\n  var r2 = n2, o2 = false;\n  return [t2.filter((function(t3) {\n    if (\"xstate.assign\" === t3.type) {\n      o2 = true;\n      var n3 = Object.assign({}, r2);\n      return \"function\" == typeof t3.assignment ? n3 = t3.assignment(r2, e2) : Object.keys(t3.assignment).forEach((function(o3) {\n        n3[o3] = \"function\" == typeof t3.assignment[o3] ? t3.assignment[o3](r2, e2) : t3.assignment[o3];\n      })), r2 = n3, false;\n    }\n    return true;\n  })), r2, o2];\n}\nfunction s(n2, o2) {\n  void 0 === o2 && (o2 = {});\n  var s2 = t(f(r(n2.states[n2.initial].entry).map((function(t2) {\n    return i(t2, o2.actions);\n  })), n2.context, e), 2), l2 = s2[0], v2 = s2[1], y = { config: n2, _options: o2, initialState: { value: n2.initial, actions: l2, context: v2, matches: a(n2.initial) }, transition: function(e2, o3) {\n    var s3, l3, v3 = \"string\" == typeof e2 ? { value: e2, context: n2.context } : e2, p = v3.value, g = v3.context, d = u(o3), x = n2.states[p];\n    if (x.on) {\n      var m = r(x.on[d.type]);\n      try {\n        for (var h = (function(t2) {\n          var n3 = \"function\" == typeof Symbol && Symbol.iterator, e3 = n3 && t2[n3], r2 = 0;\n          if (e3) return e3.call(t2);\n          if (t2 && \"number\" == typeof t2.length) return { next: function() {\n            return t2 && r2 >= t2.length && (t2 = void 0), { value: t2 && t2[r2++], done: !t2 };\n          } };\n          throw new TypeError(n3 ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n        })(m), b = h.next(); !b.done; b = h.next()) {\n          var S = b.value;\n          if (void 0 === S) return c(p, g);\n          var w = \"string\" == typeof S ? { target: S } : S, j = w.target, E = w.actions, R = void 0 === E ? [] : E, N = w.cond, O = void 0 === N ? function() {\n            return true;\n          } : N, _ = void 0 === j, k = null != j ? j : p, T = n2.states[k];\n          if (O(g, d)) {\n            var q = t(f((_ ? r(R) : [].concat(x.exit, R, T.entry).filter((function(t2) {\n              return t2;\n            }))).map((function(t2) {\n              return i(t2, y._options.actions);\n            })), g, d), 3), z = q[0], A = q[1], B = q[2], C = null != j ? j : p;\n            return { value: C, context: A, actions: z, changed: j !== p || z.length > 0 || B, matches: a(C) };\n          }\n        }\n      } catch (t2) {\n        s3 = { error: t2 };\n      } finally {\n        try {\n          b && !b.done && (l3 = h.return) && l3.call(h);\n        } finally {\n          if (s3) throw s3.error;\n        }\n      }\n    }\n    return c(p, g);\n  } };\n  return y;\n}\nvar l = function(t2, n2) {\n  return t2.actions.forEach((function(e2) {\n    var r2 = e2.exec;\n    return r2 && r2(t2.context, n2);\n  }));\n};\nfunction v(t2) {\n  var r2 = t2.initialState, o2 = n.NotStarted, i2 = /* @__PURE__ */ new Set(), c2 = { _machine: t2, send: function(e2) {\n    o2 === n.Running && (r2 = t2.transition(r2, e2), l(r2, u(e2)), i2.forEach((function(t3) {\n      return t3(r2);\n    })));\n  }, subscribe: function(t3) {\n    return i2.add(t3), t3(r2), { unsubscribe: function() {\n      return i2.delete(t3);\n    } };\n  }, start: function(i3) {\n    if (i3) {\n      var u2 = \"object\" == typeof i3 ? i3 : { context: t2.config.context, value: i3 };\n      r2 = { value: u2.value, actions: [], context: u2.context, matches: a(u2.value) };\n    }\n    return o2 = n.Running, l(r2, e), c2;\n  }, stop: function() {\n    return o2 = n.Stopped, i2.clear(), c2;\n  }, get state() {\n    return r2;\n  }, get status() {\n    return o2;\n  } };\n  return c2;\n}\nfunction buildCheckpointIndex(events) {\n  const checkpoints = [];\n  for (let i2 = 0; i2 < events.length; i2++) {\n    if (events[i2].type === EventType.Meta) {\n      checkpoints.push({\n        metaEventIndex: i2,\n        timestamp: events[i2].timestamp\n      });\n    }\n  }\n  return checkpoints;\n}\nfunction findNearestCheckpoint(checkpoints, baselineTime) {\n  if (checkpoints.length === 0) {\n    return null;\n  }\n  let lo = 0;\n  let hi = checkpoints.length - 1;\n  let result2 = null;\n  while (lo <= hi) {\n    const mid = Math.floor((lo + hi) / 2);\n    if (checkpoints[mid].timestamp <= baselineTime) {\n      result2 = checkpoints[mid];\n      lo = mid + 1;\n    } else {\n      hi = mid - 1;\n    }\n  }\n  return result2;\n}\nfunction isDuplicateEvent(existing, incoming) {\n  if (existing === incoming) {\n    return true;\n  }\n  if (existing.timestamp === incoming.timestamp && existing.type === incoming.type) {\n    return JSON.stringify(existing) === JSON.stringify(incoming);\n  }\n  return false;\n}\nfunction createPlayerService(context, { getCastFn, applyEventsSynchronously, emitter }) {\n  const playerMachine = s(\n    {\n      id: \"player\",\n      context,\n      initial: \"paused\",\n      states: {\n        playing: {\n          on: {\n            PAUSE: {\n              target: \"paused\",\n              actions: [\"pause\"]\n            },\n            CAST_EVENT: {\n              target: \"playing\",\n              actions: \"castEvent\"\n            },\n            END: {\n              target: \"paused\",\n              actions: [\"resetLastPlayedEvent\", \"pause\"]\n            },\n            ADD_EVENT: {\n              target: \"playing\",\n              actions: [\"addEvent\"]\n            }\n          }\n        },\n        paused: {\n          on: {\n            PLAY: {\n              target: \"playing\",\n              actions: [\"recordTimeOffset\", \"play\"]\n            },\n            CAST_EVENT: {\n              target: \"paused\",\n              actions: \"castEvent\"\n            },\n            TO_LIVE: {\n              target: \"live\",\n              actions: [\"startLive\"]\n            },\n            ADD_EVENT: {\n              target: \"paused\",\n              actions: [\"addEvent\"]\n            }\n          }\n        },\n        live: {\n          on: {\n            ADD_EVENT: {\n              target: \"live\",\n              actions: [\"addEvent\"]\n            },\n            CAST_EVENT: {\n              target: \"live\",\n              actions: [\"castEvent\"]\n            }\n          }\n        }\n      }\n    },\n    {\n      actions: {\n        castEvent: o({\n          lastPlayedEvent: (ctx, event) => {\n            if (event.type === \"CAST_EVENT\") {\n              return event.payload.event;\n            }\n            return ctx.lastPlayedEvent;\n          }\n        }),\n        recordTimeOffset: o((ctx, event) => {\n          let timeOffset = ctx.timeOffset;\n          if (\"payload\" in event && \"timeOffset\" in event.payload) {\n            timeOffset = event.payload.timeOffset;\n          }\n          return {\n            ...ctx,\n            timeOffset,\n            baselineTime: ctx.events[0].timestamp + timeOffset\n          };\n        }),\n        play(ctx) {\n          var _a2;\n          const {\n            timer,\n            events,\n            baselineTime,\n            lastPlayedEvent,\n            checkpointIndex\n          } = ctx;\n          timer.clear();\n          const checkpoint = findNearestCheckpoint(\n            checkpointIndex,\n            baselineTime\n          );\n          const startIndex = checkpoint ? checkpoint.metaEventIndex : 0;\n          let lastPlayedTimestamp = lastPlayedEvent == null ? void 0 : lastPlayedEvent.timestamp;\n          if ((lastPlayedEvent == null ? void 0 : lastPlayedEvent.type) === EventType.IncrementalSnapshot && lastPlayedEvent.data.source === IncrementalSource.MouseMove) {\n            lastPlayedTimestamp = lastPlayedEvent.timestamp + ((_a2 = lastPlayedEvent.data.positions[0]) == null ? void 0 : _a2.timeOffset);\n          }\n          if (baselineTime < (lastPlayedTimestamp || 0)) {\n            emitter.emit(ReplayerEvents.PlayBack);\n          }\n          const syncEvents = new Array();\n          for (let i2 = startIndex; i2 < events.length; i2++) {\n            const event = events[i2];\n            if (lastPlayedTimestamp && lastPlayedTimestamp < baselineTime && (event.timestamp <= lastPlayedTimestamp || event === lastPlayedEvent)) {\n              continue;\n            }\n            if (event.timestamp < baselineTime) {\n              syncEvents.push(event);\n            } else {\n              addDelay(event, baselineTime);\n              const castFn = getCastFn(event, false);\n              timer.addAction({\n                doAction: () => {\n                  castFn();\n                },\n                delay: event.delay ?? 0\n              });\n            }\n          }\n          applyEventsSynchronously(syncEvents);\n          emitter.emit(ReplayerEvents.Flush);\n          timer.start();\n        },\n        pause(ctx) {\n          ctx.timer.clear();\n        },\n        resetLastPlayedEvent: o((ctx) => {\n          return {\n            ...ctx,\n            lastPlayedEvent: null\n          };\n        }),\n        startLive: o({\n          baselineTime: (ctx, event) => {\n            ctx.timer.start();\n            if (event.type === \"TO_LIVE\" && event.payload.baselineTime) {\n              return event.payload.baselineTime;\n            }\n            return Date.now();\n          }\n        }),\n        addEvent: o((ctx, machineEvent) => {\n          const { baselineTime, timer, events, checkpointIndex } = ctx;\n          if (machineEvent.type === \"ADD_EVENT\") {\n            const { event } = machineEvent.payload;\n            addDelay(event, baselineTime);\n            let end = events.length - 1;\n            let insertionIndex;\n            if (!events[end] || events[end].timestamp <= event.timestamp) {\n              if (events[end] && isDuplicateEvent(events[end], event)) {\n                return { ...ctx, events };\n              }\n              events.push(event);\n              insertionIndex = events.length - 1;\n            } else {\n              let start = 0;\n              insertionIndex = 0;\n              while (start <= end) {\n                const mid = Math.floor((start + end) / 2);\n                if (events[mid].timestamp <= event.timestamp) {\n                  start = mid + 1;\n                } else {\n                  end = mid - 1;\n                }\n              }\n              insertionIndex = start;\n              for (let i2 = insertionIndex - 1; i2 >= 0 && events[i2].timestamp === event.timestamp; i2--) {\n                if (isDuplicateEvent(events[i2], event)) {\n                  return { ...ctx, events };\n                }\n              }\n              for (let i2 = insertionIndex; i2 < events.length && events[i2].timestamp === event.timestamp; i2++) {\n                if (isDuplicateEvent(events[i2], event)) {\n                  return { ...ctx, events };\n                }\n              }\n              events.splice(insertionIndex, 0, event);\n            }\n            if (event.type === EventType.Meta) {\n              const newCheckpoint = {\n                metaEventIndex: insertionIndex,\n                timestamp: event.timestamp\n              };\n              const lastCheckpoint = checkpointIndex[checkpointIndex.length - 1];\n              if (!lastCheckpoint || lastCheckpoint.timestamp <= event.timestamp) {\n                checkpointIndex.push(newCheckpoint);\n              } else {\n                for (const checkpoint of checkpointIndex) {\n                  if (checkpoint.metaEventIndex >= insertionIndex) {\n                    checkpoint.metaEventIndex++;\n                  }\n                }\n                let searchLo = 0;\n                let searchHi = checkpointIndex.length - 1;\n                while (searchLo <= searchHi) {\n                  const mid = Math.floor((searchLo + searchHi) / 2);\n                  if (checkpointIndex[mid].timestamp <= event.timestamp) {\n                    searchLo = mid + 1;\n                  } else {\n                    searchHi = mid - 1;\n                  }\n                }\n                checkpointIndex.splice(searchLo, 0, newCheckpoint);\n              }\n            } else if (insertionIndex < events.length - 1) {\n              for (const checkpoint of checkpointIndex) {\n                if (checkpoint.metaEventIndex >= insertionIndex) {\n                  checkpoint.metaEventIndex++;\n                }\n              }\n            }\n            const isSync = event.timestamp < baselineTime;\n            const castFn = getCastFn(event, isSync);\n            if (isSync) {\n              castFn();\n            } else if (timer.isActive()) {\n              timer.addAction({\n                doAction: () => {\n                  castFn();\n                },\n                delay: event.delay ?? 0\n              });\n            }\n          }\n          return { ...ctx, events, checkpointIndex };\n        })\n      }\n    }\n  );\n  return v(playerMachine);\n}\nfunction createSpeedService(context) {\n  const speedMachine = s(\n    {\n      id: \"speed\",\n      context,\n      initial: \"normal\",\n      states: {\n        normal: {\n          on: {\n            FAST_FORWARD: {\n              target: \"skipping\",\n              actions: [\"recordSpeed\", \"setSpeed\"]\n            },\n            SET_SPEED: {\n              target: \"normal\",\n              actions: [\"setSpeed\"]\n            }\n          }\n        },\n        skipping: {\n          on: {\n            BACK_TO_NORMAL: {\n              target: \"normal\",\n              actions: [\"restoreSpeed\"]\n            },\n            SET_SPEED: {\n              target: \"normal\",\n              actions: [\"setSpeed\"]\n            }\n          }\n        }\n      }\n    },\n    {\n      actions: {\n        setSpeed: (ctx, event) => {\n          if (\"payload\" in event) {\n            ctx.timer.setSpeed(event.payload.speed);\n          }\n        },\n        recordSpeed: o({\n          normalSpeed: (ctx) => ctx.timer.speed\n        }),\n        restoreSpeed: (ctx) => {\n          ctx.timer.setSpeed(ctx.normalSpeed);\n        }\n      }\n    }\n  );\n  return v(speedMachine);\n}\nconst rules = (blockClass) => [\n  `.${blockClass} { background: currentColor }`,\n  \"noscript { display: none !important; }\"\n];\nconst webGLVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor(ctx, ctor) {\n  let contextMap = webGLVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = /* @__PURE__ */ new Map();\n    webGLVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  return contextMap.get(ctor);\n}\nfunction deserializeArg(imageMap, ctx, preload) {\n  return async (arg) => {\n    if (arg && typeof arg === \"object\" && \"rr_type\" in arg) {\n      if (preload) preload.isUnchanged = false;\n      if (arg.rr_type === \"ImageBitmap\" && \"args\" in arg) {\n        const args = await deserializeArg(imageMap, ctx, preload)(arg.args);\n        return await createImageBitmap.apply(null, args);\n      } else if (\"index\" in arg) {\n        if (preload || ctx === null) return arg;\n        const { rr_type: name, index: index2 } = arg;\n        return variableListFor(ctx, name)[index2];\n      } else if (\"args\" in arg) {\n        const { rr_type: name, args } = arg;\n        const ctor = window[name];\n        return new ctor(\n          ...await Promise.all(\n            args.map(deserializeArg(imageMap, ctx, preload))\n          )\n        );\n      } else if (\"base64\" in arg) {\n        return decode(arg.base64);\n      } else if (\"src\" in arg) {\n        const image = imageMap.get(arg.src);\n        if (image) {\n          return image;\n        } else {\n          const image2 = new Image();\n          image2.src = arg.src;\n          imageMap.set(arg.src, image2);\n          return image2;\n        }\n      } else if (\"data\" in arg && arg.rr_type === \"Blob\") {\n        const blobContents = await Promise.all(\n          arg.data.map(deserializeArg(imageMap, ctx, preload))\n        );\n        const blob2 = new Blob(blobContents, {\n          type: arg.type\n        });\n        return blob2;\n      }\n    } else if (Array.isArray(arg)) {\n      const result2 = await Promise.all(\n        arg.map(deserializeArg(imageMap, ctx, preload))\n      );\n      return result2;\n    }\n    return arg;\n  };\n}\nfunction getContext(target, type) {\n  try {\n    if (type === CanvasContext.WebGL) {\n      return target.getContext(\"webgl\") || target.getContext(\"experimental-webgl\");\n    }\n    return target.getContext(\"webgl2\");\n  } catch (e2) {\n    return null;\n  }\n}\nconst WebGLVariableConstructorsNames = [\n  \"WebGLActiveInfo\",\n  \"WebGLBuffer\",\n  \"WebGLFramebuffer\",\n  \"WebGLProgram\",\n  \"WebGLRenderbuffer\",\n  \"WebGLShader\",\n  \"WebGLShaderPrecisionFormat\",\n  \"WebGLTexture\",\n  \"WebGLUniformLocation\",\n  \"WebGLVertexArrayObject\"\n];\nfunction saveToWebGLVarMap(ctx, result2) {\n  if (!(result2 == null ? void 0 : result2.constructor)) return;\n  const { name } = result2.constructor;\n  if (!WebGLVariableConstructorsNames.includes(name)) return;\n  const variables = variableListFor(ctx, name);\n  if (!variables.includes(result2)) variables.push(result2);\n}\nasync function webglMutation({\n  mutation,\n  target,\n  type,\n  imageMap,\n  errorHandler: errorHandler2\n}) {\n  try {\n    const ctx = getContext(target, type);\n    if (!ctx) return;\n    if (mutation.setter) {\n      ctx[mutation.property] = mutation.args[0];\n      return;\n    }\n    const original = ctx[mutation.property];\n    const args = await Promise.all(\n      mutation.args.map(deserializeArg(imageMap, ctx))\n    );\n    const result2 = original.apply(ctx, args);\n    saveToWebGLVarMap(ctx, result2);\n    const debugMode = false;\n    if (debugMode) ;\n  } catch (error) {\n    errorHandler2(mutation, error);\n  }\n}\nasync function canvasMutation$1({\n  event,\n  mutations,\n  target,\n  imageMap,\n  errorHandler: errorHandler2\n}) {\n  const ctx = target.getContext(\"2d\");\n  if (!ctx) {\n    errorHandler2(mutations[0], new Error(\"Canvas context is null\"));\n    return;\n  }\n  const mutationArgsPromises = mutations.map(\n    async (mutation) => {\n      return Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)));\n    }\n  );\n  const args = await Promise.all(mutationArgsPromises);\n  args.forEach((args2, index2) => {\n    const mutation = mutations[index2];\n    try {\n      if (mutation.setter) {\n        ctx[mutation.property] = mutation.args[0];\n        return;\n      }\n      const original = ctx[mutation.property];\n      if (mutation.property === \"drawImage\" && typeof mutation.args[0] === \"string\") {\n        imageMap.get(event);\n        original.apply(ctx, mutation.args);\n      } else {\n        original.apply(ctx, args2);\n      }\n    } catch (error) {\n      errorHandler2(mutation, error);\n    }\n    return;\n  });\n}\nasync function canvasMutation({\n  event,\n  mutation,\n  target,\n  imageMap,\n  canvasEventMap,\n  errorHandler: errorHandler2\n}) {\n  try {\n    const precomputedMutation = canvasEventMap.get(event) || mutation;\n    const commands = \"commands\" in precomputedMutation ? precomputedMutation.commands : [precomputedMutation];\n    if ([CanvasContext.WebGL, CanvasContext.WebGL2].includes(mutation.type)) {\n      for (let i2 = 0; i2 < commands.length; i2++) {\n        const command = commands[i2];\n        await webglMutation({\n          mutation: command,\n          type: mutation.type,\n          target,\n          imageMap,\n          errorHandler: errorHandler2\n        });\n      }\n      return;\n    }\n    await canvasMutation$1({\n      event,\n      mutations: commands,\n      target,\n      imageMap,\n      errorHandler: errorHandler2\n    });\n  } catch (error) {\n    errorHandler2(mutation, error);\n  }\n}\nclass MediaManager {\n  constructor(options) {\n    __publicField(this, \"mediaMap\", /* @__PURE__ */ new Map());\n    __publicField(this, \"warn\");\n    __publicField(this, \"service\");\n    __publicField(this, \"speedService\");\n    __publicField(this, \"emitter\");\n    __publicField(this, \"getCurrentTime\");\n    __publicField(this, \"metadataCallbackMap\", /* @__PURE__ */ new Map());\n    this.warn = options.warn;\n    this.service = options.service;\n    this.speedService = options.speedService;\n    this.emitter = options.emitter;\n    this.getCurrentTime = options.getCurrentTime;\n    this.emitter.on(ReplayerEvents.Start, this.start.bind(this));\n    this.emitter.on(ReplayerEvents.SkipStart, this.start.bind(this));\n    this.emitter.on(ReplayerEvents.Pause, this.pause.bind(this));\n    this.emitter.on(ReplayerEvents.Finish, this.pause.bind(this));\n    this.speedService.subscribe(() => {\n      this.syncAllMediaElements();\n    });\n  }\n  syncAllMediaElements(options = { pause: false }) {\n    this.mediaMap.forEach((_mediaState, target) => {\n      this.syncTargetWithState(target);\n      if (options.pause) {\n        target.pause();\n      }\n    });\n  }\n  start() {\n    this.syncAllMediaElements();\n  }\n  pause() {\n    this.syncAllMediaElements({ pause: true });\n  }\n  seekTo({\n    time,\n    target,\n    mediaState\n  }) {\n    if (mediaState.isPlaying) {\n      const differenceBetweenCurrentTimeAndMediaMutationTimestamp = time - mediaState.lastInteractionTimeOffset;\n      const mediaPlaybackOffset = differenceBetweenCurrentTimeAndMediaMutationTimestamp / 1e3 * mediaState.playbackRate;\n      const duration = \"duration\" in target && target.duration;\n      if (Number.isNaN(duration)) {\n        this.waitForMetadata(target);\n        return;\n      }\n      let seekToTime = mediaState.currentTimeAtLastInteraction + mediaPlaybackOffset;\n      if (target.loop && // RRMediaElement doesn't have a duration property\n      duration !== false) {\n        seekToTime = seekToTime % duration;\n      }\n      target.currentTime = seekToTime;\n    } else {\n      target.pause();\n      target.currentTime = mediaState.currentTimeAtLastInteraction;\n    }\n  }\n  waitForMetadata(target) {\n    if (this.metadataCallbackMap.has(target)) return;\n    if (!(\"addEventListener\" in target)) return;\n    const onLoadedMetadata = () => {\n      this.metadataCallbackMap.delete(target);\n      const mediaState = this.mediaMap.get(target);\n      if (!mediaState) return;\n      this.seekTo({\n        time: this.getCurrentTime(),\n        target,\n        mediaState\n      });\n    };\n    this.metadataCallbackMap.set(target, onLoadedMetadata);\n    target.addEventListener(\"loadedmetadata\", onLoadedMetadata, {\n      once: true\n    });\n  }\n  getMediaStateFromMutation({\n    target,\n    timeOffset,\n    mutation\n  }) {\n    const lastState = this.mediaMap.get(target);\n    const { type, playbackRate, currentTime, muted, volume, loop } = mutation;\n    const isPlaying = type === MediaInteractions.Play || type !== MediaInteractions.Pause && ((lastState == null ? void 0 : lastState.isPlaying) || target.getAttribute(\"autoplay\") !== null);\n    const mediaState = {\n      isPlaying,\n      currentTimeAtLastInteraction: currentTime ?? (lastState == null ? void 0 : lastState.currentTimeAtLastInteraction) ?? 0,\n      lastInteractionTimeOffset: timeOffset,\n      playbackRate: playbackRate ?? (lastState == null ? void 0 : lastState.playbackRate) ?? 1,\n      volume: volume ?? (lastState == null ? void 0 : lastState.volume) ?? 1,\n      muted: muted ?? (lastState == null ? void 0 : lastState.muted) ?? target.getAttribute(\"muted\") === null,\n      loop: loop ?? (lastState == null ? void 0 : lastState.loop) ?? target.getAttribute(\"loop\") === null\n    };\n    return mediaState;\n  }\n  syncTargetWithState(target) {\n    const mediaState = this.mediaMap.get(target);\n    if (!mediaState) return;\n    const { muted, loop, volume, isPlaying } = mediaState;\n    const playerIsPaused = this.service.state.matches(\"paused\");\n    const playbackRate = mediaState.playbackRate * this.speedService.state.context.timer.speed;\n    try {\n      this.seekTo({\n        time: this.getCurrentTime(),\n        target,\n        mediaState\n      });\n      if (target.volume !== volume) {\n        target.volume = volume;\n      }\n      target.muted = muted;\n      target.loop = loop;\n      if (target.playbackRate !== playbackRate) {\n        target.playbackRate = playbackRate;\n      }\n      if (isPlaying && !playerIsPaused) {\n        void target.play();\n      } else {\n        target.pause();\n      }\n    } catch (error) {\n      this.warn(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\n        `Failed to replay media interactions: ${error.message || error}`\n      );\n    }\n  }\n  addMediaElements(node2, timeOffset, mirror2) {\n    if (![\"AUDIO\", \"VIDEO\"].includes(node2.nodeName)) return;\n    const target = node2;\n    const serializedNode = mirror2.getMeta(target);\n    if (!serializedNode || !(\"attributes\" in serializedNode)) return;\n    const playerIsPaused = this.service.state.matches(\"paused\");\n    const mediaAttributes = serializedNode.attributes;\n    let isPlaying = false;\n    if (mediaAttributes.rr_mediaState) {\n      isPlaying = mediaAttributes.rr_mediaState === \"played\";\n    } else {\n      isPlaying = target.getAttribute(\"autoplay\") !== null;\n    }\n    if (isPlaying && playerIsPaused) target.pause();\n    let playbackRate = 1;\n    if (typeof mediaAttributes.rr_mediaPlaybackRate === \"number\") {\n      playbackRate = mediaAttributes.rr_mediaPlaybackRate;\n    }\n    let muted = false;\n    if (typeof mediaAttributes.rr_mediaMuted === \"boolean\") {\n      muted = mediaAttributes.rr_mediaMuted;\n    } else {\n      muted = target.getAttribute(\"muted\") !== null;\n    }\n    let loop = false;\n    if (typeof mediaAttributes.rr_mediaLoop === \"boolean\") {\n      loop = mediaAttributes.rr_mediaLoop;\n    } else {\n      loop = target.getAttribute(\"loop\") !== null;\n    }\n    let volume = 1;\n    if (typeof mediaAttributes.rr_mediaVolume === \"number\") {\n      volume = mediaAttributes.rr_mediaVolume;\n    }\n    let currentTimeAtLastInteraction = 0;\n    if (typeof mediaAttributes.rr_mediaCurrentTime === \"number\") {\n      currentTimeAtLastInteraction = mediaAttributes.rr_mediaCurrentTime;\n    }\n    this.mediaMap.set(target, {\n      isPlaying,\n      currentTimeAtLastInteraction,\n      lastInteractionTimeOffset: timeOffset,\n      playbackRate,\n      volume,\n      muted,\n      loop\n    });\n    this.syncTargetWithState(target);\n  }\n  mediaMutation({\n    target,\n    timeOffset,\n    mutation\n  }) {\n    this.mediaMap.set(\n      target,\n      this.getMediaStateFromMutation({\n        target,\n        timeOffset,\n        mutation\n      })\n    );\n    this.syncTargetWithState(target);\n  }\n  isSupportedMediaElement(node2) {\n    return [\"AUDIO\", \"VIDEO\"].includes(node2.nodeName);\n  }\n  reset() {\n    this.mediaMap.clear();\n  }\n}\nfunction applyDialogToTopLevel(node2, attributeMutation) {\n  if (node2.nodeName !== \"DIALOG\" || node2 instanceof BaseRRNode) return;\n  const dialog = node2;\n  const oldIsOpen = dialog.open;\n  const oldIsModalState = oldIsOpen && dialog.matches(\"dialog:modal\");\n  const rrOpenMode = dialog.getAttribute(\"rr_open_mode\");\n  const newIsOpen = typeof (attributeMutation == null ? void 0 : attributeMutation.attributes.open) === \"string\" || typeof dialog.getAttribute(\"open\") === \"string\";\n  const newIsModalState = rrOpenMode === \"modal\";\n  const newIsNonModalState = rrOpenMode === \"non-modal\";\n  const modalStateChanged = oldIsModalState && newIsNonModalState || !oldIsModalState && newIsModalState;\n  if (oldIsOpen && !modalStateChanged) return;\n  if (!dialog.isConnected) {\n    console.warn(\"dialog is not attached to the dom\", dialog);\n    return;\n  }\n  if (oldIsOpen) dialog.close();\n  if (!newIsOpen) return;\n  if (newIsModalState) dialog.showModal();\n  else dialog.show();\n}\nfunction removeDialogFromTopLevel(node2, attributeMutation) {\n  if (node2.nodeName !== \"DIALOG\" || node2 instanceof BaseRRNode) return;\n  const dialog = node2;\n  if (!dialog.isConnected) {\n    console.warn(\"dialog is not attached to the dom\", dialog);\n    return;\n  }\n  if (attributeMutation.attributes.open === null) {\n    dialog.removeAttribute(\"open\");\n    dialog.removeAttribute(\"rr_open_mode\");\n  }\n}\nconst mitt = mitt$1 || mittProxy;\nconst REPLAY_CONSOLE_PREFIX = \"[replayer]\";\nconst INJECTED_STYLE_ID = \"__rrweb-injected-style__\";\nconst defaultMouseTailConfig = {\n  duration: 500,\n  lineCap: \"round\",\n  lineWidth: 3,\n  strokeStyle: \"red\"\n};\nfunction indicatesTouchDevice(e2) {\n  return e2.type == EventType.IncrementalSnapshot && (e2.data.source == IncrementalSource.TouchMove || e2.data.source == IncrementalSource.MouseInteraction && e2.data.type == MouseInteractions.TouchStart);\n}\nclass Replayer {\n  constructor(events, config) {\n    __publicField(this, \"wrapper\");\n    __publicField(this, \"iframe\");\n    __publicField(this, \"service\");\n    __publicField(this, \"speedService\");\n    __publicField(this, \"config\");\n    // In the fast-forward process, if the virtual-dom optimization is used, this flag value is true.\n    __publicField(this, \"usingVirtualDom\", false);\n    __publicField(this, \"virtualDom\", new RRDocument());\n    __publicField(this, \"mouse\");\n    __publicField(this, \"mouseTail\", null);\n    __publicField(this, \"tailPositions\", []);\n    __publicField(this, \"emitter\", mitt());\n    __publicField(this, \"nextUserInteractionEvent\");\n    __publicField(this, \"legacy_missingNodeRetryMap\", {});\n    // The replayer uses the cache to speed up replay and scrubbing.\n    __publicField(this, \"cache\", createCache());\n    __publicField(this, \"imageMap\", /* @__PURE__ */ new Map());\n    __publicField(this, \"canvasEventMap\", /* @__PURE__ */ new Map());\n    __publicField(this, \"mirror\", createMirror$2());\n    // Used to track StyleSheetObjects adopted on multiple document hosts.\n    __publicField(this, \"styleMirror\", new StyleSheetMirror());\n    // Used to track video & audio elements, and keep them in sync with general playback.\n    __publicField(this, \"mediaManager\");\n    __publicField(this, \"firstFullSnapshot\", null);\n    __publicField(this, \"seekCache\");\n    __publicField(this, \"newDocumentQueue\", []);\n    __publicField(this, \"mousePos\", null);\n    __publicField(this, \"touchActive\", null);\n    /** True while a user-initiated seek (play()/pause(offset)) is in progress. */\n    __publicField(this, \"seekInProgress\", false);\n    /** Handle for the pending captureSeekCacheEntry setTimeout, so we can cancel it on a new seek. */\n    __publicField(this, \"pendingCaptureTimer\", null);\n    __publicField(this, \"lastMouseDownEvent\", null);\n    // Keep the rootNode of the last hovered element. So  when hovering a new element, we can remove the last hovered element's :hover style.\n    __publicField(this, \"lastHoveredRootNode\");\n    // In the fast-forward mode, only the last selection data needs to be applied.\n    __publicField(this, \"lastSelectionData\", null);\n    // In the fast-forward mode using VirtualDom optimization, all stylesheetRule, and styleDeclaration events on constructed StyleSheets will be delayed to get applied until the flush stage.\n    __publicField(this, \"constructedStyleMutations\", []);\n    // Similar to the reason for constructedStyleMutations.\n    __publicField(this, \"adoptedStyleSheets\", []);\n    // Inline adoptedStyleSheets from iframe documents encountered while usingVirtualDom.\n    // Deferred until the Flush handler materializes real nodes via diff().\n    __publicField(this, \"snapshotAdoptedStyleSheetQueue\", []);\n    __publicField(this, \"handleResize\", (dimension) => {\n      this.iframe.style.display = \"inherit\";\n      for (const el of [this.mouseTail, this.iframe]) {\n        if (!el) {\n          continue;\n        }\n        el.setAttribute(\"width\", String(dimension.width));\n        el.setAttribute(\"height\", String(dimension.height));\n      }\n    });\n    // Replays a batch of \"sync\" events instantly to rebuild the DOM state up\n    // to baselineTime. Each event is cast (executed) in order, except:\n    //\n    //   - DomContentLoaded, Load, Custom: always skipped (no DOM effect)\n    //   - IncrementalSnapshot BEFORE the last FullSnapshot: skipped, because\n    //     FullSnapshot rebuilds the entire DOM from scratch, discarding any\n    //     prior incremental mutations\n    //   - IncrementalSnapshot AFTER the last FullSnapshot: applied, because\n    //     these represent mutations on top of the rebuilt DOM\n    //   - Meta, FullSnapshot, Plugin: always applied\n    __publicField(this, \"applyEventsSynchronously\", (events) => {\n      var _a2;\n      let lastFullSnapshotIndex = -1;\n      for (let i2 = events.length - 1; i2 >= 0; i2--) {\n        if (events[i2].type === EventType.FullSnapshot) {\n          lastFullSnapshotIndex = i2;\n          break;\n        }\n      }\n      let startIdx = 0;\n      if (this.config.useSeekCache && events.length > 0) {\n        const fullSnapshotEvt = events.find(\n          (e2) => e2.type === EventType.FullSnapshot\n        );\n        if (fullSnapshotEvt) {\n          const targetTime = events[events.length - 1].timestamp;\n          const checkpoint = this.seekCache.findBestFor(\n            targetTime,\n            fullSnapshotEvt.timestamp\n          );\n          if (checkpoint) {\n            const metaEvt = events.find((e2) => e2.type === EventType.Meta);\n            if (metaEvt) {\n              this.getCastFn(metaEvt, true)();\n            }\n            this.mediaManager.reset();\n            this.styleMirror.reset();\n            this.rebuildFullSnapshot(\n              checkpoint.event,\n              /* isSync */\n              true\n            );\n            this.firstFullSnapshot = true;\n            (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo(\n              checkpoint.event.data.initialOffset\n            );\n            let lo = 0;\n            let hi = events.length;\n            while (lo < hi) {\n              const mid = lo + hi >>> 1;\n              if (events[mid].timestamp <= checkpoint.timestamp) lo = mid + 1;\n              else hi = mid;\n            }\n            startIdx = lo;\n          }\n        }\n      }\n      for (let i2 = startIdx; i2 < events.length; i2++) {\n        const event = events[i2];\n        switch (event.type) {\n          case EventType.DomContentLoaded:\n          case EventType.Load:\n          case EventType.Custom:\n            continue;\n          case EventType.IncrementalSnapshot:\n            if (i2 < lastFullSnapshotIndex) {\n              continue;\n            }\n            break;\n          case EventType.FullSnapshot:\n          case EventType.Meta:\n          case EventType.Plugin:\n            break;\n        }\n        const castFn = this.getCastFn(event, true);\n        castFn();\n      }\n    });\n    __publicField(this, \"getCastFn\", (event, isSync = false) => {\n      let castFn;\n      switch (event.type) {\n        case EventType.DomContentLoaded:\n        case EventType.Load:\n          break;\n        case EventType.Custom:\n          castFn = () => {\n            this.emitter.emit(ReplayerEvents.CustomEvent, event);\n          };\n          break;\n        case EventType.Meta:\n          castFn = () => this.emitter.emit(ReplayerEvents.Resize, {\n            width: event.data.width,\n            height: event.data.height\n          });\n          break;\n        case EventType.FullSnapshot:\n          castFn = () => {\n            var _a2;\n            if (this.firstFullSnapshot) {\n              if (this.firstFullSnapshot === event) {\n                this.firstFullSnapshot = true;\n                return;\n              }\n            } else {\n              this.firstFullSnapshot = true;\n            }\n            this.mediaManager.reset();\n            this.styleMirror.reset();\n            this.rebuildFullSnapshot(event, isSync);\n            (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo(event.data.initialOffset);\n          };\n          break;\n        case EventType.IncrementalSnapshot:\n          castFn = () => {\n            this.applyIncremental(event, isSync);\n            if (isSync) {\n              return;\n            }\n            if (this.config.skipInactive && !this.nextUserInteractionEvent) {\n              for (const _event of this.service.state.context.events) {\n                if (_event.timestamp <= event.timestamp) {\n                  continue;\n                }\n                if (this.isUserInteraction(_event)) {\n                  if (\n                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                    _event.delay - event.delay > this.config.inactivePeriodThreshold * this.speedService.state.context.timer.speed\n                  ) {\n                    this.nextUserInteractionEvent = _event;\n                  }\n                  break;\n                }\n              }\n              if (this.nextUserInteractionEvent) {\n                const skipTime = (\n                  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                  this.nextUserInteractionEvent.delay - event.delay\n                );\n                this.playInternal(this.getCurrentTime() + skipTime);\n                this.nextUserInteractionEvent = null;\n              }\n            }\n          };\n          break;\n      }\n      const wrappedCastFn = () => {\n        if (castFn) {\n          castFn();\n        }\n        for (const plugin of this.config.plugins || []) {\n          if (plugin.handler) plugin.handler(event, isSync, { replayer: this });\n        }\n        this.service.send({ type: \"CAST_EVENT\", payload: { event } });\n        const last_index = this.service.state.context.events.length - 1;\n        if (!this.config.liveMode && event === this.service.state.context.events[last_index]) {\n          const finish = () => {\n            if (last_index < this.service.state.context.events.length - 1) {\n              return;\n            }\n            this.backToNormal();\n            this.service.send(\"END\");\n            this.emitter.emit(ReplayerEvents.Finish);\n          };\n          let finish_buffer = 50;\n          if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.MouseMove && event.data.positions.length) {\n            finish_buffer += Math.max(0, -event.data.positions[0].timeOffset);\n          }\n          setTimeout(finish, finish_buffer);\n        }\n        this.emitter.emit(ReplayerEvents.EventCast, event);\n      };\n      return wrappedCastFn;\n    });\n    if (!(config == null ? void 0 : config.liveMode) && events.length < 2) {\n      throw new Error(\"Replayer need at least 2 events.\");\n    }\n    const defaultConfig = {\n      speed: 1,\n      maxSpeed: 360,\n      root: document.body,\n      loadTimeout: 0,\n      skipInactive: false,\n      inactivePeriodThreshold: 10 * 1e3,\n      showWarning: true,\n      showDebug: false,\n      blockClass: \"rr-block\",\n      liveMode: false,\n      insertStyleRules: [],\n      triggerFocus: true,\n      UNSAFE_replayCanvas: false,\n      pauseAnimation: true,\n      mouseTail: defaultMouseTailConfig,\n      useVirtualDom: true,\n      // Virtual-dom optimization is enabled by default.\n      useSeekCache: false,\n      // Opt-in until production-validated; flip to true once confidence is high.\n      seekCacheMaxEntries: 10,\n      logger: console\n    };\n    this.config = Object.assign({}, defaultConfig, config);\n    this.seekCache = new SeekCache(this.config.seekCacheMaxEntries);\n    this.handleResize = this.handleResize.bind(this);\n    this.getCastFn = this.getCastFn.bind(this);\n    this.applyEventsSynchronously = this.applyEventsSynchronously.bind(this);\n    this.emitter.on(ReplayerEvents.Resize, this.handleResize);\n    this.setupDom();\n    for (const plugin of this.config.plugins || []) {\n      if (plugin.getMirror) plugin.getMirror({ nodeMirror: this.mirror });\n    }\n    this.emitter.on(ReplayerEvents.Flush, () => {\n      if (this.usingVirtualDom) {\n        const replayerHandler = {\n          mirror: this.mirror,\n          applyCanvas: (canvasEvent, canvasMutationData, target) => {\n            void canvasMutation({\n              event: canvasEvent,\n              mutation: canvasMutationData,\n              target,\n              imageMap: this.imageMap,\n              canvasEventMap: this.canvasEventMap,\n              errorHandler: this.warnCanvasMutationFailed.bind(this)\n            });\n          },\n          applyInput: this.applyInput.bind(this),\n          applyScroll: this.applyScroll.bind(this),\n          applyStyleSheetMutation: (data, styleSheet) => {\n            if (data.source === IncrementalSource.StyleSheetRule)\n              this.applyStyleSheetRule(data, styleSheet);\n            else if (data.source === IncrementalSource.StyleDeclaration)\n              this.applyStyleDeclaration(data, styleSheet);\n          },\n          afterAppend: (node2, id) => {\n            for (const plugin of this.config.plugins || []) {\n              if (plugin.onBuild) plugin.onBuild(node2, { id, replayer: this });\n            }\n          }\n        };\n        if (this.iframe.contentDocument)\n          try {\n            diff(\n              this.iframe.contentDocument,\n              this.virtualDom,\n              replayerHandler,\n              this.virtualDom.mirror\n            );\n          } catch (e2) {\n            console.warn(e2);\n          }\n        this.virtualDom.destroyTree();\n        this.usingVirtualDom = false;\n        if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n          for (const key in this.legacy_missingNodeRetryMap) {\n            try {\n              const value = this.legacy_missingNodeRetryMap[key];\n              const realNode = createOrGetNode(\n                value.node,\n                this.mirror,\n                this.virtualDom.mirror\n              );\n              diff(\n                realNode,\n                value.node,\n                replayerHandler,\n                this.virtualDom.mirror\n              );\n              value.node = realNode;\n            } catch (error) {\n              this.warn(error);\n            }\n          }\n        }\n        this.constructedStyleMutations.forEach((data) => {\n          this.applyStyleSheetMutation(data);\n        });\n        this.constructedStyleMutations = [];\n        this.adoptedStyleSheets.forEach((data) => {\n          this.applyAdoptedStyleSheet(data);\n        });\n        this.adoptedStyleSheets = [];\n        this.snapshotAdoptedStyleSheetQueue.forEach(\n          ({ id, adoptedStyleSheets }) => {\n            const node2 = this.mirror.getNode(id);\n            if (node2)\n              this.applySnapshotAdoptedStyleSheets(node2, adoptedStyleSheets);\n          }\n        );\n        this.snapshotAdoptedStyleSheetQueue = [];\n      }\n      if (this.mousePos) {\n        this.moveAndHover(\n          this.mousePos.x,\n          this.mousePos.y,\n          this.mousePos.id,\n          true,\n          this.mousePos.debugData\n        );\n        this.mousePos = null;\n      }\n      if (this.touchActive === true) {\n        this.mouse.classList.add(\"touch-active\");\n      } else if (this.touchActive === false) {\n        this.mouse.classList.remove(\"touch-active\");\n      }\n      this.touchActive = null;\n      if (this.lastMouseDownEvent) {\n        const [target, event] = this.lastMouseDownEvent;\n        target.dispatchEvent(event);\n      }\n      this.lastMouseDownEvent = null;\n      if (this.lastSelectionData) {\n        this.applySelection(this.lastSelectionData);\n        this.lastSelectionData = null;\n      }\n    });\n    this.emitter.on(ReplayerEvents.PlayBack, () => {\n      this.firstFullSnapshot = null;\n      this.mirror.reset();\n      this.styleMirror.reset();\n      this.mediaManager.reset();\n    });\n    this.emitter.on(ReplayerEvents.Flush, () => {\n      if (this.seekInProgress) {\n        this.seekInProgress = false;\n        const seekEndTimeOffset = this.getTimeOffset();\n        this.emitter.emit(ReplayerEvents.SeekEnd, {\n          timeOffset: seekEndTimeOffset\n        });\n      }\n      if (this.config.useSeekCache) {\n        const captureTimestamp = this.service.state.context.baselineTime;\n        if (this.pendingCaptureTimer !== null) {\n          clearTimeout(this.pendingCaptureTimer);\n        }\n        this.pendingCaptureTimer = setTimeout(() => {\n          this.pendingCaptureTimer = null;\n          this.captureSeekCacheEntry(captureTimestamp);\n        }, 0);\n      }\n    });\n    const timer = new Timer([], {\n      speed: this.config.speed\n    });\n    const sortedEvents = events.map((e2) => {\n      if (config && config.unpackFn) {\n        return config.unpackFn(e2);\n      }\n      return e2;\n    }).sort((a1, a2) => a1.timestamp - a2.timestamp);\n    const checkpointIndex = buildCheckpointIndex(sortedEvents);\n    this.service = createPlayerService(\n      {\n        events: sortedEvents,\n        timer,\n        timeOffset: 0,\n        baselineTime: 0,\n        lastPlayedEvent: null,\n        checkpointIndex\n      },\n      {\n        getCastFn: this.getCastFn,\n        applyEventsSynchronously: this.applyEventsSynchronously,\n        emitter: this.emitter\n      }\n    );\n    this.service.start();\n    this.service.subscribe((state) => {\n      this.emitter.emit(ReplayerEvents.StateChange, {\n        player: state\n      });\n    });\n    this.speedService = createSpeedService({\n      normalSpeed: -1,\n      timer\n    });\n    this.speedService.start();\n    this.speedService.subscribe((state) => {\n      this.emitter.emit(ReplayerEvents.StateChange, {\n        speed: state\n      });\n    });\n    this.mediaManager = new MediaManager({\n      warn: this.warn.bind(this),\n      service: this.service,\n      speedService: this.speedService,\n      emitter: this.emitter,\n      getCurrentTime: this.getCurrentTime.bind(this)\n    });\n    const firstMeta = this.service.state.context.events.find(\n      (e2) => e2.type === EventType.Meta\n    );\n    const firstFullsnapshot = this.service.state.context.events.find(\n      (e2) => e2.type === EventType.FullSnapshot\n    );\n    if (firstMeta) {\n      const { width, height } = firstMeta.data;\n      setTimeout(() => {\n        this.emitter.emit(ReplayerEvents.Resize, {\n          width,\n          height\n        });\n      }, 0);\n    }\n    if (firstFullsnapshot) {\n      setTimeout(() => {\n        var _a2;\n        if (this.firstFullSnapshot) {\n          return;\n        }\n        this.firstFullSnapshot = firstFullsnapshot;\n        this.rebuildFullSnapshot(\n          firstFullsnapshot\n        );\n        (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo(\n          firstFullsnapshot.data.initialOffset\n        );\n      }, 1);\n    }\n    if (this.service.state.context.events.find(indicatesTouchDevice)) {\n      this.mouse.classList.add(\"touch-device\");\n    }\n  }\n  get timer() {\n    return this.service.state.context.timer;\n  }\n  on(event, handler) {\n    this.emitter.on(event, handler);\n    return this;\n  }\n  off(event, handler) {\n    this.emitter.off(event, handler);\n    return this;\n  }\n  setConfig(config) {\n    Object.keys(config).forEach((key) => {\n      config[key];\n      this.config[key] = config[key];\n    });\n    if (!this.config.skipInactive) {\n      this.backToNormal();\n    }\n    if (typeof config.speed !== \"undefined\") {\n      this.speedService.send({\n        type: \"SET_SPEED\",\n        payload: {\n          speed: config.speed\n        }\n      });\n    }\n    if (typeof config.mouseTail !== \"undefined\") {\n      if (config.mouseTail === false) {\n        if (this.mouseTail) {\n          this.mouseTail.style.display = \"none\";\n        }\n      } else {\n        if (!this.mouseTail) {\n          this.mouseTail = document.createElement(\"canvas\");\n          this.mouseTail.width = Number.parseFloat(this.iframe.width);\n          this.mouseTail.height = Number.parseFloat(this.iframe.height);\n          this.mouseTail.classList.add(\"replayer-mouse-tail\");\n          this.wrapper.insertBefore(this.mouseTail, this.iframe);\n        }\n        this.mouseTail.style.display = \"inherit\";\n      }\n    }\n  }\n  getMetaData() {\n    const firstEvent = this.service.state.context.events[0];\n    const lastEvent = this.service.state.context.events[this.service.state.context.events.length - 1];\n    return {\n      startTime: firstEvent.timestamp,\n      endTime: lastEvent.timestamp,\n      totalTime: lastEvent.timestamp - firstEvent.timestamp\n    };\n  }\n  /**\n   * Get the actual time offset the player is at now compared to the first event.\n   */\n  getCurrentTime() {\n    return this.timer.timeOffset + this.getTimeOffset();\n  }\n  /**\n   * Get the time offset the player is at now compared to the first event, but without regard for the timer.\n   */\n  getTimeOffset() {\n    const { baselineTime, events } = this.service.state.context;\n    return baselineTime - events[0].timestamp;\n  }\n  getMirror() {\n    return this.mirror;\n  }\n  /**\n   * This API was designed to be used as play at any time offset.\n   * Since we minimized the data collected from recorder, we do not\n   * have the ability of undo an event.\n   * So the implementation of play at any time offset will always iterate\n   * all of the events, cast event before the offset synchronously\n   * and cast event after the offset asynchronously with timer.\n   * @param timeOffset - number\n   */\n  play(timeOffset = 0) {\n    this.seekInProgress = true;\n    this.emitter.emit(ReplayerEvents.SeekStart, { timeOffset });\n    this.playInternal(timeOffset);\n  }\n  /**\n   * Internal seek/resume that does NOT emit SeekStart/SeekEnd.  Use this for\n   * programmatic jumps that are not initiated by the user (e.g. skipInactive,\n   * stylesheet-load resume) to avoid spurious loading-indicator flicker.\n   */\n  playInternal(timeOffset = 0) {\n    var _a2, _b;\n    if (this.service.state.matches(\"paused\")) {\n      this.service.send({ type: \"PLAY\", payload: { timeOffset } });\n    } else {\n      this.service.send({ type: \"PAUSE\" });\n      this.service.send({ type: \"PLAY\", payload: { timeOffset } });\n    }\n    (_b = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.getElementsByTagName(\"html\")[0]) == null ? void 0 : _b.classList.remove(\"rrweb-paused\");\n    this.emitter.emit(ReplayerEvents.Start);\n  }\n  pause(timeOffset) {\n    var _a2, _b;\n    if (timeOffset === void 0 && this.service.state.matches(\"playing\")) {\n      this.service.send({ type: \"PAUSE\" });\n    }\n    if (typeof timeOffset === \"number\") {\n      this.play(timeOffset);\n      this.service.send({ type: \"PAUSE\" });\n    }\n    (_b = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.getElementsByTagName(\"html\")[0]) == null ? void 0 : _b.classList.add(\"rrweb-paused\");\n    this.emitter.emit(ReplayerEvents.Pause);\n  }\n  resume(timeOffset = 0) {\n    this.warn(\n      `The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface.`\n    );\n    this.play(timeOffset);\n    this.emitter.emit(ReplayerEvents.Resume);\n  }\n  /**\n   * Totally destroy this replayer and please be careful that this operation is irreversible.\n   * Memory occupation can be released by removing all references to this replayer.\n   */\n  destroy() {\n    this.pause();\n    this.mirror.reset();\n    this.styleMirror.reset();\n    this.mediaManager.reset();\n    this.config.root.removeChild(this.wrapper);\n    this.emitter.emit(ReplayerEvents.Destroy);\n  }\n  startLive(baselineTime) {\n    this.service.send({ type: \"TO_LIVE\", payload: { baselineTime } });\n  }\n  addEvent(rawEvent) {\n    const event = this.config.unpackFn ? this.config.unpackFn(rawEvent) : rawEvent;\n    if (indicatesTouchDevice(event)) {\n      this.mouse.classList.add(\"touch-device\");\n    }\n    void Promise.resolve().then(\n      () => this.service.send({ type: \"ADD_EVENT\", payload: { event } })\n    );\n  }\n  enableInteract() {\n    this.iframe.setAttribute(\"scrolling\", \"auto\");\n    this.iframe.style.pointerEvents = \"auto\";\n  }\n  disableInteract() {\n    this.iframe.setAttribute(\"scrolling\", \"no\");\n    this.iframe.style.pointerEvents = \"none\";\n  }\n  /**\n   * Empties the replayer's cache and reclaims memory.\n   * The replayer will use this cache to speed up the playback.\n   */\n  resetCache() {\n    this.cache = createCache();\n  }\n  /**\n   * Empties the seek-checkpoint cache.  Call this if you load a new set of\n   * events into an existing Replayer instance to avoid stale snapshots.\n   */\n  resetSeekCache() {\n    this.seekCache.clear();\n  }\n  setupDom() {\n    this.wrapper = document.createElement(\"div\");\n    this.wrapper.classList.add(\"replayer-wrapper\");\n    this.config.root.appendChild(this.wrapper);\n    this.mouse = document.createElement(\"div\");\n    this.mouse.classList.add(\"replayer-mouse\");\n    this.wrapper.appendChild(this.mouse);\n    if (this.config.mouseTail !== false) {\n      this.mouseTail = document.createElement(\"canvas\");\n      this.mouseTail.classList.add(\"replayer-mouse-tail\");\n      this.mouseTail.style.display = \"inherit\";\n      this.wrapper.appendChild(this.mouseTail);\n    }\n    this.iframe = document.createElement(\"iframe\");\n    const attributes = [\"allow-same-origin\"];\n    if (this.config.UNSAFE_replayCanvas) {\n      attributes.push(\"allow-scripts\");\n    }\n    this.iframe.style.display = \"none\";\n    this.iframe.setAttribute(\"sandbox\", attributes.join(\" \"));\n    this.disableInteract();\n    this.wrapper.appendChild(this.iframe);\n    if (this.iframe.contentWindow && this.iframe.contentDocument) {\n      polyfill(\n        this.iframe.contentWindow,\n        this.iframe.contentDocument\n      );\n      polyfill$1(this.iframe.contentWindow);\n    }\n  }\n  /**\n   * Serialize the current iframe DOM into the seek-checkpoint cache so that\n   * future seeks near this timestamp can restore from the cache instead of\n   * replaying all incremental events from the original FullSnapshot.\n   *\n   * This is called asynchronously (via requestIdleCallback / setTimeout) after\n   * each Flush so it does not block the seek operation itself.\n   */\n  captureSeekCacheEntry(timestamp) {\n    if (!this.iframe.contentDocument) return;\n    if (timestamp <= 0) return;\n    const scratchMirror = createMirror$2();\n    this.mirror.getIds().forEach((id) => {\n      const node2 = this.mirror.getNode(id);\n      if (!node2) return;\n      const meta = this.mirror.getMeta(node2);\n      if (meta) scratchMirror.add(node2, meta);\n    });\n    const snapshotNode = snapshot(this.iframe.contentDocument, {\n      mirror: scratchMirror,\n      blockClass: this.config.blockClass,\n      inlineStylesheet: true,\n      onAdoptedStyleSheet: (sheet) => this.styleMirror.add(sheet)\n    });\n    if (!snapshotNode) return;\n    const scrollEl = this.iframe.contentDocument.scrollingElement || this.iframe.contentDocument.documentElement;\n    const initialOffset = {\n      top: (scrollEl == null ? void 0 : scrollEl.scrollTop) ?? 0,\n      left: (scrollEl == null ? void 0 : scrollEl.scrollLeft) ?? 0\n    };\n    this.seekCache.add(timestamp, snapshotNode, initialOffset);\n  }\n  rebuildFullSnapshot(event, isSync = false) {\n    if (!this.iframe.contentDocument) {\n      return this.warn(\"Looks like your replayer has been destroyed.\");\n    }\n    if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n      this.warn(\n        \"Found unresolved missing node map\",\n        this.legacy_missingNodeRetryMap\n      );\n    }\n    this.legacy_missingNodeRetryMap = {};\n    const collectedIframes = [];\n    const collectedDialogs = /* @__PURE__ */ new Set();\n    const afterAppend = (builtNode, id) => {\n      var _a2;\n      if (builtNode.nodeName === \"DIALOG\")\n        collectedDialogs.add(builtNode);\n      this.collectIframeAndAttachDocument(collectedIframes, builtNode);\n      if (this.mediaManager.isSupportedMediaElement(builtNode)) {\n        const { events } = this.service.state.context;\n        this.mediaManager.addMediaElements(\n          builtNode,\n          event.timestamp - events[0].timestamp,\n          this.mirror\n        );\n      }\n      const sn = this.mirror.getMeta(builtNode);\n      if (sn && \"adoptedStyleSheets\" in sn && ((_a2 = sn.adoptedStyleSheets) == null ? void 0 : _a2.length)) {\n        this.applySnapshotAdoptedStyleSheets(builtNode, sn.adoptedStyleSheets);\n      }\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.onBuild)\n          plugin.onBuild(builtNode, {\n            id,\n            replayer: this\n          });\n      }\n    };\n    if (this.usingVirtualDom) {\n      this.virtualDom.destroyTree();\n      this.usingVirtualDom = false;\n    }\n    this.mirror.reset();\n    this.styleMirror.reset();\n    rebuild(event.data.node, {\n      doc: this.iframe.contentDocument,\n      afterAppend,\n      cache: this.cache,\n      mirror: this.mirror\n    });\n    afterAppend(this.iframe.contentDocument, event.data.node.id);\n    for (const { mutationInQueue, builtNode } of collectedIframes) {\n      this.attachDocumentToIframe(mutationInQueue, builtNode);\n      this.newDocumentQueue = this.newDocumentQueue.filter(\n        (m) => m !== mutationInQueue\n      );\n    }\n    const { documentElement, head } = this.iframe.contentDocument;\n    this.insertStyleRules(documentElement, head);\n    collectedDialogs.forEach((d) => applyDialogToTopLevel(d));\n    if (!this.service.state.matches(\"playing\")) {\n      this.iframe.contentDocument.getElementsByTagName(\"html\")[0].classList.add(\"rrweb-paused\");\n    }\n    this.emitter.emit(ReplayerEvents.FullsnapshotRebuilded, event);\n    if (!isSync) {\n      this.waitForStylesheetLoad();\n    }\n    if (this.config.UNSAFE_replayCanvas) {\n      void this.preloadAllImages();\n    }\n  }\n  insertStyleRules(documentElement, head) {\n    var _a2;\n    const injectStylesRules = rules(\n      this.config.blockClass\n    ).concat(this.config.insertStyleRules);\n    if (this.config.pauseAnimation) {\n      injectStylesRules.push(\n        \"html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }\"\n      );\n    }\n    if (!injectStylesRules.length) {\n      return;\n    }\n    if (this.usingVirtualDom) {\n      const styleEl = this.virtualDom.createElement(\"style\");\n      this.virtualDom.mirror.add(\n        styleEl,\n        getDefaultSN(styleEl, this.virtualDom.unserializedId)\n      );\n      documentElement.insertBefore(styleEl, head);\n      styleEl.rules.push({\n        source: IncrementalSource.StyleSheetRule,\n        adds: injectStylesRules.map((cssText, index2) => ({\n          rule: cssText,\n          index: index2\n        }))\n      });\n    } else {\n      const styleEl = document.createElement(\"style\");\n      documentElement.insertBefore(\n        styleEl,\n        head\n      );\n      for (let idx = 0; idx < injectStylesRules.length; idx++) {\n        (_a2 = styleEl.sheet) == null ? void 0 : _a2.insertRule(injectStylesRules[idx], idx);\n      }\n    }\n  }\n  isShadowRoot(root2) {\n    return root2.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n  }\n  insertStyleRulesIntoShadowRoot(root2) {\n    var _a2;\n    const injectStylesRules = rules(\n      this.config.blockClass\n    ).concat(this.config.insertStyleRules);\n    if (!injectStylesRules.length) return;\n    if (this.usingVirtualDom && root2.getAttribute(\"id\") !== INJECTED_STYLE_ID) {\n      const styleEl = this.virtualDom.createElement(\"style\");\n      this.virtualDom.mirror.add(\n        styleEl,\n        getDefaultSN(styleEl, this.virtualDom.unserializedId)\n      );\n      styleEl.setAttribute(\"id\", INJECTED_STYLE_ID);\n      root2.insertBefore(\n        styleEl,\n        root2.firstChild || null\n      );\n      styleEl.rules.push({\n        source: IncrementalSource.StyleSheetRule,\n        adds: injectStylesRules.map((rule2, index2) => ({ rule: rule2, index: index2 }))\n      });\n    } else if (this.isShadowRoot(root2) && !root2.getElementById(INJECTED_STYLE_ID)) {\n      const styleEl = document.createElement(\"style\");\n      styleEl.id = INJECTED_STYLE_ID;\n      root2.insertBefore(styleEl, root2.firstChild ?? null);\n      for (let idx = 0; idx < injectStylesRules.length; idx++) {\n        (_a2 = styleEl.sheet) == null ? void 0 : _a2.insertRule(injectStylesRules[idx], idx);\n      }\n    }\n  }\n  attachDocumentToIframe(mutation, iframeEl) {\n    const mirror2 = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n    const collectedIframes = [];\n    const collectedDialogs = /* @__PURE__ */ new Set();\n    const afterAppend = (builtNode, id) => {\n      var _a2;\n      if (builtNode.nodeName === \"DIALOG\")\n        collectedDialogs.add(builtNode);\n      this.collectIframeAndAttachDocument(collectedIframes, builtNode);\n      const sn = mirror2.getMeta(builtNode);\n      if ((sn == null ? void 0 : sn.type) === NodeType.Element && (sn == null ? void 0 : sn.tagName.toUpperCase()) === \"HTML\") {\n        if (!iframeEl.contentDocument) return;\n        const { documentElement, head } = iframeEl.contentDocument;\n        this.insertStyleRules(\n          documentElement,\n          head\n        );\n      }\n      {\n        const nodeSn = mirror2.getMeta(\n          builtNode\n        );\n        if (nodeSn && \"adoptedStyleSheets\" in nodeSn && ((_a2 = nodeSn.adoptedStyleSheets) == null ? void 0 : _a2.length)) {\n          if (this.usingVirtualDom) {\n            const id2 = mirror2.getId(builtNode);\n            this.snapshotAdoptedStyleSheetQueue.push({\n              id: id2,\n              adoptedStyleSheets: nodeSn.adoptedStyleSheets\n            });\n          } else {\n            this.applySnapshotAdoptedStyleSheets(\n              builtNode,\n              nodeSn.adoptedStyleSheets\n            );\n          }\n        }\n      }\n      if (this.usingVirtualDom) return;\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.onBuild)\n          plugin.onBuild(builtNode, {\n            id,\n            replayer: this\n          });\n      }\n    };\n    const iframeDoc = iframeEl.contentDocument;\n    if (!iframeDoc) return;\n    buildNodeWithSN(mutation.node, {\n      doc: iframeDoc,\n      mirror: mirror2,\n      hackCss: true,\n      skipChild: false,\n      afterAppend,\n      cache: this.cache\n    });\n    afterAppend(iframeDoc, mutation.node.id);\n    for (const { mutationInQueue, builtNode } of collectedIframes) {\n      this.attachDocumentToIframe(mutationInQueue, builtNode);\n      this.newDocumentQueue = this.newDocumentQueue.filter(\n        (m) => m !== mutationInQueue\n      );\n    }\n    collectedDialogs.forEach((d) => applyDialogToTopLevel(d));\n  }\n  collectIframeAndAttachDocument(collected, builtNode) {\n    if (isSerializedIframe(builtNode, this.mirror)) {\n      const mutationInQueue = this.newDocumentQueue.find(\n        (m) => m.parentId === this.mirror.getId(builtNode)\n      );\n      if (mutationInQueue) {\n        collected.push({\n          mutationInQueue,\n          builtNode\n        });\n      }\n    }\n  }\n  /**\n   * pause when loading style sheet, resume when loaded all timeout exceed\n   */\n  waitForStylesheetLoad() {\n    var _a2;\n    const head = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.head;\n    if (head) {\n      const unloadSheets = /* @__PURE__ */ new Set();\n      let timer;\n      let beforeLoadState = this.service.state;\n      const stateHandler = () => {\n        beforeLoadState = this.service.state;\n      };\n      this.emitter.on(ReplayerEvents.Start, stateHandler);\n      this.emitter.on(ReplayerEvents.Pause, stateHandler);\n      const unsubscribe = () => {\n        this.emitter.off(ReplayerEvents.Start, stateHandler);\n        this.emitter.off(ReplayerEvents.Pause, stateHandler);\n      };\n      head.querySelectorAll('link[rel=\"stylesheet\"]').forEach((css) => {\n        if (!css.sheet) {\n          unloadSheets.add(css);\n          css.addEventListener(\"load\", () => {\n            unloadSheets.delete(css);\n            if (unloadSheets.size === 0 && timer !== -1) {\n              if (beforeLoadState.matches(\"playing\")) {\n                this.playInternal(this.getCurrentTime());\n              }\n              this.emitter.emit(ReplayerEvents.LoadStylesheetEnd);\n              if (timer) {\n                clearTimeout(timer);\n              }\n              unsubscribe();\n            }\n          });\n        }\n      });\n      if (unloadSheets.size > 0) {\n        this.service.send({ type: \"PAUSE\" });\n        this.emitter.emit(ReplayerEvents.LoadStylesheetStart);\n        timer = setTimeout(() => {\n          if (beforeLoadState.matches(\"playing\")) {\n            this.playInternal(this.getCurrentTime());\n          }\n          timer = -1;\n          unsubscribe();\n        }, this.config.loadTimeout);\n      }\n    }\n  }\n  /**\n   * pause when there are some canvas drawImage args need to be loaded\n   */\n  async preloadAllImages() {\n    const promises = [];\n    for (const event of this.service.state.context.events) {\n      if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.CanvasMutation) {\n        promises.push(\n          this.deserializeAndPreloadCanvasEvents(event.data, event)\n        );\n        const commands = \"commands\" in event.data ? event.data.commands : [event.data];\n        commands.forEach((c2) => {\n          this.preloadImages(c2, event);\n        });\n      }\n    }\n    return Promise.all(promises);\n  }\n  preloadImages(data, event) {\n    if (data.property === \"drawImage\" && typeof data.args[0] === \"string\" && !this.imageMap.has(event)) {\n      const canvas = document.createElement(\"canvas\");\n      const ctx = canvas.getContext(\"2d\");\n      const imgd = ctx == null ? void 0 : ctx.createImageData(canvas.width, canvas.height);\n      if (imgd) ctx == null ? void 0 : ctx.putImageData(imgd, 0, 0);\n    }\n  }\n  async deserializeAndPreloadCanvasEvents(data, event) {\n    if (!this.canvasEventMap.has(event)) {\n      const status = {\n        isUnchanged: true\n      };\n      if (\"commands\" in data) {\n        const commands = await Promise.all(\n          data.commands.map(async (c2) => {\n            const args = await Promise.all(\n              c2.args.map(deserializeArg(this.imageMap, null, status))\n            );\n            return { ...c2, args };\n          })\n        );\n        if (status.isUnchanged === false)\n          this.canvasEventMap.set(event, { ...data, commands });\n      } else {\n        const args = await Promise.all(\n          data.args.map(deserializeArg(this.imageMap, null, status))\n        );\n        if (status.isUnchanged === false)\n          this.canvasEventMap.set(event, { ...data, args });\n      }\n    }\n  }\n  applyIncremental(e2, isSync) {\n    var _a2, _b, _c;\n    const { data: d } = e2;\n    switch (d.source) {\n      case IncrementalSource.Mutation: {\n        try {\n          this.applyMutation(d, isSync);\n        } catch (error) {\n          this.warn(`Exception in mutation ${error.message || error}`, d);\n        }\n        break;\n      }\n      case IncrementalSource.Drag:\n      case IncrementalSource.TouchMove:\n      case IncrementalSource.MouseMove:\n        if (isSync) {\n          const lastPosition = d.positions[d.positions.length - 1];\n          this.mousePos = {\n            x: lastPosition.x,\n            y: lastPosition.y,\n            id: lastPosition.id,\n            debugData: d\n          };\n        } else {\n          d.positions.forEach((p) => {\n            const action = {\n              doAction: () => {\n                this.moveAndHover(p.x, p.y, p.id, isSync, d);\n              },\n              delay: p.timeOffset + e2.timestamp - this.service.state.context.baselineTime\n            };\n            this.timer.addAction(action);\n          });\n          this.timer.addAction({\n            doAction() {\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            delay: e2.delay - ((_a2 = d.positions[0]) == null ? void 0 : _a2.timeOffset)\n          });\n        }\n        break;\n      case IncrementalSource.MouseInteraction: {\n        if (d.id === -1) {\n          break;\n        }\n        const event = new Event(toLowerCase(MouseInteractions[d.type]));\n        const target = this.mirror.getNode(d.id);\n        if (!target) {\n          return this.debugNodeNotFound(d, d.id);\n        }\n        this.emitter.emit(ReplayerEvents.MouseInteraction, {\n          type: d.type,\n          target\n        });\n        const { triggerFocus } = this.config;\n        switch (d.type) {\n          case MouseInteractions.Blur:\n            if (\"blur\" in target) {\n              target.blur();\n            }\n            break;\n          case MouseInteractions.Focus:\n            if (triggerFocus && target.focus) {\n              target.focus({\n                preventScroll: true\n              });\n            }\n            break;\n          case MouseInteractions.Click:\n          case MouseInteractions.TouchStart:\n          case MouseInteractions.TouchEnd:\n          case MouseInteractions.MouseDown:\n          case MouseInteractions.MouseUp:\n            if (isSync) {\n              if (d.type === MouseInteractions.TouchStart) {\n                this.touchActive = true;\n              } else if (d.type === MouseInteractions.TouchEnd) {\n                this.touchActive = false;\n              }\n              if (d.type === MouseInteractions.MouseDown) {\n                this.lastMouseDownEvent = [target, event];\n              } else if (d.type === MouseInteractions.MouseUp) {\n                this.lastMouseDownEvent = null;\n              }\n              this.mousePos = {\n                x: d.x || 0,\n                y: d.y || 0,\n                id: d.id,\n                debugData: d\n              };\n            } else {\n              if (d.type === MouseInteractions.TouchStart) {\n                this.tailPositions.length = 0;\n              }\n              this.moveAndHover(d.x || 0, d.y || 0, d.id, isSync, d);\n              if (d.type === MouseInteractions.Click) {\n                this.mouse.classList.remove(\"active\");\n                void this.mouse.offsetWidth;\n                this.mouse.classList.add(\"active\");\n              } else if (d.type === MouseInteractions.TouchStart) {\n                void this.mouse.offsetWidth;\n                this.mouse.classList.add(\"touch-active\");\n              } else if (d.type === MouseInteractions.TouchEnd) {\n                this.mouse.classList.remove(\"touch-active\");\n              } else {\n                target.dispatchEvent(event);\n              }\n            }\n            break;\n          case MouseInteractions.TouchCancel:\n            if (isSync) {\n              this.touchActive = false;\n            } else {\n              this.mouse.classList.remove(\"touch-active\");\n            }\n            break;\n          default:\n            target.dispatchEvent(event);\n        }\n        break;\n      }\n      case IncrementalSource.Scroll: {\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id);\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.scrollData = d;\n          break;\n        }\n        this.applyScroll(d, isSync);\n        break;\n      }\n      case IncrementalSource.ViewportResize:\n        this.emitter.emit(ReplayerEvents.Resize, {\n          width: d.width,\n          height: d.height\n        });\n        break;\n      case IncrementalSource.Input: {\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id);\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.inputData = d;\n          break;\n        }\n        this.applyInput(d);\n        break;\n      }\n      case IncrementalSource.MediaInteraction: {\n        const target = this.usingVirtualDom ? this.virtualDom.mirror.getNode(d.id) : this.mirror.getNode(d.id);\n        if (!target) {\n          return this.debugNodeNotFound(d, d.id);\n        }\n        const mediaEl = target;\n        const { events } = this.service.state.context;\n        this.mediaManager.mediaMutation({\n          target: mediaEl,\n          timeOffset: e2.timestamp - events[0].timestamp,\n          mutation: d\n        });\n        break;\n      }\n      case IncrementalSource.StyleSheetRule:\n      case IncrementalSource.StyleDeclaration: {\n        if (this.usingVirtualDom) {\n          if (d.styleId) this.constructedStyleMutations.push(d);\n          else if (d.id)\n            (_b = this.virtualDom.mirror.getNode(d.id)) == null ? void 0 : _b.rules.push(d);\n        } else this.applyStyleSheetMutation(d);\n        break;\n      }\n      case IncrementalSource.CanvasMutation: {\n        if (!this.config.UNSAFE_replayCanvas) {\n          return;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(\n            d.id\n          );\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.canvasMutations.push({\n            event: e2,\n            mutation: d\n          });\n        } else {\n          const target = this.mirror.getNode(d.id);\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          void canvasMutation({\n            event: e2,\n            mutation: d,\n            target,\n            imageMap: this.imageMap,\n            canvasEventMap: this.canvasEventMap,\n            errorHandler: this.warnCanvasMutationFailed.bind(this)\n          });\n        }\n        break;\n      }\n      case IncrementalSource.Font: {\n        try {\n          const fontFace = new FontFace(\n            d.family,\n            d.buffer ? new Uint8Array(JSON.parse(d.fontSource)) : d.fontSource,\n            d.descriptors\n          );\n          (_c = this.iframe.contentDocument) == null ? void 0 : _c.fonts.add(fontFace);\n        } catch (error) {\n          this.warn(error);\n        }\n        break;\n      }\n      case IncrementalSource.Selection: {\n        if (isSync) {\n          this.lastSelectionData = d;\n          break;\n        }\n        this.applySelection(d);\n        break;\n      }\n      case IncrementalSource.AdoptedStyleSheet: {\n        if (this.usingVirtualDom) this.adoptedStyleSheets.push(d);\n        else this.applyAdoptedStyleSheet(d);\n        break;\n      }\n    }\n  }\n  /**\n   * Apply the mutation to the virtual dom or the real dom.\n   * @param d - The mutation data.\n   * @param isSync - Whether the mutation should be applied synchronously (while fast-forwarding).\n   */\n  applyMutation(d, isSync) {\n    if (this.config.useVirtualDom && !this.usingVirtualDom && isSync) {\n      this.usingVirtualDom = true;\n      if (!this.iframe.contentDocument) return;\n      buildFromDom(this.iframe.contentDocument, this.mirror, this.virtualDom);\n      if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n        for (const key in this.legacy_missingNodeRetryMap) {\n          try {\n            const value = this.legacy_missingNodeRetryMap[key];\n            const virtualNode = buildFromNode(\n              value.node,\n              this.virtualDom,\n              this.mirror\n            );\n            if (virtualNode) value.node = virtualNode;\n          } catch (error) {\n            this.warn(error);\n          }\n        }\n      }\n    }\n    const mirror2 = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n    d.removes = d.removes.filter((mutation) => {\n      if (!mirror2.getNode(mutation.id)) {\n        this.warnNodeNotFound(d, mutation.id);\n        return false;\n      }\n      return true;\n    });\n    d.removes.forEach((mutation) => {\n      var _a2;\n      const target = mirror2.getNode(mutation.id);\n      if (!target) {\n        return;\n      }\n      let parent = mirror2.getNode(\n        mutation.parentId\n      );\n      if (!parent) {\n        return this.warnNodeNotFound(d, mutation.parentId);\n      }\n      if (mutation.isShadow && hasShadowRoot(parent)) {\n        parent = parent.shadowRoot;\n      }\n      mirror2.removeNodeFromMap(target);\n      if (parent)\n        try {\n          parent.removeChild(target);\n          if (this.usingVirtualDom && target.nodeName === \"#text\" && parent.nodeName === \"STYLE\" && ((_a2 = parent.rules) == null ? void 0 : _a2.length) > 0)\n            parent.rules = [];\n        } catch (error) {\n          if (error instanceof DOMException) {\n            this.warn(\n              \"parent could not remove child in mutation\",\n              parent,\n              target,\n              d\n            );\n          } else {\n            throw error;\n          }\n        }\n    });\n    const legacy_missingNodeMap = {\n      ...this.legacy_missingNodeRetryMap\n    };\n    const queue = [];\n    const nextNotInDOM = (mutation) => {\n      let next = null;\n      if (mutation.nextId) {\n        next = mirror2.getNode(mutation.nextId);\n      }\n      if (mutation.nextId !== null && mutation.nextId !== void 0 && mutation.nextId !== -1 && !next) {\n        return true;\n      }\n      return false;\n    };\n    const appendNode = (mutation) => {\n      var _a2, _b;\n      if (!this.iframe.contentDocument) {\n        return this.warn(\"Looks like your replayer has been destroyed.\");\n      }\n      let parent = mirror2.getNode(\n        mutation.parentId\n      );\n      if (!parent) {\n        if (mutation.node.type === NodeType.Document) {\n          return this.newDocumentQueue.push(mutation);\n        }\n        return queue.push(mutation);\n      }\n      if (mutation.node.isShadow) {\n        if (!hasShadowRoot(parent)) {\n          parent.attachShadow({ mode: \"open\" });\n          parent = parent.shadowRoot;\n        } else {\n          parent = parent.shadowRoot;\n        }\n        this.insertStyleRulesIntoShadowRoot(parent);\n      }\n      let previous = null;\n      let next = null;\n      if (mutation.previousId) {\n        previous = mirror2.getNode(mutation.previousId);\n      }\n      if (mutation.nextId) {\n        next = mirror2.getNode(mutation.nextId);\n      }\n      if (nextNotInDOM(mutation)) {\n        return queue.push(mutation);\n      }\n      if (mutation.node.rootId && !mirror2.getNode(mutation.node.rootId)) {\n        return;\n      }\n      const targetDoc = mutation.node.rootId ? mirror2.getNode(mutation.node.rootId) : this.usingVirtualDom ? this.virtualDom : this.iframe.contentDocument;\n      if (isSerializedIframe(parent, mirror2)) {\n        this.attachDocumentToIframe(\n          mutation,\n          parent\n        );\n        return;\n      }\n      const afterAppend = (node2, id) => {\n        if (this.usingVirtualDom) return;\n        applyDialogToTopLevel(node2);\n        for (const plugin of this.config.plugins || []) {\n          if (plugin.onBuild) plugin.onBuild(node2, { id, replayer: this });\n        }\n      };\n      const target = buildNodeWithSN(mutation.node, {\n        doc: targetDoc,\n        // can be Document or RRDocument\n        mirror: mirror2,\n        // can be this.mirror or virtualDom.mirror\n        skipChild: true,\n        hackCss: true,\n        cache: this.cache,\n        /**\n         * caveat: `afterAppend` only gets called on child nodes of target\n         * we have to call it again below when this target was added to the DOM\n         */\n        afterAppend\n      });\n      if (mutation.previousId === -1 || mutation.nextId === -1) {\n        legacy_missingNodeMap[mutation.node.id] = {\n          node: target,\n          mutation\n        };\n        return;\n      }\n      const parentSn = mirror2.getMeta(parent);\n      if (parentSn && parentSn.type === NodeType.Element && mutation.node.type === NodeType.Text) {\n        const prospectiveSiblings = Array.isArray(parent.childNodes) ? parent.childNodes : Array.from(parent.childNodes);\n        if (parentSn.tagName === \"textarea\") {\n          for (const c2 of prospectiveSiblings) {\n            if (c2.nodeType === parent.TEXT_NODE) {\n              parent.removeChild(c2);\n            }\n          }\n        } else if (parentSn.tagName === \"style\" && prospectiveSiblings.length === 1) {\n          for (const cssText of prospectiveSiblings) {\n            if (cssText.nodeType === parent.TEXT_NODE && !mirror2.hasNode(cssText)) {\n              target.textContent = cssText.textContent;\n              parent.removeChild(cssText);\n            }\n          }\n        }\n      } else if ((parentSn == null ? void 0 : parentSn.type) === NodeType.Document) {\n        const parentDoc = parent;\n        if (mutation.node.type === NodeType.DocumentType && ((_a2 = parentDoc.childNodes[0]) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_TYPE_NODE)\n          parentDoc.removeChild(parentDoc.childNodes[0]);\n        if (target.nodeName === \"HTML\" && parentDoc.documentElement)\n          parentDoc.removeChild(\n            parentDoc.documentElement\n          );\n      }\n      if (previous && previous.nextSibling && previous.nextSibling.parentNode) {\n        parent.insertBefore(\n          target,\n          previous.nextSibling\n        );\n      } else if (next && next.parentNode) {\n        parent.contains(next) ? parent.insertBefore(target, next) : parent.insertBefore(target, null);\n      } else {\n        parent.appendChild(target);\n      }\n      afterAppend(target, mutation.node.id);\n      if (this.usingVirtualDom && target.nodeName === \"#text\" && parent.nodeName === \"STYLE\" && ((_b = parent.rules) == null ? void 0 : _b.length) > 0)\n        parent.rules = [];\n      if (isSerializedIframe(target, this.mirror)) {\n        const targetId = this.mirror.getId(target);\n        const mutationInQueue = this.newDocumentQueue.find(\n          (m) => m.parentId === targetId\n        );\n        if (mutationInQueue) {\n          this.attachDocumentToIframe(\n            mutationInQueue,\n            target\n          );\n          this.newDocumentQueue = this.newDocumentQueue.filter(\n            (m) => m !== mutationInQueue\n          );\n        }\n      }\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(\n          legacy_missingNodeMap,\n          parent,\n          target,\n          mutation\n        );\n      }\n    };\n    d.adds.forEach((mutation) => {\n      appendNode(mutation);\n    });\n    const startTime = Date.now();\n    while (queue.length) {\n      const resolveTrees = queueToResolveTrees(queue);\n      queue.length = 0;\n      if (Date.now() - startTime > 500) {\n        this.warn(\n          \"Timeout in the loop, please check the resolve tree data:\",\n          resolveTrees\n        );\n        break;\n      }\n      for (const tree of resolveTrees) {\n        const parent = mirror2.getNode(tree.value.parentId);\n        if (!parent) {\n          this.debug(\n            \"Drop resolve tree since there is no parent for the root node.\",\n            tree\n          );\n        } else {\n          iterateResolveTree(tree, (mutation) => {\n            appendNode(mutation);\n          });\n        }\n      }\n    }\n    if (Object.keys(legacy_missingNodeMap).length) {\n      Object.assign(this.legacy_missingNodeRetryMap, legacy_missingNodeMap);\n    }\n    uniqueTextMutations(d.texts).forEach((mutation) => {\n      var _a2;\n      const target = mirror2.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r2) => r2.id === mutation.id)) {\n          return;\n        }\n        return this.warnNodeNotFound(d, mutation.id);\n      }\n      const parentEl = target.parentElement;\n      if (mutation.value && parentEl && parentEl.tagName === \"STYLE\") {\n        target.textContent = adaptCssForReplay(mutation.value, this.cache);\n      } else {\n        target.textContent = mutation.value;\n      }\n      if (this.usingVirtualDom) {\n        const parent = target.parentNode;\n        if (((_a2 = parent == null ? void 0 : parent.rules) == null ? void 0 : _a2.length) > 0) parent.rules = [];\n      }\n    });\n    d.attributes.forEach((mutation) => {\n      var _a2;\n      const target = mirror2.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r2) => r2.id === mutation.id)) {\n          return;\n        }\n        return this.warnNodeNotFound(d, mutation.id);\n      }\n      for (const attributeName in mutation.attributes) {\n        if (typeof attributeName === \"string\") {\n          const value = mutation.attributes[attributeName];\n          if (value === null) {\n            target.removeAttribute(attributeName);\n            if (attributeName === \"open\")\n              removeDialogFromTopLevel(target, mutation);\n          } else if (typeof value === \"string\") {\n            try {\n              if (attributeName === \"_cssText\" && (target.nodeName === \"LINK\" || target.nodeName === \"STYLE\")) {\n                try {\n                  const newSn = mirror2.getMeta(\n                    target\n                  );\n                  Object.assign(\n                    newSn.attributes,\n                    mutation.attributes\n                  );\n                  const newNode = buildNodeWithSN(newSn, {\n                    doc: target.ownerDocument,\n                    // can be Document or RRDocument\n                    mirror: mirror2,\n                    skipChild: true,\n                    hackCss: true,\n                    cache: this.cache\n                  });\n                  const siblingNode = target.nextSibling;\n                  const parentNode2 = target.parentNode;\n                  if (newNode && parentNode2) {\n                    parentNode2.removeChild(target);\n                    parentNode2.insertBefore(\n                      newNode,\n                      siblingNode\n                    );\n                    mirror2.replace(mutation.id, newNode);\n                    break;\n                  }\n                } catch (e2) {\n                }\n              }\n              if (attributeName === \"value\" && target.nodeName === \"TEXTAREA\") {\n                const textarea = target;\n                textarea.childNodes.forEach(\n                  (c2) => textarea.removeChild(c2)\n                );\n                const tn = (_a2 = target.ownerDocument) == null ? void 0 : _a2.createTextNode(value);\n                if (tn) {\n                  textarea.appendChild(tn);\n                }\n              } else {\n                target.setAttribute(\n                  attributeName,\n                  value\n                );\n              }\n              if (attributeName === \"rr_open_mode\" && target.nodeName === \"DIALOG\") {\n                applyDialogToTopLevel(target, mutation);\n              }\n            } catch (error) {\n              this.warn(\n                \"An error occurred may due to the checkout feature.\",\n                error\n              );\n            }\n          } else if (attributeName === \"style\") {\n            const styleValues = value;\n            const targetEl = target;\n            for (const s2 in styleValues) {\n              if (styleValues[s2] === false) {\n                targetEl.style.removeProperty(s2);\n              } else if (styleValues[s2] instanceof Array) {\n                const svp = styleValues[s2];\n                targetEl.style.setProperty(s2, svp[0], svp[1]);\n              } else {\n                const svs = styleValues[s2];\n                targetEl.style.setProperty(s2, svs);\n              }\n            }\n          }\n        }\n      }\n    });\n  }\n  /**\n   * Apply the scroll data on real elements.\n   * If the replayer is in sync mode, smooth scroll behavior should be disabled.\n   * @param d - the scroll data\n   * @param isSync - whether the replayer is in sync mode(fast-forward)\n   */\n  applyScroll(d, isSync) {\n    var _a2, _b;\n    const target = this.mirror.getNode(d.id);\n    if (!target) {\n      return this.debugNodeNotFound(d, d.id);\n    }\n    const sn = this.mirror.getMeta(target);\n    if (target === this.iframe.contentDocument) {\n      (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? \"auto\" : \"smooth\"\n      });\n    } else if ((sn == null ? void 0 : sn.type) === NodeType.Document) {\n      (_b = target.defaultView) == null ? void 0 : _b.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? \"auto\" : \"smooth\"\n      });\n    } else {\n      try {\n        target.scrollTo({\n          top: d.y,\n          left: d.x,\n          behavior: isSync ? \"auto\" : \"smooth\"\n        });\n      } catch (error) {\n      }\n    }\n  }\n  applyInput(d) {\n    const target = this.mirror.getNode(d.id);\n    if (!target) {\n      return this.debugNodeNotFound(d, d.id);\n    }\n    try {\n      target.checked = d.isChecked;\n      target.value = d.text;\n    } catch (error) {\n    }\n  }\n  applySelection(d) {\n    try {\n      const selectionSet = /* @__PURE__ */ new Set();\n      const ranges = d.ranges.map(({ start, startOffset, end, endOffset }) => {\n        const startContainer = this.mirror.getNode(start);\n        const endContainer = this.mirror.getNode(end);\n        if (!startContainer || !endContainer) return;\n        const result2 = new Range();\n        result2.setStart(startContainer, startOffset);\n        result2.setEnd(endContainer, endOffset);\n        const doc = startContainer.ownerDocument;\n        const selection = doc == null ? void 0 : doc.getSelection();\n        selection && selectionSet.add(selection);\n        return {\n          range: result2,\n          selection\n        };\n      });\n      selectionSet.forEach((s2) => s2.removeAllRanges());\n      ranges.forEach((r2) => {\n        var _a2;\n        return r2 && ((_a2 = r2.selection) == null ? void 0 : _a2.addRange(r2.range));\n      });\n    } catch (error) {\n    }\n  }\n  applyStyleSheetMutation(data) {\n    var _a2;\n    let styleSheet = null;\n    if (data.styleId) styleSheet = this.styleMirror.getStyle(data.styleId);\n    else if (data.id)\n      styleSheet = ((_a2 = this.mirror.getNode(data.id)) == null ? void 0 : _a2.sheet) || null;\n    if (!styleSheet) return;\n    if (data.source === IncrementalSource.StyleSheetRule)\n      this.applyStyleSheetRule(data, styleSheet);\n    else if (data.source === IncrementalSource.StyleDeclaration)\n      this.applyStyleDeclaration(data, styleSheet);\n  }\n  applyStyleSheetRule(data, styleSheet) {\n    var _a2, _b, _c, _d;\n    (_a2 = data.adds) == null ? void 0 : _a2.forEach(({ rule: rule2, index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index: index2 } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.insertRule(rule2, index2);\n        } else {\n          const index2 = nestedIndex === void 0 ? void 0 : Math.min(nestedIndex, styleSheet.cssRules.length);\n          styleSheet == null ? void 0 : styleSheet.insertRule(rule2, index2);\n        }\n      } catch (e2) {\n      }\n    });\n    (_b = data.removes) == null ? void 0 : _b.forEach(({ index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index: index2 } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.deleteRule(index2 || 0);\n        } else {\n          styleSheet == null ? void 0 : styleSheet.deleteRule(nestedIndex);\n        }\n      } catch (e2) {\n      }\n    });\n    if (data.replace)\n      try {\n        void ((_c = styleSheet.replace) == null ? void 0 : _c.call(styleSheet, data.replace));\n      } catch (e2) {\n      }\n    if (data.replaceSync)\n      try {\n        (_d = styleSheet.replaceSync) == null ? void 0 : _d.call(styleSheet, data.replaceSync);\n      } catch (e2) {\n      }\n  }\n  applyStyleDeclaration(data, styleSheet) {\n    if (data.set) {\n      const rule2 = getNestedRule(\n        styleSheet.rules,\n        data.index\n      );\n      rule2.style.setProperty(\n        data.set.property,\n        data.set.value,\n        data.set.priority\n      );\n    }\n    if (data.remove) {\n      const rule2 = getNestedRule(\n        styleSheet.rules,\n        data.index\n      );\n      rule2.style.removeProperty(data.remove.property);\n    }\n  }\n  applySnapshotAdoptedStyleSheets(node2, adoptedStyleSheets) {\n    var _a2;\n    let hostWindow = null;\n    if (hasShadowRoot(node2))\n      hostWindow = ((_a2 = node2.ownerDocument) == null ? void 0 : _a2.defaultView) || null;\n    else if (node2.nodeName === \"#document\")\n      hostWindow = node2.defaultView;\n    if (!hostWindow) return;\n    const sheets = [];\n    for (const { styleId, rules: rules2 } of adoptedStyleSheets) {\n      const existing = this.styleMirror.getStyle(styleId);\n      if (existing) {\n        if (rules2.length) {\n          this.applyStyleSheetRule(\n            { source: IncrementalSource.StyleSheetRule, adds: rules2 },\n            existing\n          );\n        }\n        sheets.push(existing);\n        continue;\n      }\n      try {\n        const sheet = new hostWindow.CSSStyleSheet();\n        this.styleMirror.add(sheet, styleId);\n        if (rules2.length) {\n          this.applyStyleSheetRule(\n            { source: IncrementalSource.StyleSheetRule, adds: rules2 },\n            sheet\n          );\n        }\n        sheets.push(sheet);\n      } catch (e2) {\n      }\n    }\n    if (hasShadowRoot(node2)) node2.shadowRoot.adoptedStyleSheets = sheets;\n    else if (node2.nodeName === \"#document\")\n      node2.adoptedStyleSheets = sheets;\n  }\n  applyAdoptedStyleSheet(data) {\n    var _a2;\n    const targetHost = this.mirror.getNode(data.id);\n    if (!targetHost) return;\n    (_a2 = data.styles) == null ? void 0 : _a2.forEach((style) => {\n      var _a3;\n      let newStyleSheet = null;\n      let hostWindow = null;\n      if (hasShadowRoot(targetHost))\n        hostWindow = ((_a3 = targetHost.ownerDocument) == null ? void 0 : _a3.defaultView) || null;\n      else if (targetHost.nodeName === \"#document\")\n        hostWindow = targetHost.defaultView;\n      if (!hostWindow) return;\n      try {\n        newStyleSheet = new hostWindow.CSSStyleSheet();\n        this.styleMirror.add(newStyleSheet, style.styleId);\n        this.applyStyleSheetRule(\n          {\n            source: IncrementalSource.StyleSheetRule,\n            adds: style.rules\n          },\n          newStyleSheet\n        );\n      } catch (e2) {\n      }\n    });\n    const MAX_RETRY_TIME = 10;\n    let count = 0;\n    const adoptStyleSheets = (targetHost2, styleIds) => {\n      const stylesToAdopt = styleIds.map((styleId) => this.styleMirror.getStyle(styleId)).filter((style) => style !== null);\n      if (hasShadowRoot(targetHost2))\n        targetHost2.shadowRoot.adoptedStyleSheets = stylesToAdopt;\n      else if (targetHost2.nodeName === \"#document\")\n        targetHost2.adoptedStyleSheets = stylesToAdopt;\n      if (stylesToAdopt.length !== styleIds.length && count < MAX_RETRY_TIME) {\n        setTimeout(\n          () => adoptStyleSheets(targetHost2, styleIds),\n          0 + 100 * count\n        );\n        count++;\n      }\n    };\n    adoptStyleSheets(targetHost, data.styleIds);\n  }\n  legacy_resolveMissingNode(map, parent, target, targetMutation) {\n    const { previousId, nextId } = targetMutation;\n    const previousInMap = previousId && map[previousId];\n    const nextInMap = nextId && map[nextId];\n    if (previousInMap) {\n      const { node: node2, mutation } = previousInMap;\n      parent.insertBefore(node2, target);\n      delete map[mutation.node.id];\n      delete this.legacy_missingNodeRetryMap[mutation.node.id];\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(map, parent, node2, mutation);\n      }\n    }\n    if (nextInMap) {\n      const { node: node2, mutation } = nextInMap;\n      parent.insertBefore(\n        node2,\n        target.nextSibling\n      );\n      delete map[mutation.node.id];\n      delete this.legacy_missingNodeRetryMap[mutation.node.id];\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(map, parent, node2, mutation);\n      }\n    }\n  }\n  moveAndHover(x, y, id, isSync, debugData) {\n    const target = this.mirror.getNode(id);\n    if (!target) {\n      return this.debugNodeNotFound(debugData, id);\n    }\n    const base = getBaseDimension(target, this.iframe);\n    const _x = x * base.absoluteScale + base.x;\n    const _y = y * base.absoluteScale + base.y;\n    this.mouse.style.left = `${_x}px`;\n    this.mouse.style.top = `${_y}px`;\n    if (!isSync) {\n      this.drawMouseTail({ x: _x, y: _y });\n    }\n    this.hoverElements(target);\n  }\n  drawMouseTail(position) {\n    if (!this.mouseTail) {\n      return;\n    }\n    const { lineCap, lineWidth, strokeStyle, duration } = this.config.mouseTail === true ? defaultMouseTailConfig : Object.assign({}, defaultMouseTailConfig, this.config.mouseTail);\n    const draw = () => {\n      if (!this.mouseTail) {\n        return;\n      }\n      const ctx = this.mouseTail.getContext(\"2d\");\n      if (!ctx || !this.tailPositions.length) {\n        return;\n      }\n      ctx.clearRect(0, 0, this.mouseTail.width, this.mouseTail.height);\n      ctx.beginPath();\n      ctx.lineWidth = lineWidth;\n      ctx.lineCap = lineCap;\n      ctx.strokeStyle = strokeStyle;\n      ctx.moveTo(this.tailPositions[0].x, this.tailPositions[0].y);\n      this.tailPositions.forEach((p) => ctx.lineTo(p.x, p.y));\n      ctx.stroke();\n    };\n    this.tailPositions.push(position);\n    draw();\n    setTimeout(() => {\n      this.tailPositions = this.tailPositions.filter((p) => p !== position);\n      draw();\n    }, duration / this.speedService.state.context.timer.speed);\n  }\n  hoverElements(el) {\n    var _a2;\n    (_a2 = this.lastHoveredRootNode || this.iframe.contentDocument) == null ? void 0 : _a2.querySelectorAll(\".\\\\:hover\").forEach((hoveredEl) => {\n      hoveredEl.classList.remove(\":hover\");\n    });\n    this.lastHoveredRootNode = el.getRootNode();\n    let currentEl = el;\n    while (currentEl) {\n      if (currentEl.classList) {\n        currentEl.classList.add(\":hover\");\n      }\n      currentEl = currentEl.parentElement;\n    }\n  }\n  isUserInteraction(event) {\n    if (event.type !== EventType.IncrementalSnapshot) {\n      return false;\n    }\n    return event.data.source > IncrementalSource.Mutation && event.data.source <= IncrementalSource.Input;\n  }\n  backToNormal() {\n    this.nextUserInteractionEvent = null;\n    if (this.speedService.state.matches(\"normal\")) {\n      return;\n    }\n    this.speedService.send({ type: \"BACK_TO_NORMAL\" });\n    this.emitter.emit(ReplayerEvents.SkipEnd, {\n      speed: this.speedService.state.context.normalSpeed\n    });\n  }\n  warnNodeNotFound(d, id) {\n    this.warn(`Node with id '${id}' not found. `, d);\n  }\n  warnCanvasMutationFailed(d, error) {\n    this.warn(`Has error on canvas update`, error, \"canvas mutation:\", d);\n  }\n  debugNodeNotFound(d, id) {\n    this.debug(`Node with id '${id}' not found. `, d);\n  }\n  warn(...args) {\n    if (!this.config.showWarning) {\n      return;\n    }\n    this.config.logger.warn(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n  debug(...args) {\n    if (!this.config.showDebug) {\n      return;\n    }\n    this.config.logger.log(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n}\nconst { addCustomEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\nexport {\n  EventType,\n  IncrementalSource,\n  MouseInteractions,\n  Replayer,\n  ReplayerEvents,\n  addCustomEvent,\n  canvasMutation,\n  freezePage,\n  _mirror as mirror,\n  record,\n  takeFullSnapshot,\n  utils\n};\n//# sourceMappingURL=rrweb.js.map\n"],
  "mappings": "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",
  "names": ["__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "_a", "__defProp$1", "__defNormalProp$1", "__publicField$1", "NodeType$3", "NodeType2", "testableAccessors$1", "testableMethods$1", "untaintedBasePrototype$1", "angularZoneUnpatchedAlternative$1", "_a2", "_b", "angularUnpatchedVersionSymbol", "getUntaintedPrototype$1", "candidate", "defaultPrototype", "accessorNames", "isUntaintedAccessors", "accessor", "methodNames", "isUntaintedMethods", "method", "iframeEl", "win", "untaintedObject", "e", "untaintedAccessorCache$1", "getUntaintedAccessor$1", "instance", "cacheKey", "untaintedPrototype", "untaintedAccessor", "untaintedMethodCache$1", "getUntaintedMethod$1", "untaintedMethod", "childNodes$1", "n2", "parentNode$1", "parentElement$1", "textContent$1", "contains$1", "other", "getRootNode$1", "host$1", "styleSheets$1", "shadowRoot$1", "querySelector$1", "selectors", "querySelectorAll$1", "mutationObserverCtor$1", "index$1", "isElement", "isShadowRoot", "hostEl", "isNativeShadowDom", "shadowRoot2", "fixBrowserCompatibilityIssuesInCSS", "cssText", "escapeImportStatement", "rule2", "statement", "stringifyStylesheet", "s2", "rules2", "sheetHref", "stringifiedRules", "stringifyRule", "error", "isCSSImportRule", "importStringified", "absolutifyURLs", "ruleStringified", "isCSSStyleRule", "fixSafariColons", "cssStringified", "regex", "Mirror", "id", "childNode", "node2", "meta", "oldNode", "createMirror$2", "maskInputValue", "element", "maskInputOptions", "tagName", "type", "maskInputFn", "text", "actualType", "toLowerCase", "str", "ORIGINAL_ATTRIBUTE_NAME", "is2DCanvasBlank", "canvas", "ctx", "chunkSize", "x", "y", "getImageData", "originalGetImageData", "pixel", "isNodeMetaEqual", "a2", "b", "getInputType", "extractFileExtension", "path", "baseURL", "url", "err", "match", "extractOrigin", "origin", "URL_IN_CSS_REF", "URL_PROTOCOL_MATCH", "URL_WWW_MATCH", "DATA_URI", "href", "quote1", "path1", "quote2", "path2", "path3", "filePath", "maybeQuote", "stack", "parts", "part", "normalizeCssString", "_testNoPxNorm", "splitCssText", "style", "childNodes2", "splits", "iterCount", "cssTextNorm", "normFactor", "i2", "textContentNorm", "jLimit", "j", "startSubstring", "cssNormSplits", "splitNorm", "prevTextContent", "prevMinLength", "k", "normPart", "markCssSplits", "_DEFAULT_BLOCKED_ELEMENT_BACKGROUND_COLOR", "_id", "tagNameRegex", "IGNORED_NODE", "genId", "getValidTagName$1", "processedTagName", "canvasService", "canvasCtx", "SRCSET_NOT_SPACES", "SRCSET_COMMAS_OR_SPACES", "getAbsoluteSrcsetString", "doc", "attributeValue", "pos", "collectCharacters", "regEx", "chars2", "output", "absoluteToDoc", "descriptorsStr", "inParens", "c2", "cachedDocument", "getHref", "isSVGElement", "el", "customHref", "transformAttribute", "name", "ignoreAttribute", "_value", "_isBlockedElement", "blockClass", "blockSelector", "eIndex", "className", "e2", "classMatchesRegex", "checkAncestors", "needMaskingText", "maskTextClass", "maskTextSelector", "onceIframeLoaded", "listener", "iframeLoadTimeout", "fired", "readyState", "timer", "blankUrl", "onceStylesheetLoaded", "link", "styleSheetLoadTimeout", "styleSheetLoaded", "serializeNode", "options", "mirror2", "needsMask", "inlineStylesheet", "maskTextFn", "maskAttributeFn", "dataURLOptions", "inlineImages", "recordCanvas", "keepIframeSrcFn", "newlyAddedElement", "cssCaptured", "applyBackgroundColorToBlockedElements", "rootId", "getRootId", "serializeElementNode", "serializeTextNode", "docId", "parent", "parentTagName", "textContent2", "isStyle", "isScript", "needBlock", "attributes", "len", "attr", "transformedValue", "maskedValue", "stylesheet", "checked", "canvasDataURL", "blankCanvas", "blankCanvasDataURL", "image", "imageSrc", "priorCrossOrigin", "recordInlineImage", "mediaAttributes", "width", "height", "__spreadValues", "isCustomElement", "lowerIfExists", "maybeAttr", "slimDOMExcluded", "sn", "slimDOMOptions", "serializeAdoptedStyleSheets", "sheets", "onAdoptedStyleSheet", "emittedStyleIds", "sheet", "styleId", "index2", "serializeNodeWithId", "skipChild", "onSerialize", "onIframeLoad", "onStylesheetLoad", "stylesheetLoadTimeout", "preserveWhiteSpace", "_serializedNode", "serializedNode", "recordChild", "shadowRootEl", "doc2", "bypassOptions", "childN", "serializedChildNode", "iframeDoc", "serializedIframeNode", "serializedLinkNode", "snapshot", "maskAllInputs", "slimDOM", "MEDIA_SELECTOR", "MEDIA_SELECTOR_GLOBAL", "mediaSelectorPlugin", "atrule", "pseudoClassPlugin", "fixed", "selector", "getDefaultExportFromCjs$1", "getAugmentedNamespace$1", "f2", "a22", "d", "picocolors_browser$1", "hasRequiredPicocolors_browser$1", "requirePicocolors_browser$1", "create", "__viteBrowserExternal$2", "__viteBrowserExternal$1$1", "require$$2$1", "cssSyntaxError$1", "hasRequiredCssSyntaxError$1", "requireCssSyntaxError$1", "pico", "terminalHighlight", "CssSyntaxError", "message", "line", "column", "source", "file", "plugin", "color", "css", "aside", "mark", "highlight", "bold", "gray", "red", "lines", "start", "end", "maxWidth", "number", "gutter", "padding", "subLineStart", "subLineEnd", "subLine", "spacing2", "spacing", "code", "stringifier$1", "hasRequiredStringifier$1", "requireStringifier$1", "DEFAULT_RAW", "capitalize", "Stringifier", "builder", "semicolon", "params", "detect", "buf", "depth", "indent", "step", "between", "after", "last", "child", "before", "left", "right", "string", "own", "root2", "p", "prop", "raw", "stringify_1$1", "hasRequiredStringify$1", "requireStringify$1", "stringify", "symbols$1", "hasRequiredSymbols$1", "requireSymbols$1", "node$1", "hasRequiredNode$1", "requireNode$1", "isClean", "my", "cloneNode", "cloned", "sourceOffset", "inputCSS", "position", "offset", "Node2", "defaults", "add", "overrides", "keepBetween", "opts", "next", "inputString", "defaultType", "nodes", "bookmark", "foundSelf", "result2", "_", "inputs", "emitInputs", "inputsNextIndex", "inputId", "input2", "stringifier2", "data", "comment$1", "hasRequiredComment$1", "requireComment$1", "Comment", "declaration$1", "hasRequiredDeclaration$1", "requireDeclaration$1", "Declaration", "__spreadProps", "container$1", "hasRequiredContainer$1", "requireContainer$1", "AtRule", "parse", "Root", "Rule", "cleanSource", "markTreeDirty", "Container", "children", "callback", "iterator", "condition", "args", "cb", "exist", "existIndex", "sample", "pattern", "decl", "dependant", "atRule$1", "hasRequiredAtRule$1", "requireAtRule$1", "document$1$1", "hasRequiredDocument$1", "requireDocument$1", "LazyResult", "Processor", "Document2", "nonSecure$1", "hasRequiredNonSecure$1", "requireNonSecure$1", "urlAlphabet", "size", "alphabet", "defaultSize", "previousMap$1", "hasRequiredPreviousMap$1", "requirePreviousMap$1", "existsSync", "readFileSync", "dirname", "join", "SourceMapConsumer", "SourceMapGenerator", "fromBase64", "PreviousMap", "prev", "baseCharsetUri", "baseUri", "charsetUri", "uri", "uriMatch", "baseUriMatch", "encoding", "sourceMapString", "map", "comments", "prevPath", "input$1", "hasRequiredInput$1", "requireInput$1", "nanoid", "isAbsolute", "resolve", "fileURLToPath", "pathToFileURL", "lineToIndexCache", "sourceMapAvailable", "pathAvailable", "getLineToIndex", "lineToIndex", "prevIndex", "l2", "Input", "endColumn", "endLine", "endOffset", "lastLine", "min", "max", "mid", "consumer", "from", "to", "fromUrl", "json", "root$1", "hasRequiredRoot$1", "requireRoot$1", "ignore", "list_1$1", "hasRequiredList$1", "requireList$1", "list", "spaces", "separators", "array", "current", "split", "func", "inQuote", "prevQuote", "escape", "letter", "rule$1", "hasRequiredRule$1", "requireRule$1", "values", "sep", "fromJSON_1$1", "hasRequiredFromJSON$1", "requireFromJSON$1", "fromJSON", "ownInputs", "__objRest", "inputHydrated", "mapGenerator$1", "hasRequiredMapGenerator$1", "requireMapGenerator$1", "relative", "MapGenerator", "cssString", "content", "eol", "noSource", "mapping", "annotation", "cached", "already", "fileURL", "tokenize$1", "hasRequiredTokenize$1", "requireTokenize$1", "SINGLE_QUOTE", "DOUBLE_QUOTE", "BACKSLASH", "SLASH", "NEWLINE", "SPACE", "FEED", "TAB", "CR", "OPEN_SQUARE", "CLOSE_SQUARE", "OPEN_PARENTHESES", "CLOSE_PARENTHESES", "OPEN_CURLY", "CLOSE_CURLY", "SEMICOLON", "ASTERISK", "COLON", "AT", "RE_AT_END", "RE_WORD_END", "RE_BAD_BRACKET", "RE_HEX_ESCAPE", "quote", "currentToken", "escaped", "escapePos", "length", "buffer", "returned", "unclosed", "what", "endOfFile", "nextToken", "ignoreUnclosed", "controlChar", "back", "token", "parser$1", "hasRequiredParser$1", "requireParser$1", "tokenizer", "SAFE_COMMENT_NEIGHBOR", "findLastWithPosition", "tokens", "Parser", "shift", "open", "brackets", "colon", "founded", "customProperty", "firstSpaces", "cache", "bracket", "clean", "all", "lastTokenType", "parse_1$1", "hasRequiredParse$1", "requireParse$1", "parser2", "warning$1", "hasRequiredWarning$1", "requireWarning$1", "Warning", "range", "opt", "result$1", "hasRequiredResult$1", "requireResult$1", "Result", "processor2", "warning2", "warnOnce$1", "hasRequiredWarnOnce$1", "requireWarnOnce$1", "printed", "lazyResult$1", "hasRequiredLazyResult$1", "requireLazyResult$1", "warnOnce2", "TYPE_TO_CLASS_NAME", "PLUGIN_PROPS", "NOT_VISITORS", "CHILDREN", "isPromise", "getEvents", "toStack", "events", "cleanMarks", "postcss2", "onRejected", "onFinally", "event", "filter", "promise", "visitor", "roots", "subRoot", "onFulfilled", "visitors", "visit2", "noWorkResult$1", "hasRequiredNoWorkResult$1", "requireNoWorkResult$1", "NoWorkResult", "self2", "generatedCSS", "generatedMap", "processor$1", "hasRequiredProcessor$1", "requireProcessor$1", "plugins", "normalized", "postcss_1$1", "hasRequiredPostcss$1", "requirePostcss$1", "initializer", "warningPrinted", "creator", "transformer", "processOpts", "pluginOpts", "postcssExports$1", "postcss$1", "customElementExclusions", "tagMap", "getTagName", "adaptCssForReplay", "cachedStyle", "createCache", "applyCssSplits", "hackCss", "childTextNodes", "scn", "cssTextSplits", "childTextNode", "cssTextSection", "buildStyleNode", "styleEl", "buildNode", "specialAttributes", "buildNodeWithSN", "afterAppend", "scrollNodes", "nodeInMirror", "htmlElement", "body", "visit", "onVisit", "walk", "handleScroll", "rebuild", "scrollNode", "__defProp2", "__defNormalProp2", "__publicField2", "__defProp22", "__defNormalProp22", "__publicField22", "Mirror$1", "createMirror$1", "getDefaultExportFromCjs", "getAugmentedNamespace", "picocolors_browser", "hasRequiredPicocolors_browser", "requirePicocolors_browser", "__viteBrowserExternal", "__viteBrowserExternal$1", "require$$2", "cssSyntaxError", "hasRequiredCssSyntaxError", "requireCssSyntaxError", "stringifier", "hasRequiredStringifier", "requireStringifier", "stringify_1", "hasRequiredStringify", "requireStringify", "symbols", "hasRequiredSymbols", "requireSymbols", "node", "hasRequiredNode", "requireNode", "comment", "hasRequiredComment", "requireComment", "declaration", "hasRequiredDeclaration", "requireDeclaration", "container", "hasRequiredContainer", "requireContainer", "atRule", "hasRequiredAtRule", "requireAtRule", "document$1", "hasRequiredDocument", "requireDocument", "nonSecure", "hasRequiredNonSecure", "requireNonSecure", "previousMap", "hasRequiredPreviousMap", "requirePreviousMap", "input", "hasRequiredInput", "requireInput", "root", "hasRequiredRoot", "requireRoot", "list_1", "hasRequiredList", "requireList", "rule", "hasRequiredRule", "requireRule", "fromJSON_1", "hasRequiredFromJSON", "requireFromJSON", "mapGenerator", "hasRequiredMapGenerator", "requireMapGenerator", "tokenize", "hasRequiredTokenize", "requireTokenize", "parser", "hasRequiredParser", "requireParser", "parse_1", "hasRequiredParse", "requireParse", "warning", "hasRequiredWarning", "requireWarning", "result", "hasRequiredResult", "requireResult", "warnOnce", "hasRequiredWarnOnce", "requireWarnOnce", "lazyResult", "hasRequiredLazyResult", "requireLazyResult", "noWorkResult", "hasRequiredNoWorkResult", "requireNoWorkResult", "processor", "hasRequiredProcessor", "requireProcessor", "postcss_1", "hasRequiredPostcss", "requirePostcss", "postcssExports", "postcss", "NodeType$1", "parseCSSText", "res", "listDelimiter", "propertyDelimiter", "comment2", "item", "tmp", "camelize", "toCSSText", "properties", "normalizedName", "hyphenate", "camelizeRE", "CUSTOM_PROPERTY_REGEX", "hyphenateRE", "BaseRRNode", "_args", "childIterator", "_newChild", "_refChild", "_node", "BaseRRDocument", "newChild", "nodeType", "appendChild", "refChild", "insertBefore", "removeChild", "publicId", "doctype", "_namespace", "_qualifiedName", "_doctype", "qualifiedName", "systemId", "BaseRRDocumentType", "BaseRRElement", "_namespaceURI", "BaseRRText", "BaseRRComment", "CDATASection", "BaseRRCDATASection", "ClassList", "newClassName", "hyphenateRE2", "priority", "attribute", "_init", "_event", "attributeString", "BaseRRMediaElement", "BaseRRDialogElement", "classText", "onChange", "classNames", "classes", "NodeType$2", "NAMESPACES", "SVGTagMap", "createdNodeSet", "diff", "oldTree", "newTree", "replayer", "rrnodeMirror", "diffBeforeUpdatingChildren", "diffChildren", "diffAfterUpdatingChildren", "sameNodeType", "calibratedOldTree", "createOrGetNode", "nodeMatching", "newMeta", "oldElement", "newRRElement", "oldContentDocument", "diffProps", "scrollData", "oldMediaElement", "newMediaRRElement", "rrCanvasElement", "canvasMutation2", "styleSheet", "dialog", "rrDialog", "wasOpen", "wasModal", "shouldBeOpen", "shouldBeModal", "modalChanged", "openChanged", "oldAttributes", "newAttributes", "newValue", "oldChildren", "newChildren", "oldStartIndex", "oldEndIndex", "newStartIndex", "newEndIndex", "oldStartNode", "oldEndNode", "newStartNode", "newEndNode", "oldIdToIndex", "indexInOld", "oldChild2", "nodeToMove", "newNode", "referenceRRNode", "referenceNode", "oldChild", "rrNode", "domMirror", "nodeId", "node1", "rrdomMirror", "node1Id", "node2Id", "RRDocument", "createMirror", "documentTypeNode", "RRDocumentType", "upperTagName", "RRMediaElement", "RRIFrameElement", "RRCanvasElement", "RRStyleElement", "RRDialogElement", "RRElement", "commentNode", "RRComment", "sectionNode", "RRCDATASection", "textNode", "RRText", "getValidTagName", "buildFromNode", "rrdom", "parentRRNode", "documentType", "elementNode", "rrElement", "getDefaultSN", "buildFromDom", "dom", "walk2", "Mirror22", "testableAccessors", "testableMethods", "untaintedBasePrototype", "angularZoneUnpatchedAlternative", "getUntaintedPrototype", "untaintedAccessorCache", "getUntaintedAccessor", "untaintedMethodCache", "getUntaintedMethod", "childNodes", "parentNode", "parentElement", "textContent", "contains", "getRootNode", "host", "styleSheets", "shadowRoot", "querySelector", "querySelectorAll", "mutationObserverCtor", "index", "DEPARTED_MIRROR_ACCESS_WARNING", "_mirror", "target", "receiver", "polyfill$1", "queueToResolveTrees", "queue", "queueNodeMap", "putIntoMap", "m", "nodeInTree", "queueNodeTrees", "mutation", "nextId", "parentId", "nextInTree", "idx", "parentInTree", "iterateResolveTree", "tree", "isSerializedIframe", "getBaseDimension", "rootIframe", "frameElement", "frameDimension", "frameBaseDimension", "relativeScale", "hasShadowRoot", "getNestedRule", "getPositionsAndIndex", "nestedIndex", "positions", "uniqueTextMutations", "mutations", "idSet", "uniqueMutations", "StyleSheetMirror", "newId", "EventType", "EventType2", "IncrementalSource", "IncrementalSource2", "MouseInteractions", "MouseInteractions2", "CanvasContext", "CanvasContext2", "MediaInteractions", "MediaInteractions2", "ReplayerEvents", "ReplayerEvents2", "NodeType", "chars", "lookup", "i$1", "decode", "base64", "bufferLength", "encoded1", "encoded2", "encoded3", "encoded4", "arraybuffer", "bytes", "jsContent", "cleanFrame", "SeekCache", "maxEntries", "timestamp", "snapshotNode", "initialOffset", "entry", "lo", "hi", "targetTime", "baselineMetaTimestamp", "best", "mitt$1", "t2", "n3", "mittProxy", "polyfill", "w", "Element2", "SCROLL_TIME", "original", "scrollElement", "now", "isMicrosoftBrowser", "userAgent", "userAgentPatterns", "ROUNDING_TOLERANCE", "ease", "shouldBailOut", "firstArg", "hasScrollableSpace", "axis", "canOverflow", "overflowValue", "isScrollable", "isScrollableY", "isScrollableX", "findScrollableParent", "context", "time", "currentX", "currentY", "elapsed", "smoothScroll", "scrollable", "startX", "startY", "startTime", "top", "scrollableParent", "parentRects", "clientRects", "Timer", "actions", "config", "action", "rafWasActive", "speed", "addDelay", "baselineTime", "firstOffset", "firstTimestamp", "t", "r2", "o2", "t3", "n", "r", "o", "i", "a", "u", "c", "f", "o3", "s", "v2", "s3", "l3", "v3", "g", "h", "e3", "S", "E", "R", "N", "O", "T", "q", "z", "A", "B", "C", "l", "v", "i3", "u2", "buildCheckpointIndex", "checkpoints", "findNearestCheckpoint", "isDuplicateEvent", "existing", "incoming", "createPlayerService", "getCastFn", "applyEventsSynchronously", "emitter", "playerMachine", "timeOffset", "lastPlayedEvent", "checkpointIndex", "checkpoint", "startIndex", "lastPlayedTimestamp", "syncEvents", "castFn", "machineEvent", "insertionIndex", "newCheckpoint", "lastCheckpoint", "searchLo", "searchHi", "isSync", "createSpeedService", "speedMachine", "rules", "webGLVarMap", "variableListFor", "ctor", "contextMap", "deserializeArg", "imageMap", "preload", "arg", "image2", "blobContents", "getContext", "WebGLVariableConstructorsNames", "saveToWebGLVarMap", "variables", "webglMutation", "errorHandler2", "debugMode", "canvasMutation$1", "mutationArgsPromises", "args2", "canvasMutation", "canvasEventMap", "precomputedMutation", "commands", "command", "MediaManager", "_mediaState", "mediaState", "mediaPlaybackOffset", "duration", "seekToTime", "onLoadedMetadata", "lastState", "playbackRate", "currentTime", "muted", "volume", "loop", "_c", "_d", "_e", "isPlaying", "playerIsPaused", "currentTimeAtLastInteraction", "applyDialogToTopLevel", "attributeMutation", "oldIsOpen", "oldIsModalState", "rrOpenMode", "newIsOpen", "newIsModalState", "removeDialogFromTopLevel", "mitt", "REPLAY_CONSOLE_PREFIX", "INJECTED_STYLE_ID", "defaultMouseTailConfig", "indicatesTouchDevice", "Replayer", "dimension", "lastFullSnapshotIndex", "startIdx", "fullSnapshotEvt", "metaEvt", "skipTime", "last_index", "finish", "finish_buffer", "defaultConfig", "replayerHandler", "canvasEvent", "canvasMutationData", "realNode", "adoptedStyleSheets", "seekEndTimeOffset", "captureTimestamp", "sortedEvents", "a1", "state", "firstMeta", "firstFullsnapshot", "handler", "firstEvent", "lastEvent", "rawEvent", "scratchMirror", "scrollEl", "collectedIframes", "collectedDialogs", "builtNode", "mutationInQueue", "documentElement", "head", "injectStylesRules", "nodeSn", "id2", "collected", "unloadSheets", "beforeLoadState", "stateHandler", "unsubscribe", "promises", "imgd", "status", "lastPosition", "triggerFocus", "mediaEl", "fontFace", "virtualNode", "legacy_missingNodeMap", "nextNotInDOM", "appendNode", "previous", "targetDoc", "parentSn", "prospectiveSiblings", "parentDoc", "targetId", "resolveTrees", "parentEl", "attributeName", "newSn", "siblingNode", "parentNode2", "textarea", "tn", "styleValues", "targetEl", "svp", "svs", "selectionSet", "ranges", "startOffset", "startContainer", "endContainer", "selection", "hostWindow", "targetHost", "_a3", "newStyleSheet", "MAX_RETRY_TIME", "count", "adoptStyleSheets", "targetHost2", "styleIds", "stylesToAdopt", "targetMutation", "previousId", "previousInMap", "nextInMap", "debugData", "base", "_x", "_y", "lineCap", "lineWidth", "strokeStyle", "draw", "hoveredEl", "currentEl"]
}
