{
  "version": 3,
  "sources": ["../../rrweb-snapshot/dist/rrweb-snapshot.js", "../../types/dist/types.js", "../src/utils.ts", "../src/record/error-handler.ts", "../src/record/cross-origin-iframe-mirror.ts", "../src/record/iframe-manager.ts", "../src/record/text-diff.ts", "../src/record/mutation.ts", "../src/record/observer.ts", "../../../node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js", "../src/record/observers/canvas/serialize-args.ts", "../src/record/observers/canvas/2d.ts", "../src/record/observers/canvas/canvas.ts", "../src/record/observers/canvas/webgl.ts", "../src/record/observers/canvas/canvas-manager.ts", "../src/record/processed-node-manager.ts", "../src/record/shadow-dom-manager.ts", "../src/record/stylesheet-manager.ts", "../src/record/index.ts", "../../rrdom/dist/rrdom.js", "../../../node_modules/mitt/dist/mitt.mjs", "../src/replay/canvas/deserialize-args.ts", "../src/replay/canvas/2d.ts", "../src/replay/canvas/webgl.ts", "../src/replay/canvas/index.ts", "../../../node_modules/@xstate/fsm/es/index.js", "../src/replay/timer.ts", "../src/replay/machine.ts", "../src/replay/media/index.ts", "../src/replay/smoothscroll.ts", "../src/replay/styles/inject-style.ts", "../src/replay/index.ts", "../src/index.ts"],
  "sourcesContent": ["var Cr = Object.defineProperty;\nvar Sr = (s, e, t) => e in s ? Cr(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;\nvar Ne = (s, e, t) => Sr(s, typeof e != \"symbol\" ? e + \"\" : e, t);\nvar w = /* @__PURE__ */ ((s) => (s[s.Document = 0] = \"Document\", s[s.DocumentType = 1] = \"DocumentType\", s[s.Element = 2] = \"Element\", s[s.Text = 3] = \"Text\", s[s.CDATA = 4] = \"CDATA\", s[s.Comment = 5] = \"Comment\", s))(w || {});\nfunction Qe(s) {\n  return s.nodeType === s.ELEMENT_NODE;\n}\nfunction xr(s) {\n  const e = s == null ? void 0 : s.host;\n  return (e == null ? void 0 : e.shadowRoot) === s;\n}\nfunction Ae(s) {\n  return Object.prototype.toString.call(s) === \"[object ShadowRoot]\";\n}\nfunction vr(s) {\n  return s.includes(\" background-clip: text;\") && !s.includes(\" -webkit-background-clip: text;\") && (s = s.replace(\n    /\\sbackground-clip:\\s*text;/g,\n    \" -webkit-background-clip: text; background-clip: text;\"\n  )), s;\n}\nfunction Er(s) {\n  const { cssText: e } = s;\n  if (e.split('\"').length < 3) return e;\n  const t = [\"@import\", `url(${JSON.stringify(s.href)})`];\n  return s.layerName === \"\" ? t.push(\"layer\") : s.layerName && t.push(`layer(${s.layerName})`), s.supportsText && t.push(`supports(${s.supportsText})`), s.media.length && t.push(s.media.mediaText), t.join(\" \") + \";\";\n}\nfunction Rr(s, e) {\n  const t = [];\n  for (let r = 0; r < s.length; r++) {\n    const i = s.item(r);\n    s.getPropertyValue(i) === \"\" && new RegExp(It(i) + \":\\\\s*;\").test(e) && t.push(i);\n  }\n  return t;\n}\nfunction It(s) {\n  return s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction Or(s, e, t, r) {\n  const i = Rr(s.style, e);\n  if (i.length === 0) return e;\n  let n = null;\n  try {\n    n = t.querySelector(s.selectorText);\n  } catch {\n  }\n  if (!n)\n    return r && r.push({\n      selector: s.selectorText,\n      properties: i\n    }), e;\n  const l = getComputedStyle(n);\n  let a = e;\n  for (const o of i) {\n    const f = l.getPropertyValue(o);\n    if (f) {\n      const u = new RegExp(\n        `(${It(o)}):\\\\s*;`\n      );\n      a = a.replace(u, `$1: ${f};`);\n    }\n  }\n  return a;\n}\nfunction de(s, e, t) {\n  var r;\n  try {\n    const i = s.rules || s.cssRules;\n    if (!i) return null;\n    const n = e || ((r = s.ownerNode) == null ? void 0 : r.ownerDocument) || null, l = Array.from(i, (a) => {\n      let o = kr(a);\n      return n && _t(a) && (o = Or(\n        a,\n        o,\n        n,\n        t\n      )), o;\n    }).join(\"\");\n    return vr(l);\n  } catch {\n    return null;\n  }\n}\nfunction kr(s) {\n  let e;\n  if (Ar(s))\n    try {\n      e = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      de(s.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      Er(s);\n    } catch {\n    }\n  else if (_t(s) && s.selectorText.includes(\":\"))\n    return Nr(s.cssText);\n  return e || s.cssText;\n}\nfunction Nr(s) {\n  const e = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return s.replace(e, \"$1\\\\$2\");\n}\nfunction Ar(s) {\n  return \"styleSheet\" in s;\n}\nfunction _t(s) {\n  return \"selectorText\" in s;\n}\nclass Ke {\n  constructor() {\n    Ne(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    Ne(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(e) {\n    var r;\n    return e ? ((r = this.getMeta(e)) == null ? void 0 : r.id) ?? -1 : -1;\n  }\n  getNode(e) {\n    return this.idNodeMap.get(e) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(e) {\n    return this.nodeMetaMap.get(e) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(e) {\n    const t = this.getId(e);\n    this.idNodeMap.delete(t), e.childNodes && e.childNodes.forEach(\n      (r) => this.removeNodeFromMap(r)\n    );\n  }\n  has(e) {\n    return this.idNodeMap.has(e);\n  }\n  hasNode(e) {\n    return this.nodeMetaMap.has(e);\n  }\n  add(e, t) {\n    const r = t.id;\n    this.idNodeMap.set(r, e), this.nodeMetaMap.set(e, t);\n  }\n  replace(e, t) {\n    const r = this.getNode(e);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(t, i);\n    }\n    this.idNodeMap.set(e, t);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction tn() {\n  return new Ke();\n}\nfunction Mr({\n  element: s,\n  maskInputOptions: e,\n  tagName: t,\n  type: r,\n  value: i,\n  maskInputFn: n\n}) {\n  const l = i || \"\", a = r && Ce(r);\n  if (e[t.toLowerCase()] || a && e[a]) {\n    const f = n ? n(l, s) : \"*\".repeat(l.length);\n    return { value: f, masked: l !== f };\n  }\n  return { value: l, masked: !1 };\n}\nfunction Ce(s) {\n  return s.toLowerCase();\n}\nconst at = \"__rrweb_original__\";\nfunction Pr(s) {\n  const e = s.getContext(\"2d\");\n  if (!e) return !0;\n  const t = 50;\n  for (let r = 0; r < s.width; r += t)\n    for (let i = 0; i < s.height; i += t) {\n      const n = e.getImageData, l = at in n ? n[at] : n;\n      if (new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        l.call(\n          e,\n          r,\n          i,\n          Math.min(t, s.width - r),\n          Math.min(t, s.height - i)\n        ).data.buffer\n      ).some((o) => o !== 0)) return !1;\n    }\n  return !0;\n}\nfunction Ir(s, e) {\n  return !s || !e || s.type !== e.type ? !1 : s.type === w.Document ? s.compatMode === e.compatMode : s.type === w.DocumentType ? s.name === e.name && s.publicId === e.publicId && s.systemId === e.systemId : s.type === w.Comment || s.type === w.Text || s.type === w.CDATA ? s.textContent === e.textContent : s.type === w.Element ? s.tagName === e.tagName && JSON.stringify(s.attributes) === JSON.stringify(e.attributes) && s.isSVG === e.isSVG && s.needBlock === e.needBlock : !1;\n}\nfunction _r(s) {\n  const e = s.type;\n  return s.hasAttribute(\"data-rr-is-password\") ? \"password\" : e ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    Ce(e)\n  ) : null;\n}\nfunction $t(s, e) {\n  let t;\n  try {\n    t = new URL(s, e ?? window.location.href);\n  } catch {\n    return null;\n  }\n  const r = /\\.([0-9a-z]+)(?:$)/i, i = t.pathname.match(r);\n  return (i == null ? void 0 : i[1]) ?? null;\n}\nlet Lt = 1;\nconst $r = new RegExp(\"[^a-z0-9-_:]\"), ut = -2;\nfunction Lr() {\n  return Lt++;\n}\nfunction Tr(s) {\n  if (s instanceof HTMLFormElement)\n    return \"form\";\n  const e = Ce(s.tagName);\n  return $r.test(e) ? \"div\" : e;\n}\nfunction Dr(s) {\n  let e = \"\";\n  return s.indexOf(\"//\") > -1 ? e = s.split(\"/\").slice(0, 3).join(\"/\") : e = s.split(\"/\")[0], e = e.split(\"?\")[0], e;\n}\nlet z, ft;\nconst Ur = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm, Br = /^(?:[a-z+]+:)?\\/\\//i, Fr = /^www\\..*/i, zr = /^(data:)([^,]*),(.*)/i;\nfunction me(s, e) {\n  return (s || \"\").replace(\n    Ur,\n    (t, r, i, n, l, a) => {\n      const o = i || l || a, f = r || n || \"\";\n      if (!o)\n        return t;\n      if (Br.test(o) || Fr.test(o))\n        return `url(${f}${o}${f})`;\n      if (zr.test(o))\n        return `url(${f}${o}${f})`;\n      if (o[0] === \"/\")\n        return `url(${f}${Dr(e) + o}${f})`;\n      const u = e.split(\"/\"), h = o.split(\"/\");\n      u.pop();\n      for (const d of h)\n        d !== \".\" && (d === \"..\" ? u.pop() : u.push(d));\n      return `url(${f}${u.join(\"/\")}${f})`;\n    }\n  );\n}\nconst Wr = /^[^ \\t\\n\\r\\u000c]+/, jr = /^[, \\t\\n\\r\\u000c]+/;\nfunction Gr(s, e) {\n  if (e.trim() === \"\")\n    return e;\n  let t = 0;\n  function r(n) {\n    let l;\n    const a = n.exec(e.substring(t));\n    return a ? (l = a[0], t += l.length, l) : \"\";\n  }\n  const i = [];\n  for (; r(jr), !(t >= e.length); ) {\n    let n = r(Wr);\n    if (n.slice(-1) === \",\")\n      n = W(s, n.substring(0, n.length - 1)), i.push(n);\n    else {\n      let l = \"\";\n      n = W(s, n);\n      let a = !1;\n      for (; ; ) {\n        const o = e.charAt(t);\n        if (o === \"\") {\n          i.push((n + l).trim());\n          break;\n        } else if (a)\n          o === \")\" && (a = !1);\n        else if (o === \",\") {\n          t += 1, i.push((n + l).trim());\n          break;\n        } else o === \"(\" && (a = !0);\n        l += o, t += 1;\n      }\n    }\n  }\n  return i.join(\", \");\n}\nconst ct = /* @__PURE__ */ new WeakMap();\nfunction W(s, e) {\n  return !e || e.trim() === \"\" ? e : Se(s, e);\n}\nfunction Vr(s) {\n  return !!(s.tagName === \"svg\" || s.ownerSVGElement);\n}\nfunction Se(s, e) {\n  let t = ct.get(s);\n  if (t || (t = s.createElement(\"a\"), ct.set(s, t)), !e)\n    e = \"\";\n  else if (e.startsWith(\"blob:\") || e.startsWith(\"data:\"))\n    return e;\n  return t.setAttribute(\"href\", e), t.href;\n}\nfunction Hr(s, e, t, r) {\n  return r && (t === \"src\" || t === \"href\" && !(e === \"use\" && r[0] === \"#\") || t === \"xlink:href\" && r[0] !== \"#\" || t === \"background\" && (e === \"table\" || e === \"td\" || e === \"th\") ? W(s, r) : t === \"srcset\" ? Gr(s, r) : t === \"style\" ? me(r, Se(s)) : e === \"object\" && t === \"data\" ? W(s, r) : r);\n}\nfunction Jr(s, e, t) {\n  return (s === \"video\" || s === \"audio\") && e === \"autoplay\";\n}\nfunction Yr(s, e, t) {\n  try {\n    if (typeof e == \"string\") {\n      if (s.classList.contains(e))\n        return !0;\n    } else\n      for (let r = s.classList.length; r--; ) {\n        const i = s.classList[r];\n        if (e.test(i))\n          return !0;\n      }\n    if (t)\n      return s.matches(t);\n  } catch {\n  }\n  return !1;\n}\nfunction $e(s, e, t) {\n  if (!s) return !1;\n  if (s.nodeType !== s.ELEMENT_NODE)\n    return t ? $e(s.parentNode, e, t) : !1;\n  for (let r = s.classList.length; r--; ) {\n    const i = s.classList[r];\n    if (e.test(i))\n      return !0;\n  }\n  return t ? $e(s.parentNode, e, t) : !1;\n}\nfunction qr(s, e, t, r) {\n  let i;\n  if (Qe(s)) {\n    if (i = s, !i.childNodes.length)\n      return !1;\n  } else {\n    if (s.parentElement === null)\n      return !1;\n    i = s.parentElement;\n  }\n  try {\n    if (typeof e == \"string\") {\n      if (r) {\n        if (i.closest(`.${e}`)) return !0;\n      } else if (i.classList.contains(e)) return !0;\n    } else if ($e(i, e, r)) return !0;\n    if (t) {\n      if (r) {\n        if (i.closest(t)) return !0;\n      } else if (i.matches(t)) return !0;\n    }\n  } catch {\n  }\n  return !1;\n}\nfunction Qr(s, e, t) {\n  const r = s.contentWindow;\n  if (!r)\n    return;\n  let i = !1, n;\n  try {\n    n = r.document.readyState;\n  } catch {\n    return;\n  }\n  if (n !== \"complete\") {\n    const a = setTimeout(() => {\n      i || (e(), i = !0);\n    }, t);\n    s.addEventListener(\"load\", () => {\n      clearTimeout(a), i = !0, e();\n    });\n    return;\n  }\n  const l = \"about:blank\";\n  if (r.location.href !== l || s.src === l || s.src === \"\")\n    return setTimeout(e, 0), s.addEventListener(\"load\", e);\n  s.addEventListener(\"load\", e);\n}\nfunction Kr(s, e, t) {\n  let r = !1, i;\n  try {\n    i = s.sheet;\n  } catch {\n    return;\n  }\n  if (i) return;\n  const n = setTimeout(() => {\n    r || (e(), r = !0);\n  }, t);\n  s.addEventListener(\"load\", () => {\n    clearTimeout(n), r = !0, e();\n  });\n}\nfunction Xr(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    needsMask: l,\n    inlineStylesheet: a,\n    maskInputOptions: o = {},\n    maskTextFn: f,\n    maskInputFn: u,\n    dataURLOptions: h = {},\n    inlineImages: d,\n    recordCanvas: g,\n    keepIframeSrcFn: E,\n    newlyAddedElement: R = !1,\n    corruptedRules: c\n  } = e, m = Zr(t, r);\n  switch (s.nodeType) {\n    case s.DOCUMENT_NODE:\n      return s.compatMode !== \"CSS1Compat\" ? {\n        type: w.Document,\n        childNodes: [],\n        compatMode: s.compatMode\n        // probably \"BackCompat\"\n      } : {\n        type: w.Document,\n        childNodes: []\n      };\n    case s.DOCUMENT_TYPE_NODE:\n      return {\n        type: w.DocumentType,\n        name: s.name,\n        publicId: s.publicId,\n        systemId: s.systemId,\n        rootId: m\n      };\n    case s.ELEMENT_NODE:\n      return ts(s, {\n        doc: t,\n        blockClass: i,\n        blockSelector: n,\n        inlineStylesheet: a,\n        maskInputOptions: o,\n        maskInputFn: u,\n        dataURLOptions: h,\n        inlineImages: d,\n        recordCanvas: g,\n        keepIframeSrcFn: E,\n        newlyAddedElement: R,\n        rootId: m,\n        corruptedRules: c\n      });\n    case s.TEXT_NODE:\n      return es(s, {\n        doc: t,\n        needsMask: l,\n        maskTextFn: f,\n        rootId: m,\n        corruptedRules: c\n      });\n    case s.CDATA_SECTION_NODE:\n      return {\n        type: w.CDATA,\n        textContent: \"\",\n        rootId: m\n      };\n    case s.COMMENT_NODE:\n      return {\n        type: w.Comment,\n        textContent: s.textContent || \"\",\n        rootId: m\n      };\n    default:\n      return !1;\n  }\n}\nfunction Zr(s, e) {\n  if (!e.hasNode(s)) return;\n  const t = e.getId(s);\n  return t === 1 ? void 0 : t;\n}\nfunction es(s, e) {\n  var f;\n  const { needsMask: t, maskTextFn: r, rootId: i } = e, n = s.parentNode && s.parentNode.tagName;\n  let l = s.textContent;\n  const a = n === \"STYLE\" ? !0 : void 0, o = n === \"SCRIPT\" ? !0 : void 0;\n  if (a && l) {\n    try {\n      s.nextSibling || s.previousSibling || (f = s.parentNode.sheet) != null && f.cssRules && (l = de(\n        s.parentNode.sheet,\n        e.doc,\n        e.corruptedRules\n      ) || \"\");\n    } catch (u) {\n      console.warn(\n        `Cannot get CSS styles from text's parentNode. Error: ${u}`,\n        s\n      );\n    }\n    l = me(l, Se(e.doc));\n  }\n  return o && (l = \"SCRIPT_PLACEHOLDER\"), !a && !o && l && t && (l = r ? r(l, s.parentElement) : l.replace(/[\\S]/g, \"*\")), {\n    type: w.Text,\n    textContent: l || \"\",\n    isStyle: a,\n    rootId: i\n  };\n}\nfunction ts(s, e) {\n  const {\n    doc: t,\n    blockClass: r,\n    blockSelector: i,\n    inlineStylesheet: n,\n    maskInputOptions: l = {},\n    maskInputFn: a,\n    dataURLOptions: o = {},\n    inlineImages: f,\n    recordCanvas: u,\n    keepIframeSrcFn: h,\n    newlyAddedElement: d = !1,\n    rootId: g,\n    corruptedRules: E\n  } = e, R = Yr(s, r, i), c = Tr(s);\n  let m = {};\n  const k = s.attributes.length;\n  for (let p = 0; p < k; p++) {\n    const b = s.attributes[p];\n    Jr(c, b.name, b.value) || (m[b.name] = Hr(\n      t,\n      c,\n      Ce(b.name),\n      b.value\n    ));\n  }\n  if (c === \"link\" && n) {\n    const p = Array.from(t.styleSheets).find((O) => O.href === s.href);\n    let b = null;\n    p && (b = de(p, t, E)), b && (delete m.rel, delete m.href, m._cssText = me(b, p.href));\n  }\n  if (c === \"style\" && s.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n  !(s.innerText || s.textContent || \"\").trim().length) {\n    const p = de(\n      s.sheet,\n      t,\n      E\n    );\n    p && (m._cssText = me(p, Se(t)));\n  }\n  if (E && E.length > 0 && !R) {\n    const p = typeof m.style == \"string\" ? m.style : \"\";\n    let b = \"\";\n    for (const { selector: O, properties: I } of E)\n      try {\n        if (s.matches(O)) {\n          const A = getComputedStyle(s);\n          for (const N of I)\n            if (!s.style.getPropertyValue(N)) {\n              const _ = A.getPropertyValue(N);\n              _ && (b += `${N}: ${_}; `);\n            }\n        }\n      } catch {\n      }\n    b && (m.style = p ? `${p}; ${b.trim()}` : b.trim());\n  }\n  if (c === \"input\" || c === \"textarea\" || c === \"select\") {\n    const p = s.value, b = s.checked;\n    if (m.type !== \"radio\" && m.type !== \"checkbox\" && m.type !== \"submit\" && m.type !== \"button\" && p) {\n      const O = Mr({\n        element: s,\n        type: _r(s),\n        tagName: c,\n        value: p,\n        maskInputOptions: l,\n        maskInputFn: a\n      });\n      m.value = O.value, O.masked && (m.masked = !0);\n    } else b && (m.checked = b);\n  }\n  if (c === \"option\" && (s.selected && !l.select ? m.selected = !0 : delete m.selected), c === \"canvas\" && u) {\n    if (s.__context === \"2d\")\n      Pr(s) || (m.rr_dataURL = s.toDataURL(\n        o.type,\n        o.quality\n      ));\n    else if (!(\"__context\" in s)) {\n      const p = s.toDataURL(\n        o.type,\n        o.quality\n      ), b = t.createElement(\"canvas\");\n      b.width = s.width, b.height = s.height;\n      const O = b.toDataURL(\n        o.type,\n        o.quality\n      );\n      p !== O && (m.rr_dataURL = p);\n    }\n  }\n  if (c === \"img\" && f) {\n    z || (z = t.createElement(\"canvas\"), ft = z.getContext(\"2d\"));\n    const p = s, b = p.currentSrc || p.getAttribute(\"src\") || \"<unknown-src>\", O = p.crossOrigin, I = () => {\n      p.removeEventListener(\"load\", I);\n      try {\n        z.width = p.naturalWidth, z.height = p.naturalHeight, ft.drawImage(p, 0, 0), m.rr_dataURL = z.toDataURL(\n          o.type,\n          o.quality\n        );\n      } catch (A) {\n        if (p.crossOrigin !== \"anonymous\") {\n          p.crossOrigin = \"anonymous\", p.complete && p.naturalWidth !== 0 ? I() : p.addEventListener(\"load\", I);\n          return;\n        } else\n          console.warn(\n            `Cannot inline img src=${b}! Error: ${A}`\n          );\n      }\n      p.crossOrigin === \"anonymous\" && (O ? m.crossOrigin = O : p.removeAttribute(\"crossorigin\"));\n    };\n    p.complete && p.naturalWidth !== 0 ? I() : p.addEventListener(\"load\", I);\n  }\n  if (c === \"audio\" || c === \"video\") {\n    const p = m;\n    p.rr_mediaState = s.paused ? \"paused\" : \"played\", p.rr_mediaCurrentTime = s.currentTime, p.rr_mediaPlaybackRate = s.playbackRate, p.rr_mediaMuted = s.muted, p.rr_mediaLoop = s.loop, p.rr_mediaVolume = s.volume;\n  }\n  if (d || (s.scrollLeft && (m.rr_scrollLeft = s.scrollLeft), s.scrollTop && (m.rr_scrollTop = s.scrollTop)), R) {\n    const { width: p, height: b } = s.getBoundingClientRect();\n    m = {\n      class: m.class,\n      rr_width: `${p}px`,\n      rr_height: `${b}px`\n    };\n  }\n  c === \"iframe\" && !h(m.src) && (s.contentDocument || (m.rr_src = m.src), delete m.src);\n  let M;\n  try {\n    customElements.get(c) && (M = !0);\n  } catch {\n  }\n  return {\n    type: w.Element,\n    tagName: c,\n    attributes: m,\n    childNodes: [],\n    isSVG: Vr(s) || void 0,\n    needBlock: R,\n    rootId: g,\n    isCustom: M\n  };\n}\nfunction S(s) {\n  return s == null ? \"\" : s.toLowerCase();\n}\nfunction rs(s, e) {\n  if (e.comment && s.type === w.Comment)\n    return !0;\n  if (s.type === w.Element) {\n    if (e.script && // script tag\n    (s.tagName === \"script\" || // (module)preload link\n    s.tagName === \"link\" && (s.attributes.rel === \"preload\" || s.attributes.rel === \"modulepreload\") && s.attributes.as === \"script\" || // prefetch link\n    s.tagName === \"link\" && s.attributes.rel === \"prefetch\" && typeof s.attributes.href == \"string\" && $t(s.attributes.href) === \"js\"))\n      return !0;\n    if (e.headFavicon && (s.tagName === \"link\" && s.attributes.rel === \"shortcut icon\" || s.tagName === \"meta\" && (S(s.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || S(s.attributes.name) === \"application-name\" || S(s.attributes.rel) === \"icon\" || S(s.attributes.rel) === \"apple-touch-icon\" || S(s.attributes.rel) === \"shortcut icon\")))\n      return !0;\n    if (s.tagName === \"meta\") {\n      if (e.headMetaDescKeywords && S(s.attributes.name).match(/^description|keywords$/))\n        return !0;\n      if (e.headMetaSocial && (S(s.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      S(s.attributes.name).match(/^(og|twitter):/) || S(s.attributes.name) === \"pinterest\"))\n        return !0;\n      if (e.headMetaRobots && (S(s.attributes.name) === \"robots\" || S(s.attributes.name) === \"googlebot\" || S(s.attributes.name) === \"bingbot\"))\n        return !0;\n      if (e.headMetaHttpEquiv && s.attributes[\"http-equiv\"] !== void 0)\n        return !0;\n      if (e.headMetaAuthorship && (S(s.attributes.name) === \"author\" || S(s.attributes.name) === \"generator\" || S(s.attributes.name) === \"framework\" || S(s.attributes.name) === \"publisher\" || S(s.attributes.name) === \"progid\" || S(s.attributes.property).match(/^article:/) || S(s.attributes.property).match(/^product:/)))\n        return !0;\n      if (e.headMetaVerification && (S(s.attributes.name) === \"google-site-verification\" || S(s.attributes.name) === \"yandex-verification\" || S(s.attributes.name) === \"csrf-token\" || S(s.attributes.name) === \"p:domain_verify\" || S(s.attributes.name) === \"verify-v1\" || S(s.attributes.name) === \"verification\" || S(s.attributes.name) === \"shopify-checkout-api-token\"))\n        return !0;\n    }\n  }\n  return !1;\n}\nfunction K(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    maskTextClass: l,\n    maskTextSelector: a,\n    skipChild: o = !1,\n    inlineStylesheet: f = !0,\n    maskInputOptions: u = {},\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOMOptions: g,\n    dataURLOptions: E = {},\n    inlineImages: R = !1,\n    recordCanvas: c = !1,\n    onSerialize: m,\n    onIframeLoad: k,\n    iframeLoadTimeout: M = 5e3,\n    onStylesheetLoad: p,\n    stylesheetLoadTimeout: b = 5e3,\n    keepIframeSrcFn: O = () => !1,\n    newlyAddedElement: I = !1,\n    corruptedRules: A\n  } = e;\n  let { needsMask: N } = e, { preserveWhiteSpace: _ = !0 } = e;\n  N || (N = qr(\n    s,\n    l,\n    a,\n    N === void 0\n  ));\n  const U = Xr(s, {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    needsMask: N,\n    inlineStylesheet: f,\n    maskInputOptions: u,\n    maskTextFn: h,\n    maskInputFn: d,\n    dataURLOptions: E,\n    inlineImages: R,\n    recordCanvas: c,\n    keepIframeSrcFn: O,\n    newlyAddedElement: I,\n    corruptedRules: A\n  });\n  if (!U)\n    return console.warn(s, \"not serialized\"), null;\n  let H;\n  r.hasNode(s) ? H = r.getId(s) : rs(U, g) || !_ && U.type === w.Text && !U.isStyle && !U.textContent.replace(/^\\s+|\\s+$/gm, \"\").length ? H = ut : H = Lr();\n  const x = Object.assign(U, { id: H });\n  if (r.add(s, x), H === ut)\n    return null;\n  m && m(s);\n  let ke = !o;\n  if (x.type === w.Element) {\n    ke = ke && !x.needBlock, delete x.needBlock;\n    const P = s.shadowRoot;\n    P && Ae(P) && (x.isShadowHost = !0);\n  }\n  if ((x.type === w.Document || x.type === w.Element) && ke) {\n    g.headWhitespace && x.type === w.Element && x.tagName === \"head\" && (_ = !1);\n    const P = {\n      doc: t,\n      mirror: r,\n      blockClass: i,\n      blockSelector: n,\n      needsMask: N,\n      maskTextClass: l,\n      maskTextSelector: a,\n      skipChild: o,\n      inlineStylesheet: f,\n      maskInputOptions: u,\n      maskTextFn: h,\n      maskInputFn: d,\n      slimDOMOptions: g,\n      dataURLOptions: E,\n      inlineImages: R,\n      recordCanvas: c,\n      preserveWhiteSpace: _,\n      onSerialize: m,\n      onIframeLoad: k,\n      iframeLoadTimeout: M,\n      onStylesheetLoad: p,\n      stylesheetLoadTimeout: b,\n      keepIframeSrcFn: O,\n      corruptedRules: A\n    };\n    if (!(x.type === w.Element && x.tagName === \"textarea\" && x.attributes.value !== void 0)) for (const B of Array.from(s.childNodes)) {\n      const F = K(B, P);\n      F && x.childNodes.push(F);\n    }\n    if (Qe(s) && s.shadowRoot)\n      for (const B of Array.from(s.shadowRoot.childNodes)) {\n        const F = K(B, P);\n        F && (Ae(s.shadowRoot) && (F.isShadow = !0), x.childNodes.push(F));\n      }\n  }\n  return s.parentNode && xr(s.parentNode) && Ae(s.parentNode) && (x.isShadow = !0), x.type === w.Element && x.tagName === \"iframe\" && Qr(\n    s,\n    () => {\n      const P = s.contentDocument;\n      if (P && k) {\n        const B = K(P, {\n          doc: P,\n          mirror: r,\n          blockClass: i,\n          blockSelector: n,\n          needsMask: N,\n          maskTextClass: l,\n          maskTextSelector: a,\n          skipChild: !1,\n          inlineStylesheet: f,\n          maskInputOptions: u,\n          maskTextFn: h,\n          maskInputFn: d,\n          slimDOMOptions: g,\n          dataURLOptions: E,\n          inlineImages: R,\n          recordCanvas: c,\n          preserveWhiteSpace: _,\n          onSerialize: m,\n          onIframeLoad: k,\n          iframeLoadTimeout: M,\n          onStylesheetLoad: p,\n          stylesheetLoadTimeout: b,\n          keepIframeSrcFn: O\n        });\n        B && k(\n          s,\n          B\n        );\n      }\n    },\n    M\n  ), x.type === w.Element && x.tagName === \"link\" && typeof x.attributes.rel == \"string\" && (x.attributes.rel === \"stylesheet\" || x.attributes.rel === \"preload\" && typeof x.attributes.href == \"string\" && $t(x.attributes.href) === \"css\") && Kr(\n    s,\n    () => {\n      if (p) {\n        const P = K(s, {\n          doc: t,\n          mirror: r,\n          blockClass: i,\n          blockSelector: n,\n          needsMask: N,\n          maskTextClass: l,\n          maskTextSelector: a,\n          skipChild: !1,\n          inlineStylesheet: f,\n          maskInputOptions: u,\n          maskTextFn: h,\n          maskInputFn: d,\n          slimDOMOptions: g,\n          dataURLOptions: E,\n          inlineImages: R,\n          recordCanvas: c,\n          preserveWhiteSpace: _,\n          onSerialize: m,\n          onIframeLoad: k,\n          iframeLoadTimeout: M,\n          onStylesheetLoad: p,\n          stylesheetLoadTimeout: b,\n          keepIframeSrcFn: O\n        });\n        P && p(\n          s,\n          P\n        );\n      }\n    },\n    b\n  ), x;\n}\nfunction rn(s, e) {\n  const {\n    mirror: t = new Ke(),\n    blockClass: r = \"rr-block\",\n    blockSelector: i = null,\n    maskTextClass: n = \"rr-mask\",\n    maskTextSelector: l = null,\n    inlineStylesheet: a = !0,\n    inlineImages: o = !1,\n    recordCanvas: f = !1,\n    maskAllInputs: u = !1,\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOM: g = !1,\n    dataURLOptions: E,\n    preserveWhiteSpace: R,\n    onSerialize: c,\n    onIframeLoad: m,\n    iframeLoadTimeout: k,\n    onStylesheetLoad: M,\n    stylesheetLoadTimeout: p,\n    keepIframeSrcFn: b = () => !1,\n    corruptedRules: O\n  } = e || {};\n  return K(s, {\n    doc: s,\n    mirror: t,\n    blockClass: r,\n    blockSelector: i,\n    maskTextClass: n,\n    maskTextSelector: l,\n    skipChild: !1,\n    inlineStylesheet: a,\n    maskInputOptions: u === !0 ? {\n      color: !0,\n      date: !0,\n      \"datetime-local\": !0,\n      email: !0,\n      month: !0,\n      number: !0,\n      range: !0,\n      search: !0,\n      tel: !0,\n      text: !0,\n      time: !0,\n      url: !0,\n      week: !0,\n      textarea: !0,\n      select: !0,\n      password: !0\n    } : u === !1 ? {\n      password: !0\n    } : u,\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOMOptions: g === !0 || g === \"all\" ? (\n      // if true: set of sensible options that should not throw away any information\n      {\n        script: !0,\n        comment: !0,\n        headFavicon: !0,\n        headWhitespace: !0,\n        headMetaDescKeywords: g === \"all\",\n        // destructive\n        headMetaSocial: !0,\n        headMetaRobots: !0,\n        headMetaHttpEquiv: !0,\n        headMetaAuthorship: !0,\n        headMetaVerification: !0\n      }\n    ) : g === !1 ? {} : g,\n    dataURLOptions: E,\n    inlineImages: o,\n    recordCanvas: f,\n    preserveWhiteSpace: R,\n    onSerialize: c,\n    onIframeLoad: m,\n    iframeLoadTimeout: k,\n    onStylesheetLoad: M,\n    stylesheetLoadTimeout: p,\n    keepIframeSrcFn: b,\n    newlyAddedElement: !1,\n    corruptedRules: O\n  });\n}\nfunction sn(s, e) {\n  function t(r) {\n    e(r), (r.type === w.Document || r.type === w.Element) && r.childNodes.forEach(t);\n  }\n  t(s);\n}\nfunction nn() {\n  Lt = 1;\n}\nfunction ss(s) {\n  return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nfunction is(s) {\n  if (s.__esModule) return s;\n  var e = s.default;\n  if (typeof e == \"function\") {\n    var t = function r() {\n      return this instanceof r ? Reflect.construct(e, arguments, this.constructor) : e.apply(this, arguments);\n    };\n    t.prototype = e.prototype;\n  } else t = {};\n  return Object.defineProperty(t, \"__esModule\", { value: !0 }), Object.keys(s).forEach(function(r) {\n    var i = Object.getOwnPropertyDescriptor(s, r);\n    Object.defineProperty(t, r, i.get ? i : {\n      enumerable: !0,\n      get: function() {\n        return s[r];\n      }\n    });\n  }), t;\n}\nvar Xe = { exports: {} }, y = String, Tt = function() {\n  return { isColorSupported: !1, reset: y, bold: y, dim: y, italic: y, underline: y, inverse: y, hidden: y, strikethrough: y, black: y, red: y, green: y, yellow: y, blue: y, magenta: y, cyan: y, white: y, gray: y, bgBlack: y, bgRed: y, bgGreen: y, bgYellow: y, bgBlue: y, bgMagenta: y, bgCyan: y, bgWhite: y, blackBright: y, redBright: y, greenBright: y, yellowBright: y, blueBright: y, magentaBright: y, cyanBright: y, whiteBright: y, bgBlackBright: y, bgRedBright: y, bgGreenBright: y, bgYellowBright: y, bgBlueBright: y, bgMagentaBright: y, bgCyanBright: y, bgWhiteBright: y };\n};\nXe.exports = Tt();\nXe.exports.createColors = Tt;\nvar ns = Xe.exports;\nconst os = {}, ls = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: os\n}, Symbol.toStringTag, { value: \"Module\" })), $ = /* @__PURE__ */ is(ls);\nlet ht = ns, pt = $, Le = class Dt extends Error {\n  constructor(e, t, r, i, n, l) {\n    super(e), this.name = \"CssSyntaxError\", this.reason = e, n && (this.file = n), i && (this.source = i), l && (this.plugin = l), typeof t < \"u\" && typeof r < \"u\" && (typeof t == \"number\" ? (this.line = t, this.column = r) : (this.line = t.line, this.column = t.column, this.endLine = r.line, this.endColumn = r.column)), this.setMessage(), Error.captureStackTrace && Error.captureStackTrace(this, Dt);\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\", this.message += this.file ? this.file : \"<css input>\", typeof this.line < \"u\" && (this.message += \":\" + this.line + \":\" + this.column), this.message += \": \" + this.reason;\n  }\n  showSourceCode(e) {\n    if (!this.source) return \"\";\n    let t = this.source;\n    e == null && (e = ht.isColorSupported);\n    let r = (u) => u, i = (u) => u, n = (u) => u;\n    if (e) {\n      let { bold: u, gray: h, red: d } = ht.createColors(!0);\n      i = (g) => u(d(g)), r = (g) => h(g), pt && (n = (g) => pt(g));\n    }\n    let l = t.split(/\\r?\\n/), a = Math.max(this.line - 3, 0), o = Math.min(this.line + 2, l.length), f = String(o).length;\n    return l.slice(a, o).map((u, h) => {\n      let d = a + 1 + h, g = \" \" + (\" \" + d).slice(-f) + \" | \";\n      if (d === this.line) {\n        if (u.length > 160) {\n          let R = 20, c = Math.max(0, this.column - R), m = Math.max(\n            this.column + R,\n            this.endColumn + R\n          ), k = u.slice(c, m), M = r(g.replace(/\\d/g, \" \")) + u.slice(0, Math.min(this.column - 1, R - 1)).replace(/[^\\t]/g, \" \");\n          return i(\">\") + r(g) + n(k) + `\n ` + M + i(\"^\");\n        }\n        let E = r(g.replace(/\\d/g, \" \")) + u.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return i(\">\") + r(g) + n(u) + `\n ` + E + i(\"^\");\n      }\n      return \" \" + r(g) + n(u);\n    }).join(`\n`);\n  }\n  toString() {\n    let e = this.showSourceCode();\n    return e && (e = `\n\n` + e + `\n`), this.name + \": \" + this.message + e;\n  }\n};\nvar Ze = Le;\nLe.default = Le;\nconst dt = {\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: !1\n};\nfunction as(s) {\n  return s[0].toUpperCase() + s.slice(1);\n}\nlet Te = class {\n  constructor(e) {\n    this.builder = e;\n  }\n  atrule(e, t) {\n    let r = \"@\" + e.name, i = e.params ? this.rawValue(e, \"params\") : \"\";\n    if (typeof e.raws.afterName < \"u\" ? r += e.raws.afterName : i && (r += \" \"), e.nodes)\n      this.block(e, r + i);\n    else {\n      let n = (e.raws.between || \"\") + (t ? \";\" : \"\");\n      this.builder(r + i + n, e);\n    }\n  }\n  beforeAfter(e, t) {\n    let r;\n    e.type === \"decl\" ? r = this.raw(e, null, \"beforeDecl\") : e.type === \"comment\" ? r = this.raw(e, null, \"beforeComment\") : t === \"before\" ? r = this.raw(e, null, \"beforeRule\") : r = this.raw(e, null, \"beforeClose\");\n    let i = e.parent, n = 0;\n    for (; i && i.type !== \"root\"; )\n      n += 1, i = i.parent;\n    if (r.includes(`\n`)) {\n      let l = this.raw(e, null, \"indent\");\n      if (l.length)\n        for (let a = 0; a < n; a++) r += l;\n    }\n    return r;\n  }\n  block(e, t) {\n    let r = this.raw(e, \"between\", \"beforeOpen\");\n    this.builder(t + r + \"{\", e, \"start\");\n    let i;\n    e.nodes && e.nodes.length ? (this.body(e), i = this.raw(e, \"after\")) : i = this.raw(e, \"after\", \"emptyBody\"), i && this.builder(i), this.builder(\"}\", e, \"end\");\n  }\n  body(e) {\n    let t = e.nodes.length - 1;\n    for (; t > 0 && e.nodes[t].type === \"comment\"; )\n      t -= 1;\n    let r = this.raw(e, \"semicolon\");\n    for (let i = 0; i < e.nodes.length; i++) {\n      let n = e.nodes[i], l = this.raw(n, \"before\");\n      l && this.builder(l), this.stringify(n, t !== i || r);\n    }\n  }\n  comment(e) {\n    let t = this.raw(e, \"left\", \"commentLeft\"), r = this.raw(e, \"right\", \"commentRight\");\n    this.builder(\"/*\" + t + e.text + r + \"*/\", e);\n  }\n  decl(e, t) {\n    let r = this.raw(e, \"between\", \"colon\"), i = e.prop + r + this.rawValue(e, \"value\");\n    e.important && (i += e.raws.important || \" !important\"), t && (i += \";\"), this.builder(i, e);\n  }\n  document(e) {\n    this.body(e);\n  }\n  raw(e, t, r) {\n    let i;\n    if (r || (r = t), t && (i = e.raws[t], typeof i < \"u\"))\n      return i;\n    let n = e.parent;\n    if (r === \"before\" && (!n || n.type === \"root\" && n.first === e || n && n.type === \"document\"))\n      return \"\";\n    if (!n) return dt[r];\n    let l = e.root();\n    if (l.rawCache || (l.rawCache = {}), typeof l.rawCache[r] < \"u\")\n      return l.rawCache[r];\n    if (r === \"before\" || r === \"after\")\n      return this.beforeAfter(e, r);\n    {\n      let a = \"raw\" + as(r);\n      this[a] ? i = this[a](l, e) : l.walk((o) => {\n        if (i = o.raws[t], typeof i < \"u\") return !1;\n      });\n    }\n    return typeof i > \"u\" && (i = dt[r]), l.rawCache[r] = i, i;\n  }\n  rawBeforeClose(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length > 0 && typeof r.raws.after < \"u\")\n        return t = r.raws.after, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawBeforeComment(e, t) {\n    let r;\n    return e.walkComments((i) => {\n      if (typeof i.raws.before < \"u\")\n        return r = i.raws.before, r.includes(`\n`) && (r = r.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof r > \"u\" ? r = this.raw(t, null, \"beforeDecl\") : r && (r = r.replace(/\\S/g, \"\")), r;\n  }\n  rawBeforeDecl(e, t) {\n    let r;\n    return e.walkDecls((i) => {\n      if (typeof i.raws.before < \"u\")\n        return r = i.raws.before, r.includes(`\n`) && (r = r.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof r > \"u\" ? r = this.raw(t, null, \"beforeRule\") : r && (r = r.replace(/\\S/g, \"\")), r;\n  }\n  rawBeforeOpen(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.type !== \"decl\" && (t = r.raws.between, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawBeforeRule(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && (r.parent !== e || e.first !== r) && typeof r.raws.before < \"u\")\n        return t = r.raws.before, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawColon(e) {\n    let t;\n    return e.walkDecls((r) => {\n      if (typeof r.raws.between < \"u\")\n        return t = r.raws.between.replace(/[^\\s:]/g, \"\"), !1;\n    }), t;\n  }\n  rawEmptyBody(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length === 0 && (t = r.raws.after, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawIndent(e) {\n    if (e.raws.indent) return e.raws.indent;\n    let t;\n    return e.walk((r) => {\n      let i = r.parent;\n      if (i && i !== e && i.parent && i.parent === e && typeof r.raws.before < \"u\") {\n        let n = r.raws.before.split(`\n`);\n        return t = n[n.length - 1], t = t.replace(/\\S/g, \"\"), !1;\n      }\n    }), t;\n  }\n  rawSemicolon(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length && r.last.type === \"decl\" && (t = r.raws.semicolon, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawValue(e, t) {\n    let r = e[t], i = e.raws[t];\n    return i && i.value === r ? i.raw : r;\n  }\n  root(e) {\n    this.body(e), e.raws.after && this.builder(e.raws.after);\n  }\n  rule(e) {\n    this.block(e, this.rawValue(e, \"selector\")), e.raws.ownSemicolon && this.builder(e.raws.ownSemicolon, e, \"end\");\n  }\n  stringify(e, t) {\n    if (!this[e.type])\n      throw new Error(\n        \"Unknown AST node type \" + e.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    this[e.type](e, t);\n  }\n};\nvar Ut = Te;\nTe.default = Te;\nlet us = Ut;\nfunction De(s, e) {\n  new us(e).stringify(s);\n}\nvar xe = De;\nDe.default = De;\nvar re = {};\nre.isClean = Symbol(\"isClean\");\nre.my = Symbol(\"my\");\nlet fs = Ze, cs = Ut, hs = xe, { isClean: J, my: ps } = re;\nfunction Ue(s, e) {\n  let t = new s.constructor();\n  for (let r in s) {\n    if (!Object.prototype.hasOwnProperty.call(s, r) || r === \"proxyCache\") continue;\n    let i = s[r], n = typeof i;\n    r === \"parent\" && n === \"object\" ? e && (t[r] = e) : r === \"source\" ? t[r] = i : Array.isArray(i) ? t[r] = i.map((l) => Ue(l, t)) : (n === \"object\" && i !== null && (i = Ue(i)), t[r] = i);\n  }\n  return t;\n}\nfunction Y(s, e) {\n  if (e && typeof e.offset < \"u\")\n    return e.offset;\n  let t = 1, r = 1, i = 0;\n  for (let n = 0; n < s.length; n++) {\n    if (r === e.line && t === e.column) {\n      i = n;\n      break;\n    }\n    s[n] === `\n` ? (t = 1, r += 1) : t += 1;\n  }\n  return i;\n}\nlet Be = class {\n  get proxyOf() {\n    return this;\n  }\n  constructor(e = {}) {\n    this.raws = {}, this[J] = !1, this[ps] = !0;\n    for (let t in e)\n      if (t === \"nodes\") {\n        this.nodes = [];\n        for (let r of e[t])\n          typeof r.clone == \"function\" ? this.append(r.clone()) : this.append(r);\n      } else\n        this[t] = e[t];\n  }\n  addToError(e) {\n    if (e.postcssNode = this, e.stack && this.source && /\\n\\s{4}at /.test(e.stack)) {\n      let t = this.source;\n      e.stack = e.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${t.input.from}:${t.start.line}:${t.start.column}$&`\n      );\n    }\n    return e;\n  }\n  after(e) {\n    return this.parent.insertAfter(this, e), this;\n  }\n  assign(e = {}) {\n    for (let t in e)\n      this[t] = e[t];\n    return this;\n  }\n  before(e) {\n    return this.parent.insertBefore(this, e), this;\n  }\n  cleanRaws(e) {\n    delete this.raws.before, delete this.raws.after, e || delete this.raws.between;\n  }\n  clone(e = {}) {\n    let t = Ue(this);\n    for (let r in e)\n      t[r] = e[r];\n    return t;\n  }\n  cloneAfter(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertAfter(this, t), t;\n  }\n  cloneBefore(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertBefore(this, t), t;\n  }\n  error(e, t = {}) {\n    if (this.source) {\n      let { end: r, start: i } = this.rangeBy(t);\n      return this.source.input.error(\n        e,\n        { column: i.column, line: i.line },\n        { column: r.column, line: r.line },\n        t\n      );\n    }\n    return new fs(e);\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : t === \"root\" ? () => e.root().toProxy() : e[t];\n      },\n      set(e, t, r) {\n        return e[t] === r || (e[t] = r, (t === \"prop\" || t === \"value\" || t === \"name\" || t === \"params\" || t === \"important\" || /* c8 ignore next */\n        t === \"text\") && e.markDirty()), !0;\n      }\n    };\n  }\n  /* c8 ignore next 3 */\n  markClean() {\n    this[J] = !0;\n  }\n  markDirty() {\n    if (this[J]) {\n      this[J] = !1;\n      let e = this;\n      for (; e = e.parent; )\n        e[J] = !1;\n    }\n  }\n  next() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e + 1];\n  }\n  positionBy(e) {\n    let t = this.source.start;\n    if (e.index)\n      t = this.positionInside(e.index);\n    else if (e.word) {\n      let r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, n = r.slice(\n        Y(r, this.source.start),\n        Y(r, this.source.end)\n      ).indexOf(e.word);\n      n !== -1 && (t = this.positionInside(n));\n    }\n    return t;\n  }\n  positionInside(e) {\n    let t = this.source.start.column, r = this.source.start.line, i = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, n = Y(i, this.source.start), l = n + e;\n    for (let a = n; a < l; a++)\n      i[a] === `\n` ? (t = 1, r += 1) : t += 1;\n    return { column: t, line: r };\n  }\n  prev() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e - 1];\n  }\n  rangeBy(e) {\n    let t = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    }, r = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: t.column + 1,\n      line: t.line\n    };\n    if (e.word) {\n      let i = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, l = i.slice(\n        Y(i, this.source.start),\n        Y(i, this.source.end)\n      ).indexOf(e.word);\n      l !== -1 && (t = this.positionInside(l), r = this.positionInside(\n        l + e.word.length\n      ));\n    } else\n      e.start ? t = {\n        column: e.start.column,\n        line: e.start.line\n      } : e.index && (t = this.positionInside(e.index)), e.end ? r = {\n        column: e.end.column,\n        line: e.end.line\n      } : typeof e.endIndex == \"number\" ? r = this.positionInside(e.endIndex) : e.index && (r = this.positionInside(e.index + 1));\n    return (r.line < t.line || r.line === t.line && r.column <= t.column) && (r = { column: t.column + 1, line: t.line }), { end: r, start: t };\n  }\n  raw(e, t) {\n    return new cs().raw(this, e, t);\n  }\n  remove() {\n    return this.parent && this.parent.removeChild(this), this.parent = void 0, this;\n  }\n  replaceWith(...e) {\n    if (this.parent) {\n      let t = this, r = !1;\n      for (let i of e)\n        i === this ? r = !0 : r ? (this.parent.insertAfter(t, i), t = i) : this.parent.insertBefore(t, i);\n      r || this.remove();\n    }\n    return this;\n  }\n  root() {\n    let e = this;\n    for (; e.parent && e.parent.type !== \"document\"; )\n      e = e.parent;\n    return e;\n  }\n  toJSON(e, t) {\n    let r = {}, i = t == null;\n    t = t || /* @__PURE__ */ new Map();\n    let n = 0;\n    for (let l in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, l) || l === \"parent\" || l === \"proxyCache\") continue;\n      let a = this[l];\n      if (Array.isArray(a))\n        r[l] = a.map((o) => typeof o == \"object\" && o.toJSON ? o.toJSON(null, t) : o);\n      else if (typeof a == \"object\" && a.toJSON)\n        r[l] = a.toJSON(null, t);\n      else if (l === \"source\") {\n        let o = t.get(a.input);\n        o == null && (o = n, t.set(a.input, n), n++), r[l] = {\n          end: a.end,\n          inputId: o,\n          start: a.start\n        };\n      } else\n        r[l] = a;\n    }\n    return i && (r.inputs = [...t.keys()].map((l) => l.toJSON())), r;\n  }\n  toProxy() {\n    return this.proxyCache || (this.proxyCache = new Proxy(this, this.getProxyProcessor())), this.proxyCache;\n  }\n  toString(e = hs) {\n    e.stringify && (e = e.stringify);\n    let t = \"\";\n    return e(this, (r) => {\n      t += r;\n    }), t;\n  }\n  warn(e, t, r) {\n    let i = { node: this };\n    for (let n in r) i[n] = r[n];\n    return e.warn(t, i);\n  }\n};\nvar ve = Be;\nBe.default = Be;\nlet ds = ve, Fe = class extends ds {\n  constructor(e) {\n    super(e), this.type = \"comment\";\n  }\n};\nvar Ee = Fe;\nFe.default = Fe;\nlet ms = ve, ze = class extends ms {\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n  constructor(e) {\n    e && typeof e.value < \"u\" && typeof e.value != \"string\" && (e = { ...e, value: String(e.value) }), super(e), this.type = \"decl\";\n  }\n};\nvar Re = ze;\nze.default = ze;\nlet Bt = Ee, Ft = Re, gs = ve, { isClean: zt, my: Wt } = re, et, jt, Gt, tt;\nfunction Vt(s) {\n  return s.map((e) => (e.nodes && (e.nodes = Vt(e.nodes)), delete e.source, e));\n}\nfunction Ht(s) {\n  if (s[zt] = !1, s.proxyOf.nodes)\n    for (let e of s.proxyOf.nodes)\n      Ht(e);\n}\nlet T = class Jt extends gs {\n  get first() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n  append(...e) {\n    for (let t of e) {\n      let r = this.normalize(t, this.last);\n      for (let i of r) this.proxyOf.nodes.push(i);\n    }\n    return this.markDirty(), this;\n  }\n  cleanRaws(e) {\n    if (super.cleanRaws(e), this.nodes)\n      for (let t of this.nodes) t.cleanRaws(e);\n  }\n  each(e) {\n    if (!this.proxyOf.nodes) return;\n    let t = this.getIterator(), r, i;\n    for (; this.indexes[t] < this.proxyOf.nodes.length && (r = this.indexes[t], i = e(this.proxyOf.nodes[r], r), i !== !1); )\n      this.indexes[t] += 1;\n    return delete this.indexes[t], i;\n  }\n  every(e) {\n    return this.nodes.every(e);\n  }\n  getIterator() {\n    this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1;\n    let e = this.lastEach;\n    return this.indexes[e] = 0, e;\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : e[t] ? t === \"each\" || typeof t == \"string\" && t.startsWith(\"walk\") ? (...r) => e[t](\n          ...r.map((i) => typeof i == \"function\" ? (n, l) => i(n.toProxy(), l) : i)\n        ) : t === \"every\" || t === \"some\" ? (r) => e[t](\n          (i, ...n) => r(i.toProxy(), ...n)\n        ) : t === \"root\" ? () => e.root().toProxy() : t === \"nodes\" ? e.nodes.map((r) => r.toProxy()) : t === \"first\" || t === \"last\" ? e[t].toProxy() : e[t] : e[t];\n      },\n      set(e, t, r) {\n        return e[t] === r || (e[t] = r, (t === \"name\" || t === \"params\" || t === \"selector\") && e.markDirty()), !0;\n      }\n    };\n  }\n  index(e) {\n    return typeof e == \"number\" ? e : (e.proxyOf && (e = e.proxyOf), this.proxyOf.nodes.indexOf(e));\n  }\n  insertAfter(e, t) {\n    let r = this.index(e), i = this.normalize(t, this.proxyOf.nodes[r]).reverse();\n    r = this.index(e);\n    for (let l of i) this.proxyOf.nodes.splice(r + 1, 0, l);\n    let n;\n    for (let l in this.indexes)\n      n = this.indexes[l], r < n && (this.indexes[l] = n + i.length);\n    return this.markDirty(), this;\n  }\n  insertBefore(e, t) {\n    let r = this.index(e), i = r === 0 ? \"prepend\" : !1, n = this.normalize(\n      t,\n      this.proxyOf.nodes[r],\n      i\n    ).reverse();\n    r = this.index(e);\n    for (let a of n) this.proxyOf.nodes.splice(r, 0, a);\n    let l;\n    for (let a in this.indexes)\n      l = this.indexes[a], r <= l && (this.indexes[a] = l + n.length);\n    return this.markDirty(), this;\n  }\n  normalize(e, t) {\n    if (typeof e == \"string\")\n      e = Vt(jt(e).nodes);\n    else if (typeof e > \"u\")\n      e = [];\n    else if (Array.isArray(e)) {\n      e = e.slice(0);\n      for (let i of e)\n        i.parent && i.parent.removeChild(i, \"ignore\");\n    } else if (e.type === \"root\" && this.type !== \"document\") {\n      e = e.nodes.slice(0);\n      for (let i of e)\n        i.parent && i.parent.removeChild(i, \"ignore\");\n    } else if (e.type)\n      e = [e];\n    else if (e.prop) {\n      if (typeof e.value > \"u\")\n        throw new Error(\"Value field is missed in node creation\");\n      typeof e.value != \"string\" && (e.value = String(e.value)), e = [new Ft(e)];\n    } else if (e.selector || e.selectors)\n      e = [new tt(e)];\n    else if (e.name)\n      e = [new et(e)];\n    else if (e.text)\n      e = [new Bt(e)];\n    else\n      throw new Error(\"Unknown node type in node creation\");\n    return e.map((i) => (i[Wt] || Jt.rebuild(i), i = i.proxyOf, i.parent && i.parent.removeChild(i), i[zt] && Ht(i), i.raws || (i.raws = {}), typeof i.raws.before > \"u\" && t && typeof t.raws.before < \"u\" && (i.raws.before = t.raws.before.replace(/\\S/g, \"\")), i.parent = this.proxyOf, i));\n  }\n  prepend(...e) {\n    e = e.reverse();\n    for (let t of e) {\n      let r = this.normalize(t, this.first, \"prepend\").reverse();\n      for (let i of r) this.proxyOf.nodes.unshift(i);\n      for (let i in this.indexes)\n        this.indexes[i] = this.indexes[i] + r.length;\n    }\n    return this.markDirty(), this;\n  }\n  push(e) {\n    return e.parent = this, this.proxyOf.nodes.push(e), this;\n  }\n  removeAll() {\n    for (let e of this.proxyOf.nodes) e.parent = void 0;\n    return this.proxyOf.nodes = [], this.markDirty(), this;\n  }\n  removeChild(e) {\n    e = this.index(e), this.proxyOf.nodes[e].parent = void 0, this.proxyOf.nodes.splice(e, 1);\n    let t;\n    for (let r in this.indexes)\n      t = this.indexes[r], t >= e && (this.indexes[r] = t - 1);\n    return this.markDirty(), this;\n  }\n  replaceValues(e, t, r) {\n    return r || (r = t, t = {}), this.walkDecls((i) => {\n      t.props && !t.props.includes(i.prop) || t.fast && !i.value.includes(t.fast) || (i.value = i.value.replace(e, r));\n    }), this.markDirty(), this;\n  }\n  some(e) {\n    return this.nodes.some(e);\n  }\n  walk(e) {\n    return this.each((t, r) => {\n      let i;\n      try {\n        i = e(t, r);\n      } catch (n) {\n        throw t.addToError(n);\n      }\n      return i !== !1 && t.walk && (i = t.walk(e)), i;\n    });\n  }\n  walkAtRules(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"atrule\" && e.test(r.name))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"atrule\" && r.name === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"atrule\")\n        return t(r, i);\n    }));\n  }\n  walkComments(e) {\n    return this.walk((t, r) => {\n      if (t.type === \"comment\")\n        return e(t, r);\n    });\n  }\n  walkDecls(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"decl\" && e.test(r.prop))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"decl\" && r.prop === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"decl\")\n        return t(r, i);\n    }));\n  }\n  walkRules(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"rule\" && e.test(r.selector))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"rule\" && r.selector === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"rule\")\n        return t(r, i);\n    }));\n  }\n};\nT.registerParse = (s) => {\n  jt = s;\n};\nT.registerRule = (s) => {\n  tt = s;\n};\nT.registerAtRule = (s) => {\n  et = s;\n};\nT.registerRoot = (s) => {\n  Gt = s;\n};\nvar D = T;\nT.default = T;\nT.rebuild = (s) => {\n  s.type === \"atrule\" ? Object.setPrototypeOf(s, et.prototype) : s.type === \"rule\" ? Object.setPrototypeOf(s, tt.prototype) : s.type === \"decl\" ? Object.setPrototypeOf(s, Ft.prototype) : s.type === \"comment\" ? Object.setPrototypeOf(s, Bt.prototype) : s.type === \"root\" && Object.setPrototypeOf(s, Gt.prototype), s[Wt] = !0, s.nodes && s.nodes.forEach((e) => {\n    T.rebuild(e);\n  });\n};\nlet Yt = D, ge = class extends Yt {\n  constructor(e) {\n    super(e), this.type = \"atrule\";\n  }\n  append(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.append(...e);\n  }\n  prepend(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.prepend(...e);\n  }\n};\nvar rt = ge;\nge.default = ge;\nYt.registerAtRule(ge);\nlet ys = D, qt, Qt, X = class extends ys {\n  constructor(e) {\n    super({ type: \"document\", ...e }), this.nodes || (this.nodes = []);\n  }\n  toResult(e = {}) {\n    return new qt(new Qt(), this, e).stringify();\n  }\n};\nX.registerLazyResult = (s) => {\n  qt = s;\n};\nX.registerProcessor = (s) => {\n  Qt = s;\n};\nvar st = X;\nX.default = X;\nlet ws = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\", bs = (s = 21) => {\n  let e = \"\", t = s | 0;\n  for (; t--; )\n    e += ws[Math.random() * 64 | 0];\n  return e;\n};\nvar Cs = { nanoid: bs };\nlet { existsSync: Ss, readFileSync: xs } = $, { dirname: Me, join: vs } = $, { SourceMapConsumer: mt, SourceMapGenerator: gt } = $;\nfunction Es(s) {\n  return Buffer ? Buffer.from(s, \"base64\").toString() : window.atob(s);\n}\nlet We = class {\n  constructor(e, t) {\n    if (t.map === !1) return;\n    this.loadAnnotation(e), this.inline = this.startWith(this.annotation, \"data:\");\n    let r = t.map ? t.map.prev : void 0, i = this.loadMap(t.from, r);\n    !this.mapFile && t.from && (this.mapFile = t.from), this.mapFile && (this.root = Me(this.mapFile)), i && (this.text = i);\n  }\n  consumer() {\n    return this.consumerCache || (this.consumerCache = new mt(this.text)), this.consumerCache;\n  }\n  decodeInline(e) {\n    let t = /^data:application\\/json;charset=utf-?8;base64,/, r = /^data:application\\/json;base64,/, i = /^data:application\\/json;charset=utf-?8,/, n = /^data:application\\/json,/, l = e.match(i) || e.match(n);\n    if (l)\n      return decodeURIComponent(e.substr(l[0].length));\n    let a = e.match(t) || e.match(r);\n    if (a)\n      return Es(e.substr(a[0].length));\n    let o = e.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + o);\n  }\n  getAnnotationURL(e) {\n    return e.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(e) {\n    return typeof e != \"object\" ? !1 : typeof e.mappings == \"string\" || typeof e._mappings == \"string\" || Array.isArray(e.sections);\n  }\n  loadAnnotation(e) {\n    let t = e.match(/\\/\\*\\s*# sourceMappingURL=/g);\n    if (!t) return;\n    let r = e.lastIndexOf(t.pop()), i = e.indexOf(\"*/\", r);\n    r > -1 && i > -1 && (this.annotation = this.getAnnotationURL(e.substring(r, i)));\n  }\n  loadFile(e) {\n    if (this.root = Me(e), Ss(e))\n      return this.mapFile = e, xs(e, \"utf-8\").toString().trim();\n  }\n  loadMap(e, t) {\n    if (t === !1) return !1;\n    if (t) {\n      if (typeof t == \"string\")\n        return t;\n      if (typeof t == \"function\") {\n        let r = t(e);\n        if (r) {\n          let i = this.loadFile(r);\n          if (!i)\n            throw new Error(\n              \"Unable to load previous source map: \" + r.toString()\n            );\n          return i;\n        }\n      } else {\n        if (t instanceof mt)\n          return gt.fromSourceMap(t).toString();\n        if (t instanceof gt)\n          return t.toString();\n        if (this.isMap(t))\n          return JSON.stringify(t);\n        throw new Error(\n          \"Unsupported previous source map format: \" + t.toString()\n        );\n      }\n    } else {\n      if (this.inline)\n        return this.decodeInline(this.annotation);\n      if (this.annotation) {\n        let r = this.annotation;\n        return e && (r = vs(Me(e), r)), this.loadFile(r);\n      }\n    }\n  }\n  startWith(e, t) {\n    return e ? e.substr(0, t.length) === t : !1;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar Kt = We;\nWe.default = We;\nlet { nanoid: Rs } = Cs, { isAbsolute: je, resolve: Ge } = $, { SourceMapConsumer: Os, SourceMapGenerator: ks } = $, { fileURLToPath: yt, pathToFileURL: ie } = $, wt = Ze, Ns = Kt, Pe = $, Ie = Symbol(\"fromOffsetCache\"), As = !!(Os && ks), bt = !!(Ge && je), ye = class {\n  get from() {\n    return this.file || this.id;\n  }\n  constructor(e, t = {}) {\n    if (e === null || typeof e > \"u\" || typeof e == \"object\" && !e.toString)\n      throw new Error(`PostCSS received ${e} instead of CSS string`);\n    if (this.css = e.toString(), this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\" ? (this.hasBOM = !0, this.css = this.css.slice(1)) : this.hasBOM = !1, this.document = this.css, t.document && (this.document = t.document.toString()), t.from && (!bt || /^\\w+:\\/\\//.test(t.from) || je(t.from) ? this.file = t.from : this.file = Ge(t.from)), bt && As) {\n      let r = new Ns(this.css, t);\n      if (r.text) {\n        this.map = r;\n        let i = r.consumer().file;\n        !this.file && i && (this.file = this.mapResolve(i));\n      }\n    }\n    this.file || (this.id = \"<input css \" + Rs(6) + \">\"), this.map && (this.map.file = this.from);\n  }\n  error(e, t, r, i = {}) {\n    let n, l, a;\n    if (t && typeof t == \"object\") {\n      let f = t, u = r;\n      if (typeof f.offset == \"number\") {\n        let h = this.fromOffset(f.offset);\n        t = h.line, r = h.col;\n      } else\n        t = f.line, r = f.column;\n      if (typeof u.offset == \"number\") {\n        let h = this.fromOffset(u.offset);\n        l = h.line, n = h.col;\n      } else\n        l = u.line, n = u.column;\n    } else if (!r) {\n      let f = this.fromOffset(t);\n      t = f.line, r = f.col;\n    }\n    let o = this.origin(t, r, l, n);\n    return o ? a = new wt(\n      e,\n      o.endLine === void 0 ? o.line : { column: o.column, line: o.line },\n      o.endLine === void 0 ? o.column : { column: o.endColumn, line: o.endLine },\n      o.source,\n      o.file,\n      i.plugin\n    ) : a = new wt(\n      e,\n      l === void 0 ? t : { column: r, line: t },\n      l === void 0 ? r : { column: n, line: l },\n      this.css,\n      this.file,\n      i.plugin\n    ), a.input = { column: r, endColumn: n, endLine: l, line: t, source: this.css }, this.file && (ie && (a.input.url = ie(this.file).toString()), a.input.file = this.file), a;\n  }\n  fromOffset(e) {\n    let t, r;\n    if (this[Ie])\n      r = this[Ie];\n    else {\n      let n = this.css.split(`\n`);\n      r = new Array(n.length);\n      let l = 0;\n      for (let a = 0, o = n.length; a < o; a++)\n        r[a] = l, l += n[a].length + 1;\n      this[Ie] = r;\n    }\n    t = r[r.length - 1];\n    let i = 0;\n    if (e >= t)\n      i = r.length - 1;\n    else {\n      let n = r.length - 2, l;\n      for (; i < n; )\n        if (l = i + (n - i >> 1), e < r[l])\n          n = l - 1;\n        else if (e >= r[l + 1])\n          i = l + 1;\n        else {\n          i = l;\n          break;\n        }\n    }\n    return {\n      col: e - r[i] + 1,\n      line: i + 1\n    };\n  }\n  mapResolve(e) {\n    return /^\\w+:\\/\\//.test(e) ? e : Ge(this.map.consumer().sourceRoot || this.map.root || \".\", e);\n  }\n  origin(e, t, r, i) {\n    if (!this.map) return !1;\n    let n = this.map.consumer(), l = n.originalPositionFor({ column: t, line: e });\n    if (!l.source) return !1;\n    let a;\n    typeof r == \"number\" && (a = n.originalPositionFor({ column: i, line: r }));\n    let o;\n    je(l.source) ? o = ie(l.source) : o = new URL(\n      l.source,\n      this.map.consumer().sourceRoot || ie(this.map.mapFile)\n    );\n    let f = {\n      column: l.column,\n      endColumn: a && a.column,\n      endLine: a && a.line,\n      line: l.line,\n      url: o.toString()\n    };\n    if (o.protocol === \"file:\")\n      if (yt)\n        f.file = yt(o);\n      else\n        throw new Error(\"file: protocol is not available in this PostCSS build\");\n    let u = n.sourceContentFor(l.source);\n    return u && (f.source = u), f;\n  }\n  toJSON() {\n    let e = {};\n    for (let t of [\"hasBOM\", \"css\", \"file\", \"id\"])\n      this[t] != null && (e[t] = this[t]);\n    return this.map && (e.map = { ...this.map }, e.map.consumerCache && (e.map.consumerCache = void 0)), e;\n  }\n};\nvar Oe = ye;\nye.default = ye;\nPe && Pe.registerInput && Pe.registerInput(ye);\nlet Xt = D, Zt, er, j = class extends Xt {\n  constructor(e) {\n    super(e), this.type = \"root\", this.nodes || (this.nodes = []);\n  }\n  normalize(e, t, r) {\n    let i = super.normalize(e);\n    if (t) {\n      if (r === \"prepend\")\n        this.nodes.length > 1 ? t.raws.before = this.nodes[1].raws.before : delete t.raws.before;\n      else if (this.first !== t)\n        for (let n of i)\n          n.raws.before = t.raws.before;\n    }\n    return i;\n  }\n  removeChild(e, t) {\n    let r = this.index(e);\n    return !t && r === 0 && this.nodes.length > 1 && (this.nodes[1].raws.before = this.nodes[r].raws.before), super.removeChild(e);\n  }\n  toResult(e = {}) {\n    return new Zt(new er(), this, e).stringify();\n  }\n};\nj.registerLazyResult = (s) => {\n  Zt = s;\n};\nj.registerProcessor = (s) => {\n  er = s;\n};\nvar se = j;\nj.default = j;\nXt.registerRoot(j);\nlet Z = {\n  comma(s) {\n    return Z.split(s, [\",\"], !0);\n  },\n  space(s) {\n    let e = [\" \", `\n`, \"\t\"];\n    return Z.split(s, e);\n  },\n  split(s, e, t) {\n    let r = [], i = \"\", n = !1, l = 0, a = !1, o = \"\", f = !1;\n    for (let u of s)\n      f ? f = !1 : u === \"\\\\\" ? f = !0 : a ? u === o && (a = !1) : u === '\"' || u === \"'\" ? (a = !0, o = u) : u === \"(\" ? l += 1 : u === \")\" ? l > 0 && (l -= 1) : l === 0 && e.includes(u) && (n = !0), n ? (i !== \"\" && r.push(i.trim()), i = \"\", n = !1) : i += u;\n    return (t || i !== \"\") && r.push(i.trim()), r;\n  }\n};\nvar tr = Z;\nZ.default = Z;\nlet rr = D, Ms = tr, we = class extends rr {\n  get selectors() {\n    return Ms.comma(this.selector);\n  }\n  set selectors(e) {\n    let t = this.selector ? this.selector.match(/,\\s*/) : null, r = t ? t[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = e.join(r);\n  }\n  constructor(e) {\n    super(e), this.type = \"rule\", this.nodes || (this.nodes = []);\n  }\n};\nvar it = we;\nwe.default = we;\nrr.registerRule(we);\nlet Ps = rt, Is = Ee, _s = Re, $s = Oe, Ls = Kt, Ts = se, Ds = it;\nfunction ee(s, e) {\n  if (Array.isArray(s)) return s.map((i) => ee(i));\n  let { inputs: t, ...r } = s;\n  if (t) {\n    e = [];\n    for (let i of t) {\n      let n = { ...i, __proto__: $s.prototype };\n      n.map && (n.map = {\n        ...n.map,\n        __proto__: Ls.prototype\n      }), e.push(n);\n    }\n  }\n  if (r.nodes && (r.nodes = s.nodes.map((i) => ee(i, e))), r.source) {\n    let { inputId: i, ...n } = r.source;\n    r.source = n, i != null && (r.source.input = e[i]);\n  }\n  if (r.type === \"root\")\n    return new Ts(r);\n  if (r.type === \"decl\")\n    return new _s(r);\n  if (r.type === \"rule\")\n    return new Ds(r);\n  if (r.type === \"comment\")\n    return new Is(r);\n  if (r.type === \"atrule\")\n    return new Ps(r);\n  throw new Error(\"Unknown node type: \" + s.type);\n}\nvar Us = ee;\nee.default = ee;\nlet { dirname: he, relative: sr, resolve: ir, sep: nr } = $, { SourceMapConsumer: or, SourceMapGenerator: pe } = $, { pathToFileURL: Ct } = $, Bs = Oe, Fs = !!(or && pe), zs = !!(he && ir && sr && nr), Ws = class {\n  constructor(e, t, r, i) {\n    this.stringify = e, this.mapOpts = r.map || {}, this.root = t, this.opts = r, this.css = i, this.originalCSS = i, this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute, this.memoizedFileURLs = /* @__PURE__ */ new Map(), this.memoizedPaths = /* @__PURE__ */ new Map(), this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let e;\n    this.isInline() ? e = \"data:application/json;base64,\" + this.toBase64(this.map.toString()) : typeof this.mapOpts.annotation == \"string\" ? e = this.mapOpts.annotation : typeof this.mapOpts.annotation == \"function\" ? e = this.mapOpts.annotation(this.opts.to, this.root) : e = this.outputFile() + \".map\";\n    let t = `\n`;\n    this.css.includes(`\\r\n`) && (t = `\\r\n`), this.css += t + \"/*# sourceMappingURL=\" + e + \" */\";\n  }\n  applyPrevMaps() {\n    for (let e of this.previous()) {\n      let t = this.toUrl(this.path(e.file)), r = e.root || he(e.file), i;\n      this.mapOpts.sourcesContent === !1 ? (i = new or(e.text), i.sourcesContent && (i.sourcesContent = null)) : i = e.consumer(), this.map.applySourceMap(i, t, this.toUrl(this.path(r)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation !== !1)\n      if (this.root) {\n        let e;\n        for (let t = this.root.nodes.length - 1; t >= 0; t--)\n          e = this.root.nodes[t], e.type === \"comment\" && e.text.startsWith(\"# sourceMappingURL=\") && this.root.removeChild(t);\n      } else this.css && (this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\"));\n  }\n  generate() {\n    if (this.clearAnnotation(), zs && Fs && this.isMap())\n      return this.generateMap();\n    {\n      let e = \"\";\n      return this.stringify(this.root, (t) => {\n        e += t;\n      }), [e];\n    }\n  }\n  generateMap() {\n    if (this.root)\n      this.generateString();\n    else if (this.previous().length === 1) {\n      let e = this.previous()[0].consumer();\n      e.file = this.outputFile(), this.map = pe.fromSourceMap(e, {\n        ignoreInvalidMapping: !0\n      });\n    } else\n      this.map = new pe({\n        file: this.outputFile(),\n        ignoreInvalidMapping: !0\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    return this.isSourcesContent() && this.setSourcesContent(), this.root && this.previous().length > 0 && this.applyPrevMaps(), this.isAnnotation() && this.addAnnotation(), this.isInline() ? [this.css] : [this.css, this.map];\n  }\n  generateString() {\n    this.css = \"\", this.map = new pe({\n      file: this.outputFile(),\n      ignoreInvalidMapping: !0\n    });\n    let e = 1, t = 1, r = \"<no source>\", i = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    }, n, l;\n    this.stringify(this.root, (a, o, f) => {\n      if (this.css += a, o && f !== \"end\" && (i.generated.line = e, i.generated.column = t - 1, o.source && o.source.start ? (i.source = this.sourcePath(o), i.original.line = o.source.start.line, i.original.column = o.source.start.column - 1, this.map.addMapping(i)) : (i.source = r, i.original.line = 1, i.original.column = 0, this.map.addMapping(i))), l = a.match(/\\n/g), l ? (e += l.length, n = a.lastIndexOf(`\n`), t = a.length - n) : t += a.length, o && f !== \"start\") {\n        let u = o.parent || { raws: {} };\n        (!(o.type === \"decl\" || o.type === \"atrule\" && !o.nodes) || o !== u.last || u.raws.semicolon) && (o.source && o.source.end ? (i.source = this.sourcePath(o), i.original.line = o.source.end.line, i.original.column = o.source.end.column - 1, i.generated.line = e, i.generated.column = t - 2, this.map.addMapping(i)) : (i.source = r, i.original.line = 1, i.original.column = 0, i.generated.line = e, i.generated.column = t - 1, this.map.addMapping(i)));\n      }\n    });\n  }\n  isAnnotation() {\n    return this.isInline() ? !0 : typeof this.mapOpts.annotation < \"u\" ? this.mapOpts.annotation : this.previous().length ? this.previous().some((e) => e.annotation) : !0;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline < \"u\")\n      return this.mapOpts.inline;\n    let e = this.mapOpts.annotation;\n    return typeof e < \"u\" && e !== !0 ? !1 : this.previous().length ? this.previous().some((t) => t.inline) : !0;\n  }\n  isMap() {\n    return typeof this.opts.map < \"u\" ? !!this.opts.map : this.previous().length > 0;\n  }\n  isSourcesContent() {\n    return typeof this.mapOpts.sourcesContent < \"u\" ? this.mapOpts.sourcesContent : this.previous().length ? this.previous().some((e) => e.withContent()) : !0;\n  }\n  outputFile() {\n    return this.opts.to ? this.path(this.opts.to) : this.opts.from ? this.path(this.opts.from) : \"to.css\";\n  }\n  path(e) {\n    if (this.mapOpts.absolute || e.charCodeAt(0) === 60 || /^\\w+:\\/\\//.test(e)) return e;\n    let t = this.memoizedPaths.get(e);\n    if (t) return t;\n    let r = this.opts.to ? he(this.opts.to) : \".\";\n    typeof this.mapOpts.annotation == \"string\" && (r = he(ir(r, this.mapOpts.annotation)));\n    let i = sr(r, e);\n    return this.memoizedPaths.set(e, i), i;\n  }\n  previous() {\n    if (!this.previousMaps)\n      if (this.previousMaps = [], this.root)\n        this.root.walk((e) => {\n          if (e.source && e.source.input.map) {\n            let t = e.source.input.map;\n            this.previousMaps.includes(t) || this.previousMaps.push(t);\n          }\n        });\n      else {\n        let e = new Bs(this.originalCSS, this.opts);\n        e.map && this.previousMaps.push(e.map);\n      }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let e = {};\n    if (this.root)\n      this.root.walk((t) => {\n        if (t.source) {\n          let r = t.source.input.from;\n          if (r && !e[r]) {\n            e[r] = !0;\n            let i = this.usesFileUrls ? this.toFileUrl(r) : this.toUrl(this.path(r));\n            this.map.setSourceContent(i, t.source.input.css);\n          }\n        }\n      });\n    else if (this.css) {\n      let t = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(t, this.css);\n    }\n  }\n  sourcePath(e) {\n    return this.mapOpts.from ? this.toUrl(this.mapOpts.from) : this.usesFileUrls ? this.toFileUrl(e.source.input.from) : this.toUrl(this.path(e.source.input.from));\n  }\n  toBase64(e) {\n    return Buffer ? Buffer.from(e).toString(\"base64\") : window.btoa(unescape(encodeURIComponent(e)));\n  }\n  toFileUrl(e) {\n    let t = this.memoizedFileURLs.get(e);\n    if (t) return t;\n    if (Ct) {\n      let r = Ct(e).toString();\n      return this.memoizedFileURLs.set(e, r), r;\n    } else\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n  }\n  toUrl(e) {\n    let t = this.memoizedURLs.get(e);\n    if (t) return t;\n    nr === \"\\\\\" && (e = e.replace(/\\\\/g, \"/\"));\n    let r = encodeURI(e).replace(/[#?]/g, encodeURIComponent);\n    return this.memoizedURLs.set(e, r), r;\n  }\n};\nvar lr = Ws;\nconst _e = 39, St = 34, ne = 92, xt = 47, oe = 10, q = 32, le = 12, ae = 9, ue = 13, js = 91, Gs = 93, Vs = 40, Hs = 41, Js = 123, Ys = 125, qs = 59, Qs = 42, Ks = 58, Xs = 64, fe = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g, ce = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g, Zs = /.[\\r\\n\"'(/\\\\]/, vt = /[\\da-f]/i;\nvar ei = function(e, t = {}) {\n  let r = e.css.valueOf(), i = t.ignoreErrors, n, l, a, o, f, u, h, d, g, E, R = r.length, c = 0, m = [], k = [];\n  function M() {\n    return c;\n  }\n  function p(A) {\n    throw e.error(\"Unclosed \" + A, c);\n  }\n  function b() {\n    return k.length === 0 && c >= R;\n  }\n  function O(A) {\n    if (k.length) return k.pop();\n    if (c >= R) return;\n    let N = A ? A.ignoreUnclosed : !1;\n    switch (n = r.charCodeAt(c), n) {\n      case oe:\n      case q:\n      case ae:\n      case ue:\n      case le: {\n        o = c;\n        do\n          o += 1, n = r.charCodeAt(o);\n        while (n === q || n === oe || n === ae || n === ue || n === le);\n        u = [\"space\", r.slice(c, o)], c = o - 1;\n        break;\n      }\n      case js:\n      case Gs:\n      case Js:\n      case Ys:\n      case Ks:\n      case qs:\n      case Hs: {\n        let _ = String.fromCharCode(n);\n        u = [_, _, c];\n        break;\n      }\n      case Vs: {\n        if (E = m.length ? m.pop()[1] : \"\", g = r.charCodeAt(c + 1), E === \"url\" && g !== _e && g !== St && g !== q && g !== oe && g !== ae && g !== le && g !== ue) {\n          o = c;\n          do {\n            if (h = !1, o = r.indexOf(\")\", o + 1), o === -1)\n              if (i || N) {\n                o = c;\n                break;\n              } else\n                p(\"bracket\");\n            for (d = o; r.charCodeAt(d - 1) === ne; )\n              d -= 1, h = !h;\n          } while (h);\n          u = [\"brackets\", r.slice(c, o + 1), c, o], c = o;\n        } else\n          o = r.indexOf(\")\", c + 1), l = r.slice(c, o + 1), o === -1 || Zs.test(l) ? u = [\"(\", \"(\", c] : (u = [\"brackets\", l, c, o], c = o);\n        break;\n      }\n      case _e:\n      case St: {\n        f = n === _e ? \"'\" : '\"', o = c;\n        do {\n          if (h = !1, o = r.indexOf(f, o + 1), o === -1)\n            if (i || N) {\n              o = c + 1;\n              break;\n            } else\n              p(\"string\");\n          for (d = o; r.charCodeAt(d - 1) === ne; )\n            d -= 1, h = !h;\n        } while (h);\n        u = [\"string\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      case Xs: {\n        fe.lastIndex = c + 1, fe.test(r), fe.lastIndex === 0 ? o = r.length - 1 : o = fe.lastIndex - 2, u = [\"at-word\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      case ne: {\n        for (o = c, a = !0; r.charCodeAt(o + 1) === ne; )\n          o += 1, a = !a;\n        if (n = r.charCodeAt(o + 1), a && n !== xt && n !== q && n !== oe && n !== ae && n !== ue && n !== le && (o += 1, vt.test(r.charAt(o)))) {\n          for (; vt.test(r.charAt(o + 1)); )\n            o += 1;\n          r.charCodeAt(o + 1) === q && (o += 1);\n        }\n        u = [\"word\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      default: {\n        n === xt && r.charCodeAt(c + 1) === Qs ? (o = r.indexOf(\"*/\", c + 2) + 1, o === 0 && (i || N ? o = r.length : p(\"comment\")), u = [\"comment\", r.slice(c, o + 1), c, o], c = o) : (ce.lastIndex = c + 1, ce.test(r), ce.lastIndex === 0 ? o = r.length - 1 : o = ce.lastIndex - 2, u = [\"word\", r.slice(c, o + 1), c, o], m.push(u), c = o);\n        break;\n      }\n    }\n    return c++, u;\n  }\n  function I(A) {\n    k.push(A);\n  }\n  return {\n    back: I,\n    endOfFile: b,\n    nextToken: O,\n    position: M\n  };\n};\nlet ti = rt, ri = Ee, si = Re, ii = se, Et = it, ni = ei;\nconst Rt = {\n  empty: !0,\n  space: !0\n};\nfunction oi(s) {\n  for (let e = s.length - 1; e >= 0; e--) {\n    let t = s[e], r = t[3] || t[2];\n    if (r) return r;\n  }\n}\nlet li = class {\n  constructor(e) {\n    this.input = e, this.root = new ii(), this.current = this.root, this.spaces = \"\", this.semicolon = !1, this.createTokenizer(), this.root.source = { input: e, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(e) {\n    let t = new ti();\n    t.name = e[1].slice(1), t.name === \"\" && this.unnamedAtrule(t, e), this.init(t, e[2]);\n    let r, i, n, l = !1, a = !1, o = [], f = [];\n    for (; !this.tokenizer.endOfFile(); ) {\n      if (e = this.tokenizer.nextToken(), r = e[0], r === \"(\" || r === \"[\" ? f.push(r === \"(\" ? \")\" : \"]\") : r === \"{\" && f.length > 0 ? f.push(\"}\") : r === f[f.length - 1] && f.pop(), f.length === 0)\n        if (r === \";\") {\n          t.source.end = this.getPosition(e[2]), t.source.end.offset++, this.semicolon = !0;\n          break;\n        } else if (r === \"{\") {\n          a = !0;\n          break;\n        } else if (r === \"}\") {\n          if (o.length > 0) {\n            for (n = o.length - 1, i = o[n]; i && i[0] === \"space\"; )\n              i = o[--n];\n            i && (t.source.end = this.getPosition(i[3] || i[2]), t.source.end.offset++);\n          }\n          this.end(e);\n          break;\n        } else\n          o.push(e);\n      else\n        o.push(e);\n      if (this.tokenizer.endOfFile()) {\n        l = !0;\n        break;\n      }\n    }\n    t.raws.between = this.spacesAndCommentsFromEnd(o), o.length ? (t.raws.afterName = this.spacesAndCommentsFromStart(o), this.raw(t, \"params\", o), l && (e = o[o.length - 1], t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++, this.spaces = t.raws.between, t.raws.between = \"\")) : (t.raws.afterName = \"\", t.params = \"\"), a && (t.nodes = [], this.current = t);\n  }\n  checkMissedSemicolon(e) {\n    let t = this.colon(e);\n    if (t === !1) return;\n    let r = 0, i;\n    for (let n = t - 1; n >= 0 && (i = e[n], !(i[0] !== \"space\" && (r += 1, r === 2))); n--)\n      ;\n    throw this.input.error(\n      \"Missed semicolon\",\n      i[0] === \"word\" ? i[3] + 1 : i[2]\n    );\n  }\n  colon(e) {\n    let t = 0, r, i, n;\n    for (let [l, a] of e.entries()) {\n      if (i = a, n = i[0], n === \"(\" && (t += 1), n === \")\" && (t -= 1), t === 0 && n === \":\")\n        if (!r)\n          this.doubleColon(i);\n        else {\n          if (r[0] === \"word\" && r[1] === \"progid\")\n            continue;\n          return l;\n        }\n      r = i;\n    }\n    return !1;\n  }\n  comment(e) {\n    let t = new ri();\n    this.init(t, e[2]), t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++;\n    let r = e[1].slice(2, -2);\n    if (/^\\s*$/.test(r))\n      t.text = \"\", t.raws.left = r, t.raws.right = \"\";\n    else {\n      let i = r.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      t.text = i[2], t.raws.left = i[1], t.raws.right = i[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = ni(this.input);\n  }\n  decl(e, t) {\n    let r = new si();\n    this.init(r, e[0][2]);\n    let i = e[e.length - 1];\n    for (i[0] === \";\" && (this.semicolon = !0, e.pop()), r.source.end = this.getPosition(\n      i[3] || i[2] || oi(e)\n    ), r.source.end.offset++; e[0][0] !== \"word\"; )\n      e.length === 1 && this.unknownWord(e), r.raws.before += e.shift()[1];\n    for (r.source.start = this.getPosition(e[0][2]), r.prop = \"\"; e.length; ) {\n      let f = e[0][0];\n      if (f === \":\" || f === \"space\" || f === \"comment\")\n        break;\n      r.prop += e.shift()[1];\n    }\n    r.raws.between = \"\";\n    let n;\n    for (; e.length; )\n      if (n = e.shift(), n[0] === \":\") {\n        r.raws.between += n[1];\n        break;\n      } else\n        n[0] === \"word\" && /\\w/.test(n[1]) && this.unknownWord([n]), r.raws.between += n[1];\n    (r.prop[0] === \"_\" || r.prop[0] === \"*\") && (r.raws.before += r.prop[0], r.prop = r.prop.slice(1));\n    let l = [], a;\n    for (; e.length && (a = e[0][0], !(a !== \"space\" && a !== \"comment\")); )\n      l.push(e.shift());\n    this.precheckMissedSemicolon(e);\n    for (let f = e.length - 1; f >= 0; f--) {\n      if (n = e[f], n[1].toLowerCase() === \"!important\") {\n        r.important = !0;\n        let u = this.stringFrom(e, f);\n        u = this.spacesFromEnd(e) + u, u !== \" !important\" && (r.raws.important = u);\n        break;\n      } else if (n[1].toLowerCase() === \"important\") {\n        let u = e.slice(0), h = \"\";\n        for (let d = f; d > 0; d--) {\n          let g = u[d][0];\n          if (h.trim().startsWith(\"!\") && g !== \"space\")\n            break;\n          h = u.pop()[1] + h;\n        }\n        h.trim().startsWith(\"!\") && (r.important = !0, r.raws.important = h, e = u);\n      }\n      if (n[0] !== \"space\" && n[0] !== \"comment\")\n        break;\n    }\n    e.some((f) => f[0] !== \"space\" && f[0] !== \"comment\") && (r.raws.between += l.map((f) => f[1]).join(\"\"), l = []), this.raw(r, \"value\", l.concat(e), t), r.value.includes(\":\") && !t && this.checkMissedSemicolon(e);\n  }\n  doubleColon(e) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: e[2] },\n      { offset: e[2] + e[1].length }\n    );\n  }\n  emptyRule(e) {\n    let t = new Et();\n    this.init(t, e[2]), t.selector = \"\", t.raws.between = \"\", this.current = t;\n  }\n  end(e) {\n    this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.semicolon = !1, this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.spaces = \"\", this.current.parent ? (this.current.source.end = this.getPosition(e[2]), this.current.source.end.offset++, this.current = this.current.parent) : this.unexpectedClose(e);\n  }\n  endFile() {\n    this.current.parent && this.unclosedBlock(), this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(e) {\n    if (this.spaces += e[1], this.current.nodes) {\n      let t = this.current.nodes[this.current.nodes.length - 1];\n      t && t.type === \"rule\" && !t.raws.ownSemicolon && (t.raws.ownSemicolon = this.spaces, this.spaces = \"\", t.source.end = this.getPosition(e[2]), t.source.end.offset += t.raws.ownSemicolon.length);\n    }\n  }\n  // Helpers\n  getPosition(e) {\n    let t = this.input.fromOffset(e);\n    return {\n      column: t.col,\n      line: t.line,\n      offset: e\n    };\n  }\n  init(e, t) {\n    this.current.push(e), e.source = {\n      input: this.input,\n      start: this.getPosition(t)\n    }, e.raws.before = this.spaces, this.spaces = \"\", e.type !== \"comment\" && (this.semicolon = !1);\n  }\n  other(e) {\n    let t = !1, r = null, i = !1, n = null, l = [], a = e[1].startsWith(\"--\"), o = [], f = e;\n    for (; f; ) {\n      if (r = f[0], o.push(f), r === \"(\" || r === \"[\")\n        n || (n = f), l.push(r === \"(\" ? \")\" : \"]\");\n      else if (a && i && r === \"{\")\n        n || (n = f), l.push(\"}\");\n      else if (l.length === 0)\n        if (r === \";\")\n          if (i) {\n            this.decl(o, a);\n            return;\n          } else\n            break;\n        else if (r === \"{\") {\n          this.rule(o);\n          return;\n        } else if (r === \"}\") {\n          this.tokenizer.back(o.pop()), t = !0;\n          break;\n        } else r === \":\" && (i = !0);\n      else r === l[l.length - 1] && (l.pop(), l.length === 0 && (n = null));\n      f = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile() && (t = !0), l.length > 0 && this.unclosedBracket(n), t && i) {\n      if (!a)\n        for (; o.length && (f = o[o.length - 1][0], !(f !== \"space\" && f !== \"comment\")); )\n          this.tokenizer.back(o.pop());\n      this.decl(o, a);\n    } else\n      this.unknownWord(o);\n  }\n  parse() {\n    let e;\n    for (; !this.tokenizer.endOfFile(); )\n      switch (e = this.tokenizer.nextToken(), e[0]) {\n        case \"space\":\n          this.spaces += e[1];\n          break;\n        case \";\":\n          this.freeSemicolon(e);\n          break;\n        case \"}\":\n          this.end(e);\n          break;\n        case \"comment\":\n          this.comment(e);\n          break;\n        case \"at-word\":\n          this.atrule(e);\n          break;\n        case \"{\":\n          this.emptyRule(e);\n          break;\n        default:\n          this.other(e);\n          break;\n      }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(e, t, r, i) {\n    let n, l, a = r.length, o = \"\", f = !0, u, h;\n    for (let d = 0; d < a; d += 1)\n      n = r[d], l = n[0], l === \"space\" && d === a - 1 && !i ? f = !1 : l === \"comment\" ? (h = r[d - 1] ? r[d - 1][0] : \"empty\", u = r[d + 1] ? r[d + 1][0] : \"empty\", !Rt[h] && !Rt[u] ? o.slice(-1) === \",\" ? f = !1 : o += n[1] : f = !1) : o += n[1];\n    if (!f) {\n      let d = r.reduce((g, E) => g + E[1], \"\");\n      e.raws[t] = { raw: d, value: o };\n    }\n    e[t] = o;\n  }\n  rule(e) {\n    e.pop();\n    let t = new Et();\n    this.init(t, e[0][2]), t.raws.between = this.spacesAndCommentsFromEnd(e), this.raw(t, \"selector\", e), this.current = t;\n  }\n  spacesAndCommentsFromEnd(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[e.length - 1][0], !(t !== \"space\" && t !== \"comment\")); )\n      r = e.pop()[1] + r;\n    return r;\n  }\n  // Errors\n  spacesAndCommentsFromStart(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[0][0], !(t !== \"space\" && t !== \"comment\")); )\n      r += e.shift()[1];\n    return r;\n  }\n  spacesFromEnd(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[e.length - 1][0], t === \"space\"); )\n      r = e.pop()[1] + r;\n    return r;\n  }\n  stringFrom(e, t) {\n    let r = \"\";\n    for (let i = t; i < e.length; i++)\n      r += e[i][1];\n    return e.splice(t, e.length - t), r;\n  }\n  unclosedBlock() {\n    let e = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", e.line, e.column);\n  }\n  unclosedBracket(e) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unexpectedClose(e) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unknownWord(e) {\n    throw this.input.error(\n      \"Unknown word \" + e[0][1],\n      { offset: e[0][2] },\n      { offset: e[0][2] + e[0][1].length }\n    );\n  }\n  unnamedAtrule(e, t) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: t[2] },\n      { offset: t[2] + t[1].length }\n    );\n  }\n};\nvar ai = li;\nlet ui = D, fi = Oe, ci = ai;\nfunction be(s, e) {\n  let t = new fi(s, e), r = new ci(t);\n  try {\n    r.parse();\n  } catch (i) {\n    throw process.env.NODE_ENV !== \"production\" && i.name === \"CssSyntaxError\" && e && e.from && (/\\.scss$/i.test(e.from) ? i.message += `\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser` : /\\.sass/i.test(e.from) ? i.message += `\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser` : /\\.less$/i.test(e.from) && (i.message += `\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser`)), i;\n  }\n  return r.root;\n}\nvar nt = be;\nbe.default = be;\nui.registerParse(be);\nlet Ve = class {\n  constructor(e, t = {}) {\n    if (this.type = \"warning\", this.text = e, t.node && t.node.source) {\n      let r = t.node.rangeBy(t);\n      this.line = r.start.line, this.column = r.start.column, this.endLine = r.end.line, this.endColumn = r.end.column;\n    }\n    for (let r in t) this[r] = t[r];\n  }\n  toString() {\n    return this.node ? this.node.error(this.text, {\n      index: this.index,\n      plugin: this.plugin,\n      word: this.word\n    }).message : this.plugin ? this.plugin + \": \" + this.text : this.text;\n  }\n};\nvar ar = Ve;\nVe.default = Ve;\nlet hi = ar, He = class {\n  get content() {\n    return this.css;\n  }\n  constructor(e, t, r) {\n    this.processor = e, this.messages = [], this.root = t, this.opts = r, this.css = void 0, this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(e, t = {}) {\n    t.plugin || this.lastPlugin && this.lastPlugin.postcssPlugin && (t.plugin = this.lastPlugin.postcssPlugin);\n    let r = new hi(e, t);\n    return this.messages.push(r), r;\n  }\n  warnings() {\n    return this.messages.filter((e) => e.type === \"warning\");\n  }\n};\nvar ot = He;\nHe.default = He;\nlet Ot = {};\nvar ur = function(e) {\n  Ot[e] || (Ot[e] = !0, typeof console < \"u\" && console.warn && console.warn(e));\n};\nlet pi = D, di = st, mi = lr, gi = nt, kt = ot, yi = se, wi = xe, { isClean: L, my: bi } = re, Ci = ur;\nconst Si = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n}, xi = {\n  AtRule: !0,\n  AtRuleExit: !0,\n  Comment: !0,\n  CommentExit: !0,\n  Declaration: !0,\n  DeclarationExit: !0,\n  Document: !0,\n  DocumentExit: !0,\n  Once: !0,\n  OnceExit: !0,\n  postcssPlugin: !0,\n  prepare: !0,\n  Root: !0,\n  RootExit: !0,\n  Rule: !0,\n  RuleExit: !0\n}, vi = {\n  Once: !0,\n  postcssPlugin: !0,\n  prepare: !0\n}, G = 0;\nfunction Q(s) {\n  return typeof s == \"object\" && typeof s.then == \"function\";\n}\nfunction fr(s) {\n  let e = !1, t = Si[s.type];\n  return s.type === \"decl\" ? e = s.prop.toLowerCase() : s.type === \"atrule\" && (e = s.name.toLowerCase()), e && s.append ? [\n    t,\n    t + \"-\" + e,\n    G,\n    t + \"Exit\",\n    t + \"Exit-\" + e\n  ] : e ? [t, t + \"-\" + e, t + \"Exit\", t + \"Exit-\" + e] : s.append ? [t, G, t + \"Exit\"] : [t, t + \"Exit\"];\n}\nfunction Nt(s) {\n  let e;\n  return s.type === \"document\" ? e = [\"Document\", G, \"DocumentExit\"] : s.type === \"root\" ? e = [\"Root\", G, \"RootExit\"] : e = fr(s), {\n    eventIndex: 0,\n    events: e,\n    iterator: 0,\n    node: s,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction Je(s) {\n  return s[L] = !1, s.nodes && s.nodes.forEach((e) => Je(e)), s;\n}\nlet Ye = {}, V = class cr {\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(e, t, r) {\n    this.stringified = !1, this.processed = !1;\n    let i;\n    if (typeof t == \"object\" && t !== null && (t.type === \"root\" || t.type === \"document\"))\n      i = Je(t);\n    else if (t instanceof cr || t instanceof kt)\n      i = Je(t.root), t.map && (typeof r.map > \"u\" && (r.map = {}), r.map.inline || (r.map.inline = !1), r.map.prev = t.map);\n    else {\n      let n = gi;\n      r.syntax && (n = r.syntax.parse), r.parser && (n = r.parser), n.parse && (n = n.parse);\n      try {\n        i = n(t, r);\n      } catch (l) {\n        this.processed = !0, this.error = l;\n      }\n      i && !i[bi] && pi.rebuild(i);\n    }\n    this.result = new kt(e, i, r), this.helpers = { ...Ye, postcss: Ye, result: this.result }, this.plugins = this.processor.plugins.map((n) => typeof n == \"object\" && n.prepare ? { ...n, ...n.prepare(this.result) } : n);\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : this.processed ? Promise.resolve(this.result) : (this.processing || (this.processing = this.runAsync()), this.processing);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(e, t) {\n    let r = this.result.lastPlugin;\n    try {\n      if (t && t.addToError(e), this.error = e, e.name === \"CssSyntaxError\" && !e.plugin)\n        e.plugin = r.postcssPlugin, e.setMessage();\n      else if (r.postcssVersion && process.env.NODE_ENV !== \"production\") {\n        let i = r.postcssPlugin, n = r.postcssVersion, l = this.result.processor.version, a = n.split(\".\"), o = l.split(\".\");\n        (a[0] !== o[0] || parseInt(a[1]) > parseInt(o[1])) && console.error(\n          \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + l + \", but \" + i + \" uses \" + n + \". Perhaps this is the source of the error below.\"\n        );\n      }\n    } catch (i) {\n      console && console.error && console.error(i);\n    }\n    return e;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let e = (t, r, i) => {\n      this.listeners[r] || (this.listeners[r] = []), this.listeners[r].push([t, i]);\n    };\n    for (let t of this.plugins)\n      if (typeof t == \"object\")\n        for (let r in t) {\n          if (!xi[r] && /^[A-Z]/.test(r))\n            throw new Error(\n              `Unknown event ${r} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          if (!vi[r])\n            if (typeof t[r] == \"object\")\n              for (let i in t[r])\n                i === \"*\" ? e(t, r, t[r][i]) : e(\n                  t,\n                  r + \"-\" + i.toLowerCase(),\n                  t[r][i]\n                );\n            else typeof t[r] == \"function\" && e(t, r, t[r]);\n        }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let e = 0; e < this.plugins.length; e++) {\n      let t = this.plugins[e], r = this.runOnRoot(t);\n      if (Q(r))\n        try {\n          await r;\n        } catch (i) {\n          throw this.handleError(i);\n        }\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let e = this.result.root;\n      for (; !e[L]; ) {\n        e[L] = !0;\n        let t = [Nt(e)];\n        for (; t.length > 0; ) {\n          let r = this.visitTick(t);\n          if (Q(r))\n            try {\n              await r;\n            } catch (i) {\n              let n = t[t.length - 1].node;\n              throw this.handleError(i, n);\n            }\n        }\n      }\n      if (this.listeners.OnceExit)\n        for (let [t, r] of this.listeners.OnceExit) {\n          this.result.lastPlugin = t;\n          try {\n            if (e.type === \"document\") {\n              let i = e.nodes.map(\n                (n) => r(n, this.helpers)\n              );\n              await Promise.all(i);\n            } else\n              await r(e, this.helpers);\n          } catch (i) {\n            throw this.handleError(i);\n          }\n        }\n    }\n    return this.processed = !0, this.stringify();\n  }\n  runOnRoot(e) {\n    this.result.lastPlugin = e;\n    try {\n      if (typeof e == \"object\" && e.Once) {\n        if (this.result.root.type === \"document\") {\n          let t = this.result.root.nodes.map(\n            (r) => e.Once(r, this.helpers)\n          );\n          return Q(t[0]) ? Promise.all(t) : t;\n        }\n        return e.Once(this.result.root, this.helpers);\n      } else if (typeof e == \"function\")\n        return e(this.result.root, this.result);\n    } catch (t) {\n      throw this.handleError(t);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = !0, this.sync();\n    let e = this.result.opts, t = wi;\n    e.syntax && (t = e.syntax.stringify), e.stringifier && (t = e.stringifier), t.stringify && (t = t.stringify);\n    let i = new mi(t, this.result.root, this.result.opts).generate();\n    return this.result.css = i[0], this.result.map = i[1], this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    if (this.processed = !0, this.processing)\n      throw this.getAsyncError();\n    for (let e of this.plugins) {\n      let t = this.runOnRoot(e);\n      if (Q(t))\n        throw this.getAsyncError();\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let e = this.result.root;\n      for (; !e[L]; )\n        e[L] = !0, this.walkSync(e);\n      if (this.listeners.OnceExit)\n        if (e.type === \"document\")\n          for (let t of e.nodes)\n            this.visitSync(this.listeners.OnceExit, t);\n        else\n          this.visitSync(this.listeners.OnceExit, e);\n    }\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this.opts || Ci(\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    )), this.async().then(e, t);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(e, t) {\n    for (let [r, i] of e) {\n      this.result.lastPlugin = r;\n      let n;\n      try {\n        n = i(t, this.helpers);\n      } catch (l) {\n        throw this.handleError(l, t.proxyOf);\n      }\n      if (t.type !== \"root\" && t.type !== \"document\" && !t.parent)\n        return !0;\n      if (Q(n))\n        throw this.getAsyncError();\n    }\n  }\n  visitTick(e) {\n    let t = e[e.length - 1], { node: r, visitors: i } = t;\n    if (r.type !== \"root\" && r.type !== \"document\" && !r.parent) {\n      e.pop();\n      return;\n    }\n    if (i.length > 0 && t.visitorIndex < i.length) {\n      let [l, a] = i[t.visitorIndex];\n      t.visitorIndex += 1, t.visitorIndex === i.length && (t.visitors = [], t.visitorIndex = 0), this.result.lastPlugin = l;\n      try {\n        return a(r.toProxy(), this.helpers);\n      } catch (o) {\n        throw this.handleError(o, r);\n      }\n    }\n    if (t.iterator !== 0) {\n      let l = t.iterator, a;\n      for (; a = r.nodes[r.indexes[l]]; )\n        if (r.indexes[l] += 1, !a[L]) {\n          a[L] = !0, e.push(Nt(a));\n          return;\n        }\n      t.iterator = 0, delete r.indexes[l];\n    }\n    let n = t.events;\n    for (; t.eventIndex < n.length; ) {\n      let l = n[t.eventIndex];\n      if (t.eventIndex += 1, l === G) {\n        r.nodes && r.nodes.length && (r[L] = !0, t.iterator = r.getIterator());\n        return;\n      } else if (this.listeners[l]) {\n        t.visitors = this.listeners[l];\n        return;\n      }\n    }\n    e.pop();\n  }\n  walkSync(e) {\n    e[L] = !0;\n    let t = fr(e);\n    for (let r of t)\n      if (r === G)\n        e.nodes && e.each((i) => {\n          i[L] || this.walkSync(i);\n        });\n      else {\n        let i = this.listeners[r];\n        if (i && this.visitSync(i, e.toProxy()))\n          return;\n      }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n};\nV.registerPostcss = (s) => {\n  Ye = s;\n};\nvar hr = V;\nV.default = V;\nyi.registerLazyResult(V);\ndi.registerLazyResult(V);\nlet Ei = lr, Ri = nt;\nconst Oi = ot;\nlet ki = xe, Ni = ur, qe = class {\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    let e, t = Ri;\n    try {\n      e = t(this._css, this._opts);\n    } catch (r) {\n      this.error = r;\n    }\n    if (this.error)\n      throw this.error;\n    return this._root = e, e;\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n  constructor(e, t, r) {\n    t = t.toString(), this.stringified = !1, this._processor = e, this._css = t, this._opts = r, this._map = void 0;\n    let i, n = ki;\n    this.result = new Oi(this._processor, i, this._opts), this.result.css = t;\n    let l = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return l.root;\n      }\n    });\n    let a = new Ei(n, i, this._opts, t);\n    if (a.isMap()) {\n      let [o, f] = a.generate();\n      o && (this.result.css = o), f && (this.result.map = f);\n    } else\n      a.clearAnnotation(), this.result.css = a.css;\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : Promise.resolve(this.result);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this._opts || Ni(\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    )), this.async().then(e, t);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n};\nvar Ai = qe;\nqe.default = qe;\nlet Mi = st, Pi = hr, Ii = Ai, _i = se, te = class {\n  constructor(e = []) {\n    this.version = \"8.5.3\", this.plugins = this.normalize(e);\n  }\n  normalize(e) {\n    let t = [];\n    for (let r of e)\n      if (r.postcss === !0 ? r = r() : r.postcss && (r = r.postcss), typeof r == \"object\" && Array.isArray(r.plugins))\n        t = t.concat(r.plugins);\n      else if (typeof r == \"object\" && r.postcssPlugin)\n        t.push(r);\n      else if (typeof r == \"function\")\n        t.push(r);\n      else if (typeof r == \"object\" && (r.parse || r.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      } else\n        throw new Error(r + \" is not a PostCSS plugin\");\n    return t;\n  }\n  process(e, t = {}) {\n    return !this.plugins.length && !t.parser && !t.stringifier && !t.syntax ? new Ii(this, e, t) : new Pi(this, e, t);\n  }\n  use(e) {\n    return this.plugins = this.plugins.concat(this.normalize([e])), this;\n  }\n};\nvar $i = te;\nte.default = te;\n_i.registerProcessor(te);\nMi.registerProcessor(te);\nlet pr = rt, dr = Ee, Li = D, Ti = Ze, mr = Re, gr = st, Di = Us, Ui = Oe, Bi = hr, Fi = tr, zi = ve, Wi = nt, lt = $i, ji = ot, yr = se, wr = it, Gi = xe, Vi = ar;\nfunction C(...s) {\n  return s.length === 1 && Array.isArray(s[0]) && (s = s[0]), new lt(s);\n}\nC.plugin = function(e, t) {\n  let r = !1;\n  function i(...l) {\n    console && console.warn && !r && (r = !0, console.warn(\n      e + `: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`\n    ), process.env.LANG && process.env.LANG.startsWith(\"cn\") && console.warn(\n      e + `: 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226`\n    ));\n    let a = t(...l);\n    return a.postcssPlugin = e, a.postcssVersion = new lt().version, a;\n  }\n  let n;\n  return Object.defineProperty(i, \"postcss\", {\n    get() {\n      return n || (n = i()), n;\n    }\n  }), i.process = function(l, a, o) {\n    return C([i(o)]).process(l, a);\n  }, i;\n};\nC.stringify = Gi;\nC.parse = Wi;\nC.fromJSON = Di;\nC.list = Fi;\nC.comment = (s) => new dr(s);\nC.atRule = (s) => new pr(s);\nC.decl = (s) => new mr(s);\nC.rule = (s) => new wr(s);\nC.root = (s) => new yr(s);\nC.document = (s) => new gr(s);\nC.CssSyntaxError = Ti;\nC.Declaration = mr;\nC.Container = Li;\nC.Processor = lt;\nC.Document = gr;\nC.Comment = dr;\nC.Warning = Vi;\nC.AtRule = pr;\nC.Result = ji;\nC.Input = Ui;\nC.Rule = wr;\nC.Root = yr;\nC.Node = zi;\nBi.registerPostcss(C);\nvar Hi = C;\nC.default = C;\nconst v = /* @__PURE__ */ ss(Hi);\nv.stringify;\nv.fromJSON;\nv.plugin;\nv.parse;\nv.list;\nv.document;\nv.comment;\nv.atRule;\nv.rule;\nv.decl;\nv.root;\nv.CssSyntaxError;\nv.Declaration;\nv.Container;\nv.Processor;\nv.Document;\nv.Comment;\nv.Warning;\nv.AtRule;\nv.Result;\nv.Input;\nv.Rule;\nv.Root;\nv.Node;\nconst Ji = /(max|min)-device-(width|height)/, At = new RegExp(Ji.source, \"g\"), Yi = {\n  postcssPlugin: \"postcss-custom-selectors\",\n  prepare() {\n    return {\n      postcssPlugin: \"postcss-custom-selectors\",\n      AtRule: function(s) {\n        s.params.match(At) && (s.params = s.params.replace(At, \"$1-$2\"));\n      }\n    };\n  }\n}, qi = {\n  postcssPlugin: \"postcss-hover-classes\",\n  prepare: function() {\n    const s = [];\n    return {\n      Rule: function(e) {\n        s.indexOf(e) === -1 && (s.push(e), e.selectors.forEach(function(t) {\n          if (!t.includes(\":\"))\n            return;\n          const r = t.replace(/\\n/g, \" \").split(\" \"), i = [];\n          r.forEach(function(l) {\n            const a = l.match(/::?([^:]+)/g);\n            if (!a) {\n              i.push(l);\n              return;\n            }\n            const o = l.substr(\n              0,\n              l.length - a.join(\"\").length\n            ), f = a.map(function(u) {\n              return u.replace(/\\(.*/g, \"\") !== \":hover\" || u.match(/^::/) ? u : (u = u.substr(1), u = u.replace(/\\(/g, \"\\\\(\"), u = u.replace(/\\)/g, \"\\\\)\"), \".\\\\:\" + u);\n            });\n            i.push(o + f.join(\"\"));\n          }), n(i.join(\" \"));\n          function n(l) {\n            l && l !== t && (e.selector += `,\n` + l);\n          }\n        }));\n      }\n    };\n  }\n}, Mt = {\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 Qi(s) {\n  let e = Mt[s.tagName] ? Mt[s.tagName] : s.tagName;\n  return e === \"link\" && s.attributes._cssText && (e = \"style\"), e;\n}\nfunction Pt(s, e) {\n  const t = e == null ? void 0 : e.stylesWithHoverClass.get(s);\n  if (t) return t;\n  const i = v([\n    Yi,\n    qi\n  ]).process(s).css;\n  return e == null || e.stylesWithHoverClass.set(s, i), i;\n}\nfunction xn() {\n  return {\n    stylesWithHoverClass: /* @__PURE__ */ new Map()\n  };\n}\nfunction Ki(s, e) {\n  var n;\n  const { doc: t, hackCss: r, cache: i } = e;\n  switch (s.type) {\n    case w.Document:\n      return t.implementation.createDocument(null, \"\", null);\n    case w.DocumentType:\n      return t.implementation.createDocumentType(\n        s.name || \"html\",\n        s.publicId,\n        s.systemId\n      );\n    case w.Element: {\n      const l = Qi(s);\n      let a;\n      s.isSVG ? a = t.createElementNS(\"http://www.w3.org/2000/svg\", l) : (\n        // If the tag name is a custom element name\n        (s.isCustom && // If the browser supports custom elements\n        ((n = t.defaultView) != null && n.customElements) && // If the custom element hasn't been defined yet\n        !t.defaultView.customElements.get(s.tagName) && t.defaultView.customElements.define(\n          s.tagName,\n          class extends t.defaultView.HTMLElement {\n          }\n        ), a = t.createElement(l))\n      );\n      const o = {};\n      for (const f in s.attributes) {\n        if (!Object.prototype.hasOwnProperty.call(s.attributes, f))\n          continue;\n        let u = s.attributes[f];\n        if (l === \"option\" && f === \"selected\" && u === !1 || u === null)\n          continue;\n        if (u === !0 && (u = \"\"), f.startsWith(\"rr_\")) {\n          o[f] = u;\n          continue;\n        }\n        const h = l === \"textarea\" && f === \"value\", d = l === \"style\" && f === \"_cssText\";\n        if (d && r && typeof u == \"string\" && (u = Pt(u, i)), (h || d) && typeof u == \"string\") {\n          a.appendChild(t.createTextNode(u)), s.childNodes = [];\n          continue;\n        }\n        try {\n          if (s.isSVG && f === \"xlink:href\")\n            a.setAttributeNS(\n              \"http://www.w3.org/1999/xlink\",\n              f,\n              u.toString()\n            );\n          else if (f === \"onload\" || f === \"onclick\" || f.substring(0, 7) === \"onmouse\")\n            a.setAttribute(\"_\" + f, u.toString());\n          else if (l === \"meta\" && s.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && f === \"content\") {\n            a.setAttribute(\"csp-content\", u.toString());\n            continue;\n          } else l === \"link\" && (s.attributes.rel === \"preload\" || s.attributes.rel === \"modulepreload\") && s.attributes.as === \"script\" || l === \"link\" && s.attributes.rel === \"prefetch\" && typeof s.attributes.href == \"string\" && s.attributes.href.endsWith(\".js\") || (l === \"img\" && s.attributes.srcset && s.attributes.rr_dataURL ? a.setAttribute(\"original-srcset\", s.attributes.srcset) : a.setAttribute(f, u.toString()));\n        } catch {\n        }\n      }\n      for (const f in o) {\n        const u = o[f];\n        if (l === \"canvas\" && f === \"rr_dataURL\") {\n          const h = t.createElement(\"img\");\n          h.onload = () => {\n            const d = a.getContext(\"2d\");\n            d && d.drawImage(h, 0, 0, h.width, h.height);\n          }, h.src = u.toString(), a.RRNodeType && (a.rr_dataURL = u.toString());\n        } else if (l === \"img\" && f === \"rr_dataURL\") {\n          const h = a;\n          h.currentSrc.startsWith(\"data:\") || (h.setAttribute(\"original-src\", s.attributes.src), h.src = u.toString());\n        }\n        if (f === \"rr_width\")\n          a.style.width = u.toString();\n        else if (f === \"rr_height\")\n          a.style.height = u.toString();\n        else if (f === \"rr_mediaCurrentTime\" && typeof u == \"number\")\n          a.currentTime = u;\n        else if (f === \"rr_mediaState\")\n          switch (u) {\n            case \"played\":\n              a.play().catch((h) => console.warn(\"media playback error\", h));\n              break;\n            case \"paused\":\n              a.pause();\n              break;\n          }\n        else f === \"rr_mediaPlaybackRate\" && typeof u == \"number\" ? a.playbackRate = u : f === \"rr_mediaMuted\" && typeof u == \"boolean\" ? a.muted = u : f === \"rr_mediaLoop\" && typeof u == \"boolean\" ? a.loop = u : f === \"rr_mediaVolume\" && typeof u == \"number\" && (a.volume = u);\n      }\n      if (s.isShadowHost)\n        if (!a.shadowRoot)\n          a.attachShadow({ mode: \"open\" });\n        else\n          for (; a.shadowRoot.firstChild; )\n            a.shadowRoot.removeChild(a.shadowRoot.firstChild);\n      return a;\n    }\n    case w.Text:\n      return t.createTextNode(\n        s.isStyle && r ? Pt(s.textContent, i) : s.textContent\n      );\n    case w.CDATA:\n      return t.createCDATASection(s.textContent);\n    case w.Comment:\n      return t.createComment(s.textContent);\n    default:\n      return null;\n  }\n}\nfunction br(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    skipChild: i = !1,\n    hackCss: n = !0,\n    afterAppend: l,\n    cache: a\n  } = e;\n  if (r.has(s.id)) {\n    const f = r.getNode(s.id), u = r.getMeta(f);\n    if (Ir(u, s)) return r.getNode(s.id);\n  }\n  let o = Ki(s, { doc: t, hackCss: n, cache: a });\n  if (!o)\n    return null;\n  if (s.rootId && r.getNode(s.rootId) !== t && r.replace(s.rootId, t), s.type === w.Document && (t.close(), t.open(), s.compatMode === \"BackCompat\" && s.childNodes && s.childNodes[0].type !== w.DocumentType && (s.childNodes[0].type === w.Element && \"xmlns\" in s.childNodes[0].attributes && s.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\" ? t.write(\n    '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">'\n  ) : t.write(\n    '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">'\n  )), o = t), r.add(o, s), (s.type === w.Document || s.type === w.Element) && !i)\n    for (const f of s.childNodes) {\n      const u = br(f, {\n        doc: t,\n        mirror: r,\n        skipChild: !1,\n        hackCss: n,\n        afterAppend: l,\n        cache: a\n      });\n      if (!u) {\n        console.warn(\"Failed to rebuild\", f);\n        continue;\n      }\n      if (f.isShadow && Qe(o) && o.shadowRoot)\n        o.shadowRoot.appendChild(u);\n      else if (s.type === w.Document && f.type == w.Element) {\n        const h = u;\n        let d = null;\n        h.childNodes.forEach((g) => {\n          g.nodeName === \"BODY\" && (d = g);\n        }), d ? (h.removeChild(d), o.appendChild(u), h.appendChild(d)) : o.appendChild(u);\n      } else\n        o.appendChild(u);\n      l && l(u, f.id);\n    }\n  return o;\n}\nfunction Xi(s, e) {\n  function t(r) {\n    e(r);\n  }\n  for (const r of s.getIds())\n    s.has(r) && t(s.getNode(r));\n}\nfunction Zi(s, e) {\n  const t = e.getMeta(s);\n  if ((t == null ? void 0 : t.type) !== w.Element)\n    return;\n  const r = s;\n  for (const i in t.attributes) {\n    if (!(Object.prototype.hasOwnProperty.call(t.attributes, i) && i.startsWith(\"rr_\")))\n      continue;\n    const n = t.attributes[i];\n    i === \"rr_scrollLeft\" && (r.scrollLeft = n), i === \"rr_scrollTop\" && (r.scrollTop = n);\n  }\n}\nfunction vn(s, e) {\n  const {\n    doc: t,\n    onVisit: r,\n    hackCss: i = !0,\n    afterAppend: n,\n    cache: l,\n    mirror: a = new Ke()\n  } = e, o = br(s, {\n    doc: t,\n    mirror: a,\n    skipChild: !1,\n    hackCss: i,\n    afterAppend: n,\n    cache: l\n  });\n  return Xi(a, (f) => {\n    r && r(f), Zi(f, a);\n  }), o;\n}\nexport {\n  ut as IGNORED_NODE,\n  Ke as Mirror,\n  w as NodeType,\n  Pt as adaptCssForReplay,\n  br as buildNodeWithSN,\n  $e as classMatchesRegex,\n  nn as cleanupSnapshot,\n  xn as createCache,\n  tn as createMirror,\n  Er as escapeImportStatement,\n  $t as extractFileExtension,\n  Nr as fixSafariColons,\n  Lr as genId,\n  _r as getInputType,\n  Jr as ignoreAttribute,\n  Pr as is2DCanvasBlank,\n  Ar as isCSSImportRule,\n  _t as isCSSStyleRule,\n  Qe as isElement,\n  Ae as isNativeShadowDom,\n  Ir as isNodeMetaEqual,\n  xr as isShadowRoot,\n  Mr as maskInputValue,\n  qr as needMaskingText,\n  vn as rebuild,\n  K as serializeNodeWithId,\n  rn as snapshot,\n  kr as stringifyRule,\n  de as stringifyStylesheet,\n  Ce as toLowerCase,\n  Hr as transformAttribute,\n  sn as visitSnapshot\n};\n//# sourceMappingURL=rrweb-snapshot.js.map\n", "var d = /* @__PURE__ */ ((h) => (h[h.DomContentLoaded = 0] = \"DomContentLoaded\", h[h.Load = 1] = \"Load\", h[h.FullSnapshot = 2] = \"FullSnapshot\", h[h.IncrementalSnapshot = 3] = \"IncrementalSnapshot\", h[h.Meta = 4] = \"Meta\", h[h.Custom = 5] = \"Custom\", h[h.Plugin = 6] = \"Plugin\", h[h.Device = 24] = \"Device\", h[h.SailfishCustom = 25] = \"SailfishCustom\", h))(d || {}), u = /* @__PURE__ */ ((h) => (h[h.Mutation = 0] = \"Mutation\", h[h.MouseMove = 1] = \"MouseMove\", h[h.MouseInteraction = 2] = \"MouseInteraction\", h[h.Scroll = 3] = \"Scroll\", h[h.ViewportResize = 4] = \"ViewportResize\", h[h.Input = 5] = \"Input\", h[h.TouchMove = 6] = \"TouchMove\", h[h.MediaInteraction = 7] = \"MediaInteraction\", h[h.StyleSheetRule = 8] = \"StyleSheetRule\", h[h.CanvasMutation = 9] = \"CanvasMutation\", h[h.Font = 10] = \"Font\", h[h.Log = 11] = \"Log\", h[h.Drag = 12] = \"Drag\", h[h.StyleDeclaration = 13] = \"StyleDeclaration\", h[h.Selection = 14] = \"Selection\", h[h.AdoptedStyleSheet = 15] = \"AdoptedStyleSheet\", h[h.CustomElement = 16] = \"CustomElement\", h[h.Typing = 17] = \"Typing\", h))(u || {}), C = /* @__PURE__ */ ((h) => (h.Append = \"append\", h.Insert = \"insert\", h.Delete = \"delete\", h.Replace = \"replace\", h))(C || {}), D = /* @__PURE__ */ ((h) => (h[h.MouseUp = 0] = \"MouseUp\", h[h.MouseDown = 1] = \"MouseDown\", h[h.Click = 2] = \"Click\", h[h.ContextMenu = 3] = \"ContextMenu\", h[h.DblClick = 4] = \"DblClick\", h[h.Focus = 5] = \"Focus\", h[h.Blur = 6] = \"Blur\", h[h.TouchStart = 7] = \"TouchStart\", h[h.TouchMove_Departed = 8] = \"TouchMove_Departed\", h[h.TouchEnd = 9] = \"TouchEnd\", h[h.TouchCancel = 10] = \"TouchCancel\", h))(D || {}), g = /* @__PURE__ */ ((h) => (h[h.Mouse = 0] = \"Mouse\", h[h.Pen = 1] = \"Pen\", h[h.Touch = 2] = \"Touch\", h))(g || {}), k = /* @__PURE__ */ ((h) => (h[h[\"2D\"] = 0] = \"2D\", h[h.WebGL = 1] = \"WebGL\", h[h.WebGL2 = 2] = \"WebGL2\", h))(k || {}), L = /* @__PURE__ */ ((h) => (h[h.Play = 0] = \"Play\", h[h.Pause = 1] = \"Pause\", h[h.Seeked = 2] = \"Seeked\", h[h.VolumeChange = 3] = \"VolumeChange\", h[h.RateChange = 4] = \"RateChange\", h))(L || {}), b = /* @__PURE__ */ ((h) => (h.Start = \"start\", h.Pause = \"pause\", h.Resume = \"resume\", h.Resize = \"resize\", h.Finish = \"finish\", h.FullsnapshotRebuilded = \"fullsnapshot-rebuilded\", h.LoadStylesheetStart = \"load-stylesheet-start\", h.LoadStylesheetEnd = \"load-stylesheet-end\", h.SkipStart = \"skip-start\", h.SkipEnd = \"skip-end\", h.MouseInteraction = \"mouse-interaction\", h.EventCast = \"event-cast\", h.CustomEvent = \"custom-event\", h.Flush = \"flush\", h.StateChange = \"state-change\", h.PlayBack = \"play-back\", h.Destroy = \"destroy\", h))(b || {});\nexport {\n  k as CanvasContext,\n  d as EventType,\n  u as IncrementalSource,\n  L as MediaInteractions,\n  D as MouseInteractions,\n  g as PointerTypes,\n  b as ReplayerEvents,\n  C as TextDeltaOp\n};\n//# sourceMappingURL=types.js.map\n", "import type { RRIFrameElement, RRNode } from '@sailfish-rrweb/rrdom';\nimport type {\n  IMirror,\n  Mirror,\n  SlimDOMOptions,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport {\n  IGNORED_NODE,\n  classMatchesRegex,\n  isShadowRoot,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  DeprecatedMirror,\n  DocumentDimension,\n  IWindow,\n  addedNodeMutation,\n  blockClass,\n  hookResetter,\n  listenerHandler,\n  textMutation,\n  throttleOptions,\n} from '@sailfish-rrweb/types';\n\nexport function on(\n  type: string,\n  fn: EventListenerOrEventListenerObject,\n  target: Document | IWindow = document,\n): listenerHandler {\n  const options = { capture: true, passive: true };\n  target.addEventListener(type, fn, options);\n  return () => target.removeEventListener(type, fn, options);\n}\n\n// https://github.com/rrweb-io/rrweb/pull/407\nconst DEPARTED_MIRROR_ACCESS_WARNING =\n  'Please stop import mirror directly. Instead of that,' +\n  '\\r\\n' +\n  'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n  '\\r\\n' +\n  'or you can use record.mirror to access the mirror instance during recording.';\n/** @deprecated */\nexport let _mirror: DeprecatedMirror = {\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      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return Reflect.get(target, prop, receiver);\n    },\n  });\n}\n\n// copy from underscore and modified\nexport function throttle<T>(\n  func: (arg: T) => void,\n  wait: number,\n  options: throttleOptions = {},\n) {\n  let timeout: ReturnType<typeof setTimeout> | null = null;\n  let previous = 0;\n  return function (...args: T[]) {\n    const now = Date.now();\n    if (!previous && options.leading === false) {\n      previous = now;\n    }\n    const remaining = wait - (now - previous);\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-this-alias\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}\n\nexport function hookSetter<T>(\n  target: T,\n  key: string | number | symbol,\n  d: PropertyDescriptor,\n  isRevoked?: boolean,\n  win = window,\n): hookResetter {\n  const original = win.Object.getOwnPropertyDescriptor(target, key);\n  win.Object.defineProperty(\n    target,\n    key,\n    isRevoked\n      ? d\n      : {\n          set(value) {\n            // put hooked setter into event loop to avoid of set latency\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}\n\n// copy from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nexport function patch(\n  source: { [key: string]: any },\n  name: string,\n  replacement: (...args: unknown[]) => unknown,\n): () => void {\n  try {\n    if (!(name in source)) {\n      return () => {\n        //\n      };\n    }\n\n    const original = source[name] as () => unknown;\n    const wrapped = replacement(original);\n\n    // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n    // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n    if (typeof wrapped === 'function') {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n      wrapped.prototype = wrapped.prototype || {};\n      Object.defineProperties(wrapped, {\n        __rrweb_original__: {\n          enumerable: false,\n          value: original,\n        },\n      });\n    }\n\n    source[name] = wrapped;\n\n    return () => {\n      source[name] = original;\n    };\n  } catch {\n    return () => {\n      //\n    };\n    // This can throw if multiple fill happens on a global object like XMLHttpRequest\n    // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n  }\n}\n\n// guard against old third party libraries which redefine Date.now\nlet nowTimestamp = Date.now;\n\nif (!(/*@__PURE__*/ /[1-9][0-9]{12}/.test(Date.now().toString()))) {\n  // they have already redefined it! use a fallback\n  nowTimestamp = () => new Date().getTime();\n}\nexport { nowTimestamp };\n\nexport function getWindowScroll(win: Window) {\n  const doc = win.document;\n  return {\n    left: doc.scrollingElement\n      ? doc.scrollingElement.scrollLeft\n      : win.pageXOffset !== undefined\n      ? win.pageXOffset\n      : doc?.documentElement.scrollLeft ||\n        doc?.body?.parentElement?.scrollLeft ||\n        doc?.body?.scrollLeft ||\n        0,\n    top: doc.scrollingElement\n      ? doc.scrollingElement.scrollTop\n      : win.pageYOffset !== undefined\n      ? win.pageYOffset\n      : doc?.documentElement.scrollTop ||\n        doc?.body?.parentElement?.scrollTop ||\n        doc?.body?.scrollTop ||\n        0,\n  };\n}\n\nexport function getWindowHeight(): number {\n  return (\n    window.innerHeight ||\n    (document.documentElement && document.documentElement.clientHeight) ||\n    (document.body && document.body.clientHeight)\n  );\n}\n\nexport function getWindowWidth(): number {\n  return (\n    window.innerWidth ||\n    (document.documentElement && document.documentElement.clientWidth) ||\n    (document.body && document.body.clientWidth)\n  );\n}\n\n/**\n * Returns the given node as an HTMLElement if it is one, otherwise the parent node as an HTMLElement\n * @param node - node to check\n * @returns HTMLElement or null\n */\n\nexport function closestElementOfNode(node: Node | null): HTMLElement | null {\n  if (!node) {\n    return null;\n  }\n  const el: HTMLElement | null =\n    node.nodeType === node.ELEMENT_NODE\n      ? (node as HTMLElement)\n      : node.parentElement;\n  return el;\n}\n\n/**\n * Checks if the given element set to be blocked by rrweb\n * @param node - node to check\n * @param blockClass - class name to check\n * @param blockSelector - css selectors to check\n * @param checkAncestors - whether to search through parent nodes for the block class\n * @returns true/false if the node was blocked or not\n */\nexport function isBlocked(\n  node: Node | null,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  checkAncestors: boolean,\n): boolean {\n  if (!node) {\n    return false;\n  }\n  const el = closestElementOfNode(node);\n\n  if (!el) {\n    return false;\n  }\n\n  try {\n    if (typeof blockClass === 'string') {\n      if (el.classList.contains(blockClass)) return true;\n      if (checkAncestors && el.closest('.' + blockClass) !== null) return true;\n    } else {\n      if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n    }\n  } catch (e) {\n    // e\n  }\n  if (blockSelector) {\n    if (el.matches(blockSelector)) return true;\n    if (checkAncestors && el.closest(blockSelector) !== null) return true;\n  }\n  return false;\n}\n\nexport function isSerialized(n: Node, mirror: Mirror): boolean {\n  return mirror.getId(n) !== -1;\n}\n\nexport function isIgnored(\n  n: Node,\n  mirror: Mirror,\n  slimDOMOptions: SlimDOMOptions,\n): boolean {\n  if ((n as Element).tagName === 'TITLE' && slimDOMOptions.headTitleMutations) {\n    // we do this check here but not in rrweb-snapshot\n    // to block mutations/animations on the title.\n    // the headTitleMutations option isn't intended to block recording of the initial value\n    return true;\n  }\n  // The main part of the slimDOM check happens in\n  // rrweb-snapshot::serializeNodeWithId\n  return mirror.getId(n) === IGNORED_NODE;\n}\n\nexport function isAncestorRemoved(target: Node, mirror: Mirror): boolean {\n  if (isShadowRoot(target)) {\n    return false;\n  }\n  const id = mirror.getId(target);\n  if (!mirror.has(id)) {\n    return true;\n  }\n  if (\n    target.parentNode &&\n    target.parentNode.nodeType === target.DOCUMENT_NODE\n  ) {\n    return false;\n  }\n  // if the root is not document, it means the node is not in the DOM tree anymore\n  if (!target.parentNode) {\n    return true;\n  }\n  return isAncestorRemoved(target.parentNode, mirror);\n}\n\nexport function legacy_isTouchEvent(\n  event: MouseEvent | TouchEvent | PointerEvent,\n): event is TouchEvent {\n  return Boolean((event as TouchEvent).changedTouches);\n}\n\nexport function polyfill(win = window) {\n  if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    win.NodeList.prototype.forEach = Array.prototype\n      .forEach as unknown as NodeList['forEach'];\n  }\n\n  if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    win.DOMTokenList.prototype.forEach = Array.prototype\n      .forEach as unknown as DOMTokenList['forEach'];\n  }\n\n  // https://github.com/Financial-Times/polyfill-service/pull/183\n  if (!Node.prototype.contains) {\n    Node.prototype.contains = (...args: unknown[]) => {\n      let node = args[0] as Node | null;\n      if (!(0 in args)) {\n        throw new TypeError('1 argument is required');\n      }\n\n      do {\n        if (this === node) {\n          return true;\n        }\n      } while ((node = node && node.parentNode));\n\n      return false;\n    };\n  }\n}\n\ntype ResolveTree = {\n  value: addedNodeMutation;\n  children: ResolveTree[];\n  parent: ResolveTree | null;\n};\n\nexport function queueToResolveTrees(queue: addedNodeMutation[]): ResolveTree[] {\n  const queueNodeMap: Record<number, ResolveTree> = {};\n  const putIntoMap = (\n    m: addedNodeMutation,\n    parent: ResolveTree | null,\n  ): ResolveTree => {\n    const nodeInTree: ResolveTree = {\n      value: m,\n      parent,\n      children: [],\n    };\n    queueNodeMap[m.node.id] = nodeInTree;\n    return nodeInTree;\n  };\n\n  const queueNodeTrees: ResolveTree[] = [];\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\n  return queueNodeTrees;\n}\n\nexport function iterateResolveTree(\n  tree: ResolveTree,\n  cb: (mutation: addedNodeMutation) => unknown,\n) {\n  cb(tree.value);\n  /**\n   * The resolve tree was designed to reflect the DOM layout,\n   * but we need append next sibling first, so we do a reverse\n   * loop here.\n   */\n  for (let i = tree.children.length - 1; i >= 0; i--) {\n    iterateResolveTree(tree.children[i], cb);\n  }\n}\n\nexport type AppendedIframe = {\n  mutationInQueue: addedNodeMutation;\n  builtNode: HTMLIFrameElement | RRIFrameElement;\n};\n\nexport function isSerializedIframe<TNode extends Node | RRNode>(\n  n: TNode,\n  mirror: IMirror<TNode>,\n): boolean {\n  return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\n}\n\nexport function isSerializedStylesheet<TNode extends Node | RRNode>(\n  n: TNode,\n  mirror: IMirror<TNode>,\n): boolean {\n  return Boolean(\n    n.nodeName === 'LINK' &&\n      n.nodeType === n.ELEMENT_NODE &&\n      (n as HTMLElement).getAttribute &&\n      (n as HTMLElement).getAttribute('rel') === 'stylesheet' &&\n      mirror.getMeta(n),\n  );\n}\n\nexport function getBaseDimension(\n  node: Node,\n  rootIframe: Node,\n): DocumentDimension {\n  const frameElement = node.ownerDocument?.defaultView?.frameElement;\n  if (!frameElement || frameElement === rootIframe) {\n    return {\n      x: 0,\n      y: 0,\n      relativeScale: 1,\n      absoluteScale: 1,\n    };\n  }\n\n  const frameDimension = frameElement.getBoundingClientRect();\n  const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n  // the iframe element may have a scale transform\n  const relativeScale = frameDimension.height / frameElement.clientHeight;\n  return {\n    x:\n      frameDimension.x * frameBaseDimension.relativeScale +\n      frameBaseDimension.x,\n    y:\n      frameDimension.y * frameBaseDimension.relativeScale +\n      frameBaseDimension.y,\n    relativeScale,\n    absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n  };\n}\n\nexport function hasShadowRoot<T extends Node | RRNode>(\n  n: T,\n): n is T & { shadowRoot: ShadowRoot } {\n  return Boolean((n as unknown as Element)?.shadowRoot);\n}\n\nexport function getNestedRule(\n  rules: CSSRuleList,\n  position: number[],\n): CSSGroupingRule {\n  const rule = rules[position[0]] as CSSGroupingRule;\n  if (position.length === 1) {\n    return rule;\n  } else {\n    return getNestedRule(\n      (rule.cssRules[position[1]] as CSSGroupingRule).cssRules,\n      position.slice(2),\n    );\n  }\n}\n\nexport function getPositionsAndIndex(nestedIndex: number[]) {\n  const positions = [...nestedIndex];\n  const index = positions.pop();\n  return { positions, index };\n}\n\n/**\n * Returns the latest mutation in the queue for each node.\n * @param mutations - mutations The text mutations to filter.\n * @returns The filtered text mutations.\n */\nexport function uniqueTextMutations(mutations: textMutation[]): textMutation[] {\n  const idSet = new Set<number>();\n  const uniqueMutations: textMutation[] = [];\n\n  for (let i = mutations.length; i--; ) {\n    const mutation = mutations[i];\n    if (!idSet.has(mutation.id)) {\n      uniqueMutations.push(mutation);\n      idSet.add(mutation.id);\n    }\n  }\n\n  return uniqueMutations;\n}\n\nexport class StyleSheetMirror {\n  private id = 1;\n  private styleIDMap = new WeakMap<CSSStyleSheet, number>();\n  private idStyleMap = new Map<number, CSSStyleSheet>();\n\n  getId(stylesheet: CSSStyleSheet): number {\n    return this.styleIDMap.get(stylesheet) ?? -1;\n  }\n\n  has(stylesheet: CSSStyleSheet): boolean {\n    return this.styleIDMap.has(stylesheet);\n  }\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: CSSStyleSheet, id?: number): number {\n    if (this.has(stylesheet)) return this.getId(stylesheet);\n    let newId: number;\n    if (id === undefined) {\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\n  getStyle(id: number): CSSStyleSheet | null {\n    return this.idStyleMap.get(id) || null;\n  }\n\n  reset(): void {\n    this.styleIDMap = new WeakMap();\n    this.idStyleMap = new Map();\n    this.id = 1;\n  }\n\n  generateId(): number {\n    return this.id++;\n  }\n}\n\n/**\n * Get the direct shadow host of a node in shadow dom. Returns null if it is not in a shadow dom.\n */\nexport function getShadowHost(n: Node): Element | null {\n  let shadowHost: Element | null = null;\n  if (\n    n.getRootNode?.()?.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n    (n.getRootNode() as ShadowRoot).host\n  )\n    shadowHost = (n.getRootNode() as ShadowRoot).host;\n  return shadowHost;\n}\n\n/**\n * Get the root shadow host of a node in nested shadow doms. Returns the node itself if it is not in a shadow dom.\n */\nexport function getRootShadowHost(n: Node): Node {\n  let rootShadowHost: Node = n;\n\n  let shadowHost: Element | null;\n  // If n is in a nested shadow dom.\n  while ((shadowHost = getShadowHost(rootShadowHost)))\n    rootShadowHost = shadowHost;\n\n  return rootShadowHost;\n}\n\nexport function shadowHostInDom(n: Node): boolean {\n  const doc = n.ownerDocument;\n  if (!doc) return false;\n  const shadowHost = getRootShadowHost(n);\n  return doc.contains(shadowHost);\n}\n\nexport function inDom(n: Node): boolean {\n  const doc = n.ownerDocument;\n  if (!doc) return false;\n  return doc.contains(n) || shadowHostInDom(n);\n}\n", "import type { ErrorHandler } from '../types';\n\ntype Callback = (...args: unknown[]) => unknown;\n\nlet errorHandler: ErrorHandler | undefined;\n\nexport function registerErrorHandler(handler: ErrorHandler | undefined) {\n  errorHandler = handler;\n}\n\nexport function unregisterErrorHandler() {\n  errorHandler = undefined;\n}\n\n/**\n * Wrap callbacks in a wrapper that allows to pass errors to a configured `errorHandler` method.\n */\nexport const callbackWrapper = <T extends Callback>(cb: T): T => {\n  if (!errorHandler) {\n    return cb;\n  }\n\n  const rrwebWrapped = ((...rest: unknown[]) => {\n    try {\n      return cb(...rest);\n    } catch (error) {\n      if (errorHandler && errorHandler(error) === true) {\n        return;\n      }\n      throw error;\n    }\n  }) as unknown as T;\n  return rrwebWrapped;\n};\n", "import type { ICrossOriginIframeMirror } from '@sailfish-rrweb/types';\nexport default class CrossOriginIframeMirror\n  implements ICrossOriginIframeMirror\n{\n  private iframeIdToRemoteIdMap: WeakMap<\n    HTMLIFrameElement,\n    Map<number, number>\n  > = new WeakMap();\n  private iframeRemoteIdToIdMap: WeakMap<\n    HTMLIFrameElement,\n    Map<number, number>\n  > = new WeakMap();\n\n  constructor(private generateIdFn: () => number) {}\n\n  getId(\n    iframe: HTMLIFrameElement,\n    remoteId: number,\n    idToRemoteMap?: Map<number, number>,\n    remoteToIdMap?: Map<number, number>,\n  ): number {\n    const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n\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\n  getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[] {\n    const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return remoteId.map((id) =>\n      this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap),\n    );\n  }\n\n  getRemoteId(\n    iframe: HTMLIFrameElement,\n    id: number,\n    map?: Map<number, number>,\n  ): number {\n    const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n\n    if (typeof id !== 'number') return id;\n\n    const remoteId = remoteIdToIdMap.get(id);\n    if (!remoteId) return -1;\n    return remoteId;\n  }\n\n  getRemoteIds(iframe: HTMLIFrameElement, ids: number[]): number[] {\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n\n    return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n  }\n\n  reset(iframe?: HTMLIFrameElement) {\n    if (!iframe) {\n      this.iframeIdToRemoteIdMap = new WeakMap();\n      this.iframeRemoteIdToIdMap = new WeakMap();\n      return;\n    }\n    this.iframeIdToRemoteIdMap.delete(iframe);\n    this.iframeRemoteIdToIdMap.delete(iframe);\n  }\n\n  private getIdToRemoteIdMap(iframe: HTMLIFrameElement) {\n    let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n    if (!idToRemoteIdMap) {\n      idToRemoteIdMap = new Map();\n      this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n    }\n    return idToRemoteIdMap;\n  }\n\n  private getRemoteIdToIdMap(iframe: HTMLIFrameElement) {\n    let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n    if (!remoteIdToIdMap) {\n      remoteIdToIdMap = new Map();\n      this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n    }\n    return remoteIdToIdMap;\n  }\n}\n", "import type {\n  Mirror,\n  serializedNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport { NodeType, genId } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  eventWithTime,\n  eventWithoutTime,\n  mutationCallBack,\n} from '@sailfish-rrweb/types';\nimport { EventType, IncrementalSource } from '@sailfish-rrweb/types';\nimport type { CrossOriginIframeMessageEvent } from '../types';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror';\nimport type { StylesheetManager } from './stylesheet-manager';\n\nexport class IframeManager {\n  private iframes: WeakMap<HTMLIFrameElement, true> = new WeakMap();\n  private crossOriginIframeMap: WeakMap<MessageEventSource, HTMLIFrameElement> =\n    new WeakMap();\n  public crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n  public crossOriginIframeStyleMirror: CrossOriginIframeMirror;\n  public crossOriginIframeRootIdMap: WeakMap<HTMLIFrameElement, number> =\n    new WeakMap();\n  private mirror: Mirror;\n  private mutationCb: mutationCallBack;\n  // @ts-expect-error\n  private wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n  private loadListener?: (iframeEl: HTMLIFrameElement) => unknown;\n  private stylesheetManager: StylesheetManager;\n  private recordCrossOriginIframes: boolean;\n\n  constructor(options: {\n    mirror: Mirror;\n    mutationCb: mutationCallBack;\n    stylesheetManager: StylesheetManager;\n    recordCrossOriginIframes: boolean;\n    wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n  }) {\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\n  public addIframe(iframeEl: HTMLIFrameElement) {\n    this.iframes.set(iframeEl, true);\n    if (iframeEl.contentWindow)\n      this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n  }\n\n  public addLoadListener(cb: (iframeEl: HTMLIFrameElement) => unknown) {\n    this.loadListener = cb;\n  }\n\n  public attachIframe(\n    iframeEl: HTMLIFrameElement,\n    childSn: serializedNodeWithId,\n  ) {\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\n    // Receive messages (events) coming from cross-origin iframes that are nested in this same-origin iframe.\n    if (this.recordCrossOriginIframes)\n      iframeEl.contentWindow?.addEventListener(\n        'message',\n        this.handleMessage.bind(this),\n      );\n\n    this.loadListener?.(iframeEl);\n\n    if (\n      iframeEl.contentDocument &&\n      iframeEl.contentDocument.adoptedStyleSheets &&\n      iframeEl.contentDocument.adoptedStyleSheets.length > 0\n    )\n      this.stylesheetManager.adoptStyleSheets(\n        iframeEl.contentDocument.adoptedStyleSheets,\n        this.mirror.getId(iframeEl.contentDocument),\n      );\n  }\n  private handleMessage(message: MessageEvent | CrossOriginIframeMessageEvent) {\n    const crossOriginMessageEvent = message as CrossOriginIframeMessageEvent;\n    if (\n      crossOriginMessageEvent.data.type !== '@sailfish-rrweb/rrweb' ||\n      // To filter out the rrweb messages which are forwarded by some sites.\n      crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin\n    )\n      return;\n  }\n\n  // @ts-expect-error\n  private transformCrossOriginEvent(\n    iframeEl: HTMLIFrameElement,\n    e: eventWithTime,\n  ): eventWithTime | false {\n    switch (e.type) {\n      case EventType.FullSnapshot: {\n        this.crossOriginIframeMirror.reset(iframeEl);\n        this.crossOriginIframeStyleMirror.reset(iframeEl);\n        /**\n         * Replaces the original id of the iframe with a new set of unique ids\n         */\n        this.replaceIdOnNode(e.data.node, iframeEl);\n        const rootId = e.data.node.id;\n        this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n        this.patchRootIdOnNode(e.data.node, rootId);\n        return {\n          timestamp: e.timestamp,\n          type: EventType.IncrementalSnapshot,\n          data: {\n            source: IncrementalSource.Mutation,\n            adds: [\n              {\n                parentId: this.mirror.getId(iframeEl),\n                nextId: null,\n                node: e.data.node,\n              },\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true,\n          },\n        };\n      }\n      case EventType.Meta:\n      case EventType.Load:\n      case EventType.DomContentLoaded: {\n        return false;\n      }\n      case EventType.Plugin: {\n        return e;\n      }\n      case EventType.Custom: {\n        this.replaceIds(\n          e.data.payload as {\n            id?: unknown;\n            parentId?: unknown;\n            previousId?: unknown;\n            nextId?: unknown;\n          },\n          iframeEl,\n          ['id', 'parentId', 'previousId', 'nextId'],\n        );\n        return e;\n      }\n      case EventType.IncrementalSnapshot: {\n        switch (e.data.source) {\n          case IncrementalSource.Mutation: {\n            e.data.adds.forEach((n) => {\n              this.replaceIds(n, iframeEl, [\n                'parentId',\n                'nextId',\n                'previousId',\n              ]);\n              this.replaceIdOnNode(n.node, iframeEl);\n              const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n              rootId && this.patchRootIdOnNode(n.node, rootId);\n            });\n            e.data.removes.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['parentId', 'id']);\n            });\n            e.data.attributes.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['id']);\n            });\n            e.data.texts.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['id']);\n            });\n            return e;\n          }\n          case IncrementalSource.Drag:\n          case IncrementalSource.TouchMove:\n          case IncrementalSource.MouseMove: {\n            e.data.positions.forEach((p) => {\n              this.replaceIds(p, iframeEl, ['id']);\n            });\n            return e;\n          }\n          case IncrementalSource.ViewportResize: {\n            // can safely ignore these events\n            return false;\n          }\n          case IncrementalSource.MediaInteraction:\n          case IncrementalSource.MouseInteraction:\n          case IncrementalSource.Scroll:\n          case IncrementalSource.CanvasMutation:\n          case IncrementalSource.Input: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            return e;\n          }\n          case IncrementalSource.StyleSheetRule:\n          case IncrementalSource.StyleDeclaration: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            this.replaceStyleIds(e.data, iframeEl, ['styleId']);\n            return e;\n          }\n          case IncrementalSource.Font: {\n            // fine as-is no modification needed\n            return e;\n          }\n          case IncrementalSource.Selection: {\n            e.data.ranges.forEach((range) => {\n              this.replaceIds(range, iframeEl, ['start', 'end']);\n            });\n            return e;\n          }\n          case IncrementalSource.AdoptedStyleSheet: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\n            e.data.styles?.forEach((style) => {\n              this.replaceStyleIds(style, iframeEl, ['styleId']);\n            });\n            return e;\n          }\n        }\n      }\n    }\n    return false;\n  }\n\n  private replace<T extends Record<string, unknown>>(\n    iframeMirror: CrossOriginIframeMirror,\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\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] as number[],\n        ) as T[keyof T];\n      } else {\n        (obj[key] as number) = iframeMirror.getId(iframeEl, obj[key] as number);\n      }\n    }\n\n    return obj;\n  }\n\n  private replaceIds<T extends Record<string, unknown>>(\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n  }\n\n  private replaceStyleIds<T extends Record<string, unknown>>(\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n  }\n\n  private replaceIdOnNode(\n    node: serializedNodeWithId,\n    iframeEl: HTMLIFrameElement,\n  ) {\n    this.replaceIds(node, iframeEl, ['id', 'rootId']);\n    if ('childNodes' in node) {\n      node.childNodes.forEach((child) => {\n        this.replaceIdOnNode(child, iframeEl);\n      });\n    }\n  }\n\n  private patchRootIdOnNode(node: serializedNodeWithId, rootId: number) {\n    if (node.type !== NodeType.Document && !node.rootId) node.rootId = rootId;\n    if ('childNodes' in node) {\n      node.childNodes.forEach((child) => {\n        this.patchRootIdOnNode(child, rootId);\n      });\n    }\n  }\n}\n", "import { TextDeltaOp } from '@sailfish-rrweb/types';\nimport type { TextDelta } from '@sailfish-rrweb/types';\n\n/**\n * Result of comparing two strings for text delta\n */\nexport interface DiffResult {\n  delta: TextDelta | null;\n  /** Estimated byte size of the delta representation */\n  deltaSize: number;\n  /** Byte size of full text representation */\n  fullTextSize: number;\n}\n\n/**\n * Estimates the JSON serialization size of an object\n */\nfunction estimateJsonSize(obj: unknown): number {\n  return JSON.stringify(obj).length;\n}\n\n/**\n * Computes the diff between oldText and newText.\n * Returns the most efficient delta operation.\n *\n * Algorithm:\n * 1. Check for simple append (most common case for streaming)\n * 2. Check for simple delete from end (backspace)\n * 3. Find common prefix and suffix to identify middle change\n * 4. Create insert/delete/replace as appropriate\n */\nexport function computeTextDiff(\n  oldText: string | null,\n  newText: string | null,\n): DiffResult {\n  const oldStr = oldText || '';\n  const newStr = newText || '';\n  const fullTextSize = estimateJsonSize({ value: newStr });\n\n  // Empty old text - always use full text (establishes baseline)\n  if (oldStr.length === 0) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // No change\n  if (oldStr === newStr) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // Complete clear - full text is cleaner\n  if (newStr.length === 0) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // Case 1: Simple append (most common - streaming text)\n  if (newStr.startsWith(oldStr)) {\n    const appendedText = newStr.slice(oldStr.length);\n    const delta: TextDelta = {\n      op: TextDeltaOp.Append,\n      text: appendedText,\n    };\n    const deltaSize = estimateJsonSize({ delta });\n    return { delta, deltaSize, fullTextSize };\n  }\n\n  // Case 2: Simple delete from end (backspace)\n  if (oldStr.startsWith(newStr)) {\n    const deleteLength = oldStr.length - newStr.length;\n    const delta: TextDelta = {\n      op: TextDeltaOp.Delete,\n      pos: newStr.length,\n      length: deleteLength,\n    };\n    const deltaSize = estimateJsonSize({ delta });\n    return { delta, deltaSize, fullTextSize };\n  }\n\n  // Case 3: Find common prefix\n  let commonPrefixLen = 0;\n  const minLen = Math.min(oldStr.length, newStr.length);\n  while (\n    commonPrefixLen < minLen &&\n    oldStr[commonPrefixLen] === newStr[commonPrefixLen]\n  ) {\n    commonPrefixLen++;\n  }\n\n  // Case 4: Find common suffix (from the non-prefix portion)\n  let commonSuffixLen = 0;\n  const oldRemaining = oldStr.length - commonPrefixLen;\n  const newRemaining = newStr.length - commonPrefixLen;\n  const maxSuffixLen = Math.min(oldRemaining, newRemaining);\n  while (\n    commonSuffixLen < maxSuffixLen &&\n    oldStr[oldStr.length - 1 - commonSuffixLen] ===\n      newStr[newStr.length - 1 - commonSuffixLen]\n  ) {\n    commonSuffixLen++;\n  }\n\n  // Determine what changed in the middle\n  const oldMiddleLen = oldStr.length - commonPrefixLen - commonSuffixLen;\n  const newMiddleLen = newStr.length - commonPrefixLen - commonSuffixLen;\n  const newMiddleText = newStr.slice(\n    commonPrefixLen,\n    newStr.length - commonSuffixLen,\n  );\n\n  let delta: TextDelta;\n\n  if (oldMiddleLen === 0 && newMiddleLen > 0) {\n    // Pure insert\n    delta = {\n      op: TextDeltaOp.Insert,\n      pos: commonPrefixLen,\n      text: newMiddleText,\n    };\n  } else if (oldMiddleLen > 0 && newMiddleLen === 0) {\n    // Pure delete\n    delta = {\n      op: TextDeltaOp.Delete,\n      pos: commonPrefixLen,\n      length: oldMiddleLen,\n    };\n  } else {\n    // Replace\n    delta = {\n      op: TextDeltaOp.Replace,\n      pos: commonPrefixLen,\n      deleteCount: oldMiddleLen,\n      text: newMiddleText,\n    };\n  }\n\n  const deltaSize = estimateJsonSize({ delta });\n  return { delta, deltaSize, fullTextSize };\n}\n\n/**\n * Determines if delta should be used based on size comparison.\n * Includes a threshold to prefer full text when sizes are similar\n * (full text is simpler and more debuggable).\n */\nexport function shouldUseDelta(result: DiffResult): boolean {\n  if (!result.delta) return false;\n  // Use delta only if it saves at least 20% space\n  return result.deltaSize < result.fullTextSize * 0.8;\n}\n\n/**\n * Applies a delta operation to the current text to produce new text.\n * Used during replay to reconstruct the value.\n */\nexport function applyTextDelta(\n  currentText: string | null,\n  delta: TextDelta,\n): string {\n  const text = currentText || '';\n\n  switch (delta.op) {\n    case TextDeltaOp.Append:\n      return text + delta.text;\n\n    case TextDeltaOp.Insert:\n      return text.slice(0, delta.pos) + delta.text + text.slice(delta.pos);\n\n    case TextDeltaOp.Delete:\n      return text.slice(0, delta.pos) + text.slice(delta.pos + delta.length);\n\n    case TextDeltaOp.Replace:\n      return (\n        text.slice(0, delta.pos) +\n        delta.text +\n        text.slice(delta.pos + delta.deleteCount)\n      );\n\n    default:\n      // Unknown operation - return unchanged (defensive)\n      return text;\n  }\n}\n", "import {\n  IGNORED_NODE,\n  Mirror,\n  getInputType,\n  ignoreAttribute,\n  isNativeShadowDom,\n  isShadowRoot,\n  maskInputValue,\n  needMaskingText,\n  serializeNodeWithId,\n  toLowerCase,\n  transformAttribute,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  Optional,\n  addedNodeMutation,\n  attributeCursor,\n  mutationRecord,\n  removedNodeMutation,\n  textCursor,\n  textMutation,\n} from '@sailfish-rrweb/types';\nimport { computeTextDiff, shouldUseDelta } from './text-diff';\nimport type { MutationBufferParam, observerParam } from '../types';\nimport {\n  closestElementOfNode,\n  getShadowHost,\n  hasShadowRoot,\n  inDom,\n  isAncestorRemoved,\n  isBlocked,\n  isIgnored,\n  isSerialized,\n  isSerializedIframe,\n  isSerializedStylesheet,\n} from '../utils';\n\ntype DoubleLinkedListNode = {\n  previous: DoubleLinkedListNode | null;\n  next: DoubleLinkedListNode | null;\n  value: NodeInLinkedList;\n};\ntype NodeInLinkedList = Node & {\n  __ln: DoubleLinkedListNode;\n};\n\nfunction isNodeInLinkedList(n: Node | NodeInLinkedList): n is NodeInLinkedList {\n  return '__ln' in n;\n}\n\nclass DoubleLinkedList {\n  public length = 0;\n  public head: DoubleLinkedListNode | null = null;\n  public tail: DoubleLinkedListNode | null = null;\n\n  public get(position: number) {\n    if (position >= this.length) {\n      throw new Error('Position outside of list range');\n    }\n\n    let current = this.head;\n    for (let index = 0; index < position; index++) {\n      current = current?.next || null;\n    }\n    return current;\n  }\n\n  public addNode(n: Node) {\n    const node: DoubleLinkedListNode = {\n      value: n as NodeInLinkedList,\n      previous: null,\n      next: null,\n    };\n    (n as NodeInLinkedList).__ln = node;\n    if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n      const current = n.previousSibling.__ln.next;\n      node.next = current;\n      node.previous = n.previousSibling.__ln;\n      n.previousSibling.__ln.next = node;\n      if (current) {\n        current.previous = node;\n      }\n    } else if (\n      n.nextSibling &&\n      isNodeInLinkedList(n.nextSibling) &&\n      n.nextSibling.__ln.previous\n    ) {\n      const current = n.nextSibling.__ln.previous;\n      node.previous = current;\n      node.next = n.nextSibling.__ln;\n      n.nextSibling.__ln.previous = node;\n      if (current) {\n        current.next = node;\n      }\n    } else {\n      if (this.head) {\n        this.head.previous = node;\n      }\n      node.next = this.head;\n      this.head = node;\n    }\n    if (node.next === null) {\n      this.tail = node;\n    }\n    this.length++;\n  }\n\n  public removeNode(n: NodeInLinkedList) {\n    const current = n.__ln;\n    if (!this.head) {\n      return;\n    }\n\n    if (!current.previous) {\n      this.head = current.next;\n      if (this.head) {\n        this.head.previous = null;\n      } else {\n        this.tail = null;\n      }\n    } else {\n      current.previous.next = current.next;\n      if (current.next) {\n        current.next.previous = current.previous;\n      } else {\n        this.tail = current.previous;\n      }\n    }\n    if (n.__ln) {\n      delete (n as Optional<NodeInLinkedList, '__ln'>).__ln;\n    }\n    this.length--;\n  }\n}\n\nconst moveKey = (id: number, parentId: number) => `${id}@${parentId}`;\n\n/**\n * controls behaviour of a MutationObserver\n */\nexport default class MutationBuffer {\n  private frozen = false;\n  private locked = false;\n\n  private texts: textCursor[] = [];\n  private attributes: attributeCursor[] = [];\n  private attributeMap = new WeakMap<Node, attributeCursor>();\n  private removes: removedNodeMutation[] = [];\n  private mapRemoves: Node[] = [];\n\n  private movedMap: Record<string, true> = {};\n\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  private addedSet = new Set<Node>();\n  private movedSet = new Set<Node>();\n  private droppedSet = new Set<Node>();\n\n  private mutationCb: observerParam['mutationCb'];\n  private blockClass: observerParam['blockClass'];\n  private blockSelector: observerParam['blockSelector'];\n  private maskTextClass: observerParam['maskTextClass'];\n  private maskTextSelector: observerParam['maskTextSelector'];\n  private inlineStylesheet: observerParam['inlineStylesheet'];\n  private maskInputOptions: observerParam['maskInputOptions'];\n  private maskTextFn: observerParam['maskTextFn'];\n  private maskInputFn: observerParam['maskInputFn'];\n  private keepIframeSrcFn: observerParam['keepIframeSrcFn'];\n  private recordCanvas: observerParam['recordCanvas'];\n  private inlineImages: observerParam['inlineImages'];\n  private slimDOMOptions: observerParam['slimDOMOptions'];\n  private dataURLOptions: observerParam['dataURLOptions'];\n  private doc: observerParam['doc'];\n  private mirror: observerParam['mirror'];\n  private iframeManager: observerParam['iframeManager'];\n  private stylesheetManager: observerParam['stylesheetManager'];\n  private shadowDomManager: observerParam['shadowDomManager'];\n  private canvasManager: observerParam['canvasManager'];\n  private processedNodeManager: observerParam['processedNodeManager'];\n  private unattachedDoc: HTMLDocument;\n\n  public init(options: MutationBufferParam) {\n    (\n      [\n        'mutationCb',\n        'blockClass',\n        'blockSelector',\n        'maskTextClass',\n        'maskTextSelector',\n        'inlineStylesheet',\n        'maskInputOptions',\n        'maskTextFn',\n        'maskInputFn',\n        'keepIframeSrcFn',\n        'recordCanvas',\n        'inlineImages',\n        'slimDOMOptions',\n        'dataURLOptions',\n        'doc',\n        'mirror',\n        'iframeManager',\n        'stylesheetManager',\n        'shadowDomManager',\n        'canvasManager',\n        'processedNodeManager',\n      ] as const\n    ).forEach((key) => {\n      // just a type trick, the runtime result is correct\n      this[key] = options[key] as never;\n    });\n  }\n\n  public freeze() {\n    this.frozen = true;\n    this.canvasManager.freeze();\n  }\n\n  public unfreeze() {\n    this.frozen = false;\n    this.canvasManager.unfreeze();\n    this.emit();\n  }\n\n  public isFrozen() {\n    return this.frozen;\n  }\n\n  public lock() {\n    this.locked = true;\n    this.canvasManager.lock();\n  }\n\n  public unlock() {\n    this.locked = false;\n    this.canvasManager.unlock();\n    this.emit();\n  }\n\n  public reset() {\n    this.shadowDomManager.reset();\n    this.canvasManager.reset();\n  }\n\n  public processMutations = (mutations: mutationRecord[]) => {\n    mutations.forEach(this.processMutation); // adds mutations to the buffer\n    this.emit(); // clears buffer if not locked/frozen\n  };\n\n  public emit = () => {\n    if (this.frozen || this.locked) {\n      return;\n    }\n\n    // delay any modification of the mirror until this function\n    // so that the mirror for takeFullSnapshot doesn't get mutated while it's event is being processed\n\n    const adds: addedNodeMutation[] = [];\n    const addedIds = new Set<number>();\n\n    /**\n     * Sometimes child node may be pushed before its newly added\n     * parent, so we init a queue to store these nodes.\n     */\n    const addList = new DoubleLinkedList();\n    const getNextId = (n: Node): number | null => {\n      let ns: Node | null = n;\n      let nextId: number | null = IGNORED_NODE; // slimDOM: ignored\n      while (nextId === IGNORED_NODE) {\n        ns = ns && ns.nextSibling;\n        nextId = ns && this.mirror.getId(ns);\n      }\n      return nextId;\n    };\n    const pushAdd = (n: Node) => {\n      if (\n        !n.parentNode ||\n        !inDom(n) ||\n        (n.parentNode as Element).tagName === 'TEXTAREA'\n      ) {\n        return;\n      }\n      const parentId = isShadowRoot(n.parentNode)\n        ? this.mirror.getId(getShadowHost(n))\n        : this.mirror.getId(n.parentNode);\n      const nextId = getNextId(n);\n      if (parentId === -1 || nextId === -1) {\n        return addList.addNode(n);\n      }\n      const sn = serializeNodeWithId(n, {\n        doc: this.doc,\n        mirror: this.mirror,\n        blockClass: this.blockClass,\n        blockSelector: this.blockSelector,\n        maskTextClass: this.maskTextClass,\n        maskTextSelector: this.maskTextSelector,\n        skipChild: true,\n        newlyAddedElement: true,\n        inlineStylesheet: this.inlineStylesheet,\n        maskInputOptions: this.maskInputOptions,\n        maskTextFn: this.maskTextFn,\n        maskInputFn: this.maskInputFn,\n        slimDOMOptions: this.slimDOMOptions,\n        dataURLOptions: this.dataURLOptions,\n        recordCanvas: this.recordCanvas,\n        inlineImages: this.inlineImages,\n        onSerialize: (currentN) => {\n          if (isSerializedIframe(currentN, this.mirror)) {\n            this.iframeManager.addIframe(currentN as HTMLIFrameElement);\n          }\n          if (isSerializedStylesheet(currentN, this.mirror)) {\n            this.stylesheetManager.trackLinkElement(\n              currentN as HTMLLinkElement,\n            );\n          }\n          if (hasShadowRoot(n)) {\n            this.shadowDomManager.addShadowRoot(n.shadowRoot, 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        corruptedRules: this.stylesheetManager.corruptedRules,\n      });\n      if (sn) {\n        adds.push({\n          parentId,\n          nextId,\n          node: sn,\n        });\n        addedIds.add(sn.id);\n      }\n    };\n\n    while (this.mapRemoves.length) {\n      this.mirror.removeNodeFromMap(this.mapRemoves.shift()!);\n    }\n\n    for (const n of this.movedSet) {\n      if (\n        isParentRemoved(this.removes, n, this.mirror) &&\n        !this.movedSet.has(n.parentNode!)\n      ) {\n        continue;\n      }\n      pushAdd(n);\n    }\n\n    for (const n of this.addedSet) {\n      if (\n        !isAncestorInSet(this.droppedSet, n) &&\n        !isParentRemoved(this.removes, n, this.mirror)\n      ) {\n        pushAdd(n);\n      } else if (isAncestorInSet(this.movedSet, n)) {\n        pushAdd(n);\n      } else {\n        this.droppedSet.add(n);\n      }\n    }\n\n    let candidate: DoubleLinkedListNode | null = null;\n    while (addList.length) {\n      let node: DoubleLinkedListNode | null = null;\n      if (candidate) {\n        const parentId = this.mirror.getId(candidate.value.parentNode);\n        const nextId = getNextId(candidate.value);\n        if (parentId !== -1 && nextId !== -1) {\n          node = candidate;\n        }\n      }\n      if (!node) {\n        let tailNode = addList.tail;\n        while (tailNode) {\n          const _node = tailNode;\n          tailNode = tailNode.previous;\n          // ensure _node is defined before attempting to find value\n          if (_node) {\n            const parentId = this.mirror.getId(_node.value.parentNode);\n            const nextId = getNextId(_node.value);\n\n            if (nextId === -1) continue;\n            // nextId !== -1 && parentId !== -1\n            else if (parentId !== -1) {\n              node = _node;\n              break;\n            }\n            // nextId !== -1 && parentId === -1 This branch can happen if the node is the child of shadow root\n            else {\n              const unhandledNode = _node.value;\n              // If the node is the direct child of a shadow root, we treat the shadow host as its parent node.\n              if (\n                unhandledNode.parentNode &&\n                unhandledNode.parentNode.nodeType ===\n                  Node.DOCUMENT_FRAGMENT_NODE\n              ) {\n                const shadowHost = (unhandledNode.parentNode as ShadowRoot)\n                  .host;\n                const parentId = this.mirror.getId(shadowHost);\n                if (parentId !== -1) {\n                  node = _node;\n                  break;\n                }\n              }\n            }\n          }\n        }\n      }\n      if (!node) {\n        /**\n         * If all nodes in queue could not find a serialized parent,\n         * it may be a bug or corner case. We need to escape the\n         * dead while loop at once.\n         */\n        while (addList.head) {\n          addList.removeNode(addList.head.value);\n        }\n        break;\n      }\n      candidate = node.previous;\n      addList.removeNode(node.value);\n      pushAdd(node.value);\n    }\n\n    const payload = {\n      texts: this.texts\n        .map((text): textMutation => {\n          const n = text.node;\n          if (\n            n.parentNode &&\n            (n.parentNode as Element).tagName === 'TEXTAREA'\n          ) {\n            // the node is being ignored as it isn't in the mirror, so shift mutation to attributes on parent textarea\n            this.genTextAreaValueMutation(n.parentNode as HTMLTextAreaElement);\n          }\n\n          const id = this.mirror.getId(n);\n\n          // Try to compute delta if oldValue is available (not masked)\n          if (text.oldValue !== undefined) {\n            const diffResult = computeTextDiff(text.oldValue, text.value);\n            if (shouldUseDelta(diffResult) && diffResult.delta) {\n              // Use delta format - more efficient\n              return {\n                id,\n                delta: diffResult.delta,\n              };\n            }\n          }\n\n          // Use full value (legacy format or when delta isn't beneficial)\n          return {\n            id,\n            value: text.value,\n          };\n        })\n        // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n        .filter((text) => !addedIds.has(text.id))\n        // text mutation's id was not in the mirror map means the target node has been removed\n        .filter((text) => this.mirror.has(text.id)),\n      attributes: this.attributes\n        .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            // check if the style diff is actually shorter than the regular string based mutation\n            // (which was the whole point of #464 'compact style mutation').\n            if (diffAsStr.length < attributes.style.length) {\n              // also: CSSOM fails badly when var() is present on shorthand properties, so only proceed with\n              // the compact style mutation if these have all been accounted for\n              if (\n                (diffAsStr + unchangedAsStr).split('var(').length ===\n                attributes.style.split('var(').length\n              ) {\n                attributes.style = attribute.styleDiff;\n              }\n            }\n          }\n          return {\n            id: this.mirror.getId(attribute.node),\n            attributes: attributes,\n          };\n        })\n        // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n        .filter((attribute) => !addedIds.has(attribute.id))\n        // attribute mutation's id was not in the mirror map means the target node has been removed\n        .filter((attribute) => this.mirror.has(attribute.id)),\n      removes: this.removes,\n      adds,\n    };\n    // payload may be empty if the mutations happened in some blocked elements\n    if (\n      !payload.texts.length &&\n      !payload.attributes.length &&\n      !payload.removes.length &&\n      !payload.adds.length\n    ) {\n      return;\n    }\n\n    // reset\n    this.texts = [];\n    this.attributes = [];\n    this.attributeMap = new WeakMap<Node, attributeCursor>();\n    this.removes = [];\n    this.addedSet = new Set<Node>();\n    this.movedSet = new Set<Node>();\n    this.droppedSet = new Set<Node>();\n    this.movedMap = {};\n\n    this.mutationCb(payload);\n  };\n\n  private genTextAreaValueMutation = (textarea: HTMLTextAreaElement) => {\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    item.attributes.value = Array.from(\n      textarea.childNodes,\n      (cn) => cn.textContent || '',\n    ).join('');\n  };\n\n  private processMutation = (m: mutationRecord) => {\n    if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n      return;\n    }\n    switch (m.type) {\n      case 'characterData': {\n        const value = m.target.textContent;\n\n        if (\n          !isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\n          value !== m.oldValue\n        ) {\n          const isMasked = needMaskingText(\n            m.target,\n            this.maskTextClass,\n            this.maskTextSelector,\n            true, // checkAncestors\n          );\n\n          const maskedValue =\n            isMasked && value\n              ? this.maskTextFn\n                ? this.maskTextFn(value, closestElementOfNode(m.target))\n                : value.replace(/[\\S]/g, '*')\n              : value;\n\n          this.texts.push({\n            value: maskedValue,\n            node: m.target,\n            // Store oldValue for delta computation (only when not masked)\n            oldValue: isMasked ? undefined : m.oldValue,\n          });\n        }\n        break;\n      }\n      case 'attributes': {\n        const target = m.target as HTMLElement;\n        let attributeName = m.attributeName as string;\n        let value = (m.target as HTMLElement).getAttribute(attributeName);\n\n        if (attributeName === 'value') {\n          const type = getInputType(target);\n\n          const maskResult = maskInputValue({\n            element: target,\n            maskInputOptions: this.maskInputOptions,\n            tagName: target.tagName,\n            type,\n            value,\n            maskInputFn: this.maskInputFn,\n          });\n          value = maskResult.value;\n          // const masked = maskResult.masked;\n        }\n        if (\n          isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n          value === m.oldValue\n        ) {\n          return;\n        }\n\n        let item = this.attributeMap.get(m.target);\n        if (\n          target.tagName === 'IFRAME' &&\n          attributeName === 'src' &&\n          !this.keepIframeSrcFn(value as string)\n        ) {\n          if (!(target as HTMLIFrameElement).contentDocument) {\n            // we can't record it directly as we can't see into it\n            // preserve the src attribute so a decision can be taken at replay time\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\n        // Keep this property on inputs that used to be password inputs\n        // This is used to ensure we do not unmask value when using e.g. a \"Show password\" type button\n        if (\n          attributeName === 'type' &&\n          target.tagName === 'INPUT' &&\n          (m.oldValue || '').toLowerCase() === 'password'\n        ) {\n          target.setAttribute('data-rr-is-password', 'true');\n        }\n\n        if (!ignoreAttribute(target.tagName, attributeName, value)) {\n          // overwrite attribute if the mutations was triggered in same time\n          item.attributes[attributeName] = transformAttribute(\n            this.doc,\n            toLowerCase(target.tagName),\n            toLowerCase(attributeName),\n            value,\n          );\n          if (attributeName === 'style') {\n            if (!this.unattachedDoc) {\n              try {\n                // avoid upsetting original document from a Content Security point of view\n                this.unattachedDoc =\n                  document.implementation.createHTMLDocument();\n              } catch (e) {\n                // fallback to more direct method\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 (\n                newValue !== old.style.getPropertyValue(pname) ||\n                newPriority !== old.style.getPropertyPriority(pname)\n              ) {\n                if (newPriority === '') {\n                  item.styleDiff[pname] = newValue;\n                } else {\n                  item.styleDiff[pname] = [newValue, newPriority];\n                }\n              } else {\n                // for checking\n                item._unchangedStyles[pname] = [newValue, newPriority];\n              }\n            }\n            for (const pname of Array.from(old.style)) {\n              if (target.style.getPropertyValue(pname) === '') {\n                // \"if not set, returns the empty string\"\n                item.styleDiff[pname] = false; // delete\n              }\n            }\n          }\n        }\n        break;\n      }\n      case 'childList': {\n        /**\n         * Parent is blocked, ignore all child mutations\n         */\n        if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n          return;\n\n        if ((m.target as Element).tagName === 'TEXTAREA') {\n          // children would be ignored in genAdds as they aren't in the mirror\n          this.genTextAreaValueMutation(m.target as HTMLTextAreaElement);\n          return; // any removedNodes won't have been in mirror either\n        }\n\n        m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n        m.removedNodes.forEach((n) => {\n          const nodeId = this.mirror.getId(n);\n          const parentId = isShadowRoot(m.target)\n            ? this.mirror.getId(m.target.host)\n            : this.mirror.getId(m.target);\n          if (\n            isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n            isIgnored(n, this.mirror, this.slimDOMOptions) ||\n            !isSerialized(n, this.mirror)\n          ) {\n            return;\n          }\n          // removed node has not been serialized yet, just remove it from the Set\n          if (this.addedSet.has(n)) {\n            deepDelete(this.addedSet, n);\n            this.droppedSet.add(n);\n          } else if (this.addedSet.has(m.target) && nodeId === -1) {\n            /**\n             * If target was newly added and removed child node was\n             * not serialized, it means the child node has been removed\n             * before callback fired, so we can ignore it because\n             * newly added node will be serialized without child nodes.\n             * TODO: verify this\n             */\n          } else if (isAncestorRemoved(m.target, this.mirror)) {\n            /**\n             * If parent id was not in the mirror map any more, it\n             * means the parent node has already been removed. So\n             * the node is also removed which we do not need to track\n             * and replay.\n             */\n          } else if (\n            this.movedSet.has(n) &&\n            this.movedMap[moveKey(nodeId, parentId)]\n          ) {\n            deepDelete(this.movedSet, n);\n          } else {\n            this.removes.push({\n              parentId,\n              id: nodeId,\n              isShadow:\n                isShadowRoot(m.target) && isNativeShadowDom(m.target)\n                  ? true\n                  : undefined,\n            });\n          }\n          this.mapRemoves.push(n);\n        });\n        break;\n      }\n      default:\n        break;\n    }\n  };\n\n  /**\n   * Make sure you check if `n`'s parent is blocked before calling this function\n   * */\n  private genAdds = (n: Node, target?: Node) => {\n    // this node was already recorded in other buffer, ignore it\n    if (this.processedNodeManager.inOtherBuffer(n, this)) return;\n\n    // if n is added to set, there is no need to travel it and its' children again\n    if (this.addedSet.has(n) || this.movedSet.has(n)) return;\n\n    if (this.mirror.hasNode(n)) {\n      if (isIgnored(n, this.mirror, this.slimDOMOptions)) {\n        return;\n      }\n      this.movedSet.add(n);\n      let targetId: number | null = null;\n      if (target && this.mirror.hasNode(target)) {\n        targetId = this.mirror.getId(target);\n      }\n      if (targetId && targetId !== -1) {\n        this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n      }\n    } else {\n      this.addedSet.add(n);\n      this.droppedSet.delete(n);\n    }\n\n    // if this node is blocked `serializeNode` will turn it into a placeholder element\n    // but we have to remove it's children otherwise they will be added as placeholders too\n    if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\n      n.childNodes.forEach((childN) => this.genAdds(childN));\n      if (hasShadowRoot(n)) {\n        n.shadowRoot.childNodes.forEach((childN) => {\n          this.processedNodeManager.add(childN, this);\n          this.genAdds(childN, n);\n        });\n      }\n    }\n  };\n}\n\n/**\n * Some utils to handle the mutation observer DOM records.\n * It should be more clear to extend the native data structure\n * like Set and Map, but currently Typescript does not support\n * that.\n */\nfunction deepDelete(addsSet: Set<Node>, n: Node) {\n  addsSet.delete(n);\n  n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\n\nfunction isParentRemoved(\n  removes: removedNodeMutation[],\n  n: Node,\n  mirror: Mirror,\n): boolean {\n  if (removes.length === 0) return false;\n  return _isParentRemoved(removes, n, mirror);\n}\n\nfunction _isParentRemoved(\n  removes: removedNodeMutation[],\n  n: Node,\n  mirror: Mirror,\n): boolean {\n  let node: ParentNode | null = n.parentNode;\n  while (node) {\n    const parentId = mirror.getId(node);\n    if (removes.some((r) => r.id === parentId)) {\n      return true;\n    }\n    node = node.parentNode;\n  }\n  return false;\n}\n\nfunction isAncestorInSet(set: Set<Node>, n: Node): boolean {\n  if (set.size === 0) return false;\n  return _isAncestorInSet(set, n);\n}\n\nfunction _isAncestorInSet(set: Set<Node>, n: Node): boolean {\n  const { parentNode } = n;\n  if (!parentNode) {\n    return false;\n  }\n  if (set.has(parentNode)) {\n    return true;\n  }\n  return _isAncestorInSet(set, parentNode);\n}\n", "import {\n  Mirror,\n  getInputType,\n  maskInputValue,\n  toLowerCase,\n} from \"@sailfish-rrweb/rrweb-snapshot\";\nimport type {\n  Arguments,\n  IWindow,\n  SelectionRange,\n  canvasMutationCallback,\n  customElementCallback,\n  deviceChangeCallback,\n  fontCallback,\n  fontParam,\n  hookResetter,\n  // hookResetter,\n  hooksParam,\n  inputCallback,\n  inputValue,\n  listenerHandler,\n  mediaInteractionCallback,\n  mouseInteractionCallBack,\n  mousePosition,\n  mousemoveCallBack,\n  mutationCallBack,\n  scrollCallback,\n  selectionCallback,\n  styleDeclarationCallback,\n  styleSheetRuleCallback,\n  typingCallback,\n  viewportResizeCallback,\n} from \"@sailfish-rrweb/types\";\nimport {\n  IncrementalSource,\n  MediaInteractions,\n  MouseInteractions,\n  PointerTypes,\n} from \"@sailfish-rrweb/types\";\nimport type { FontFaceSet } from \"css-font-loading-module\";\nimport type { MutationBufferParam, observerParam } from \"../types\";\nimport {\n  StyleSheetMirror,\n  getWindowHeight,\n  getWindowScroll,\n  getWindowWidth,\n  hookSetter,\n  // hookSetter,\n  isBlocked,\n  legacy_isTouchEvent,\n  nowTimestamp,\n  on,\n  patch,\n  throttle,\n} from \"../utils\";\nimport { callbackWrapper } from \"./error-handler\";\nimport MutationBuffer from \"./mutation\";\n\ntype WindowWithStoredMutationObserver = IWindow & {\n  __rrMutationObserver?: MutationObserver;\n};\ntype WindowWithAngularZone = IWindow & {\n  Zone?: {\n    __symbol__?: (key: string) => string;\n  };\n};\n\nexport const mutationBuffers: MutationBuffer[] = [];\n\n// Event.path is non-standard and used in some older browsers\ntype NonStandardEvent = Omit<Event, \"composedPath\"> & {\n  path: EventTarget[];\n};\n\nfunction getEventTarget(event: Event | NonStandardEvent): EventTarget | null {\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    // fallback to `event.target` below\n  }\n\n  return event && event.target;\n}\n\nexport function initMutationObserver(\n  options: MutationBufferParam,\n  rootEl: Node,\n): MutationObserver {\n  const mutationBuffer = new MutationBuffer();\n  mutationBuffers.push(mutationBuffer);\n  // see mutation.ts for details\n  mutationBuffer.init(options);\n  let mutationObserverCtor =\n    window.MutationObserver ||\n    /**\n     * Some websites may disable MutationObserver by removing it from the window object.\n     * If someone is using rrweb to build a browser extention or things like it, they\n     * could not change the website's code but can have an opportunity to inject some\n     * code before the website executing its JS logic.\n     * Then they can do this to store the native MutationObserver:\n     * window.__rrMutationObserver = MutationObserver\n     */\n    (window as WindowWithStoredMutationObserver).__rrMutationObserver;\n  const angularZoneSymbol = (\n    window as WindowWithAngularZone\n  )?.Zone?.__symbol__?.(\"MutationObserver\");\n  if (\n    angularZoneSymbol &&\n    (window as unknown as Record<string, typeof MutationObserver>)[\n      angularZoneSymbol\n    ]\n  ) {\n    mutationObserverCtor = (\n      window as unknown as Record<string, typeof MutationObserver>\n    )[angularZoneSymbol];\n  }\n  const observer = new (mutationObserverCtor as new (\n    callback: MutationCallback,\n  ) => MutationObserver)(\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}\n\nfunction initMoveObserver({\n  mousemoveCb,\n  sampling,\n  doc,\n  mirror,\n}: observerParam): listenerHandler {\n  if (sampling.mousemove === false) {\n    return () => {\n      //\n    };\n  }\n\n  const threshold =\n    typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n  const callbackThreshold =\n    typeof sampling.mousemoveCallback === \"number\"\n      ? sampling.mousemoveCallback\n      : 500;\n\n  let positions: mousePosition[] = [];\n  let timeBaseline: number | null;\n  const wrappedCb = throttle(\n    callbackWrapper(\n      (\n        source:\n          | IncrementalSource.MouseMove\n          | IncrementalSource.TouchMove\n          | IncrementalSource.Drag,\n      ) => {\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<MouseEvent | TouchEvent | DragEvent>(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        // 'legacy' here as we could switch to https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event\n        const { clientX, clientY } = legacy_isTouchEvent(evt)\n          ? evt.changedTouches[0]\n          : evt;\n        if (!timeBaseline) {\n          timeBaseline = nowTimestamp();\n        }\n        positions.push({\n          x: clientX,\n          y: clientY,\n          id: mirror.getId(target as Node),\n          timeOffset: nowTimestamp() - timeBaseline,\n        });\n        // it is possible DragEvent is undefined even on devices\n        // that support event 'drag'\n        wrappedCb(\n          typeof DragEvent !== \"undefined\" && evt instanceof DragEvent\n            ? IncrementalSource.Drag\n            : evt instanceof MouseEvent\n            ? IncrementalSource.MouseMove\n            : 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}\n\nfunction initMouseInteractionObserver({\n  mouseInteractionCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  sampling,\n}: observerParam): listenerHandler {\n  if (sampling.mouseInteraction === false) {\n    return () => {\n      //\n    };\n  }\n  const disableMap: Record<string, boolean | undefined> =\n    sampling.mouseInteraction === true ||\n    sampling.mouseInteraction === undefined\n      ? {}\n      : sampling.mouseInteraction;\n\n  const handlers: listenerHandler[] = [];\n  let currentPointerType: PointerTypes | null = null;\n  const getHandler = (eventKey: keyof typeof MouseInteractions) => {\n    return (event: MouseEvent | TouchEvent | PointerEvent) => {\n      const target = getEventTarget(event) as Node;\n      if (isBlocked(target, blockClass, blockSelector, true)) {\n        return;\n      }\n      let pointerType: PointerTypes | null = 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            // we are actually listening on 'pointerdown'\n            thisEventKey = \"TouchStart\";\n          } else if (\n            MouseInteractions[eventKey] === MouseInteractions.MouseUp\n          ) {\n            // we are actually listening on 'pointerup'\n            thisEventKey = \"TouchEnd\";\n          }\n        } else if (pointerType === PointerTypes.Pen) {\n          // TODO: these will get incorrectly emitted as MouseDown/MouseUp\n        }\n      } else if (legacy_isTouchEvent(event)) {\n        pointerType = PointerTypes.Touch;\n      }\n      if (pointerType !== null) {\n        currentPointerType = pointerType;\n        if (\n          (thisEventKey.startsWith(\"Touch\") &&\n            pointerType === PointerTypes.Touch) ||\n          (thisEventKey.startsWith(\"Mouse\") &&\n            pointerType === PointerTypes.Mouse)\n        ) {\n          // don't output redundant info\n          pointerType = null;\n        }\n      } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n        pointerType = currentPointerType;\n        currentPointerType = null; // cleanup as we've used it\n      }\n      const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n      if (!e) {\n        return;\n      }\n      const id = mirror.getId(target);\n      const { clientX, clientY } = e;\n      callbackWrapper(mouseInteractionCb)({\n        type: MouseInteractions[thisEventKey],\n        id,\n        x: clientX,\n        y: clientY,\n        ...(pointerType !== null && { pointerType }),\n      });\n    };\n  };\n  Object.keys(MouseInteractions)\n    .filter(\n      (key) =>\n        Number.isNaN(Number(key)) &&\n        !key.endsWith(\"_Departed\") &&\n        disableMap[key] !== false,\n    )\n    .forEach((eventKey: keyof typeof MouseInteractions) => {\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            ) as unknown as typeof eventName;\n            break;\n          case MouseInteractions.TouchStart:\n          case MouseInteractions.TouchEnd:\n            // these are handled by pointerdown/pointerup\n            return;\n        }\n      }\n      handlers.push(on(eventName, handler, doc));\n    });\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nexport function initScrollObserver({\n  scrollCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  sampling,\n}: Pick<\n  observerParam,\n  \"scrollCb\" | \"doc\" | \"mirror\" | \"blockClass\" | \"blockSelector\" | \"sampling\"\n>): listenerHandler {\n  const updatePosition = callbackWrapper(\n    throttle<UIEvent>(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        if (\n          !target ||\n          isBlocked(target as Node, blockClass, blockSelector, true)\n        ) {\n          return;\n        }\n        const id = mirror.getId(target as Node);\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 as HTMLElement).scrollLeft,\n            y: (target as HTMLElement).scrollTop,\n          });\n        }\n      }),\n      sampling.scroll || 100,\n    ),\n  );\n  return on(\"scroll\", updatePosition, doc);\n}\n\nfunction initViewportResizeObserver(\n  { viewportResizeCb }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\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}\n\nexport const INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap: WeakMap<EventTarget, inputValue> = new WeakMap();\nfunction initInputObserver({\n  inputCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  ignoreClass,\n  ignoreSelector,\n  maskInputOptions,\n  maskInputFn,\n  sampling,\n  userTriggeredOnInput,\n}: observerParam): listenerHandler {\n  function eventHandler(event: Event) {\n    let target = getEventTarget(event) as HTMLElement | null;\n    const userTriggered = event.isTrusted;\n    const tagName = target && target.tagName;\n\n    /**\n     * If a site changes the value 'selected' of an option element, the value of its parent element, usually a select element, will be changed as well.\n     * We can treat this change as a value change of the select element the current target belongs to.\n     */\n    if (target && tagName === \"OPTION\") {\n      target = target.parentElement;\n    }\n    if (\n      !target ||\n      !tagName ||\n      INPUT_TAGS.indexOf(tagName) < 0 ||\n      isBlocked(target as Node, blockClass, blockSelector, true)\n    ) {\n      return;\n    }\n\n    if (\n      target.classList.contains(ignoreClass) ||\n      (ignoreSelector && target.matches(ignoreSelector))\n    ) {\n      return;\n    }\n    let text = (target as HTMLInputElement).value;\n    let isChecked = false;\n    const type: Lowercase<string> = getInputType(target) || \"\";\n\n    const { value: maskedValue, masked } = maskInputValue({\n      element: target,\n      maskInputOptions,\n      tagName,\n      type,\n      value: text,\n      maskInputFn,\n    });\n    text = maskedValue;\n\n    if (type === \"radio\" || type === \"checkbox\") {\n      isChecked = (target as HTMLInputElement).checked;\n    }\n    cbWithDedup(\n      target,\n      userTriggeredOnInput\n        ? { text, isChecked, masked, userTriggered }\n        : { text, isChecked, masked },\n    );\n    // if a radio was checked\n    // the other radios with the same name attribute will be unchecked.\n    const name: string | undefined = (target as HTMLInputElement).name;\n    if (type === \"radio\" && name && isChecked) {\n      doc\n        .querySelectorAll(`input[type='radio'][name='${name}']`)\n        .forEach((el) => {\n          if (el !== target) {\n            const text = (el as HTMLInputElement).value;\n            cbWithDedup(\n              el,\n              userTriggeredOnInput\n                ? { text, isChecked: !isChecked, masked, userTriggered: false }\n                : { text, isChecked: !isChecked, masked },\n            );\n          }\n        });\n    }\n  }\n  function cbWithDedup(target: EventTarget, v: inputValue) {\n    const lastInputValue = lastInputValueMap.get(target);\n\n    if (\n      !lastInputValue ||\n      lastInputValue.text !== v.text ||\n      lastInputValue.isChecked !== v.isChecked ||\n      lastInputValue.masked !== v.masked\n    ) {\n      lastInputValueMap.set(target, v);\n      const id = mirror.getId(target as Node);\n      callbackWrapper(inputCb)({\n        ...v,\n        id,\n      });\n    }\n  }\n  const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n  const handlers: Array<listenerHandler | hookResetter> = 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: Array<[HTMLElement, string]> = [\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((p) =>\n        hookSetter<HTMLElement>(\n          p[0],\n          p[1],\n          {\n            set() {\n              // mock to a normal event\n              callbackWrapper(eventHandler)({\n                target: this as EventTarget,\n                isTrusted: false, // userTriggered to false as this could well be programmatic\n              } as Event);\n            },\n          },\n          false,\n          currentWindow,\n        ),\n      ),\n    );\n  }\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initTypingObserver({\n  typingCb,\n  doc,\n  maskInputOptions,\n  maskInputFn,\n}: observerParam): listenerHandler {\n  const handleTyping = (event: KeyboardEvent) => {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    let isMasked = false; // Update this logic if masking is required\n    const keyInfo = {\n      key: event.key, // The actual key pressed (e.g., 'a', 'Enter')\n      code: event.code, // The physical key code (e.g., 'KeyA', 'Space')\n      altKey: event.altKey, // Whether Alt was pressed\n      ctrlKey: event.ctrlKey, // Whether Ctrl was pressed\n      shiftKey: event.shiftKey, // Whether Shift was pressed\n      metaKey: event.metaKey, // Whether Command (Mac) or Windows key was pressed\n    };\n    const tagName = target && target.tagName;\n    const type: Lowercase<string> = getInputType(target) || \"\";\n    let text = target.value;\n    if (target && (target.tagName == \"INPUT\" || target.tagName == \"TEXTAREA\")) {\n      const { value: maskedValue, masked } = maskInputValue({\n        element: target,\n        maskInputOptions,\n        tagName,\n        type,\n        value: text,\n        maskInputFn,\n      });\n      text = maskedValue;\n      isMasked = masked;\n    }\n\n    // Serialize the full DOM path of the focused element\n    const getDomPath = (element: HTMLElement): string => {\n      const path = [];\n      while (element) {\n        let selector = element.tagName.toLowerCase();\n\n        // Add ID if present\n        if (element.id) {\n          selector += `#${element.id}`;\n          path.unshift(selector);\n          break; // IDs are unique, no need to go further up\n        }\n\n        // Add class names if present\n        if (element.className) {\n          const classList = element.className.split(/\\s+/).filter(Boolean);\n          if (classList.length) {\n            selector += `.${classList.join(\".\")}`;\n          }\n        }\n\n        // Add index for sibling elements\n        const siblings = Array.from(element.parentNode?.children || []);\n        if (siblings.length > 1) {\n          const index = siblings.indexOf(element) + 1;\n          selector += `:nth-child(${index})`;\n        }\n\n        path.unshift(selector);\n        element = element.parentElement as HTMLElement;\n      }\n      return path.join(\" > \");\n    };\n\n    typingCb({\n      source: IncrementalSource.Typing,\n      id: target?.id, // Assuming id tracking is in place\n      text: text,\n      isMasked,\n      target: getDomPath(target),\n      keyInfo,\n    });\n  };\n\n  const keydownHandler = on(\"keydown\", handleTyping, doc);\n  return () => {\n    keydownHandler();\n  };\n}\n\nfunction initDeviceChangeObserver({\n  deviceChangeCb,\n}: observerParam): listenerHandler {\n  const handleUSBChange = (event: USBConnectionEvent, action: string) => {\n    const deviceNames = event.device.productName\n      ? [event.device.productName]\n      : [\"Unknown USB Device\"];\n    deviceChangeCb({\n      type: \"USB\",\n      action,\n      devices: deviceNames, // Converted to string[]\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleHIDChange = (event: HIDConnectionEvent, action: string) => {\n    const deviceNames = event.device.productName\n      ? [event.device.productName]\n      : [\"Unknown HID Device\"];\n    deviceChangeCb({\n      type: \"HID\",\n      action,\n      devices: deviceNames, // Converted to string[]\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleGamepadChange = () => {\n    const gamepads = navigator.getGamepads();\n    const devices = Array.from(gamepads)\n      .filter((g) => g)\n      .map((g) => g?.id || \"Unknown Gamepad\");\n\n    if (devices.length === 0) {\n      return;\n    }\n    deviceChangeCb({\n      type: \"Gamepad\",\n      action: \"change\",\n      devices,\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleMediaDeviceChange = () => {\n    navigator.mediaDevices\n      .enumerateDevices()\n      .then((devices) => {\n        const deviceList = devices.map((d) => `${d.kind}: ${d.label}`);\n        deviceChangeCb({\n          type: \"MediaDevices\",\n          action: \"change\",\n          devices: deviceList,\n          timestamp: Date.now(),\n        });\n      })\n      .catch((error) => {\n        console.error(\"[Media Device Enumeration Error]\", error);\n      });\n  };\n\n  // Network change handler remains unchanged\n  const handleNetworkChange = () => {\n    const status = navigator.onLine ? \"online\" : \"offline\";\n    deviceChangeCb({\n      type: \"Network\",\n      action: \"status\",\n      status,\n      timestamp: Date.now(),\n    });\n  };\n\n  const networkHandlers = [\n    on(\n      \"online\",\n      () => {\n        handleNetworkChange();\n      },\n      window,\n    ),\n    on(\n      \"offline\",\n      () => {\n        handleNetworkChange();\n      },\n      window,\n    ),\n  ];\n\n  // Attach event listeners\n  if (\"usb\" in navigator) {\n    navigator.usb.addEventListener(\"connect\", (event: USBConnectionEvent) =>\n      handleUSBChange(event, \"connect\"),\n    );\n    navigator.usb.addEventListener(\"disconnect\", (event: USBConnectionEvent) =>\n      handleUSBChange(event, \"disconnect\"),\n    );\n  }\n\n  if (\"hid\" in navigator) {\n    navigator.hid.addEventListener(\"connect\", (event: HIDConnectionEvent) =>\n      handleHIDChange(event, \"connect\"),\n    );\n    navigator.hid.addEventListener(\"disconnect\", (event: HIDConnectionEvent) =>\n      handleHIDChange(event, \"disconnect\"),\n    );\n  }\n\n  navigator.mediaDevices.addEventListener(\n    \"devicechange\",\n    handleMediaDeviceChange,\n  );\n\n  const gamepadPollInterval = setInterval(() => {\n    handleGamepadChange();\n  }, 10000); // Poll every 10 seconds\n\n  return () => {\n    navigator.usb.removeEventListener(\"connect\", handleUSBChange as any);\n    navigator.usb.removeEventListener(\"disconnect\", handleUSBChange as any);\n    navigator.hid.removeEventListener(\"connect\", handleHIDChange as any);\n    navigator.hid.removeEventListener(\"disconnect\", handleHIDChange as any);\n    networkHandlers.forEach((h) => h());\n    navigator.mediaDevices.removeEventListener(\n      \"devicechange\",\n      handleMediaDeviceChange,\n    );\n    clearInterval(gamepadPollInterval);\n  };\n}\n\ntype GroupingCSSRule =\n  | CSSGroupingRule\n  | CSSMediaRule\n  | CSSSupportsRule\n  | CSSConditionRule;\ntype GroupingCSSRuleTypes =\n  | typeof CSSGroupingRule\n  | typeof CSSMediaRule\n  | typeof CSSSupportsRule\n  | typeof CSSConditionRule;\n\nfunction getNestedCSSRulePositions(rule: CSSRule): number[] {\n  const positions: number[] = [];\n  function recurse(childRule: CSSRule, pos: number[]) {\n    if (\n      (hasNestedCSSRule(\"CSSGroupingRule\") &&\n        childRule.parentRule instanceof CSSGroupingRule) ||\n      (hasNestedCSSRule(\"CSSMediaRule\") &&\n        childRule.parentRule instanceof CSSMediaRule) ||\n      (hasNestedCSSRule(\"CSSSupportsRule\") &&\n        childRule.parentRule instanceof CSSSupportsRule) ||\n      (hasNestedCSSRule(\"CSSConditionRule\") &&\n        childRule.parentRule instanceof CSSConditionRule)\n    ) {\n      const rules = Array.from(\n        (childRule.parentRule as GroupingCSSRule).cssRules,\n      );\n      const index = rules.indexOf(childRule);\n      pos.unshift(index);\n    } else if (childRule.parentStyleSheet) {\n      const rules = Array.from(childRule.parentStyleSheet.cssRules);\n      const index = rules.indexOf(childRule);\n      pos.unshift(index);\n    }\n    return pos;\n  }\n  return recurse(rule, positions);\n}\n\n/**\n * For StyleSheets in Element, this function retrieves id of its host element.\n * For adopted StyleSheets, this function retrieves its styleId from a styleMirror.\n */\nfunction getIdAndStyleId(\n  sheet: CSSStyleSheet | undefined | null,\n  mirror: Mirror,\n  styleMirror: StyleSheetMirror,\n): {\n  styleId?: number;\n  id?: number;\n} {\n  let id, styleId;\n  if (!sheet) return {};\n  if (sheet.ownerNode) id = mirror.getId(sheet.ownerNode as Node);\n  else styleId = styleMirror.getId(sheet);\n  return {\n    styleId,\n    id,\n  };\n}\n\nfunction initStyleSheetObserver(\n  { styleSheetRuleCb, mirror, stylesheetManager }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n    // If, for whatever reason, CSSStyleSheet is not available, we skip the observation of stylesheets.\n    return () => {\n      // Do nothing\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const insertRule = win.CSSStyleSheet.prototype.insertRule;\n  win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n    apply: callbackWrapper(\n      (\n        target: typeof insertRule,\n        thisArg: CSSStyleSheet,\n        argumentsList: [string, number | undefined],\n      ) => {\n        const [rule, index] = argumentsList;\n\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            adds: [{ rule, index }],\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n  win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n    apply: callbackWrapper(\n      (\n        target: typeof deleteRule,\n        thisArg: CSSStyleSheet,\n        argumentsList: [number],\n      ) => {\n        const [index] = argumentsList;\n\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            removes: [{ index }],\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  let replace: (text: string) => Promise<CSSStyleSheet>;\n\n  if (win.CSSStyleSheet.prototype.replace) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    replace = win.CSSStyleSheet.prototype.replace;\n    win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n      apply: callbackWrapper(\n        (\n          target: typeof replace,\n          thisArg: CSSStyleSheet,\n          argumentsList: [string],\n        ) => {\n          const [text] = argumentsList;\n\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror,\n            stylesheetManager.styleMirror,\n          );\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\n  let replaceSync: (text: string) => void;\n  if (win.CSSStyleSheet.prototype.replaceSync) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n    win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n      apply: callbackWrapper(\n        (\n          target: typeof replaceSync,\n          thisArg: CSSStyleSheet,\n          argumentsList: [string],\n        ) => {\n          const [text] = argumentsList;\n\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror,\n            stylesheetManager.styleMirror,\n          );\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\n  const supportedNestedCSSRuleTypes: {\n    [key: string]: GroupingCSSRuleTypes;\n  } = {};\n  if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n    supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n  } else {\n    // Some browsers (Safari) don't support CSSGroupingRule\n    // https://caniuse.com/?search=cssgroupingrule\n    // fall back to monkey patching classes that would have inherited from CSSGroupingRule\n\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\n  const unmodifiedFunctions: {\n    [key: string]: {\n      insertRule: (rule: string, index?: number) => number;\n      deleteRule: (index: number) => void;\n    };\n  } = {};\n\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\n    type.prototype.insertRule = new Proxy(\n      unmodifiedFunctions[typeKey].insertRule,\n      {\n        apply: callbackWrapper(\n          (\n            target: typeof insertRule,\n            thisArg: CSSRule,\n            argumentsList: [string, number | undefined],\n          ) => {\n            const [rule, index] = argumentsList;\n\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror,\n              stylesheetManager.styleMirror,\n            );\n\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                adds: [\n                  {\n                    rule,\n                    index: [\n                      ...getNestedCSSRulePositions(thisArg),\n                      index || 0, // defaults to 0\n                    ],\n                  },\n                ],\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          },\n        ),\n      },\n    );\n\n    type.prototype.deleteRule = new Proxy(\n      unmodifiedFunctions[typeKey].deleteRule,\n      {\n        apply: callbackWrapper(\n          (\n            target: typeof deleteRule,\n            thisArg: CSSRule,\n            argumentsList: [number],\n          ) => {\n            const [index] = argumentsList;\n\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror,\n              stylesheetManager.styleMirror,\n            );\n\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                removes: [\n                  { index: [...getNestedCSSRulePositions(thisArg), index] },\n                ],\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          },\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}\n\nexport function initAdoptedStyleSheetObserver(\n  {\n    mirror,\n    stylesheetManager,\n  }: Pick<observerParam, \"mirror\" | \"stylesheetManager\">,\n  host: Document | ShadowRoot,\n): listenerHandler {\n  let hostId: number | null = null;\n  // host of adoptedStyleSheets is outermost document or IFrame's document\n  if (host.nodeName === \"#document\") hostId = mirror.getId(host);\n  // The host is a ShadowRoot.\n  else hostId = mirror.getId((host as ShadowRoot).host);\n\n  const patchTarget =\n    host.nodeName === \"#document\"\n      ? (host as Document).defaultView?.Document\n      : host.ownerDocument?.defaultView?.ShadowRoot;\n  const originalPropertyDescriptor = patchTarget?.prototype\n    ? Object.getOwnPropertyDescriptor(\n        patchTarget?.prototype,\n        \"adoptedStyleSheets\",\n      )\n    : undefined;\n  if (\n    hostId === null ||\n    hostId === -1 ||\n    !patchTarget ||\n    !originalPropertyDescriptor\n  )\n    return () => {\n      //\n    };\n\n  // Patch adoptedStyleSheets by overriding the original one.\n  Object.defineProperty(host, \"adoptedStyleSheets\", {\n    configurable: originalPropertyDescriptor.configurable,\n    enumerable: originalPropertyDescriptor.enumerable,\n    get(): CSSStyleSheet[] {\n      return originalPropertyDescriptor.get?.call(this) as CSSStyleSheet[];\n    },\n    set(sheets: CSSStyleSheet[]) {\n      const result = originalPropertyDescriptor.set?.call(this, sheets);\n      if (hostId !== null && hostId !== -1) {\n        try {\n          stylesheetManager.adoptStyleSheets(sheets, hostId);\n        } catch (e) {\n          // for safety\n        }\n      }\n      return result;\n    },\n  });\n\n  return callbackWrapper(() => {\n    Object.defineProperty(host, \"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}\n\nfunction initStyleDeclarationObserver(\n  {\n    styleDeclarationCb,\n    mirror,\n    ignoreCSSAttributes,\n    stylesheetManager,\n  }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n  win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n    apply: callbackWrapper(\n      (\n        target: typeof setProperty,\n        thisArg: CSSStyleDeclaration,\n        argumentsList: [string, string, string],\n      ) => {\n        const [property, value, priority] = argumentsList;\n\n        // ignore this mutation if we do not care about this css attribute\n        if (ignoreCSSAttributes.has(property)) {\n          return setProperty.apply(thisArg, [property, value, priority]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          thisArg.parentRule?.parentStyleSheet,\n          mirror,\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\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n  win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n    apply: callbackWrapper(\n      (\n        target: typeof removeProperty,\n        thisArg: CSSStyleDeclaration,\n        argumentsList: [string],\n      ) => {\n        const [property] = argumentsList;\n\n        // ignore this mutation if we do not care about this css attribute\n        if (ignoreCSSAttributes.has(property)) {\n          return removeProperty.apply(thisArg, [property]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          thisArg.parentRule?.parentStyleSheet,\n          mirror,\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\n  return callbackWrapper(() => {\n    win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n  });\n}\n\nfunction initMediaInteractionObserver({\n  mediaInteractionCb,\n  blockClass,\n  blockSelector,\n  mirror,\n  sampling,\n  doc,\n}: observerParam): listenerHandler {\n  const handler = callbackWrapper((type: MediaInteractions) =>\n    throttle(\n      callbackWrapper((event: Event) => {\n        const target = getEventTarget(event);\n        if (\n          !target ||\n          isBlocked(target as Node, blockClass, blockSelector, true)\n        ) {\n          return;\n        }\n        const { currentTime, volume, muted, playbackRate, loop } =\n          target as HTMLMediaElement;\n        mediaInteractionCb({\n          type,\n          id: mirror.getId(target as Node),\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}\n\nfunction initFontObserver({ fontCb, doc }: observerParam): listenerHandler {\n  const win = doc.defaultView as IWindow;\n  if (!win) {\n    return () => {\n      //\n    };\n  }\n\n  const handlers: listenerHandler[] = [];\n\n  const fontMap = new WeakMap<FontFace, fontParam>();\n\n  const originalFontFace = win.FontFace;\n  win.FontFace = function FontFace(\n    family: string,\n    source: string | ArrayBufferLike,\n    descriptors?: FontFaceDescriptors,\n  ) {\n    const safeSource: string | BufferSource =\n      typeof source === \"string\"\n        ? source\n        : source instanceof SharedArrayBuffer\n        ? new ArrayBuffer(source.byteLength)\n        : source; // already an ArrayBuffer\n\n    // Only perform the copy if source is not a string (and is a SharedArrayBuffer)\n    if (typeof source !== \"string\" && source instanceof SharedArrayBuffer) {\n      // Narrow safeSource to ArrayBuffer since we know it's not a string\n      new Uint8Array(safeSource as ArrayBuffer).set(new Uint8Array(source));\n    }\n\n    const fontFace = new originalFontFace(family, safeSource, descriptors);\n\n    fontMap.set(fontFace, {\n      family,\n      buffer: typeof source !== \"string\",\n      descriptors,\n      fontSource:\n        typeof source === \"string\"\n          ? source\n          : JSON.stringify(\n              Array.from(new Uint8Array(safeSource as ArrayBuffer)),\n            ),\n    });\n\n    return fontFace;\n  } as unknown as typeof FontFace;\n\n  const restoreHandler = patch(\n    doc.fonts,\n    \"add\",\n    function (original: (font: FontFace) => void) {\n      return function (this: FontFaceSet, fontFace: 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\n  handlers.push(() => {\n    win.FontFace = originalFontFace;\n  });\n  handlers.push(restoreHandler);\n\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initSelectionObserver(param: observerParam): listenerHandler {\n  const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\n  let collapsed = true;\n\n  const updateSelection = callbackWrapper(() => {\n    const selection = doc.getSelection();\n\n    if (!selection || (collapsed && selection?.isCollapsed)) return;\n\n    collapsed = selection.isCollapsed || false;\n\n    const ranges: SelectionRange[] = [];\n    const count = selection.rangeCount || 0;\n\n    for (let i = 0; i < count; i++) {\n      const range = selection.getRangeAt(i);\n\n      const { startContainer, startOffset, endContainer, endOffset } = range;\n\n      const blocked =\n        isBlocked(startContainer, blockClass, blockSelector, true) ||\n        isBlocked(endContainer, blockClass, blockSelector, true);\n\n      if (blocked) continue;\n\n      ranges.push({\n        start: mirror.getId(startContainer),\n        startOffset,\n        end: mirror.getId(endContainer),\n        endOffset,\n      });\n    }\n\n    selectionCb({ ranges });\n  });\n\n  updateSelection();\n\n  return on(\"selectionchange\", updateSelection);\n}\n\nfunction initCustomElementObserver({\n  doc,\n  customElementCb,\n}: observerParam): listenerHandler {\n  const win = doc.defaultView as IWindow;\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  if (!win || !win.customElements) return () => {};\n  const restoreHandler = patch(\n    win.customElements,\n    \"define\",\n    function (\n      original: (\n        name: string,\n        constructor: CustomElementConstructor,\n        options?: ElementDefinitionOptions,\n      ) => void,\n    ) {\n      return function (\n        name: string,\n        constructor: CustomElementConstructor,\n        options?: ElementDefinitionOptions,\n      ) {\n        try {\n          customElementCb({\n            define: {\n              name,\n            },\n          });\n        } catch (e) {\n          console.warn(`Custom element callback failed for ${name}`);\n        }\n        return original.apply(this, [name, constructor, options]);\n      };\n    },\n  );\n  return restoreHandler;\n}\n\nfunction mergeHooks(o: observerParam, hooks: hooksParam) {\n  const {\n    mutationCb,\n    mousemoveCb,\n    mouseInteractionCb,\n    scrollCb,\n    viewportResizeCb,\n    inputCb,\n    typingCb,\n    deviceChangeCb,\n    mediaInteractionCb,\n    styleSheetRuleCb,\n    styleDeclarationCb,\n    canvasMutationCb,\n    fontCb,\n    selectionCb,\n    customElementCb,\n  } = o;\n  o.mutationCb = (...p: Arguments<mutationCallBack>) => {\n    if (hooks.mutation) {\n      hooks.mutation(...p);\n    }\n    mutationCb(...p);\n  };\n  o.mousemoveCb = (...p: Arguments<mousemoveCallBack>) => {\n    if (hooks.mousemove) {\n      hooks.mousemove(...p);\n    }\n    mousemoveCb(...p);\n  };\n  o.mouseInteractionCb = (...p: Arguments<mouseInteractionCallBack>) => {\n    if (hooks.mouseInteraction) {\n      hooks.mouseInteraction(...p);\n    }\n    mouseInteractionCb(...p);\n  };\n  o.scrollCb = (...p: Arguments<scrollCallback>) => {\n    if (hooks.scroll) {\n      hooks.scroll(...p);\n    }\n    scrollCb(...p);\n  };\n  o.viewportResizeCb = (...p: Arguments<viewportResizeCallback>) => {\n    if (hooks.viewportResize) {\n      hooks.viewportResize(...p);\n    }\n    viewportResizeCb(...p);\n  };\n  o.inputCb = (...p: Arguments<inputCallback>) => {\n    if (hooks.input) {\n      hooks.input(...p);\n    }\n    inputCb(...p);\n  };\n  o.typingCb = (...p: Arguments<typingCallback>) => {\n    if (hooks.typing) {\n      hooks.typing(...p);\n    }\n    typingCb(...p);\n  };\n  o.deviceChangeCb = (...p: Arguments<deviceChangeCallback>) => {\n    if (hooks.device) {\n      hooks.device(...p);\n    }\n    deviceChangeCb(...p);\n  };\n  o.mediaInteractionCb = (...p: Arguments<mediaInteractionCallback>) => {\n    if (hooks.mediaInteaction) {\n      hooks.mediaInteaction(...p);\n    }\n    mediaInteractionCb(...p);\n  };\n  o.styleSheetRuleCb = (...p: Arguments<styleSheetRuleCallback>) => {\n    if (hooks.styleSheetRule) {\n      hooks.styleSheetRule(...p);\n    }\n    styleSheetRuleCb(...p);\n  };\n  o.styleDeclarationCb = (...p: Arguments<styleDeclarationCallback>) => {\n    if (hooks.styleDeclaration) {\n      hooks.styleDeclaration(...p);\n    }\n    styleDeclarationCb(...p);\n  };\n  o.canvasMutationCb = (...p: Arguments<canvasMutationCallback>) => {\n    if (hooks.canvasMutation) {\n      hooks.canvasMutation(...p);\n    }\n    canvasMutationCb(...p);\n  };\n  o.fontCb = (...p: Arguments<fontCallback>) => {\n    if (hooks.font) {\n      hooks.font(...p);\n    }\n    fontCb(...p);\n  };\n  o.selectionCb = (...p: Arguments<selectionCallback>) => {\n    if (hooks.selection) {\n      hooks.selection(...p);\n    }\n    selectionCb(...p);\n  };\n  o.customElementCb = (...c: Arguments<customElementCallback>) => {\n    if (hooks.customElement) {\n      hooks.customElement(...c);\n    }\n    customElementCb(...c);\n  };\n}\n\nexport function initObservers(\n  o: observerParam,\n  hooks: hooksParam = {},\n): listenerHandler {\n  const currentWindow = o.doc.defaultView; // basically document.window\n  if (!currentWindow) {\n    return () => {\n      //\n    };\n  }\n  mergeHooks(o, hooks);\n  let mutationObserver: MutationObserver | undefined;\n  if (o.recordDOM) {\n    mutationObserver = initMutationObserver(o, o.doc);\n  }\n  const mousemoveHandler = initMoveObserver(o);\n  const mouseInteractionHandler = initMouseInteractionObserver(o);\n  const scrollHandler = initScrollObserver(o);\n  const viewportResizeHandler = initViewportResizeObserver(o, {\n    win: currentWindow,\n  });\n  const inputHandler = initInputObserver(o);\n  const typingHandler = initTypingObserver(o);\n  const mediaDeviceChangeHandler = initDeviceChangeObserver(o);\n  const mediaInteractionHandler = initMediaInteractionObserver(o);\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let styleSheetObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let adoptedStyleSheetObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let styleDeclarationObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let fontObserver = () => {};\n  if (o.recordDOM) {\n    styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n    adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n    styleDeclarationObserver = initStyleDeclarationObserver(o, {\n      win: currentWindow,\n    });\n    if (o.collectFonts) {\n      fontObserver = initFontObserver(o);\n    }\n  }\n  const selectionObserver = initSelectionObserver(o);\n  const customElementObserver = initCustomElementObserver(o);\n\n  // plugins\n  const pluginHandlers: listenerHandler[] = [];\n  for (const plugin of o.plugins) {\n    pluginHandlers.push(\n      plugin.observer(plugin.callback, currentWindow, plugin.options),\n    );\n  }\n\n  return callbackWrapper(() => {\n    mutationBuffers.forEach((b) => b.reset());\n    mutationObserver?.disconnect();\n    mousemoveHandler();\n    mouseInteractionHandler();\n    scrollHandler();\n    viewportResizeHandler();\n    inputHandler();\n    typingHandler();\n    mediaInteractionHandler();\n    styleSheetObserver();\n    adoptedStyleSheetObserver();\n    styleDeclarationObserver();\n    fontObserver();\n    selectionObserver();\n    customElementObserver();\n    mediaDeviceChangeHandler();\n    pluginHandlers.forEach((h) => h());\n  });\n}\n\ntype CSSGroupingProp =\n  | \"CSSGroupingRule\"\n  | \"CSSMediaRule\"\n  | \"CSSSupportsRule\"\n  | \"CSSConditionRule\";\n\nfunction hasNestedCSSRule(prop: CSSGroupingProp): boolean {\n  return typeof window[prop] !== \"undefined\";\n}\n\nfunction canMonkeyPatchNestedCSSRule(prop: CSSGroupingProp): boolean {\n  return Boolean(\n    typeof window[prop] !== \"undefined\" &&\n      // 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 &&\n      \"insertRule\" in window[prop].prototype &&\n      \"deleteRule\" in window[prop].prototype,\n  );\n}\n", "/*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    }\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, i, 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 (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 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};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n", "import type { CanvasArg, IWindow } from '@sailfish-rrweb/types';\nimport { encode } from 'base64-arraybuffer';\n\n// TODO: unify with `replay/webgl.ts`\ntype CanvasVarMap = Map<string, unknown[]>;\nconst canvasVarMap: Map<RenderingContext, CanvasVarMap> = new Map();\nexport function variableListFor(ctx: RenderingContext, ctor: string) {\n  let contextMap = canvasVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = new Map();\n    canvasVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  return contextMap.get(ctor) as unknown[];\n}\n\nexport const saveWebGLVar = (\n  value: unknown,\n  win: IWindow,\n  ctx: RenderingContext,\n): number | void => {\n  if (\n    !value ||\n    !(isInstanceOfWebGLObject(value, win) || typeof value === 'object')\n  )\n    return;\n\n  const name = value.constructor.name;\n  const list = variableListFor(ctx, name);\n  let index = list.indexOf(value);\n\n  if (index === -1) {\n    index = list.length;\n    list.push(value);\n  }\n  return index;\n};\n\n// from webgl-recorder: https://github.com/evanw/webgl-recorder/blob/bef0e65596e981ee382126587e2dcbe0fc7748e2/webgl-recorder.js#L50-L77\nexport function serializeArg(\n  value: unknown,\n  win: IWindow,\n  ctx: RenderingContext,\n): CanvasArg {\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 (\n    value instanceof Float32Array ||\n    value instanceof Float64Array ||\n    value instanceof Int32Array ||\n    value instanceof Uint32Array ||\n    value instanceof Uint8Array ||\n    value instanceof Uint16Array ||\n    value instanceof Int16Array ||\n    value instanceof Int8Array ||\n    value instanceof Uint8ClampedArray\n  ) {\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 as 'ArrayBuffer';\n    const base64 = encode(value);\n\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    // TODO: move `toDataURL` to web worker if possible\n    const src = value.toDataURL(); // heavy on large canvas\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 (value instanceof Blob) {\n    //   const name = value.constructor.name;\n    //   return {\n    //     rr_type: name,\n    //     data: [serializeArg(await value.arrayBuffer(), win, ctx)],\n    //     type: value.type,\n    //   };\n  } else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n    const name = value.constructor.name;\n    const index = saveWebGLVar(value, win, ctx) as number;\n\n    return {\n      rr_type: name,\n      index: index,\n    };\n  }\n\n  return value as unknown as CanvasArg;\n}\n\nexport const serializeArgs = (\n  args: Array<unknown>,\n  win: IWindow,\n  ctx: RenderingContext,\n) => {\n  return args.map((arg) => serializeArg(arg, win, ctx));\n};\n\nexport const isInstanceOfWebGLObject = (\n  value: unknown,\n  win: IWindow,\n): value is\n  | WebGLActiveInfo\n  | WebGLBuffer\n  | WebGLFramebuffer\n  | WebGLProgram\n  | WebGLRenderbuffer\n  | WebGLShader\n  | WebGLShaderPrecisionFormat\n  | WebGLTexture\n  | WebGLUniformLocation\n  | WebGLVertexArrayObject => {\n  const webGLConstructorNames: string[] = [\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: string) => typeof win[name as keyof Window] === 'function',\n  );\n  return Boolean(\n    supportedWebGLConstructorNames.find(\n      (name: string) => value instanceof win[name as keyof Window],\n    ),\n  );\n};\n", "import {\n  CanvasContext,\n  type IWindow,\n  type blockClass,\n  type canvasManagerMutationCallback,\n  type listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { hookSetter, isBlocked, patch } from '../../../utils';\nimport { serializeArgs } from './serialize-args';\n\nexport default function initCanvas2DMutationObserver(\n  cb: canvasManagerMutationCallback,\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n  const props2D = Object.getOwnPropertyNames(\n    win.CanvasRenderingContext2D.prototype,\n  );\n  for (const prop of props2D) {\n    try {\n      if (\n        typeof win.CanvasRenderingContext2D.prototype[\n          prop as keyof CanvasRenderingContext2D\n        ] !== 'function'\n      ) {\n        continue;\n      }\n      const restoreHandler = patch(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        function (\n          original: (\n            this: CanvasRenderingContext2D,\n            ...args: unknown[]\n          ) => void,\n        ) {\n          return function (\n            this: CanvasRenderingContext2D,\n            ...args: Array<unknown>\n          ) {\n            if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n              // Using setTimeout as toDataURL can be heavy\n              // and we'd rather not block the main thread\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<CanvasRenderingContext2D>(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        {\n          set(v) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n            cb(this.canvas, {\n              type: CanvasContext['2D'],\n              property: prop,\n              args: [v],\n              setter: true,\n            });\n          },\n        },\n      );\n      handlers.push(hookHandler);\n    }\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "import type { ICanvas } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  blockClass,\n  IWindow,\n  listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { isBlocked, patch } from '../../../utils';\n\nfunction getNormalizedContextName(contextType: string) {\n  return contextType === 'experimental-webgl' ? 'webgl' : contextType;\n}\n\nexport default function initCanvasContextObserver(\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  setPreserveDrawingBufferToTrue: boolean,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n  try {\n    const restoreHandler = patch(\n      win.HTMLCanvasElement.prototype,\n      'getContext',\n      function (\n        original: (\n          this: ICanvas | HTMLCanvasElement,\n          contextType: string,\n          ...args: Array<unknown>\n        ) => void,\n      ) {\n        return function (\n          this: ICanvas | HTMLCanvasElement,\n          contextType: string,\n          ...args: Array<unknown>\n        ) {\n          if (!isBlocked(this, blockClass, blockSelector, true)) {\n            const ctxName = getNormalizedContextName(contextType);\n            if (!('__context' in this)) (this as ICanvas).__context = ctxName;\n\n            if (\n              setPreserveDrawingBufferToTrue &&\n              ['webgl', 'webgl2'].includes(ctxName)\n            ) {\n              if (args[0] && typeof args[0] === 'object') {\n                const contextAttributes = args[0] as WebGLContextAttributes;\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}\n", "import {\n  CanvasContext,\n  type IWindow,\n  type blockClass,\n  type canvasManagerMutationCallback,\n  type canvasMutationWithType,\n  type listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { hookSetter, isBlocked, patch } from '../../../utils';\nimport { saveWebGLVar, serializeArgs } from './serialize-args';\n\nfunction patchGLPrototype(\n  prototype: WebGLRenderingContext | WebGL2RenderingContext,\n  type: CanvasContext,\n  cb: canvasManagerMutationCallback,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  win: IWindow,\n): listenerHandler[] {\n  const handlers: listenerHandler[] = [];\n\n  const props = Object.getOwnPropertyNames(prototype);\n\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      // skip read only propery/functions\n      continue;\n    }\n    try {\n      if (typeof prototype[prop as keyof typeof prototype] !== 'function') {\n        continue;\n      }\n      const restoreHandler = patch(\n        prototype,\n        prop,\n        function (\n          original: (this: typeof prototype, ...args: Array<unknown>) => void,\n        ) {\n          return function (this: typeof prototype, ...args: Array<unknown>) {\n            const result = original.apply(this, args);\n            saveWebGLVar(result, win, this);\n            if (\n              'tagName' in this.canvas &&\n              !isBlocked(this.canvas, blockClass, blockSelector, true)\n            ) {\n              const recordArgs = serializeArgs(args, win, this);\n              const mutation: canvasMutationWithType = {\n                type,\n                property: prop,\n                args: recordArgs,\n              };\n              // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n              cb(this.canvas, mutation);\n            }\n\n            return result;\n          };\n        },\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter<typeof prototype>(prototype, prop, {\n        set(v) {\n          // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n          cb(this.canvas as HTMLCanvasElement, {\n            type,\n            property: prop,\n            args: [v],\n            setter: true,\n          });\n        },\n      });\n      handlers.push(hookHandler);\n    }\n  }\n\n  return handlers;\n}\n\nexport default function initCanvasWebGLMutationObserver(\n  cb: canvasManagerMutationCallback,\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n\n  handlers.push(\n    ...patchGLPrototype(\n      win.WebGLRenderingContext.prototype,\n      CanvasContext.WebGL,\n      cb,\n      blockClass,\n      blockSelector,\n      win,\n    ),\n  );\n\n  if (typeof win.WebGL2RenderingContext !== 'undefined') {\n    handlers.push(\n      ...patchGLPrototype(\n        win.WebGL2RenderingContext.prototype,\n        CanvasContext.WebGL2,\n        cb,\n        blockClass,\n        blockSelector,\n        win,\n      ),\n    );\n  }\n\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "import type {\n  DataURLOptions,\n  ICanvas,\n  Mirror,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  CanvasArg,\n  IWindow,\n  blockClass,\n  canvasManagerMutationCallback,\n  canvasMutationCallback,\n  canvasMutationCommand,\n  canvasMutationWithType,\n  listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { CanvasContext } from '@sailfish-rrweb/types';\nimport { isBlocked } from '../../../utils';\nimport type { ImageBitmapDataURLRequestWorker } from '../../workers/image-bitmap-data-url-worker';\nimport ImageBitmapDataURLWorker from '../../workers/image-bitmap-data-url-worker?worker&inline';\nimport initCanvas2DMutationObserver from './2d';\nimport initCanvasContextObserver from './canvas';\nimport initCanvasWebGLMutationObserver from './webgl';\n\nexport type RafStamps = { latestId: number; invokeId: number | null };\n\ntype pendingCanvasMutationsMap = Map<\n  HTMLCanvasElement,\n  canvasMutationWithType[]\n>;\n\nexport class CanvasManager {\n  private pendingCanvasMutations: pendingCanvasMutationsMap = new Map();\n  private rafStamps: RafStamps = { latestId: 0, invokeId: null };\n  private mirror: Mirror;\n\n  private mutationCb: canvasMutationCallback;\n  private resetObservers?: listenerHandler;\n  private frozen = false;\n  private locked = false;\n\n  public reset() {\n    this.pendingCanvasMutations.clear();\n    this.resetObservers && this.resetObservers();\n  }\n\n  public freeze() {\n    this.frozen = true;\n  }\n\n  public unfreeze() {\n    this.frozen = false;\n  }\n\n  public lock() {\n    this.locked = true;\n  }\n\n  public unlock() {\n    this.locked = false;\n  }\n\n  constructor(options: {\n    recordCanvas: boolean;\n    mutationCb: canvasMutationCallback;\n    win: IWindow;\n    blockClass: blockClass;\n    blockSelector: string | null;\n    mirror: Mirror;\n    sampling?: 'all' | number;\n    dataURLOptions: DataURLOptions;\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\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\n  private processMutation: canvasManagerMutationCallback = (\n    target,\n    mutation,\n  ) => {\n    const newFrame =\n      this.rafStamps.invokeId &&\n      this.rafStamps.latestId !== this.rafStamps.invokeId;\n    if (newFrame || !this.rafStamps.invokeId)\n      this.rafStamps.invokeId = this.rafStamps.latestId;\n\n    if (!this.pendingCanvasMutations.has(target)) {\n      this.pendingCanvasMutations.set(target, []);\n    }\n\n    this.pendingCanvasMutations.get(target)!.push(mutation);\n  };\n\n  private initCanvasFPSObserver(\n    fps: number,\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n    options: {\n      dataURLOptions: DataURLOptions;\n    },\n  ) {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      true,\n    );\n    const snapshotInProgressMap: Map<number, boolean> = new Map();\n    const worker =\n      new ImageBitmapDataURLWorker() as ImageBitmapDataURLRequestWorker;\n    worker.onmessage = (e) => {\n      const { id } = e.data;\n      snapshotInProgressMap.set(id, false);\n\n      if (!('base64' in e.data)) return;\n\n      const { base64, type, width, height } = e.data;\n      this.mutationCb({\n        id,\n        type: CanvasContext['2D'],\n        commands: [\n          {\n            property: 'clearRect', // wipe canvas\n            args: [0, 0, width, height],\n          },\n          {\n            property: 'drawImage', // 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              } as CanvasArg,\n              0,\n              0,\n            ],\n          },\n        ],\n      });\n    };\n\n    const timeBetweenSnapshots = 1000 / fps;\n    let lastSnapshotTime = 0;\n    let rafId: number;\n\n    const getCanvas = (): HTMLCanvasElement[] => {\n      const matchedCanvas: HTMLCanvasElement[] = [];\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\n    const takeCanvasSnapshots = (timestamp: DOMHighResTimeStamp) => {\n      if (\n        lastSnapshotTime &&\n        timestamp - lastSnapshotTime < timeBetweenSnapshots\n      ) {\n        rafId = requestAnimationFrame(takeCanvasSnapshots);\n        return;\n      }\n      lastSnapshotTime = timestamp;\n\n      getCanvas()\n        // eslint-disable-next-line @typescript-eslint/no-misused-promises\n        .forEach(async (canvas: HTMLCanvasElement) => {\n          const id = this.mirror.getId(canvas);\n          if (snapshotInProgressMap.get(id)) return;\n\n          // The browser throws if the canvas is 0 in size\n          // Uncaught (in promise) DOMException: Failed to execute 'createImageBitmap' on 'Window': The source image width is 0.\n          // Assuming the same happens with height\n          if (canvas.width === 0 || canvas.height === 0) return;\n\n          snapshotInProgressMap.set(id, true);\n          if (['webgl', 'webgl2'].includes((canvas as ICanvas).__context)) {\n            // if the canvas hasn't been modified recently,\n            // its contents won't be in memory and `createImageBitmap`\n            // will return a transparent imageBitmap\n\n            const context = canvas.getContext((canvas as ICanvas).__context) as\n              | WebGLRenderingContext\n              | WebGL2RenderingContext\n              | null;\n            if (\n              context?.getContextAttributes()?.preserveDrawingBuffer === false\n            ) {\n              // Hack to load canvas back into memory so `createImageBitmap` can grab it's contents.\n              // Context: https://twitter.com/Juice10/status/1499775271758704643\n              // Preferably we set `preserveDrawingBuffer` to true, but that's not always possible,\n              // especially when canvas is loaded before rrweb.\n              // This hack can wipe the background color of the canvas in the (unlikely) event that\n              // the canvas background was changed but clear was not called directly afterwards.\n              // Example of this hack having negative side effect: https://visgl.github.io/react-map-gl/examples/layers\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\n    rafId = requestAnimationFrame(takeCanvasSnapshots);\n\n    this.resetObservers = () => {\n      canvasContextReset();\n      cancelAnimationFrame(rafId);\n    };\n  }\n\n  private initCanvasMutationObserver(\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n  ): void {\n    this.startRAFTimestamping();\n    this.startPendingCanvasMutationFlusher();\n\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\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n    );\n\n    this.resetObservers = () => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    };\n  }\n\n  private startPendingCanvasMutationFlusher() {\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  private startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp: DOMHighResTimeStamp) => {\n      this.rafStamps.latestId = timestamp;\n      requestAnimationFrame(setLatestRAFTimestamp);\n    };\n    requestAnimationFrame(setLatestRAFTimestamp);\n  }\n\n  flushPendingCanvasMutations() {\n    this.pendingCanvasMutations.forEach(\n      (_values: canvasMutationCommand[], canvas: HTMLCanvasElement) => {\n        const id = this.mirror.getId(canvas);\n        this.flushPendingCanvasMutationFor(canvas, id);\n      },\n    );\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  flushPendingCanvasMutationFor(canvas: HTMLCanvasElement, id: number) {\n    if (this.frozen || this.locked) {\n      return;\n    }\n\n    const valuesWithType = this.pendingCanvasMutations.get(canvas);\n    if (!valuesWithType || id === -1) return;\n\n    const values = valuesWithType.map((value) => {\n      const { type, ...rest } = value;\n      return rest;\n    });\n    const { type } = valuesWithType[0];\n\n    this.mutationCb({ id, type, commands: values });\n\n    this.pendingCanvasMutations.delete(canvas);\n  }\n}\n", "import type MutationBuffer from './mutation';\n\n/**\n * Keeps a log of nodes that could show up in multiple mutation buffer but shouldn't be handled twice.\n */\nexport default class ProcessedNodeManager {\n  private nodeMap: WeakMap<Node, Set<MutationBuffer>> = new WeakMap();\n\n  private active = false;\n\n  public inOtherBuffer(node: Node, thisBuffer: MutationBuffer) {\n    const buffers = this.nodeMap.get(node);\n    return (\n      buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer)\n    );\n  }\n\n  public add(node: Node, buffer: MutationBuffer) {\n    if (!this.active) {\n      this.active = true;\n      requestAnimationFrame(() => {\n        this.nodeMap = new WeakMap();\n        this.active = false;\n      });\n    }\n    this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n  }\n\n  public destroy() {\n    // cleanup no longer needed\n  }\n}\n", "import type { Mirror } from '@sailfish-rrweb/rrweb-snapshot';\nimport { isNativeShadowDom } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  SamplingStrategy,\n  mutationCallBack,\n  scrollCallback,\n} from '@sailfish-rrweb/types';\nimport type { MutationBufferParam } from '../types';\nimport { inDom, patch } from '../utils';\nimport {\n  initAdoptedStyleSheetObserver,\n  initMutationObserver,\n  initScrollObserver,\n} from './observer';\n\ntype BypassOptions = Omit<\n  MutationBufferParam,\n  'doc' | 'mutationCb' | 'mirror' | 'shadowDomManager'\n> & {\n  sampling: SamplingStrategy;\n};\n\nexport class ShadowDomManager {\n  private shadowDoms = new WeakSet<ShadowRoot>();\n  private mutationCb: mutationCallBack;\n  private scrollCb: scrollCallback;\n  private bypassOptions: BypassOptions;\n  private mirror: Mirror;\n  private restoreHandlers: (() => void)[] = [];\n\n  constructor(options: {\n    mutationCb: mutationCallBack;\n    scrollCb: scrollCallback;\n    bypassOptions: BypassOptions;\n    mirror: Mirror;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.scrollCb = options.scrollCb;\n    this.bypassOptions = options.bypassOptions;\n    this.mirror = options.mirror;\n\n    this.init();\n  }\n\n  public init() {\n    this.reset();\n    // Patch 'attachShadow' to observe newly added shadow doms.\n    this.patchAttachShadow(Element, document);\n  }\n\n  public addShadowRoot(shadowRoot: ShadowRoot, doc: Document) {\n    if (!isNativeShadowDom(shadowRoot)) return;\n    if (this.shadowDoms.has(shadowRoot)) return;\n    this.shadowDoms.add(shadowRoot);\n    const observer = initMutationObserver(\n      {\n        ...this.bypassOptions,\n        doc,\n        mutationCb: this.mutationCb,\n        mirror: this.mirror,\n        shadowDomManager: this,\n      },\n      shadowRoot,\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: shadowRoot as unknown as Document,\n        mirror: this.mirror,\n      }),\n    );\n    // Defer this to avoid adoptedStyleSheet events being created before the full snapshot is created or attachShadow action is recorded.\n    setTimeout(() => {\n      if (\n        shadowRoot.adoptedStyleSheets &&\n        shadowRoot.adoptedStyleSheets.length > 0\n      )\n        this.bypassOptions.stylesheetManager.adoptStyleSheets(\n          shadowRoot.adoptedStyleSheets,\n          this.mirror.getId(shadowRoot.host),\n        );\n      this.restoreHandlers.push(\n        initAdoptedStyleSheetObserver(\n          {\n            mirror: this.mirror,\n            stylesheetManager: this.bypassOptions.stylesheetManager,\n          },\n          shadowRoot,\n        ),\n      );\n    }, 0);\n  }\n\n  /**\n   * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n   */\n  public observeAttachShadow(iframeElement: HTMLIFrameElement) {\n    if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n\n    this.patchAttachShadow(\n      (\n        iframeElement.contentWindow as Window & {\n          Element: { prototype: Element };\n        }\n      ).Element,\n      iframeElement.contentDocument,\n    );\n  }\n\n  /**\n   * Patch 'attachShadow' to observe newly added shadow doms.\n   */\n  private patchAttachShadow(\n    element: {\n      prototype: Element;\n    },\n    doc: Document,\n  ) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const manager = this;\n    this.restoreHandlers.push(\n      patch(\n        element.prototype,\n        'attachShadow',\n        function (original: (init: ShadowRootInit) => ShadowRoot) {\n          return function (this: Element, option: ShadowRootInit) {\n            const shadowRoot = original.call(this, option);\n            // For the shadow dom elements in the document, monitor their dom mutations.\n            // For shadow dom elements that aren't in the document yet,\n            // we start monitoring them once their shadow dom host is appended to the document.\n            if (this.shadowRoot && inDom(this))\n              manager.addShadowRoot(this.shadowRoot, doc);\n            return shadowRoot;\n          };\n        },\n      ),\n    );\n  }\n\n  public reset() {\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e) {\n        //\n      }\n    });\n    this.restoreHandlers = [];\n    this.shadowDoms = new WeakSet();\n  }\n}\n", "import type {\n  CorruptedRuleInfo,\n  elementNode,\n  serializedNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport { stringifyRule } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  adoptedStyleSheetCallback,\n  adoptedStyleSheetParam,\n  attributeMutation,\n  mutationCallBack,\n} from '@sailfish-rrweb/types';\nimport { StyleSheetMirror } from '../utils';\n\nexport class StylesheetManager {\n  private trackedLinkElements: WeakSet<HTMLLinkElement> = new WeakSet();\n  private mutationCb: mutationCallBack;\n  private adoptedStyleSheetCb: adoptedStyleSheetCallback;\n  public styleMirror = new StyleSheetMirror();\n  public corruptedRules: CorruptedRuleInfo[] = [];\n\n  constructor(options: {\n    mutationCb: mutationCallBack;\n    adoptedStyleSheetCb: adoptedStyleSheetCallback;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n  }\n\n  public attachLinkElement(\n    linkEl: HTMLLinkElement,\n    childSn: serializedNodeWithId,\n  ) {\n    if ('_cssText' in (childSn as elementNode).attributes)\n      this.mutationCb({\n        adds: [],\n        removes: [],\n        texts: [],\n        attributes: [\n          {\n            id: childSn.id,\n            attributes: (childSn as elementNode)\n              .attributes as attributeMutation['attributes'],\n          },\n        ],\n      });\n\n    this.trackLinkElement(linkEl);\n  }\n\n  public trackLinkElement(linkEl: HTMLLinkElement) {\n    if (this.trackedLinkElements.has(linkEl)) return;\n\n    this.trackedLinkElements.add(linkEl);\n    this.trackStylesheetInLinkElement(linkEl);\n  }\n\n  public adoptStyleSheets(\n    sheets: CSSStyleSheet[] | readonly CSSStyleSheet[],\n    hostId: number,\n  ) {\n    if (sheets.length === 0) return;\n    const adoptedStyleSheetData: adoptedStyleSheetParam = {\n      id: hostId,\n      styleIds: [] as number[],\n    };\n    const styles: NonNullable<adoptedStyleSheetParam['styles']> = [];\n    for (const sheet of sheets) {\n      let styleId;\n      if (!this.styleMirror.has(sheet)) {\n        styleId = this.styleMirror.add(sheet);\n        styles.push({\n          styleId,\n          rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\n            rule: stringifyRule(r),\n            index,\n          })),\n        });\n      } else styleId = this.styleMirror.getId(sheet);\n      adoptedStyleSheetData.styleIds.push(styleId);\n    }\n    if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n    this.adoptedStyleSheetCb(adoptedStyleSheetData);\n  }\n\n  public setCorruptedRules(rules: CorruptedRuleInfo[]) {\n    this.corruptedRules = rules;\n  }\n\n  public reset() {\n    this.styleMirror.reset();\n    this.trackedLinkElements = new WeakSet();\n    this.corruptedRules = [];\n  }\n\n  // TODO: take snapshot on stylesheet reload by applying event listener\n  private trackStylesheetInLinkElement(_linkEl: HTMLLinkElement) {\n    // linkEl.addEventListener('load', () => {\n    //   // re-loaded, maybe take another snapshot?\n    // });\n  }\n}\n", "import {\n  createMirror,\n  snapshot,\n  type CorruptedRuleInfo,\n  type MaskInputOptions,\n  type SlimDOMOptions,\n} from \"@sailfish-rrweb/rrweb-snapshot\";\nimport {\n  EventType,\n  IncrementalSource,\n  type adoptedStyleSheetParam,\n  type canvasMutationParam,\n  type eventWithTime,\n  type eventWithoutTime,\n  type listenerHandler,\n  type mutationCallbackParam,\n  type scrollCallback,\n} from \"@sailfish-rrweb/types\";\nimport type {\n  CrossOriginIframeMessageEventContent,\n  recordOptions,\n} from \"../types\";\nimport {\n  getWindowHeight,\n  getWindowScroll,\n  getWindowWidth,\n  hasShadowRoot,\n  isSerializedIframe,\n  isSerializedStylesheet,\n  nowTimestamp,\n  on,\n  polyfill,\n} from \"../utils\";\nimport {\n  callbackWrapper,\n  registerErrorHandler,\n  unregisterErrorHandler,\n} from \"./error-handler\";\nimport { IframeManager } from \"./iframe-manager\";\nimport { initObservers, mutationBuffers } from \"./observer\";\nimport { CanvasManager } from \"./observers/canvas/canvas-manager\";\nimport ProcessedNodeManager from \"./processed-node-manager\";\nimport { ShadowDomManager } from \"./shadow-dom-manager\";\nimport { StylesheetManager } from \"./stylesheet-manager\";\n\nlet wrappedEmit!: (e: eventWithoutTime, isCheckout?: boolean) => void;\n\nlet takeFullSnapshot!: (isCheckout?: boolean) => void;\nlet canvasManager!: CanvasManager;\nlet recording = false;\n\n// Multiple tools (i.e. MooTools, Prototype.js) override Array.from and drop support for the 2nd parameter\n// Try to pull a clean implementation from a newly created iframe\ntry {\n  if (Array.from([1], (x) => x * 2)[0] !== 2) {\n    const cleanFrame = document.createElement(\"iframe\");\n    document.body.appendChild(cleanFrame);\n    // eslint-disable-next-line @typescript-eslint/unbound-method -- Array.from is static and doesn't rely on binding\n    Array.from = cleanFrame.contentWindow?.Array.from || Array.from;\n    document.body.removeChild(cleanFrame);\n  }\n} catch (err) {\n  console.debug(\"Unable to override Array.from\", err);\n}\n\nconst mirror = createMirror();\nfunction record<T = eventWithTime>(\n  options: recordOptions<T> = {},\n): listenerHandler | undefined {\n  const {\n    emit,\n    checkoutEveryNms,\n    checkoutEveryNth,\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    ignoreClass = \"rr-ignore\",\n    ignoreSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    maskAllInputs,\n    maskInputOptions: _maskInputOptions,\n    slimDOMOptions: _slimDOMOptions,\n    maskInputFn,\n    maskTextFn,\n    hooks,\n    packFn,\n    sampling = {},\n    dataURLOptions = {},\n    mousemoveWait,\n    recordDOM = true,\n    recordCanvas = false,\n    recordCrossOriginIframes = false,\n    recordAfter = options.recordAfter === \"DOMContentLoaded\"\n      ? options.recordAfter\n      : \"load\",\n    userTriggeredOnInput = false,\n    collectFonts = false,\n    inlineImages = false,\n    plugins,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = new Set([]),\n    errorHandler,\n  } = options;\n\n\n  registerErrorHandler(errorHandler);\n\n  const inEmittingFrame = recordCrossOriginIframes\n    ? window.parent === window\n    : true;\n\n  let passEmitsToParent = false;\n  if (!inEmittingFrame) {\n    try {\n      // throws if parent is cross-origin\n      if (window.parent.document) {\n        passEmitsToParent = false; // if parent is same origin we collect iframe events from the parent\n      }\n    } catch (e) {\n      passEmitsToParent = true;\n    }\n  }\n\n  // runtime checks for user options\n  if (inEmittingFrame && !emit) {\n    throw new Error(\"emit function is required\");\n  }\n  if (!inEmittingFrame && !passEmitsToParent) {\n    return () => {\n      /* no-op since in this case we don't need to record anything from this frame in particular */\n    };\n  }\n  // move departed options to new options\n  if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n    sampling.mousemove = mousemoveWait;\n  }\n\n  // reset mirror in case `record` this was called earlier\n  mirror.reset();\n\n  const maskInputOptions: MaskInputOptions =\n    maskAllInputs === true\n      ? {\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        }\n      : _maskInputOptions !== undefined\n      ? _maskInputOptions\n      : { password: true };\n\n  const slimDOMOptions: SlimDOMOptions =\n    _slimDOMOptions === true || _slimDOMOptions === \"all\"\n      ? {\n          script: true,\n          comment: true,\n          headFavicon: true,\n          headWhitespace: true,\n          headMetaSocial: true,\n          headMetaRobots: true,\n          headMetaHttpEquiv: true,\n          headMetaVerification: true,\n          // the following are off for slimDOMOptions === true,\n          // as they destroy some (hidden) info:\n          headMetaAuthorship: _slimDOMOptions === \"all\",\n          headMetaDescKeywords: _slimDOMOptions === \"all\",\n          headTitleMutations: _slimDOMOptions === \"all\",\n        }\n      : _slimDOMOptions\n      ? _slimDOMOptions\n      : {};\n\n  polyfill();\n\n  let lastFullSnapshotEvent: eventWithTime;\n  let incrementalSnapshotCount = 0;\n\n  const eventProcessor = (e: eventWithTime): T => {\n    for (const plugin of plugins || []) {\n      if (plugin.eventProcessor) {\n        e = plugin.eventProcessor(e);\n      }\n    }\n    if (\n      packFn &&\n      // Disable packing events which will be emitted to parent frames.\n      !passEmitsToParent\n    ) {\n      e = packFn(e) as unknown as eventWithTime;\n    }\n    return e as unknown as T;\n  };\n  wrappedEmit = (r: eventWithoutTime, isCheckout?: boolean) => {\n    const e = r as eventWithTime;\n    e.timestamp = nowTimestamp();\n\n    if (\n      mutationBuffers[0]?.isFrozen() &&\n      e.type !== EventType.FullSnapshot &&\n      !(\n        e.type === EventType.IncrementalSnapshot &&\n        e.data.source === IncrementalSource.Mutation\n      )\n    ) {\n      // we've got a user initiated event so first we need to apply\n      // all DOM changes that have been buffering during paused state\n      mutationBuffers.forEach((buf) => buf.unfreeze());\n    }\n\n    if (inEmittingFrame) {\n      emit?.(eventProcessor(e), isCheckout);\n    } else if (passEmitsToParent) {\n      const message: CrossOriginIframeMessageEventContent<T> = {\n        type: \"@sailfish-rrweb/rrweb\",\n        event: eventProcessor(e),\n        origin: window.location.origin,\n        isCheckout,\n      };\n      window.parent.postMessage(message, \"*\");\n    }\n\n    if (e.type === EventType.FullSnapshot) {\n      lastFullSnapshotEvent = e;\n      incrementalSnapshotCount = 0;\n    } else if (e.type === EventType.IncrementalSnapshot) {\n      // attach iframe should be considered as full snapshot\n      if (\n        e.data.source === IncrementalSource.Mutation &&\n        e.data.isAttachIframe\n      ) {\n        return;\n      }\n      incrementalSnapshotCount++;\n      const exceedCount =\n        checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n      const exceedTime =\n        checkoutEveryNms &&\n        e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n      if (exceedCount || exceedTime) {\n        takeFullSnapshot(true);\n      }\n    }\n  };\n\n  const wrappedMutationEmit = (m: mutationCallbackParam) => {\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Mutation,\n        ...m,\n      },\n    });\n  };\n  const wrappedScrollEmit: scrollCallback = (p) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Scroll,\n        ...p,\n      },\n    });\n  const wrappedCanvasMutationEmit = (p: canvasMutationParam) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.CanvasMutation,\n        ...p,\n      },\n    });\n\n  const wrappedAdoptedStyleSheetEmit = (a: adoptedStyleSheetParam) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.AdoptedStyleSheet,\n        ...a,\n      },\n    });\n\n  const stylesheetManager = new StylesheetManager({\n    mutationCb: wrappedMutationEmit,\n    adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\n  });\n\n  const iframeManager = new IframeManager({\n    mirror,\n    mutationCb: wrappedMutationEmit,\n    stylesheetManager: stylesheetManager,\n    recordCrossOriginIframes,\n    wrappedEmit,\n  });\n\n  /**\n   * Exposes mirror to the plugins\n   */\n  for (const plugin of plugins || []) {\n    if (plugin.getMirror)\n      plugin.getMirror({\n        nodeMirror: mirror,\n        crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n        crossOriginIframeStyleMirror:\n          iframeManager.crossOriginIframeStyleMirror,\n      });\n  }\n\n  const processedNodeManager = new ProcessedNodeManager();\n\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\n  const shadowDomManager = new ShadowDomManager({\n    mutationCb: wrappedMutationEmit,\n    scrollCb: wrappedScrollEmit,\n    bypassOptions: {\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskInputOptions,\n      dataURLOptions,\n      maskTextFn,\n      maskInputFn,\n      recordCanvas,\n      inlineImages,\n      sampling,\n      slimDOMOptions,\n      iframeManager,\n      stylesheetManager,\n      canvasManager,\n      keepIframeSrcFn,\n      processedNodeManager,\n    },\n    mirror,\n  });\n\n  takeFullSnapshot = (isCheckout = false) => {\n    if (!recordDOM) {\n      return;\n    }\n    wrappedEmit(\n      {\n        type: EventType.Meta,\n        data: {\n          href: window.location.href,\n          width: getWindowWidth(),\n          height: getWindowHeight(),\n        },\n      },\n      isCheckout,\n    );\n\n    // When we take a full snapshot, old tracked StyleSheets need to be removed.\n    stylesheetManager.reset();\n\n    shadowDomManager.init();\n\n    mutationBuffers.forEach((buf) => buf.lock()); // don't allow any mirror modifications during snapshotting\n    const corruptedRules: CorruptedRuleInfo[] = [];\n    const node = snapshot(document, {\n      mirror,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskAllInputs: maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOM: slimDOMOptions,\n      dataURLOptions,\n      recordCanvas,\n      inlineImages,\n      corruptedRules,\n      onSerialize: (n) => {\n        if (isSerializedIframe(n, mirror)) {\n          iframeManager.addIframe(n as HTMLIFrameElement);\n        }\n        if (isSerializedStylesheet(n, mirror)) {\n          stylesheetManager.trackLinkElement(n as HTMLLinkElement);\n        }\n        if (hasShadowRoot(n)) {\n          shadowDomManager.addShadowRoot(n.shadowRoot, document);\n        }\n      },\n      onIframeLoad: (iframe, childSn) => {\n        iframeManager.attachIframe(iframe, childSn);\n        shadowDomManager.observeAttachShadow(iframe);\n      },\n      onStylesheetLoad: (linkEl, childSn) => {\n        stylesheetManager.attachLinkElement(linkEl, childSn);\n      },\n      keepIframeSrcFn,\n    });\n\n    if (!node) {\n      return console.warn(\"Failed to snapshot the document\");\n    }\n\n    // Store corrupted rules for use during incremental snapshots.\n    stylesheetManager.setCorruptedRules(corruptedRules);\n\n    wrappedEmit(\n      {\n        type: EventType.FullSnapshot,\n        data: {\n          node,\n          initialOffset: getWindowScroll(window),\n        },\n      },\n      isCheckout,\n    );\n    mutationBuffers.forEach((buf) => buf.unlock()); // generate & emit any mutations that happened during snapshotting, as can now apply against the newly built mirror\n\n    // Some old browsers don't support adoptedStyleSheets.\n    if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n      stylesheetManager.adoptStyleSheets(\n        document.adoptedStyleSheets,\n        mirror.getId(document),\n      );\n  };\n\n  try {\n    const handlers: listenerHandler[] = [];\n\n    const observe = (doc: Document) => {\n      return callbackWrapper(initObservers)(\n        {\n          mutationCb: wrappedMutationEmit,\n          mousemoveCb: (positions, source) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source,\n                positions,\n              },\n            }),\n          mouseInteractionCb: (d) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.MouseInteraction,\n                ...d,\n              },\n            }),\n          scrollCb: wrappedScrollEmit,\n          viewportResizeCb: (d) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.ViewportResize,\n                ...d,\n              },\n            }),\n          inputCb: (v) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Input,\n                ...v,\n              },\n            }),\n          mediaInteractionCb: (p) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.MediaInteraction,\n                ...p,\n              },\n            }),\n          styleSheetRuleCb: (r) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.StyleSheetRule,\n                ...r,\n              },\n            }),\n          styleDeclarationCb: (r) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.StyleDeclaration,\n                ...r,\n              },\n            }),\n          canvasMutationCb: wrappedCanvasMutationEmit,\n          fontCb: (p) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Font,\n                ...p,\n              },\n            }),\n          selectionCb: (p) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Selection,\n                ...p,\n              },\n            });\n          },\n          customElementCb: (c) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.CustomElement,\n                ...c,\n              },\n            });\n          },\n          typingCb: (v) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                ...v,\n              },\n            })\n          },\n\n          deviceChangeCb: (v) => {\n            wrappedEmit({\n              type: EventType.Device,\n              data: {\n                ...v,\n              },\n            })\n          },\n\n          blockClass,\n          ignoreClass,\n          ignoreSelector,\n          maskTextClass,\n          maskTextSelector,\n          maskInputOptions,\n          inlineStylesheet,\n          sampling,\n          recordDOM,\n          recordCanvas,\n          inlineImages,\n          userTriggeredOnInput,\n          collectFonts,\n          doc,\n          maskInputFn,\n          maskTextFn,\n          keepIframeSrcFn,\n          blockSelector,\n          slimDOMOptions,\n          dataURLOptions,\n          mirror,\n          iframeManager,\n          stylesheetManager,\n          shadowDomManager,\n          processedNodeManager,\n          canvasManager,\n          ignoreCSSAttributes,\n          plugins:\n            plugins\n              ?.filter((p) => p.observer)\n              ?.map((p) => ({\n                observer: p.observer!,\n                options: p.options,\n                callback: (payload: object) =>\n                  wrappedEmit({\n                    type: EventType.Plugin,\n                    data: {\n                      plugin: p.name,\n                      payload,\n                    },\n                  }),\n              })) || [],\n        },\n        hooks,\n      );\n    };\n\n    iframeManager.addLoadListener((iframeEl) => {\n      try {\n        handlers.push(observe(iframeEl.contentDocument!));\n      } catch (error) {\n        // TODO: handle internal error\n        console.warn(error);\n      }\n    });\n\n    const init = () => {\n      takeFullSnapshot();\n      handlers.push(observe(document));\n      recording = true;\n    };\n    if (\n      document.readyState === \"interactive\" ||\n      document.readyState === \"complete\"\n    ) {\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    // TODO: handle internal error\n    console.warn(error);\n  }\n}\n\nrecord.addCustomEvent = <T>(tag: string, payload: T) => {\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};\n\n\nrecord.addSailfishEvent = <T>(type: number, payload: T) => {\n  if (!recording) {\n    throw new Error(\"please add Sailfish event after start recording\");\n  }\n  const tag = \"sailfish-zendesk-test-tag\"\n  wrappedEmit({\n    /// type should come from arguments\n    type,\n    data: {\n      tag,\n      payload\n    },\n  });\n};\n\nrecord.freezePage = () => {\n  mutationBuffers.forEach((buf) => buf.freeze());\n};\n\nrecord.takeFullSnapshot = (isCheckout?: boolean) => {\n  if (!recording) {\n    throw new Error(\"please take full snapshot after start recording\");\n  }\n  takeFullSnapshot(isCheckout);\n};\n\nrecord.mirror = mirror;\n\nexport default record;\n", "var ps = Object.defineProperty;\nvar fs = (e, t, s) => t in e ? ps(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;\nvar c = (e, t, s) => fs(e, typeof t != \"symbol\" ? t + \"\" : t, s);\nvar ds = Object.defineProperty, ms = (e, t, s) => t in e ? ds(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s, ee = (e, t, s) => ms(e, typeof t != \"symbol\" ? t + \"\" : t, s), d = /* @__PURE__ */ ((e) => (e[e.Document = 0] = \"Document\", e[e.DocumentType = 1] = \"DocumentType\", e[e.Element = 2] = \"Element\", e[e.Text = 3] = \"Text\", e[e.CDATA = 4] = \"CDATA\", e[e.Comment = 5] = \"Comment\", e))(d || {});\nclass gs {\n  constructor() {\n    ee(this, \"idNodeMap\", /* @__PURE__ */ new Map()), ee(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(t) {\n    var s;\n    return t ? ((s = this.getMeta(t)) == null ? void 0 : s.id) ?? -1 : -1;\n  }\n  getNode(t) {\n    return this.idNodeMap.get(t) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(t) {\n    return this.nodeMetaMap.get(t) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(t) {\n    const s = this.getId(t);\n    this.idNodeMap.delete(s), t.childNodes && t.childNodes.forEach(\n      (r) => this.removeNodeFromMap(r)\n    );\n  }\n  has(t) {\n    return this.idNodeMap.has(t);\n  }\n  hasNode(t) {\n    return this.nodeMetaMap.has(t);\n  }\n  add(t, s) {\n    const r = s.id;\n    this.idNodeMap.set(r, t), this.nodeMetaMap.set(t, s);\n  }\n  replace(t, s) {\n    const r = this.getNode(t);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(s, i);\n    }\n    this.idNodeMap.set(t, s);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction ws() {\n  return new gs();\n}\nfunction ys(e) {\n  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nfunction bs(e) {\n  if (e.__esModule) return e;\n  var t = e.default;\n  if (typeof t == \"function\") {\n    var s = function r() {\n      return this instanceof r ? Reflect.construct(t, arguments, this.constructor) : t.apply(this, arguments);\n    };\n    s.prototype = t.prototype;\n  } else s = {};\n  return Object.defineProperty(s, \"__esModule\", { value: !0 }), Object.keys(e).forEach(function(r) {\n    var i = Object.getOwnPropertyDescriptor(e, r);\n    Object.defineProperty(s, r, i.get ? i : {\n      enumerable: !0,\n      get: function() {\n        return e[r];\n      }\n    });\n  }), s;\n}\nvar jt = { exports: {} }, f = String, Ee = function() {\n  return { isColorSupported: !1, reset: f, bold: f, dim: f, italic: f, underline: f, inverse: f, hidden: f, strikethrough: f, black: f, red: f, green: f, yellow: f, blue: f, magenta: f, cyan: f, white: f, gray: f, bgBlack: f, bgRed: f, bgGreen: f, bgYellow: f, bgBlue: f, bgMagenta: f, bgCyan: f, bgWhite: f, blackBright: f, redBright: f, greenBright: f, yellowBright: f, blueBright: f, magentaBright: f, cyanBright: f, whiteBright: f, bgBlackBright: f, bgRedBright: f, bgGreenBright: f, bgYellowBright: f, bgBlueBright: f, bgMagentaBright: f, bgCyanBright: f, bgWhiteBright: f };\n};\njt.exports = Ee();\njt.exports.createColors = Ee;\nvar Es = jt.exports;\nconst xs = {}, Cs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: xs\n}, Symbol.toStringTag, { value: \"Module\" })), S = /* @__PURE__ */ bs(Cs);\nlet se = Es, re = S, Ct = class xe extends Error {\n  constructor(t, s, r, i, n, a) {\n    super(t), this.name = \"CssSyntaxError\", this.reason = t, n && (this.file = n), i && (this.source = i), a && (this.plugin = a), typeof s < \"u\" && typeof r < \"u\" && (typeof s == \"number\" ? (this.line = s, this.column = r) : (this.line = s.line, this.column = s.column, this.endLine = r.line, this.endColumn = r.column)), this.setMessage(), Error.captureStackTrace && Error.captureStackTrace(this, xe);\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\", this.message += this.file ? this.file : \"<css input>\", typeof this.line < \"u\" && (this.message += \":\" + this.line + \":\" + this.column), this.message += \": \" + this.reason;\n  }\n  showSourceCode(t) {\n    if (!this.source) return \"\";\n    let s = this.source;\n    t == null && (t = se.isColorSupported);\n    let r = (u) => u, i = (u) => u, n = (u) => u;\n    if (t) {\n      let { bold: u, gray: m, red: w } = se.createColors(!0);\n      i = (E) => u(w(E)), r = (E) => m(E), re && (n = (E) => re(E));\n    }\n    let a = s.split(/\\r?\\n/), o = Math.max(this.line - 3, 0), l = Math.min(this.line + 2, a.length), p = String(l).length;\n    return a.slice(o, l).map((u, m) => {\n      let w = o + 1 + m, E = \" \" + (\" \" + w).slice(-p) + \" | \";\n      if (w === this.line) {\n        if (u.length > 160) {\n          let h = 20, v = Math.max(0, this.column - h), N = Math.max(\n            this.column + h,\n            this.endColumn + h\n          ), x = u.slice(v, N), b = r(E.replace(/\\d/g, \" \")) + u.slice(0, Math.min(this.column - 1, h - 1)).replace(/[^\\t]/g, \" \");\n          return i(\">\") + r(E) + n(x) + `\n ` + b + i(\"^\");\n        }\n        let D = r(E.replace(/\\d/g, \" \")) + u.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return i(\">\") + r(E) + n(u) + `\n ` + D + i(\"^\");\n      }\n      return \" \" + r(E) + n(u);\n    }).join(`\n`);\n  }\n  toString() {\n    let t = this.showSourceCode();\n    return t && (t = `\n\n` + t + `\n`), this.name + \": \" + this.message + t;\n  }\n};\nvar zt = Ct;\nCt.default = Ct;\nconst ie = {\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: !1\n};\nfunction Rs(e) {\n  return e[0].toUpperCase() + e.slice(1);\n}\nlet Rt = class {\n  constructor(e) {\n    this.builder = e;\n  }\n  atrule(e, t) {\n    let s = \"@\" + e.name, r = e.params ? this.rawValue(e, \"params\") : \"\";\n    if (typeof e.raws.afterName < \"u\" ? s += e.raws.afterName : r && (s += \" \"), e.nodes)\n      this.block(e, s + r);\n    else {\n      let i = (e.raws.between || \"\") + (t ? \";\" : \"\");\n      this.builder(s + r + i, e);\n    }\n  }\n  beforeAfter(e, t) {\n    let s;\n    e.type === \"decl\" ? s = this.raw(e, null, \"beforeDecl\") : e.type === \"comment\" ? s = this.raw(e, null, \"beforeComment\") : t === \"before\" ? s = this.raw(e, null, \"beforeRule\") : s = this.raw(e, null, \"beforeClose\");\n    let r = e.parent, i = 0;\n    for (; r && r.type !== \"root\"; )\n      i += 1, r = r.parent;\n    if (s.includes(`\n`)) {\n      let n = this.raw(e, null, \"indent\");\n      if (n.length)\n        for (let a = 0; a < i; a++) s += n;\n    }\n    return s;\n  }\n  block(e, t) {\n    let s = this.raw(e, \"between\", \"beforeOpen\");\n    this.builder(t + s + \"{\", e, \"start\");\n    let r;\n    e.nodes && e.nodes.length ? (this.body(e), r = this.raw(e, \"after\")) : r = this.raw(e, \"after\", \"emptyBody\"), r && this.builder(r), this.builder(\"}\", e, \"end\");\n  }\n  body(e) {\n    let t = e.nodes.length - 1;\n    for (; t > 0 && e.nodes[t].type === \"comment\"; )\n      t -= 1;\n    let s = this.raw(e, \"semicolon\");\n    for (let r = 0; r < e.nodes.length; r++) {\n      let i = e.nodes[r], n = this.raw(i, \"before\");\n      n && this.builder(n), this.stringify(i, t !== r || s);\n    }\n  }\n  comment(e) {\n    let t = this.raw(e, \"left\", \"commentLeft\"), s = this.raw(e, \"right\", \"commentRight\");\n    this.builder(\"/*\" + t + e.text + s + \"*/\", e);\n  }\n  decl(e, t) {\n    let s = this.raw(e, \"between\", \"colon\"), r = e.prop + s + this.rawValue(e, \"value\");\n    e.important && (r += e.raws.important || \" !important\"), t && (r += \";\"), this.builder(r, e);\n  }\n  document(e) {\n    this.body(e);\n  }\n  raw(e, t, s) {\n    let r;\n    if (s || (s = t), t && (r = e.raws[t], typeof r < \"u\"))\n      return r;\n    let i = e.parent;\n    if (s === \"before\" && (!i || i.type === \"root\" && i.first === e || i && i.type === \"document\"))\n      return \"\";\n    if (!i) return ie[s];\n    let n = e.root();\n    if (n.rawCache || (n.rawCache = {}), typeof n.rawCache[s] < \"u\")\n      return n.rawCache[s];\n    if (s === \"before\" || s === \"after\")\n      return this.beforeAfter(e, s);\n    {\n      let a = \"raw\" + Rs(s);\n      this[a] ? r = this[a](n, e) : n.walk((o) => {\n        if (r = o.raws[t], typeof r < \"u\") return !1;\n      });\n    }\n    return typeof r > \"u\" && (r = ie[s]), n.rawCache[s] = r, r;\n  }\n  rawBeforeClose(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length > 0 && typeof s.raws.after < \"u\")\n        return t = s.raws.after, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawBeforeComment(e, t) {\n    let s;\n    return e.walkComments((r) => {\n      if (typeof r.raws.before < \"u\")\n        return s = r.raws.before, s.includes(`\n`) && (s = s.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof s > \"u\" ? s = this.raw(t, null, \"beforeDecl\") : s && (s = s.replace(/\\S/g, \"\")), s;\n  }\n  rawBeforeDecl(e, t) {\n    let s;\n    return e.walkDecls((r) => {\n      if (typeof r.raws.before < \"u\")\n        return s = r.raws.before, s.includes(`\n`) && (s = s.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof s > \"u\" ? s = this.raw(t, null, \"beforeRule\") : s && (s = s.replace(/\\S/g, \"\")), s;\n  }\n  rawBeforeOpen(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.type !== \"decl\" && (t = s.raws.between, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawBeforeRule(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && (s.parent !== e || e.first !== s) && typeof s.raws.before < \"u\")\n        return t = s.raws.before, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawColon(e) {\n    let t;\n    return e.walkDecls((s) => {\n      if (typeof s.raws.between < \"u\")\n        return t = s.raws.between.replace(/[^\\s:]/g, \"\"), !1;\n    }), t;\n  }\n  rawEmptyBody(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length === 0 && (t = s.raws.after, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawIndent(e) {\n    if (e.raws.indent) return e.raws.indent;\n    let t;\n    return e.walk((s) => {\n      let r = s.parent;\n      if (r && r !== e && r.parent && r.parent === e && typeof s.raws.before < \"u\") {\n        let i = s.raws.before.split(`\n`);\n        return t = i[i.length - 1], t = t.replace(/\\S/g, \"\"), !1;\n      }\n    }), t;\n  }\n  rawSemicolon(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length && s.last.type === \"decl\" && (t = s.raws.semicolon, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawValue(e, t) {\n    let s = e[t], r = e.raws[t];\n    return r && r.value === s ? r.raw : s;\n  }\n  root(e) {\n    this.body(e), e.raws.after && this.builder(e.raws.after);\n  }\n  rule(e) {\n    this.block(e, this.rawValue(e, \"selector\")), e.raws.ownSemicolon && this.builder(e.raws.ownSemicolon, e, \"end\");\n  }\n  stringify(e, t) {\n    if (!this[e.type])\n      throw new Error(\n        \"Unknown AST node type \" + e.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    this[e.type](e, t);\n  }\n};\nvar Ce = Rt;\nRt.default = Rt;\nlet Ns = Ce;\nfunction Nt(e, t) {\n  new Ns(t).stringify(e);\n}\nvar ct = Nt;\nNt.default = Nt;\nvar Y = {};\nY.isClean = Symbol(\"isClean\");\nY.my = Symbol(\"my\");\nlet Ss = zt, vs = Ce, Os = ct, { isClean: F, my: Ds } = Y;\nfunction St(e, t) {\n  let s = new e.constructor();\n  for (let r in e) {\n    if (!Object.prototype.hasOwnProperty.call(e, r) || r === \"proxyCache\") continue;\n    let i = e[r], n = typeof i;\n    r === \"parent\" && n === \"object\" ? t && (s[r] = t) : r === \"source\" ? s[r] = i : Array.isArray(i) ? s[r] = i.map((a) => St(a, s)) : (n === \"object\" && i !== null && (i = St(i)), s[r] = i);\n  }\n  return s;\n}\nfunction B(e, t) {\n  if (t && typeof t.offset < \"u\")\n    return t.offset;\n  let s = 1, r = 1, i = 0;\n  for (let n = 0; n < e.length; n++) {\n    if (r === t.line && s === t.column) {\n      i = n;\n      break;\n    }\n    e[n] === `\n` ? (s = 1, r += 1) : s += 1;\n  }\n  return i;\n}\nlet vt = class {\n  get proxyOf() {\n    return this;\n  }\n  constructor(e = {}) {\n    this.raws = {}, this[F] = !1, this[Ds] = !0;\n    for (let t in e)\n      if (t === \"nodes\") {\n        this.nodes = [];\n        for (let s of e[t])\n          typeof s.clone == \"function\" ? this.append(s.clone()) : this.append(s);\n      } else\n        this[t] = e[t];\n  }\n  addToError(e) {\n    if (e.postcssNode = this, e.stack && this.source && /\\n\\s{4}at /.test(e.stack)) {\n      let t = this.source;\n      e.stack = e.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${t.input.from}:${t.start.line}:${t.start.column}$&`\n      );\n    }\n    return e;\n  }\n  after(e) {\n    return this.parent.insertAfter(this, e), this;\n  }\n  assign(e = {}) {\n    for (let t in e)\n      this[t] = e[t];\n    return this;\n  }\n  before(e) {\n    return this.parent.insertBefore(this, e), this;\n  }\n  cleanRaws(e) {\n    delete this.raws.before, delete this.raws.after, e || delete this.raws.between;\n  }\n  clone(e = {}) {\n    let t = St(this);\n    for (let s in e)\n      t[s] = e[s];\n    return t;\n  }\n  cloneAfter(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertAfter(this, t), t;\n  }\n  cloneBefore(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertBefore(this, t), t;\n  }\n  error(e, t = {}) {\n    if (this.source) {\n      let { end: s, start: r } = this.rangeBy(t);\n      return this.source.input.error(\n        e,\n        { column: r.column, line: r.line },\n        { column: s.column, line: s.line },\n        t\n      );\n    }\n    return new Ss(e);\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : t === \"root\" ? () => e.root().toProxy() : e[t];\n      },\n      set(e, t, s) {\n        return e[t] === s || (e[t] = s, (t === \"prop\" || t === \"value\" || t === \"name\" || t === \"params\" || t === \"important\" || /* c8 ignore next */\n        t === \"text\") && e.markDirty()), !0;\n      }\n    };\n  }\n  /* c8 ignore next 3 */\n  markClean() {\n    this[F] = !0;\n  }\n  markDirty() {\n    if (this[F]) {\n      this[F] = !1;\n      let e = this;\n      for (; e = e.parent; )\n        e[F] = !1;\n    }\n  }\n  next() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e + 1];\n  }\n  positionBy(e) {\n    let t = this.source.start;\n    if (e.index)\n      t = this.positionInside(e.index);\n    else if (e.word) {\n      let s = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, r = s.slice(\n        B(s, this.source.start),\n        B(s, this.source.end)\n      ).indexOf(e.word);\n      r !== -1 && (t = this.positionInside(r));\n    }\n    return t;\n  }\n  positionInside(e) {\n    let t = this.source.start.column, s = this.source.start.line, r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, i = B(r, this.source.start), n = i + e;\n    for (let a = i; a < n; a++)\n      r[a] === `\n` ? (t = 1, s += 1) : t += 1;\n    return { column: t, line: s };\n  }\n  prev() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e - 1];\n  }\n  rangeBy(e) {\n    let t = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    }, s = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: t.column + 1,\n      line: t.line\n    };\n    if (e.word) {\n      let r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, i = r.slice(\n        B(r, this.source.start),\n        B(r, this.source.end)\n      ).indexOf(e.word);\n      i !== -1 && (t = this.positionInside(i), s = this.positionInside(\n        i + e.word.length\n      ));\n    } else\n      e.start ? t = {\n        column: e.start.column,\n        line: e.start.line\n      } : e.index && (t = this.positionInside(e.index)), e.end ? s = {\n        column: e.end.column,\n        line: e.end.line\n      } : typeof e.endIndex == \"number\" ? s = this.positionInside(e.endIndex) : e.index && (s = this.positionInside(e.index + 1));\n    return (s.line < t.line || s.line === t.line && s.column <= t.column) && (s = { column: t.column + 1, line: t.line }), { end: s, start: t };\n  }\n  raw(e, t) {\n    return new vs().raw(this, e, t);\n  }\n  remove() {\n    return this.parent && this.parent.removeChild(this), this.parent = void 0, this;\n  }\n  replaceWith(...e) {\n    if (this.parent) {\n      let t = this, s = !1;\n      for (let r of e)\n        r === this ? s = !0 : s ? (this.parent.insertAfter(t, r), t = r) : this.parent.insertBefore(t, r);\n      s || this.remove();\n    }\n    return this;\n  }\n  root() {\n    let e = this;\n    for (; e.parent && e.parent.type !== \"document\"; )\n      e = e.parent;\n    return e;\n  }\n  toJSON(e, t) {\n    let s = {}, r = t == null;\n    t = t || /* @__PURE__ */ new Map();\n    let i = 0;\n    for (let n in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, n) || n === \"parent\" || n === \"proxyCache\") continue;\n      let a = this[n];\n      if (Array.isArray(a))\n        s[n] = a.map((o) => typeof o == \"object\" && o.toJSON ? o.toJSON(null, t) : o);\n      else if (typeof a == \"object\" && a.toJSON)\n        s[n] = a.toJSON(null, t);\n      else if (n === \"source\") {\n        let o = t.get(a.input);\n        o == null && (o = i, t.set(a.input, i), i++), s[n] = {\n          end: a.end,\n          inputId: o,\n          start: a.start\n        };\n      } else\n        s[n] = a;\n    }\n    return r && (s.inputs = [...t.keys()].map((n) => n.toJSON())), s;\n  }\n  toProxy() {\n    return this.proxyCache || (this.proxyCache = new Proxy(this, this.getProxyProcessor())), this.proxyCache;\n  }\n  toString(e = Os) {\n    e.stringify && (e = e.stringify);\n    let t = \"\";\n    return e(this, (s) => {\n      t += s;\n    }), t;\n  }\n  warn(e, t, s) {\n    let r = { node: this };\n    for (let i in s) r[i] = s[i];\n    return e.warn(t, r);\n  }\n};\nvar ht = vt;\nvt.default = vt;\nlet Ms = ht, Ot = class extends Ms {\n  constructor(e) {\n    super(e), this.type = \"comment\";\n  }\n};\nvar pt = Ot;\nOt.default = Ot;\nlet ks = ht, Dt = class extends ks {\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n  constructor(e) {\n    e && typeof e.value < \"u\" && typeof e.value != \"string\" && (e = { ...e, value: String(e.value) }), super(e), this.type = \"decl\";\n  }\n};\nvar ft = Dt;\nDt.default = Dt;\nlet Re = pt, Ne = ft, As = ht, { isClean: Se, my: ve } = Y, $t, Oe, De, Gt;\nfunction Me(e) {\n  return e.map((t) => (t.nodes && (t.nodes = Me(t.nodes)), delete t.source, t));\n}\nfunction ke(e) {\n  if (e[Se] = !1, e.proxyOf.nodes)\n    for (let t of e.proxyOf.nodes)\n      ke(t);\n}\nlet k = class Ae extends As {\n  get first() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n  append(...t) {\n    for (let s of t) {\n      let r = this.normalize(s, this.last);\n      for (let i of r) this.proxyOf.nodes.push(i);\n    }\n    return this.markDirty(), this;\n  }\n  cleanRaws(t) {\n    if (super.cleanRaws(t), this.nodes)\n      for (let s of this.nodes) s.cleanRaws(t);\n  }\n  each(t) {\n    if (!this.proxyOf.nodes) return;\n    let s = this.getIterator(), r, i;\n    for (; this.indexes[s] < this.proxyOf.nodes.length && (r = this.indexes[s], i = t(this.proxyOf.nodes[r], r), i !== !1); )\n      this.indexes[s] += 1;\n    return delete this.indexes[s], i;\n  }\n  every(t) {\n    return this.nodes.every(t);\n  }\n  getIterator() {\n    this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1;\n    let t = this.lastEach;\n    return this.indexes[t] = 0, t;\n  }\n  getProxyProcessor() {\n    return {\n      get(t, s) {\n        return s === \"proxyOf\" ? t : t[s] ? s === \"each\" || typeof s == \"string\" && s.startsWith(\"walk\") ? (...r) => t[s](\n          ...r.map((i) => typeof i == \"function\" ? (n, a) => i(n.toProxy(), a) : i)\n        ) : s === \"every\" || s === \"some\" ? (r) => t[s](\n          (i, ...n) => r(i.toProxy(), ...n)\n        ) : s === \"root\" ? () => t.root().toProxy() : s === \"nodes\" ? t.nodes.map((r) => r.toProxy()) : s === \"first\" || s === \"last\" ? t[s].toProxy() : t[s] : t[s];\n      },\n      set(t, s, r) {\n        return t[s] === r || (t[s] = r, (s === \"name\" || s === \"params\" || s === \"selector\") && t.markDirty()), !0;\n      }\n    };\n  }\n  index(t) {\n    return typeof t == \"number\" ? t : (t.proxyOf && (t = t.proxyOf), this.proxyOf.nodes.indexOf(t));\n  }\n  insertAfter(t, s) {\n    let r = this.index(t), i = this.normalize(s, this.proxyOf.nodes[r]).reverse();\n    r = this.index(t);\n    for (let a of i) this.proxyOf.nodes.splice(r + 1, 0, a);\n    let n;\n    for (let a in this.indexes)\n      n = this.indexes[a], r < n && (this.indexes[a] = n + i.length);\n    return this.markDirty(), this;\n  }\n  insertBefore(t, s) {\n    let r = this.index(t), i = r === 0 ? \"prepend\" : !1, n = this.normalize(\n      s,\n      this.proxyOf.nodes[r],\n      i\n    ).reverse();\n    r = this.index(t);\n    for (let o of n) this.proxyOf.nodes.splice(r, 0, o);\n    let a;\n    for (let o in this.indexes)\n      a = this.indexes[o], r <= a && (this.indexes[o] = a + n.length);\n    return this.markDirty(), this;\n  }\n  normalize(t, s) {\n    if (typeof t == \"string\")\n      t = Me(Oe(t).nodes);\n    else if (typeof t > \"u\")\n      t = [];\n    else if (Array.isArray(t)) {\n      t = t.slice(0);\n      for (let r of t)\n        r.parent && r.parent.removeChild(r, \"ignore\");\n    } else if (t.type === \"root\" && this.type !== \"document\") {\n      t = t.nodes.slice(0);\n      for (let r of t)\n        r.parent && r.parent.removeChild(r, \"ignore\");\n    } else if (t.type)\n      t = [t];\n    else if (t.prop) {\n      if (typeof t.value > \"u\")\n        throw new Error(\"Value field is missed in node creation\");\n      typeof t.value != \"string\" && (t.value = String(t.value)), t = [new Ne(t)];\n    } else if (t.selector || t.selectors)\n      t = [new Gt(t)];\n    else if (t.name)\n      t = [new $t(t)];\n    else if (t.text)\n      t = [new Re(t)];\n    else\n      throw new Error(\"Unknown node type in node creation\");\n    return t.map((r) => (r[ve] || Ae.rebuild(r), r = r.proxyOf, r.parent && r.parent.removeChild(r), r[Se] && ke(r), r.raws || (r.raws = {}), typeof r.raws.before > \"u\" && s && typeof s.raws.before < \"u\" && (r.raws.before = s.raws.before.replace(/\\S/g, \"\")), r.parent = this.proxyOf, r));\n  }\n  prepend(...t) {\n    t = t.reverse();\n    for (let s of t) {\n      let r = this.normalize(s, this.first, \"prepend\").reverse();\n      for (let i of r) this.proxyOf.nodes.unshift(i);\n      for (let i in this.indexes)\n        this.indexes[i] = this.indexes[i] + r.length;\n    }\n    return this.markDirty(), this;\n  }\n  push(t) {\n    return t.parent = this, this.proxyOf.nodes.push(t), this;\n  }\n  removeAll() {\n    for (let t of this.proxyOf.nodes) t.parent = void 0;\n    return this.proxyOf.nodes = [], this.markDirty(), this;\n  }\n  removeChild(t) {\n    t = this.index(t), this.proxyOf.nodes[t].parent = void 0, this.proxyOf.nodes.splice(t, 1);\n    let s;\n    for (let r in this.indexes)\n      s = this.indexes[r], s >= t && (this.indexes[r] = s - 1);\n    return this.markDirty(), this;\n  }\n  replaceValues(t, s, r) {\n    return r || (r = s, s = {}), this.walkDecls((i) => {\n      s.props && !s.props.includes(i.prop) || s.fast && !i.value.includes(s.fast) || (i.value = i.value.replace(t, r));\n    }), this.markDirty(), this;\n  }\n  some(t) {\n    return this.nodes.some(t);\n  }\n  walk(t) {\n    return this.each((s, r) => {\n      let i;\n      try {\n        i = t(s, r);\n      } catch (n) {\n        throw s.addToError(n);\n      }\n      return i !== !1 && s.walk && (i = s.walk(t)), i;\n    });\n  }\n  walkAtRules(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"atrule\" && t.test(r.name))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"atrule\" && r.name === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"atrule\")\n        return s(r, i);\n    }));\n  }\n  walkComments(t) {\n    return this.walk((s, r) => {\n      if (s.type === \"comment\")\n        return t(s, r);\n    });\n  }\n  walkDecls(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"decl\" && t.test(r.prop))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"decl\" && r.prop === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"decl\")\n        return s(r, i);\n    }));\n  }\n  walkRules(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"rule\" && t.test(r.selector))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"rule\" && r.selector === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"rule\")\n        return s(r, i);\n    }));\n  }\n};\nk.registerParse = (e) => {\n  Oe = e;\n};\nk.registerRule = (e) => {\n  Gt = e;\n};\nk.registerAtRule = (e) => {\n  $t = e;\n};\nk.registerRoot = (e) => {\n  De = e;\n};\nvar T = k;\nk.default = k;\nk.rebuild = (e) => {\n  e.type === \"atrule\" ? Object.setPrototypeOf(e, $t.prototype) : e.type === \"rule\" ? Object.setPrototypeOf(e, Gt.prototype) : e.type === \"decl\" ? Object.setPrototypeOf(e, Ne.prototype) : e.type === \"comment\" ? Object.setPrototypeOf(e, Re.prototype) : e.type === \"root\" && Object.setPrototypeOf(e, De.prototype), e[ve] = !0, e.nodes && e.nodes.forEach((t) => {\n    k.rebuild(t);\n  });\n};\nlet Te = T, ot = class extends Te {\n  constructor(e) {\n    super(e), this.type = \"atrule\";\n  }\n  append(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.append(...e);\n  }\n  prepend(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.prepend(...e);\n  }\n};\nvar Wt = ot;\not.default = ot;\nTe.registerAtRule(ot);\nlet Ts = T, Ie, _e, $ = class extends Ts {\n  constructor(e) {\n    super({ type: \"document\", ...e }), this.nodes || (this.nodes = []);\n  }\n  toResult(e = {}) {\n    return new Ie(new _e(), this, e).stringify();\n  }\n};\n$.registerLazyResult = (e) => {\n  Ie = e;\n};\n$.registerProcessor = (e) => {\n  _e = e;\n};\nvar Vt = $;\n$.default = $;\nlet Is = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\", _s = (e = 21) => {\n  let t = \"\", s = e | 0;\n  for (; s--; )\n    t += Is[Math.random() * 64 | 0];\n  return t;\n};\nvar Ps = { nanoid: _s };\nlet { existsSync: Us, readFileSync: Ls } = S, { dirname: yt, join: Fs } = S, { SourceMapConsumer: ne, SourceMapGenerator: oe } = S;\nfunction Bs(e) {\n  return Buffer ? Buffer.from(e, \"base64\").toString() : window.atob(e);\n}\nlet Mt = class {\n  constructor(e, t) {\n    if (t.map === !1) return;\n    this.loadAnnotation(e), this.inline = this.startWith(this.annotation, \"data:\");\n    let s = t.map ? t.map.prev : void 0, r = this.loadMap(t.from, s);\n    !this.mapFile && t.from && (this.mapFile = t.from), this.mapFile && (this.root = yt(this.mapFile)), r && (this.text = r);\n  }\n  consumer() {\n    return this.consumerCache || (this.consumerCache = new ne(this.text)), this.consumerCache;\n  }\n  decodeInline(e) {\n    let t = /^data:application\\/json;charset=utf-?8;base64,/, s = /^data:application\\/json;base64,/, r = /^data:application\\/json;charset=utf-?8,/, i = /^data:application\\/json,/, n = e.match(r) || e.match(i);\n    if (n)\n      return decodeURIComponent(e.substr(n[0].length));\n    let a = e.match(t) || e.match(s);\n    if (a)\n      return Bs(e.substr(a[0].length));\n    let o = e.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + o);\n  }\n  getAnnotationURL(e) {\n    return e.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(e) {\n    return typeof e != \"object\" ? !1 : typeof e.mappings == \"string\" || typeof e._mappings == \"string\" || Array.isArray(e.sections);\n  }\n  loadAnnotation(e) {\n    let t = e.match(/\\/\\*\\s*# sourceMappingURL=/g);\n    if (!t) return;\n    let s = e.lastIndexOf(t.pop()), r = e.indexOf(\"*/\", s);\n    s > -1 && r > -1 && (this.annotation = this.getAnnotationURL(e.substring(s, r)));\n  }\n  loadFile(e) {\n    if (this.root = yt(e), Us(e))\n      return this.mapFile = e, Ls(e, \"utf-8\").toString().trim();\n  }\n  loadMap(e, t) {\n    if (t === !1) return !1;\n    if (t) {\n      if (typeof t == \"string\")\n        return t;\n      if (typeof t == \"function\") {\n        let s = t(e);\n        if (s) {\n          let r = this.loadFile(s);\n          if (!r)\n            throw new Error(\n              \"Unable to load previous source map: \" + s.toString()\n            );\n          return r;\n        }\n      } else {\n        if (t instanceof ne)\n          return oe.fromSourceMap(t).toString();\n        if (t instanceof oe)\n          return t.toString();\n        if (this.isMap(t))\n          return JSON.stringify(t);\n        throw new Error(\n          \"Unsupported previous source map format: \" + t.toString()\n        );\n      }\n    } else {\n      if (this.inline)\n        return this.decodeInline(this.annotation);\n      if (this.annotation) {\n        let s = this.annotation;\n        return e && (s = Fs(yt(e), s)), this.loadFile(s);\n      }\n    }\n  }\n  startWith(e, t) {\n    return e ? e.substr(0, t.length) === t : !1;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar Pe = Mt;\nMt.default = Mt;\nlet { nanoid: js } = Ps, { isAbsolute: kt, resolve: At } = S, { SourceMapConsumer: zs, SourceMapGenerator: $s } = S, { fileURLToPath: ae, pathToFileURL: X } = S, le = zt, Gs = Pe, bt = S, Et = Symbol(\"fromOffsetCache\"), Ws = !!(zs && $s), ue = !!(At && kt), at = class {\n  get from() {\n    return this.file || this.id;\n  }\n  constructor(e, t = {}) {\n    if (e === null || typeof e > \"u\" || typeof e == \"object\" && !e.toString)\n      throw new Error(`PostCSS received ${e} instead of CSS string`);\n    if (this.css = e.toString(), this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\" ? (this.hasBOM = !0, this.css = this.css.slice(1)) : this.hasBOM = !1, this.document = this.css, t.document && (this.document = t.document.toString()), t.from && (!ue || /^\\w+:\\/\\//.test(t.from) || kt(t.from) ? this.file = t.from : this.file = At(t.from)), ue && Ws) {\n      let s = new Gs(this.css, t);\n      if (s.text) {\n        this.map = s;\n        let r = s.consumer().file;\n        !this.file && r && (this.file = this.mapResolve(r));\n      }\n    }\n    this.file || (this.id = \"<input css \" + js(6) + \">\"), this.map && (this.map.file = this.from);\n  }\n  error(e, t, s, r = {}) {\n    let i, n, a;\n    if (t && typeof t == \"object\") {\n      let l = t, p = s;\n      if (typeof l.offset == \"number\") {\n        let u = this.fromOffset(l.offset);\n        t = u.line, s = u.col;\n      } else\n        t = l.line, s = l.column;\n      if (typeof p.offset == \"number\") {\n        let u = this.fromOffset(p.offset);\n        n = u.line, i = u.col;\n      } else\n        n = p.line, i = p.column;\n    } else if (!s) {\n      let l = this.fromOffset(t);\n      t = l.line, s = l.col;\n    }\n    let o = this.origin(t, s, n, i);\n    return o ? a = new le(\n      e,\n      o.endLine === void 0 ? o.line : { column: o.column, line: o.line },\n      o.endLine === void 0 ? o.column : { column: o.endColumn, line: o.endLine },\n      o.source,\n      o.file,\n      r.plugin\n    ) : a = new le(\n      e,\n      n === void 0 ? t : { column: s, line: t },\n      n === void 0 ? s : { column: i, line: n },\n      this.css,\n      this.file,\n      r.plugin\n    ), a.input = { column: s, endColumn: i, endLine: n, line: t, source: this.css }, this.file && (X && (a.input.url = X(this.file).toString()), a.input.file = this.file), a;\n  }\n  fromOffset(e) {\n    let t, s;\n    if (this[Et])\n      s = this[Et];\n    else {\n      let i = this.css.split(`\n`);\n      s = new Array(i.length);\n      let n = 0;\n      for (let a = 0, o = i.length; a < o; a++)\n        s[a] = n, n += i[a].length + 1;\n      this[Et] = s;\n    }\n    t = s[s.length - 1];\n    let r = 0;\n    if (e >= t)\n      r = s.length - 1;\n    else {\n      let i = s.length - 2, n;\n      for (; r < i; )\n        if (n = r + (i - r >> 1), e < s[n])\n          i = n - 1;\n        else if (e >= s[n + 1])\n          r = n + 1;\n        else {\n          r = n;\n          break;\n        }\n    }\n    return {\n      col: e - s[r] + 1,\n      line: r + 1\n    };\n  }\n  mapResolve(e) {\n    return /^\\w+:\\/\\//.test(e) ? e : At(this.map.consumer().sourceRoot || this.map.root || \".\", e);\n  }\n  origin(e, t, s, r) {\n    if (!this.map) return !1;\n    let i = this.map.consumer(), n = i.originalPositionFor({ column: t, line: e });\n    if (!n.source) return !1;\n    let a;\n    typeof s == \"number\" && (a = i.originalPositionFor({ column: r, line: s }));\n    let o;\n    kt(n.source) ? o = X(n.source) : o = new URL(\n      n.source,\n      this.map.consumer().sourceRoot || X(this.map.mapFile)\n    );\n    let l = {\n      column: n.column,\n      endColumn: a && a.column,\n      endLine: a && a.line,\n      line: n.line,\n      url: o.toString()\n    };\n    if (o.protocol === \"file:\")\n      if (ae)\n        l.file = ae(o);\n      else\n        throw new Error(\"file: protocol is not available in this PostCSS build\");\n    let p = i.sourceContentFor(n.source);\n    return p && (l.source = p), l;\n  }\n  toJSON() {\n    let e = {};\n    for (let t of [\"hasBOM\", \"css\", \"file\", \"id\"])\n      this[t] != null && (e[t] = this[t]);\n    return this.map && (e.map = { ...this.map }, e.map.consumerCache && (e.map.consumerCache = void 0)), e;\n  }\n};\nvar dt = at;\nat.default = at;\nbt && bt.registerInput && bt.registerInput(at);\nlet Ue = T, Le, Fe, P = class extends Ue {\n  constructor(e) {\n    super(e), this.type = \"root\", this.nodes || (this.nodes = []);\n  }\n  normalize(e, t, s) {\n    let r = super.normalize(e);\n    if (t) {\n      if (s === \"prepend\")\n        this.nodes.length > 1 ? t.raws.before = this.nodes[1].raws.before : delete t.raws.before;\n      else if (this.first !== t)\n        for (let i of r)\n          i.raws.before = t.raws.before;\n    }\n    return r;\n  }\n  removeChild(e, t) {\n    let s = this.index(e);\n    return !t && s === 0 && this.nodes.length > 1 && (this.nodes[1].raws.before = this.nodes[s].raws.before), super.removeChild(e);\n  }\n  toResult(e = {}) {\n    return new Le(new Fe(), this, e).stringify();\n  }\n};\nP.registerLazyResult = (e) => {\n  Le = e;\n};\nP.registerProcessor = (e) => {\n  Fe = e;\n};\nvar J = P;\nP.default = P;\nUe.registerRoot(P);\nlet G = {\n  comma(e) {\n    return G.split(e, [\",\"], !0);\n  },\n  space(e) {\n    let t = [\" \", `\n`, \"\t\"];\n    return G.split(e, t);\n  },\n  split(e, t, s) {\n    let r = [], i = \"\", n = !1, a = 0, o = !1, l = \"\", p = !1;\n    for (let u of e)\n      p ? p = !1 : u === \"\\\\\" ? p = !0 : o ? u === l && (o = !1) : u === '\"' || u === \"'\" ? (o = !0, l = u) : u === \"(\" ? a += 1 : u === \")\" ? a > 0 && (a -= 1) : a === 0 && t.includes(u) && (n = !0), n ? (i !== \"\" && r.push(i.trim()), i = \"\", n = !1) : i += u;\n    return (s || i !== \"\") && r.push(i.trim()), r;\n  }\n};\nvar Be = G;\nG.default = G;\nlet je = T, Vs = Be, lt = class extends je {\n  get selectors() {\n    return Vs.comma(this.selector);\n  }\n  set selectors(e) {\n    let t = this.selector ? this.selector.match(/,\\s*/) : null, s = t ? t[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = e.join(s);\n  }\n  constructor(e) {\n    super(e), this.type = \"rule\", this.nodes || (this.nodes = []);\n  }\n};\nvar Yt = lt;\nlt.default = lt;\nje.registerRule(lt);\nlet Ys = Wt, Js = pt, Hs = ft, Xs = dt, Zs = Pe, qs = J, Ks = Yt;\nfunction W(e, t) {\n  if (Array.isArray(e)) return e.map((i) => W(i));\n  let { inputs: s, ...r } = e;\n  if (s) {\n    t = [];\n    for (let i of s) {\n      let n = { ...i, __proto__: Xs.prototype };\n      n.map && (n.map = {\n        ...n.map,\n        __proto__: Zs.prototype\n      }), t.push(n);\n    }\n  }\n  if (r.nodes && (r.nodes = e.nodes.map((i) => W(i, t))), r.source) {\n    let { inputId: i, ...n } = r.source;\n    r.source = n, i != null && (r.source.input = t[i]);\n  }\n  if (r.type === \"root\")\n    return new qs(r);\n  if (r.type === \"decl\")\n    return new Hs(r);\n  if (r.type === \"rule\")\n    return new Ks(r);\n  if (r.type === \"comment\")\n    return new Js(r);\n  if (r.type === \"atrule\")\n    return new Ys(r);\n  throw new Error(\"Unknown node type: \" + e.type);\n}\nvar Qs = W;\nW.default = W;\nlet { dirname: rt, relative: ze, resolve: $e, sep: Ge } = S, { SourceMapConsumer: We, SourceMapGenerator: it } = S, { pathToFileURL: ce } = S, tr = dt, er = !!(We && it), sr = !!(rt && $e && ze && Ge), rr = class {\n  constructor(e, t, s, r) {\n    this.stringify = e, this.mapOpts = s.map || {}, this.root = t, this.opts = s, this.css = r, this.originalCSS = r, this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute, this.memoizedFileURLs = /* @__PURE__ */ new Map(), this.memoizedPaths = /* @__PURE__ */ new Map(), this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let e;\n    this.isInline() ? e = \"data:application/json;base64,\" + this.toBase64(this.map.toString()) : typeof this.mapOpts.annotation == \"string\" ? e = this.mapOpts.annotation : typeof this.mapOpts.annotation == \"function\" ? e = this.mapOpts.annotation(this.opts.to, this.root) : e = this.outputFile() + \".map\";\n    let t = `\n`;\n    this.css.includes(`\\r\n`) && (t = `\\r\n`), this.css += t + \"/*# sourceMappingURL=\" + e + \" */\";\n  }\n  applyPrevMaps() {\n    for (let e of this.previous()) {\n      let t = this.toUrl(this.path(e.file)), s = e.root || rt(e.file), r;\n      this.mapOpts.sourcesContent === !1 ? (r = new We(e.text), r.sourcesContent && (r.sourcesContent = null)) : r = e.consumer(), this.map.applySourceMap(r, t, this.toUrl(this.path(s)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation !== !1)\n      if (this.root) {\n        let e;\n        for (let t = this.root.nodes.length - 1; t >= 0; t--)\n          e = this.root.nodes[t], e.type === \"comment\" && e.text.startsWith(\"# sourceMappingURL=\") && this.root.removeChild(t);\n      } else this.css && (this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\"));\n  }\n  generate() {\n    if (this.clearAnnotation(), sr && er && this.isMap())\n      return this.generateMap();\n    {\n      let e = \"\";\n      return this.stringify(this.root, (t) => {\n        e += t;\n      }), [e];\n    }\n  }\n  generateMap() {\n    if (this.root)\n      this.generateString();\n    else if (this.previous().length === 1) {\n      let e = this.previous()[0].consumer();\n      e.file = this.outputFile(), this.map = it.fromSourceMap(e, {\n        ignoreInvalidMapping: !0\n      });\n    } else\n      this.map = new it({\n        file: this.outputFile(),\n        ignoreInvalidMapping: !0\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    return this.isSourcesContent() && this.setSourcesContent(), this.root && this.previous().length > 0 && this.applyPrevMaps(), this.isAnnotation() && this.addAnnotation(), this.isInline() ? [this.css] : [this.css, this.map];\n  }\n  generateString() {\n    this.css = \"\", this.map = new it({\n      file: this.outputFile(),\n      ignoreInvalidMapping: !0\n    });\n    let e = 1, t = 1, s = \"<no source>\", r = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    }, i, n;\n    this.stringify(this.root, (a, o, l) => {\n      if (this.css += a, o && l !== \"end\" && (r.generated.line = e, r.generated.column = t - 1, o.source && o.source.start ? (r.source = this.sourcePath(o), r.original.line = o.source.start.line, r.original.column = o.source.start.column - 1, this.map.addMapping(r)) : (r.source = s, r.original.line = 1, r.original.column = 0, this.map.addMapping(r))), n = a.match(/\\n/g), n ? (e += n.length, i = a.lastIndexOf(`\n`), t = a.length - i) : t += a.length, o && l !== \"start\") {\n        let p = o.parent || { raws: {} };\n        (!(o.type === \"decl\" || o.type === \"atrule\" && !o.nodes) || o !== p.last || p.raws.semicolon) && (o.source && o.source.end ? (r.source = this.sourcePath(o), r.original.line = o.source.end.line, r.original.column = o.source.end.column - 1, r.generated.line = e, r.generated.column = t - 2, this.map.addMapping(r)) : (r.source = s, r.original.line = 1, r.original.column = 0, r.generated.line = e, r.generated.column = t - 1, this.map.addMapping(r)));\n      }\n    });\n  }\n  isAnnotation() {\n    return this.isInline() ? !0 : typeof this.mapOpts.annotation < \"u\" ? this.mapOpts.annotation : this.previous().length ? this.previous().some((e) => e.annotation) : !0;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline < \"u\")\n      return this.mapOpts.inline;\n    let e = this.mapOpts.annotation;\n    return typeof e < \"u\" && e !== !0 ? !1 : this.previous().length ? this.previous().some((t) => t.inline) : !0;\n  }\n  isMap() {\n    return typeof this.opts.map < \"u\" ? !!this.opts.map : this.previous().length > 0;\n  }\n  isSourcesContent() {\n    return typeof this.mapOpts.sourcesContent < \"u\" ? this.mapOpts.sourcesContent : this.previous().length ? this.previous().some((e) => e.withContent()) : !0;\n  }\n  outputFile() {\n    return this.opts.to ? this.path(this.opts.to) : this.opts.from ? this.path(this.opts.from) : \"to.css\";\n  }\n  path(e) {\n    if (this.mapOpts.absolute || e.charCodeAt(0) === 60 || /^\\w+:\\/\\//.test(e)) return e;\n    let t = this.memoizedPaths.get(e);\n    if (t) return t;\n    let s = this.opts.to ? rt(this.opts.to) : \".\";\n    typeof this.mapOpts.annotation == \"string\" && (s = rt($e(s, this.mapOpts.annotation)));\n    let r = ze(s, e);\n    return this.memoizedPaths.set(e, r), r;\n  }\n  previous() {\n    if (!this.previousMaps)\n      if (this.previousMaps = [], this.root)\n        this.root.walk((e) => {\n          if (e.source && e.source.input.map) {\n            let t = e.source.input.map;\n            this.previousMaps.includes(t) || this.previousMaps.push(t);\n          }\n        });\n      else {\n        let e = new tr(this.originalCSS, this.opts);\n        e.map && this.previousMaps.push(e.map);\n      }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let e = {};\n    if (this.root)\n      this.root.walk((t) => {\n        if (t.source) {\n          let s = t.source.input.from;\n          if (s && !e[s]) {\n            e[s] = !0;\n            let r = this.usesFileUrls ? this.toFileUrl(s) : this.toUrl(this.path(s));\n            this.map.setSourceContent(r, t.source.input.css);\n          }\n        }\n      });\n    else if (this.css) {\n      let t = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(t, this.css);\n    }\n  }\n  sourcePath(e) {\n    return this.mapOpts.from ? this.toUrl(this.mapOpts.from) : this.usesFileUrls ? this.toFileUrl(e.source.input.from) : this.toUrl(this.path(e.source.input.from));\n  }\n  toBase64(e) {\n    return Buffer ? Buffer.from(e).toString(\"base64\") : window.btoa(unescape(encodeURIComponent(e)));\n  }\n  toFileUrl(e) {\n    let t = this.memoizedFileURLs.get(e);\n    if (t) return t;\n    if (ce) {\n      let s = ce(e).toString();\n      return this.memoizedFileURLs.set(e, s), s;\n    } else\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n  }\n  toUrl(e) {\n    let t = this.memoizedURLs.get(e);\n    if (t) return t;\n    Ge === \"\\\\\" && (e = e.replace(/\\\\/g, \"/\"));\n    let s = encodeURI(e).replace(/[#?]/g, encodeURIComponent);\n    return this.memoizedURLs.set(e, s), s;\n  }\n};\nvar Ve = rr;\nconst xt = 39, he = 34, Z = 92, pe = 47, q = 10, j = 32, K = 12, Q = 9, tt = 13, ir = 91, nr = 93, or = 40, ar = 41, lr = 123, ur = 125, cr = 59, hr = 42, pr = 58, fr = 64, et = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g, st = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g, dr = /.[\\r\\n\"'(/\\\\]/, fe = /[\\da-f]/i;\nvar mr = function(e, t = {}) {\n  let s = e.css.valueOf(), r = t.ignoreErrors, i, n, a, o, l, p, u, m, w, E, D = s.length, h = 0, v = [], N = [];\n  function x() {\n    return h;\n  }\n  function b(I) {\n    throw e.error(\"Unclosed \" + I, h);\n  }\n  function M() {\n    return N.length === 0 && h >= D;\n  }\n  function gt(I) {\n    if (N.length) return N.pop();\n    if (h >= D) return;\n    let wt = I ? I.ignoreUnclosed : !1;\n    switch (i = s.charCodeAt(h), i) {\n      case q:\n      case j:\n      case Q:\n      case tt:\n      case K: {\n        o = h;\n        do\n          o += 1, i = s.charCodeAt(o);\n        while (i === j || i === q || i === Q || i === tt || i === K);\n        p = [\"space\", s.slice(h, o)], h = o - 1;\n        break;\n      }\n      case ir:\n      case nr:\n      case lr:\n      case ur:\n      case pr:\n      case cr:\n      case ar: {\n        let te = String.fromCharCode(i);\n        p = [te, te, h];\n        break;\n      }\n      case or: {\n        if (E = v.length ? v.pop()[1] : \"\", w = s.charCodeAt(h + 1), E === \"url\" && w !== xt && w !== he && w !== j && w !== q && w !== Q && w !== K && w !== tt) {\n          o = h;\n          do {\n            if (u = !1, o = s.indexOf(\")\", o + 1), o === -1)\n              if (r || wt) {\n                o = h;\n                break;\n              } else\n                b(\"bracket\");\n            for (m = o; s.charCodeAt(m - 1) === Z; )\n              m -= 1, u = !u;\n          } while (u);\n          p = [\"brackets\", s.slice(h, o + 1), h, o], h = o;\n        } else\n          o = s.indexOf(\")\", h + 1), n = s.slice(h, o + 1), o === -1 || dr.test(n) ? p = [\"(\", \"(\", h] : (p = [\"brackets\", n, h, o], h = o);\n        break;\n      }\n      case xt:\n      case he: {\n        l = i === xt ? \"'\" : '\"', o = h;\n        do {\n          if (u = !1, o = s.indexOf(l, o + 1), o === -1)\n            if (r || wt) {\n              o = h + 1;\n              break;\n            } else\n              b(\"string\");\n          for (m = o; s.charCodeAt(m - 1) === Z; )\n            m -= 1, u = !u;\n        } while (u);\n        p = [\"string\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      case fr: {\n        et.lastIndex = h + 1, et.test(s), et.lastIndex === 0 ? o = s.length - 1 : o = et.lastIndex - 2, p = [\"at-word\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      case Z: {\n        for (o = h, a = !0; s.charCodeAt(o + 1) === Z; )\n          o += 1, a = !a;\n        if (i = s.charCodeAt(o + 1), a && i !== pe && i !== j && i !== q && i !== Q && i !== tt && i !== K && (o += 1, fe.test(s.charAt(o)))) {\n          for (; fe.test(s.charAt(o + 1)); )\n            o += 1;\n          s.charCodeAt(o + 1) === j && (o += 1);\n        }\n        p = [\"word\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      default: {\n        i === pe && s.charCodeAt(h + 1) === hr ? (o = s.indexOf(\"*/\", h + 2) + 1, o === 0 && (r || wt ? o = s.length : b(\"comment\")), p = [\"comment\", s.slice(h, o + 1), h, o], h = o) : (st.lastIndex = h + 1, st.test(s), st.lastIndex === 0 ? o = s.length - 1 : o = st.lastIndex - 2, p = [\"word\", s.slice(h, o + 1), h, o], v.push(p), h = o);\n        break;\n      }\n    }\n    return h++, p;\n  }\n  function hs(I) {\n    N.push(I);\n  }\n  return {\n    back: hs,\n    endOfFile: M,\n    nextToken: gt,\n    position: x\n  };\n};\nlet gr = Wt, wr = pt, yr = ft, br = J, de = Yt, Er = mr;\nconst me = {\n  empty: !0,\n  space: !0\n};\nfunction xr(e) {\n  for (let t = e.length - 1; t >= 0; t--) {\n    let s = e[t], r = s[3] || s[2];\n    if (r) return r;\n  }\n}\nlet Cr = class {\n  constructor(e) {\n    this.input = e, this.root = new br(), this.current = this.root, this.spaces = \"\", this.semicolon = !1, this.createTokenizer(), this.root.source = { input: e, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(e) {\n    let t = new gr();\n    t.name = e[1].slice(1), t.name === \"\" && this.unnamedAtrule(t, e), this.init(t, e[2]);\n    let s, r, i, n = !1, a = !1, o = [], l = [];\n    for (; !this.tokenizer.endOfFile(); ) {\n      if (e = this.tokenizer.nextToken(), s = e[0], s === \"(\" || s === \"[\" ? l.push(s === \"(\" ? \")\" : \"]\") : s === \"{\" && l.length > 0 ? l.push(\"}\") : s === l[l.length - 1] && l.pop(), l.length === 0)\n        if (s === \";\") {\n          t.source.end = this.getPosition(e[2]), t.source.end.offset++, this.semicolon = !0;\n          break;\n        } else if (s === \"{\") {\n          a = !0;\n          break;\n        } else if (s === \"}\") {\n          if (o.length > 0) {\n            for (i = o.length - 1, r = o[i]; r && r[0] === \"space\"; )\n              r = o[--i];\n            r && (t.source.end = this.getPosition(r[3] || r[2]), t.source.end.offset++);\n          }\n          this.end(e);\n          break;\n        } else\n          o.push(e);\n      else\n        o.push(e);\n      if (this.tokenizer.endOfFile()) {\n        n = !0;\n        break;\n      }\n    }\n    t.raws.between = this.spacesAndCommentsFromEnd(o), o.length ? (t.raws.afterName = this.spacesAndCommentsFromStart(o), this.raw(t, \"params\", o), n && (e = o[o.length - 1], t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++, this.spaces = t.raws.between, t.raws.between = \"\")) : (t.raws.afterName = \"\", t.params = \"\"), a && (t.nodes = [], this.current = t);\n  }\n  checkMissedSemicolon(e) {\n    let t = this.colon(e);\n    if (t === !1) return;\n    let s = 0, r;\n    for (let i = t - 1; i >= 0 && (r = e[i], !(r[0] !== \"space\" && (s += 1, s === 2))); i--)\n      ;\n    throw this.input.error(\n      \"Missed semicolon\",\n      r[0] === \"word\" ? r[3] + 1 : r[2]\n    );\n  }\n  colon(e) {\n    let t = 0, s, r, i;\n    for (let [n, a] of e.entries()) {\n      if (r = a, i = r[0], i === \"(\" && (t += 1), i === \")\" && (t -= 1), t === 0 && i === \":\")\n        if (!s)\n          this.doubleColon(r);\n        else {\n          if (s[0] === \"word\" && s[1] === \"progid\")\n            continue;\n          return n;\n        }\n      s = r;\n    }\n    return !1;\n  }\n  comment(e) {\n    let t = new wr();\n    this.init(t, e[2]), t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++;\n    let s = e[1].slice(2, -2);\n    if (/^\\s*$/.test(s))\n      t.text = \"\", t.raws.left = s, t.raws.right = \"\";\n    else {\n      let r = s.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      t.text = r[2], t.raws.left = r[1], t.raws.right = r[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = Er(this.input);\n  }\n  decl(e, t) {\n    let s = new yr();\n    this.init(s, e[0][2]);\n    let r = e[e.length - 1];\n    for (r[0] === \";\" && (this.semicolon = !0, e.pop()), s.source.end = this.getPosition(\n      r[3] || r[2] || xr(e)\n    ), s.source.end.offset++; e[0][0] !== \"word\"; )\n      e.length === 1 && this.unknownWord(e), s.raws.before += e.shift()[1];\n    for (s.source.start = this.getPosition(e[0][2]), s.prop = \"\"; e.length; ) {\n      let o = e[0][0];\n      if (o === \":\" || o === \"space\" || o === \"comment\")\n        break;\n      s.prop += e.shift()[1];\n    }\n    s.raws.between = \"\";\n    let i;\n    for (; e.length; )\n      if (i = e.shift(), i[0] === \":\") {\n        s.raws.between += i[1];\n        break;\n      } else\n        i[0] === \"word\" && /\\w/.test(i[1]) && this.unknownWord([i]), s.raws.between += i[1];\n    (s.prop[0] === \"_\" || s.prop[0] === \"*\") && (s.raws.before += s.prop[0], s.prop = s.prop.slice(1));\n    let n = [], a;\n    for (; e.length && (a = e[0][0], !(a !== \"space\" && a !== \"comment\")); )\n      n.push(e.shift());\n    this.precheckMissedSemicolon(e);\n    for (let o = e.length - 1; o >= 0; o--) {\n      if (i = e[o], i[1].toLowerCase() === \"!important\") {\n        s.important = !0;\n        let l = this.stringFrom(e, o);\n        l = this.spacesFromEnd(e) + l, l !== \" !important\" && (s.raws.important = l);\n        break;\n      } else if (i[1].toLowerCase() === \"important\") {\n        let l = e.slice(0), p = \"\";\n        for (let u = o; u > 0; u--) {\n          let m = l[u][0];\n          if (p.trim().startsWith(\"!\") && m !== \"space\")\n            break;\n          p = l.pop()[1] + p;\n        }\n        p.trim().startsWith(\"!\") && (s.important = !0, s.raws.important = p, e = l);\n      }\n      if (i[0] !== \"space\" && i[0] !== \"comment\")\n        break;\n    }\n    e.some((o) => o[0] !== \"space\" && o[0] !== \"comment\") && (s.raws.between += n.map((o) => o[1]).join(\"\"), n = []), this.raw(s, \"value\", n.concat(e), t), s.value.includes(\":\") && !t && this.checkMissedSemicolon(e);\n  }\n  doubleColon(e) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: e[2] },\n      { offset: e[2] + e[1].length }\n    );\n  }\n  emptyRule(e) {\n    let t = new de();\n    this.init(t, e[2]), t.selector = \"\", t.raws.between = \"\", this.current = t;\n  }\n  end(e) {\n    this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.semicolon = !1, this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.spaces = \"\", this.current.parent ? (this.current.source.end = this.getPosition(e[2]), this.current.source.end.offset++, this.current = this.current.parent) : this.unexpectedClose(e);\n  }\n  endFile() {\n    this.current.parent && this.unclosedBlock(), this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(e) {\n    if (this.spaces += e[1], this.current.nodes) {\n      let t = this.current.nodes[this.current.nodes.length - 1];\n      t && t.type === \"rule\" && !t.raws.ownSemicolon && (t.raws.ownSemicolon = this.spaces, this.spaces = \"\", t.source.end = this.getPosition(e[2]), t.source.end.offset += t.raws.ownSemicolon.length);\n    }\n  }\n  // Helpers\n  getPosition(e) {\n    let t = this.input.fromOffset(e);\n    return {\n      column: t.col,\n      line: t.line,\n      offset: e\n    };\n  }\n  init(e, t) {\n    this.current.push(e), e.source = {\n      input: this.input,\n      start: this.getPosition(t)\n    }, e.raws.before = this.spaces, this.spaces = \"\", e.type !== \"comment\" && (this.semicolon = !1);\n  }\n  other(e) {\n    let t = !1, s = null, r = !1, i = null, n = [], a = e[1].startsWith(\"--\"), o = [], l = e;\n    for (; l; ) {\n      if (s = l[0], o.push(l), s === \"(\" || s === \"[\")\n        i || (i = l), n.push(s === \"(\" ? \")\" : \"]\");\n      else if (a && r && s === \"{\")\n        i || (i = l), n.push(\"}\");\n      else if (n.length === 0)\n        if (s === \";\")\n          if (r) {\n            this.decl(o, a);\n            return;\n          } else\n            break;\n        else if (s === \"{\") {\n          this.rule(o);\n          return;\n        } else if (s === \"}\") {\n          this.tokenizer.back(o.pop()), t = !0;\n          break;\n        } else s === \":\" && (r = !0);\n      else s === n[n.length - 1] && (n.pop(), n.length === 0 && (i = null));\n      l = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile() && (t = !0), n.length > 0 && this.unclosedBracket(i), t && r) {\n      if (!a)\n        for (; o.length && (l = o[o.length - 1][0], !(l !== \"space\" && l !== \"comment\")); )\n          this.tokenizer.back(o.pop());\n      this.decl(o, a);\n    } else\n      this.unknownWord(o);\n  }\n  parse() {\n    let e;\n    for (; !this.tokenizer.endOfFile(); )\n      switch (e = this.tokenizer.nextToken(), e[0]) {\n        case \"space\":\n          this.spaces += e[1];\n          break;\n        case \";\":\n          this.freeSemicolon(e);\n          break;\n        case \"}\":\n          this.end(e);\n          break;\n        case \"comment\":\n          this.comment(e);\n          break;\n        case \"at-word\":\n          this.atrule(e);\n          break;\n        case \"{\":\n          this.emptyRule(e);\n          break;\n        default:\n          this.other(e);\n          break;\n      }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(e, t, s, r) {\n    let i, n, a = s.length, o = \"\", l = !0, p, u;\n    for (let m = 0; m < a; m += 1)\n      i = s[m], n = i[0], n === \"space\" && m === a - 1 && !r ? l = !1 : n === \"comment\" ? (u = s[m - 1] ? s[m - 1][0] : \"empty\", p = s[m + 1] ? s[m + 1][0] : \"empty\", !me[u] && !me[p] ? o.slice(-1) === \",\" ? l = !1 : o += i[1] : l = !1) : o += i[1];\n    if (!l) {\n      let m = s.reduce((w, E) => w + E[1], \"\");\n      e.raws[t] = { raw: m, value: o };\n    }\n    e[t] = o;\n  }\n  rule(e) {\n    e.pop();\n    let t = new de();\n    this.init(t, e[0][2]), t.raws.between = this.spacesAndCommentsFromEnd(e), this.raw(t, \"selector\", e), this.current = t;\n  }\n  spacesAndCommentsFromEnd(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[e.length - 1][0], !(t !== \"space\" && t !== \"comment\")); )\n      s = e.pop()[1] + s;\n    return s;\n  }\n  // Errors\n  spacesAndCommentsFromStart(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[0][0], !(t !== \"space\" && t !== \"comment\")); )\n      s += e.shift()[1];\n    return s;\n  }\n  spacesFromEnd(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[e.length - 1][0], t === \"space\"); )\n      s = e.pop()[1] + s;\n    return s;\n  }\n  stringFrom(e, t) {\n    let s = \"\";\n    for (let r = t; r < e.length; r++)\n      s += e[r][1];\n    return e.splice(t, e.length - t), s;\n  }\n  unclosedBlock() {\n    let e = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", e.line, e.column);\n  }\n  unclosedBracket(e) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unexpectedClose(e) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unknownWord(e) {\n    throw this.input.error(\n      \"Unknown word \" + e[0][1],\n      { offset: e[0][2] },\n      { offset: e[0][2] + e[0][1].length }\n    );\n  }\n  unnamedAtrule(e, t) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: t[2] },\n      { offset: t[2] + t[1].length }\n    );\n  }\n};\nvar Rr = Cr;\nlet Nr = T, Sr = dt, vr = Rr;\nfunction ut(e, t) {\n  let s = new Sr(e, t), r = new vr(s);\n  try {\n    r.parse();\n  } catch (i) {\n    throw process.env.NODE_ENV !== \"production\" && i.name === \"CssSyntaxError\" && t && t.from && (/\\.scss$/i.test(t.from) ? i.message += `\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser` : /\\.sass/i.test(t.from) ? i.message += `\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser` : /\\.less$/i.test(t.from) && (i.message += `\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser`)), i;\n  }\n  return r.root;\n}\nvar Jt = ut;\nut.default = ut;\nNr.registerParse(ut);\nlet Tt = class {\n  constructor(e, t = {}) {\n    if (this.type = \"warning\", this.text = e, t.node && t.node.source) {\n      let s = t.node.rangeBy(t);\n      this.line = s.start.line, this.column = s.start.column, this.endLine = s.end.line, this.endColumn = s.end.column;\n    }\n    for (let s in t) this[s] = t[s];\n  }\n  toString() {\n    return this.node ? this.node.error(this.text, {\n      index: this.index,\n      plugin: this.plugin,\n      word: this.word\n    }).message : this.plugin ? this.plugin + \": \" + this.text : this.text;\n  }\n};\nvar Ye = Tt;\nTt.default = Tt;\nlet Or = Ye, It = class {\n  get content() {\n    return this.css;\n  }\n  constructor(e, t, s) {\n    this.processor = e, this.messages = [], this.root = t, this.opts = s, this.css = void 0, this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(e, t = {}) {\n    t.plugin || this.lastPlugin && this.lastPlugin.postcssPlugin && (t.plugin = this.lastPlugin.postcssPlugin);\n    let s = new Or(e, t);\n    return this.messages.push(s), s;\n  }\n  warnings() {\n    return this.messages.filter((e) => e.type === \"warning\");\n  }\n};\nvar Ht = It;\nIt.default = It;\nlet ge = {};\nvar Je = function(e) {\n  ge[e] || (ge[e] = !0, typeof console < \"u\" && console.warn && console.warn(e));\n};\nlet Dr = T, Mr = Vt, kr = Ve, Ar = Jt, we = Ht, Tr = J, Ir = ct, { isClean: O, my: _r } = Y, Pr = Je;\nconst Ur = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n}, Lr = {\n  AtRule: !0,\n  AtRuleExit: !0,\n  Comment: !0,\n  CommentExit: !0,\n  Declaration: !0,\n  DeclarationExit: !0,\n  Document: !0,\n  DocumentExit: !0,\n  Once: !0,\n  OnceExit: !0,\n  postcssPlugin: !0,\n  prepare: !0,\n  Root: !0,\n  RootExit: !0,\n  Rule: !0,\n  RuleExit: !0\n}, Fr = {\n  Once: !0,\n  postcssPlugin: !0,\n  prepare: !0\n}, U = 0;\nfunction z(e) {\n  return typeof e == \"object\" && typeof e.then == \"function\";\n}\nfunction He(e) {\n  let t = !1, s = Ur[e.type];\n  return e.type === \"decl\" ? t = e.prop.toLowerCase() : e.type === \"atrule\" && (t = e.name.toLowerCase()), t && e.append ? [\n    s,\n    s + \"-\" + t,\n    U,\n    s + \"Exit\",\n    s + \"Exit-\" + t\n  ] : t ? [s, s + \"-\" + t, s + \"Exit\", s + \"Exit-\" + t] : e.append ? [s, U, s + \"Exit\"] : [s, s + \"Exit\"];\n}\nfunction ye(e) {\n  let t;\n  return e.type === \"document\" ? t = [\"Document\", U, \"DocumentExit\"] : e.type === \"root\" ? t = [\"Root\", U, \"RootExit\"] : t = He(e), {\n    eventIndex: 0,\n    events: t,\n    iterator: 0,\n    node: e,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction _t(e) {\n  return e[O] = !1, e.nodes && e.nodes.forEach((t) => _t(t)), e;\n}\nlet Pt = {}, L = class Xe {\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(t, s, r) {\n    this.stringified = !1, this.processed = !1;\n    let i;\n    if (typeof s == \"object\" && s !== null && (s.type === \"root\" || s.type === \"document\"))\n      i = _t(s);\n    else if (s instanceof Xe || s instanceof we)\n      i = _t(s.root), s.map && (typeof r.map > \"u\" && (r.map = {}), r.map.inline || (r.map.inline = !1), r.map.prev = s.map);\n    else {\n      let n = Ar;\n      r.syntax && (n = r.syntax.parse), r.parser && (n = r.parser), n.parse && (n = n.parse);\n      try {\n        i = n(s, r);\n      } catch (a) {\n        this.processed = !0, this.error = a;\n      }\n      i && !i[_r] && Dr.rebuild(i);\n    }\n    this.result = new we(t, i, r), this.helpers = { ...Pt, postcss: Pt, result: this.result }, this.plugins = this.processor.plugins.map((n) => typeof n == \"object\" && n.prepare ? { ...n, ...n.prepare(this.result) } : n);\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : this.processed ? Promise.resolve(this.result) : (this.processing || (this.processing = this.runAsync()), this.processing);\n  }\n  catch(t) {\n    return this.async().catch(t);\n  }\n  finally(t) {\n    return this.async().then(t, t);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(t, s) {\n    let r = this.result.lastPlugin;\n    try {\n      if (s && s.addToError(t), this.error = t, t.name === \"CssSyntaxError\" && !t.plugin)\n        t.plugin = r.postcssPlugin, t.setMessage();\n      else if (r.postcssVersion && process.env.NODE_ENV !== \"production\") {\n        let i = r.postcssPlugin, n = r.postcssVersion, a = this.result.processor.version, o = n.split(\".\"), l = a.split(\".\");\n        (o[0] !== l[0] || parseInt(o[1]) > parseInt(l[1])) && console.error(\n          \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + a + \", but \" + i + \" uses \" + n + \". Perhaps this is the source of the error below.\"\n        );\n      }\n    } catch (i) {\n      console && console.error && console.error(i);\n    }\n    return t;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let t = (s, r, i) => {\n      this.listeners[r] || (this.listeners[r] = []), this.listeners[r].push([s, i]);\n    };\n    for (let s of this.plugins)\n      if (typeof s == \"object\")\n        for (let r in s) {\n          if (!Lr[r] && /^[A-Z]/.test(r))\n            throw new Error(\n              `Unknown event ${r} in ${s.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          if (!Fr[r])\n            if (typeof s[r] == \"object\")\n              for (let i in s[r])\n                i === \"*\" ? t(s, r, s[r][i]) : t(\n                  s,\n                  r + \"-\" + i.toLowerCase(),\n                  s[r][i]\n                );\n            else typeof s[r] == \"function\" && t(s, r, s[r]);\n        }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let t = 0; t < this.plugins.length; t++) {\n      let s = this.plugins[t], r = this.runOnRoot(s);\n      if (z(r))\n        try {\n          await r;\n        } catch (i) {\n          throw this.handleError(i);\n        }\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let t = this.result.root;\n      for (; !t[O]; ) {\n        t[O] = !0;\n        let s = [ye(t)];\n        for (; s.length > 0; ) {\n          let r = this.visitTick(s);\n          if (z(r))\n            try {\n              await r;\n            } catch (i) {\n              let n = s[s.length - 1].node;\n              throw this.handleError(i, n);\n            }\n        }\n      }\n      if (this.listeners.OnceExit)\n        for (let [s, r] of this.listeners.OnceExit) {\n          this.result.lastPlugin = s;\n          try {\n            if (t.type === \"document\") {\n              let i = t.nodes.map(\n                (n) => r(n, this.helpers)\n              );\n              await Promise.all(i);\n            } else\n              await r(t, this.helpers);\n          } catch (i) {\n            throw this.handleError(i);\n          }\n        }\n    }\n    return this.processed = !0, this.stringify();\n  }\n  runOnRoot(t) {\n    this.result.lastPlugin = t;\n    try {\n      if (typeof t == \"object\" && t.Once) {\n        if (this.result.root.type === \"document\") {\n          let s = this.result.root.nodes.map(\n            (r) => t.Once(r, this.helpers)\n          );\n          return z(s[0]) ? Promise.all(s) : s;\n        }\n        return t.Once(this.result.root, this.helpers);\n      } else if (typeof t == \"function\")\n        return t(this.result.root, this.result);\n    } catch (s) {\n      throw this.handleError(s);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = !0, this.sync();\n    let t = this.result.opts, s = Ir;\n    t.syntax && (s = t.syntax.stringify), t.stringifier && (s = t.stringifier), s.stringify && (s = s.stringify);\n    let r = new kr(s, this.result.root, this.result.opts).generate();\n    return this.result.css = r[0], this.result.map = r[1], this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    if (this.processed = !0, this.processing)\n      throw this.getAsyncError();\n    for (let t of this.plugins) {\n      let s = this.runOnRoot(t);\n      if (z(s))\n        throw this.getAsyncError();\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let t = this.result.root;\n      for (; !t[O]; )\n        t[O] = !0, this.walkSync(t);\n      if (this.listeners.OnceExit)\n        if (t.type === \"document\")\n          for (let s of t.nodes)\n            this.visitSync(this.listeners.OnceExit, s);\n        else\n          this.visitSync(this.listeners.OnceExit, t);\n    }\n    return this.result;\n  }\n  then(t, s) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this.opts || Pr(\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    )), this.async().then(t, s);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(t, s) {\n    for (let [r, i] of t) {\n      this.result.lastPlugin = r;\n      let n;\n      try {\n        n = i(s, this.helpers);\n      } catch (a) {\n        throw this.handleError(a, s.proxyOf);\n      }\n      if (s.type !== \"root\" && s.type !== \"document\" && !s.parent)\n        return !0;\n      if (z(n))\n        throw this.getAsyncError();\n    }\n  }\n  visitTick(t) {\n    let s = t[t.length - 1], { node: r, visitors: i } = s;\n    if (r.type !== \"root\" && r.type !== \"document\" && !r.parent) {\n      t.pop();\n      return;\n    }\n    if (i.length > 0 && s.visitorIndex < i.length) {\n      let [a, o] = i[s.visitorIndex];\n      s.visitorIndex += 1, s.visitorIndex === i.length && (s.visitors = [], s.visitorIndex = 0), this.result.lastPlugin = a;\n      try {\n        return o(r.toProxy(), this.helpers);\n      } catch (l) {\n        throw this.handleError(l, r);\n      }\n    }\n    if (s.iterator !== 0) {\n      let a = s.iterator, o;\n      for (; o = r.nodes[r.indexes[a]]; )\n        if (r.indexes[a] += 1, !o[O]) {\n          o[O] = !0, t.push(ye(o));\n          return;\n        }\n      s.iterator = 0, delete r.indexes[a];\n    }\n    let n = s.events;\n    for (; s.eventIndex < n.length; ) {\n      let a = n[s.eventIndex];\n      if (s.eventIndex += 1, a === U) {\n        r.nodes && r.nodes.length && (r[O] = !0, s.iterator = r.getIterator());\n        return;\n      } else if (this.listeners[a]) {\n        s.visitors = this.listeners[a];\n        return;\n      }\n    }\n    t.pop();\n  }\n  walkSync(t) {\n    t[O] = !0;\n    let s = He(t);\n    for (let r of s)\n      if (r === U)\n        t.nodes && t.each((i) => {\n          i[O] || this.walkSync(i);\n        });\n      else {\n        let i = this.listeners[r];\n        if (i && this.visitSync(i, t.toProxy()))\n          return;\n      }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n};\nL.registerPostcss = (e) => {\n  Pt = e;\n};\nvar Ze = L;\nL.default = L;\nTr.registerLazyResult(L);\nMr.registerLazyResult(L);\nlet Br = Ve, jr = Jt;\nconst zr = Ht;\nlet $r = ct, Gr = Je, Ut = class {\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    let e, t = jr;\n    try {\n      e = t(this._css, this._opts);\n    } catch (s) {\n      this.error = s;\n    }\n    if (this.error)\n      throw this.error;\n    return this._root = e, e;\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n  constructor(e, t, s) {\n    t = t.toString(), this.stringified = !1, this._processor = e, this._css = t, this._opts = s, this._map = void 0;\n    let r, i = $r;\n    this.result = new zr(this._processor, r, this._opts), this.result.css = t;\n    let n = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return n.root;\n      }\n    });\n    let a = new Br(i, r, this._opts, t);\n    if (a.isMap()) {\n      let [o, l] = a.generate();\n      o && (this.result.css = o), l && (this.result.map = l);\n    } else\n      a.clearAnnotation(), this.result.css = a.css;\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : Promise.resolve(this.result);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this._opts || Gr(\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    )), this.async().then(e, t);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n};\nvar Wr = Ut;\nUt.default = Ut;\nlet Vr = Vt, Yr = Ze, Jr = Wr, Hr = J, V = class {\n  constructor(e = []) {\n    this.version = \"8.5.3\", this.plugins = this.normalize(e);\n  }\n  normalize(e) {\n    let t = [];\n    for (let s of e)\n      if (s.postcss === !0 ? s = s() : s.postcss && (s = s.postcss), typeof s == \"object\" && Array.isArray(s.plugins))\n        t = t.concat(s.plugins);\n      else if (typeof s == \"object\" && s.postcssPlugin)\n        t.push(s);\n      else if (typeof s == \"function\")\n        t.push(s);\n      else if (typeof s == \"object\" && (s.parse || s.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      } else\n        throw new Error(s + \" is not a PostCSS plugin\");\n    return t;\n  }\n  process(e, t = {}) {\n    return !this.plugins.length && !t.parser && !t.stringifier && !t.syntax ? new Jr(this, e, t) : new Yr(this, e, t);\n  }\n  use(e) {\n    return this.plugins = this.plugins.concat(this.normalize([e])), this;\n  }\n};\nvar Xr = V;\nV.default = V;\nHr.registerProcessor(V);\nVr.registerProcessor(V);\nlet qe = Wt, Ke = pt, Zr = T, qr = zt, Qe = ft, ts = Vt, Kr = Qs, Qr = dt, ti = Ze, ei = Be, si = ht, ri = Jt, Xt = Xr, ii = Ht, es = J, ss = Yt, ni = ct, oi = Ye;\nfunction g(...e) {\n  return e.length === 1 && Array.isArray(e[0]) && (e = e[0]), new Xt(e);\n}\ng.plugin = function(e, t) {\n  let s = !1;\n  function r(...n) {\n    console && console.warn && !s && (s = !0, console.warn(\n      e + `: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`\n    ), process.env.LANG && process.env.LANG.startsWith(\"cn\") && console.warn(\n      e + `: 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226`\n    ));\n    let a = t(...n);\n    return a.postcssPlugin = e, a.postcssVersion = new Xt().version, a;\n  }\n  let i;\n  return Object.defineProperty(r, \"postcss\", {\n    get() {\n      return i || (i = r()), i;\n    }\n  }), r.process = function(n, a, o) {\n    return g([r(o)]).process(n, a);\n  }, r;\n};\ng.stringify = ni;\ng.parse = ri;\ng.fromJSON = Kr;\ng.list = ei;\ng.comment = (e) => new Ke(e);\ng.atRule = (e) => new qe(e);\ng.decl = (e) => new Qe(e);\ng.rule = (e) => new ss(e);\ng.root = (e) => new es(e);\ng.document = (e) => new ts(e);\ng.CssSyntaxError = qr;\ng.Declaration = Qe;\ng.Container = Zr;\ng.Processor = Xt;\ng.Document = ts;\ng.Comment = Ke;\ng.Warning = oi;\ng.AtRule = qe;\ng.Result = ii;\ng.Input = Qr;\ng.Rule = ss;\ng.Root = es;\ng.Node = si;\nti.registerPostcss(g);\nvar ai = g;\ng.default = g;\nconst y = /* @__PURE__ */ ys(ai);\ny.stringify;\ny.fromJSON;\ny.plugin;\ny.parse;\ny.list;\ny.document;\ny.comment;\ny.atRule;\ny.rule;\ny.decl;\ny.root;\ny.CssSyntaxError;\ny.Declaration;\ny.Container;\ny.Processor;\ny.Document;\ny.Comment;\ny.Warning;\ny.AtRule;\ny.Result;\ny.Input;\ny.Rule;\ny.Root;\ny.Node;\nfunction li(e) {\n  const t = {}, s = /;(?![^(]*\\))/g, r = /:(.+)/, i = /\\/\\*.*?\\*\\//g;\n  return e.replace(i, \"\").split(s).forEach(function(n) {\n    if (n) {\n      const a = n.split(r);\n      a.length > 1 && (t[Lt(a[0].trim())] = a[1].trim());\n    }\n  }), t;\n}\nfunction be(e) {\n  const t = [];\n  for (const s in e) {\n    const r = e[s];\n    if (typeof r != \"string\") continue;\n    const i = pi(s);\n    t.push(`${i}: ${r};`);\n  }\n  return t.join(\" \");\n}\nconst ui = /-([a-z])/g, ci = /^--[a-zA-Z0-9-]+$/, Lt = (e) => ci.test(e) ? e : e.replace(ui, (t, s) => s ? s.toUpperCase() : \"\"), hi = /\\B([A-Z])/g, pi = (e) => e.replace(hi, \"-$1\").toLowerCase();\nclass A {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  constructor(...t) {\n    c(this, \"parentElement\", null);\n    c(this, \"parentNode\", null);\n    c(this, \"ownerDocument\");\n    c(this, \"firstChild\", null);\n    c(this, \"lastChild\", null);\n    c(this, \"previousSibling\", null);\n    c(this, \"nextSibling\", null);\n    c(this, \"ELEMENT_NODE\", 1);\n    c(this, \"TEXT_NODE\", 3);\n    // corresponding nodeType value of standard HTML Node\n    c(this, \"nodeType\");\n    c(this, \"nodeName\");\n    c(this, \"RRNodeType\");\n  }\n  get childNodes() {\n    const t = [];\n    let s = this.firstChild;\n    for (; s; )\n      t.push(s), s = s.nextSibling;\n    return t;\n  }\n  contains(t) {\n    if (t instanceof A) {\n      if (t.ownerDocument !== this.ownerDocument) return !1;\n      if (t === this) return !0;\n    } else return !1;\n    for (; t.parentNode; ) {\n      if (t.parentNode === this) return !0;\n      t = t.parentNode;\n    }\n    return !1;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  appendChild(t) {\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(t, s) {\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(t) {\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 Zt extends A {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  constructor(...s) {\n    super(s);\n    c(this, \"nodeType\", 9);\n    c(this, \"nodeName\", \"#document\");\n    c(this, \"compatMode\", \"CSS1Compat\");\n    c(this, \"RRNodeType\", d.Document);\n    c(this, \"textContent\", null);\n    this.ownerDocument = this;\n  }\n  get documentElement() {\n    return this.childNodes.find(\n      (s) => s.RRNodeType === d.Element && s.tagName === \"HTML\"\n    ) || null;\n  }\n  get body() {\n    var s;\n    return ((s = this.documentElement) == null ? void 0 : s.childNodes.find(\n      (r) => r.RRNodeType === d.Element && r.tagName === \"BODY\"\n    )) || null;\n  }\n  get head() {\n    var s;\n    return ((s = this.documentElement) == null ? void 0 : s.childNodes.find(\n      (r) => r.RRNodeType === d.Element && r.tagName === \"HEAD\"\n    )) || null;\n  }\n  get implementation() {\n    return this;\n  }\n  get firstElementChild() {\n    return this.documentElement;\n  }\n  appendChild(s) {\n    const r = s.RRNodeType;\n    if ((r === d.Element || r === d.DocumentType) && this.childNodes.some((n) => n.RRNodeType === r))\n      throw new Error(\n        `RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one ${r === d.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n      );\n    const i = Kt(this, s);\n    return i.parentElement = null, i;\n  }\n  insertBefore(s, r) {\n    const i = s.RRNodeType;\n    if ((i === d.Element || i === d.DocumentType) && this.childNodes.some((a) => a.RRNodeType === i))\n      throw new Error(\n        `RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one ${i === d.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n      );\n    const n = as(this, s, r);\n    return n.parentElement = null, n;\n  }\n  removeChild(s) {\n    return ls(this, s);\n  }\n  open() {\n    this.firstChild = null, 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(s) {\n    let r;\n    if (s === '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">' ? r = \"-//W3C//DTD XHTML 1.0 Transitional//EN\" : s === '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">' && (r = \"-//W3C//DTD HTML 4.0 Transitional//EN\"), r) {\n      const i = this.createDocumentType(\"html\", r, \"\");\n      this.open(), this.appendChild(i);\n    }\n  }\n  createDocument(s, r, i) {\n    return new Zt();\n  }\n  createDocumentType(s, r, i) {\n    const n = new rs(s, r, i);\n    return n.ownerDocument = this, n;\n  }\n  createElement(s) {\n    const r = new qt(s);\n    return r.ownerDocument = this, r;\n  }\n  createElementNS(s, r) {\n    return this.createElement(r);\n  }\n  createTextNode(s) {\n    const r = new is(s);\n    return r.ownerDocument = this, r;\n  }\n  createComment(s) {\n    const r = new ns(s);\n    return r.ownerDocument = this, r;\n  }\n  createCDATASection(s) {\n    const r = new os(s);\n    return r.ownerDocument = this, r;\n  }\n  toString() {\n    return \"RRDocument\";\n  }\n}\nclass rs extends A {\n  constructor(s, r, i) {\n    super();\n    c(this, \"nodeType\", 10);\n    c(this, \"RRNodeType\", d.DocumentType);\n    c(this, \"name\");\n    c(this, \"publicId\");\n    c(this, \"systemId\");\n    c(this, \"textContent\", null);\n    this.name = s, this.publicId = r, this.systemId = i, this.nodeName = s;\n  }\n  toString() {\n    return \"RRDocumentType\";\n  }\n}\nclass qt extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 1);\n    c(this, \"RRNodeType\", d.Element);\n    c(this, \"tagName\");\n    c(this, \"attributes\", {});\n    c(this, \"shadowRoot\", null);\n    c(this, \"scrollLeft\");\n    c(this, \"scrollTop\");\n    this.tagName = s.toUpperCase(), this.nodeName = s.toUpperCase();\n  }\n  get textContent() {\n    let s = \"\";\n    return this.childNodes.forEach((r) => s += r.textContent), s;\n  }\n  set textContent(s) {\n    this.firstChild = null, this.lastChild = null, this.appendChild(this.ownerDocument.createTextNode(s));\n  }\n  get classList() {\n    return new di(\n      this.attributes.class,\n      (s) => {\n        this.attributes.class = s;\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 s = this.attributes.style ? li(this.attributes.style) : {}, r = /\\B([A-Z])/g;\n    return s.setProperty = (i, n, a) => {\n      if (r.test(i)) return;\n      const o = Lt(i);\n      n ? s[o] = n : delete s[o], a === \"important\" && (s[o] += \" !important\"), this.attributes.style = be(s);\n    }, s.removeProperty = (i) => {\n      if (r.test(i)) return \"\";\n      const n = Lt(i), a = s[n] || \"\";\n      return delete s[n], this.attributes.style = be(s), a;\n    }, s;\n  }\n  getAttribute(s) {\n    return this.attributes[s] || null;\n  }\n  setAttribute(s, r) {\n    this.attributes[s] = r;\n  }\n  setAttributeNS(s, r, i) {\n    this.setAttribute(r, i);\n  }\n  removeAttribute(s) {\n    delete this.attributes[s];\n  }\n  appendChild(s) {\n    return Kt(this, s);\n  }\n  insertBefore(s, r) {\n    return as(this, s, r);\n  }\n  removeChild(s) {\n    return ls(this, s);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(s) {\n    const r = this.ownerDocument.createElement(\"SHADOWROOT\");\n    return this.shadowRoot = r, r;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  dispatchEvent(s) {\n    return !0;\n  }\n  toString() {\n    let s = \"\";\n    for (const r in this.attributes)\n      s += `${r}=\"${this.attributes[r]}\" `;\n    return `${this.tagName} ${s}`;\n  }\n}\nclass fi extends qt {\n  constructor() {\n    super(...arguments);\n    c(this, \"currentTime\");\n    c(this, \"volume\");\n    c(this, \"paused\");\n    c(this, \"muted\");\n    c(this, \"playbackRate\");\n    c(this, \"loop\");\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(s) {\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 = !1;\n  }\n  pause() {\n    this.paused = !0;\n  }\n}\nclass is extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 3);\n    c(this, \"nodeName\", \"#text\");\n    c(this, \"RRNodeType\", d.Text);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRText text=${JSON.stringify(this.data)}`;\n  }\n}\nclass ns extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 8);\n    c(this, \"nodeName\", \"#comment\");\n    c(this, \"RRNodeType\", d.Comment);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRComment text=${JSON.stringify(this.data)}`;\n  }\n}\nclass os extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeName\", \"#cdata-section\");\n    c(this, \"nodeType\", 4);\n    c(this, \"RRNodeType\", d.CDATA);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRCDATASection data=${JSON.stringify(this.data)}`;\n  }\n}\nclass di {\n  constructor(t, s) {\n    c(this, \"onChange\");\n    c(this, \"classes\", []);\n    c(this, \"add\", (...t) => {\n      for (const s of t) {\n        const r = String(s);\n        this.classes.indexOf(r) >= 0 || this.classes.push(r);\n      }\n      this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    c(this, \"remove\", (...t) => {\n      this.classes = this.classes.filter(\n        (s) => t.indexOf(s) === -1\n      ), this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    if (t) {\n      const r = t.trim().split(/\\s+/);\n      this.classes.push(...r);\n    }\n    this.onChange = s;\n  }\n}\nfunction Kt(e, t) {\n  return t.parentNode && t.parentNode.removeChild(t), e.lastChild ? (e.lastChild.nextSibling = t, t.previousSibling = e.lastChild) : (e.firstChild = t, t.previousSibling = null), e.lastChild = t, t.nextSibling = null, t.parentNode = e, t.parentElement = e, t.ownerDocument = e.ownerDocument, t;\n}\nfunction as(e, t, s) {\n  if (!s) return Kt(e, t);\n  if (s.parentNode !== e)\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  return t === s || (t.parentNode && t.parentNode.removeChild(t), t.previousSibling = s.previousSibling, s.previousSibling = t, t.nextSibling = s, t.previousSibling ? t.previousSibling.nextSibling = t : e.firstChild = t, t.parentElement = e, t.parentNode = e, t.ownerDocument = e.ownerDocument), t;\n}\nfunction ls(e, t) {\n  if (t.parentNode !== e)\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  return t.previousSibling ? t.previousSibling.nextSibling = t.nextSibling : e.firstChild = t.nextSibling, t.nextSibling ? t.nextSibling.previousSibling = t.previousSibling : e.lastChild = t.previousSibling, t.previousSibling = null, t.nextSibling = null, t.parentElement = null, t.parentNode = null, t;\n}\nvar C = /* @__PURE__ */ ((e) => (e[e.PLACEHOLDER = 0] = \"PLACEHOLDER\", e[e.ELEMENT_NODE = 1] = \"ELEMENT_NODE\", e[e.ATTRIBUTE_NODE = 2] = \"ATTRIBUTE_NODE\", e[e.TEXT_NODE = 3] = \"TEXT_NODE\", e[e.CDATA_SECTION_NODE = 4] = \"CDATA_SECTION_NODE\", e[e.ENTITY_REFERENCE_NODE = 5] = \"ENTITY_REFERENCE_NODE\", e[e.ENTITY_NODE = 6] = \"ENTITY_NODE\", e[e.PROCESSING_INSTRUCTION_NODE = 7] = \"PROCESSING_INSTRUCTION_NODE\", e[e.COMMENT_NODE = 8] = \"COMMENT_NODE\", e[e.DOCUMENT_NODE = 9] = \"DOCUMENT_NODE\", e[e.DOCUMENT_TYPE_NODE = 10] = \"DOCUMENT_TYPE_NODE\", e[e.DOCUMENT_FRAGMENT_NODE = 11] = \"DOCUMENT_FRAGMENT_NODE\", e))(C || {});\nconst Ft = {\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}, mi = {\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 R = null;\nfunction us(e, t, s, r = t.mirror || t.ownerDocument.mirror) {\n  e = gi(\n    e,\n    t,\n    s,\n    r\n  ), cs(e, t, s, r), wi(e, t, s);\n}\nfunction gi(e, t, s, r) {\n  var i;\n  if (s.afterAppend && !R && (R = /* @__PURE__ */ new WeakSet(), setTimeout(() => {\n    R = null;\n  }, 0)), !Qt(e, t)) {\n    const n = Bt(\n      t,\n      s.mirror,\n      r\n    );\n    (i = e.parentNode) == null || i.replaceChild(n, e), e = n;\n  }\n  switch (t.RRNodeType) {\n    case d.Document: {\n      if (!_(e, t, s.mirror, r)) {\n        const n = r.getMeta(t);\n        n && (s.mirror.removeNodeFromMap(e), e.close(), e.open(), s.mirror.add(e, n), R == null || R.add(e));\n      }\n      break;\n    }\n    case d.Element: {\n      const n = e, a = t;\n      switch (a.tagName) {\n        case \"IFRAME\": {\n          const o = e.contentDocument;\n          if (!o) break;\n          us(\n            o,\n            t.contentDocument,\n            s,\n            r\n          );\n          break;\n        }\n      }\n      a.shadowRoot && (n.shadowRoot || n.attachShadow({ mode: \"open\" }), cs(\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        n.shadowRoot,\n        a.shadowRoot,\n        s,\n        r\n      )), yi(n, a, r);\n      break;\n    }\n  }\n  return e;\n}\nfunction wi(e, t, s) {\n  var r;\n  switch (t.RRNodeType) {\n    case d.Document: {\n      const i = t.scrollData;\n      i && s.applyScroll(i, !0);\n      break;\n    }\n    case d.Element: {\n      const i = e, n = t;\n      switch (n.scrollData && s.applyScroll(n.scrollData, !0), n.inputData && s.applyInput(n.inputData), n.tagName) {\n        case \"AUDIO\":\n        case \"VIDEO\": {\n          const a = e, o = n;\n          o.paused !== void 0 && (o.paused ? a.pause() : a.play()), o.muted !== void 0 && (a.muted = o.muted), o.volume !== void 0 && (a.volume = o.volume), o.currentTime !== void 0 && (a.currentTime = o.currentTime), o.playbackRate !== void 0 && (a.playbackRate = o.playbackRate), o.loop !== void 0 && (a.loop = o.loop);\n          break;\n        }\n        case \"CANVAS\": {\n          const a = t;\n          if (a.rr_dataURL !== null) {\n            const o = document.createElement(\"img\");\n            o.onload = () => {\n              const l = i.getContext(\"2d\");\n              l && l.drawImage(o, 0, 0, o.width, o.height);\n            }, o.src = a.rr_dataURL;\n          }\n          a.canvasMutations.forEach(\n            (o) => s.applyCanvas(\n              o.event,\n              o.mutation,\n              e\n            )\n          );\n          break;\n        }\n        case \"STYLE\": {\n          const a = i.sheet;\n          a && t.rules.forEach(\n            (o) => s.applyStyleSheetMutation(o, a)\n          );\n          break;\n        }\n      }\n      break;\n    }\n    case d.Text:\n    case d.Comment:\n    case d.CDATA: {\n      e.textContent !== t.data && (e.textContent = t.data);\n      break;\n    }\n  }\n  R != null && R.has(e) && (R.delete(e), (r = s.afterAppend) == null || r.call(s, e, s.mirror.getId(e)));\n}\nfunction yi(e, t, s) {\n  const r = e.attributes, i = t.attributes;\n  for (const n in i) {\n    const a = i[n], o = s.getMeta(t);\n    if (o != null && o.isSVG && Ft[n])\n      e.setAttributeNS(Ft[n], n, a);\n    else if (t.tagName === \"CANVAS\" && n === \"rr_dataURL\") {\n      const l = document.createElement(\"img\");\n      l.src = a, l.onload = () => {\n        const p = e.getContext(\"2d\");\n        p && p.drawImage(l, 0, 0, l.width, l.height);\n      };\n    } else {\n      if (t.tagName === \"IFRAME\" && n === \"srcdoc\") continue;\n      e.setAttribute(n, a);\n    }\n  }\n  for (const { name: n } of Array.from(r))\n    n in i || e.removeAttribute(n);\n  t.scrollLeft && (e.scrollLeft = t.scrollLeft), t.scrollTop && (e.scrollTop = t.scrollTop);\n}\nfunction cs(e, t, s, r) {\n  const i = Array.from(e.childNodes), n = t.childNodes;\n  if (i.length === 0 && n.length === 0) return;\n  let a = 0, o = i.length - 1, l = 0, p = n.length - 1, u = i[a], m = i[o], w = n[l], E = n[p], D, h;\n  for (; a <= o && l <= p; )\n    if (u === void 0)\n      u = i[++a];\n    else if (m === void 0)\n      m = i[--o];\n    else if (\n      // same first node?\n      _(u, w, s.mirror, r)\n    )\n      u = i[++a], w = n[++l];\n    else if (\n      // same last node?\n      _(m, E, s.mirror, r)\n    )\n      m = i[--o], E = n[--p];\n    else if (\n      // is the first old node the same as the last new node?\n      _(u, E, s.mirror, r)\n    ) {\n      try {\n        e.insertBefore(u, m.nextSibling);\n      } catch (x) {\n        console.warn(x);\n      }\n      u = i[++a], E = n[--p];\n    } else if (\n      // is the last old node the same as the first new node?\n      _(m, w, s.mirror, r)\n    ) {\n      try {\n        e.insertBefore(m, u);\n      } catch (x) {\n        console.warn(x);\n      }\n      m = i[--o], w = n[++l];\n    } else {\n      if (!D) {\n        D = {};\n        for (let b = a; b <= o; b++) {\n          const M = i[b];\n          M && s.mirror.hasNode(M) && (D[s.mirror.getId(M)] = b);\n        }\n      }\n      h = D[r.getId(w)];\n      const x = i[h];\n      if (h !== void 0 && x && _(x, w, s.mirror, r)) {\n        try {\n          e.insertBefore(x, u);\n        } catch (b) {\n          console.warn(b);\n        }\n        i[h] = void 0;\n      } else {\n        const b = Bt(\n          w,\n          s.mirror,\n          r\n        );\n        e.nodeName === \"#document\" && u && /**\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        (b.nodeType === b.DOCUMENT_TYPE_NODE && u.nodeType === u.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        b.nodeType === b.ELEMENT_NODE && u.nodeType === u.ELEMENT_NODE) && (e.removeChild(u), s.mirror.removeNodeFromMap(u), u = i[++a]);\n        try {\n          e.insertBefore(b, u || null);\n        } catch (M) {\n          console.warn(M);\n        }\n      }\n      w = n[++l];\n    }\n  if (a > o) {\n    const x = n[p + 1];\n    let b = null;\n    for (x && (b = s.mirror.getNode(\n      r.getId(x)\n    )); l <= p; ++l) {\n      const M = Bt(\n        n[l],\n        s.mirror,\n        r\n      );\n      try {\n        e.insertBefore(M, b);\n      } catch (gt) {\n        console.warn(gt);\n      }\n    }\n  } else if (l > p)\n    for (; a <= o; a++) {\n      const x = i[a];\n      if (!(!x || x.parentNode !== e))\n        try {\n          e.removeChild(x), s.mirror.removeNodeFromMap(x);\n        } catch (b) {\n          console.warn(b);\n        }\n    }\n  let v = e.firstChild, N = t.firstChild;\n  for (; v !== null && N !== null; )\n    us(v, N, s, r), v = v.nextSibling, N = N.nextSibling;\n}\nfunction Bt(e, t, s) {\n  const r = s.getId(e), i = s.getMeta(e);\n  let n = null;\n  if (r > -1 && (n = t.getNode(r)), n !== null && Qt(n, e)) return n;\n  switch (e.RRNodeType) {\n    case d.Document:\n      n = new Document();\n      break;\n    case d.DocumentType:\n      n = document.implementation.createDocumentType(\n        e.name,\n        e.publicId,\n        e.systemId\n      );\n      break;\n    case d.Element: {\n      let a = e.tagName.toLowerCase();\n      a = mi[a] || a, i && \"isSVG\" in i && (i != null && i.isSVG) ? n = document.createElementNS(Ft.svg, a) : n = document.createElement(e.tagName);\n      break;\n    }\n    case d.Text:\n      n = document.createTextNode(e.data);\n      break;\n    case d.Comment:\n      n = document.createComment(e.data);\n      break;\n    case d.CDATA:\n      n = document.createCDATASection(e.data);\n      break;\n  }\n  i && t.add(n, { ...i });\n  try {\n    R == null || R.add(n);\n  } catch {\n  }\n  return n;\n}\nfunction Qt(e, t) {\n  return e.nodeType !== t.nodeType ? !1 : e.nodeType !== e.ELEMENT_NODE || e.tagName.toUpperCase() === t.tagName;\n}\nfunction _(e, t, s, r) {\n  const i = s.getId(e), n = r.getId(t);\n  return i === -1 || i !== n ? !1 : Qt(e, t);\n}\nclass H extends Zt {\n  constructor(s) {\n    super();\n    c(this, \"UNSERIALIZED_STARTING_ID\", -2);\n    // In the rrweb replayer, there are some unserialized nodes like the element that stores the injected style rules.\n    // These unserialized nodes may interfere the execution of the diff algorithm.\n    // The id of serialized node is larger than 0. So this value less than 0 is used as id for these unserialized nodes.\n    c(this, \"_unserializedId\", this.UNSERIALIZED_STARTING_ID);\n    c(this, \"mirror\", Mi());\n    c(this, \"scrollData\", null);\n    s && (this.mirror = s);\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(s, r, i) {\n    return new H();\n  }\n  createDocumentType(s, r, i) {\n    const n = new bi(\n      s,\n      r,\n      i\n    );\n    return n.ownerDocument = this, n;\n  }\n  createElement(s) {\n    const r = s.toUpperCase();\n    let i;\n    switch (r) {\n      case \"AUDIO\":\n      case \"VIDEO\":\n        i = new Ei(r);\n        break;\n      case \"IFRAME\":\n        i = new Ri(r, this.mirror);\n        break;\n      case \"CANVAS\":\n        i = new xi(r);\n        break;\n      case \"STYLE\":\n        i = new Ci(r);\n        break;\n      default:\n        i = new mt(r);\n        break;\n    }\n    return i.ownerDocument = this, i;\n  }\n  createComment(s) {\n    const r = new Si(s);\n    return r.ownerDocument = this, r;\n  }\n  createCDATASection(s) {\n    const r = new vi(s);\n    return r.ownerDocument = this, r;\n  }\n  createTextNode(s) {\n    const r = new Ni(s);\n    return r.ownerDocument = this, r;\n  }\n  destroyTree() {\n    this.firstChild = null, this.lastChild = null, this.mirror.reset();\n  }\n  open() {\n    super.open(), this._unserializedId = this.UNSERIALIZED_STARTING_ID;\n  }\n}\nconst bi = rs;\nclass mt extends qt {\n  constructor() {\n    super(...arguments);\n    c(this, \"inputData\", null);\n    c(this, \"scrollData\", null);\n  }\n}\nclass Ei extends fi {\n}\nclass xi extends mt {\n  constructor() {\n    super(...arguments);\n    c(this, \"rr_dataURL\", null);\n    c(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 Ci extends mt {\n  constructor() {\n    super(...arguments);\n    c(this, \"rules\", []);\n  }\n}\nclass Ri extends mt {\n  constructor(s, r) {\n    super(s);\n    c(this, \"contentDocument\", new H());\n    this.contentDocument.mirror = r;\n  }\n}\nconst Ni = is, Si = ns, vi = os;\nfunction Oi(e) {\n  return e instanceof HTMLFormElement ? \"FORM\" : e.tagName.toUpperCase();\n}\nfunction Di(e, t, s, r) {\n  let i;\n  switch (e.nodeType) {\n    case C.DOCUMENT_NODE:\n      r && r.nodeName === \"IFRAME\" ? i = r.contentDocument : (i = t, i.compatMode = e.compatMode);\n      break;\n    case C.DOCUMENT_TYPE_NODE: {\n      const a = e;\n      i = t.createDocumentType(\n        a.name,\n        a.publicId,\n        a.systemId\n      );\n      break;\n    }\n    case C.ELEMENT_NODE: {\n      const a = e, o = Oi(a);\n      i = t.createElement(o);\n      const l = i;\n      for (const { name: p, value: u } of Array.from(a.attributes))\n        l.attributes[p] = u;\n      a.scrollLeft && (l.scrollLeft = a.scrollLeft), a.scrollTop && (l.scrollTop = a.scrollTop);\n      break;\n    }\n    case C.TEXT_NODE:\n      i = t.createTextNode(e.textContent || \"\");\n      break;\n    case C.CDATA_SECTION_NODE:\n      i = t.createCDATASection(e.data);\n      break;\n    case C.COMMENT_NODE:\n      i = t.createComment(e.textContent || \"\");\n      break;\n    case C.DOCUMENT_FRAGMENT_NODE:\n      i = r.attachShadow({ mode: \"open\" });\n      break;\n    default:\n      return null;\n  }\n  let n = s.getMeta(e);\n  return t instanceof H && (n || (n = Ai(i, t.unserializedId), s.add(e, n)), t.mirror.add(i, { ...n })), i;\n}\nfunction Ii(e, t = ws(), s = new H()) {\n  function r(i, n) {\n    const a = Di(i, s, t, n);\n    if (a !== null)\n      if (\n        // if the parentRRNode isn't a RRIFrameElement\n        (n == null ? void 0 : n.nodeName) !== \"IFRAME\" && // if node isn't a shadow root\n        i.nodeType !== C.DOCUMENT_FRAGMENT_NODE && (n == null || n.appendChild(a), a.parentNode = n, a.parentElement = n), i.nodeName === \"IFRAME\"\n      ) {\n        const o = i.contentDocument;\n        o && r(o, a);\n      } else (i.nodeType === C.DOCUMENT_NODE || i.nodeType === C.ELEMENT_NODE || i.nodeType === C.DOCUMENT_FRAGMENT_NODE) && (i.nodeType === C.ELEMENT_NODE && i.shadowRoot && r(i.shadowRoot, a), i.childNodes.forEach((o) => r(o, a)));\n  }\n  return r(e, null), s;\n}\nfunction Mi() {\n  return new ki();\n}\nclass ki {\n  constructor() {\n    c(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    c(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(t) {\n    var r;\n    return t ? ((r = this.getMeta(t)) == null ? void 0 : r.id) ?? -1 : -1;\n  }\n  getNode(t) {\n    return this.idNodeMap.get(t) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(t) {\n    return this.nodeMetaMap.get(t) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(t) {\n    const s = this.getId(t);\n    this.idNodeMap.delete(s), t.childNodes && t.childNodes.forEach((r) => this.removeNodeFromMap(r));\n  }\n  has(t) {\n    return this.idNodeMap.has(t);\n  }\n  hasNode(t) {\n    return this.nodeMetaMap.has(t);\n  }\n  add(t, s) {\n    const r = s.id;\n    this.idNodeMap.set(r, t), this.nodeMetaMap.set(t, s);\n  }\n  replace(t, s) {\n    const r = this.getNode(t);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(s, i);\n    }\n    this.idNodeMap.set(t, s);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction Ai(e, t) {\n  switch (e.RRNodeType) {\n    case d.Document:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        childNodes: []\n      };\n    case d.DocumentType: {\n      const s = e;\n      return {\n        id: t,\n        type: e.RRNodeType,\n        name: s.name,\n        publicId: s.publicId,\n        systemId: s.systemId\n      };\n    }\n    case d.Element:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        tagName: e.tagName.toLowerCase(),\n        // In rrweb data, all tagNames are lowercase.\n        attributes: {},\n        childNodes: []\n      };\n    case d.Text:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: e.textContent || \"\"\n      };\n    case d.Comment:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: e.textContent || \"\"\n      };\n    case d.CDATA:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: \"\"\n      };\n  }\n}\nfunction _i(e, t) {\n  return nt(e, t, \"\");\n}\nfunction nt(e, t, s) {\n  let r = `${s}${t.getId(e)} ${e.toString()}\n`;\n  if (e.RRNodeType === d.Element) {\n    const i = e;\n    i.shadowRoot && (r += nt(i.shadowRoot, t, s + \"  \"));\n  }\n  for (const i of e.childNodes)\n    r += nt(i, t, s + \"  \");\n  return e.nodeName === \"IFRAME\" && (r += nt(\n    e.contentDocument,\n    t,\n    s + \"  \"\n  )), r;\n}\nexport {\n  os as BaseRRCDATASection,\n  ns as BaseRRComment,\n  Zt as BaseRRDocument,\n  rs as BaseRRDocumentType,\n  qt as BaseRRElement,\n  fi as BaseRRMediaElement,\n  A as BaseRRNode,\n  is as BaseRRText,\n  di as ClassList,\n  ki as Mirror,\n  C as NodeType,\n  vi as RRCDATASection,\n  xi as RRCanvasElement,\n  Si as RRComment,\n  H as RRDocument,\n  bi as RRDocumentType,\n  mt as RRElement,\n  Ri as RRIFrameElement,\n  Ei as RRMediaElement,\n  A as RRNode,\n  Ci as RRStyleElement,\n  Ni as RRText,\n  Ii as buildFromDom,\n  Di as buildFromNode,\n  Mi as createMirror,\n  Bt as createOrGetNode,\n  us as diff,\n  Ai as getDefaultSN,\n  _i as printRRDom\n};\n//# sourceMappingURL=rrdom.js.map\n", "export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n", "import type { CanvasArg, SerializedCanvasArg } from '@sailfish-rrweb/types';\nimport { decode } from 'base64-arraybuffer';\nimport type { Replayer } from '../';\n\n// TODO: add ability to wipe this list\ntype GLVarMap = Map<string, any[]>;\nconst webGLVarMap: Map<\n  CanvasRenderingContext2D | WebGLRenderingContext | WebGL2RenderingContext,\n  GLVarMap\n> = new Map();\nexport function variableListFor(\n  ctx:\n    | CanvasRenderingContext2D\n    | WebGLRenderingContext\n    | WebGL2RenderingContext,\n  ctor: string,\n) {\n  let contextMap = webGLVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = new Map();\n    webGLVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n  return contextMap.get(ctor) as any[];\n}\n\nexport function isSerializedArg(arg: unknown): arg is SerializedCanvasArg {\n  return Boolean(arg && typeof arg === 'object' && 'rr_type' in arg);\n}\n\nexport function deserializeArg(\n  imageMap: Replayer['imageMap'],\n  ctx:\n    | CanvasRenderingContext2D\n    | WebGLRenderingContext\n    | WebGL2RenderingContext\n    | null,\n  preload?: {\n    isUnchanged: boolean;\n  },\n): (arg: CanvasArg) => Promise<any> {\n  return async (arg: CanvasArg): Promise<any> => {\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        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        const args = await deserializeArg(imageMap, ctx, preload)(arg.args);\n        // eslint-disable-next-line prefer-spread\n        return await createImageBitmap.apply(null, args);\n      } else if ('index' in arg) {\n        if (preload || ctx === null) return arg; // we are preloading, ctx is unknown\n        const { rr_type: name, index } = arg;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return variableListFor(ctx, name)[index];\n      } else if ('args' in arg) {\n        const { rr_type: name, args } = arg;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        const ctor = window[name as keyof Window];\n\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\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 image = new Image();\n          image.src = arg.src;\n          imageMap.set(arg.src, image);\n          return image;\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 blob = new Blob(blobContents, {\n          type: arg.type,\n        });\n        return blob;\n      }\n    } else if (Array.isArray(arg)) {\n      const result = await Promise.all(\n        arg.map(deserializeArg(imageMap, ctx, preload)),\n      );\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return result;\n    }\n    return arg;\n  };\n}\n", "import type { canvasMutationCommand } from '@sailfish-rrweb/types';\nimport type { Replayer } from '../';\nimport { deserializeArg } from './deserialize-args';\n\nexport default async function canvasMutation({\n  event,\n  mutations,\n  target,\n  imageMap,\n  errorHandler,\n}: {\n  event: Parameters<Replayer['applyIncremental']>[0];\n  mutations: canvasMutationCommand[];\n  target: HTMLCanvasElement;\n  imageMap: Replayer['imageMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  const ctx = target.getContext('2d');\n\n  if (!ctx) {\n    errorHandler(mutations[0], new Error('Canvas context is null'));\n    return;\n  }\n\n  // step 1, deserialize args, they may be async\n  const mutationArgsPromises = mutations.map(\n    async (mutation: canvasMutationCommand): Promise<unknown[]> => {\n      return Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)));\n    },\n  );\n  const args = await Promise.all(mutationArgsPromises);\n  // step 2 apply all mutations\n  args.forEach((args, index) => {\n    const mutation = mutations[index];\n    try {\n      if (mutation.setter) {\n        // skip some read-only type checks\n        (ctx as unknown as Record<string, unknown>)[mutation.property] =\n          mutation.args[0];\n        return;\n      }\n      const original = ctx[\n        mutation.property as Exclude<keyof typeof ctx, 'canvas'>\n      ] as (ctx: CanvasRenderingContext2D, args: unknown[]) => void;\n\n      /**\n       * We have serialized the image source into base64 string during recording,\n       * which has been preloaded before replay.\n       * So we can get call drawImage SYNCHRONOUSLY which avoid some fragile cast.\n       */\n      if (\n        mutation.property === 'drawImage' &&\n        typeof mutation.args[0] === 'string'\n      ) {\n        imageMap.get(event);\n        original.apply(ctx, mutation.args);\n      } else {\n        original.apply(ctx, args);\n      }\n    } catch (error) {\n      errorHandler(mutation, error);\n    }\n\n    return;\n  });\n}\n", "import {\n  CanvasContext,\n  type canvasMutationCommand,\n} from '@sailfish-rrweb/types';\nimport type { Replayer } from '../';\nimport { deserializeArg, variableListFor } from './deserialize-args';\n\nfunction getContext(\n  target: HTMLCanvasElement,\n  type: CanvasContext,\n): WebGLRenderingContext | WebGL2RenderingContext | null {\n  // Note to whomever is going to implement support for `contextAttributes`:\n  // if `preserveDrawingBuffer` is set to true,\n  // you might have to do `ctx.flush()` before every webgl canvas event\n  try {\n    if (type === CanvasContext.WebGL) {\n      return (\n        target.getContext('webgl')! || target.getContext('experimental-webgl')\n      );\n    }\n    return target.getContext('webgl2')!;\n  } catch (e) {\n    return null;\n  }\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];\n\nfunction saveToWebGLVarMap(\n  ctx: WebGLRenderingContext | WebGL2RenderingContext,\n  result: any,\n) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (!result?.constructor) return; // probably null or undefined\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n  const { name } = result.constructor;\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n  if (!WebGLVariableConstructorsNames.includes(name)) return; // not a WebGL variable\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n  const variables = variableListFor(ctx, name);\n  if (!variables.includes(result)) variables.push(result);\n}\n\nexport default async function webglMutation({\n  mutation,\n  target,\n  type,\n  imageMap,\n  errorHandler,\n}: {\n  mutation: canvasMutationCommand;\n  target: HTMLCanvasElement;\n  type: CanvasContext;\n  imageMap: Replayer['imageMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  try {\n    const ctx = getContext(target, type);\n    if (!ctx) return;\n\n    // NOTE: if `preserveDrawingBuffer` is set to true,\n    // we must flush the buffers on every new canvas event\n    // if (mutation.newFrame) ctx.flush();\n\n    if (mutation.setter) {\n      // skip some read-only type checks\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      (ctx as any)[mutation.property] = mutation.args[0];\n      return;\n    }\n    const original = ctx[\n      mutation.property as Exclude<keyof typeof ctx, 'canvas'>\n    ] as (\n      ctx: WebGLRenderingContext | WebGL2RenderingContext,\n      args: unknown[],\n    ) => void;\n\n    const args = await Promise.all(\n      mutation.args.map(deserializeArg(imageMap, ctx)),\n    );\n    const result = original.apply(ctx, args);\n    saveToWebGLVarMap(ctx, result);\n\n    // Slows down replay considerably, only use for debugging\n    const debugMode = false;\n    if (debugMode) {\n      if (mutation.property === 'compileShader') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        if (!ctx.getShaderParameter(args[0], ctx.COMPILE_STATUS))\n          console.warn(\n            'something went wrong in replay',\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            ctx.getShaderInfoLog(args[0]),\n          );\n      } else if (mutation.property === 'linkProgram') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        ctx.validateProgram(args[0]);\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        if (!ctx.getProgramParameter(args[0], ctx.LINK_STATUS))\n          console.warn(\n            'something went wrong in replay',\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            ctx.getProgramInfoLog(args[0]),\n          );\n      }\n      const webglError = ctx.getError();\n      if (webglError !== ctx.NO_ERROR) {\n        console.warn(\n          'WEBGL ERROR',\n          webglError,\n          'on command:',\n          mutation.property,\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n          ...args,\n        );\n      }\n    }\n  } catch (error) {\n    errorHandler(mutation, error);\n  }\n}\n", "import {\n  CanvasContext,\n  type canvasMutationCommand,\n  type canvasMutationData,\n  type canvasMutationParam,\n} from '@sailfish-rrweb/types';\nimport type { Replayer } from '..';\nimport canvas2DMutation from './2d';\nimport webglMutation from './webgl';\n\nexport default async function canvasMutation({\n  event,\n  mutation,\n  target,\n  imageMap,\n  canvasEventMap,\n  errorHandler,\n}: {\n  event: Parameters<Replayer['applyIncremental']>[0];\n  mutation: canvasMutationData;\n  target: HTMLCanvasElement;\n  imageMap: Replayer['imageMap'];\n  canvasEventMap: Replayer['canvasEventMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  try {\n    const precomputedMutation: canvasMutationParam =\n      canvasEventMap.get(event) || mutation;\n\n    const commands: canvasMutationCommand[] =\n      'commands' in precomputedMutation\n        ? precomputedMutation.commands\n        : [precomputedMutation];\n\n    if ([CanvasContext.WebGL, CanvasContext.WebGL2].includes(mutation.type)) {\n      for (let i = 0; i < commands.length; i++) {\n        const command = commands[i];\n        await webglMutation({\n          mutation: command,\n          type: mutation.type,\n          target,\n          imageMap,\n          errorHandler,\n        });\n      }\n      return;\n    }\n    // default is '2d' for backwards compatibility (rrweb below 1.1.x)\n    await canvas2DMutation({\n      event,\n      mutations: commands,\n      target,\n      imageMap,\n      errorHandler,\n    });\n  } catch (error) {\n    errorHandler(mutation, error);\n  }\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(t,n){var e=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var r,o,i=e.call(t),a=[];try{for(;(void 0===n||n-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}return a}var n;!function(t){t[t.NotStarted=0]=\"NotStarted\",t[t.Running=1]=\"Running\",t[t.Stopped=2]=\"Stopped\"}(n||(n={}));var e={type:\"xstate.init\"};function r(t){return void 0===t?[]:[].concat(t)}function o(t){return{type:\"xstate.assign\",assignment:t}}function i(t,n){return\"string\"==typeof(t=\"string\"==typeof t&&n&&n[t]?n[t]:t)?{type:t}:\"function\"==typeof t?{type:t.name,exec:t}:t}function a(t){return function(n){return t===n}}function u(t){return\"string\"==typeof t?{type:t}:t}function c(t,n){return{value:t,context:n,actions:[],changed:!1,matches:a(t)}}function f(t,n,e){var r=n,o=!1;return[t.filter((function(t){if(\"xstate.assign\"===t.type){o=!0;var n=Object.assign({},r);return\"function\"==typeof t.assignment?n=t.assignment(r,e):Object.keys(t.assignment).forEach((function(o){n[o]=\"function\"==typeof t.assignment[o]?t.assignment[o](r,e):t.assignment[o]})),r=n,!1}return!0})),r,o]}function s(n,o){void 0===o&&(o={});var s=t(f(r(n.states[n.initial].entry).map((function(t){return i(t,o.actions)})),n.context,e),2),l=s[0],v=s[1],y={config:n,_options:o,initialState:{value:n.initial,actions:l,context:v,matches:a(n.initial)},transition:function(e,o){var s,l,v=\"string\"==typeof e?{value:e,context:n.context}:e,p=v.value,g=v.context,d=u(o),x=n.states[p];if(x.on){var m=r(x.on[d.type]);try{for(var h=function(t){var n=\"function\"==typeof Symbol&&Symbol.iterator,e=n&&t[n],r=0;if(e)return e.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(n?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}(m),b=h.next();!b.done;b=h.next()){var S=b.value;if(void 0===S)return c(p,g);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(){return!0}:N,_=void 0===j,k=null!=j?j:p,T=n.states[k];if(O(g,d)){var q=t(f((_?r(R):[].concat(x.exit,R,T.entry).filter((function(t){return t}))).map((function(t){return i(t,y._options.actions)})),g,d),3),z=q[0],A=q[1],B=q[2],C=null!=j?j:p;return{value:C,context:A,actions:z,changed:j!==p||z.length>0||B,matches:a(C)}}}}catch(t){s={error:t}}finally{try{b&&!b.done&&(l=h.return)&&l.call(h)}finally{if(s)throw s.error}}}return c(p,g)}};return y}var l=function(t,n){return t.actions.forEach((function(e){var r=e.exec;return r&&r(t.context,n)}))};function v(t){var r=t.initialState,o=n.NotStarted,i=new Set,c={_machine:t,send:function(e){o===n.Running&&(r=t.transition(r,e),l(r,u(e)),i.forEach((function(t){return t(r)})))},subscribe:function(t){return i.add(t),t(r),{unsubscribe:function(){return i.delete(t)}}},start:function(i){if(i){var u=\"object\"==typeof i?i:{context:t.config.context,value:i};r={value:u.value,actions:[],context:u.context,matches:a(u.value)}}return o=n.Running,l(r,e),c},stop:function(){return o=n.Stopped,i.clear(),c},get state(){return r},get status(){return o}};return c}export{n as InterpreterStatus,o as assign,s as createMachine,v as interpret};\n", "import {\n  EventType,\n  IncrementalSource,\n  type actionWithDelay,\n  type eventWithTime,\n} from '@sailfish-rrweb/types';\n\nexport class Timer {\n  public timeOffset = 0;\n  public speed: number;\n\n  private actions: actionWithDelay[];\n  private raf: number | true | null = null;\n  private lastTimestamp: number;\n\n  constructor(\n    actions: actionWithDelay[] = [],\n    config: {\n      speed: number;\n    },\n  ) {\n    this.actions = actions;\n    this.speed = config.speed;\n  }\n  /**\n   * Add an action, possibly after the timer starts.\n   */\n  public addAction(action: actionWithDelay) {\n    const rafWasActive = this.raf === true;\n    if (\n      !this.actions.length ||\n      this.actions[this.actions.length - 1].delay <= action.delay\n    ) {\n      // 'fast track'\n      this.actions.push(action);\n    } else {\n      // binary search - events can arrive out of order in a realtime context\n      const index = this.findActionIndex(action);\n      this.actions.splice(index, 0, action);\n    }\n    if (rafWasActive) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    }\n  }\n\n  public start() {\n    this.timeOffset = 0;\n    this.lastTimestamp = performance.now();\n    this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n  }\n\n  private rafCheck() {\n    const time = performance.now();\n    this.timeOffset += (time - this.lastTimestamp) * this.speed;\n    this.lastTimestamp = time;\n    while (this.actions.length) {\n      const action = this.actions[0];\n\n      if (this.timeOffset >= action.delay) {\n        this.actions.shift();\n        action.doAction();\n      } else {\n        break;\n      }\n    }\n    if (this.actions.length > 0) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    } else {\n      this.raf = true; // was active\n    }\n  }\n\n  public 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  }\n\n  public setSpeed(speed: number) {\n    this.speed = speed;\n  }\n\n  public isActive() {\n    return this.raf !== null;\n  }\n\n  private findActionIndex(action: actionWithDelay): number {\n    let start = 0;\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        // already an action with same delay (timestamp)\n        // the plus one will splice the new one after the existing one\n        return mid + 1;\n      }\n    }\n    return start;\n  }\n}\n\n// TODO: add speed to mouse move timestamp calculation\nexport function addDelay(event: eventWithTime, baselineTime: number): number {\n  // Mouse move events was recorded in a throttle function,\n  // so we need to find the real timestamp by traverse the time offsets.\n  if (\n    event.type === EventType.IncrementalSnapshot &&\n    event.data.source === IncrementalSource.MouseMove &&\n    event.data.positions &&\n    event.data.positions.length\n  ) {\n    const firstOffset = event.data.positions[0].timeOffset;\n    // timeOffset is a negative offset to event.timestamp\n    const firstTimestamp = event.timestamp + firstOffset;\n    event.delay = firstTimestamp - baselineTime;\n    return firstTimestamp - baselineTime;\n  }\n\n  event.delay = event.timestamp - baselineTime;\n  return event.delay;\n}\n", "import {\n  EventType,\n  ReplayerEvents,\n  type Emitter,\n  type eventWithTime,\n} from '@sailfish-rrweb/types';\nimport {\n  assign,\n  createMachine,\n  interpret,\n  type StateMachine,\n} from '@xstate/fsm';\nimport type { playerConfig } from '../types';\nimport { Timer, addDelay } from './timer';\n\nexport type PlayerContext = {\n  events: eventWithTime[];\n  timer: Timer;\n  timeOffset: number;\n  baselineTime: number;\n  lastPlayedEvent: eventWithTime | null;\n};\nexport type PlayerEvent =\n  | {\n      type: 'PLAY';\n      payload: {\n        timeOffset: number;\n      };\n    }\n  | {\n      type: 'CAST_EVENT';\n      payload: {\n        event: eventWithTime;\n      };\n    }\n  | { type: 'PAUSE' }\n  | { type: 'TO_LIVE'; payload: { baselineTime?: number } }\n  | {\n      type: 'ADD_EVENT';\n      payload: {\n        event: eventWithTime;\n      };\n    }\n  | {\n      type: 'END';\n    };\nexport type PlayerState =\n  | {\n      value: 'playing';\n      context: PlayerContext;\n    }\n  | {\n      value: 'paused';\n      context: PlayerContext;\n    }\n  | {\n      value: 'live';\n      context: PlayerContext;\n    };\n\n/**\n * If the array have multiple meta and fullsnapshot events,\n * return the events from the last page boundary to the end.\n *\n * A page boundary is identified by a FullSnapshot (type 2) event,\n * optionally preceded by a Meta (type 4) event. We search for\n * FullSnapshot instead of Meta because some page visits may have\n * their Meta timestamp slightly after the target time, while the\n * FullSnapshot is the actual DOM rebuild point we need.\n */\nexport function discardPriorSnapshots(\n  events: eventWithTime[],\n  baselineTime: number,\n): eventWithTime[] {\n  for (let idx = events.length - 1; idx >= 0; idx--) {\n    const event = events[idx];\n    if (event.type === EventType.FullSnapshot) {\n      if (event.timestamp <= baselineTime) {\n        // Include the preceding Meta event if it exists right before this\n        // FullSnapshot, so viewport dimensions are applied correctly.\n        if (\n          idx > 0 &&\n          events[idx - 1].type === EventType.Meta &&\n          events[idx - 1].timestamp <= baselineTime\n        ) {\n          return events.slice(idx - 1);\n        }\n        return events.slice(idx);\n      }\n    }\n  }\n  return events;\n}\n\ntype PlayerAssets = {\n  emitter: Emitter;\n  applyEventsSynchronously(events: Array<eventWithTime>): void;\n  getCastFn(event: eventWithTime, isSync: boolean): () => void;\n};\nexport function createPlayerService(\n  context: PlayerContext,\n  { getCastFn, applyEventsSynchronously, emitter }: PlayerAssets,\n) {\n  const playerMachine = createMachine<PlayerContext, PlayerEvent, PlayerState>(\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: assign({\n          lastPlayedEvent: (ctx, event) => {\n            if (event.type === 'CAST_EVENT') {\n              return event.payload.event;\n            }\n            return ctx.lastPlayedEvent;\n          },\n        }),\n        recordTimeOffset: assign((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          const { timer, events, baselineTime } = ctx;\n          timer.clear();\n\n          for (const event of events) {\n            // TODO: improve this API\n            addDelay(event, baselineTime);\n          }\n          const neededEvents = discardPriorSnapshots(events, baselineTime);\n\n          emitter.emit(ReplayerEvents.PlayBack);\n\n          const syncEvents = new Array<eventWithTime>();\n          for (const event of neededEvents) {\n            if (event.timestamp < baselineTime) {\n              syncEvents.push(event);\n            } else {\n              const castFn = getCastFn(event, false);\n              timer.addAction({\n                doAction: () => {\n                  castFn();\n                },\n                delay: event.delay!,\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: assign((ctx) => {\n          return {\n            ...ctx,\n            lastPlayedEvent: null,\n          };\n        }),\n        startLive: assign({\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: assign((ctx, machineEvent) => {\n          const { baselineTime, timer, events } = ctx;\n          if (machineEvent.type === 'ADD_EVENT') {\n            const { event } = machineEvent.payload;\n            addDelay(event, baselineTime);\n\n            let end = events.length - 1;\n            if (!events[end] || events[end].timestamp <= event.timestamp) {\n              // fast track\n              events.push(event);\n            } else {\n              let insertionIndex = -1;\n              let start = 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              if (insertionIndex === -1) {\n                insertionIndex = start;\n              }\n              events.splice(insertionIndex, 0, event);\n            }\n\n            const isSync = event.timestamp < baselineTime;\n            // Skip applying ANY sync event if a later FullSnapshot exists\n            // before baselineTime — the current DOM is built from that later\n            // snapshot, so applying older events (including incremental ones)\n            // would corrupt the DOM with stale node references.\n            let skipSync = false;\n            if (isSync) {\n              for (let i = events.length - 1; i >= 0; i--) {\n                const e = events[i];\n                if (e === event) break;\n                if (\n                  e.type === EventType.FullSnapshot &&\n                  e.timestamp > event.timestamp &&\n                  e.timestamp <= baselineTime\n                ) {\n                  skipSync = true;\n                  break;\n                }\n              }\n            }\n\n            if (!skipSync) {\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!,\n                });\n              }\n            }\n          }\n          return { ...ctx, events };\n        }),\n      },\n    },\n  );\n  return interpret(playerMachine);\n}\n\nexport type SpeedContext = {\n  normalSpeed: playerConfig['speed'];\n  timer: Timer;\n};\n\nexport type SpeedEvent =\n  | {\n      type: 'FAST_FORWARD';\n      payload: { speed: playerConfig['speed'] };\n    }\n  | {\n      type: 'BACK_TO_NORMAL';\n    }\n  | {\n      type: 'SET_SPEED';\n      payload: { speed: playerConfig['speed'] };\n    };\n\nexport type SpeedState =\n  | {\n      value: 'normal';\n      context: SpeedContext;\n    }\n  | {\n      value: 'skipping';\n      context: SpeedContext;\n    };\n\nexport function createSpeedService(context: SpeedContext) {\n  const speedMachine = createMachine<SpeedContext, SpeedEvent, SpeedState>(\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: assign({\n          normalSpeed: (ctx) => ctx.timer.speed,\n        }),\n        restoreSpeed: (ctx) => {\n          ctx.timer.setSpeed(ctx.normalSpeed);\n        },\n      },\n    },\n  );\n\n  return interpret(speedMachine);\n}\n\nexport type PlayerMachineState = StateMachine.State<\n  PlayerContext,\n  PlayerEvent,\n  PlayerState\n>;\n\nexport type SpeedMachineState = StateMachine.State<\n  SpeedContext,\n  SpeedEvent,\n  SpeedState\n>;\n", "import type { RRMediaElement } from '@sailfish-rrweb/rrdom';\nimport type { Mirror, mediaAttributes } from '@sailfish-rrweb/rrweb-snapshot';\nimport type { mediaInteractionData } from '@sailfish-rrweb/types';\nimport {\n  MediaInteractions,\n  ReplayerEvents,\n  type Emitter,\n} from '@sailfish-rrweb/types';\nimport type { createPlayerService, createSpeedService } from '../machine';\n\ntype MediaState = {\n  isPlaying: boolean;\n  currentTimeAtLastInteraction: number;\n  lastInteractionTimeOffset: number;\n  playbackRate: number;\n  loop: boolean;\n  volume: number;\n  muted: boolean;\n};\n\nexport class MediaManager {\n  private mediaMap: Map<HTMLMediaElement | RRMediaElement, MediaState> =\n    new Map();\n  private warn: (...args: Parameters<typeof console.warn>) => void;\n  private service: ReturnType<typeof createPlayerService>;\n  private speedService: ReturnType<typeof createSpeedService>;\n  private emitter: Emitter;\n  private getCurrentTime: () => number;\n  private metadataCallbackMap: WeakMap<\n    HTMLMediaElement | RRMediaElement,\n    () => void\n  > = new Map();\n\n  constructor(options: {\n    warn: (...args: Parameters<typeof console.warn>) => void;\n    service: ReturnType<typeof createPlayerService>;\n    speedService: ReturnType<typeof createSpeedService>;\n    getCurrentTime: () => number;\n    emitter: Emitter;\n  }) {\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\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\n  private 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\n  private start() {\n    this.syncAllMediaElements();\n  }\n\n  private pause() {\n    this.syncAllMediaElements({ pause: true });\n  }\n\n  private seekTo({\n    time,\n    target,\n    mediaState,\n  }: {\n    time: number;\n    target: HTMLMediaElement | RRMediaElement;\n    mediaState: MediaState;\n  }) {\n    if (mediaState.isPlaying) {\n      const differenceBetweenCurrentTimeAndMediaMutationTimestamp =\n        time - mediaState.lastInteractionTimeOffset;\n      const mediaPlaybackOffset =\n        (differenceBetweenCurrentTimeAndMediaMutationTimestamp / 1000) *\n        mediaState.playbackRate;\n\n      const duration = 'duration' in target && target.duration;\n\n      // Video hasn't loaded yet, wait for metadata\n      if (Number.isNaN(duration)) {\n        this.waitForMetadata(target);\n        return;\n      }\n\n      let seekToTime =\n        mediaState.currentTimeAtLastInteraction + mediaPlaybackOffset;\n\n      if (\n        target.loop &&\n        // RRMediaElement doesn't have a duration property\n        duration !== false\n      ) {\n        seekToTime = seekToTime % duration;\n      }\n\n      target.currentTime = seekToTime;\n    } else {\n      target.pause();\n      target.currentTime = mediaState.currentTimeAtLastInteraction;\n    }\n  }\n\n  private waitForMetadata(target: HTMLMediaElement | RRMediaElement) {\n    if (this.metadataCallbackMap.has(target)) return;\n    if (!('addEventListener' in target)) return;\n\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\n    this.metadataCallbackMap.set(target, onLoadedMetadata);\n    target.addEventListener('loadedmetadata', onLoadedMetadata, {\n      once: true,\n    });\n  }\n\n  private getMediaStateFromMutation({\n    target,\n    timeOffset,\n    mutation,\n  }: {\n    target: HTMLMediaElement | RRMediaElement;\n    timeOffset: number;\n    mutation: mediaInteractionData;\n  }): MediaState {\n    const lastState = this.mediaMap.get(target);\n    const { type, playbackRate, currentTime, muted, volume, loop } = mutation;\n\n    const isPlaying =\n      type === MediaInteractions.Play ||\n      (type !== MediaInteractions.Pause &&\n        (lastState?.isPlaying || target.getAttribute('autoplay') !== null));\n\n    const mediaState: MediaState = {\n      isPlaying,\n      currentTimeAtLastInteraction:\n        currentTime ?? lastState?.currentTimeAtLastInteraction ?? 0,\n      lastInteractionTimeOffset: timeOffset,\n      playbackRate: playbackRate ?? lastState?.playbackRate ?? 1,\n      volume: volume ?? lastState?.volume ?? 1,\n      muted: muted ?? lastState?.muted ?? target.getAttribute('muted') === null,\n      loop: loop ?? lastState?.loop ?? target.getAttribute('loop') === null,\n    };\n\n    return mediaState;\n  }\n\n  private syncTargetWithState(target: HTMLMediaElement | RRMediaElement) {\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 =\n      mediaState.playbackRate * this.speedService.state.context.timer.speed;\n\n    try {\n      this.seekTo({\n        time: this.getCurrentTime(),\n        target,\n        mediaState,\n      });\n\n      if (target.volume !== volume) {\n        target.volume = volume;\n      }\n      target.muted = muted;\n      target.loop = loop;\n\n      if (target.playbackRate !== playbackRate) {\n        // Avoid setting playbackRate when it's already the same\n        // Safari drops frames whenever playbackRate is set, even if it's the same\n        target.playbackRate = playbackRate;\n      }\n\n      if (isPlaying && !playerIsPaused) {\n        // remove listener for 'canplay' event because play() is async and returns a promise\n        // i.e. media will eventually start to play when data is loaded\n        // 'canplay' event fires even when currentTime attribute changes which may lead to\n        // unexpected behavior\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\n  public addMediaElements(node: Node, timeOffset: number, mirror: Mirror) {\n    if (!['AUDIO', 'VIDEO'].includes(node.nodeName)) return;\n    const target = node as HTMLMediaElement;\n    const serializedNode = mirror.getMeta(target);\n    if (!serializedNode || !('attributes' in serializedNode)) return;\n    const playerIsPaused = this.service.state.matches('paused');\n    const mediaAttributes = serializedNode.attributes as\n      | mediaAttributes\n      | Record<string, never>;\n\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\n    let playbackRate = 1;\n    if (typeof mediaAttributes.rr_mediaPlaybackRate === 'number') {\n      playbackRate = mediaAttributes.rr_mediaPlaybackRate;\n    }\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\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\n    let volume = 1;\n    if (typeof mediaAttributes.rr_mediaVolume === 'number') {\n      volume = mediaAttributes.rr_mediaVolume;\n    }\n\n    let currentTimeAtLastInteraction = 0;\n    if (typeof mediaAttributes.rr_mediaCurrentTime === 'number') {\n      currentTimeAtLastInteraction = mediaAttributes.rr_mediaCurrentTime;\n    }\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\n  public mediaMutation({\n    target,\n    timeOffset,\n    mutation,\n  }: {\n    target: HTMLMediaElement | RRMediaElement;\n    timeOffset: number;\n    mutation: mediaInteractionData;\n  }) {\n    this.mediaMap.set(\n      target,\n      this.getMediaStateFromMutation({\n        target,\n        timeOffset,\n        mutation,\n      }),\n    );\n\n    this.syncTargetWithState(target);\n  }\n\n  public isSupportedMediaElement(node: Node): node is HTMLMediaElement {\n    return ['AUDIO', 'VIDEO'].includes(node.nodeName);\n  }\n\n  public reset() {\n    this.mediaMap.clear();\n  }\n}\n", "/**\n * A fork version of https://github.com/iamdustan/smoothscroll\n * Add support of customize target window and document\n */\n\n/* eslint-disable */\n// @ts-nocheck\nexport function polyfill(w: Window = window, d = document) {\n  // return if scroll behavior is supported and polyfill is not forced\n  if (\n    'scrollBehavior' in d.documentElement.style &&\n    w.__forceSmoothScrollPolyfill__ !== true\n  ) {\n    return;\n  }\n\n  // globals\n  const Element = w.HTMLElement || w.Element;\n  const SCROLL_TIME = 468;\n\n  // object gathering original scroll methods\n  const original = {\n    scroll: w.scroll || w.scrollTo,\n    scrollBy: w.scrollBy,\n    elementScroll: Element.prototype.scroll || scrollElement,\n    scrollIntoView: Element.prototype.scrollIntoView,\n  };\n\n  // define timing method\n  const now =\n    w.performance && w.performance.now\n      ? w.performance.now.bind(w.performance)\n      : Date.now;\n\n  /**\n   * indicates if a the current browser is made by Microsoft\n   * @method isMicrosoftBrowser\n   * @param {String} userAgent\n   * @returns {Boolean}\n   */\n  function isMicrosoftBrowser(userAgent) {\n    const userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n    return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n  }\n\n  /*\n   * IE has rounding bug rounding down clientHeight and clientWidth and\n   * rounding up scrollHeight and scrollWidth causing false positives\n   * on hasScrollableSpace\n   */\n  const ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n  /**\n   * changes scroll position inside an element\n   * @method scrollElement\n   * @param {Number} x\n   * @param {Number} y\n   * @returns {undefined}\n   */\n  function scrollElement(x, y) {\n    this.scrollLeft = x;\n    this.scrollTop = y;\n  }\n\n  /**\n   * returns result of applying ease math function to a number\n   * @method ease\n   * @param {Number} k\n   * @returns {Number}\n   */\n  function ease(k) {\n    return 0.5 * (1 - Math.cos(Math.PI * k));\n  }\n\n  /**\n   * indicates if a smooth behavior should be applied\n   * @method shouldBailOut\n   * @param {Number|Object} firstArg\n   * @returns {Boolean}\n   */\n  function shouldBailOut(firstArg) {\n    if (\n      firstArg === null ||\n      typeof firstArg !== 'object' ||\n      firstArg.behavior === undefined ||\n      firstArg.behavior === 'auto' ||\n      firstArg.behavior === 'instant'\n    ) {\n      // first argument is not an object/null\n      // or behavior is auto, instant or undefined\n      return true;\n    }\n\n    if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n      // first argument is an object and behavior is smooth\n      return false;\n    }\n\n    // throw error when behavior is not supported\n    throw new TypeError(\n      'behavior member of ScrollOptions ' +\n        firstArg.behavior +\n        ' is not a valid value for enumeration ScrollBehavior.',\n    );\n  }\n\n  /**\n   * indicates if an element has scrollable space in the provided axis\n   * @method hasScrollableSpace\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function hasScrollableSpace(el, axis) {\n    if (axis === 'Y') {\n      return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n    }\n\n    if (axis === 'X') {\n      return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n    }\n  }\n\n  /**\n   * indicates if an element has a scrollable overflow property in the axis\n   * @method canOverflow\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function canOverflow(el, axis) {\n    const overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n    return overflowValue === 'auto' || overflowValue === 'scroll';\n  }\n\n  /**\n   * indicates if an element can be scrolled in either axis\n   * @method isScrollable\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function isScrollable(el) {\n    const isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n    const isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n    return isScrollableY || isScrollableX;\n  }\n\n  /**\n   * finds scrollable parent of an element\n   * @method findScrollableParent\n   * @param {Node} el\n   * @returns {Node} el\n   */\n  function findScrollableParent(el) {\n    while (el !== d.body && isScrollable(el) === false) {\n      el = el.parentNode || el.host;\n    }\n\n    return el;\n  }\n\n  /**\n   * self invoked function that, given a context, steps through scrolling\n   * @method step\n   * @param {Object} context\n   * @returns {undefined}\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\n    // avoid elapsed times higher than one\n    elapsed = elapsed > 1 ? 1 : elapsed;\n\n    // apply easing to elapsed time\n    value = ease(elapsed);\n\n    currentX = context.startX + (context.x - context.startX) * value;\n    currentY = context.startY + (context.y - context.startY) * value;\n\n    context.method.call(context.scrollable, currentX, currentY);\n\n    // scroll more if we have not reached our destination\n    if (currentX !== context.x || currentY !== context.y) {\n      w.requestAnimationFrame(step.bind(w, context));\n    }\n  }\n\n  /**\n   * scrolls window or element with a smooth behavior\n   * @method smoothScroll\n   * @param {Object|Node} el\n   * @param {Number} x\n   * @param {Number} y\n   * @returns {undefined}\n   */\n  function smoothScroll(el, x, y) {\n    let scrollable;\n    let startX;\n    let startY;\n    let method;\n    const startTime = now();\n\n    // define scroll context\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\n    // scroll looping over a frame\n    step({\n      scrollable: scrollable,\n      method: method,\n      startTime: startTime,\n      startX: startX,\n      startY: startY,\n      x: x,\n      y: y,\n    });\n  }\n\n  // ORIGINAL METHODS OVERRIDES\n  // w.scroll and w.scrollTo\n  w.scroll = w.scrollTo = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scroll.call(\n        w,\n        arguments[0].left !== undefined\n          ? arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? arguments[0]\n          : w.scrollX || w.pageXOffset,\n        // use top prop, second argument if present or fallback to scrollY\n        arguments[0].top !== undefined\n          ? arguments[0].top\n          : arguments[1] !== undefined\n          ? arguments[1]\n          : w.scrollY || w.pageYOffset,\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      w,\n      d.body,\n      arguments[0].left !== undefined\n        ? ~~arguments[0].left\n        : w.scrollX || w.pageXOffset,\n      arguments[0].top !== undefined\n        ? ~~arguments[0].top\n        : w.scrollY || w.pageYOffset,\n    );\n  };\n\n  // w.scrollBy\n  w.scrollBy = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0])) {\n      original.scrollBy.call(\n        w,\n        arguments[0].left !== undefined\n          ? arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? arguments[0]\n          : 0,\n        arguments[0].top !== undefined\n          ? arguments[0].top\n          : arguments[1] !== undefined\n          ? arguments[1]\n          : 0,\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\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\n  // Element.prototype.scroll and Element.prototype.scrollTo\n  Element.prototype.scroll = Element.prototype.scrollTo = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      // if one number is passed, throw error to match Firefox implementation\n      if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n        throw new SyntaxError('Value could not be converted');\n      }\n\n      original.elementScroll.call(\n        this,\n        // use left prop, first number argument or fallback to scrollLeft\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? ~~arguments[0]\n          : this.scrollLeft,\n        // use top prop, second argument or fallback to scrollTop\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top\n          : arguments[1] !== undefined\n          ? ~~arguments[1]\n          : this.scrollTop,\n      );\n\n      return;\n    }\n\n    const left = arguments[0].left;\n    const top = arguments[0].top;\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      this,\n      this,\n      typeof left === 'undefined' ? this.scrollLeft : ~~left,\n      typeof top === 'undefined' ? this.scrollTop : ~~top,\n    );\n  };\n\n  // Element.prototype.scrollBy\n  Element.prototype.scrollBy = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.elementScroll.call(\n        this,\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left + this.scrollLeft\n          : ~~arguments[0] + this.scrollLeft,\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top + this.scrollTop\n          : ~~arguments[1] + this.scrollTop,\n      );\n\n      return;\n    }\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\n  // Element.prototype.scrollIntoView\n  Element.prototype.scrollIntoView = function () {\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scrollIntoView.call(\n        this,\n        arguments[0] === undefined ? true : arguments[0],\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    const scrollableParent = findScrollableParent(this);\n    const parentRects = scrollableParent.getBoundingClientRect();\n    const clientRects = this.getBoundingClientRect();\n\n    if (scrollableParent !== d.body) {\n      // reveal element inside parent\n      smoothScroll.call(\n        this,\n        scrollableParent,\n        scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n        scrollableParent.scrollTop + clientRects.top - parentRects.top,\n      );\n\n      // reveal parent in viewport unless is fixed\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      // reveal element in viewport\n      w.scrollBy({\n        left: clientRects.left,\n        top: clientRects.top,\n        behavior: 'smooth',\n      });\n    }\n  };\n}\n", "const rules: (blockClass: string) => string[] = (blockClass: string) => [\n  `.${blockClass} { background: currentColor }`,\n  'noscript { display: none !important; }',\n];\n\nexport default rules;\n", "import type {\n  RRCanvasElement,\n  Mirror as RRDOMMirror,\n  RRElement,\n  RRIFrameElement,\n  RRMediaElement,\n  RRNode,\n  RRStyleElement,\n  ReplayerHandler,\n} from '@sailfish-rrweb/rrdom';\nimport {\n  RRDocument,\n  buildFromDom,\n  buildFromNode,\n  createOrGetNode,\n  diff,\n  getDefaultSN,\n} from '@sailfish-rrweb/rrdom';\nimport {\n  Mirror,\n  NodeType,\n  buildNodeWithSN,\n  createCache,\n  createMirror,\n  rebuild,\n  toLowerCase,\n  type BuildCache,\n  type attributes,\n  type serializedElementNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  Emitter,\n  Handler,\n  IWindow,\n  addedNodeMutation,\n  adoptedStyleSheetData,\n  canvasEventWithTime,\n  canvasMutationCommand,\n  canvasMutationData,\n  canvasMutationParam,\n  eventWithTime,\n  fullSnapshotEvent,\n  incrementalData,\n  incrementalSnapshotEvent,\n  inputData,\n  metaEvent,\n  mouseMovePos,\n  mutationData,\n  playerMetaData,\n  scrollData,\n  selectionData,\n  styleDeclarationData,\n  styleSheetRuleData,\n  styleValueWithPriority,\n  viewportResizeDimension,\n} from '@sailfish-rrweb/types';\nimport {\n  EventType,\n  IncrementalSource,\n  MouseInteractions,\n  ReplayerEvents,\n} from '@sailfish-rrweb/types';\nimport * as mittProxy from 'mitt';\nimport type { missingNodeMap, playerConfig } from '../types';\nimport {\n  StyleSheetMirror,\n  getBaseDimension,\n  getNestedRule,\n  getPositionsAndIndex,\n  hasShadowRoot,\n  isSerializedIframe,\n  iterateResolveTree,\n  polyfill,\n  queueToResolveTrees,\n  uniqueTextMutations,\n  type AppendedIframe,\n} from '../utils';\nimport canvasMutation from './canvas';\nimport { deserializeArg } from './canvas/deserialize-args';\nimport {\n  createPlayerService,\n  createSpeedService,\n  type PlayerMachineState,\n  type SpeedMachineState,\n} from './machine';\nimport { MediaManager } from './media';\nimport { polyfill as smoothscrollPolyfill } from './smoothscroll';\nimport getInjectStyleRules from './styles/inject-style';\nimport './styles/style.css';\nimport { Timer } from './timer';\nimport { applyTextDelta } from '../record/text-diff';\n\nconst SKIP_TIME_INTERVAL = 5 * 1000;\n\n// https://github.com/rollup/rollup/issues/1267#issuecomment-296395734\nconst mitt = mittProxy.default || mittProxy;\n\nconst REPLAY_CONSOLE_PREFIX = '[replayer]';\n\nconst defaultMouseTailConfig = {\n  duration: 500,\n  lineCap: 'round',\n  lineWidth: 3,\n  strokeStyle: 'red',\n} as const;\n\nfunction indicatesTouchDevice(e: eventWithTime) {\n  return (\n    e.type == EventType.IncrementalSnapshot &&\n    (e.data.source == IncrementalSource.TouchMove ||\n      (e.data.source == IncrementalSource.MouseInteraction &&\n        e.data.type == MouseInteractions.TouchStart))\n  );\n}\n\nexport class Replayer {\n  public wrapper: HTMLDivElement;\n  public iframe: HTMLIFrameElement;\n\n  public service: ReturnType<typeof createPlayerService>;\n  public speedService: ReturnType<typeof createSpeedService>;\n  public get timer() {\n    return this.service.state.context.timer;\n  }\n\n  public config: playerConfig;\n\n  // In the fast-forward process, if the virtual-dom optimization is used, this flag value is true.\n  public usingVirtualDom = false;\n  public virtualDom: RRDocument = new RRDocument();\n\n  private mouse: HTMLDivElement;\n  private mouseTail: HTMLCanvasElement | null = null;\n  private tailPositions: Array<{ x: number; y: number }> = [];\n\n  private emitter: Emitter = mitt();\n\n  private nextUserInteractionEvent: eventWithTime | null;\n\n  private legacy_missingNodeRetryMap: missingNodeMap = {};\n\n  // The replayer uses the cache to speed up replay and scrubbing.\n  private cache: BuildCache = createCache();\n\n  private imageMap: Map<eventWithTime | string, HTMLImageElement> = new Map();\n  private canvasEventMap: Map<eventWithTime, canvasMutationParam> = new Map();\n\n  private mirror: Mirror = createMirror();\n\n  // Used to track StyleSheetObjects adopted on multiple document hosts.\n  private styleMirror: StyleSheetMirror = new StyleSheetMirror();\n\n  // Used to track video & audio elements, and keep them in sync with general playback.\n  private mediaManager: MediaManager;\n\n  private firstFullSnapshot: eventWithTime | true | null = null;\n\n  private newDocumentQueue: addedNodeMutation[] = [];\n\n  private mousePos: mouseMovePos | null = null;\n  private touchActive: boolean | null = null;\n  private lastMouseDownEvent: [Node, Event] | null = null;\n\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  private lastHoveredRootNode: Document | ShadowRoot;\n\n  // Used to track text values for delta reconstruction during replay\n  private textValueMap: Map<number, string> = new Map();\n\n  // In the fast-forward mode, only the last selection data needs to be applied.\n  private lastSelectionData: selectionData | null = null;\n\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  private constructedStyleMutations: (\n    | styleSheetRuleData\n    | styleDeclarationData\n  )[] = [];\n\n  // Similar to the reason for constructedStyleMutations.\n  private adoptedStyleSheets: adoptedStyleSheetData[] = [];\n\n  constructor(\n    events: Array<eventWithTime | string>,\n    config?: Partial<playerConfig>,\n  ) {\n    if (!config?.liveMode && events.length < 2) {\n      throw new Error('Replayer need at least 2 events.');\n    }\n    const defaultConfig: playerConfig = {\n      speed: 1,\n      maxSpeed: 360,\n      root: document.body,\n      loadTimeout: 0,\n      skipInactive: false,\n      inactivePeriodThreshold: 10 * 1000,\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, // Virtual-dom optimization is enabled by default.\n      logger: console,\n    };\n    this.config = Object.assign({}, defaultConfig, config);\n\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 as Handler);\n\n    this.setupDom();\n\n    /**\n     * Exposes mirror to the plugins\n     */\n    for (const plugin of this.config.plugins || []) {\n      if (plugin.getMirror) plugin.getMirror({ nodeMirror: this.mirror });\n    }\n\n    this.emitter.on(ReplayerEvents.Flush, () => {\n      if (this.usingVirtualDom) {\n        const replayerHandler: ReplayerHandler = {\n          mirror: this.mirror,\n          applyCanvas: (\n            canvasEvent: canvasEventWithTime,\n            canvasMutationData: canvasMutationData,\n            target: HTMLCanvasElement,\n          ) => {\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: (\n            data: styleDeclarationData | styleSheetRuleData,\n            styleSheet: CSSStyleSheet,\n          ) => {\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: (node: Node, id: number) => {\n            for (const plugin of this.config.plugins || []) {\n              if (plugin.onBuild) plugin.onBuild(node, { 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 (e) {\n            console.warn(e);\n          }\n\n        this.virtualDom.destroyTree();\n        this.usingVirtualDom = false;\n\n        // If these legacy missing nodes haven't been resolved, they should be converted to real Nodes.\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 as RRNode,\n                this.mirror,\n                this.virtualDom.mirror,\n              );\n              diff(\n                realNode,\n                value.node as RRNode,\n                replayerHandler,\n                this.virtualDom.mirror,\n              );\n              value.node = realNode;\n            } catch (error) {\n              this.warn(error);\n            }\n          }\n        }\n\n        this.constructedStyleMutations.forEach((data) => {\n          this.applyStyleSheetMutation(data);\n        });\n        this.constructedStyleMutations = [];\n\n        this.adoptedStyleSheets.forEach((data) => {\n          this.applyAdoptedStyleSheet(data);\n        });\n        this.adoptedStyleSheets = [];\n      }\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\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\n      if (this.lastMouseDownEvent) {\n        const [target, event] = this.lastMouseDownEvent;\n        target.dispatchEvent(event);\n      }\n      this.lastMouseDownEvent = null;\n\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      this.textValueMap.clear();\n    });\n\n    const timer = new Timer([], {\n      speed: this.config.speed,\n    });\n    this.service = createPlayerService(\n      {\n        events: events\n          .map((e) => {\n            if (config && config.unpackFn) {\n              return config.unpackFn(e as string);\n            }\n            return e as eventWithTime;\n          })\n          .sort((a1, a2) => a1.timestamp - a2.timestamp),\n        timer,\n        timeOffset: 0,\n        baselineTime: 0,\n        lastPlayedEvent: null,\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\n    // rebuild first full snapshot as the poster of the player\n    // maybe we can cache it for performance optimization\n    const firstMeta = this.service.state.context.events.find(\n      (e) => e.type === EventType.Meta,\n    );\n    const firstFullsnapshot = this.service.state.context.events.find(\n      (e) => e.type === EventType.FullSnapshot,\n    );\n    if (firstMeta) {\n      const { width, height } = firstMeta.data as metaEvent['data'];\n      setTimeout(() => {\n        this.emitter.emit(ReplayerEvents.Resize, {\n          width,\n          height,\n        });\n      }, 0);\n    }\n    if (firstFullsnapshot) {\n      setTimeout(() => {\n        // when something has been played, there is no need to rebuild poster\n        if (this.firstFullSnapshot) {\n          // true if any other fullSnapshot has been executed by Timer already\n          return;\n        }\n        this.firstFullSnapshot = firstFullsnapshot;\n        this.rebuildFullSnapshot(\n          firstFullsnapshot as fullSnapshotEvent & { timestamp: number },\n        );\n        this.iframe.contentWindow?.scrollTo(\n          (firstFullsnapshot as fullSnapshotEvent).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\n  public on(event: string, handler: Handler) {\n    this.emitter.on(event, handler);\n    return this;\n  }\n\n  public off(event: string, handler: Handler) {\n    this.emitter.off(event, handler);\n    return this;\n  }\n\n  public setConfig(config: Partial<playerConfig>) {\n    Object.keys(config).forEach((key) => {\n      const newConfigValue = config[key as keyof playerConfig];\n      (this.config as Record<keyof playerConfig, typeof newConfigValue>)[\n        key as keyof playerConfig\n      ] = config[key as keyof playerConfig];\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\n  public getMetaData(): playerMetaData {\n    const firstEvent = this.service.state.context.events[0];\n    const lastEvent =\n      this.service.state.context.events[\n        this.service.state.context.events.length - 1\n      ];\n    return {\n      startTime: firstEvent.timestamp,\n      endTime: lastEvent.timestamp,\n      totalTime: lastEvent.timestamp - firstEvent.timestamp,\n    };\n  }\n\n  /**\n   * Get the actual time offset the player is at now compared to the first event.\n   */\n  public getCurrentTime(): number {\n    return this.timer.timeOffset + this.getTimeOffset();\n  }\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  public getTimeOffset(): number {\n    const { baselineTime, events } = this.service.state.context;\n    return baselineTime - events[0].timestamp;\n  }\n\n  public getMirror(): Mirror {\n    return this.mirror;\n  }\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  public play(timeOffset = 0) {\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    this.iframe.contentDocument\n      ?.getElementsByTagName('html')[0]\n      ?.classList.remove('@sailfish-rrweb/rrweb-paused');\n    this.emitter.emit(ReplayerEvents.Start);\n  }\n\n  public pause(timeOffset?: number) {\n    if (timeOffset === undefined && 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    this.iframe.contentDocument\n      ?.getElementsByTagName('html')[0]\n      ?.classList.add('@sailfish-rrweb/rrweb-paused');\n    this.emitter.emit(ReplayerEvents.Pause);\n  }\n\n  public 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  /**\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  public destroy() {\n    this.pause();\n    this.mirror.reset();\n    this.styleMirror.reset();\n    this.mediaManager.reset();\n    this.textValueMap.clear();\n    this.config.root.removeChild(this.wrapper);\n    this.emitter.emit(ReplayerEvents.Destroy);\n  }\n\n  public startLive(baselineTime?: number) {\n    this.service.send({ type: 'TO_LIVE', payload: { baselineTime } });\n  }\n\n  public addEvent(rawEvent: eventWithTime | string) {\n    const event = this.config.unpackFn\n      ? this.config.unpackFn(rawEvent as string)\n      : (rawEvent as eventWithTime);\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\n  public enableInteract() {\n    this.iframe.setAttribute('scrolling', 'auto');\n    this.iframe.style.pointerEvents = 'auto';\n  }\n\n  public disableInteract() {\n    this.iframe.setAttribute('scrolling', 'no');\n    this.iframe.style.pointerEvents = 'none';\n  }\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  public resetCache() {\n    this.cache = createCache();\n  }\n\n  private setupDom() {\n    this.wrapper = document.createElement('div');\n    this.wrapper.classList.add('replayer-wrapper');\n    this.config.root.appendChild(this.wrapper);\n\n    this.mouse = document.createElement('div');\n    this.mouse.classList.add('replayer-mouse');\n    this.wrapper.appendChild(this.mouse);\n\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\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    // hide iframe before first meta event\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      smoothscrollPolyfill(\n        this.iframe.contentWindow,\n        this.iframe.contentDocument,\n      );\n\n      polyfill(this.iframe.contentWindow as IWindow);\n    }\n  }\n\n  private handleResize = (dimension: viewportResizeDimension) => {\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\n  private applyEventsSynchronously = (events: Array<eventWithTime>) => {\n    for (const event of events) {\n      switch (event.type) {\n        case EventType.DomContentLoaded:\n        case EventType.Load:\n        case EventType.Custom:\n          continue;\n        case EventType.FullSnapshot:\n        case EventType.Meta:\n        case EventType.Plugin:\n        case EventType.IncrementalSnapshot:\n          break;\n        default:\n          break;\n      }\n      const castFn = this.getCastFn(event, true);\n      castFn();\n    }\n  };\n\n  private getCastFn = (event: eventWithTime, isSync = false) => {\n    let castFn: undefined | (() => void);\n    switch (event.type) {\n      case EventType.DomContentLoaded:\n      case EventType.Load:\n        break;\n      case EventType.Custom:\n        castFn = () => {\n          /**\n           * emit custom-event and pass the event object.\n           *\n           * This will add more value to the custom event and allows the client to react for custom-event.\n           */\n          this.emitter.emit(ReplayerEvents.CustomEvent, event);\n        };\n        break;\n      case EventType.Meta:\n        castFn = () =>\n          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          if (this.firstFullSnapshot) {\n            if (this.firstFullSnapshot === event) {\n              // we've already built this exact FullSnapshot when the player was mounted, and haven't built any other FullSnapshot since\n              this.firstFullSnapshot = true; // forget as we might need to re-execute this FullSnapshot later e.g. to rebuild after scrubbing\n              return;\n            }\n          } else {\n            // Timer (requestAnimationFrame) can be faster than setTimeout(..., 1)\n            this.firstFullSnapshot = true;\n          }\n          this.mediaManager.reset();\n          this.styleMirror.reset();\n          this.rebuildFullSnapshot(event, isSync);\n          this.iframe.contentWindow?.scrollTo(event.data.initialOffset);\n        };\n        break;\n      case EventType.IncrementalSnapshot:\n        castFn = () => {\n          this.applyIncremental(event, isSync);\n          if (isSync) {\n            // do not check skip in sync\n            return;\n          }\n          if (event === this.nextUserInteractionEvent) {\n            this.nextUserInteractionEvent = null;\n            this.backToNormal();\n          }\n          if (!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! >\n                  this.config.inactivePeriodThreshold *\n                    this.speedService.state.context.timer.speed\n                ) {\n                  this.nextUserInteractionEvent = _event;\n                }\n                break;\n              }\n            }\n            if (this.nextUserInteractionEvent) {\n              if (this.config.skipInactive) {\n                this.play(\n                  this.nextUserInteractionEvent.timestamp! -\n                    this.getMetaData().startTime -\n                    1000\n                );\n              } else {\n                const skipTime =\n                  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                  this.nextUserInteractionEvent.delay! - event.delay!;\n                const payload = {\n                  speed: Math.min(\n                    Math.round(skipTime / SKIP_TIME_INTERVAL),\n                    this.config.maxSpeed,\n                  ),\n                };\n                this.speedService.send({ type: 'FAST_FORWARD', payload });\n                this.emitter.emit(ReplayerEvents.SkipStart, payload);\n              }\n            }\n          }\n        };\n        break;\n      default:\n    }\n    const wrappedCastFn = () => {\n      if (castFn) {\n        castFn();\n      }\n\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.handler) plugin.handler(event, isSync, { replayer: this });\n      }\n\n      this.service.send({ type: 'CAST_EVENT', payload: { event } });\n\n      // events are kept sorted by timestamp, check if this is the last event\n      const last_index = this.service.state.context.events.length - 1;\n      if (\n        !this.config.liveMode &&\n        event === this.service.state.context.events[last_index]\n      ) {\n        const finish = () => {\n          if (last_index < this.service.state.context.events.length - 1) {\n            // more events have been added since the setTimeout\n            return;\n          }\n          this.backToNormal();\n          this.service.send('END');\n          this.emitter.emit(ReplayerEvents.Finish);\n        };\n        let finish_buffer = 50; // allow for checking whether new events aren't just about to be loaded in\n        if (\n          event.type === EventType.IncrementalSnapshot &&\n          event.data.source === IncrementalSource.MouseMove &&\n          event.data.positions.length\n        ) {\n          // extend finish event if the last event is a mouse move so that the timer isn't stopped by the service before checking the last event\n          finish_buffer += Math.max(0, -event.data.positions[0].timeOffset);\n        }\n        setTimeout(finish, finish_buffer);\n      }\n\n      this.emitter.emit(ReplayerEvents.EventCast, event);\n    };\n    return wrappedCastFn;\n  };\n\n  private rebuildFullSnapshot(\n    event: fullSnapshotEvent & { timestamp: number },\n    isSync = false,\n  ) {\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 collected: AppendedIframe[] = [];\n    const afterAppend = (builtNode: Node, id: number) => {\n      this.collectIframeAndAttachDocument(collected, 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      for (const plugin of this.config.plugins || []) {\n        if (plugin.onBuild)\n          plugin.onBuild(builtNode, {\n            id,\n            replayer: this,\n          });\n      }\n    };\n\n    /**\n     * Normally rebuilding full snapshot should not be under virtual dom environment.\n     * But if the order of data events has some issues, it might be possible.\n     * Adding this check to avoid any potential issues.\n     */\n    if (this.usingVirtualDom) {\n      this.virtualDom.destroyTree();\n      this.usingVirtualDom = false;\n    }\n\n    this.mirror.reset();\n    this.textValueMap.clear();\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\n    for (const { mutationInQueue, builtNode } of collected) {\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    if (!this.service.state.matches('playing')) {\n      this.iframe.contentDocument\n        .getElementsByTagName('html')[0]\n        .classList.add('@sailfish-rrweb/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\n  private insertStyleRules(\n    documentElement: HTMLElement | RRElement,\n    head: HTMLHeadElement | RRElement,\n  ) {\n    const injectStylesRules = getInjectStyleRules(\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 (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 as RRElement).insertBefore(styleEl, head as RRElement);\n      styleEl.rules.push({\n        source: IncrementalSource.StyleSheetRule,\n        adds: injectStylesRules.map((cssText, index) => ({\n          rule: cssText,\n          index,\n        })),\n      });\n    } else {\n      const styleEl = document.createElement('style');\n      (documentElement as HTMLElement).insertBefore(\n        styleEl,\n        head as HTMLHeadElement,\n      );\n      for (let idx = 0; idx < injectStylesRules.length; idx++) {\n        styleEl.sheet?.insertRule(injectStylesRules[idx], idx);\n      }\n    }\n  }\n\n  private attachDocumentToIframe(\n    mutation: addedNodeMutation,\n    iframeEl: HTMLIFrameElement | RRIFrameElement,\n  ) {\n    const mirror: RRDOMMirror | Mirror = this.usingVirtualDom\n      ? this.virtualDom.mirror\n      : this.mirror;\n    type TNode = typeof mirror extends Mirror ? Node : RRNode;\n    type TMirror = typeof mirror extends Mirror ? Mirror : RRDOMMirror;\n\n    const collected: AppendedIframe[] = [];\n    const afterAppend = (builtNode: Node, id: number) => {\n      this.collectIframeAndAttachDocument(collected, builtNode);\n      const sn = (mirror as TMirror).getMeta(builtNode as unknown as TNode);\n      if (\n        sn?.type === NodeType.Element &&\n        sn?.tagName.toUpperCase() === 'HTML'\n      ) {\n        const { documentElement, head } = iframeEl.contentDocument!;\n        this.insertStyleRules(\n          documentElement as HTMLElement | RRElement,\n          head as HTMLElement | RRElement,\n        );\n      }\n\n      // Skip the plugin onBuild callback in the virtual dom mode\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\n    buildNodeWithSN(mutation.node, {\n      doc: iframeEl.contentDocument! as Document,\n      mirror: mirror as Mirror,\n      hackCss: true,\n      skipChild: false,\n      afterAppend,\n      cache: this.cache,\n    });\n    afterAppend(iframeEl.contentDocument! as Document, mutation.node.id);\n\n    for (const { mutationInQueue, builtNode } of collected) {\n      this.attachDocumentToIframe(mutationInQueue, builtNode);\n      this.newDocumentQueue = this.newDocumentQueue.filter(\n        (m) => m !== mutationInQueue,\n      );\n    }\n  }\n\n  private collectIframeAndAttachDocument(\n    collected: AppendedIframe[],\n    builtNode: Node,\n  ) {\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: builtNode as HTMLIFrameElement,\n        });\n      }\n    }\n  }\n\n  /**\n   * pause when loading style sheet, resume when loaded all timeout exceed\n   */\n  private waitForStylesheetLoad() {\n    const head = this.iframe.contentDocument?.head;\n    if (head) {\n      const unloadSheets: Set<HTMLLinkElement> = new Set();\n      let timer: ReturnType<typeof setTimeout> | -1;\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\n        .querySelectorAll('link[rel=\"stylesheet\"]')\n        .forEach((css: HTMLLinkElement) => {\n          if (!css.sheet) {\n            unloadSheets.add(css);\n            css.addEventListener('load', () => {\n              unloadSheets.delete(css);\n              // all loaded and timer not released yet\n              if (unloadSheets.size === 0 && timer !== -1) {\n                if (beforeLoadState.matches('playing')) {\n                  this.play(this.getCurrentTime());\n                }\n                this.emitter.emit(ReplayerEvents.LoadStylesheetEnd);\n                if (timer) {\n                  clearTimeout(timer);\n                }\n                unsubscribe();\n              }\n            });\n          }\n        });\n\n      if (unloadSheets.size > 0) {\n        // find some unload sheets after iterate\n        this.service.send({ type: 'PAUSE' });\n        this.emitter.emit(ReplayerEvents.LoadStylesheetStart);\n        timer = setTimeout(() => {\n          if (beforeLoadState.matches('playing')) {\n            this.play(this.getCurrentTime());\n          }\n          // mark timer was called\n          timer = -1;\n          unsubscribe();\n        }, this.config.loadTimeout);\n      }\n    }\n  }\n\n  /**\n   * pause when there are some canvas drawImage args need to be loaded\n   */\n  private async preloadAllImages(): Promise<void[]> {\n    const promises: Promise<void>[] = [];\n    for (const event of this.service.state.context.events) {\n      if (\n        event.type === EventType.IncrementalSnapshot &&\n        event.data.source === IncrementalSource.CanvasMutation\n      ) {\n        promises.push(\n          this.deserializeAndPreloadCanvasEvents(event.data, event),\n        );\n        const commands =\n          'commands' in event.data ? event.data.commands : [event.data];\n        commands.forEach((c) => {\n          this.preloadImages(c, event);\n        });\n      }\n    }\n    return Promise.all(promises);\n  }\n\n  private preloadImages(data: canvasMutationCommand, event: eventWithTime) {\n    if (\n      data.property === 'drawImage' &&\n      typeof data.args[0] === 'string' &&\n      !this.imageMap.has(event)\n    ) {\n      const canvas = document.createElement('canvas');\n      const ctx = canvas.getContext('2d');\n      const imgd = ctx?.createImageData(canvas.width, canvas.height);\n      ctx?.putImageData(imgd!, 0, 0);\n    }\n  }\n  private async deserializeAndPreloadCanvasEvents(\n    data: canvasMutationData,\n    event: eventWithTime,\n  ) {\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 (c) => {\n            const args = await Promise.all(\n              c.args.map(deserializeArg(this.imageMap, null, status)),\n            );\n            return { ...c, 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\n  private applyIncremental(\n    e: incrementalSnapshotEvent & { timestamp: number; delay?: number },\n    isSync: boolean,\n  ) {\n    const { data: d } = e;\n    switch (d.source) {\n      case IncrementalSource.Mutation: {\n        try {\n          this.applyMutation(d, isSync);\n        } catch (error) {\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\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:\n                p.timeOffset +\n                e.timestamp -\n                this.service.state.context.baselineTime,\n            };\n            this.timer.addAction(action);\n          });\n          // add a dummy action to keep timer alive\n          this.timer.addAction({\n            doAction() {\n              //\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            delay: e.delay! - d.positions[0]?.timeOffset,\n          });\n        }\n        break;\n      case IncrementalSource.MouseInteraction: {\n        /**\n         * Same as the situation of missing input target.\n         */\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 as HTMLElement)) {\n              (target as HTMLElement).blur();\n            }\n            break;\n          case MouseInteractions.Focus:\n            if (triggerFocus && (target as HTMLElement).focus) {\n              (target as HTMLElement).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                // don't draw a trail as user has lifted finger and is placing at a new point\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                /*\n                 * don't want target.click() here as could trigger an iframe navigation\n                 * instead any effects of the click should already be covered by mutations\n                 */\n                /*\n                 * removal and addition of .active class (along with void line to trigger repaint)\n                 * triggers the 'click' css animation in styles/style.css\n                 */\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; // needed for the position update of moveAndHover to apply without the .touch-active transition\n                this.mouse.classList.add('touch-active');\n              } else if (d.type === MouseInteractions.TouchEnd) {\n                this.mouse.classList.remove('touch-active');\n              } else {\n                // for MouseDown & MouseUp also invoke default behavior\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        /**\n         * Same as the situation of missing input target.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id) as RRElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.scrollData = d;\n          break;\n        }\n        // Use isSync rather than this.usingVirtualDom because not every fast-forward process uses virtual dom optimization.\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        /**\n         * Input event on an unserialized node usually means the event\n         * was synchrony triggered programmatically after the node was\n         * created. This means there was not an user observable interaction\n         * and we do not need to replay it.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id) as RRElement;\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\n          ? this.virtualDom.mirror.getNode(d.id)\n          : this.mirror.getNode(d.id);\n        if (!target) {\n          return this.debugNodeNotFound(d, d.id);\n        }\n        const mediaEl = target as HTMLMediaElement | RRMediaElement;\n        const { events } = this.service.state.context;\n\n        this.mediaManager.mediaMutation({\n          target: mediaEl,\n          timeOffset: e.timestamp - events[0].timestamp,\n          mutation: d,\n        });\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            (\n              this.virtualDom.mirror.getNode(d.id) as RRStyleElement | null\n            )?.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          ) as RRCanvasElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.canvasMutations.push({\n            event: e as canvasEventWithTime,\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: e,\n            mutation: d,\n            target: target as HTMLCanvasElement,\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\n              ? new Uint8Array(JSON.parse(d.fontSource) as Iterable<number>)\n              : d.fontSource,\n            d.descriptors,\n          );\n          this.iframe.contentDocument?.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      default:\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  private applyMutation(d: mutationData, isSync: boolean) {\n    // Only apply virtual dom optimization if the fast-forward process has node mutation. Because the cost of creating a virtual dom tree and executing the diff algorithm is usually higher than directly applying other kind of events.\n    if (this.config.useVirtualDom && !this.usingVirtualDom && isSync) {\n      this.usingVirtualDom = true;\n      buildFromDom(this.iframe.contentDocument!, this.mirror, this.virtualDom);\n      // If these legacy missing nodes haven't been resolved, they should be converted to virtual nodes.\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 as 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 mirror = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n    type TNode = typeof mirror extends Mirror ? Node : RRNode;\n\n    const removes = d.removes.filter((mutation) => {\n      // warn of absence from mirror before we start applying each removal\n      // as earlier removals could remove a tree that includes a later removal\n      if (!mirror.getNode(mutation.id)) {\n        this.warnNodeNotFound(d, mutation.id);\n        return false;\n      }\n      return true;\n    });\n    removes.forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        // no need to warn here, an ancestor may have already been removed\n        return;\n      }\n      let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(\n        mutation.parentId,\n      );\n      if (!parent) {\n        return this.warnNodeNotFound(d, mutation.parentId);\n      }\n      if (mutation.isShadow && hasShadowRoot(parent as Node)) {\n        parent = (parent as Element | RRElement).shadowRoot;\n      }\n      // target may be removed with its parents before\n      mirror.removeNodeFromMap(target as Node & RRNode);\n      if (parent)\n        try {\n          parent.removeChild(target as Node & RRNode);\n          /**\n           * https://github.com/rrweb-io/rrweb/pull/887\n           * Remove any virtual style rules for stylesheets if a child text node is removed.\n           */\n          if (\n            this.usingVirtualDom &&\n            target.nodeName === '#text' &&\n            parent.nodeName === 'STYLE' &&\n            (parent as RRStyleElement).rules?.length > 0\n          )\n            (parent as RRStyleElement).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\n    const legacy_missingNodeMap: missingNodeMap = {\n      ...this.legacy_missingNodeRetryMap,\n    };\n    const queue: addedNodeMutation[] = [];\n\n    // next not present at this moment\n    const nextNotInDOM = (mutation: addedNodeMutation) => {\n      let next: TNode | null = null;\n      if (mutation.nextId) {\n        next = mirror.getNode(mutation.nextId) as TNode | null;\n      }\n      // next not present at this moment\n      if (\n        mutation.nextId !== null &&\n        mutation.nextId !== undefined &&\n        mutation.nextId !== -1 &&\n        !next\n      ) {\n        return true;\n      }\n      return false;\n    };\n\n    const appendNode = (mutation: addedNodeMutation) => {\n      if (!this.iframe.contentDocument) {\n        return this.warn('Looks like your replayer has been destroyed.');\n      }\n      let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(\n        mutation.parentId,\n      );\n      if (!parent) {\n        if (mutation.node.type === NodeType.Document) {\n          // is newly added document, maybe the document node of an iframe\n          return this.newDocumentQueue.push(mutation);\n        }\n        return queue.push(mutation);\n      }\n\n      if (mutation.node.isShadow) {\n        // If the parent is attached a shadow dom after it's created, it won't have a shadow root.\n        if (!hasShadowRoot(parent)) {\n          (parent as Element | RRElement).attachShadow({ mode: 'open' });\n          parent = (parent as Element | RRElement).shadowRoot! as Node | RRNode;\n        } else parent = parent.shadowRoot as Node | RRNode;\n      }\n\n      let previous: Node | RRNode | null = null;\n      let next: Node | RRNode | null = null;\n      if (mutation.previousId) {\n        previous = mirror.getNode(mutation.previousId);\n      }\n      if (mutation.nextId) {\n        next = mirror.getNode(mutation.nextId);\n      }\n      if (nextNotInDOM(mutation)) {\n        return queue.push(mutation);\n      }\n\n      if (mutation.node.rootId && !mirror.getNode(mutation.node.rootId)) {\n        return;\n      }\n\n      const targetDoc = mutation.node.rootId\n        ? mirror.getNode(mutation.node.rootId)\n        : this.usingVirtualDom\n        ? this.virtualDom\n        : this.iframe.contentDocument;\n      if (isSerializedIframe<typeof parent>(parent, mirror)) {\n        this.attachDocumentToIframe(\n          mutation,\n          parent as HTMLIFrameElement | RRIFrameElement,\n        );\n        return;\n      }\n      const afterAppend = (node: Node | RRNode, id: number) => {\n        // Skip the plugin onBuild callback for virtual dom\n        if (this.usingVirtualDom) return;\n        for (const plugin of this.config.plugins || []) {\n          if (plugin.onBuild) plugin.onBuild(node, { id, replayer: this });\n        }\n      };\n\n      const target = buildNodeWithSN(mutation.node, {\n        doc: targetDoc as Document, // can be Document or RRDocument\n        mirror: mirror as Mirror, // 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      }) as Node | RRNode;\n\n      // legacy data, we should not have -1 siblings any more\n      if (mutation.previousId === -1 || mutation.nextId === -1) {\n        legacy_missingNodeMap[mutation.node.id] = {\n          node: target,\n          mutation,\n        };\n        return;\n      }\n\n      // Typescripts type system is not smart enough\n      // to understand what is going on with the types below\n      type TNode = typeof mirror extends Mirror ? Node : RRNode;\n      type TMirror = typeof mirror extends Mirror ? Mirror : RRDOMMirror;\n\n      const parentSn = (mirror as TMirror).getMeta(parent as TNode);\n      if (\n        parentSn &&\n        parentSn.type === NodeType.Element &&\n        mutation.node.type === NodeType.Text\n      ) {\n        const prospectiveSiblings = Array.isArray(parent.childNodes)\n          ? parent.childNodes\n          : Array.from(parent.childNodes);\n        if (parentSn.tagName === 'textarea') {\n          // This should be redundant now as we are either recording the value or the childNode, and not both\n          // keeping around for backwards compatibility with old bad double data, see\n\n          // https://github.com/rrweb-io/rrweb/issues/745\n          // parent is textarea, will only keep one child node as the value\n          for (const c of prospectiveSiblings) {\n            if (c.nodeType === parent.TEXT_NODE) {\n              parent.removeChild(c as Node & RRNode);\n            }\n          }\n        } else if (\n          parentSn.tagName === 'style' &&\n          prospectiveSiblings.length === 1\n        ) {\n          // https://github.com/rrweb-io/rrweb/pull/1417\n          /**\n           * If both _cssText and textContent are present for a style element due to some existing bugs, the element was ending up with two child text nodes\n           * We need to remove the textNode created by _cssText as it doesn't have an id in the mirror, and thus cannot be further mutated.\n           */\n          for (const cssText of prospectiveSiblings as (Node & RRNode)[]) {\n            if (\n              cssText.nodeType === parent.TEXT_NODE &&\n              !mirror.hasNode(cssText)\n            ) {\n              target.textContent = cssText.textContent;\n              parent.removeChild(cssText);\n            }\n          }\n        }\n      } else if (parentSn?.type === NodeType.Document) {\n        /**\n         * Sometimes the document object is changed or reopened and the MutationObserver is disconnected, so the removal of child elements can't be detected and recorded.\n         * After the change of document, we may get another mutation which adds a new doctype or a HTML element, while the old one still exists in the dom.\n         * So, we need to remove the old one first to avoid collision.\n         */\n        const parentDoc = parent as Document | RRDocument;\n        /**\n         * To detect the exist of the old doctype before adding a new doctype.\n         * We need to remove the old doctype before adding the new one. Otherwise, code will throw \"mutation Failed to execute 'insertBefore' on 'Node': Only one doctype on document allowed\".\n         */\n        if (\n          mutation.node.type === NodeType.DocumentType &&\n          parentDoc.childNodes[0]?.nodeType === Node.DOCUMENT_TYPE_NODE\n        )\n          parentDoc.removeChild(parentDoc.childNodes[0] as Node & RRNode);\n        /**\n         * To detect the exist of the old HTML element before adding a new HTML element.\n         * The reason is similar to the above. One document only allows exactly one DocType and one HTML Element.\n         */\n        if (target.nodeName === 'HTML' && parentDoc.documentElement)\n          parentDoc.removeChild(\n            parentDoc.documentElement as HTMLElement & RRNode,\n          );\n      }\n\n      if (previous && previous.nextSibling && previous.nextSibling.parentNode) {\n        (parent as TNode).insertBefore(\n          target as TNode,\n          previous.nextSibling as TNode,\n        );\n      } else if (next && next.parentNode) {\n        // making sure the parent contains the reference nodes\n        // before we insert target before next.\n        (parent as TNode).contains(next as TNode)\n          ? (parent as TNode).insertBefore(target as TNode, next as TNode)\n          : (parent as TNode).insertBefore(target as TNode, null);\n      } else {\n        (parent as TNode).appendChild(target as TNode);\n      }\n      /**\n       * target was added, execute plugin hooks\n       */\n      afterAppend(target, mutation.node.id);\n\n      /**\n       * https://github.com/rrweb-io/rrweb/pull/887\n       * Remove any virtual style rules for stylesheets if a new text node is appended.\n       */\n      if (\n        this.usingVirtualDom &&\n        target.nodeName === '#text' &&\n        parent.nodeName === 'STYLE' &&\n        (parent as RRStyleElement).rules?.length > 0\n      )\n        (parent as RRStyleElement).rules = [];\n\n      if (isSerializedIframe(target, this.mirror)) {\n        const targetId = this.mirror.getId(target as HTMLIFrameElement);\n        const mutationInQueue = this.newDocumentQueue.find(\n          (m) => m.parentId === targetId,\n        );\n        if (mutationInQueue) {\n          this.attachDocumentToIframe(\n            mutationInQueue,\n            target as HTMLIFrameElement,\n          );\n          this.newDocumentQueue = this.newDocumentQueue.filter(\n            (m) => m !== mutationInQueue,\n          );\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\n    d.adds.forEach((mutation) => {\n      appendNode(mutation);\n    });\n\n    const startTime = Date.now();\n    while (queue.length) {\n      // transform queue to resolve tree\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 = mirror.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\n    if (Object.keys(legacy_missingNodeMap).length) {\n      Object.assign(this.legacy_missingNodeRetryMap, legacy_missingNodeMap);\n    }\n\n    uniqueTextMutations(d.texts).forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r) => r.id === mutation.id)) {\n          // no need to warn, element was already removed\n          return;\n        }\n        return this.warnNodeNotFound(d, mutation.id);\n      }\n\n      // Resolve text value - either from delta or direct value\n      let textValue: string | null;\n      if (mutation.delta) {\n        // Delta format - reconstruct from current value\n        const currentValue = this.textValueMap.get(mutation.id) || '';\n        textValue = applyTextDelta(currentValue, mutation.delta);\n      } else {\n        // Full value format (legacy or fallback)\n        textValue = mutation.value ?? null;\n      }\n\n      target.textContent = textValue;\n\n      // Track value for future delta reconstructions\n      if (textValue !== null) {\n        this.textValueMap.set(mutation.id, textValue);\n      }\n\n      /**\n       * https://github.com/rrweb-io/rrweb/pull/865\n       * Remove any virtual style rules for stylesheets whose contents are replaced.\n       */\n      if (this.usingVirtualDom) {\n        const parent = target.parentNode as RRStyleElement;\n        if (parent?.rules?.length > 0) parent.rules = [];\n      }\n    });\n    d.attributes.forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r) => r.id === mutation.id)) {\n          // no need to warn, element was already removed\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 as Element | RRElement).removeAttribute(attributeName);\n          } else if (typeof value === 'string') {\n            try {\n              // When building snapshot, some link styles haven't loaded. Then they are loaded, they will be inlined as incremental mutation change of attribute. We need to replace the old elements whose styles aren't inlined.\n              if (\n                attributeName === '_cssText' &&\n                (target.nodeName === 'LINK' || target.nodeName === 'STYLE')\n              ) {\n                try {\n                  const newSn = mirror.getMeta(\n                    target as Node & RRNode,\n                  ) as serializedElementNodeWithId;\n                  Object.assign(\n                    newSn.attributes,\n                    mutation.attributes as attributes,\n                  );\n                  const newNode = buildNodeWithSN(newSn, {\n                    doc: target.ownerDocument as Document, // can be Document or RRDocument\n                    mirror: mirror as Mirror,\n                    skipChild: true,\n                    hackCss: true,\n                    cache: this.cache,\n                  });\n                  const siblingNode = target.nextSibling;\n                  const parentNode = target.parentNode;\n                  if (newNode && parentNode) {\n                    parentNode.removeChild(target as Node & RRNode);\n                    parentNode.insertBefore(\n                      newNode as Node & RRNode,\n                      siblingNode as (Node & RRNode) | null,\n                    );\n                    mirror.replace(mutation.id, newNode as Node & RRNode);\n                    break;\n                  }\n                } catch (e) {\n                  // for safe\n                }\n              }\n              if (attributeName === 'value' && target.nodeName === 'TEXTAREA') {\n                // this may or may not have an effect on the value property (which is what is displayed)\n                // depending on whether the textarea has been modified by the user yet\n                // TODO: replaceChildNodes is not available in RRDom\n                const textarea = target as TNode;\n                textarea.childNodes.forEach((c) =>\n                  textarea.removeChild(c as TNode),\n                );\n                const tn = target.ownerDocument?.createTextNode(value);\n                if (tn) {\n                  textarea.appendChild(tn as TNode);\n                }\n              } else {\n                (target as Element | RRElement).setAttribute(\n                  attributeName,\n                  value,\n                );\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 as HTMLElement | RRElement;\n            for (const s in styleValues) {\n              if (styleValues[s] === false) {\n                targetEl.style.removeProperty(s);\n              } else if (styleValues[s] instanceof Array) {\n                const svp = styleValues[s] as styleValueWithPriority;\n                targetEl.style.setProperty(s, svp[0], svp[1]);\n              } else {\n                const svs = styleValues[s] as string;\n                targetEl.style.setProperty(s, svs);\n              }\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  private applyScroll(d: scrollData, isSync: boolean) {\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      this.iframe.contentWindow?.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? 'auto' : 'smooth',\n      });\n    } else if (sn?.type === NodeType.Document) {\n      // nest iframe content document\n      (target as Document).defaultView?.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? 'auto' : 'smooth',\n      });\n    } else {\n      try {\n        (target as Element).scrollTo({\n          top: d.y,\n          left: d.x,\n          behavior: isSync ? 'auto' : 'smooth',\n        });\n      } catch (error) {\n        /**\n         * Seldomly we may found scroll target was removed before\n         * its last scroll event.\n         */\n      }\n    }\n  }\n\n  private applyInput(d: inputData) {\n    const target = this.mirror.getNode(d.id);\n    if (!target) {\n      return this.debugNodeNotFound(d, d.id);\n    }\n    try {\n      (target as HTMLInputElement).checked = d.isChecked;\n      (target as HTMLInputElement).value = d.text;\n    } catch (error) {\n      // for safe\n    }\n  }\n\n  private applySelection(d: selectionData) {\n    try {\n      const selectionSet = new Set<Selection>();\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\n        if (!startContainer || !endContainer) return;\n\n        const result = new Range();\n\n        result.setStart(startContainer, startOffset);\n        result.setEnd(endContainer, endOffset);\n        const doc = startContainer.ownerDocument;\n        const selection = doc?.getSelection();\n        selection && selectionSet.add(selection);\n\n        return {\n          range: result,\n          selection,\n        };\n      });\n\n      selectionSet.forEach((s) => s.removeAllRanges());\n\n      ranges.forEach((r) => r && r.selection?.addRange(r.range));\n    } catch (error) {\n      // for safe\n    }\n  }\n\n  private applyStyleSheetMutation(\n    data: styleDeclarationData | styleSheetRuleData,\n  ) {\n    let styleSheet: CSSStyleSheet | null = null;\n    if (data.styleId) styleSheet = this.styleMirror.getStyle(data.styleId);\n    else if (data.id)\n      styleSheet =\n        (this.mirror.getNode(data.id) as HTMLStyleElement)?.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\n  private applyStyleSheetRule(\n    data: styleSheetRuleData,\n    styleSheet: CSSStyleSheet,\n  ) {\n    data.adds?.forEach(({ rule, index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.insertRule(rule, index);\n        } else {\n          const index =\n            nestedIndex === undefined\n              ? undefined\n              : Math.min(nestedIndex, styleSheet.cssRules.length);\n          styleSheet?.insertRule(rule, index);\n        }\n      } catch (e) {\n        /**\n         * sometimes we may capture rules with browser prefix\n         * insert rule with prefixs in other browsers may cause Error\n         */\n        /**\n         * accessing styleSheet rules may cause SecurityError\n         * for specific access control settings\n         */\n      }\n    });\n\n    data.removes?.forEach(({ index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.deleteRule(index || 0);\n        } else {\n          styleSheet?.deleteRule(nestedIndex);\n        }\n      } catch (e) {\n        /**\n         * same as insertRule\n         */\n      }\n    });\n\n    if (data.replace)\n      try {\n        void styleSheet.replace?.(data.replace);\n      } catch (e) {\n        // for safety\n      }\n\n    if (data.replaceSync)\n      try {\n        styleSheet.replaceSync?.(data.replaceSync);\n      } catch (e) {\n        // for safety\n      }\n  }\n\n  private applyStyleDeclaration(\n    data: styleDeclarationData,\n    styleSheet: CSSStyleSheet,\n  ) {\n    if (data.set) {\n      const rule = getNestedRule(\n        styleSheet.rules,\n        data.index,\n      ) as unknown as CSSStyleRule;\n      rule.style.setProperty(\n        data.set.property,\n        data.set.value,\n        data.set.priority,\n      );\n    }\n\n    if (data.remove) {\n      const rule = getNestedRule(\n        styleSheet.rules,\n        data.index,\n      ) as unknown as CSSStyleRule;\n      rule.style.removeProperty(data.remove.property);\n    }\n  }\n\n  private applyAdoptedStyleSheet(data: adoptedStyleSheetData) {\n    const targetHost = this.mirror.getNode(data.id);\n    if (!targetHost) return;\n    // Create StyleSheet objects which will be adopted after.\n    data.styles?.forEach((style) => {\n      let newStyleSheet: CSSStyleSheet | null = null;\n      /**\n       * Constructed StyleSheet can't share across multiple documents.\n       * The replayer has to get the correct host window to recreate a StyleSheetObject.\n       */\n      let hostWindow: IWindow | null = null;\n      if (hasShadowRoot(targetHost))\n        hostWindow = targetHost.ownerDocument?.defaultView || null;\n      else if (targetHost.nodeName === '#document')\n        hostWindow = (targetHost as Document).defaultView;\n\n      if (!hostWindow) return;\n      try {\n        newStyleSheet = new hostWindow.CSSStyleSheet();\n        this.styleMirror.add(newStyleSheet, style.styleId);\n        // To reuse the code of applying stylesheet rules\n        this.applyStyleSheetRule(\n          {\n            source: IncrementalSource.StyleSheetRule,\n            adds: style.rules,\n          },\n          newStyleSheet,\n        );\n      } catch (e) {\n        // In case some browsers don't support constructing StyleSheet.\n      }\n    });\n\n    const MAX_RETRY_TIME = 10;\n    let count = 0;\n    const adoptStyleSheets = (targetHost: Node, styleIds: number[]) => {\n      const stylesToAdopt = styleIds\n        .map((styleId) => this.styleMirror.getStyle(styleId))\n        .filter((style) => style !== null) as CSSStyleSheet[];\n      if (hasShadowRoot(targetHost))\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        (targetHost as HTMLElement).shadowRoot!.adoptedStyleSheets =\n          stylesToAdopt;\n      else if (targetHost.nodeName === '#document')\n        (targetHost as Document).adoptedStyleSheets = stylesToAdopt;\n\n      /**\n       * In the live mode where events are transferred over network without strict order guarantee, some newer events are applied before some old events and adopted stylesheets may haven't been created.\n       * This retry mechanism can help resolve this situation.\n       */\n      if (stylesToAdopt.length !== styleIds.length && count < MAX_RETRY_TIME) {\n        setTimeout(\n          () => adoptStyleSheets(targetHost, styleIds),\n          0 + 100 * count,\n        );\n        count++;\n      }\n    };\n    adoptStyleSheets(targetHost, data.styleIds);\n  }\n\n  private legacy_resolveMissingNode(\n    map: missingNodeMap,\n    parent: Node | RRNode,\n    target: Node | RRNode,\n    targetMutation: addedNodeMutation,\n  ) {\n    const { previousId, nextId } = targetMutation;\n    const previousInMap = previousId && map[previousId];\n    const nextInMap = nextId && map[nextId];\n    if (previousInMap) {\n      const { node, mutation } = previousInMap;\n      parent.insertBefore(node as Node & RRNode, target as Node & RRNode);\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, node, mutation);\n      }\n    }\n    if (nextInMap) {\n      const { node, mutation } = nextInMap;\n      parent.insertBefore(\n        node as Node & RRNode,\n        target.nextSibling as Node & RRNode,\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, node, mutation);\n      }\n    }\n  }\n\n  private moveAndHover(\n    x: number,\n    y: number,\n    id: number,\n    isSync: boolean,\n    debugData: incrementalData,\n  ) {\n    const target = this.mirror.getNode(id);\n    if (!target) {\n      return this.debugNodeNotFound(debugData, id);\n    }\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\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 as Element);\n  }\n\n  private drawMouseTail(position: { x: number; y: number }) {\n    if (!this.mouseTail) {\n      return;\n    }\n\n    const { lineCap, lineWidth, strokeStyle, duration } =\n      this.config.mouseTail === true\n        ? defaultMouseTailConfig\n        : Object.assign({}, defaultMouseTailConfig, this.config.mouseTail);\n\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\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\n  private hoverElements(el: Element) {\n    (this.lastHoveredRootNode || this.iframe.contentDocument)\n      ?.querySelectorAll('.\\\\:hover')\n      .forEach((hoveredEl) => {\n        hoveredEl.classList.remove(':hover');\n      });\n    this.lastHoveredRootNode = el.getRootNode() as Document | ShadowRoot;\n    let currentEl: Element | null = el;\n    while (currentEl) {\n      if (currentEl.classList) {\n        currentEl.classList.add(':hover');\n      }\n      currentEl = currentEl.parentElement;\n    }\n  }\n\n  private isUserInteraction(event: eventWithTime): boolean {\n    if (event.type !== EventType.IncrementalSnapshot) {\n      return false;\n    }\n    return (\n      event.data.source > IncrementalSource.Mutation &&\n      event.data.source <= IncrementalSource.Input\n    );\n  }\n\n  public 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\n  private warnNodeNotFound(d: incrementalData, id: number) {\n    this.warn(`Node with id '${id}' not found. `, d);\n  }\n\n  private warnCanvasMutationFailed(\n    d: canvasMutationData | canvasMutationCommand,\n    error: unknown,\n  ) {\n    this.warn(`Has error on canvas update`, error, 'canvas mutation:', d);\n  }\n\n  private debugNodeNotFound(d: incrementalData, id: number) {\n    /**\n     * There maybe some valid scenes of node not being found.\n     * Because DOM events are macrotask and MutationObserver callback\n     * is microtask, so events fired on a removed DOM may emit\n     * snapshots in the reverse order.\n     */\n    this.debug(`Node with id '${id}' not found. `, d);\n  }\n\n  private warn(...args: Parameters<typeof console.warn>) {\n    if (!this.config.showWarning) {\n      return;\n    }\n    this.config.logger.warn(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n\n  private debug(...args: Parameters<typeof console.log>) {\n    if (!this.config.showDebug) {\n      return;\n    }\n    this.config.logger.log(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n}\n\nexport { type PlayerMachineState, type SpeedMachineState, type playerConfig };\n", "\nimport record from \"./record\";\nimport {\n  Replayer,\n  type playerConfig,\n  type PlayerMachineState,\n  type SpeedMachineState,\n} from \"./replay\";\nimport canvasMutation from \"./replay/canvas\";\nimport * as utils from \"./utils\";\nimport { _mirror } from \"./utils\";\n\nexport {\n  EventType,\n  IncrementalSource,\n  MouseInteractions,\n  ReplayerEvents,\n  type eventWithTime\n} from \"@sailfish-rrweb/types\";\n\n// exports style.css from replay\nimport \"./replay/styles/style.css\";\n\nexport type { recordOptions, ReplayPlugin } from \"./types\";\n\nconst { addCustomEvent } = record;\nconst { addSailfishEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\n\nexport * from \"./record\";\nexport * from \"./utils\";\n\nexport {\n  addCustomEvent,\n  addSailfishEvent,\n  canvasMutation,\n  freezePage,\n  _mirror as mirror,\n  record,\n  Replayer,\n  takeFullSnapshot,\n  utils,\n  type playerConfig,\n  type PlayerMachineState,\n  type SpeedMachineState,\n};\n"],
  "mappings": "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",
  "names": ["Cr", "Sr", "s", "e", "t", "Ne", "w", "Qe", "xr", "Ae", "vr", "Er", "Rr", "r", "i", "It", "Or", "n", "l", "a", "o", "f", "u", "de", "kr", "_t", "Ar", "Nr", "Ke$1", "tn", "Ke", "Mr", "Ce", "at", "Pr", "Ir", "_r", "$t", "Lt", "$r", "ut", "Lr", "Tr", "Dr", "z", "ft", "Ur", "Br", "Fr", "zr", "me", "d", "Wr", "jr", "Gr", "W", "ct", "Se", "Vr", "Hr", "Jr", "Yr", "$e", "qr", "Qr", "Kr", "Xr", "g", "E", "R", "c", "m", "Zr", "ts", "es", "k", "p", "b", "O", "I", "A", "N", "_", "M", "S", "rs", "K", "U", "H", "x", "ke", "P", "B", "F", "rn", "ss", "is", "Xe", "y", "Tt", "ns", "os", "ls", "$", "ht", "pt", "Le", "Dt", "Ze", "Le$1", "dt", "as", "Te", "Ut", "Te$1", "us", "De", "xe", "De$1", "re", "fs", "cs", "hs", "J", "ps", "Ue", "Y", "Be", "ve", "Be$1", "ds", "Fe", "Ee", "Fe$1", "ms", "ze", "__spreadProps", "__spreadValues", "Re", "ze$1", "Bt", "Ft", "gs", "zt", "Wt", "et", "jt", "Gt", "tt", "Vt", "Ht", "T", "Jt", "D", "T$1", "Yt", "ge", "rt", "ge$1", "ys", "qt", "Qt", "X", "st", "X$1", "ws", "Cs", "Ss", "xs", "Me", "vs", "mt", "gt", "Es", "We", "Kt", "We$1", "Rs", "je", "Ge", "Os", "ks", "yt", "ie", "wt", "Ns", "Pe", "Ie", "As", "bt", "ye", "h", "Oe", "ye$1", "Pe$1", "Xt", "Zt", "er", "j", "se", "j$1", "Z", "tr", "Z$1", "rr", "Ms", "we", "it", "we$1", "Ps", "Is", "_s", "$s", "Ls", "Ts", "Ds", "ee", "Us", "ee$1", "he", "sr", "ir", "nr", "or", "pe", "Ct", "Bs", "Fs", "zs", "lr", "_e", "St", "ne", "xt", "oe", "q", "le", "ae", "ue", "js", "Gs", "Vs", "Hs", "Js", "Ys", "qs", "Qs", "Ks", "Xs", "fe", "ce", "Zs", "vt", "ei", "ti", "ri", "si", "ii", "Et", "ni", "Rt", "oi", "ai", "ui", "fi", "ci", "be", "nt", "be$1", "Ve", "ar", "Ve$1", "hi", "He", "ot", "He$1", "Ot", "ur", "pi", "di", "mi", "gi", "kt", "yi", "wi", "L", "bi", "Ci", "Si", "xi", "vi", "G", "Q", "fr", "Nt", "Je", "Ye", "V", "cr", "hr", "V$1", "Ei", "Ri", "Oi", "ki", "Ni", "qe", "Ai", "qe$1", "Mi", "Pi", "Ii", "_i", "te", "$i", "pr", "dr", "Li", "Ti", "mr", "gr", "Di", "Ui", "Bi", "Fi", "zi", "Wi", "lt", "ji", "yr", "wr", "Gi", "Vi", "C", "C$2", "Hi", "v", "Ji", "At", "Yi", "qi", "Mt", "Qi", "Pt", "xn", "Ki", "br", "Xi", "Zi", "vn", "on", "type", "fn", "target", "options", "DEPARTED_MIRROR_ACCESS_WARNING", "_mirror", "prop", "receiver", "throttle", "func", "wait", "timeout", "previous", "args", "now", "remaining", "context", "hookSetter", "key", "isRevoked", "win", "original", "value", "patch", "source", "name", "replacement", "wrapped", "nowTimestamp", "getWindowScroll", "doc", "_b", "_a", "_c", "_d", "_f", "getWindowHeight", "getWindowWidth", "closestElementOfNode", "node", "isBlocked", "blockClass", "blockSelector", "checkAncestors", "el", "classMatchesRegex", "isSerialized", "mirror", "isIgnored", "slimDOMOptions", "IGNORED_NODE", "isAncestorRemoved", "isShadowRoot", "id", "legacy_isTouchEvent", "event", "polyfill", "queueToResolveTrees", "queue", "queueNodeMap", "putIntoMap", "parent", "nodeInTree", "queueNodeTrees", "mutation", "nextId", "parentId", "nextInTree", "idx", "parentInTree", "iterateResolveTree", "tree", "cb", "isSerializedIframe", "isSerializedStylesheet", "getBaseDimension", "rootIframe", "frameElement", "frameDimension", "frameBaseDimension", "relativeScale", "hasShadowRoot", "getNestedRule", "rules", "position", "rule", "getPositionsAndIndex", "nestedIndex", "positions", "index", "uniqueTextMutations", "mutations", "idSet", "uniqueMutations", "StyleSheetMirror", "__publicField", "stylesheet", "newId", "getShadowHost", "shadowHost", "getRootShadowHost", "rootShadowHost", "shadowHostInDom", "inDom", "tu", "errorHandler", "registerErrorHandler", "handler", "unregisterErrorHandler", "callbackWrapper", "rest", "error", "CrossOriginIframeMirror", "generateIdFn", "iframe", "remoteId", "idToRemoteMap", "remoteToIdMap", "idToRemoteIdMap", "remoteIdToIdMap", "map", "ids", "IframeManager", "genId", "iframeEl", "childSn", "message", "crossOriginMessageEvent", "EventType", "rootId", "IncrementalSource", "range", "style", "iframeMirror", "obj", "keys", "child", "NodeType", "estimateJsonSize", "computeTextDiff", "oldText", "newText", "oldStr", "newStr", "fullTextSize", "appendedText", "delta", "TextDeltaOp", "deltaSize", "deleteLength", "commonPrefixLen", "minLen", "commonSuffixLen", "oldRemaining", "newRemaining", "maxSuffixLen", "oldMiddleLen", "newMiddleLen", "newMiddleText", "shouldUseDelta", "result", "applyTextDelta", "currentText", "text", "isNodeInLinkedList", "DoubleLinkedList", "current", "moveKey", "MutationBuffer", "adds", "addedIds", "addList", "getNextId", "pushAdd", "sn", "serializeNodeWithId", "currentN", "link", "isParentRemoved", "isAncestorInSet", "candidate", "tailNode", "_node", "unhandledNode", "payload", "diffResult", "attribute", "attributes", "diffAsStr", "unchangedAsStr", "textarea", "item", "cn", "isMasked", "needMaskingText", "maskedValue", "attributeName", "getInputType", "maskInputValue", "ignoreAttribute", "transformAttribute", "toLowerCase", "old", "pname", "newValue", "newPriority", "nodeId", "deepDelete", "isNativeShadowDom", "targetId", "childN", "addsSet", "removes", "_isParentRemoved", "set", "_isAncestorInSet", "parentNode", "mutationBuffers", "getEventTarget", "path", "initMutationObserver", "rootEl", "mutationBuffer", "mutationObserverCtor", "angularZoneSymbol", "observer", "initMoveObserver", "mousemoveCb", "sampling", "threshold", "callbackThreshold", "timeBaseline", "wrappedCb", "totalOffset", "updatePosition", "evt", "clientX", "clientY", "handlers", "initMouseInteractionObserver", "mouseInteractionCb", "disableMap", "currentPointerType", "getHandler", "eventKey", "pointerType", "thisEventKey", "PointerTypes", "MouseInteractions", "eventName", "initScrollObserver", "scrollCb", "scrollLeftTop", "initViewportResizeObserver", "viewportResizeCb", "lastH", "lastW", "updateDimension", "height", "width", "INPUT_TAGS", "lastInputValueMap", "initInputObserver", "inputCb", "ignoreClass", "ignoreSelector", "maskInputOptions", "maskInputFn", "userTriggeredOnInput", "eventHandler", "userTriggered", "tagName", "isChecked", "masked", "cbWithDedup", "lastInputValue", "currentWindow", "propertyDescriptor", "hookProperties", "initTypingObserver", "typingCb", "keydownHandler", "keyInfo", "getDomPath", "element", "selector", "classList", "siblings", "initDeviceChangeObserver", "deviceChangeCb", "handleUSBChange", "action", "deviceNames", "handleHIDChange", "handleGamepadChange", "gamepads", "devices", "handleMediaDeviceChange", "deviceList", "handleNetworkChange", "status", "networkHandlers", "gamepadPollInterval", "getNestedCSSRulePositions", "recurse", "childRule", "pos", "hasNestedCSSRule", "getIdAndStyleId", "sheet", "styleMirror", "styleId", "initStyleSheetObserver", "styleSheetRuleCb", "stylesheetManager", "insertRule", "thisArg", "argumentsList", "deleteRule", "replace", "replaceSync", "supportedNestedCSSRuleTypes", "canMonkeyPatchNestedCSSRule", "unmodifiedFunctions", "typeKey", "initAdoptedStyleSheetObserver", "host", "hostId", "patchTarget", "originalPropertyDescriptor", "sheets", "initStyleDeclarationObserver", "styleDeclarationCb", "ignoreCSSAttributes", "setProperty", "property", "priority", "removeProperty", "initMediaInteractionObserver", "mediaInteractionCb", "currentTime", "volume", "muted", "playbackRate", "loop", "MediaInteractions", "initFontObserver", "fontCb", "fontMap", "originalFontFace", "family", "descriptors", "safeSource", "fontFace", "restoreHandler", "initSelectionObserver", "param", "selectionCb", "collapsed", "updateSelection", "selection", "ranges", "count", "startContainer", "startOffset", "endContainer", "endOffset", "initCustomElementObserver", "customElementCb", "constructor", "mergeHooks", "hooks", "mutationCb", "canvasMutationCb", "initObservers", "mutationObserver", "mousemoveHandler", "mouseInteractionHandler", "scrollHandler", "viewportResizeHandler", "inputHandler", "typingHandler", "mediaDeviceChangeHandler", "mediaInteractionHandler", "styleSheetObserver", "adoptedStyleSheetObserver", "styleDeclarationObserver", "fontObserver", "selectionObserver", "customElementObserver", "pluginHandlers", "plugin", "ku", "Iu", "chars", "lookup", "encode", "arraybuffer", "bytes", "len", "base64", "decode", "bufferLength", "encoded1", "encoded2", "encoded3", "encoded4", "canvasVarMap", "variableListFor", "ctx", "ctor", "contextMap", "saveWebGLVar", "isInstanceOfWebGLObject", "list", "serializeArg", "arg", "src", "serializeArgs", "initCanvas2DMutationObserver", "props2D", "recordArgs", "CanvasContext", "hookHandler", "getNormalizedContextName", "contextType", "initCanvasContextObserver", "setPreserveDrawingBufferToTrue", "ctxName", "contextAttributes", "patchGLPrototype", "prototype", "props", "initCanvasWebGLMutationObserver", "CanvasManager", "recordCanvas", "dataURLOptions", "fps", "canvasContextReset", "snapshotInProgressMap", "worker", "ImageBitmapDataURLWorker", "timeBetweenSnapshots", "lastSnapshotTime", "rafId", "getCanvas", "matchedCanvas", "canvas", "takeCanvasSnapshots", "timestamp", "bitmap", "canvas2DReset", "canvasWebGL1and2Reset", "setLatestRAFTimestamp", "_values", "valuesWithType", "values", "ProcessedNodeManager", "thisBuffer", "buffers", "buffer", "ShadowDomManager", "shadowRoot", "iframeElement", "manager", "option", "StylesheetManager", "linkEl", "adoptedStyleSheetData", "styles", "stringifyRule", "_linkEl", "wrappedEmit", "takeFullSnapshot", "canvasManager", "recording", "cleanFrame", "err", "createMirror", "record", "emit", "checkoutEveryNms", "checkoutEveryNth", "maskTextClass", "maskTextSelector", "inlineStylesheet", "maskAllInputs", "_maskInputOptions", "_slimDOMOptions", "maskTextFn", "packFn", "mousemoveWait", "recordDOM", "recordCrossOriginIframes", "recordAfter", "collectFonts", "inlineImages", "plugins", "keepIframeSrcFn", "inEmittingFrame", "passEmitsToParent", "lastFullSnapshotEvent", "incrementalSnapshotCount", "eventProcessor", "isCheckout", "buf", "exceedCount", "exceedTime", "wrappedMutationEmit", "wrappedScrollEmit", "wrappedCanvasMutationEmit", "wrappedAdoptedStyleSheetEmit", "iframeManager", "processedNodeManager", "shadowDomManager", "corruptedRules", "snapshot", "observe", "init", "tag", "bs", "Ws", "li", "mitt$1", "ep", "oa", "webGLVarMap", "deserializeArg", "imageMap", "preload", "image", "blobContents", "canvasMutation", "mutationArgsPromises", "getContext", "WebGLVariableConstructorsNames", "saveToWebGLVarMap", "variables", "webglMutation", "debugMode", "canvasEventMap", "precomputedMutation", "commands", "command", "canvas2DMutation", "Timer", "actions", "config", "rafWasActive", "time", "speed", "start", "end", "mid", "addDelay", "baselineTime", "firstOffset", "firstTimestamp", "discardPriorSnapshots", "events", "createPlayerService", "getCastFn", "applyEventsSynchronously", "emitter", "playerMachine", "createMachine", "assign", "timeOffset", "timer", "neededEvents", "ReplayerEvents", "syncEvents", "castFn", "machineEvent", "insertionIndex", "isSync", "skipSync", "interpret", "createSpeedService", "speedMachine", "MediaManager", "_mediaState", "mediaState", "mediaPlaybackOffset", "duration", "seekToTime", "onLoadedMetadata", "lastState", "isPlaying", "playerIsPaused", "serializedNode", "mediaAttributes", "currentTimeAtLastInteraction", "Element", "SCROLL_TIME", "scrollElement", "isMicrosoftBrowser", "userAgent", "userAgentPatterns", "ROUNDING_TOLERANCE", "ease", "shouldBailOut", "firstArg", "hasScrollableSpace", "axis", "canOverflow", "overflowValue", "isScrollable", "isScrollableY", "isScrollableX", "findScrollableParent", "step", "currentX", "currentY", "elapsed", "smoothScroll", "scrollable", "startX", "startY", "method", "startTime", "left", "top", "scrollableParent", "parentRects", "clientRects", "SKIP_TIME_INTERVAL", "mitt", "mittProxy.default", "mittProxy", "REPLAY_CONSOLE_PREFIX", "defaultMouseTailConfig", "indicatesTouchDevice", "Replayer", "RRDocument", "createCache", "dimension", "_event", "skipTime", "last_index", "finish", "finish_buffer", "defaultConfig", "replayerHandler", "canvasEvent", "canvasMutationData", "data", "styleSheet", "diff", "realNode", "createOrGetNode", "a1", "a2", "state", "firstMeta", "firstFullsnapshot", "firstEvent", "lastEvent", "rawEvent", "smoothscrollPolyfill", "collected", "afterAppend", "builtNode", "rebuild", "mutationInQueue", "documentElement", "head", "injectStylesRules", "getInjectStyleRules", "styleEl", "getDefaultSN", "cssText", "buildNodeWithSN", "unloadSheets", "beforeLoadState", "stateHandler", "unsubscribe", "css", "promises", "imgd", "lastPosition", "triggerFocus", "mediaEl", "buildFromDom", "virtualNode", "buildFromNode", "legacy_missingNodeMap", "nextNotInDOM", "next", "appendNode", "targetDoc", "parentSn", "prospectiveSiblings", "parentDoc", "resolveTrees", "textValue", "currentValue", "newSn", "newNode", "siblingNode", "styleValues", "targetEl", "svp", "svs", "selectionSet", "targetHost", "newStyleSheet", "hostWindow", "MAX_RETRY_TIME", "adoptStyleSheets", "styleIds", "stylesToAdopt", "targetMutation", "previousId", "previousInMap", "nextInMap", "debugData", "base", "_x", "_y", "lineCap", "lineWidth", "strokeStyle", "draw", "hoveredEl", "currentEl", "addCustomEvent", "addSailfishEvent", "freezePage"]
}
