(globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["object" == typeof document ? document.currentScript : void 0, {
  388734: e => {
    "use strict";
    e.s({
      __iconNode: () => r,
      default: () => n
    });
    var t = e.i(180981);
    let r = [
        ["path", {
          d: "M17 6.1H3",
          key: "wptmhv"
        }],
        ["path", {
          d: "M21 12.1H3",
          key: "1j38uz"
        }],
        ["path", {
          d: "M15.1 18H3",
          key: "1nb16a"
        }]
      ],
      n = (0, t.default)("Text", r)
  },
  550702: e => {
    "use strict";
    e.s({
      Text: () => t.default
    });
    var t = e.i(388734)
  },
  57281: e => {
    "use strict";
    e.s({
      useColorScheme: () => r
    });
    var t = e.i(378469);

    function r() {
      let [e, r] = (0, t.useState)(() => window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
      return (0, t.useEffect)(() => {
        let e = window.matchMedia("(prefers-color-scheme: dark)"),
          t = e => {
            r(e.matches ? "dark" : "light")
          };
        return e.addEventListener("change", t), () => {
          e.removeEventListener("change", t)
        }
      }, []), e
    }
  },
  758904: e => {
    "use strict";
    e.s({
      FaviconHandler: () => n
    });
    var t = e.i(892988),
      r = e.i(57281);

    function n() {
      let e = (0, r.useColorScheme)();
      return (0, t.jsx)("link", {
        href: `/images/product-icons/repo-${e}-32x32.png`,
        rel: "icon",
        sizes: "any"
      })
    }
  },
  688450: e => {
    "use strict";
    e.s({
      Close: () => er,
      Content: () => X,
      Description: () => et,
      Dialog: () => j,
      DialogContent: () => R,
      DialogOverlay: () => N,
      DialogTitle: () => q,
      Overlay: () => Y,
      Portal: () => G,
      Root: () => K,
      Title: () => ee,
      Trigger: () => Q
    });
    var t = e.i(378469),
      r = e.i(987373),
      n = e.i(199933),
      a = e.i(150924),
      o = e.i(633599),
      i = e.i(68945),
      s = e.i(519876),
      c = e.i(212582),
      u = e.i(776313),
      l = e.i(656310),
      d = e.i(645488),
      f = e.i(616542),
      h = e.i(238621),
      m = e.i(790583),
      p = e.i(211049),
      v = e.i(892988),
      g = "Dialog",
      [y, b] = (0, a.createContextScope)(g),
      [w, x] = y(g),
      j = e => {
        let {
          __scopeDialog: r,
          children: n,
          open: a,
          defaultOpen: s,
          onOpenChange: c,
          modal: u = !0
        } = e, l = (0, t.useRef)(null), d = (0, t.useRef)(null), [f = !1, h] = (0, i.useControllableState)({
          prop: a,
          defaultProp: s,
          onChange: c
        });
        return (0, v.jsx)(w, {
          scope: r,
          triggerRef: l,
          contentRef: d,
          contentId: (0, o.useId)(),
          titleId: (0, o.useId)(),
          descriptionId: (0, o.useId)(),
          open: f,
          onOpenChange: h,
          onOpenToggle: (0, t.useCallback)(() => h(e => !e), [h]),
          modal: u,
          children: n
        })
      };
    j.displayName = g;
    var S = "DialogTrigger",
      P = (0, t.forwardRef)((e, t) => {
        let {
          __scopeDialog: a,
          ...o
        } = e, i = x(S, a), s = (0, n.useComposedRefs)(t, i.triggerRef);
        return (0, v.jsx)(d.Primitive.button, {
          type: "button",
          "aria-haspopup": "dialog",
          "aria-expanded": i.open,
          "aria-controls": i.contentId,
          "data-state": B(i.open),
          ...o,
          ref: s,
          onClick: (0, r.composeEventHandlers)(e.onClick, i.onOpenToggle)
        })
      });
    P.displayName = S;
    var C = "DialogPortal",
      [k, O] = y(C, {
        forceMount: void 0
      }),
      E = e => {
        let {
          __scopeDialog: r,
          forceMount: n,
          children: a,
          container: o
        } = e, i = x(C, r);
        return (0, v.jsx)(k, {
          scope: r,
          forceMount: n,
          children: t.Children.map(a, e => (0, v.jsx)(l.Presence, {
            present: n || i.open,
            children: (0, v.jsx)(u.Portal, {
              asChild: !0,
              container: o,
              children: e
            })
          }))
        })
      };
    E.displayName = C;
    var T = "DialogOverlay",
      N = (0, t.forwardRef)((e, t) => {
        let r = O(T, e.__scopeDialog),
          {
            forceMount: n = r.forceMount,
            ...a
          } = e,
          o = x(T, e.__scopeDialog);
        return o.modal ? (0, v.jsx)(l.Presence, {
          present: n || o.open,
          children: (0, v.jsx)(L, {
            ...a,
            ref: t
          })
        }) : null
      });
    N.displayName = T;
    var L = (0, t.forwardRef)((e, t) => {
        let {
          __scopeDialog: r,
          ...n
        } = e, a = x(T, r);
        return (0, v.jsx)(h.RemoveScroll, {
          as: p.Slot,
          allowPinchZoom: !0,
          shards: [a.contentRef],
          children: (0, v.jsx)(d.Primitive.div, {
            "data-state": B(a.open),
            ...n,
            ref: t,
            style: {
              pointerEvents: "auto",
              ...n.style
            }
          })
        })
      }),
      A = "DialogContent",
      R = (0, t.forwardRef)((e, t) => {
        let r = O(A, e.__scopeDialog),
          {
            forceMount: n = r.forceMount,
            ...a
          } = e,
          o = x(A, e.__scopeDialog);
        return (0, v.jsx)(l.Presence, {
          present: n || o.open,
          children: o.modal ? (0, v.jsx)(H, {
            ...a,
            ref: t
          }) : (0, v.jsx)(M, {
            ...a,
            ref: t
          })
        })
      });
    R.displayName = A;
    var H = (0, t.forwardRef)((e, a) => {
        let o = x(A, e.__scopeDialog),
          i = (0, t.useRef)(null),
          s = (0, n.useComposedRefs)(a, o.contentRef, i);
        return (0, t.useEffect)(() => {
          let e = i.current;
          if (e) return (0, m.hideOthers)(e)
        }, []), (0, v.jsx)(D, {
          ...e,
          ref: s,
          trapFocus: o.open,
          disableOutsidePointerEvents: !0,
          onCloseAutoFocus: (0, r.composeEventHandlers)(e.onCloseAutoFocus, e => {
            e.preventDefault(), o.triggerRef.current?.focus()
          }),
          onPointerDownOutside: (0, r.composeEventHandlers)(e.onPointerDownOutside, e => {
            let t = e.detail.originalEvent,
              r = 0 === t.button && !0 === t.ctrlKey;
            (2 === t.button || r) && e.preventDefault()
          }),
          onFocusOutside: (0, r.composeEventHandlers)(e.onFocusOutside, e => e.preventDefault())
        })
      }),
      M = (0, t.forwardRef)((e, r) => {
        let n = x(A, e.__scopeDialog),
          a = (0, t.useRef)(!1),
          o = (0, t.useRef)(!1);
        return (0, v.jsx)(D, {
          ...e,
          ref: r,
          trapFocus: !1,
          disableOutsidePointerEvents: !1,
          onCloseAutoFocus: t => {
            e.onCloseAutoFocus?.(t), t.defaultPrevented || (a.current || n.triggerRef.current?.focus(), t.preventDefault()), a.current = !1, o.current = !1
          },
          onInteractOutside: t => {
            e.onInteractOutside?.(t), t.defaultPrevented || (a.current = !0, "pointerdown" === t.detail.originalEvent.type && (o.current = !0));
            let r = t.target;
            n.triggerRef.current?.contains(r) && t.preventDefault(), "focusin" === t.detail.originalEvent.type && o.current && t.preventDefault()
          }
        })
      }),
      D = (0, t.forwardRef)((e, r) => {
        let {
          __scopeDialog: a,
          trapFocus: o,
          onOpenAutoFocus: i,
          onCloseAutoFocus: u,
          ...l
        } = e, d = x(A, a), h = (0, t.useRef)(null), m = (0, n.useComposedRefs)(r, h);
        return (0, f.useFocusGuards)(), (0, v.jsxs)(v.Fragment, {
          children: [(0, v.jsx)(c.FocusScope, {
            asChild: !0,
            loop: !0,
            trapped: o,
            onMountAutoFocus: i,
            onUnmountAutoFocus: u,
            children: (0, v.jsx)(s.DismissableLayer, {
              role: "dialog",
              id: d.contentId,
              "aria-describedby": d.descriptionId,
              "aria-labelledby": d.titleId,
              "data-state": B(d.open),
              ...l,
              ref: m,
              onDismiss: () => d.onOpenChange(!1)
            })
          }), (0, v.jsxs)(v.Fragment, {
            children: [(0, v.jsx)(Z, {
              titleId: d.titleId
            }), (0, v.jsx)(U, {
              contentRef: h,
              descriptionId: d.descriptionId
            })]
          })]
        })
      }),
      I = "DialogTitle",
      q = (0, t.forwardRef)((e, t) => {
        let {
          __scopeDialog: r,
          ...n
        } = e, a = x(I, r);
        return (0, v.jsx)(d.Primitive.h2, {
          id: a.titleId,
          ...n,
          ref: t
        })
      });
    q.displayName = I;
    var V = "DialogDescription",
      _ = (0, t.forwardRef)((e, t) => {
        let {
          __scopeDialog: r,
          ...n
        } = e, a = x(V, r);
        return (0, v.jsx)(d.Primitive.p, {
          id: a.descriptionId,
          ...n,
          ref: t
        })
      });
    _.displayName = V;
    var $ = "DialogClose",
      F = (0, t.forwardRef)((e, t) => {
        let {
          __scopeDialog: n,
          ...a
        } = e, o = x($, n);
        return (0, v.jsx)(d.Primitive.button, {
          type: "button",
          ...a,
          ref: t,
          onClick: (0, r.composeEventHandlers)(e.onClick, () => o.onOpenChange(!1))
        })
      });

    function B(e) {
      return e ? "open" : "closed"
    }
    F.displayName = $;
    var W = "DialogTitleWarning",
      [z, J] = (0, a.createContext)(W, {
        contentName: A,
        titleName: I,
        docsSlug: "dialog"
      }),
      Z = ({
        titleId: e
      }) => {
        let r = J(W),
          n = `\`${r.contentName}\` requires a \`${r.titleName}\` for the component to be accessible for screen reader users.

If you want to hide the \`${r.titleName}\`, you can wrap it with our VisuallyHidden component.

For more information, see https://radix-ui.com/primitives/docs/components/${r.docsSlug}`;
        return (0, t.useEffect)(() => {
          e && (document.getElementById(e) || console.error(n))
        }, [n, e]), null
      },
      U = ({
        contentRef: e,
        descriptionId: r
      }) => {
        let n = J("DialogDescriptionWarning"),
          a = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;
        return (0, t.useEffect)(() => {
          let t = e.current?.getAttribute("aria-describedby");
          r && t && (document.getElementById(r) || console.warn(a))
        }, [a, e, r]), null
      },
      K = j,
      Q = P,
      G = E,
      Y = N,
      X = R,
      ee = q,
      et = _,
      er = F
  },
  246108: e => {
    "use strict";
    e.s({
      ThemeProvider: () => u,
      useTheme: () => c
    });
    var t = e.i(378469),
      r = (e, t, r, n, a, o, i, s) => {
        let c = document.documentElement,
          u = ["light", "dark"];

        function l(t) {
          var r;
          (Array.isArray(e) ? e : [e]).forEach(e => {
            let r = "class" === e,
              n = r && o ? a.map(e => o[e] || e) : a;
            r ? (c.classList.remove(...n), c.classList.add(o && o[t] ? o[t] : t)) : c.setAttribute(e, t)
          }), r = t, s && u.includes(r) && (c.style.colorScheme = r)
        }
        if (n) l(n);
        else try {
          let e = localStorage.getItem(t) || r,
            n = i && "system" === e ? window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : e;
          l(n)
        } catch (e) {}
      },
      n = ["light", "dark"],
      a = "(prefers-color-scheme: dark)",
      o = "undefined" == typeof window,
      i = (0, t.createContext)(void 0),
      s = {
        setTheme: e => {},
        themes: []
      },
      c = () => {
        var e;
        return null != (e = (0, t.useContext)(i)) ? e : s
      },
      u = e => (0, t.useContext)(i) ? (0, t.createElement)(t.Fragment, null, e.children) : (0, t.createElement)(d, {
        ...e
      }),
      l = ["light", "dark"],
      d = ({
        forcedTheme: e,
        disableTransitionOnChange: r = !1,
        enableSystem: o = !0,
        enableColorScheme: s = !0,
        storageKey: c = "theme",
        themes: u = l,
        defaultTheme: d = o ? "system" : "light",
        attribute: v = "data-theme",
        value: g,
        children: y,
        nonce: b,
        scriptProps: w
      }) => {
        let [x, j] = (0, t.useState)(() => h(c, d)), [S, P] = (0, t.useState)(() => "system" === x ? p() : x), C = g ? Object.values(g) : u, k = (0, t.useCallback)(e => {
          let t = e;
          if (!t) return;
          "system" === e && o && (t = p());
          let a = g ? g[t] : t,
            i = r ? m(b) : null,
            c = document.documentElement,
            u = e => {
              "class" === e ? (c.classList.remove(...C), a && c.classList.add(a)) : e.startsWith("data-") && (a ? c.setAttribute(e, a) : c.removeAttribute(e))
            };
          if (Array.isArray(v) ? v.forEach(u) : u(v), s) {
            let e = n.includes(d) ? d : null,
              r = n.includes(t) ? t : e;
            c.style.colorScheme = r
          }
          null == i || i()
        }, [b]), O = (0, t.useCallback)(e => {
          let t = "function" == typeof e ? e(x) : e;
          j(t);
          try {
            localStorage.setItem(c, t)
          } catch (e) {}
        }, [x]), E = (0, t.useCallback)(t => {
          P(p(t)), "system" === x && o && !e && k("system")
        }, [x, e]);
        (0, t.useEffect)(() => {
          let e = window.matchMedia(a);
          return e.addListener(E), E(e), () => e.removeListener(E)
        }, [E]), (0, t.useEffect)(() => {
          let e = e => {
            e.key === c && (e.newValue ? j(e.newValue) : O(d))
          };
          return window.addEventListener("storage", e), () => window.removeEventListener("storage", e)
        }, [O]), (0, t.useEffect)(() => {
          k(null != e ? e : x)
        }, [e, x]);
        let T = (0, t.useMemo)(() => ({
          theme: x,
          setTheme: O,
          forcedTheme: e,
          resolvedTheme: "system" === x ? S : x,
          themes: o ? [...u, "system"] : u,
          systemTheme: o ? S : void 0
        }), [x, O, e, S, o, u]);
        return (0, t.createElement)(i.Provider, {
          value: T
        }, (0, t.createElement)(f, {
          forcedTheme: e,
          storageKey: c,
          attribute: v,
          enableSystem: o,
          enableColorScheme: s,
          defaultTheme: d,
          value: g,
          themes: u,
          nonce: b,
          scriptProps: w
        }), y)
      },
      f = (0, t.memo)(({
        forcedTheme: e,
        storageKey: n,
        attribute: a,
        enableSystem: o,
        enableColorScheme: i,
        defaultTheme: s,
        value: c,
        themes: u,
        nonce: l,
        scriptProps: d
      }) => {
        let f = JSON.stringify([a, n, s, e, u, c, o, i]).slice(1, -1);
        return (0, t.createElement)("script", {
          ...d,
          suppressHydrationWarning: !0,
          nonce: "undefined" == typeof window ? l : "",
          dangerouslySetInnerHTML: {
            __html: `(${r.toString()})(${f})`
          }
        })
      }),
      h = (e, t) => {
        let r;
        if (!o) {
          try {
            r = localStorage.getItem(e) || void 0
          } catch (e) {}
          return r || t
        }
      },
      m = e => {
        let t = document.createElement("style");
        return e && t.setAttribute("nonce", e), t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")), document.head.appendChild(t), () => {
          window.getComputedStyle(document.body), setTimeout(() => {
            document.head.removeChild(t)
          }, 1)
        }
      },
      p = e => (e || (e = window.matchMedia(a)), e.matches ? "dark" : "light")
  },
  44894: e => {
    "use strict";
    e.s({
      SearchOnly: () => s,
      SearchProvider: () => i,
      useSearchContext: () => a
    });
    var t = e.i(892988),
      r = e.i(378469);
    let n = (0, r.createContext)({
      enabled: !1,
      hotKey: [],
      setOpenSearch: () => void 0
    });

    function a() {
      return (0, r.useContext)(n)
    }

    function o() {
      let [e, t] = (0, r.useState)("");
      return (0, r.useEffect)(() => {
        window.navigator.userAgent.includes("Windows") && t("Ctrl")
      }, []), e
    }

    function i({
      SearchDialog: e,
      children: a,
      preload: i = !0,
      options: s,
      hotKey: c = [{
        key: e => e.metaKey || e.ctrlKey,
        display: (0, t.jsx)(o, {})
      }, {
        key: "k",
        display: "K"
      }],
      links: u
    }) {
      let [l, d] = (0, r.useState)(!i && void 0);
      return (0, r.useEffect)(() => {
        let e = e => {
          c.every(t => "string" == typeof t.key ? e.key === t.key : t.key(e)) && (d(!0), e.preventDefault())
        };
        return window.addEventListener("keydown", e), () => {
          window.removeEventListener("keydown", e)
        }
      }, [c]), (0, t.jsxs)(n.Provider, {
        value: (0, r.useMemo)(() => ({
          enabled: !0,
          hotKey: c,
          setOpenSearch: d
        }), [c]),
        children: [void 0 !== l && (0, t.jsx)(e, {
          open: l,
          onOpenChange: d,
          links: u,
          ...s
        }), a]
      })
    }

    function s({
      children: e
    }) {
      if (a().enabled) return e
    }
  },
  659825: e => {
    "use strict";
    e.s({
      RootProvider: () => c
    });
    var t = e.i(892988),
      r = e.i(246108),
      n = e.i(588483),
      a = e.i(226251),
      o = e.i(99459),
      i = e.i(44894);
    e.i(401607), e.i(415605), e.i(201406);
    let s = (0, n.default)(() => e.r(948415)(e.i), {
      ssr: !1
    });

    function c({
      children: e,
      dir: n,
      theme: {
        enabled: c = !0,
        ...u
      } = {},
      search: l
    }) {
      let d = e;
      return l?.enabled !== !1 && (d = (0, t.jsx)(i.SearchProvider, {
        SearchDialog: s,
        ...l,
        children: d
      })), c && (d = (0, t.jsx)(r.ThemeProvider, {
        attribute: "class",
        defaultTheme: "system",
        enableSystem: !0,
        disableTransitionOnChange: !0,
        ...u,
        children: d
      })), (0, t.jsx)(a.DirectionProvider, {
        dir: n ?? "ltr",
        children: (0, t.jsx)(o.SidebarProvider, {
          children: d
        })
      })
    }
  },
  127460: e => {
    "use strict";
    e.s({}), e.i(892988), e.i(246108), e.i(588483), e.i(99459), e.i(44894), e.i(401607), e.i(415605), e.i(201406), e.i(659825)
  },
  518937: e => {
    "use strict";
    e.s({
      gitHubRepoUrl: () => t
    });
    let t = "https://github.com/vercel/turborepo"
  },
  995069: e => {
    "use strict";
    e.s({
      Moon: () => r
    });
    var t = e.i(892988);
    let r = ({
      className: e,
      style: r
    }) => (0, t.jsx)("svg", {
      className: e,
      height: "16",
      strokeLinejoin: "round",
      viewBox: "0 0 16 16",
      width: "16",
      style: {
        color: "currentcolor",
        ...r
      },
      children: (0, t.jsx)("path", {
        fillRule: "evenodd",
        clipRule: "evenodd",
        d: "M1.5 8.00005C1.5 5.53089 2.99198 3.40932 5.12349 2.48889C4.88136 3.19858 4.75 3.95936 4.75 4.7501C4.75 8.61609 7.88401 11.7501 11.75 11.7501C11.8995 11.7501 12.048 11.7454 12.1953 11.7361C11.0955 13.1164 9.40047 14.0001 7.5 14.0001C4.18629 14.0001 1.5 11.3138 1.5 8.00005ZM6.41706 0.577759C2.78784 1.1031 0 4.22536 0 8.00005C0 12.1422 3.35786 15.5001 7.5 15.5001C10.5798 15.5001 13.2244 13.6438 14.3792 10.9921L13.4588 9.9797C12.9218 10.155 12.3478 10.2501 11.75 10.2501C8.71243 10.2501 6.25 7.78767 6.25 4.7501C6.25 3.63431 6.58146 2.59823 7.15111 1.73217L6.41706 0.577759ZM13.25 1V1.75V2.75L14.25 2.75H15V4.25H14.25H13.25V5.25V6H11.75V5.25V4.25H10.75L10 4.25V2.75H10.75L11.75 2.75V1.75V1H13.25Z",
        fill: "currentColor"
      })
    })
  },
  259947: e => {
    "use strict";
    e.s({
      Sun: () => r
    });
    var t = e.i(892988);
    let r = ({
      className: e,
      style: r
    }) => (0, t.jsx)("svg", {
      className: e,
      height: "16",
      strokeLinejoin: "round",
      viewBox: "0 0 16 16",
      width: "16",
      style: {
        color: "currentcolor",
        ...r
      },
      children: (0, t.jsx)("path", {
        fillRule: "evenodd",
        clipRule: "evenodd",
        d: "M8.75 0.75V0H7.25V0.75V2V2.75H8.75V2V0.75ZM11.182 3.75732L11.7123 3.22699L12.0659 2.87344L12.5962 2.34311L13.6569 3.40377L13.1265 3.9341L12.773 4.28765L12.2426 4.81798L11.182 3.75732ZM8 10.5C9.38071 10.5 10.5 9.38071 10.5 8C10.5 6.61929 9.38071 5.5 8 5.5C6.61929 5.5 5.5 6.61929 5.5 8C5.5 9.38071 6.61929 10.5 8 10.5ZM8 12C10.2091 12 12 10.2091 12 8C12 5.79086 10.2091 4 8 4C5.79086 4 4 5.79086 4 8C4 10.2091 5.79086 12 8 12ZM13.25 7.25H14H15.25H16V8.75H15.25H14H13.25V7.25ZM0.75 7.25H0V8.75H0.75H2H2.75V7.25H2H0.75ZM2.87348 12.0659L2.34315 12.5962L3.40381 13.6569L3.93414 13.1265L4.28769 12.773L4.81802 12.2426L3.75736 11.182L3.22703 11.7123L2.87348 12.0659ZM3.75735 4.81798L3.22702 4.28765L2.87347 3.9341L2.34314 3.40377L3.4038 2.34311L3.93413 2.87344L4.28768 3.22699L4.81802 3.75732L3.75735 4.81798ZM12.0659 13.1265L12.5962 13.6569L13.6569 12.5962L13.1265 12.0659L12.773 11.7123L12.2426 11.182L11.182 12.2426L11.7123 12.773L12.0659 13.1265ZM8.75 13.25V14V15.25V16H7.25V15.25V14V13.25H8.75Z",
        fill: "currentColor"
      })
    })
  },
  889593: e => {
    "use strict";
    e.s({
      DeviceDesktop: () => r
    });
    var t = e.i(892988);
    let r = ({
      className: e,
      style: r
    }) => (0, t.jsx)("svg", {
      className: e,
      height: "16",
      strokeLinejoin: "round",
      viewBox: "0 0 16 16",
      width: "16",
      style: {
        color: "currentcolor",
        ...r
      },
      children: (0, t.jsx)("path", {
        fillRule: "evenodd",
        clipRule: "evenodd",
        d: "M0 2C0 1.44772 0.447715 1 1 1H15C15.5523 1 16 1.44772 16 2V10.5C16 11.0523 15.5523 11.5 15 11.5H8.75V14.5H9.75H10.5V16H9.75H6.25H5.5V14.5H6.25H7.25V11.5H1C0.447714 11.5 0 11.0523 0 10.5V2ZM1.5 2.5V10H14.5V2.5H1.5Z",
        fill: "currentColor"
      })
    })
  },
  456795: e => {
    e.v({
      root: "theme-switcher-module__IeWOuW__root",
      switch: "theme-switcher-module__IeWOuW__switch"
    })
  },
  648202: e => {
    "use strict";
    e.s({
      ThemeSwitcher: () => u
    });
    var t = e.i(892988),
      r = e.i(246108),
      n = e.i(378469),
      a = e.i(207796),
      o = e.i(995069),
      i = e.i(259947),
      s = e.i(889593),
      c = e.i(456795);

    function u({
      className: e,
      size: u = 28,
      short: l = !1
    }) {
      let {
        theme: d,
        setTheme: f
      } = (0, r.useTheme)(), [h, m] = (0, n.useState)(!1), p = u / 2;
      return ((0, n.useEffect)(() => {
        m(!0)
      }, []), h) ? (0, t.jsxs)("div", {
        className: (0, a.clsx)(c.default.root, e),
        style: {
          padding: l ? "0" : `${u/10.67}px`
        },
        role: "radiogroup",
        children: [(0, t.jsx)("button", {
          "aria-checked": "light" === d,
          "aria-label": "Switch to light theme",
          className: c.default.switch,
          "data-active": "light" === d,
          style: {
            height: `${u}px`,
            width: `${u}px`
          },
          "data-theme-switcher": !0,
          onClick: () => {
            f("light")
          },
          role: "radio",
          type: "button",
          children: (0, t.jsx)(i.Sun, {
            style: {
              width: p,
              height: p
            }
          })
        }), (0, t.jsx)("button", {
          "aria-checked": "system" === d,
          "aria-label": "Switch to system theme",
          className: c.default.switch,
          style: {
            height: `${u}px`,
            width: `${u}px`
          },
          "data-active": "system" === d,
          "data-theme-switcher": !0,
          onClick: () => {
            f("system")
          },
          role: "radio",
          type: "button",
          children: (0, t.jsx)(s.DeviceDesktop, {
            style: {
              width: p,
              height: p
            }
          })
        }), (0, t.jsx)("button", {
          "aria-checked": "dark" === d,
          "aria-label": "Switch to dark theme",
          className: c.default.switch,
          style: {
            height: `${u}px`,
            width: `${u}px`
          },
          "data-active": "dark" === d,
          "data-theme-switcher": !0,
          onClick: () => {
            f("dark")
          },
          role: "radio",
          type: "button",
          children: (0, t.jsx)(o.Moon, {
            style: {
              width: p,
              height: p
            }
          })
        })]
      }) : null
    }
  },
  692752: e => {
    "use strict";
    e.s({
      MobileMenuProvider: () => o,
      TopLevelMobileMenuProvider: () => c,
      useMobileMenuContext: () => a,
      useTopLevelMobileMenuContext: () => s
    });
    var t = e.i(892988),
      r = e.i(378469);
    let n = (0, r.createContext)(void 0),
      a = () => {
        let e = (0, r.useContext)(n);
        if (!e) throw Error("useMobileMenuContext must be used within a MobileMenuProvider");
        return e
      },
      o = ({
        children: e
      }) => {
        let [a, o] = (0, r.useState)(!1);
        return (0, t.jsx)(n.Provider, {
          value: {
            openMobileMenu: a,
            setOpenMobileMenu: o
          },
          children: e
        })
      },
      i = (0, r.createContext)(void 0),
      s = () => {
        let e = (0, r.useContext)(i);
        if (!e) throw Error("useMobileMenuContext must be used within a MobileMenuProvider");
        return e
      },
      c = ({
        children: e
      }) => {
        let [n, a] = (0, r.useState)(!1);
        return (0, t.jsx)(i.Provider, {
          value: {
            openMobileMenu: n,
            setOpenMobileMenu: a
          },
          children: e
        })
      }
  },
  193099: e => {
    "use strict";
    e.s({
      __iconNode: () => r,
      default: () => n
    });
    var t = e.i(180981);
    let r = [
        ["circle", {
          cx: "11",
          cy: "11",
          r: "8",
          key: "4ej97u"
        }],
        ["path", {
          d: "m21 21-4.3-4.3",
          key: "1qie3q"
        }]
      ],
      n = (0, t.default)("Search", r)
  },
  218416: e => {
    "use strict";
    e.s({
      SearchIcon: () => t.default
    });
    var t = e.i(193099)
  },
  542803: e => {
    "use strict";
    e.s({
      useDocsSearch: () => o
    });
    var t, r = e.i(965790);
    e.i(19987);
    var n = e.i(378469),
      a = new Map;

    function o(i, s, c, u = 100, l = !1, d) {
      let [f, h] = (0, n.useState)(""), [m, p] = (0, n.useState)("empty"), [v, g] = (0, n.useState)(), [y, b] = (0, n.useState)(!1), w = function(e, t = 1e3) {
        let [r, a] = (0, n.useState)(e), o = (0, n.useRef)(void 0);
        if (0 === t) return e;
        if (e !== r && o.current?.value !== e) {
          o.current && clearTimeout(o.current.handler);
          let r = window.setTimeout(() => {
            a(e)
          }, t);
          o.current = {
            value: e,
            handler: r
          }
        }
        return r
      }(f, u), x = (0, n.useRef)(void 0), j = (0, n.useMemo)(() => d ?? JSON.stringify([i.type, w, s, c]), [i.type, w, s, c, d]);
      return (0, r.useOnChange)(j, () => {
        let r = a.get(j);
        if (x.current && (x.current(), x.current = void 0), r) {
          b(!1), g(void 0), p(r);
          return
        }
        b(!0);
        let n = !1;
        x.current = () => {
          n = !0
        }, (async function() {
          if (0 === w.length && !l) return "empty";
          if ("fetch" === i.type) {
            let {
              fetchDocs: t
            } = await e.r(98812)(e.i);
            return t(w, s, c, i)
          }
          if ("algolia" === i.type) {
            let {
              index: t,
              type: r,
              ...n
            } = i, {
              searchDocs: a
            } = await e.r(61608)(e.i);
            return a(t, w, c, n)
          }
          if ("orama-cloud" === i.type) {
            let {
              searchDocs: t
            } = await e.r(551282)(e.i);
            return t(w, c, i)
          }
          let {
            createStaticClient: r
          } = await e.r(592367)(e.i);
          return t || (t = r(i)), t.search(w, s, c)
        })().then(e => {
          a.set(j, e), n || (g(void 0), p(e))
        }).catch(e => {
          g(e)
        }).finally(() => {
          b(!1)
        })
      }), {
        search: f,
        setSearch: h,
        query: {
          isLoading: y,
          data: m,
          error: v
        }
      }
    }
  },
  853090: e => {
    "use strict";
    e.s({
      __iconNode: () => r,
      default: () => n
    });
    var t = e.i(180981);
    let r = [
        ["path", {
          d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",
          key: "1rqfz7"
        }],
        ["path", {
          d: "M14 2v4a2 2 0 0 0 2 2h4",
          key: "tnqrlb"
        }],
        ["path", {
          d: "M10 9H8",
          key: "b1mrlr"
        }],
        ["path", {
          d: "M16 13H8",
          key: "t4e002"
        }],
        ["path", {
          d: "M16 17H8",
          key: "z1uh3a"
        }]
      ],
      n = (0, t.default)("FileText", r)
  },
  552540: e => {
    "use strict";
    e.s({
      FileText: () => t.default
    });
    var t = e.i(853090)
  },
  791843: e => {
    "use strict";
    e.s({
      __iconNode: () => r,
      default: () => n
    });
    var t = e.i(180981);
    let r = [
        ["line", {
          x1: "4",
          x2: "20",
          y1: "9",
          y2: "9",
          key: "4lhtct"
        }],
        ["line", {
          x1: "4",
          x2: "20",
          y1: "15",
          y2: "15",
          key: "vyu0kd"
        }],
        ["line", {
          x1: "10",
          x2: "8",
          y1: "3",
          y2: "21",
          key: "1ggp8o"
        }],
        ["line", {
          x1: "16",
          x2: "14",
          y1: "3",
          y2: "21",
          key: "weycgp"
        }]
      ],
      n = (0, t.default)("Hash", r)
  },
  190978: e => {
    "use strict";
    e.s({
      Hash: () => t.default
    });
    var t = e.i(791843)
  },
  600489: e => {
    "use strict";
    e.s({
      __iconNode: () => r,
      default: () => n
    });
    var t = e.i(180981);
    let r = [
        ["path", {
          d: "M21 12a9 9 0 1 1-6.219-8.56",
          key: "13zald"
        }]
      ],
      n = (0, t.default)("LoaderCircle", r)
  },
  68845: e => {
    "use strict";
    e.s({
      Loader2: () => t.default
    });
    var t = e.i(600489)
  },
  167454: e => {
    "use strict";
    e.s({
      SearchDialog: () => p,
      TagsList: () => x
    });
    var t = e.i(892988),
      r = e.i(552540),
      n = e.i(190978),
      a = e.i(68845),
      o = e.i(218416),
      i = e.i(550702),
      s = e.i(559961),
      c = e.i(378469),
      u = e.i(401607);
    e.i(806681);
    var l = e.i(81805),
      d = e.i(99459),
      f = e.i(388398),
      h = e.i(688450),
      m = e.i(448805);

    function p({
      open: e,
      onOpenChange: r,
      footer: n,
      links: a = [],
      search: o,
      onSearchChange: i,
      isLoading: s,
      ...d
    }) {
      let {
        text: m
      } = (0, u.useI18n)(), p = (0, c.useMemo)(() => a.map(([e, t]) => ({
        type: "page",
        id: e,
        content: e,
        url: t
      })), [a]);
      return (0, t.jsxs)(h.Dialog, {
        open: e,
        onOpenChange: r,
        children: [(0, t.jsx)(h.DialogOverlay, {
          className: "fixed inset-0 z-50 bg-black/30 backdrop-blur-sm data-[state=closed]:animate-fd-fade-out data-[state=open]:animate-fd-fade-in"
        }), (0, t.jsxs)(h.DialogContent, {
          "aria-describedby": void 0,
          className: "fixed left-1/2 top-[10vh] z-50 w-[98vw] max-w-screen-sm origin-left -translate-x-1/2 rounded-lg border bg-fd-popover text-fd-popover-foreground shadow-lg data-[state=closed]:animate-fd-dialog-out data-[state=open]:animate-fd-dialog-in",
          children: [(0, t.jsx)(h.DialogTitle, {
            className: "hidden",
            children: m.search
          }), (0, t.jsxs)("div", {
            className: "flex flex-row items-center gap-2 px-3",
            children: [(0, t.jsx)(y, {
              isLoading: s ?? !1
            }), (0, t.jsx)("input", {
              value: o,
              onChange: e => {
                i(e.target.value)
              },
              placeholder: m.search,
              className: "w-0 flex-1 bg-transparent py-3 text-base placeholder:text-fd-muted-foreground focus-visible:outline-none"
            }), (0, t.jsx)("button", {
              type: "button",
              "aria-label": "Close Search",
              onClick: () => r(!1),
              className: (0, l.cn)((0, f.buttonVariants)({
                color: "outline",
                className: "text-xs p-1.5"
              })),
              children: "Esc"
            })]
          }), "empty" !== d.results || p.length > 0 ? (0, t.jsx)(g, {
            items: "empty" === d.results ? p : d.results,
            onSelect: () => r(!1)
          }) : null, n ? (0, t.jsx)("div", {
            className: "mt-auto flex flex-col border-t p-3",
            children: n
          }) : null]
        })]
      })
    }
    let v = {
      text: (0, t.jsx)(i.Text, {
        className: "size-4 text-fd-muted-foreground"
      }),
      heading: (0, t.jsx)(n.Hash, {
        className: "size-4 text-fd-muted-foreground"
      }),
      page: (0, t.jsx)(r.FileText, {
        className: "size-4 text-fd-muted-foreground"
      })
    };

    function g({
      items: e,
      onSelect: r,
      ...n
    }) {
      let [a, o] = (0, c.useState)(), {
        text: i
      } = (0, u.useI18n)(), f = (0, s.useRouter)(), h = (0, d.useSidebar)();
      e.length > 0 && (!a || e.every(e => e.id !== a)) && o(e[0].id);
      let m = e => {
        f.push(e), r?.(e), h.setOpen(!1)
      };

      function p(t) {
        if (("ArrowDown" === t.key || "ArrowUp" == t.key) && (o(r => {
            let n = e.findIndex(e => e.id === r);
            return -1 === n ? e.at(0)?.id : e.at(("ArrowDown" === t.key ? n + 1 : n - 1) % e.length)?.id
          }), t.preventDefault()), "Enter" === t.key) {
          let r = e.find(e => e.id === a);
          r && m(r.url), t.preventDefault()
        }
      }
      let g = (0, c.useRef)(p);
      return g.current = p, (0, c.useEffect)(() => {
        let e = e => g.current?.(e);
        return window.addEventListener("keydown", e), () => {
          window.removeEventListener("keydown", e)
        }
      }, []), (0, t.jsxs)("div", {
        ...n,
        className: (0, l.cn)("flex max-h-[460px] flex-col overflow-y-auto border-t p-2", n.className),
        children: [0 === e.length ? (0, t.jsx)("div", {
          className: "py-12 text-center text-sm",
          children: i.searchNoResult
        }) : null, e.map(e => (0, t.jsxs)(b, {
          value: e.id,
          active: a,
          onActiveChange: o,
          onClick: () => {
            m(e.url)
          },
          children: ["page" !== e.type ? (0, t.jsx)("div", {
            role: "none",
            className: "ms-2 h-full min-h-10 w-px bg-fd-border"
          }) : null, v[e.type], (0, t.jsx)("p", {
            className: "w-0 flex-1 truncate",
            children: e.content
          })]
        }, e.id))]
      })
    }

    function y({
      isLoading: e
    }) {
      return (0, t.jsxs)("div", {
        className: "relative size-4",
        children: [(0, t.jsx)(a.Loader2, {
          className: (0, l.cn)("absolute size-full animate-spin text-fd-primary transition-opacity", !e && "opacity-0")
        }), (0, t.jsx)(o.SearchIcon, {
          className: (0, l.cn)("absolute size-full text-fd-muted-foreground transition-opacity", e && "opacity-0")
        })]
      })
    }

    function b({
      active: e,
      onActiveChange: r,
      value: n,
      ...a
    }) {
      return (0, t.jsx)("button", {
        ref: (0, c.useCallback)(t => {
          e === n && t && t.scrollIntoView({
            block: "nearest"
          })
        }, [e, n]),
        type: "button",
        "aria-selected": e === n,
        onPointerMove: () => r(n),
        ...a,
        className: (0, l.cn)("flex min-h-10 select-none flex-row items-center gap-2.5 rounded-lg px-2 text-start text-sm", e === n && "bg-fd-accent text-fd-accent-foreground", a.className),
        children: a.children
      })
    }
    let w = (0, m.cva)("rounded-md border px-2 py-0.5 text-xs font-medium text-fd-muted-foreground transition-colors", {
      variants: {
        active: {
          true: "bg-fd-accent text-fd-accent-foreground"
        }
      }
    });

    function x({
      tag: e,
      onTagChange: r,
      items: n,
      allowClear: a,
      ...o
    }) {
      return (0, t.jsxs)("div", {
        ...o,
        className: (0, l.cn)("flex flex-row items-center gap-1", o.className),
        children: [n.map(n => (0, t.jsx)("button", {
          type: "button",
          "data-active": e === n.value,
          className: (0, l.cn)(w({
            active: e === n.value
          }), n.props?.className),
          onClick: () => {
            e === n.value && a ? r(void 0) : r(n.value)
          },
          tabIndex: -1,
          ...n.props,
          children: n.name
        }, n.value)), o.children]
      })
    }
  },
  227879: e => {
    "use strict";
    e.s({
      Analytics: () => l
    });
    var t = e.i(983505),
      r = e.i(378469),
      n = e.i(559961);

    function a() {
      return "undefined" != typeof window
    }

    function o() {
      return "production"
    }

    function i() {
      return "development" === ((a() ? window.vam : o()) || "production")
    }

    function s(e) {
      return RegExp(`/${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=[/?#]|$)`)
    }

    function c(e) {
      return (0, r.useEffect)(() => {
        var t;
        e.beforeSend && (null == (t = window.va) || t.call(window, "beforeSend", e.beforeSend))
      }, [e.beforeSend]), (0, r.useEffect)(() => {
        ! function(e = {
          debug: !0
        }) {
          var t;
          if (!a()) return;
          ! function(e = "auto") {
            if ("auto" === e) {
              window.vam = o();
              return
            }
            window.vam = e
          }(e.mode), window.va || (window.va = function(...e) {
            (window.vaq = window.vaq || []).push(e)
          }), e.beforeSend && (null == (t = window.va) || t.call(window, "beforeSend", e.beforeSend));
          let r = e.scriptSrc ? e.scriptSrc : i() ? "https://va.vercel-scripts.com/v1/script.debug.js" : e.basePath ? `${e.basePath}/insights/script.js` : "/_vercel/insights/script.js";
          if (document.head.querySelector(`script[src*="${r}"]`)) return;
          let n = document.createElement("script");
          n.src = r, n.defer = !0, n.dataset.sdkn = "@vercel/analytics" + (e.framework ? `/${e.framework}` : ""), n.dataset.sdkv = "1.5.0", e.disableAutoTrack && (n.dataset.disableAutoTrack = "1"), e.endpoint ? n.dataset.endpoint = e.endpoint : e.basePath && (n.dataset.endpoint = `${e.basePath}/insights`), e.dsn && (n.dataset.dsn = e.dsn), n.onerror = () => {
            let e = i() ? "Please check if any ad blockers are enabled and try again." : "Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";
            console.log(`[Vercel Web Analytics] Failed to load script from ${r}. ${e}`)
          }, i() && !1 === e.debug && (n.dataset.debug = "false"), document.head.appendChild(n)
        }({
          framework: e.framework || "react",
          basePath: e.basePath ?? function() {
            if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH
          }(),
          ...void 0 !== e.route && {
            disableAutoTrack: !0
          },
          ...e
        })
      }, []), (0, r.useEffect)(() => {
        e.route && e.path && function({
          route: e,
          path: t
        }) {
          var r;
          null == (r = window.va) || r.call(window, "pageview", {
            route: e,
            path: t
          })
        }({
          route: e.route,
          path: e.path
        })
      }, [e.route, e.path]), null
    }

    function u(e) {
      let {
        route: a,
        path: o
      } = (() => {
        let e = (0, n.useParams)(),
          t = (0, n.useSearchParams)(),
          r = (0, n.usePathname)();
        return e ? {
          route: function(e, t) {
            if (!e || !t) return e;
            let r = e;
            try {
              let e = Object.entries(t);
              for (let [t, n] of e)
                if (!Array.isArray(n)) {
                  let e = s(n);
                  e.test(r) && (r = r.replace(e, `/[${t}]`))
                } for (let [t, n] of e)
                if (Array.isArray(n)) {
                  let e = s(n.join("/"));
                  e.test(r) && (r = r.replace(e, `/[...${t}]`))
                } return r
            } catch (t) {
              return e
            }
          }(r, Object.keys(e).length ? e : Object.fromEntries(t.entries())),
          path: r
        } : {
          route: null,
          path: r
        }
      })();
      return r.default.createElement(c, {
        path: o,
        route: a,
        ...e,
        basePath: function() {
          if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH
        }(),
        framework: "next"
      })
    }

    function l(e) {
      return r.default.createElement(r.Suspense, {
        fallback: null
      }, r.default.createElement(u, {
        ...e
      }))
    }
  },
  531728: e => {
    "use strict";
    e.s({
      SpeedInsights: () => c
    });
    var t = e.i(983505),
      r = e.i(378469),
      n = e.i(559961);

    function a() {
      return false
    }

    function o(e) {
      return RegExp(`/${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=[/?#]|$)`)
    }

    function i(e) {
      (0, r.useEffect)(() => {
        var t;
        e.beforeSend && (null == (t = window.si) || t.call(window, "beforeSend", e.beforeSend))
      }, [e.beforeSend]);
      let n = (0, r.useRef)(null);
      return (0, r.useEffect)(() => {
        if (n.current) e.route && n.current(e.route);
        else {
          let r = function(e = {}) {
            var t;
            if ("undefined" == typeof window || null === e.route) return null;
            window.si || (window.si = function(...e) {
              (window.siq = window.siq || []).push(e)
            });
            let r = e.scriptSrc ? e.scriptSrc : a() ? "https://va.vercel-scripts.com/v1/speed-insights/script.debug.js" : e.dsn ? "https://va.vercel-scripts.com/v1/speed-insights/script.js" : e.basePath ? `${e.basePath}/speed-insights/script.js` : "/_vercel/speed-insights/script.js";
            if (document.head.querySelector(`script[src*="${r}"]`)) return null;
            e.beforeSend && (null == (t = window.si) || t.call(window, "beforeSend", e.beforeSend));
            let n = document.createElement("script");
            return n.src = r, n.defer = !0, n.dataset.sdkn = "@vercel/speed-insights" + (e.framework ? `/${e.framework}` : ""), n.dataset.sdkv = "1.2.0", e.sampleRate && (n.dataset.sampleRate = e.sampleRate.toString()), e.route && (n.dataset.route = e.route), e.endpoint ? n.dataset.endpoint = e.endpoint : e.basePath && (n.dataset.endpoint = `${e.basePath}/speed-insights/vitals`), e.dsn && (n.dataset.dsn = e.dsn), a() && !1 === e.debug && (n.dataset.debug = "false"), n.onerror = () => {
              console.log(`[Vercel Speed Insights] Failed to load script from ${r}. Please check if any content blockers are enabled and try again.`)
            }, document.head.appendChild(n), {
              setRoute: e => {
                n.dataset.route = e ?? void 0
              }
            }
          }({
            framework: e.framework ?? "react",
            basePath: e.basePath ?? function() {
              if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH
            }(),
            ...e
          });
          r && (n.current = r.setRoute)
        }
      }, [e.route]), null
    }

    function s(e) {
      let a = (() => {
        let e = (0, n.useParams)(),
          t = (0, n.useSearchParams)() || new URLSearchParams,
          r = (0, n.usePathname)();
        return e ? function(e, t) {
          if (!e || !t) return e;
          let r = e;
          try {
            let e = Object.entries(t);
            for (let [t, n] of e)
              if (!Array.isArray(n)) {
                let e = o(n);
                e.test(r) && (r = r.replace(e, `/[${t}]`))
              } for (let [t, n] of e)
              if (Array.isArray(n)) {
                let e = o(n.join("/"));
                e.test(r) && (r = r.replace(e, `/[...${t}]`))
              } return r
          } catch (t) {
            return e
          }
        }(r, Object.keys(e).length ? e : Object.fromEntries(t.entries())) : null
      })();
      return r.default.createElement(i, {
        route: a,
        ...e,
        framework: "next",
        basePath: function() {
          if (void 0 !== t.default && void 0 !== t.default.env) return t.default.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH
        }()
      })
    }

    function c(e) {
      return r.default.createElement(r.Suspense, {
        fallback: null
      }, r.default.createElement(s, {
        ...e
      }))
    }
  },
  145151: e => {
    "use strict";
    e.s({
      VercelTrackers: () => a
    });
    var t = e.i(892988),
      r = e.i(227879),
      n = e.i(531728);

    function a() {
      return (0, t.jsxs)(t.Fragment, {
        children: [(0, t.jsx)(r.Analytics, {}), (0, t.jsx)(n.SpeedInsights, {})]
      })
    }
  },
  299188: function(e) {
    var {
      m: t,
      e: r
    } = e;
    t.exports = function() {
      "use strict";

      function e(e, t) {
        var r = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
          var n = Object.getOwnPropertySymbols(e);
          t && (n = n.filter(function(t) {
            return Object.getOwnPropertyDescriptor(e, t).enumerable
          })), r.push.apply(r, n)
        }
        return r
      }

      function t(t) {
        for (var r = 1; r < arguments.length; r++) {
          var n = null != arguments[r] ? arguments[r] : {};
          r % 2 ? e(Object(n), !0).forEach(function(e) {
            var r;
            r = n[e], e in t ? Object.defineProperty(t, e, {
              value: r,
              enumerable: !0,
              configurable: !0,
              writable: !0
            }) : t[e] = r
          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : e(Object(n)).forEach(function(e) {
            Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e))
          })
        }
        return t
      }

      function r(e, t) {
        return function(e) {
          if (Array.isArray(e)) return e
        }(e) || function(e, t) {
          if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) {
            var r = [],
              n = !0,
              a = !1,
              o = void 0;
            try {
              for (var i, s = e[Symbol.iterator](); !(n = (i = s.next()).done) && (r.push(i.value), !t || r.length !== t); n = !0);
            } catch (e) {
              a = !0, o = e
            } finally {
              try {
                n || null == s.return || s.return()
              } finally {
                if (a) throw o
              }
            }
            return r
          }
        }(e, t) || function() {
          throw TypeError("Invalid attempt to destructure non-iterable instance")
        }()
      }

      function n(e) {
        return function(e) {
          if (Array.isArray(e)) {
            for (var t = 0, r = Array(e.length); t < e.length; t++) r[t] = e[t];
            return r
          }
        }(e) || function(e) {
          if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
        }(e) || function() {
          throw TypeError("Invalid attempt to spread non-iterable instance")
        }()
      }

      function a() {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {
            serializable: !0
          },
          t = {};
        return {
          get: function(r, n) {
            var a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                miss: function() {
                  return Promise.resolve()
                }
              },
              o = JSON.stringify(r);
            if (o in t) return Promise.resolve(e.serializable ? JSON.parse(t[o]) : t[o]);
            var i = n(),
              s = a && a.miss || function() {
                return Promise.resolve()
              };
            return i.then(function(e) {
              return s(e)
            }).then(function() {
              return i
            })
          },
          set: function(r, n) {
            return t[JSON.stringify(r)] = e.serializable ? JSON.stringify(n) : n, Promise.resolve(n)
          },
          delete: function(e) {
            return delete t[JSON.stringify(e)], Promise.resolve()
          },
          clear: function() {
            return t = {}, Promise.resolve()
          }
        }
      }

      function o(e, t) {
        return t && Object.keys(t).forEach(function(r) {
          e[r] = t[r](e)
        }), e
      }

      function i(e) {
        for (var t = arguments.length, r = Array(t > 1 ? t - 1 : 0), n = 1; n < t; n++) r[n - 1] = arguments[n];
        var a = 0;
        return e.replace(/%s/g, function() {
          return encodeURIComponent(r[a++])
        })
      }
      var s = {
        WithinQueryParameters: 0,
        WithinHeaders: 1
      };

      function c(e, t) {
        var r = e || {},
          n = r.data || {};
        return Object.keys(r).forEach(function(e) {
          -1 === ["timeout", "headers", "queryParameters", "data", "cacheable"].indexOf(e) && (n[e] = r[e])
        }), {
          data: Object.entries(n).length > 0 ? n : void 0,
          timeout: r.timeout || t,
          headers: r.headers || {},
          queryParameters: r.queryParameters || {},
          cacheable: r.cacheable
        }
      }
      var u = {
        Read: 1,
        Write: 2,
        Any: 3
      };

      function l(e) {
        var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
        return t(t({}, e), {}, {
          status: r,
          lastUpdate: Date.now()
        })
      }

      function d(e) {
        return "string" == typeof e ? {
          protocol: "https",
          url: e,
          accept: u.Any
        } : {
          protocol: e.protocol || "https",
          url: e.url,
          accept: e.accept || u.Any
        }
      }
      var f = "POST";

      function h(e, r, a, o) {
        var i, s, c, u = [],
          f = function(e, r) {
            if ("GET" !== e.method && (void 0 !== e.data || void 0 !== r.data)) return JSON.stringify(Array.isArray(e.data) ? e.data : t(t({}, e.data), r.data))
          }(a, o),
          h = (i = t(t({}, e.headers), o.headers), s = {}, Object.keys(i).forEach(function(e) {
            var t = i[e];
            s[e.toLowerCase()] = t
          }), s),
          g = a.method,
          y = "GET" !== a.method ? {} : t(t({}, a.data), o.data),
          b = t(t(t({
            "x-algolia-agent": e.userAgent.value
          }, e.queryParameters), y), o.queryParameters),
          w = 0,
          x = function t(r, n) {
            var i, s, c, d, y = r.pop();
            if (void 0 === y) throw {
              name: "RetryError",
              message: "Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support .",
              transporterStackTrace: p(u)
            };
            var x = {
                data: f,
                headers: h,
                method: g,
                url: (i = y, s = a.path, c = m(b), d = "".concat(i.protocol, "://").concat(i.url, "/").concat("/" === s.charAt(0) ? s.substr(1) : s), c.length && (d += "?".concat(c)), d),
                connectTimeout: n(w, e.timeouts.connect),
                responseTimeout: n(w, o.timeout)
              },
              j = function(e) {
                var t = {
                  request: x,
                  response: e,
                  host: y,
                  triesLeft: r.length
                };
                return u.push(t), t
              },
              S = {
                onSuccess: function(e) {
                  try {
                    return JSON.parse(e.content)
                  } catch (t) {
                    throw {
                      name: "DeserializationError",
                      message: t.message,
                      response: e
                    }
                  }
                },
                onRetry: function(a) {
                  var o = j(a);
                  return a.isTimedOut && w++, Promise.all([e.logger.info("Retryable failure", v(o)), e.hostsCache.set(y, l(y, a.isTimedOut ? 3 : 2))]).then(function() {
                    return t(r, n)
                  })
                },
                onFail: function(e) {
                  throw j(e),
                    function(e, t) {
                      var r = e.content,
                        n = e.status,
                        a = r;
                      try {
                        a = JSON.parse(r).message
                      } catch (e) {}
                      return {
                        name: "ApiError",
                        message: a,
                        status: n,
                        transporterStackTrace: t
                      }
                    }(e, p(u))
                }
              };
            return e.requester.send(x).then(function(e) {
              var t, r, n;
              return (t = e.status, e.isTimedOut || (r = e.isTimedOut, n = e.status, !r && 0 == ~~n) || 2 != ~~(t / 100) && 4 != ~~(t / 100)) ? S.onRetry(e) : 2 == ~~(e.status / 100) ? S.onSuccess(e) : S.onFail(e)
            })
          };
        return (c = e.hostsCache, Promise.all(r.map(function(e) {
          return c.get(e, function() {
            return Promise.resolve(l(e))
          })
        })).then(function(e) {
          var t = e.filter(function(e) {
              return 1 === e.status || Date.now() - e.lastUpdate > 12e4
            }),
            a = e.filter(function(e) {
              return 3 === e.status && Date.now() - e.lastUpdate <= 12e4
            }),
            o = [].concat(n(t), n(a));
          return {
            getTimeout: function(e, t) {
              return (0 === a.length && 0 === e ? 1 : a.length + 3 + e) * t
            },
            statelessHosts: o.length > 0 ? o.map(function(e) {
              return d(e)
            }) : r
          }
        })).then(function(e) {
          return x(n(e.statelessHosts).reverse(), e.getTimeout)
        })
      }

      function m(e) {
        return Object.keys(e).map(function(t) {
          var r;
          return i("%s=%s", t, (r = e[t], "[object Object]" === Object.prototype.toString.call(r) || "[object Array]" === Object.prototype.toString.call(r) ? JSON.stringify(e[t]) : e[t]))
        }).join("&")
      }

      function p(e) {
        return e.map(function(e) {
          return v(e)
        })
      }

      function v(e) {
        var r = e.request.headers["x-algolia-api-key"] ? {
          "x-algolia-api-key": "*****"
        } : {};
        return t(t({}, e), {}, {
          request: t(t({}, e.request), {}, {
            headers: t(t({}, e.request.headers), r)
          })
        })
      }
      var g = function(e) {
          var n, a, i, l, f, m, p, v, g, y, b, w, x, j = e.appId,
            S = (n = void 0 !== e.authMode ? e.authMode : s.WithinHeaders, a = {
              "x-algolia-api-key": e.apiKey,
              "x-algolia-application-id": j
            }, {
              headers: function() {
                return n === s.WithinHeaders ? a : {}
              },
              queryParameters: function() {
                return n === s.WithinQueryParameters ? a : {}
              }
            }),
            P = (l = (i = t(t({
              hosts: [{
                url: "".concat(j, "-dsn.algolia.net"),
                accept: u.Read
              }, {
                url: "".concat(j, ".algolia.net"),
                accept: u.Write
              }].concat(function(e) {
                for (var t = e.length - 1; t > 0; t--) {
                  var r = Math.floor(Math.random() * (t + 1)),
                    n = e[t];
                  e[t] = e[r], e[r] = n
                }
                return e
              }([{
                url: "".concat(j, "-1.algolianet.com")
              }, {
                url: "".concat(j, "-2.algolianet.com")
              }, {
                url: "".concat(j, "-3.algolianet.com")
              }]))
            }, e), {}, {
              headers: t(t(t({}, S.headers()), {
                "content-type": "application/x-www-form-urlencoded"
              }), e.headers),
              queryParameters: t(t({}, S.queryParameters()), e.queryParameters)
            })).hostsCache, f = i.logger, m = i.requester, p = i.requestsCache, v = i.responsesCache, g = i.timeouts, y = i.userAgent, b = i.hosts, w = i.queryParameters, x = {
              hostsCache: l,
              logger: f,
              requester: m,
              requestsCache: p,
              responsesCache: v,
              timeouts: g,
              userAgent: y,
              headers: i.headers,
              queryParameters: w,
              hosts: b.map(function(e) {
                return d(e)
              }),
              read: function(e, t) {
                var n = c(t, x.timeouts.read),
                  a = function() {
                    return h(x, x.hosts.filter(function(e) {
                      return 0 != (e.accept & u.Read)
                    }), e, n)
                  };
                if (!0 !== (void 0 !== n.cacheable ? n.cacheable : e.cacheable)) return a();
                var o = {
                  request: e,
                  mappedRequestOptions: n,
                  transporter: {
                    queryParameters: x.queryParameters,
                    headers: x.headers
                  }
                };
                return x.responsesCache.get(o, function() {
                  return x.requestsCache.get(o, function() {
                    return x.requestsCache.set(o, a()).then(function(e) {
                      return Promise.all([x.requestsCache.delete(o), e])
                    }, function(e) {
                      return Promise.all([x.requestsCache.delete(o), Promise.reject(e)])
                    }).then(function(e) {
                      var t = r(e, 2);
                      return t[0], t[1]
                    })
                  })
                }, {
                  miss: function(e) {
                    return x.responsesCache.set(o, e)
                  }
                })
              },
              write: function(e, t) {
                return h(x, x.hosts.filter(function(e) {
                  return 0 != (e.accept & u.Write)
                }), e, c(t, x.timeouts.write))
              }
            });
          return o({
            transporter: P,
            appId: j,
            addAlgoliaAgent: function(e, t) {
              P.userAgent.add({
                segment: e,
                version: t
              })
            },
            clearCache: function() {
              return Promise.all([P.requestsCache.clear(), P.responsesCache.clear()]).then(function() {})
            }
          }, e.methods)
        },
        y = function(e) {
          return function(t, r) {
            return "GET" === t.method ? e.transporter.read(t, r) : e.transporter.write(t, r)
          }
        },
        b = function(e) {
          return function(t) {
            var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
            return o({
              transporter: e.transporter,
              appId: e.appId,
              indexName: t
            }, r.methods)
          }
        },
        w = function(e) {
          return function(r, n) {
            var a = r.map(function(e) {
              return t(t({}, e), {}, {
                params: m(e.params || {})
              })
            });
            return e.transporter.read({
              method: f,
              path: "1/indexes/*/queries",
              data: {
                requests: a
              },
              cacheable: !0
            }, n)
          }
        },
        x = function(e) {
          return function(r, n) {
            return Promise.all(r.map(function(r) {
              var a = r.params,
                o = a.facetName,
                i = a.facetQuery,
                s = function(e, t) {
                  if (null == e) return {};
                  var r, n, a = function(e, t) {
                    if (null == e) return {};
                    var r, n, a = {},
                      o = Object.keys(e);
                    for (n = 0; n < o.length; n++) r = o[n], t.indexOf(r) >= 0 || (a[r] = e[r]);
                    return a
                  }(e, t);
                  if (Object.getOwnPropertySymbols) {
                    var o = Object.getOwnPropertySymbols(e);
                    for (n = 0; n < o.length; n++) r = o[n], t.indexOf(r) >= 0 || Object.prototype.propertyIsEnumerable.call(e, r) && (a[r] = e[r])
                  }
                  return a
                }(a, ["facetName", "facetQuery"]);
              return b(e)(r.indexName, {
                methods: {
                  searchForFacetValues: P
                }
              }).searchForFacetValues(o, i, t(t({}, n), s))
            }))
          }
        },
        j = function(e) {
          return function(t, r, n) {
            return e.transporter.read({
              method: f,
              path: i("1/answers/%s/prediction", e.indexName),
              data: {
                query: t,
                queryLanguages: r
              },
              cacheable: !0
            }, n)
          }
        },
        S = function(e) {
          return function(t, r) {
            return e.transporter.read({
              method: f,
              path: i("1/indexes/%s/query", e.indexName),
              data: {
                query: t
              },
              cacheable: !0
            }, r)
          }
        },
        P = function(e) {
          return function(t, r, n) {
            return e.transporter.read({
              method: f,
              path: i("1/indexes/%s/facets/%s/query", e.indexName, t),
              data: {
                facetQuery: r
              },
              cacheable: !0
            }, n)
          }
        },
        C = function(e) {
          return function(r, n) {
            var a = r.map(function(e) {
              return t(t({}, e), {}, {
                threshold: e.threshold || 0
              })
            });
            return e.transporter.read({
              method: f,
              path: "1/indexes/*/recommendations",
              data: {
                requests: a
              },
              cacheable: !0
            }, n)
          }
        };

      function k(e, o, i) {
        var c, u, l, d, f, h, m, p;
        return g(t(t(t({}, {
          appId: e,
          apiKey: o,
          timeouts: {
            connect: 1,
            read: 2,
            write: 30
          },
          requester: {
            send: function(e) {
              return new Promise(function(t) {
                var r = new XMLHttpRequest;
                r.open(e.method, e.url, !0), Object.keys(e.headers).forEach(function(t) {
                  return r.setRequestHeader(t, e.headers[t])
                });
                var n, a = function(e, n) {
                    return setTimeout(function() {
                      r.abort(), t({
                        status: 0,
                        content: n,
                        isTimedOut: !0
                      })
                    }, 1e3 * e)
                  },
                  o = a(e.connectTimeout, "Connection timeout");
                r.onreadystatechange = function() {
                  r.readyState > r.OPENED && void 0 === n && (clearTimeout(o), n = a(e.responseTimeout, "Socket timeout"))
                }, r.onerror = function() {
                  0 === r.status && (clearTimeout(o), clearTimeout(n), t({
                    content: r.responseText || "Network request failed",
                    status: r.status,
                    isTimedOut: !1
                  }))
                }, r.onload = function() {
                  clearTimeout(o), clearTimeout(n), t({
                    content: r.responseText,
                    status: r.status,
                    isTimedOut: !1
                  })
                }, r.send(e.data)
              })
            }
          },
          logger: {
            debug: function(e, t) {
              return Promise.resolve()
            },
            info: function(e, t) {
              return Promise.resolve()
            },
            error: function(e, t) {
              return console.error(e, t), Promise.resolve()
            }
          },
          responsesCache: a(),
          requestsCache: a({
            serializable: !1
          }),
          hostsCache: function e(t) {
            var a = n(t.caches),
              o = a.shift();
            return void 0 === o ? {
              get: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                  miss: function() {
                    return Promise.resolve()
                  }
                };
                return t().then(function(e) {
                  return Promise.all([e, n.miss(e)])
                }).then(function(e) {
                  return r(e, 1)[0]
                })
              },
              set: function(e, t) {
                return Promise.resolve(t)
              },
              delete: function(e) {
                return Promise.resolve()
              },
              clear: function() {
                return Promise.resolve()
              }
            } : {
              get: function(t, r) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                  miss: function() {
                    return Promise.resolve()
                  }
                };
                return o.get(t, r, n).catch(function() {
                  return e({
                    caches: a
                  }).get(t, r, n)
                })
              },
              set: function(t, r) {
                return o.set(t, r).catch(function() {
                  return e({
                    caches: a
                  }).set(t, r)
                })
              },
              delete: function(t) {
                return o.delete(t).catch(function() {
                  return e({
                    caches: a
                  }).delete(t)
                })
              },
              clear: function() {
                return o.clear().catch(function() {
                  return e({
                    caches: a
                  }).clear()
                })
              }
            }
          }({
            caches: [(c = {
              key: "".concat("4.24.0", "-").concat(e)
            }, l = "algoliasearch-client-js-".concat(c.key), d = function() {
              return void 0 === u && (u = c.localStorage || window.localStorage), u
            }, f = function() {
              return JSON.parse(d().getItem(l) || "{}")
            }, h = function(e) {
              d().setItem(l, JSON.stringify(e))
            }, m = function() {
              var e = c.timeToLive ? 1e3 * c.timeToLive : null,
                t = Object.fromEntries(Object.entries(f()).filter(function(e) {
                  return void 0 !== r(e, 2)[1].timestamp
                }));
              h(t), e && h(Object.fromEntries(Object.entries(t).filter(function(t) {
                var n = r(t, 2)[1],
                  a = (new Date).getTime();
                return !(n.timestamp + e < a)
              })))
            }, {
              get: function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                  miss: function() {
                    return Promise.resolve()
                  }
                };
                return Promise.resolve().then(function() {
                  m();
                  var t = JSON.stringify(e);
                  return f()[t]
                }).then(function(e) {
                  return Promise.all([e ? e.value : t(), void 0 !== e])
                }).then(function(e) {
                  var t = r(e, 2),
                    a = t[0];
                  return Promise.all([a, t[1] || n.miss(a)])
                }).then(function(e) {
                  return r(e, 1)[0]
                })
              },
              set: function(e, t) {
                return Promise.resolve().then(function() {
                  var r = f();
                  return r[JSON.stringify(e)] = {
                    timestamp: (new Date).getTime(),
                    value: t
                  }, d().setItem(l, JSON.stringify(r)), t
                })
              },
              delete: function(e) {
                return Promise.resolve().then(function() {
                  var t = f();
                  delete t[JSON.stringify(e)], d().setItem(l, JSON.stringify(t))
                })
              },
              clear: function() {
                return Promise.resolve().then(function() {
                  d().removeItem(l)
                })
              }
            }), a()]
          }),
          userAgent: (p = {
            value: "Algolia for JavaScript (".concat("4.24.0", ")"),
            add: function(e) {
              var t = "; ".concat(e.segment).concat(void 0 !== e.version ? " (".concat(e.version, ")") : "");
              return -1 === p.value.indexOf(t) && (p.value = "".concat(p.value).concat(t)), p
            }
          }).add({
            segment: "Browser",
            version: "lite"
          }),
          authMode: s.WithinQueryParameters
        }), i), {}, {
          methods: {
            search: w,
            searchForFacetValues: x,
            multipleQueries: w,
            multipleSearchForFacetValues: x,
            customRequest: y,
            initIndex: function(e) {
              return function(t) {
                return b(e)(t, {
                  methods: {
                    search: S,
                    searchForFacetValues: P,
                    findAnswers: j
                  }
                })
              }
            },
            getRecommendations: C
          }
        }))
      }
      return k.version = "4.24.0", k
    }()
  },
  23988: e => {
    "use strict";
    e.s({
      default: () => i
    });
    var t = e.i(892988),
      r = e.i(542803),
      n = e.i(378469);
    e.i(873959);
    var a = e.i(965790),
      o = e.i(167454);

    function i({
      index: e,
      searchOptions: i,
      tags: c,
      defaultTag: u,
      showAlgolia: l = !1,
      allowClear: d = !1,
      ...f
    }) {
      let [h, m] = (0, n.useState)(u), {
        search: p,
        setSearch: v,
        query: g
      } = (0, r.useDocsSearch)({
        type: "algolia",
        index: e,
        ...i
      }, void 0, h);
      return (0, a.useOnChange)(u, e => {
        m(e)
      }), (0, t.jsx)(o.SearchDialog, {
        search: p,
        onSearchChange: v,
        results: g.data ?? [],
        isLoading: g.isLoading,
        ...f,
        footer: c ? (0, t.jsxs)(t.Fragment, {
          children: [(0, t.jsx)(o.TagsList, {
            tag: h,
            onTagChange: m,
            items: c,
            allowClear: d,
            children: l ? (0, t.jsx)(s, {}) : null
          }), f.footer]
        }) : f.footer
      })
    }

    function s() {
      return (0, t.jsx)("a", {
        href: "https://algolia.com",
        rel: "noreferrer noopener",
        className: "ms-auto text-xs text-fd-muted-foreground",
        children: "Search powered by Algolia"
      })
    }
  },
  996117: e => {
    "use strict";
    e.s({
      SearchDialog: () => i
    }), e.i(983505);
    var t = e.i(892988),
      r = e.i(299188),
      n = e.i(23988),
      a = e.i(518937);
    let o = (0, r.default)("NNTAHQI9C5", "68e1a40be597f44e4c4e5c33f6c17be1").initIndex("turbo_docs_production");

    function i(e) {
      return (0, t.jsx)(n.default, {
        index: o,
        ...e,
        links: [
          ["Home", "/"],
          ["Turborepo documentation", "/docs"],
          ["Blog", "/blog"],
          ["Changelog", `${a.gitHubRepoUrl}/releases`],
          ["Github", a.gitHubRepoUrl],
          ["Community", "https://community.vercel.com/tag/turborepo"]
        ]
      })
    }
  },
  409122: e => {
    "use strict";
    e.s({
      RootProvider: () => o
    });
    var t = e.i(892988);
    e.i(127460);
    var r = e.i(659825),
      n = e.i(996117),
      a = e.i(692752);

    function o({
      children: e
    }) {
      return (0, t.jsx)(a.TopLevelMobileMenuProvider, {
        children: (0, t.jsx)(r.RootProvider, {
          search: {
            SearchDialog: n.SearchDialog
          },
          children: e
        })
      })
    }
  },
  948415: e => {
    e.v(t => Promise.all(["static/chunks/cde6c87527614ff0.js"].map(t => e.l(t))).then(() => t(565780)))
  },
  592367: e => {
    e.v(t => Promise.all(["static/chunks/55520c0fe94c9753.js", "static/chunks/ce52eb319b3e30d6.js"].map(t => e.l(t))).then(() => t(788553)))
  },
  551282: e => {
    e.v(t => Promise.all(["static/chunks/5a6476cea4a86903.js"].map(t => e.l(t))).then(() => t(868350)))
  },
  61608: e => {
    e.v(t => Promise.all(["static/chunks/1b3f36eba7a77671.js"].map(t => e.l(t))).then(() => t(320093)))
  },
  98812: e => {
    e.v(t => Promise.all(["static/chunks/5b898a4b3c092c1e.js"].map(t => e.l(t))).then(() => t(981171)))
  }
}]);

//# sourceMappingURL=ead84a6d3af2ce42.js.map