From 000fa97f4b7ef2eb95be7b8e101542bb9dcf1a35 Mon Sep 17 00:00:00 2001 From: Michael Ruoss Date: Thu, 5 Sep 2024 18:00:06 +0200 Subject: [PATCH] Add support for Kubernetes backend (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jonatan KÅ‚osko --- assets/runner_cell/src/App.js | 404 ++++++------------------ assets/runner_cell/src/Fly.js | 95 ++++++ assets/runner_cell/src/K8s.js | 14 + assets/runner_cell/src/Pool.js | 45 +++ assets/runner_cell/src/form_elements.js | 192 +++++++++++ lib/assets/runner_cell/build/main.css | 2 +- lib/assets/runner_cell/build/main.js | 15 +- lib/kino_flame/runner_cell.ex | 183 +++++++++-- mix.exs | 3 +- mix.lock | 5 +- test/kino_flame/runner_cell_test.exs | 90 +++++- 11 files changed, 698 insertions(+), 350 deletions(-) create mode 100644 assets/runner_cell/src/Fly.js create mode 100644 assets/runner_cell/src/K8s.js create mode 100644 assets/runner_cell/src/Pool.js create mode 100644 assets/runner_cell/src/form_elements.js diff --git a/assets/runner_cell/src/App.js b/assets/runner_cell/src/App.js index 1c7a918..3eaeb4a 100644 --- a/assets/runner_cell/src/App.js +++ b/assets/runner_cell/src/App.js @@ -1,34 +1,43 @@ -import React, { useEffect, useRef, useState } from "react"; -import { - RiQuestionnaireLine, - RiArrowDownSLine, - RiCloseLine, -} from "@remixicon/react"; +import React, { useEffect, useState } from "react"; +import { RiQuestionnaireLine } from "@remixicon/react"; import classNames from "classnames"; +import Fly from "./Fly"; +import { + FieldWrapper, + InlineLabel, + SelectField, + TextField, +} from "./form_elements"; +import K8s from "./K8s"; -const FLY_CPU_KIND_OPTIONS = ["shared", "performance"].map((kind) => ({ - value: kind, - label: kind, -})); - -const FLY_GPU_KIND_OPTIONS = [{ value: "", label: "None" }].concat( - ["a10", "a100-pcie-40gb", "a100-sxm4-80gb", "l40s"].map((kind) => ({ - value: kind, - label: kind, - })), -); +const BACKEND_OPTIONS = [ + { value: "fly", label: "Fly" }, + { value: "k8s", label: "Kubernetes" }, +]; export default function App({ ctx, payload }) { const [fields, setFields] = useState(payload.fields); const [allEnvs, setAllEnvs] = useState(payload.all_envs); const [showHelpBox, setShowHelpBox] = useState(false); - const warning_type = payload.warning_type; + const [missingDep, setMissingDep] = useState(payload.missing_dep); + const [missingLivebookCookie, setMissingLivebookCookie] = useState( + payload.missing_livebook_cookie + ); + const warnings = payload.warnings; useEffect(() => { ctx.handleEvent("update", ({ fields }) => { setFields((currentFields) => ({ ...currentFields, ...fields })); }); + ctx.handleEvent("missing_dep", ({ dep }) => { + setMissingDep(dep); + }); + + ctx.handleEvent("missing_livebook_cookie", ({ is_missing }) => { + setMissingLivebookCookie(is_missing); + }); + ctx.handleEvent("set_all_envs", ({ all_envs }) => { setAllEnvs(all_envs); }); @@ -65,14 +74,14 @@ export default function App({ ctx, payload }) { return (
- {warning_type === "no_fly" && ( + {fields.backend == "fly" && warnings.no_fly && ( Using FLAME Fly backend only works when running within the Fly infrastructure. To use it, either use the Livebook Fly runtime or deploy your Livebook as a Fly app. )} - {warning_type === "no_fly_token" && ( + {fields.backend == "fly" && !warnings.no_fly && warnings.no_fly_token && ( FLAME Fly backend expects the FLY_API_TOKEN environment variable to be set, but none was found. If you are running Livebook as a Fly app, you @@ -82,7 +91,47 @@ export default function App({ ctx, payload }) { )} -
+ {fields.backend == "k8s" && warnings.no_k8s && ( + + Using FLAME Kubernetes backend only works when Livebook is running on + a Kubernetes cluster. To use it, either use the Livebook K8s runtime + or deploy your Livebook as a{" "} + + Kubernetes deployment + + . + + )} + {fields.backend == "k8s" && missingDep && ( + +

+ To successfully start the FLAME pool, you need to add the following + dependency: +

+
+            {missingDep}
+          
+
+ )} + {fields.backend == "k8s" && missingLivebookCookie && ( + + To successfully connect to the runtime, your Pod template must declare + the following env variable: +
+            {`\nenv:\n- name: LIVEBOOK_COOKIE\n  value: #{Node.get_cookie()}`}
+          
+
+ )} +
@@ -96,9 +145,9 @@ export default function App({ ctx, payload }) {
@@ -108,113 +157,29 @@ export default function App({ ctx, payload }) {
- {showHelpBox && } -
-
- handleChange(event, false)} - onBlur={handleBlur} - min="0" - required - /> -
-
- handleChange(event, false)} - onBlur={handleBlur} - min="1" - required - /> -
-
- handleChange(event, false)} - onBlur={handleBlur} - min="1" - required - /> -
-
-
-
- -
- handleChange(event, false)} - onBlur={handleBlur} - min="1" - required - /> -
-
- handleChange(event, false)} - onBlur={handleBlur} - min="1" - required - /> -
- } + {fields.backend == "fly" && ( + -
- handleChange(event, false)} - onBlur={handleBlur} - min="1" - /> -
-
-
-
- handleFieldChange("fly_envs", value)} - options={allEnvs.map((env) => ({ label: env, value: env }))} + )} + {fields.backend == "k8s" && ( + -
+ )}
); } -function HelpBox(_props) { +function HelpBox({ fields }) { return (

@@ -245,7 +210,7 @@ function HelpBox(_props) { FLAME . call( - :runner,{" "} + :{fields.name},{" "} fn{" "} {"->"} {"\n ...\n"} @@ -291,192 +256,3 @@ function IconButton({ children, ...props }) { ); } - -function SelectField({ - label = null, - value, - className, - options = [], - optionGroups = [], - ...props -}) { - function renderOptions(options) { - return options.map((option) => ( - - )); - } - - return ( -

- {label && ( - - )} -
- -
- -
-
-
- ); -} - -function MultiSelectField({ - label = null, - value, - className, - options = [], - onChange, - ...props -}) { - const availableOptions = options.filter( - (option) => !value.includes(option.value), - ); - - function labelForValue(value) { - const option = options.find((option) => option.value === value); - - if (option) { - return option.label; - } else { - return value; - } - } - - function handleSelectChange(event) { - const subvalue = event.target.value; - const newValue = value.concat([subvalue]).sort(); - onChange && onChange(newValue); - } - - function handleDelete(subvalue) { - const newValue = value.filter( - (otherSubvalue) => otherSubvalue !== subvalue, - ); - onChange && onChange(newValue); - } - - return ( -
- {label && ( - - )} -
-
- {value.map((value) => ( -
- {labelForValue(value)} - -
- ))} -
- -
- -
-
-
- ); -} - -function FieldWrapper({ children }) { - return
{children}
; -} - -function InlineLabel({ label }) { - return ( - - ); -} - -function TextField({ - label = null, - value, - type = "text", - className, - required = false, - fullWidth = false, - inputRef, - startAdornment, - ...props -}) { - return ( -
- {label && ( - - )} -
- {startAdornment} - -
-
- ); -} diff --git a/assets/runner_cell/src/Fly.js b/assets/runner_cell/src/Fly.js new file mode 100644 index 0000000..f80049e --- /dev/null +++ b/assets/runner_cell/src/Fly.js @@ -0,0 +1,95 @@ +import React from "react"; +import { MultiSelectField, SelectField, TextField } from "./form_elements"; +import Pool from "./Pool"; + +const FLY_CPU_KIND_OPTIONS = ["shared", "performance"].map((kind) => ({ + value: kind, + label: kind, +})); + +const FLY_GPU_KIND_OPTIONS = [{ value: "", label: "None" }].concat( + ["a10", "a100-pcie-40gb", "a100-sxm4-80gb", "l40s"].map((kind) => ({ + value: kind, + label: kind, + })) +); + +export default function Fly({ + fields, + allEnvs, + handleBlur, + handleChange, + handleFieldChange, +}) { + return ( +
+ +
+
+ +
+ handleChange(event, false)} + onBlur={handleBlur} + min="1" + required + /> +
+
+ handleChange(event, false)} + onBlur={handleBlur} + min="1" + required + /> +
+ +
+ handleChange(event, false)} + onBlur={handleBlur} + min="1" + /> +
+
+
+
+ handleFieldChange("fly_envs", value)} + options={allEnvs.map((env) => ({ label: env, value: env }))} + /> +
+
+ ); +} diff --git a/assets/runner_cell/src/K8s.js b/assets/runner_cell/src/K8s.js new file mode 100644 index 0000000..28479f3 --- /dev/null +++ b/assets/runner_cell/src/K8s.js @@ -0,0 +1,14 @@ +import React from "react"; +import Pool from "./Pool"; + +export default function K8s({ fields, handleChange, handleBlur }) { + return ( +
+ +
+ ); +} diff --git a/assets/runner_cell/src/Pool.js b/assets/runner_cell/src/Pool.js new file mode 100644 index 0000000..3edec23 --- /dev/null +++ b/assets/runner_cell/src/Pool.js @@ -0,0 +1,45 @@ +import React from "react"; +import { SelectField, TextField } from "./form_elements"; + +const Pool = ({ fields, handleChange, handleBlur }) => ( +
+
+ handleChange(event, false)} + onBlur={handleBlur} + min="0" + required + /> +
+
+ handleChange(event, false)} + onBlur={handleBlur} + min="1" + required + /> +
+
+ handleChange(event, false)} + onBlur={handleBlur} + min="1" + required + /> +
+
+); + +export default Pool; diff --git a/assets/runner_cell/src/form_elements.js b/assets/runner_cell/src/form_elements.js new file mode 100644 index 0000000..355b23a --- /dev/null +++ b/assets/runner_cell/src/form_elements.js @@ -0,0 +1,192 @@ +import React from "react"; +import { RiCloseLine, RiArrowDownSLine } from "@remixicon/react"; +import classNames from "classnames"; + +export function SelectField({ + label = null, + value, + className, + options = [], + optionGroups = [], + ...props +}) { + function renderOptions(options) { + return options.map((option) => ( + + )); + } + + return ( +
+ {label && ( + + )} +
+ +
+ +
+
+
+ ); +} + +export function MultiSelectField({ + label = null, + value, + className, + options = [], + onChange, + ...props +}) { + const availableOptions = options.filter( + (option) => !value.includes(option.value) + ); + + function labelForValue(value) { + const option = options.find((option) => option.value === value); + + if (option) { + return option.label; + } else { + return value; + } + } + + function handleSelectChange(event) { + const subvalue = event.target.value; + const newValue = value.concat([subvalue]).sort(); + onChange && onChange(newValue); + } + + function handleDelete(subvalue) { + const newValue = value.filter( + (otherSubvalue) => otherSubvalue !== subvalue + ); + onChange && onChange(newValue); + } + + return ( +
+ {label && ( + + )} +
+
+ {value.map((value) => ( +
+ {labelForValue(value)} + +
+ ))} +
+ +
+ +
+
+
+ ); +} + +export function FieldWrapper({ children }) { + return
{children}
; +} + +export function InlineLabel({ label }) { + return ( + + ); +} + +export function TextField({ + label = null, + value, + type = "text", + className, + required = false, + fullWidth = false, + inputRef, + startAdornment, + ...props +}) { + return ( +
+ {label && ( + + )} +
+ {startAdornment} + +
+
+ ); +} diff --git a/lib/assets/runner_cell/build/main.css b/lib/assets/runner_cell/build/main.css index fa0a815..a88a4c3 100644 --- a/lib/assets/runner_cell/build/main.css +++ b/lib/assets/runner_cell/build/main.css @@ -1 +1 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e1e8f0}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#91a4b7}input::placeholder,textarea::placeholder{opacity:1;color:#91a4b7}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(101 131 255 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(101 131 255 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.inset-y-0{top:0;bottom:0}.right-0{right:0}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mt-2{margin-top:.5rem}.block{display:block}.flex{display:flex}.min-h-\[38px\]{min-height:38px}.w-0{width:0px}.w-36{width:9rem}.w-\[20ch\]{width:20ch}.w-full{width:100%}.min-w-36{min-width:9rem}.min-w-8{min-width:2rem}.max-w-full{max-width:100%}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.overflow-hidden{overflow:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(225 232 240 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(202 213 224 / var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity: 1;border-color:rgb(13 24 41 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(241 163 166 / var(--tw-border-opacity))}.border-yellow-600{--tw-border-opacity: 1;border-color:rgb(255 168 63 / var(--tw-border-opacity))}.border-b-gray-200{--tw-border-opacity: 1;border-bottom-color:rgb(225 232 240 / var(--tw-border-opacity))}.bg-\[\#282c34\]{--tw-bg-opacity: 1;background-color:rgb(40 44 52 / var(--tw-bg-opacity))}.bg-\[\#fefefe\]{--tw-bg-opacity: 1;background-color:rgb(254 254 254 / var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(236 240 255 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(225 232 240 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(255 247 236 / var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pr-0{padding-right:0}.pr-7{padding-right:1.75rem}.font-sans{font-family:Inter}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.leading-none{line-height:1}.text-\[\#56b6c2\]{--tw-text-opacity: 1;color:rgb(86 182 194 / var(--tw-text-opacity))}.text-\[\#61afef\]{--tw-text-opacity: 1;color:rgb(97 175 239 / var(--tw-text-opacity))}.text-\[\#c678dd\]{--tw-text-opacity: 1;color:rgb(198 120 221 / var(--tw-text-opacity))}.text-\[\#c8ccd4\]{--tw-text-opacity: 1;color:rgb(200 204 212 / var(--tw-text-opacity))}.text-\[\#d19a66\]{--tw-text-opacity: 1;color:rgb(209 154 102 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(97 117 138 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(68 86 104 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(48 66 84 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(13 24 41 / var(--tw-text-opacity))}.no-underline{text-decoration-line:none}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(145 164 183 / var(--tw-placeholder-opacity))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(145 164 183 / var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:border-none:hover{border-style:none}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(202 213 224 / var(--tw-bg-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(13 24 41 / var(--tw-text-opacity))}.focus\:bg-gray-300\/25:focus{background-color:#cad5e040}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-default:disabled{cursor:default}.disabled\:text-gray-300:disabled{--tw-text-opacity: 1;color:rgb(202 213 224 / var(--tw-text-opacity))} +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e1e8f0}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#91a4b7}input::placeholder,textarea::placeholder{opacity:1;color:#91a4b7}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(101 131 255 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(101 131 255 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.inset-y-0{top:0;bottom:0}.right-0{right:0}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mt-2{margin-top:.5rem}.block{display:block}.flex{display:flex}.min-h-\[38px\]{min-height:38px}.w-0{width:0px}.w-36{width:9rem}.w-\[20ch\]{width:20ch}.w-full{width:100%}.min-w-36{min-width:9rem}.min-w-8{min-width:2rem}.max-w-full{max-width:100%}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.overflow-hidden{overflow:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(225 232 240 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(202 213 224 / var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity: 1;border-color:rgb(13 24 41 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(241 163 166 / var(--tw-border-opacity))}.border-yellow-600{--tw-border-opacity: 1;border-color:rgb(255 168 63 / var(--tw-border-opacity))}.border-b-gray-200{--tw-border-opacity: 1;border-bottom-color:rgb(225 232 240 / var(--tw-border-opacity))}.bg-\[\#282c34\]{--tw-bg-opacity: 1;background-color:rgb(40 44 52 / var(--tw-bg-opacity))}.bg-\[\#fefefe\]{--tw-bg-opacity: 1;background-color:rgb(254 254 254 / var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(236 240 255 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(225 232 240 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(255 247 236 / var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pr-0{padding-right:0}.pr-7{padding-right:1.75rem}.font-sans{font-family:Inter}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.leading-none{line-height:1}.text-\[\#56b6c2\]{--tw-text-opacity: 1;color:rgb(86 182 194 / var(--tw-text-opacity))}.text-\[\#61afef\]{--tw-text-opacity: 1;color:rgb(97 175 239 / var(--tw-text-opacity))}.text-\[\#c678dd\]{--tw-text-opacity: 1;color:rgb(198 120 221 / var(--tw-text-opacity))}.text-\[\#c8ccd4\]{--tw-text-opacity: 1;color:rgb(200 204 212 / var(--tw-text-opacity))}.text-\[\#d19a66\]{--tw-text-opacity: 1;color:rgb(209 154 102 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(97 117 138 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(68 86 104 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(48 66 84 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(13 24 41 / var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity))}.no-underline{text-decoration-line:none}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(145 164 183 / var(--tw-placeholder-opacity))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(145 164 183 / var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:border-none:hover{border-style:none}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(202 213 224 / var(--tw-bg-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(13 24 41 / var(--tw-text-opacity))}.focus\:bg-gray-300\/25:focus{background-color:#cad5e040}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-default:disabled{cursor:default}.disabled\:text-gray-300:disabled{--tw-text-opacity: 1;color:rgb(202 213 224 / var(--tw-text-opacity))} diff --git a/lib/assets/runner_cell/build/main.js b/lib/assets/runner_cell/build/main.js index 0751e8d..73b20a2 100644 --- a/lib/assets/runner_cell/build/main.js +++ b/lib/assets/runner_cell/build/main.js @@ -1,13 +1,16 @@ -var $e=Object.create;var y5=Object.defineProperty,Ke=Object.defineProperties,Ye=Object.getOwnPropertyDescriptor,Xe=Object.getOwnPropertyDescriptors,qe=Object.getOwnPropertyNames,o4=Object.getOwnPropertySymbols,Je=Object.getPrototypeOf,S5=Object.prototype.hasOwnProperty,i3=Object.prototype.propertyIsEnumerable;var l3=(e,t,l)=>t in e?y5(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,g1=(e,t)=>{for(var l in t||(t={}))S5.call(t,l)&&l3(e,l,t[l]);if(o4)for(var l of o4(t))i3.call(t,l)&&l3(e,l,t[l]);return e},S1=(e,t)=>Ke(e,Xe(t));var U1=(e,t)=>{var l={};for(var i in e)S5.call(e,i)&&t.indexOf(i)<0&&(l[i]=e[i]);if(e!=null&&o4)for(var i of o4(e))t.indexOf(i)<0&&i3.call(e,i)&&(l[i]=e[i]);return l};var q1=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var et=(e,t,l,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of qe(t))!S5.call(e,r)&&r!==l&&y5(e,r,{get:()=>t[r],enumerable:!(i=Ye(t,r))||i.enumerable});return e};var H0=(e,t,l)=>(l=e!=null?$e(Je(e)):{},et(t||!e||!e.__esModule?y5(l,"default",{value:e,enumerable:!0}):l,e));var H3=q1(f=>{"use strict";var V0=Symbol.for("react.element"),tt=Symbol.for("react.portal"),lt=Symbol.for("react.fragment"),it=Symbol.for("react.strict_mode"),rt=Symbol.for("react.profiler"),st=Symbol.for("react.provider"),Ct=Symbol.for("react.context"),at=Symbol.for("react.forward_ref"),ot=Symbol.for("react.suspense"),nt=Symbol.for("react.memo"),ct=Symbol.for("react.lazy"),r3=Symbol.iterator;function mt(e){return e===null||typeof e!="object"?null:(e=r3&&e[r3]||e["@@iterator"],typeof e=="function"?e:null)}var a3={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},o3=Object.assign,n3={};function A2(e,t,l){this.props=e,this.context=t,this.refs=n3,this.updater=l||a3}A2.prototype.isReactComponent={};A2.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};A2.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function c3(){}c3.prototype=A2.prototype;function P5(e,t,l){this.props=e,this.context=t,this.refs=n3,this.updater=l||a3}var D5=P5.prototype=new c3;D5.constructor=P5;o3(D5,A2.prototype);D5.isPureReactComponent=!0;var s3=Array.isArray,m3=Object.prototype.hasOwnProperty,T5={current:null},w3={key:!0,ref:!0,__self:!0,__source:!0};function h3(e,t,l){var i,r={},s=null,C=null;if(t!=null)for(i in t.ref!==void 0&&(C=t.ref),t.key!==void 0&&(s=""+t.key),t)m3.call(t,i)&&!w3.hasOwnProperty(i)&&(r[i]=t[i]);var a=arguments.length-2;if(a===1)r.children=l;else if(1{"use strict";V3.exports=H3()});var E3=q1(F=>{"use strict";function O5(e,t){var l=e.length;e.push(t);e:for(;0>>1,r=e[i];if(0>>1;iw4(a,l))ow4(c,a)?(e[i]=c,e[o]=l,i=o):(e[i]=a,e[C]=l,i=C);else if(ow4(c,l))e[i]=c,e[o]=l,i=o;else break e}}return t}function w4(e,t){var l=e.sortIndex-t.sortIndex;return l!==0?l:e.id-t.id}typeof performance=="object"&&typeof performance.now=="function"?(L3=performance,F.unstable_now=function(){return L3.now()}):(_5=Date,g3=_5.now(),F.unstable_now=function(){return _5.now()-g3});var L3,_5,g3,k1=[],J1=[],Lt=1,v1=null,X=3,V4=!1,x2=!1,v0=!1,x3=typeof setTimeout=="function"?setTimeout:null,Z3=typeof clearTimeout=="function"?clearTimeout:null,v3=typeof setImmediate!="undefined"?setImmediate:null;typeof navigator!="undefined"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function W5(e){for(var t=E1(J1);t!==null;){if(t.callback===null)H4(J1);else if(t.startTime<=e)H4(J1),t.sortIndex=t.expirationTime,O5(k1,t);else break;t=E1(J1)}}function j5(e){if(v0=!1,W5(e),!x2)if(E1(k1)!==null)x2=!0,G5(b5);else{var t=E1(J1);t!==null&&Q5(j5,t.startTime-e)}}function b5(e,t){x2=!1,v0&&(v0=!1,Z3(M0),M0=-1),V4=!0;var l=X;try{for(W5(t),v1=E1(k1);v1!==null&&(!(v1.expirationTime>t)||e&&!u3());){var i=v1.callback;if(typeof i=="function"){v1.callback=null,X=v1.priorityLevel;var r=i(v1.expirationTime<=t);t=F.unstable_now(),typeof r=="function"?v1.callback=r:v1===E1(k1)&&H4(k1),W5(t)}else H4(k1);v1=E1(k1)}if(v1!==null)var s=!0;else{var C=E1(J1);C!==null&&Q5(j5,C.startTime-t),s=!1}return s}finally{v1=null,X=l,V4=!1}}var L4=!1,h4=null,M0=-1,d3=5,p3=-1;function u3(){return!(F.unstable_now()-p3e||125i?(e.sortIndex=l,O5(J1,e),E1(k1)===null&&e===E1(J1)&&(v0?(Z3(M0),M0=-1):v0=!0,Q5(j5,l-i))):(e.sortIndex=r,O5(k1,e),x2||V4||(x2=!0,G5(b5))),e};F.unstable_shouldYield=u3;F.unstable_wrapCallback=function(e){var t=X;return function(){var l=X;X=t;try{return e.apply(this,arguments)}finally{X=l}}}});var f3=q1((zi,N3)=>{"use strict";N3.exports=E3()});var Se=q1(L1=>{"use strict";var k8=L0(),H1=f3();function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,l=1;lt}return!1}function s1(e,t,l,i,r,s,C){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=l,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=C}var Y={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Y[e]=new s1(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Y[t]=new s1(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Y[e]=new s1(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Y[e]=new s1(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Y[e]=new s1(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Y[e]=new s1(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Y[e]=new s1(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Y[e]=new s1(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Y[e]=new s1(e,5,!1,e.toLowerCase(),null,!1,!1)});var o7=/[\-:]([a-z])/g;function n7(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(o7,n7);Y[t]=new s1(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(o7,n7);Y[t]=new s1(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(o7,n7);Y[t]=new s1(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Y[e]=new s1(e,1,!1,e.toLowerCase(),null,!1,!1)});Y.xlinkHref=new s1("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Y[e]=new s1(e,1,!1,e.toLowerCase(),null,!0,!0)});function c7(e,t,l,i){var r=Y.hasOwnProperty(t)?Y[t]:null;(r!==null?r.type!==0:i||!(2t in e?A5(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,h1=(e,t)=>{for(var l in t||(t={}))_5.call(t,l)&&h3(e,l,t[l]);if(h4)for(var l of h4(t))H3.call(t,l)&&h3(e,l,t[l]);return e},f1=(e,t)=>rt(e,Ct(t));var D1=(e,t)=>{var l={};for(var i in e)_5.call(e,i)&&t.indexOf(i)<0&&(l[i]=e[i]);if(e!=null&&h4)for(var i of h4(e))t.indexOf(i)<0&&H3.call(e,i)&&(l[i]=e[i]);return l};var i2=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var nt=(e,t,l,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of at(t))!_5.call(e,r)&&r!==l&&A5(e,r,{get:()=>t[r],enumerable:!(i=st(t,r))||i.enumerable});return e};var T1=(e,t,l)=>(l=e!=null?it(ot(e)):{},nt(t||!e||!e.__esModule?A5(l,"default",{value:e,enumerable:!0}):l,e));var E3=i2(f=>{"use strict";var M0=Symbol.for("react.element"),ct=Symbol.for("react.portal"),mt=Symbol.for("react.fragment"),wt=Symbol.for("react.strict_mode"),ht=Symbol.for("react.profiler"),Ht=Symbol.for("react.provider"),Vt=Symbol.for("react.context"),Lt=Symbol.for("react.forward_ref"),gt=Symbol.for("react.suspense"),vt=Symbol.for("react.memo"),Mt=Symbol.for("react.lazy"),V3=Symbol.iterator;function xt(e){return e===null||typeof e!="object"?null:(e=V3&&e[V3]||e["@@iterator"],typeof e=="function"?e:null)}var v3={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},M3=Object.assign,x3={};function I2(e,t,l){this.props=e,this.context=t,this.refs=x3,this.updater=l||v3}I2.prototype.isReactComponent={};I2.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};I2.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function d3(){}d3.prototype=I2.prototype;function O5(e,t,l){this.props=e,this.context=t,this.refs=x3,this.updater=l||v3}var I5=O5.prototype=new d3;I5.constructor=O5;M3(I5,I2.prototype);I5.isPureReactComponent=!0;var L3=Array.isArray,Z3=Object.prototype.hasOwnProperty,W5={current:null},p3={key:!0,ref:!0,__self:!0,__source:!0};function u3(e,t,l){var i,r={},s=null,C=null;if(t!=null)for(i in t.ref!==void 0&&(C=t.ref),t.key!==void 0&&(s=""+t.key),t)Z3.call(t,i)&&!p3.hasOwnProperty(i)&&(r[i]=t[i]);var a=arguments.length-2;if(a===1)r.children=l;else if(1{"use strict";N3.exports=E3()});var D3=i2(y=>{"use strict";function K5(e,t){var l=e.length;e.push(t);e:for(;0>>1,r=e[i];if(0>>1;ig4(a,l))og4(m,a)?(e[i]=m,e[o]=l,i=o):(e[i]=a,e[C]=l,i=C);else if(og4(m,l))e[i]=m,e[o]=l,i=o;else break e}}return t}function g4(e,t){var l=e.sortIndex-t.sortIndex;return l!==0?l:e.id-t.id}typeof performance=="object"&&typeof performance.now=="function"?(f3=performance,y.unstable_now=function(){return f3.now()}):(j5=Date,B3=j5.now(),y.unstable_now=function(){return j5.now()-B3});var f3,j5,B3,A1=[],r2=[],Et=1,x1=null,q=3,x4=!1,N2=!1,d0=!1,F3=typeof setTimeout=="function"?setTimeout:null,y3=typeof clearTimeout=="function"?clearTimeout:null,R3=typeof setImmediate!="undefined"?setImmediate:null;typeof navigator!="undefined"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function $5(e){for(var t=B1(r2);t!==null;){if(t.callback===null)M4(r2);else if(t.startTime<=e)M4(r2),t.sortIndex=t.expirationTime,K5(A1,t);else break;t=B1(r2)}}function Y5(e){if(d0=!1,$5(e),!N2)if(B1(A1)!==null)N2=!0,q5(X5);else{var t=B1(r2);t!==null&&J5(Y5,t.startTime-e)}}function X5(e,t){N2=!1,d0&&(d0=!1,y3(Z0),Z0=-1),x4=!0;var l=q;try{for($5(t),x1=B1(A1);x1!==null&&(!(x1.expirationTime>t)||e&&!P3());){var i=x1.callback;if(typeof i=="function"){x1.callback=null,q=x1.priorityLevel;var r=i(x1.expirationTime<=t);t=y.unstable_now(),typeof r=="function"?x1.callback=r:x1===B1(A1)&&M4(A1),$5(t)}else M4(A1);x1=B1(A1)}if(x1!==null)var s=!0;else{var C=B1(r2);C!==null&&J5(Y5,C.startTime-t),s=!1}return s}finally{x1=null,q=l,x4=!1}}var d4=!1,v4=null,Z0=-1,S3=5,k3=-1;function P3(){return!(y.unstable_now()-k3e||125i?(e.sortIndex=l,K5(r2,e),B1(A1)===null&&e===B1(r2)&&(d0?(y3(Z0),Z0=-1):d0=!0,J5(Y5,l-i))):(e.sortIndex=r,K5(A1,e),N2||x4||(N2=!0,q5(X5))),e};y.unstable_shouldYield=P3;y.unstable_wrapCallback=function(e){var t=q;return function(){var l=q;q=t;try{return e.apply(this,arguments)}finally{q=l}}}});var A3=i2((Ui,T3)=>{"use strict";T3.exports=D3()});var be=i2(M1=>{"use strict";var j8=j1(),g1=A3();function L(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,l=1;lt}return!1}function a1(e,t,l,i,r,s,C){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=l,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=C}var X={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){X[e]=new a1(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];X[t]=new a1(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){X[e]=new a1(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){X[e]=new a1(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){X[e]=new a1(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){X[e]=new a1(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){X[e]=new a1(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){X[e]=new a1(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){X[e]=new a1(e,5,!1,e.toLowerCase(),null,!1,!1)});var H7=/[\-:]([a-z])/g;function V7(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(H7,V7);X[t]=new a1(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(H7,V7);X[t]=new a1(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(H7,V7);X[t]=new a1(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){X[e]=new a1(e,1,!1,e.toLowerCase(),null,!1,!1)});X.xlinkHref=new a1("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){X[e]=new a1(e,1,!1,e.toLowerCase(),null,!0,!0)});function L7(e,t,l,i){var r=X.hasOwnProperty(t)?X[t]:null;(r!==null?r.type!==0:i||!(2a||r[C]!==s[a]){var o=` -`+r[C].replace(" at new "," at ");return e.displayName&&o.includes("")&&(o=o.replace("",e.displayName)),o}while(1<=C&&0<=a);break}}}finally{K5=!1,Error.prepareStackTrace=l}return(e=e?e.displayName||e.name:"")?B0(e):""}function Zt(e){switch(e.tag){case 5:return B0(e.type);case 16:return B0("Lazy");case 13:return B0("Suspense");case 19:return B0("SuspenseList");case 0:case 2:case 15:return e=Y5(e.type,!1),e;case 11:return e=Y5(e.type.render,!1),e;case 1:return e=Y5(e.type,!0),e;default:return""}}function x9(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case O2:return"Fragment";case I2:return"Portal";case g9:return"Profiler";case m7:return"StrictMode";case v9:return"Suspense";case M9:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case T8:return(e.displayName||"Context")+".Consumer";case D8:return(e._context.displayName||"Context")+".Provider";case w7:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case h7:return t=e.displayName||null,t!==null?t:x9(e.type)||"Memo";case t2:t=e._payload,e=e._init;try{return x9(e(t))}catch(l){}}return null}function dt(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return x9(t);case 8:return t===m7?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function V2(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function _8(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function pt(e){var t=_8(e)?"checked":"value",l=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=""+e[t];if(!e.hasOwnProperty(t)&&typeof l!="undefined"&&typeof l.get=="function"&&typeof l.set=="function"){var r=l.get,s=l.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(C){i=""+C,s.call(this,C)}}),Object.defineProperty(e,t,{enumerable:l.enumerable}),{getValue:function(){return i},setValue:function(C){i=""+C},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function v4(e){e._valueTracker||(e._valueTracker=pt(e))}function U8(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var l=t.getValue(),i="";return e&&(i=_8(e)?e.checked?"true":"false":e.value),e=i,e!==l?(t.setValue(e),!0):!1}function G4(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Z9(e,t){var l=t.checked;return _({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:l!=null?l:e._wrapperState.initialChecked})}function F3(e,t){var l=t.defaultValue==null?"":t.defaultValue,i=t.checked!=null?t.checked:t.defaultChecked;l=V2(t.value!=null?t.value:l),e._wrapperState={initialChecked:i,initialValue:l,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function I8(e,t){t=t.checked,t!=null&&c7(e,"checked",t,!1)}function d9(e,t){I8(e,t);var l=V2(t.value),i=t.type;if(l!=null)i==="number"?(l===0&&e.value===""||e.value!=l)&&(e.value=""+l):e.value!==""+l&&(e.value=""+l);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?p9(e,t.type,l):t.hasOwnProperty("defaultValue")&&p9(e,t.type,V2(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function y3(e,t,l){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var i=t.type;if(!(i!=="submit"&&i!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,l||t===e.value||(e.value=t),e.defaultValue=t}l=e.name,l!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,l!==""&&(e.name=l)}function p9(e,t,l){(t!=="number"||G4(e.ownerDocument)!==e)&&(l==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+l&&(e.defaultValue=""+l))}var R0=Array.isArray;function J2(e,t,l,i){if(e=e.options,t){t={};for(var r=0;r"+t.valueOf().toString()+"",t=M4.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function O0(e,t){if(t){var l=e.firstChild;if(l&&l===e.lastChild&&l.nodeType===3){l.nodeValue=t;return}}e.textContent=t}var y0={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ut=["Webkit","ms","Moz","O"];Object.keys(y0).forEach(function(e){ut.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),y0[t]=y0[e]})});function b8(e,t,l){return t==null||typeof t=="boolean"||t===""?"":l||typeof t!="number"||t===0||y0.hasOwnProperty(e)&&y0[e]?(""+t).trim():t+"px"}function G8(e,t){e=e.style;for(var l in t)if(t.hasOwnProperty(l)){var i=l.indexOf("--")===0,r=b8(l,t[l],i);l==="float"&&(l="cssFloat"),i?e.setProperty(l,r):e[l]=r}}var Et=_({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function N9(e,t){if(t){if(Et[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(g(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(g(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(g(61))}if(t.style!=null&&typeof t.style!="object")throw Error(g(62))}}function f9(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var B9=null;function H7(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var R9=null,e0=null,t0=null;function P3(e){if(e=C4(e)){if(typeof R9!="function")throw Error(g(280));var t=e.stateNode;t&&(t=x5(t),R9(e.stateNode,e.type,t))}}function Q8(e){e0?t0?t0.push(e):t0=[e]:e0=e}function $8(){if(e0){var e=e0,t=t0;if(t0=e0=null,P3(e),t)for(e=0;e>>=0,e===0?32:31-(Dt(e)/Tt|0)|0}var x4=64,Z4=4194304;function z0(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Y4(e,t){var l=e.pendingLanes;if(l===0)return 0;var i=0,r=e.suspendedLanes,s=e.pingedLanes,C=l&268435455;if(C!==0){var a=C&~r;a!==0?i=z0(a):(s&=C,s!==0&&(i=z0(s)))}else C=l&~r,C!==0?i=z0(C):s!==0&&(i=z0(s));if(i===0)return 0;if(t!==0&&t!==i&&!(t&r)&&(r=i&-i,s=t&-t,r>=s||r===16&&(s&4194240)!==0))return t;if(i&4&&(i|=l&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=i;0l;l++)t.push(e);return t}function r4(e,t,l){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-z1(t),e[t]=l}function It(e,t){var l=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=k0),j3=" ",b3=!1;function H6(e,t){switch(e){case"keyup":return Vl.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function V6(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var W2=!1;function gl(e,t){switch(e){case"compositionend":return V6(t);case"keypress":return t.which!==32?null:(b3=!0,j3);case"textInput":return e=t.data,e===j3&&b3?null:e;default:return null}}function vl(e,t){if(W2)return e==="compositionend"||!d7&&H6(e,t)?(e=w6(),T4=M7=s2=null,W2=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=i}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=$3(l)}}function M6(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?M6(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function x6(){for(var e=window,t=G4();t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch(i){l=!1}if(l)e=t.contentWindow;else break;t=G4(e.document)}return t}function p7(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function fl(e){var t=x6(),l=e.focusedElem,i=e.selectionRange;if(t!==l&&l&&l.ownerDocument&&M6(l.ownerDocument.documentElement,l)){if(i!==null&&p7(l)){if(t=i.start,e=i.end,e===void 0&&(e=t),"selectionStart"in l)l.selectionStart=t,l.selectionEnd=Math.min(e,l.value.length);else if(e=(t=l.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var r=l.textContent.length,s=Math.min(i.start,r);i=i.end===void 0?s:Math.min(i.end,r),!e.extend&&s>i&&(r=i,i=s,s=r),r=K3(l,s);var C=K3(l,i);r&&C&&(e.rangeCount!==1||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==C.node||e.focusOffset!==C.offset)&&(t=t.createRange(),t.setStart(r.node,r.offset),e.removeAllRanges(),s>i?(e.addRange(t),e.extend(C.node,C.offset)):(t.setEnd(C.node,C.offset),e.addRange(t)))}}for(t=[],e=l;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;l=document.documentMode,j2=null,P9=null,D0=null,D9=!1;function Y3(e,t,l){var i=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;D9||j2==null||j2!==G4(i)||(i=j2,"selectionStart"in i&&p7(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),D0&&$0(D0,i)||(D0=i,i=J4(P9,"onSelect"),0Q2||(e.current=O9[Q2],O9[Q2]=null,Q2--)}function y(e,t){Q2++,O9[Q2]=e.current,e.current=t}var L2={},t1=v2(L2),o1=v2(!1),B2=L2;function C0(e,t){var l=e.type.contextTypes;if(!l)return L2;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var r={},s;for(s in l)r[s]=t[s];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=r),r}function n1(e){return e=e.childContextTypes,e!=null}function t5(){k(o1),k(t1)}function s8(e,t,l){if(t1.current!==L2)throw Error(g(168));y(t1,t),y(o1,l)}function R6(e,t,l){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!="function")return l;i=i.getChildContext();for(var r in i)if(!(r in t))throw Error(g(108,dt(e)||"Unknown",r));return _({},l,i)}function l5(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||L2,B2=t1.current,y(t1,e),y(o1,o1.current),!0}function C8(e,t,l){var i=e.stateNode;if(!i)throw Error(g(169));l?(e=R6(e,t,B2),i.__reactInternalMemoizedMergedChildContext=e,k(o1),k(t1),y(t1,e)):k(o1),y(o1,l)}var O1=null,Z5=!1,a9=!1;function z6(e){O1===null?O1=[e]:O1.push(e)}function Tl(e){Z5=!0,z6(e)}function M2(){if(!a9&&O1!==null){a9=!0;var e=0,t=z;try{var l=O1;for(z=1;e>=C,r-=C,W1=1<<32-z1(t)+r|l<N?(b=E,E=null):b=E.sibling;var R=h(m,E,w[N],v);if(R===null){E===null&&(E=b);break}e&&E&&R.alternate===null&&t(m,E),n=s(R,n,N),u===null?p=R:u.sibling=R,u=R,E=b}if(N===w.length)return l(m,E),P&&Z2(m,N),p;if(E===null){for(;NN?(b=E,E=null):b=E.sibling;var X1=h(m,E,R.value,v);if(X1===null){E===null&&(E=b);break}e&&E&&X1.alternate===null&&t(m,E),n=s(X1,n,N),u===null?p=X1:u.sibling=X1,u=X1,E=b}if(R.done)return l(m,E),P&&Z2(m,N),p;if(E===null){for(;!R.done;N++,R=w.next())R=L(m,R.value,v),R!==null&&(n=s(R,n,N),u===null?p=R:u.sibling=R,u=R);return P&&Z2(m,N),p}for(E=i(m,E);!R.done;N++,R=w.next())R=V(E,m,N,R.value,v),R!==null&&(e&&R.alternate!==null&&E.delete(R.key===null?N:R.key),n=s(R,n,N),u===null?p=R:u.sibling=R,u=R);return e&&E.forEach(function(Qe){return t(m,Qe)}),P&&Z2(m,N),p}function D(m,n,w,v){if(typeof w=="object"&&w!==null&&w.type===O2&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case g4:e:{for(var p=w.key,u=n;u!==null;){if(u.key===p){if(p=w.type,p===O2){if(u.tag===7){l(m,u.sibling),n=r(u,w.props.children),n.return=m,m=n;break e}}else if(u.elementType===p||typeof p=="object"&&p!==null&&p.$$typeof===t2&&h8(p)===u.type){l(m,u.sibling),n=r(u,w.props),n.ref=u0(m,u,w),n.return=m,m=n;break e}l(m,u);break}else t(m,u);u=u.sibling}w.type===O2?(n=f2(w.props.children,m.mode,v,w.key),n.return=m,m=n):(v=b4(w.type,w.key,w.props,null,m.mode,v),v.ref=u0(m,n,w),v.return=m,m=v)}return C(m);case I2:e:{for(u=w.key;n!==null;){if(n.key===u)if(n.tag===4&&n.stateNode.containerInfo===w.containerInfo&&n.stateNode.implementation===w.implementation){l(m,n.sibling),n=r(n,w.children||[]),n.return=m,m=n;break e}else{l(m,n);break}else t(m,n);n=n.sibling}n=V9(w,m.mode,v),n.return=m,m=n}return C(m);case t2:return u=w._init,D(m,n,u(w._payload),v)}if(R0(w))return x(m,n,w,v);if(x0(w))return Z(m,n,w,v);y4(m,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,n!==null&&n.tag===6?(l(m,n.sibling),n=r(n,w),n.return=m,m=n):(l(m,n),n=H9(w,m.mode,v),n.return=m,m=n),C(m)):l(m,n)}return D}var o0=A6(!0),_6=A6(!1),a4={},_1=v2(a4),q0=v2(a4),J0=v2(a4);function E2(e){if(e===a4)throw Error(g(174));return e}function y7(e,t){switch(y(J0,t),y(q0,e),y(_1,a4),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:E9(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=E9(t,e)}k(_1),y(_1,t)}function n0(){k(_1),k(q0),k(J0)}function U6(e){E2(J0.current);var t=E2(_1.current),l=E9(t,e.type);t!==l&&(y(q0,e),y(_1,l))}function S7(e){q0.current===e&&(k(_1),k(q0))}var T=v2(0);function o5(e){for(var t=e;t!==null;){if(t.tag===13){var l=t.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||l.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var o9=[];function k7(){for(var e=0;el?l:4,e(!0);var i=n9.transition;n9.transition={};try{e(!1),t()}finally{z=l,n9.transition=i}}function le(){return u1().memoizedState}function Il(e,t,l){var i=h2(e);if(l={lane:i,action:l,hasEagerState:!1,eagerState:null,next:null},ie(e))re(t,l);else if(l=k6(e,t,l,i),l!==null){var r=r1();F1(l,e,i,r),se(l,t,i)}}function Ol(e,t,l){var i=h2(e),r={lane:i,action:l,hasEagerState:!1,eagerState:null,next:null};if(ie(e))re(t,r);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var C=t.lastRenderedState,a=s(C,l);if(r.hasEagerState=!0,r.eagerState=a,y1(a,C)){var o=t.interleaved;o===null?(r.next=r,z7(t)):(r.next=o.next,o.next=r),t.interleaved=r;return}}catch(c){}finally{}l=k6(e,t,r,i),l!==null&&(r=r1(),F1(l,e,i,r),se(l,t,i))}}function ie(e){var t=e.alternate;return e===A||t!==null&&t===A}function re(e,t){T0=n5=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function se(e,t,l){if(l&4194240){var i=t.lanes;i&=e.pendingLanes,l|=i,t.lanes=l,L7(e,l)}}var c5={readContext:p1,useCallback:q,useContext:q,useEffect:q,useImperativeHandle:q,useInsertionEffect:q,useLayoutEffect:q,useMemo:q,useReducer:q,useRef:q,useState:q,useDebugValue:q,useDeferredValue:q,useTransition:q,useMutableSource:q,useSyncExternalStore:q,useId:q,unstable_isNewReconciler:!1},Wl={readContext:p1,useCallback:function(e,t){return D1().memoizedState=[e,t===void 0?null:t],e},useContext:p1,useEffect:V8,useImperativeHandle:function(e,t,l){return l=l!=null?l.concat([e]):null,I4(4194308,4,X6.bind(null,t,e),l)},useLayoutEffect:function(e,t){return I4(4194308,4,e,t)},useInsertionEffect:function(e,t){return I4(4,2,e,t)},useMemo:function(e,t){var l=D1();return t=t===void 0?null:t,e=e(),l.memoizedState=[e,t],e},useReducer:function(e,t,l){var i=D1();return t=l!==void 0?l(t):t,i.memoizedState=i.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},i.queue=e,e=e.dispatch=Il.bind(null,A,e),[i.memoizedState,e]},useRef:function(e){var t=D1();return e={current:e},t.memoizedState=e},useState:H8,useDebugValue:_7,useDeferredValue:function(e){return D1().memoizedState=e},useTransition:function(){var e=H8(!1),t=e[0];return e=Ul.bind(null,e[1]),D1().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,l){var i=A,r=D1();if(P){if(l===void 0)throw Error(g(407));l=l()}else{if(l=t(),Q===null)throw Error(g(349));z2&30||W6(i,t,l)}r.memoizedState=l;var s={value:l,getSnapshot:t};return r.queue=s,V8(b6.bind(null,i,s,e),[e]),i.flags|=2048,l4(9,j6.bind(null,i,s,l,t),void 0,null),l},useId:function(){var e=D1(),t=Q.identifierPrefix;if(P){var l=j1,i=W1;l=(i&~(1<<32-z1(i)-1)).toString(32)+l,t=":"+t+"R"+l,l=e4++,0")&&(o=o.replace("",e.displayName)),o}while(1<=C&&0<=a);break}}}finally{t9=!1,Error.prepareStackTrace=l}return(e=e?e.displayName||e.name:"")?F0(e):""}function zt(e){switch(e.tag){case 5:return F0(e.type);case 16:return F0("Lazy");case 13:return F0("Suspense");case 19:return F0("SuspenseList");case 0:case 2:case 15:return e=l9(e.type,!1),e;case 11:return e=l9(e.type.render,!1),e;case 1:return e=l9(e.type,!0),e;default:return""}}function N9(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case G2:return"Fragment";case j2:return"Portal";case p9:return"Profiler";case g7:return"StrictMode";case u9:return"Suspense";case E9:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case K8:return(e.displayName||"Context")+".Consumer";case Q8:return(e._context.displayName||"Context")+".Provider";case v7:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case M7:return t=e.displayName||null,t!==null?t:N9(e.type)||"Memo";case C2:t=e._payload,e=e._init;try{return N9(e(t))}catch(l){}}return null}function Ft(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return N9(t);case 8:return t===g7?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function x2(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Y8(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yt(e){var t=Y8(e)?"checked":"value",l=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=""+e[t];if(!e.hasOwnProperty(t)&&typeof l!="undefined"&&typeof l.get=="function"&&typeof l.set=="function"){var r=l.get,s=l.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(C){i=""+C,s.call(this,C)}}),Object.defineProperty(e,t,{enumerable:l.enumerable}),{getValue:function(){return i},setValue:function(C){i=""+C},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function p4(e){e._valueTracker||(e._valueTracker=yt(e))}function X8(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var l=t.getValue(),i="";return e&&(i=Y8(e)?e.checked?"true":"false":e.value),e=i,e!==l?(t.setValue(e),!0):!1}function X4(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function f9(e,t){var l=t.checked;return U({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:l!=null?l:e._wrapperState.initialChecked})}function I3(e,t){var l=t.defaultValue==null?"":t.defaultValue,i=t.checked!=null?t.checked:t.defaultChecked;l=x2(t.value!=null?t.value:l),e._wrapperState={initialChecked:i,initialValue:l,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function q8(e,t){t=t.checked,t!=null&&L7(e,"checked",t,!1)}function B9(e,t){q8(e,t);var l=x2(t.value),i=t.type;if(l!=null)i==="number"?(l===0&&e.value===""||e.value!=l)&&(e.value=""+l):e.value!==""+l&&(e.value=""+l);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?R9(e,t.type,l):t.hasOwnProperty("defaultValue")&&R9(e,t.type,x2(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function W3(e,t,l){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var i=t.type;if(!(i!=="submit"&&i!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,l||t===e.value||(e.value=t),e.defaultValue=t}l=e.name,l!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,l!==""&&(e.name=l)}function R9(e,t,l){(t!=="number"||X4(e.ownerDocument)!==e)&&(l==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+l&&(e.defaultValue=""+l))}var y0=Array.isArray;function i0(e,t,l,i){if(e=e.options,t){t={};for(var r=0;r"+t.valueOf().toString()+"",t=u4.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function j0(e,t){if(t){var l=e.firstChild;if(l&&l===e.lastChild&&l.nodeType===3){l.nodeValue=t;return}}e.textContent=t}var P0={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},St=["Webkit","ms","Moz","O"];Object.keys(P0).forEach(function(e){St.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),P0[t]=P0[e]})});function l6(e,t,l){return t==null||typeof t=="boolean"||t===""?"":l||typeof t!="number"||t===0||P0.hasOwnProperty(e)&&P0[e]?(""+t).trim():t+"px"}function i6(e,t){e=e.style;for(var l in t)if(t.hasOwnProperty(l)){var i=l.indexOf("--")===0,r=l6(l,t[l],i);l==="float"&&(l="cssFloat"),i?e.setProperty(l,r):e[l]=r}}var kt=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function y9(e,t){if(t){if(kt[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(L(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(L(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(L(61))}if(t.style!=null&&typeof t.style!="object")throw Error(L(62))}}function S9(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var k9=null;function x7(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var P9=null,r0=null,s0=null;function G3(e){if(e=n4(e)){if(typeof P9!="function")throw Error(L(280));var t=e.stateNode;t&&(t=E5(t),P9(e.stateNode,e.type,t))}}function r6(e){r0?s0?s0.push(e):s0=[e]:r0=e}function s6(){if(r0){var e=r0,t=s0;if(s0=r0=null,G3(e),t)for(e=0;e>>=0,e===0?32:31-(jt(e)/Gt|0)|0}var E4=64,N4=4194304;function S0(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function t5(e,t){var l=e.pendingLanes;if(l===0)return 0;var i=0,r=e.suspendedLanes,s=e.pingedLanes,C=l&268435455;if(C!==0){var a=C&~r;a!==0?i=S0(a):(s&=C,s!==0&&(i=S0(s)))}else C=l&~r,C!==0?i=S0(C):s!==0&&(i=S0(s));if(i===0)return 0;if(t!==0&&t!==i&&!(t&r)&&(r=i&-i,s=t&-t,r>=s||r===16&&(s&4194240)!==0))return t;if(i&4&&(i|=l&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=i;0l;l++)t.push(e);return t}function a4(e,t,l){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-S1(t),e[t]=l}function Yt(e,t){var l=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=T0),t8=" ",l8=!1;function E6(e,t){switch(e){case"keyup":return ul.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function N6(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Q2=!1;function Nl(e,t){switch(e){case"compositionend":return N6(t);case"keypress":return t.which!==32?null:(l8=!0,t8);case"textInput":return e=t.data,e===t8&&l8?null:e;default:return null}}function fl(e,t){if(Q2)return e==="compositionend"||!B7&&E6(e,t)?(e=p6(),I4=E7=c2=null,Q2=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=i}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=s8(l)}}function z6(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?z6(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function F6(){for(var e=window,t=X4();t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch(i){l=!1}if(l)e=t.contentWindow;else break;t=X4(e.document)}return t}function R7(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Dl(e){var t=F6(),l=e.focusedElem,i=e.selectionRange;if(t!==l&&l&&l.ownerDocument&&z6(l.ownerDocument.documentElement,l)){if(i!==null&&R7(l)){if(t=i.start,e=i.end,e===void 0&&(e=t),"selectionStart"in l)l.selectionStart=t,l.selectionEnd=Math.min(e,l.value.length);else if(e=(t=l.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var r=l.textContent.length,s=Math.min(i.start,r);i=i.end===void 0?s:Math.min(i.end,r),!e.extend&&s>i&&(r=i,i=s,s=r),r=C8(l,s);var C=C8(l,i);r&&C&&(e.rangeCount!==1||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==C.node||e.focusOffset!==C.offset)&&(t=t.createRange(),t.setStart(r.node,r.offset),e.removeAllRanges(),s>i?(e.addRange(t),e.extend(C.node,C.offset)):(t.setEnd(C.node,C.offset),e.addRange(t)))}}for(t=[],e=l;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;l=document.documentMode,K2=null,O9=null,_0=null,I9=!1;function a8(e,t,l){var i=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;I9||K2==null||K2!==X4(i)||(i=K2,"selectionStart"in i&&R7(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),_0&&X0(_0,i)||(_0=i,i=r5(O9,"onSelect"),0X2||(e.current=K9[X2],K9[X2]=null,X2--)}function S(e,t){X2++,K9[X2]=e.current,e.current=t}var d2={},l1=p2(d2),c1=p2(!1),k2=d2;function c0(e,t){var l=e.type.contextTypes;if(!l)return d2;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var r={},s;for(s in l)r[s]=t[s];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=r),r}function m1(e){return e=e.childContextTypes,e!=null}function C5(){P(c1),P(l1)}function L8(e,t,l){if(l1.current!==d2)throw Error(L(168));S(l1,t),S(c1,l)}function U6(e,t,l){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!="function")return l;i=i.getChildContext();for(var r in i)if(!(r in t))throw Error(L(108,Ft(e)||"Unknown",r));return U({},l,i)}function a5(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||d2,k2=l1.current,S(l1,e),S(c1,c1.current),!0}function g8(e,t,l){var i=e.stateNode;if(!i)throw Error(L(169));l?(e=U6(e,t,k2),i.__reactInternalMemoizedMergedChildContext=e,P(c1),P(l1),S(l1,e)):P(c1),S(c1,l)}var Q1=null,N5=!1,h9=!1;function O6(e){Q1===null?Q1=[e]:Q1.push(e)}function Gl(e){N5=!0,O6(e)}function u2(){if(!h9&&Q1!==null){h9=!0;var e=0,t=z;try{var l=Q1;for(z=1;e>=C,r-=C,K1=1<<32-S1(t)+r|l<N?(G=E,E=null):G=E.sibling;var R=h(c,E,w[N],g);if(R===null){E===null&&(E=G);break}e&&E&&R.alternate===null&&t(c,E),n=s(R,n,N),u===null?Z=R:u.sibling=R,u=R,E=G}if(N===w.length)return l(c,E),T&&f2(c,N),Z;if(E===null){for(;NN?(G=E,E=null):G=E.sibling;var l2=h(c,E,R.value,g);if(l2===null){E===null&&(E=G);break}e&&E&&l2.alternate===null&&t(c,E),n=s(l2,n,N),u===null?Z=l2:u.sibling=l2,u=l2,E=G}if(R.done)return l(c,E),T&&f2(c,N),Z;if(E===null){for(;!R.done;N++,R=w.next())R=V(c,R.value,g),R!==null&&(n=s(R,n,N),u===null?Z=R:u.sibling=R,u=R);return T&&f2(c,N),Z}for(E=i(c,E);!R.done;N++,R=w.next())R=v(E,c,N,R.value,g),R!==null&&(e&&R.alternate!==null&&E.delete(R.key===null?N:R.key),n=s(R,n,N),u===null?Z=R:u.sibling=R,u=R);return e&&E.forEach(function(lt){return t(c,lt)}),T&&f2(c,N),Z}function D(c,n,w,g){if(typeof w=="object"&&w!==null&&w.type===G2&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case Z4:e:{for(var Z=w.key,u=n;u!==null;){if(u.key===Z){if(Z=w.type,Z===G2){if(u.tag===7){l(c,u.sibling),n=r(u,w.props.children),n.return=c,c=n;break e}}else if(u.elementType===Z||typeof Z=="object"&&Z!==null&&Z.$$typeof===C2&&u8(Z)===u.type){l(c,u.sibling),n=r(u,w.props),n.ref=f0(c,u,w),n.return=c,c=n;break e}l(c,u);break}else t(c,u);u=u.sibling}w.type===G2?(n=S2(w.props.children,c.mode,g,w.key),n.return=c,c=n):(g=Y4(w.type,w.key,w.props,null,c.mode,g),g.ref=f0(c,n,w),g.return=c,c=g)}return C(c);case j2:e:{for(u=w.key;n!==null;){if(n.key===u)if(n.tag===4&&n.stateNode.containerInfo===w.containerInfo&&n.stateNode.implementation===w.implementation){l(c,n.sibling),n=r(n,w.children||[]),n.return=c,c=n;break e}else{l(c,n);break}else t(c,n);n=n.sibling}n=d9(w,c.mode,g),n.return=c,c=n}return C(c);case C2:return u=w._init,D(c,n,u(w._payload),g)}if(y0(w))return M(c,n,w,g);if(p0(w))return d(c,n,w,g);T4(c,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,n!==null&&n.tag===6?(l(c,n.sibling),n=r(n,w),n.return=c,c=n):(l(c,n),n=x9(w,c.mode,g),n.return=c,c=n),C(c)):l(c,n)}return D}var w0=$6(!0),Y6=$6(!1),c4={},W1=p2(c4),t4=p2(c4),l4=p2(c4);function F2(e){if(e===c4)throw Error(L(174));return e}function A7(e,t){switch(S(l4,t),S(t4,e),S(W1,c4),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:F9(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=F9(t,e)}P(W1),S(W1,t)}function h0(){P(W1),P(t4),P(l4)}function X6(e){F2(l4.current);var t=F2(W1.current),l=F9(t,e.type);t!==l&&(S(t4,e),S(W1,l))}function _7(e){t4.current===e&&(P(W1),P(t4))}var A=p2(0);function h5(e){for(var t=e;t!==null;){if(t.tag===13){var l=t.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||l.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var H9=[];function U7(){for(var e=0;el?l:4,e(!0);var i=V9.transition;V9.transition={};try{e(!1),t()}finally{z=l,V9.transition=i}}function he(){return N1().memoizedState}function Yl(e,t,l){var i=v2(e);if(l={lane:i,action:l,hasEagerState:!1,eagerState:null,next:null},He(e))Ve(t,l);else if(l=j6(e,t,l,i),l!==null){var r=C1();k1(l,e,i,r),Le(l,t,i)}}function Xl(e,t,l){var i=v2(e),r={lane:i,action:l,hasEagerState:!1,eagerState:null,next:null};if(He(e))Ve(t,r);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var C=t.lastRenderedState,a=s(C,l);if(r.hasEagerState=!0,r.eagerState=a,P1(a,C)){var o=t.interleaved;o===null?(r.next=r,D7(t)):(r.next=o.next,o.next=r),t.interleaved=r;return}}catch(m){}finally{}l=j6(e,t,r,i),l!==null&&(r=C1(),k1(l,e,i,r),Le(l,t,i))}}function He(e){var t=e.alternate;return e===_||t!==null&&t===_}function Ve(e,t){U0=H5=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function Le(e,t,l){if(l&4194240){var i=t.lanes;i&=e.pendingLanes,l|=i,t.lanes=l,Z7(e,l)}}var V5={readContext:E1,useCallback:J,useContext:J,useEffect:J,useImperativeHandle:J,useInsertionEffect:J,useLayoutEffect:J,useMemo:J,useReducer:J,useRef:J,useState:J,useDebugValue:J,useDeferredValue:J,useTransition:J,useMutableSource:J,useSyncExternalStore:J,useId:J,unstable_isNewReconciler:!1},ql={readContext:E1,useCallback:function(e,t){return U1().memoizedState=[e,t===void 0?null:t],e},useContext:E1,useEffect:N8,useImperativeHandle:function(e,t,l){return l=l!=null?l.concat([e]):null,G4(4194308,4,oe.bind(null,t,e),l)},useLayoutEffect:function(e,t){return G4(4194308,4,e,t)},useInsertionEffect:function(e,t){return G4(4,2,e,t)},useMemo:function(e,t){var l=U1();return t=t===void 0?null:t,e=e(),l.memoizedState=[e,t],e},useReducer:function(e,t,l){var i=U1();return t=l!==void 0?l(t):t,i.memoizedState=i.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},i.queue=e,e=e.dispatch=Yl.bind(null,_,e),[i.memoizedState,e]},useRef:function(e){var t=U1();return e={current:e},t.memoizedState=e},useState:E8,useDebugValue:j7,useDeferredValue:function(e){return U1().memoizedState=e},useTransition:function(){var e=E8(!1),t=e[0];return e=$l.bind(null,e[1]),U1().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,l){var i=_,r=U1();if(T){if(l===void 0)throw Error(L(407));l=l()}else{if(l=t(),K===null)throw Error(L(349));D2&30||ee(i,t,l)}r.memoizedState=l;var s={value:l,getSnapshot:t};return r.queue=s,N8(le.bind(null,i,s,e),[e]),i.flags|=2048,s4(9,te.bind(null,i,s,l,t),void 0,null),l},useId:function(){var e=U1(),t=K.identifierPrefix;if(T){var l=$1,i=K1;l=(i&~(1<<32-S1(i)-1)).toString(32)+l,t=":"+t+"R"+l,l=i4++,0<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=C.createElement(l,{is:i.is}):(e=C.createElement(l),l==="select"&&(C=e,i.multiple?C.multiple=!0:i.size&&(C.size=i.size))):e=C.createElementNS(e,l),e[T1]=t,e[X0]=i,He(e,t,!1,!1),t.stateNode=e;e:{switch(C=f9(l,i),l){case"dialog":S("cancel",e),S("close",e),r=i;break;case"iframe":case"object":case"embed":S("load",e),r=i;break;case"video":case"audio":for(r=0;rm0&&(t.flags|=128,i=!0,E0(s,!1),t.lanes=4194304)}else{if(!i)if(e=o5(C),e!==null){if(t.flags|=128,i=!0,l=e.updateQueue,l!==null&&(t.updateQueue=l,t.flags|=4),E0(s,!0),s.tail===null&&s.tailMode==="hidden"&&!C.alternate&&!P)return J(t),null}else 2*I()-s.renderingStartTime>m0&&l!==1073741824&&(t.flags|=128,i=!0,E0(s,!1),t.lanes=4194304);s.isBackwards?(C.sibling=t.child,t.child=C):(l=s.last,l!==null?l.sibling=C:t.child=C,s.last=C)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=I(),t.sibling=null,l=T.current,y(T,i?l&1|2:l&1),t):(J(t),null);case 22:case 23:return b7(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?m1&1073741824&&(J(t),t.subtreeFlags&6&&(t.flags|=8192)):J(t),null;case 24:return null;case 25:return null}throw Error(g(156,t.tag))}function Xl(e,t){switch(E7(t),t.tag){case 1:return n1(t.type)&&t5(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return n0(),k(o1),k(t1),k7(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return S7(t),null;case 13:if(k(T),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(g(340));a0()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return k(T),null;case 4:return n0(),null;case 10:return R7(t.type._context),null;case 22:case 23:return b7(),null;case 24:return null;default:return null}}var k4=!1,e1=!1,ql=typeof WeakSet=="function"?WeakSet:Set,d=null;function X2(e,t){var l=e.ref;if(l!==null)if(typeof l=="function")try{l(null)}catch(i){U(e,t,i)}else l.current=null}function e7(e,t,l){try{l()}catch(i){U(e,t,i)}}var u8=!1;function Jl(e,t){if(T9=X4,e=x6(),p7(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var i=l.getSelection&&l.getSelection();if(i&&i.rangeCount!==0){l=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{l.nodeType,s.nodeType}catch(v){l=null;break e}var C=0,a=-1,o=-1,c=0,H=0,L=e,h=null;t:for(;;){for(var V;L!==l||r!==0&&L.nodeType!==3||(a=C+r),L!==s||i!==0&&L.nodeType!==3||(o=C+i),L.nodeType===3&&(C+=L.nodeValue.length),(V=L.firstChild)!==null;)h=L,L=V;for(;;){if(L===e)break t;if(h===l&&++c===r&&(a=C),h===s&&++H===i&&(o=C),(V=L.nextSibling)!==null)break;L=h,h=L.parentNode}L=V}l=a===-1||o===-1?null:{start:a,end:o}}else l=null}l=l||{start:0,end:0}}else l=null;for(A9={focusedElem:e,selectionRange:l},X4=!1,d=t;d!==null;)if(t=d,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,d=e;else for(;d!==null;){t=d;try{var x=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(x!==null){var Z=x.memoizedProps,D=x.memoizedState,m=t.stateNode,n=m.getSnapshotBeforeUpdate(t.elementType===t.type?Z:f1(t.type,Z),D);m.__reactInternalSnapshotBeforeUpdate=n}break;case 3:var w=t.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(g(163))}}catch(v){U(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,d=e;break}d=t.return}return x=u8,u8=!1,x}function A0(e,t,l){var i=t.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var r=i=i.next;do{if((r.tag&e)===e){var s=r.destroy;r.destroy=void 0,s!==void 0&&e7(t,l,s)}r=r.next}while(r!==i)}}function u5(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var l=t=t.next;do{if((l.tag&e)===e){var i=l.create;l.destroy=i()}l=l.next}while(l!==t)}}function t7(e){var t=e.ref;if(t!==null){var l=e.stateNode;switch(e.tag){case 5:e=l;break;default:e=l}typeof t=="function"?t(e):t.current=e}}function ge(e){var t=e.alternate;t!==null&&(e.alternate=null,ge(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[T1],delete t[X0],delete t[I9],delete t[Pl],delete t[Dl])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ve(e){return e.tag===5||e.tag===3||e.tag===4}function E8(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ve(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function l7(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?l.nodeType===8?l.parentNode.insertBefore(e,t):l.insertBefore(e,t):(l.nodeType===8?(t=l.parentNode,t.insertBefore(e,l)):(t=l,t.appendChild(e)),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=e5));else if(i!==4&&(e=e.child,e!==null))for(l7(e,t,l),e=e.sibling;e!==null;)l7(e,t,l),e=e.sibling}function i7(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(i7(e,t,l),e=e.sibling;e!==null;)i7(e,t,l),e=e.sibling}var $=null,B1=!1;function e2(e,t,l){for(l=l.child;l!==null;)Me(e,t,l),l=l.sibling}function Me(e,t,l){if(A1&&typeof A1.onCommitFiberUnmount=="function")try{A1.onCommitFiberUnmount(L5,l)}catch(a){}switch(l.tag){case 5:e1||X2(l,t);case 6:var i=$,r=B1;$=null,e2(e,t,l),$=i,B1=r,$!==null&&(B1?(e=$,l=l.stateNode,e.nodeType===8?e.parentNode.removeChild(l):e.removeChild(l)):$.removeChild(l.stateNode));break;case 18:$!==null&&(B1?(e=$,l=l.stateNode,e.nodeType===8?C9(e.parentNode,l):e.nodeType===1&&C9(e,l),G0(e)):C9($,l.stateNode));break;case 4:i=$,r=B1,$=l.stateNode.containerInfo,B1=!0,e2(e,t,l),$=i,B1=r;break;case 0:case 11:case 14:case 15:if(!e1&&(i=l.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){r=i=i.next;do{var s=r,C=s.destroy;s=s.tag,C!==void 0&&(s&2||s&4)&&e7(l,t,C),r=r.next}while(r!==i)}e2(e,t,l);break;case 1:if(!e1&&(X2(l,t),i=l.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=l.memoizedProps,i.state=l.memoizedState,i.componentWillUnmount()}catch(a){U(l,t,a)}e2(e,t,l);break;case 21:e2(e,t,l);break;case 22:l.mode&1?(e1=(i=e1)||l.memoizedState!==null,e2(e,t,l),e1=i):e2(e,t,l);break;default:e2(e,t,l)}}function N8(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var l=e.stateNode;l===null&&(l=e.stateNode=new ql),t.forEach(function(i){var r=oi.bind(null,e,i);l.has(i)||(l.add(i),i.then(r,r))})}}function N1(e,t){var l=t.deletions;if(l!==null)for(var i=0;ir&&(r=C),i&=~s}if(i=r,i=I()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*ti(i/1960))-i,10e?16:e,C2===null)var i=!1;else{if(e=C2,C2=null,h5=0,B&6)throw Error(g(331));var r=B;for(B|=4,d=e.current;d!==null;){var s=d,C=s.child;if(d.flags&16){var a=s.deletions;if(a!==null){for(var o=0;oI()-W7?N2(e,0):O7|=l),c1(e,t)}function fe(e,t){t===0&&(e.mode&1?(t=Z4,Z4<<=1,!(Z4&130023424)&&(Z4=4194304)):t=1);var l=r1();e=$1(e,t),e!==null&&(r4(e,t,l),c1(e,l))}function ai(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),fe(e,l)}function oi(e,t){var l=0;switch(e.tag){case 13:var i=e.stateNode,r=e.memoizedState;r!==null&&(l=r.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(g(314))}i!==null&&i.delete(t),fe(e,l)}var Be;Be=function(e,t,l){if(e!==null)if(e.memoizedProps!==t.pendingProps||o1.current)a1=!0;else{if(!(e.lanes&l)&&!(t.flags&128))return a1=!1,Kl(e,t,l);a1=!!(e.flags&131072)}else a1=!1,P&&t.flags&1048576&&F6(t,r5,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;O4(e,t),e=t.pendingProps;var r=C0(t,t1.current);i0(t,l),r=D7(null,t,i,e,r,l);var s=T7();return t.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,n1(i)?(s=!0,l5(t)):s=!1,t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,F7(t),r.updater=d5,t.stateNode=r,r._reactInternals=t,Q9(t,i,e,l),t=Y9(null,t,i,!0,s,l)):(t.tag=0,P&&s&&u7(t),i1(null,t,r,l),t=t.child),t;case 16:i=t.elementType;e:{switch(O4(e,t),e=t.pendingProps,r=i._init,i=r(i._payload),t.type=i,r=t.tag=ci(i),e=f1(i,e),r){case 0:t=K9(null,t,i,e,l);break e;case 1:t=Z8(null,t,i,e,l);break e;case 11:t=M8(null,t,i,e,l);break e;case 14:t=x8(null,t,i,f1(i.type,e),l);break e}throw Error(g(306,i,""))}return t;case 0:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:f1(i,r),K9(e,t,i,r,l);case 1:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:f1(i,r),Z8(e,t,i,r,l);case 3:e:{if(me(t),e===null)throw Error(g(387));i=t.pendingProps,s=t.memoizedState,r=s.element,P6(e,t),a5(t,i,null,l);var C=t.memoizedState;if(i=C.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:C.cache,pendingSuspenseBoundaries:C.pendingSuspenseBoundaries,transitions:C.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){r=c0(Error(g(423)),t),t=d8(e,t,i,l,r);break e}else if(i!==r){r=c0(Error(g(424)),t),t=d8(e,t,i,l,r);break e}else for(w1=c2(t.stateNode.containerInfo.firstChild),h1=t,P=!0,R1=null,l=_6(t,null,i,l),t.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling;else{if(a0(),i===r){t=K1(e,t,l);break e}i1(e,t,i,l)}t=t.child}return t;case 5:return U6(t),e===null&&j9(t),i=t.type,r=t.pendingProps,s=e!==null?e.memoizedProps:null,C=r.children,_9(i,r)?C=null:s!==null&&_9(i,s)&&(t.flags|=32),ce(e,t),i1(e,t,C,l),t.child;case 6:return e===null&&j9(t),null;case 13:return we(e,t,l);case 4:return y7(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=o0(t,null,i,l):i1(e,t,i,l),t.child;case 11:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:f1(i,r),M8(e,t,i,r,l);case 7:return i1(e,t,t.pendingProps,l),t.child;case 8:return i1(e,t,t.pendingProps.children,l),t.child;case 12:return i1(e,t,t.pendingProps.children,l),t.child;case 10:e:{if(i=t.type._context,r=t.pendingProps,s=t.memoizedProps,C=r.value,y(s5,i._currentValue),i._currentValue=C,s!==null)if(y1(s.value,C)){if(s.children===r.children&&!o1.current){t=K1(e,t,l);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var a=s.dependencies;if(a!==null){C=s.child;for(var o=a.firstContext;o!==null;){if(o.context===i){if(s.tag===1){o=b1(-1,l&-l),o.tag=2;var c=s.updateQueue;if(c!==null){c=c.shared;var H=c.pending;H===null?o.next=o:(o.next=H.next,H.next=o),c.pending=o}}s.lanes|=l,o=s.alternate,o!==null&&(o.lanes|=l),b9(s.return,l,t),a.lanes|=l;break}o=o.next}}else if(s.tag===10)C=s.type===t.type?null:s.child;else if(s.tag===18){if(C=s.return,C===null)throw Error(g(341));C.lanes|=l,a=C.alternate,a!==null&&(a.lanes|=l),b9(C,l,t),C=s.sibling}else C=s.child;if(C!==null)C.return=s;else for(C=s;C!==null;){if(C===t){C=null;break}if(s=C.sibling,s!==null){s.return=C.return,C=s;break}C=C.return}s=C}i1(e,t,r.children,l),t=t.child}return t;case 9:return r=t.type,i=t.pendingProps.children,i0(t,l),r=p1(r),i=i(r),t.flags|=1,i1(e,t,i,l),t.child;case 14:return i=t.type,r=f1(i,t.pendingProps),r=f1(i.type,r),x8(e,t,i,r,l);case 15:return oe(e,t,t.type,t.pendingProps,l);case 17:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:f1(i,r),O4(e,t),t.tag=1,n1(i)?(e=!0,l5(t)):e=!1,i0(t,l),T6(t,i,r),Q9(t,i,r,l),Y9(null,t,i,!0,e,l);case 19:return he(e,t,l);case 22:return ne(e,t,l)}throw Error(g(156,t.tag))};function Re(e,t){return t6(e,t)}function ni(e,t,l,i){this.tag=e,this.key=l,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Z1(e,t,l,i){return new ni(e,t,l,i)}function Q7(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ci(e){if(typeof e=="function")return Q7(e)?1:0;if(e!=null){if(e=e.$$typeof,e===w7)return 11;if(e===h7)return 14}return 2}function H2(e,t){var l=e.alternate;return l===null?(l=Z1(e.tag,t,e.key,e.mode),l.elementType=e.elementType,l.type=e.type,l.stateNode=e.stateNode,l.alternate=e,e.alternate=l):(l.pendingProps=t,l.type=e.type,l.flags=0,l.subtreeFlags=0,l.deletions=null),l.flags=e.flags&14680064,l.childLanes=e.childLanes,l.lanes=e.lanes,l.child=e.child,l.memoizedProps=e.memoizedProps,l.memoizedState=e.memoizedState,l.updateQueue=e.updateQueue,t=e.dependencies,l.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},l.sibling=e.sibling,l.index=e.index,l.ref=e.ref,l}function b4(e,t,l,i,r,s){var C=2;if(i=e,typeof e=="function")Q7(e)&&(C=1);else if(typeof e=="string")C=5;else e:switch(e){case O2:return f2(l.children,r,s,t);case m7:C=8,r|=8;break;case g9:return e=Z1(12,l,t,r|2),e.elementType=g9,e.lanes=s,e;case v9:return e=Z1(13,l,t,r),e.elementType=v9,e.lanes=s,e;case M9:return e=Z1(19,l,t,r),e.elementType=M9,e.lanes=s,e;case A8:return N5(l,r,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case D8:C=10;break e;case T8:C=9;break e;case w7:C=11;break e;case h7:C=14;break e;case t2:C=16,i=null;break e}throw Error(g(130,e==null?e:typeof e,""))}return t=Z1(C,l,t,r),t.elementType=e,t.type=i,t.lanes=s,t}function f2(e,t,l,i){return e=Z1(7,e,i,t),e.lanes=l,e}function N5(e,t,l,i){return e=Z1(22,e,i,t),e.elementType=A8,e.lanes=l,e.stateNode={isHidden:!1},e}function H9(e,t,l){return e=Z1(6,e,null,t),e.lanes=l,e}function V9(e,t,l){return t=Z1(4,e.children!==null?e.children:[],e.key,t),t.lanes=l,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function mi(e,t,l,i,r){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=q5(0),this.expirationTimes=q5(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=q5(0),this.identifierPrefix=i,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function $7(e,t,l,i,r,s,C,a,o){return e=new mi(e,t,l,a,o),t===1?(t=1,s===!0&&(t|=8)):t=0,s=Z1(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:i,isDehydrated:l,cache:null,transitions:null,pendingSuspenseBoundaries:null},F7(s),e}function wi(e,t,l){var i=3{"use strict";function ke(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ke)}catch(e){console.error(e)}}ke(),Pe.exports=Se()});var Ae=q1(q7=>{"use strict";var Te=De();q7.createRoot=Te.createRoot,q7.hydrateRoot=Te.hydrateRoot;var Si});var Ie=q1((Ti,F5)=>{(function(){"use strict";var e={}.hasOwnProperty;function t(){for(var r="",s=0;s{var s=r,{color:e="currentColor",size:t=24,className:l}=s,i=U1(s,["color","size","className"]);return P2.default.createElement("svg",S1(g1({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:e},i),{className:"remixicon "+(l||"")}),P2.default.createElement("path",{d:"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z"}))};var _e=r=>{var s=r,{color:e="currentColor",size:t=24,className:l}=s,i=U1(s,["color","size","className"]);return P2.default.createElement("svg",S1(g1({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:e},i),{className:"remixicon "+(l||"")}),P2.default.createElement("path",{d:"M11.9997 10.5865L16.9495 5.63672L18.3637 7.05093L13.4139 12.0007L18.3637 16.9504L16.9495 18.3646L11.9997 13.4149L7.04996 18.3646L5.63574 16.9504L10.5855 12.0007L5.63574 7.05093L7.04996 5.63672L11.9997 10.5865Z"}))};var Ue=r=>{var s=r,{color:e="currentColor",size:t=24,className:l}=s,i=U1(s,["color","size","className"]);return P2.default.createElement("svg",S1(g1({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:e},i),{className:"remixicon "+(l||"")}),P2.default.createElement("path",{d:"M5.76282 17H20V5H4V18.3851L5.76282 17ZM6.45455 19L2 22.5V4C2 3.44772 2.44772 3 3 3H21C21.5523 3 22 3.44772 22 4V18C22 18.5523 21.5523 19 21 19H6.45455ZM11 14H13V16H11V14ZM8.56731 8.81346C8.88637 7.20919 10.302 6 12 6C13.933 6 15.5 7.567 15.5 9.5C15.5 11.433 13.933 13 12 13H11V11H12C12.8284 11 13.5 10.3284 13.5 9.5C13.5 8.67157 12.8284 8 12 8C11.2723 8 10.6656 8.51823 10.5288 9.20577L8.56731 8.81346Z"}))};var T2=H0(Ie());var gi=["shared","performance"].map(e=>({value:e,label:e})),vi=[{value:"",label:"None"}].concat(["a10","a100-pcie-40gb","a100-sxm4-80gb","l40s"].map(e=>({value:e,label:e})));function t3({ctx:e,payload:t}){let[l,i]=(0,M.useState)(t.fields),[r,s]=(0,M.useState)(t.all_envs),[C,a]=(0,M.useState)(!1),o=t.warning_type;(0,M.useEffect)(()=>{e.handleEvent("update",({fields:V})=>{i(x=>g1(g1({},x),V))}),e.handleEvent("set_all_envs",({all_envs:V})=>{s(V)})},[]);function c(V,x){e.pushEvent("update_field",{field:V,value:x})}function H(V,x=!0){let Z=V.target.name,D=V.target.type==="checkbox"?V.target.checked:V.target.value;h(Z,D,x)}function L(V){let x=V.target.name;c(x,l[x])}function h(V,x,Z=!0){i(S1(g1({},l),{[V]:x})),Z&&c(V,x)}return M.default.createElement("div",{className:"flex flex-col gap-4 font-sans"},o==="no_fly"&&M.default.createElement(Oe,{variant:"warning"},"Using FLAME Fly backend only works when running within the Fly infrastructure. To use it, either use the Livebook Fly runtime or deploy your Livebook as a Fly app."),o==="no_fly_token"&&M.default.createElement(Oe,{variant:"warning"},"FLAME Fly backend expects the FLY_API_TOKEN environment variable to be set, but none was found. If you are running Livebook as a Fly app, you can set it as a secret:",M.default.createElement("pre",{className:"mt-2 p-4 whitespace-pre-wrap"},M.default.createElement("code",null,'fly secrets set FLY_API_TOKEN="$(fly auth token)"'))),M.default.createElement("div",{className:"rounded-lg border border-gray-300 bg-[#fefefe]"},M.default.createElement(xi,null,M.default.createElement(We,null,M.default.createElement(je,{label:"Start FLAME"}),M.default.createElement(D2,{name:"name",value:l.name,onChange:H})),M.default.createElement(We,null,M.default.createElement(je,{label:"Using"}),M.default.createElement(e3,{name:"backend",value:"fly",options:[{value:"fly",label:"Fly"}],disabled:!0})),M.default.createElement("div",{className:"grow"}),M.default.createElement("div",{className:"flex items-center"},M.default.createElement(Zi,{onClick:V=>a(!C)},M.default.createElement(Ue,{size:20})))),C&&M.default.createElement(Mi,null),M.default.createElement("div",{className:"flex flex-wrap gap-2 p-4"},M.default.createElement("div",{className:"w-36"},M.default.createElement(D2,{type:"number",name:"min",label:"Min runners",value:l.min,onChange:V=>H(V,!1),onBlur:L,min:"0",required:!0})),M.default.createElement("div",{className:"w-36"},M.default.createElement(D2,{type:"number",name:"max",label:"Max runners",value:l.max,onChange:V=>H(V,!1),onBlur:L,min:"1",required:!0})),M.default.createElement("div",{className:"w-36"},M.default.createElement(D2,{type:"number",name:"max_concurrency",label:"Max concurrency",value:l.max_concurrency,onChange:V=>H(V,!1),onBlur:L,min:"1",required:!0}))),M.default.createElement("div",{className:"w-full border-t border-gray-200"}),M.default.createElement("div",{className:"flex flex-wrap gap-2 p-4"},M.default.createElement(e3,{name:"fly_cpu_kind",label:"CPU kind",value:l.fly_cpu_kind,onChange:H,options:gi}),M.default.createElement("div",{className:"w-36"},M.default.createElement(D2,{type:"number",name:"fly_cpus",label:"CPUs",value:l.fly_cpus,onChange:V=>H(V,!1),onBlur:L,min:"1",required:!0})),M.default.createElement("div",{className:"w-36"},M.default.createElement(D2,{type:"number",name:"fly_memory_gb",label:"Memory (GB)",value:l.fly_memory_gb,onChange:V=>H(V,!1),onBlur:L,min:"1",required:!0})),M.default.createElement(e3,{name:"fly_gpu_kind",label:"GPU kind",value:l.fly_gpu_kind||"",onChange:H,options:vi}),M.default.createElement("div",{className:"w-36"},M.default.createElement(D2,{type:"number",name:"fly_gpus",label:"GPUs",value:l.fly_gpus,onChange:V=>H(V,!1),onBlur:L,min:"1"}))),M.default.createElement("div",{className:"w-full border-t border-gray-200"}),M.default.createElement("div",{className:"flex flex-wrap gap-2 p-4"},M.default.createElement(di,{name:"fly_envs",label:"Env vars",value:l.fly_envs,onChange:V=>h("fly_envs",V),options:r.map(V=>({label:V,value:V}))}))))}function Mi(e){return M.default.createElement("div",{className:"flex flex-col gap-5 border-b border-gray-200 p-4 text-sm text-gray-700"},M.default.createElement("p",null,"This smart cell starts a"," ",M.default.createElement("a",{href:"https://github.com/phoenixframework/flame",target:"_blank",className:"border-b border-gray-900 font-medium text-gray-900 no-underline hover:border-none"},"FLAME"),"pool that delegates computation to a separate machines. To learn more about the configuration details, refer to"," ",M.default.createElement("a",{href:"https://hexdocs.pm/flame",target:"_blank",className:"border-b border-gray-900 font-medium text-gray-900 no-underline hover:border-none"},"the documentation"),"."),M.default.createElement("p",null,"Once a pool is started, you can execute code on a separate machine as follows:",M.default.createElement("pre",{className:"mt-2 p-4 bg-[#282c34] rounded-lg whitespace-pre-wrap"},M.default.createElement("code",{className:"text-[#c8ccd4]"},M.default.createElement("span",{className:"text-[#56b6c2]"},"FLAME"),M.default.createElement("span",{className:"text-[#d19a66]"},"."),M.default.createElement("span",{className:"text-[#61afef]"},"call"),"(",M.default.createElement("span",{className:"text-[#61afef]"},":runner"),","," ",M.default.createElement("span",{className:"text-[#c678dd]"},"fn")," ",M.default.createElement("span",{className:"text-[#d19a66]"},"->"),` +`+s.stack}return{value:e,source:t,stack:r,digest:null}}function v9(e,t,l){return{value:e,source:null,stack:l!=null?l:null,digest:t!=null?t:null}}function e7(e,t){try{console.error(t.value)}catch(l){setTimeout(function(){throw l})}}var ti=typeof WeakMap=="function"?WeakMap:Map;function ge(e,t,l){l=Y1(-1,l),l.tag=3,l.payload={element:null};var i=t.value;return l.callback=function(){g5||(g5=!0,c7=i),e7(e,t)},l}function ve(e,t,l){l=Y1(-1,l),l.tag=3;var i=e.type.getDerivedStateFromError;if(typeof i=="function"){var r=t.value;l.payload=function(){return i(r)},l.callback=function(){e7(e,t)}}var s=e.stateNode;return s!==null&&typeof s.componentDidCatch=="function"&&(l.callback=function(){e7(e,t),typeof i!="function"&&(g2===null?g2=new Set([this]):g2.add(this));var C=t.stack;this.componentDidCatch(t.value,{componentStack:C!==null?C:""})}),l}function f8(e,t,l){var i=e.pingCache;if(i===null){i=e.pingCache=new ti;var r=new Set;i.set(t,r)}else r=i.get(t),r===void 0&&(r=new Set,i.set(t,r));r.has(l)||(r.add(l),e=Vi.bind(null,e,t,l),t.then(e,e))}function B8(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function R8(e,t,l,i,r){return e.mode&1?(e.flags|=65536,e.lanes=r,e):(e===t?e.flags|=65536:(e.flags|=128,l.flags|=131072,l.flags&=-52805,l.tag===1&&(l.alternate===null?l.tag=17:(t=Y1(-1,1),t.tag=2,L2(l,t,1))),l.lanes|=1),e)}var li=t2.ReactCurrentOwner,n1=!1;function s1(e,t,l,i){t.child=e===null?Y6(t,null,l,i):w0(t,e.child,l,i)}function z8(e,t,l,i,r){l=l.render;var s=t.ref;return a0(t,r),i=I7(e,t,l,i,s,r),l=W7(),e!==null&&!n1?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,e2(e,t,r)):(T&&l&&z7(t),t.flags|=1,s1(e,t,i,r),t.child)}function F8(e,t,l,i,r){if(e===null){var s=l.type;return typeof s=="function"&&!J7(s)&&s.defaultProps===void 0&&l.compare===null&&l.defaultProps===void 0?(t.tag=15,t.type=s,Me(e,t,s,i,r)):(e=Y4(l.type,null,i,t,t.mode,r),e.ref=t.ref,e.return=t,t.child=e)}if(s=e.child,!(e.lanes&r)){var C=s.memoizedProps;if(l=l.compare,l=l!==null?l:X0,l(C,i)&&e.ref===t.ref)return e2(e,t,r)}return t.flags|=1,e=M2(s,i),e.ref=t.ref,e.return=t,t.child=e}function Me(e,t,l,i,r){if(e!==null){var s=e.memoizedProps;if(X0(s,i)&&e.ref===t.ref)if(n1=!1,t.pendingProps=i=s,(e.lanes&r)!==0)e.flags&131072&&(n1=!0);else return t.lanes=e.lanes,e2(e,t,r)}return t7(e,t,l,i,r)}function xe(e,t,l){var i=t.pendingProps,r=i.children,s=e!==null?e.memoizedState:null;if(i.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},S(l0,H1),H1|=l;else{if(!(l&1073741824))return e=s!==null?s.baseLanes|l:l,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,S(l0,H1),H1|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},i=s!==null?s.baseLanes:l,S(l0,H1),H1|=i}else s!==null?(i=s.baseLanes|l,t.memoizedState=null):i=l,S(l0,H1),H1|=i;return s1(e,t,r,l),t.child}function de(e,t){var l=t.ref;(e===null&&l!==null||e!==null&&e.ref!==l)&&(t.flags|=512,t.flags|=2097152)}function t7(e,t,l,i,r){var s=m1(l)?k2:l1.current;return s=c0(t,s),a0(t,r),l=I7(e,t,l,i,s,r),i=W7(),e!==null&&!n1?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,e2(e,t,r)):(T&&i&&z7(t),t.flags|=1,s1(e,t,l,r),t.child)}function y8(e,t,l,i,r){if(m1(l)){var s=!0;a5(t)}else s=!1;if(a0(t,r),t.stateNode===null)Q4(e,t),K6(t,l,i),J9(t,l,i,r),i=!0;else if(e===null){var C=t.stateNode,a=t.memoizedProps;C.props=a;var o=C.context,m=l.contextType;typeof m=="object"&&m!==null?m=E1(m):(m=m1(l)?k2:l1.current,m=c0(t,m));var H=l.getDerivedStateFromProps,V=typeof H=="function"||typeof C.getSnapshotBeforeUpdate=="function";V||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(a!==i||o!==m)&&p8(t,C,i,m),a2=!1;var h=t.memoizedState;C.state=h,w5(t,i,C,r),o=t.memoizedState,a!==i||h!==o||c1.current||a2?(typeof H=="function"&&(q9(t,l,H,i),o=t.memoizedState),(a=a2||Z8(t,l,a,i,h,o,m))?(V||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount()),typeof C.componentDidMount=="function"&&(t.flags|=4194308)):(typeof C.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=i,t.memoizedState=o),C.props=i,C.state=o,C.context=m,i=a):(typeof C.componentDidMount=="function"&&(t.flags|=4194308),i=!1)}else{C=t.stateNode,G6(e,t),a=t.memoizedProps,m=t.type===t.elementType?a:z1(t.type,a),C.props=m,V=t.pendingProps,h=C.context,o=l.contextType,typeof o=="object"&&o!==null?o=E1(o):(o=m1(l)?k2:l1.current,o=c0(t,o));var v=l.getDerivedStateFromProps;(H=typeof v=="function"||typeof C.getSnapshotBeforeUpdate=="function")||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(a!==V||h!==o)&&p8(t,C,i,o),a2=!1,h=t.memoizedState,C.state=h,w5(t,i,C,r);var M=t.memoizedState;a!==V||h!==M||c1.current||a2?(typeof v=="function"&&(q9(t,l,v,i),M=t.memoizedState),(m=a2||Z8(t,l,m,i,h,M,o)||!1)?(H||typeof C.UNSAFE_componentWillUpdate!="function"&&typeof C.componentWillUpdate!="function"||(typeof C.componentWillUpdate=="function"&&C.componentWillUpdate(i,M,o),typeof C.UNSAFE_componentWillUpdate=="function"&&C.UNSAFE_componentWillUpdate(i,M,o)),typeof C.componentDidUpdate=="function"&&(t.flags|=4),typeof C.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof C.componentDidUpdate!="function"||a===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||a===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),t.memoizedProps=i,t.memoizedState=M),C.props=i,C.state=M,C.context=o,i=m):(typeof C.componentDidUpdate!="function"||a===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||a===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),i=!1)}return l7(e,t,l,i,s,r)}function l7(e,t,l,i,r,s){de(e,t);var C=(t.flags&128)!==0;if(!i&&!C)return r&&g8(t,l,!1),e2(e,t,s);i=t.stateNode,li.current=t;var a=C&&typeof l.getDerivedStateFromError!="function"?null:i.render();return t.flags|=1,e!==null&&C?(t.child=w0(t,e.child,null,s),t.child=w0(t,null,a,s)):s1(e,t,a,s),t.memoizedState=i.state,r&&g8(t,l,!0),t.child}function Ze(e){var t=e.stateNode;t.pendingContext?L8(e,t.pendingContext,t.pendingContext!==t.context):t.context&&L8(e,t.context,!1),A7(e,t.containerInfo)}function S8(e,t,l,i,r){return m0(),y7(r),t.flags|=256,s1(e,t,l,i),t.child}var i7={dehydrated:null,treeContext:null,retryLane:0};function r7(e){return{baseLanes:e,cachePool:null,transitions:null}}function pe(e,t,l){var i=t.pendingProps,r=A.current,s=!1,C=(t.flags&128)!==0,a;if((a=C)||(a=e!==null&&e.memoizedState===null?!1:(r&2)!==0),a?(s=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(r|=1),S(A,r&1),e===null)return Y9(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(C=i.children,e=i.fallback,s?(i=t.mode,s=t.child,C={mode:"hidden",children:C},!(i&1)&&s!==null?(s.childLanes=0,s.pendingProps=C):s=F5(C,i,0,null),e=S2(e,i,l,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=r7(l),t.memoizedState=i7,e):G7(t,C));if(r=e.memoizedState,r!==null&&(a=r.dehydrated,a!==null))return ii(e,t,C,i,a,r,l);if(s){s=i.fallback,C=t.mode,r=e.child,a=r.sibling;var o={mode:"hidden",children:i.children};return!(C&1)&&t.child!==r?(i=t.child,i.childLanes=0,i.pendingProps=o,t.deletions=null):(i=M2(r,o),i.subtreeFlags=r.subtreeFlags&14680064),a!==null?s=M2(a,s):(s=S2(s,C,l,null),s.flags|=2),s.return=t,i.return=t,i.sibling=s,t.child=i,i=s,s=t.child,C=e.child.memoizedState,C=C===null?r7(l):{baseLanes:C.baseLanes|l,cachePool:null,transitions:C.transitions},s.memoizedState=C,s.childLanes=e.childLanes&~l,t.memoizedState=i7,i}return s=e.child,e=s.sibling,i=M2(s,{mode:"visible",children:i.children}),!(t.mode&1)&&(i.lanes=l),i.return=t,i.sibling=null,e!==null&&(l=t.deletions,l===null?(t.deletions=[e],t.flags|=16):l.push(e)),t.child=i,t.memoizedState=null,i}function G7(e,t){return t=F5({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function A4(e,t,l,i){return i!==null&&y7(i),w0(t,e.child,null,l),e=G7(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function ii(e,t,l,i,r,s,C){if(l)return t.flags&256?(t.flags&=-257,i=v9(Error(L(422))),A4(e,t,C,i)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(s=i.fallback,r=t.mode,i=F5({mode:"visible",children:i.children},r,0,null),s=S2(s,r,C,null),s.flags|=2,i.return=t,s.return=t,i.sibling=s,t.child=i,t.mode&1&&w0(t,e.child,null,C),t.child.memoizedState=r7(C),t.memoizedState=i7,s);if(!(t.mode&1))return A4(e,t,C,null);if(r.data==="$!"){if(i=r.nextSibling&&r.nextSibling.dataset,i)var a=i.dgst;return i=a,s=Error(L(419)),i=v9(s,i,void 0),A4(e,t,C,i)}if(a=(C&e.childLanes)!==0,n1||a){if(i=K,i!==null){switch(C&-C){case 4:r=2;break;case 16:r=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:r=32;break;case 536870912:r=268435456;break;default:r=0}r=r&(i.suspendedLanes|C)?0:r,r!==0&&r!==s.retryLane&&(s.retryLane=r,J1(e,r),k1(i,e,r,-1))}return q7(),i=v9(Error(L(421))),A4(e,t,C,i)}return r.data==="$?"?(t.flags|=128,t.child=e.child,t=Li.bind(null,e),r._reactRetry=t,null):(e=s.treeContext,V1=V2(r.nextSibling),L1=t,T=!0,y1=null,e!==null&&(d1[Z1++]=K1,d1[Z1++]=$1,d1[Z1++]=P2,K1=e.id,$1=e.overflow,P2=t),t=G7(t,i.children),t.flags|=4096,t)}function k8(e,t,l){e.lanes|=t;var i=e.alternate;i!==null&&(i.lanes|=t),X9(e.return,t,l)}function M9(e,t,l,i,r){var s=e.memoizedState;s===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:i,tail:l,tailMode:r}:(s.isBackwards=t,s.rendering=null,s.renderingStartTime=0,s.last=i,s.tail=l,s.tailMode=r)}function ue(e,t,l){var i=t.pendingProps,r=i.revealOrder,s=i.tail;if(s1(e,t,i.children,l),i=A.current,i&2)i=i&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&k8(e,l,t);else if(e.tag===19)k8(e,l,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}i&=1}if(S(A,i),!(t.mode&1))t.memoizedState=null;else switch(r){case"forwards":for(l=t.child,r=null;l!==null;)e=l.alternate,e!==null&&h5(e)===null&&(r=l),l=l.sibling;l=r,l===null?(r=t.child,t.child=null):(r=l.sibling,l.sibling=null),M9(t,!1,r,l,s);break;case"backwards":for(l=null,r=t.child,t.child=null;r!==null;){if(e=r.alternate,e!==null&&h5(e)===null){t.child=r;break}e=r.sibling,r.sibling=l,l=r,r=e}M9(t,!0,l,null,s);break;case"together":M9(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Q4(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function e2(e,t,l){if(e!==null&&(t.dependencies=e.dependencies),T2|=t.lanes,!(l&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(L(153));if(t.child!==null){for(e=t.child,l=M2(e,e.pendingProps),t.child=l,l.return=t;e.sibling!==null;)e=e.sibling,l=l.sibling=M2(e,e.pendingProps),l.return=t;l.sibling=null}return t.child}function ri(e,t,l){switch(t.tag){case 3:Ze(t),m0();break;case 5:X6(t);break;case 1:m1(t.type)&&a5(t);break;case 4:A7(t,t.stateNode.containerInfo);break;case 10:var i=t.type._context,r=t.memoizedProps.value;S(c5,i._currentValue),i._currentValue=r;break;case 13:if(i=t.memoizedState,i!==null)return i.dehydrated!==null?(S(A,A.current&1),t.flags|=128,null):l&t.child.childLanes?pe(e,t,l):(S(A,A.current&1),e=e2(e,t,l),e!==null?e.sibling:null);S(A,A.current&1);break;case 19:if(i=(l&t.childLanes)!==0,e.flags&128){if(i)return ue(e,t,l);t.flags|=128}if(r=t.memoizedState,r!==null&&(r.rendering=null,r.tail=null,r.lastEffect=null),S(A,A.current),i)break;return null;case 22:case 23:return t.lanes=0,xe(e,t,l)}return e2(e,t,l)}var Ee,s7,Ne,fe;Ee=function(e,t){for(var l=t.child;l!==null;){if(l.tag===5||l.tag===6)e.appendChild(l.stateNode);else if(l.tag!==4&&l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break;for(;l.sibling===null;){if(l.return===null||l.return===t)return;l=l.return}l.sibling.return=l.return,l=l.sibling}};s7=function(){};Ne=function(e,t,l,i){var r=e.memoizedProps;if(r!==i){e=t.stateNode,F2(W1.current);var s=null;switch(l){case"input":r=f9(e,r),i=f9(e,i),s=[];break;case"select":r=U({},r,{value:void 0}),i=U({},i,{value:void 0}),s=[];break;case"textarea":r=z9(e,r),i=z9(e,i),s=[];break;default:typeof r.onClick!="function"&&typeof i.onClick=="function"&&(e.onclick=s5)}y9(l,i);var C;l=null;for(m in r)if(!i.hasOwnProperty(m)&&r.hasOwnProperty(m)&&r[m]!=null)if(m==="style"){var a=r[m];for(C in a)a.hasOwnProperty(C)&&(l||(l={}),l[C]="")}else m!=="dangerouslySetInnerHTML"&&m!=="children"&&m!=="suppressContentEditableWarning"&&m!=="suppressHydrationWarning"&&m!=="autoFocus"&&(b0.hasOwnProperty(m)?s||(s=[]):(s=s||[]).push(m,null));for(m in i){var o=i[m];if(a=r!=null?r[m]:void 0,i.hasOwnProperty(m)&&o!==a&&(o!=null||a!=null))if(m==="style")if(a){for(C in a)!a.hasOwnProperty(C)||o&&o.hasOwnProperty(C)||(l||(l={}),l[C]="");for(C in o)o.hasOwnProperty(C)&&a[C]!==o[C]&&(l||(l={}),l[C]=o[C])}else l||(s||(s=[]),s.push(m,l)),l=o;else m==="dangerouslySetInnerHTML"?(o=o?o.__html:void 0,a=a?a.__html:void 0,o!=null&&a!==o&&(s=s||[]).push(m,o)):m==="children"?typeof o!="string"&&typeof o!="number"||(s=s||[]).push(m,""+o):m!=="suppressContentEditableWarning"&&m!=="suppressHydrationWarning"&&(b0.hasOwnProperty(m)?(o!=null&&m==="onScroll"&&k("scroll",e),s||a===o||(s=[])):(s=s||[]).push(m,o))}l&&(s=s||[]).push("style",l);var m=s;(t.updateQueue=m)&&(t.flags|=4)}};fe=function(e,t,l,i){l!==i&&(t.flags|=4)};function B0(e,t){if(!T)switch(e.tailMode){case"hidden":t=e.tail;for(var l=null;t!==null;)t.alternate!==null&&(l=t),t=t.sibling;l===null?e.tail=null:l.sibling=null;break;case"collapsed":l=e.tail;for(var i=null;l!==null;)l.alternate!==null&&(i=l),l=l.sibling;i===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:i.sibling=null}}function e1(e){var t=e.alternate!==null&&e.alternate.child===e.child,l=0,i=0;if(t)for(var r=e.child;r!==null;)l|=r.lanes|r.childLanes,i|=r.subtreeFlags&14680064,i|=r.flags&14680064,r.return=e,r=r.sibling;else for(r=e.child;r!==null;)l|=r.lanes|r.childLanes,i|=r.subtreeFlags,i|=r.flags,r.return=e,r=r.sibling;return e.subtreeFlags|=i,e.childLanes=l,t}function si(e,t,l){var i=t.pendingProps;switch(F7(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return e1(t),null;case 1:return m1(t.type)&&C5(),e1(t),null;case 3:return i=t.stateNode,h0(),P(c1),P(l1),U7(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(e===null||e.child===null)&&(D4(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,y1!==null&&(h7(y1),y1=null))),s7(e,t),e1(t),null;case 5:_7(t);var r=F2(l4.current);if(l=t.type,e!==null&&t.stateNode!=null)Ne(e,t,l,i,r),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!i){if(t.stateNode===null)throw Error(L(166));return e1(t),null}if(e=F2(W1.current),D4(t)){i=t.stateNode,l=t.type;var s=t.memoizedProps;switch(i[O1]=t,i[e4]=s,e=(t.mode&1)!==0,l){case"dialog":k("cancel",i),k("close",i);break;case"iframe":case"object":case"embed":k("load",i);break;case"video":case"audio":for(r=0;r<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=C.createElement(l,{is:i.is}):(e=C.createElement(l),l==="select"&&(C=e,i.multiple?C.multiple=!0:i.size&&(C.size=i.size))):e=C.createElementNS(e,l),e[O1]=t,e[e4]=i,Ee(e,t,!1,!1),t.stateNode=e;e:{switch(C=S9(l,i),l){case"dialog":k("cancel",e),k("close",e),r=i;break;case"iframe":case"object":case"embed":k("load",e),r=i;break;case"video":case"audio":for(r=0;rV0&&(t.flags|=128,i=!0,B0(s,!1),t.lanes=4194304)}else{if(!i)if(e=h5(C),e!==null){if(t.flags|=128,i=!0,l=e.updateQueue,l!==null&&(t.updateQueue=l,t.flags|=4),B0(s,!0),s.tail===null&&s.tailMode==="hidden"&&!C.alternate&&!T)return e1(t),null}else 2*I()-s.renderingStartTime>V0&&l!==1073741824&&(t.flags|=128,i=!0,B0(s,!1),t.lanes=4194304);s.isBackwards?(C.sibling=t.child,t.child=C):(l=s.last,l!==null?l.sibling=C:t.child=C,s.last=C)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=I(),t.sibling=null,l=A.current,S(A,i?l&1|2:l&1),t):(e1(t),null);case 22:case 23:return X7(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?H1&1073741824&&(e1(t),t.subtreeFlags&6&&(t.flags|=8192)):e1(t),null;case 24:return null;case 25:return null}throw Error(L(156,t.tag))}function Ci(e,t){switch(F7(t),t.tag){case 1:return m1(t.type)&&C5(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return h0(),P(c1),P(l1),U7(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return _7(t),null;case 13:if(P(A),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(L(340));m0()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return P(A),null;case 4:return h0(),null;case 10:return P7(t.type._context),null;case 22:case 23:return X7(),null;case 24:return null;default:return null}}var _4=!1,t1=!1,ai=typeof WeakSet=="function"?WeakSet:Set,x=null;function t0(e,t){var l=e.ref;if(l!==null)if(typeof l=="function")try{l(null)}catch(i){O(e,t,i)}else l.current=null}function C7(e,t,l){try{l()}catch(i){O(e,t,i)}}var P8=!1;function oi(e,t){if(W9=l5,e=F6(),R7(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var i=l.getSelection&&l.getSelection();if(i&&i.rangeCount!==0){l=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{l.nodeType,s.nodeType}catch(g){l=null;break e}var C=0,a=-1,o=-1,m=0,H=0,V=e,h=null;t:for(;;){for(var v;V!==l||r!==0&&V.nodeType!==3||(a=C+r),V!==s||i!==0&&V.nodeType!==3||(o=C+i),V.nodeType===3&&(C+=V.nodeValue.length),(v=V.firstChild)!==null;)h=V,V=v;for(;;){if(V===e)break t;if(h===l&&++m===r&&(a=C),h===s&&++H===i&&(o=C),(v=V.nextSibling)!==null)break;V=h,h=V.parentNode}V=v}l=a===-1||o===-1?null:{start:a,end:o}}else l=null}l=l||{start:0,end:0}}else l=null;for(b9={focusedElem:e,selectionRange:l},l5=!1,x=t;x!==null;)if(t=x,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,x=e;else for(;x!==null;){t=x;try{var M=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(M!==null){var d=M.memoizedProps,D=M.memoizedState,c=t.stateNode,n=c.getSnapshotBeforeUpdate(t.elementType===t.type?d:z1(t.type,d),D);c.__reactInternalSnapshotBeforeUpdate=n}break;case 3:var w=t.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(L(163))}}catch(g){O(t,t.return,g)}if(e=t.sibling,e!==null){e.return=t.return,x=e;break}x=t.return}return M=P8,P8=!1,M}function O0(e,t,l){var i=t.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var r=i=i.next;do{if((r.tag&e)===e){var s=r.destroy;r.destroy=void 0,s!==void 0&&C7(t,l,s)}r=r.next}while(r!==i)}}function R5(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var l=t=t.next;do{if((l.tag&e)===e){var i=l.create;l.destroy=i()}l=l.next}while(l!==t)}}function a7(e){var t=e.ref;if(t!==null){var l=e.stateNode;switch(e.tag){case 5:e=l;break;default:e=l}typeof t=="function"?t(e):t.current=e}}function Be(e){var t=e.alternate;t!==null&&(e.alternate=null,Be(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[O1],delete t[e4],delete t[Q9],delete t[bl],delete t[jl])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Re(e){return e.tag===5||e.tag===3||e.tag===4}function D8(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Re(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function o7(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?l.nodeType===8?l.parentNode.insertBefore(e,t):l.insertBefore(e,t):(l.nodeType===8?(t=l.parentNode,t.insertBefore(e,l)):(t=l,t.appendChild(e)),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=s5));else if(i!==4&&(e=e.child,e!==null))for(o7(e,t,l),e=e.sibling;e!==null;)o7(e,t,l),e=e.sibling}function n7(e,t,l){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(n7(e,t,l),e=e.sibling;e!==null;)n7(e,t,l),e=e.sibling}var $=null,F1=!1;function s2(e,t,l){for(l=l.child;l!==null;)ze(e,t,l),l=l.sibling}function ze(e,t,l){if(I1&&typeof I1.onCommitFiberUnmount=="function")try{I1.onCommitFiberUnmount(d5,l)}catch(a){}switch(l.tag){case 5:t1||t0(l,t);case 6:var i=$,r=F1;$=null,s2(e,t,l),$=i,F1=r,$!==null&&(F1?(e=$,l=l.stateNode,e.nodeType===8?e.parentNode.removeChild(l):e.removeChild(l)):$.removeChild(l.stateNode));break;case 18:$!==null&&(F1?(e=$,l=l.stateNode,e.nodeType===8?w9(e.parentNode,l):e.nodeType===1&&w9(e,l),$0(e)):w9($,l.stateNode));break;case 4:i=$,r=F1,$=l.stateNode.containerInfo,F1=!0,s2(e,t,l),$=i,F1=r;break;case 0:case 11:case 14:case 15:if(!t1&&(i=l.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){r=i=i.next;do{var s=r,C=s.destroy;s=s.tag,C!==void 0&&(s&2||s&4)&&C7(l,t,C),r=r.next}while(r!==i)}s2(e,t,l);break;case 1:if(!t1&&(t0(l,t),i=l.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=l.memoizedProps,i.state=l.memoizedState,i.componentWillUnmount()}catch(a){O(l,t,a)}s2(e,t,l);break;case 21:s2(e,t,l);break;case 22:l.mode&1?(t1=(i=t1)||l.memoizedState!==null,s2(e,t,l),t1=i):s2(e,t,l);break;default:s2(e,t,l)}}function T8(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var l=e.stateNode;l===null&&(l=e.stateNode=new ai),t.forEach(function(i){var r=gi.bind(null,e,i);l.has(i)||(l.add(i),i.then(r,r))})}}function R1(e,t){var l=t.deletions;if(l!==null)for(var i=0;ir&&(r=C),i&=~s}if(i=r,i=I()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*ci(i/1960))-i,10e?16:e,m2===null)var i=!1;else{if(e=m2,m2=null,v5=0,B&6)throw Error(L(331));var r=B;for(B|=4,x=e.current;x!==null;){var s=x,C=s.child;if(x.flags&16){var a=s.deletions;if(a!==null){for(var o=0;oI()-$7?y2(e,0):K7|=l),w1(e,t)}function Ae(e,t){t===0&&(e.mode&1?(t=N4,N4<<=1,!(N4&130023424)&&(N4=4194304)):t=1);var l=C1();e=J1(e,t),e!==null&&(a4(e,t,l),w1(e,l))}function Li(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),Ae(e,l)}function gi(e,t){var l=0;switch(e.tag){case 13:var i=e.stateNode,r=e.memoizedState;r!==null&&(l=r.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(L(314))}i!==null&&i.delete(t),Ae(e,l)}var _e;_e=function(e,t,l){if(e!==null)if(e.memoizedProps!==t.pendingProps||c1.current)n1=!0;else{if(!(e.lanes&l)&&!(t.flags&128))return n1=!1,ri(e,t,l);n1=!!(e.flags&131072)}else n1=!1,T&&t.flags&1048576&&I6(t,n5,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;Q4(e,t),e=t.pendingProps;var r=c0(t,l1.current);a0(t,l),r=I7(null,t,i,e,r,l);var s=W7();return t.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,m1(i)?(s=!0,a5(t)):s=!1,t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,T7(t),r.updater=f5,t.stateNode=r,r._reactInternals=t,J9(t,i,e,l),t=l7(null,t,i,!0,s,l)):(t.tag=0,T&&s&&z7(t),s1(null,t,r,l),t=t.child),t;case 16:i=t.elementType;e:{switch(Q4(e,t),e=t.pendingProps,r=i._init,i=r(i._payload),t.type=i,r=t.tag=Mi(i),e=z1(i,e),r){case 0:t=t7(null,t,i,e,l);break e;case 1:t=y8(null,t,i,e,l);break e;case 11:t=z8(null,t,i,e,l);break e;case 14:t=F8(null,t,i,z1(i.type,e),l);break e}throw Error(L(306,i,""))}return t;case 0:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:z1(i,r),t7(e,t,i,r,l);case 1:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:z1(i,r),y8(e,t,i,r,l);case 3:e:{if(Ze(t),e===null)throw Error(L(387));i=t.pendingProps,s=t.memoizedState,r=s.element,G6(e,t),w5(t,i,null,l);var C=t.memoizedState;if(i=C.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:C.cache,pendingSuspenseBoundaries:C.pendingSuspenseBoundaries,transitions:C.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){r=H0(Error(L(423)),t),t=S8(e,t,i,l,r);break e}else if(i!==r){r=H0(Error(L(424)),t),t=S8(e,t,i,l,r);break e}else for(V1=V2(t.stateNode.containerInfo.firstChild),L1=t,T=!0,y1=null,l=Y6(t,null,i,l),t.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling;else{if(m0(),i===r){t=e2(e,t,l);break e}s1(e,t,i,l)}t=t.child}return t;case 5:return X6(t),e===null&&Y9(t),i=t.type,r=t.pendingProps,s=e!==null?e.memoizedProps:null,C=r.children,j9(i,r)?C=null:s!==null&&j9(i,s)&&(t.flags|=32),de(e,t),s1(e,t,C,l),t.child;case 6:return e===null&&Y9(t),null;case 13:return pe(e,t,l);case 4:return A7(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=w0(t,null,i,l):s1(e,t,i,l),t.child;case 11:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:z1(i,r),z8(e,t,i,r,l);case 7:return s1(e,t,t.pendingProps,l),t.child;case 8:return s1(e,t,t.pendingProps.children,l),t.child;case 12:return s1(e,t,t.pendingProps.children,l),t.child;case 10:e:{if(i=t.type._context,r=t.pendingProps,s=t.memoizedProps,C=r.value,S(c5,i._currentValue),i._currentValue=C,s!==null)if(P1(s.value,C)){if(s.children===r.children&&!c1.current){t=e2(e,t,l);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var a=s.dependencies;if(a!==null){C=s.child;for(var o=a.firstContext;o!==null;){if(o.context===i){if(s.tag===1){o=Y1(-1,l&-l),o.tag=2;var m=s.updateQueue;if(m!==null){m=m.shared;var H=m.pending;H===null?o.next=o:(o.next=H.next,H.next=o),m.pending=o}}s.lanes|=l,o=s.alternate,o!==null&&(o.lanes|=l),X9(s.return,l,t),a.lanes|=l;break}o=o.next}}else if(s.tag===10)C=s.type===t.type?null:s.child;else if(s.tag===18){if(C=s.return,C===null)throw Error(L(341));C.lanes|=l,a=C.alternate,a!==null&&(a.lanes|=l),X9(C,l,t),C=s.sibling}else C=s.child;if(C!==null)C.return=s;else for(C=s;C!==null;){if(C===t){C=null;break}if(s=C.sibling,s!==null){s.return=C.return,C=s;break}C=C.return}s=C}s1(e,t,r.children,l),t=t.child}return t;case 9:return r=t.type,i=t.pendingProps.children,a0(t,l),r=E1(r),i=i(r),t.flags|=1,s1(e,t,i,l),t.child;case 14:return i=t.type,r=z1(i,t.pendingProps),r=z1(i.type,r),F8(e,t,i,r,l);case 15:return Me(e,t,t.type,t.pendingProps,l);case 17:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:z1(i,r),Q4(e,t),t.tag=1,m1(i)?(e=!0,a5(t)):e=!1,a0(t,l),K6(t,i,r),J9(t,i,r,l),l7(null,t,i,!0,e,l);case 19:return ue(e,t,l);case 22:return xe(e,t,l)}throw Error(L(156,t.tag))};function Ue(e,t){return w6(e,t)}function vi(e,t,l,i){this.tag=e,this.key=l,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function p1(e,t,l,i){return new vi(e,t,l,i)}function J7(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Mi(e){if(typeof e=="function")return J7(e)?1:0;if(e!=null){if(e=e.$$typeof,e===v7)return 11;if(e===M7)return 14}return 2}function M2(e,t){var l=e.alternate;return l===null?(l=p1(e.tag,t,e.key,e.mode),l.elementType=e.elementType,l.type=e.type,l.stateNode=e.stateNode,l.alternate=e,e.alternate=l):(l.pendingProps=t,l.type=e.type,l.flags=0,l.subtreeFlags=0,l.deletions=null),l.flags=e.flags&14680064,l.childLanes=e.childLanes,l.lanes=e.lanes,l.child=e.child,l.memoizedProps=e.memoizedProps,l.memoizedState=e.memoizedState,l.updateQueue=e.updateQueue,t=e.dependencies,l.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},l.sibling=e.sibling,l.index=e.index,l.ref=e.ref,l}function Y4(e,t,l,i,r,s){var C=2;if(i=e,typeof e=="function")J7(e)&&(C=1);else if(typeof e=="string")C=5;else e:switch(e){case G2:return S2(l.children,r,s,t);case g7:C=8,r|=8;break;case p9:return e=p1(12,l,t,r|2),e.elementType=p9,e.lanes=s,e;case u9:return e=p1(13,l,t,r),e.elementType=u9,e.lanes=s,e;case E9:return e=p1(19,l,t,r),e.elementType=E9,e.lanes=s,e;case $8:return F5(l,r,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Q8:C=10;break e;case K8:C=9;break e;case v7:C=11;break e;case M7:C=14;break e;case C2:C=16,i=null;break e}throw Error(L(130,e==null?e:typeof e,""))}return t=p1(C,l,t,r),t.elementType=e,t.type=i,t.lanes=s,t}function S2(e,t,l,i){return e=p1(7,e,i,t),e.lanes=l,e}function F5(e,t,l,i){return e=p1(22,e,i,t),e.elementType=$8,e.lanes=l,e.stateNode={isHidden:!1},e}function x9(e,t,l){return e=p1(6,e,null,t),e.lanes=l,e}function d9(e,t,l){return t=p1(4,e.children!==null?e.children:[],e.key,t),t.lanes=l,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function xi(e,t,l,i,r){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=r9(0),this.expirationTimes=r9(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=r9(0),this.identifierPrefix=i,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function e3(e,t,l,i,r,s,C,a,o){return e=new xi(e,t,l,a,o),t===1?(t=1,s===!0&&(t|=8)):t=0,s=p1(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:i,isDehydrated:l,cache:null,transitions:null,pendingSuspenseBoundaries:null},T7(s),e}function di(e,t,l){var i=3{"use strict";function je(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(je)}catch(e){console.error(e)}}je(),Ge.exports=be()});var $e=i2(r3=>{"use strict";var Ke=Qe();r3.createRoot=Ke.createRoot,r3.hydrateRoot=Ke.hydrateRoot;var Wi});var C3=i2((Qi,D5)=>{(function(){"use strict";var e={}.hasOwnProperty;function t(){for(var r="",s=0;s{var s=r,{color:e="currentColor",size:t=24,className:l}=s,i=D1(s,["color","size","className"]);return O2.default.createElement("svg",f1(h1({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:e},i),{className:"remixicon "+(l||"")}),O2.default.createElement("path",{d:"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z"}))};var Ye=r=>{var s=r,{color:e="currentColor",size:t=24,className:l}=s,i=D1(s,["color","size","className"]);return O2.default.createElement("svg",f1(h1({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:e},i),{className:"remixicon "+(l||"")}),O2.default.createElement("path",{d:"M11.9997 10.5865L16.9495 5.63672L18.3637 7.05093L13.4139 12.0007L18.3637 16.9504L16.9495 18.3646L11.9997 13.4149L7.04996 18.3646L5.63574 16.9504L10.5855 12.0007L5.63574 7.05093L7.04996 5.63672L11.9997 10.5865Z"}))};var Xe=r=>{var s=r,{color:e="currentColor",size:t=24,className:l}=s,i=D1(s,["color","size","className"]);return O2.default.createElement("svg",f1(h1({viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:t,height:t,fill:e},i),{className:"remixicon "+(l||"")}),O2.default.createElement("path",{d:"M5.76282 17H20V5H4V18.3851L5.76282 17ZM6.45455 19L2 22.5V4C2 3.44772 2.44772 3 3 3H21C21.5523 3 22 3.44772 22 4V18C22 18.5523 21.5523 19 21 19H6.45455ZM11 14H13V16H11V14ZM8.56731 8.81346C8.88637 7.20919 10.302 6 12 6C13.933 6 15.5 7.567 15.5 9.5C15.5 11.433 13.933 13 12 13H11V11H12C12.8284 11 13.5 10.3284 13.5 9.5C13.5 8.67157 12.8284 8 12 8C11.2723 8 10.6656 8.51823 10.5288 9.20577L8.56731 8.81346Z"}))};var Je=T1(C3());var i1=T1(j1());var F=T1(j1());var v0=T1(C3());function m4(C){var a=C,{label:e=null,value:t,className:l,options:i=[],optionGroups:r=[]}=a,s=D1(a,["label","value","className","options","optionGroups"]);function o(m){return m.map(H=>F.default.createElement("option",{key:H.value||"",value:H.value||""},H.label))}return F.default.createElement("div",{className:"flex flex-col"},e&&F.default.createElement("label",{className:"color-gray-800 mb-0.5 block text-sm font-medium"},e),F.default.createElement("div",{className:"relative block"},F.default.createElement("select",f1(h1({},s),{value:t,className:(0,v0.default)(["w-full appearance-none rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 pr-7 text-sm text-gray-600 placeholder-gray-400 focus:outline-none",l])}),o(i),r.map(({label:m,options:H})=>F.default.createElement("optgroup",{key:m,label:m},o(H)))),F.default.createElement("div",{className:"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-500"},F.default.createElement(s3,{size:16}))))}function qe(C){var a=C,{label:e=null,value:t,className:l,options:i=[],onChange:r}=a,s=D1(a,["label","value","className","options","onChange"]);let o=i.filter(h=>!t.includes(h.value));function m(h){let v=i.find(M=>M.value===h);return v?v.label:h}function H(h){let v=h.target.value,M=t.concat([v]).sort();r&&r(M)}function V(h){let v=t.filter(M=>M!==h);r&&r(v)}return F.default.createElement("div",{className:"flex flex-col min-w-36"},e&&F.default.createElement("label",{className:"color-gray-800 mb-0.5 block text-sm font-medium"},e),F.default.createElement("div",{className:(0,v0.default)(["relative w-full min-h-[38px] flex rounded-lg border border-gray-200 bg-gray-50 px-3 py-1.5 pr-0 text-sm text-gray-600 placeholder-gray-400",l])},F.default.createElement("div",{className:"flex flex-wrap gap-1"},t.map(h=>F.default.createElement("div",{key:h,className:"py-0.5 px-2 flex gap-1 items-center rounded-lg bg-gray-200"},F.default.createElement("span",null,m(h)),F.default.createElement("button",{className:"rounded-lg hover:bg-gray-300",onClick:()=>V(h)},F.default.createElement(Ye,{size:12}))))),F.default.createElement("select",f1(h1({},s),{value:"",onChange:H,className:"grow min-w-8 w-0 opacity-0 appearance-none focus:outline-none"}),F.default.createElement("option",{value:"",disabled:!0}),o.map(h=>F.default.createElement("option",{key:h.value||"",value:h.value||""},h.label))),F.default.createElement("div",{className:"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-500"},F.default.createElement(s3,{size:16}))))}function a3({children:e}){return F.default.createElement("div",{className:"flex items-center gap-1.5"},e)}function o3({label:e}){return F.default.createElement("label",{className:"block text-sm font-medium uppercase text-gray-600"},e)}function b1(m){var H=m,{label:e=null,value:t,type:l="text",className:i,required:r=!1,fullWidth:s=!1,inputRef:C,startAdornment:a}=H,o=D1(H,["label","value","type","className","required","fullWidth","inputRef","startAdornment"]);return F.default.createElement("div",{className:(0,v0.default)(["flex max-w-full flex-col",s?"w-full":"w-[20ch]"])},e&&F.default.createElement("label",{className:"color-gray-800 mb-0.5 block text-sm font-medium"},e),F.default.createElement("div",{className:(0,v0.default)(["flex items-stretch overflow-hidden rounded-lg border bg-gray-50",r&&t===null?"border-red-300":"border-gray-200"])},a,F.default.createElement("input",f1(h1({},o),{ref:C,type:l,value:t===null?"":t,className:(0,v0.default)(["w-full bg-transparent px-3 py-2 text-sm text-gray-600 placeholder-gray-400 focus:outline-none",i])}))))}var E2=T1(j1());var Ni=({fields:e,handleChange:t,handleBlur:l})=>E2.default.createElement("div",{className:"flex flex-wrap gap-2 p-4"},E2.default.createElement("div",{className:"w-36"},E2.default.createElement(b1,{type:"number",name:"min",label:"Min runners",value:e.min,onChange:i=>t(i,!1),onBlur:l,min:"0",required:!0})),E2.default.createElement("div",{className:"w-36"},E2.default.createElement(b1,{type:"number",name:"max",label:"Max runners",value:e.max,onChange:i=>t(i,!1),onBlur:l,min:"1",required:!0})),E2.default.createElement("div",{className:"w-36"},E2.default.createElement(b1,{type:"number",name:"max_concurrency",label:"Max concurrency",value:e.max_concurrency,onChange:i=>t(i,!1),onBlur:l,min:"1",required:!0}))),T5=Ni;var fi=["shared","performance"].map(e=>({value:e,label:e})),Bi=[{value:"",label:"None"}].concat(["a10","a100-pcie-40gb","a100-sxm4-80gb","l40s"].map(e=>({value:e,label:e})));function n3({fields:e,allEnvs:t,handleBlur:l,handleChange:i,handleFieldChange:r}){return i1.default.createElement("div",null,i1.default.createElement(T5,{fields:e,handleChange:i,handleBlur:l}),i1.default.createElement("div",{className:"w-full border-t border-gray-200"}),i1.default.createElement("div",{className:"flex flex-wrap gap-2 p-4"},i1.default.createElement(m4,{name:"fly_cpu_kind",label:"CPU kind",value:e.fly_cpu_kind,onChange:i,options:fi}),i1.default.createElement("div",{className:"w-36"},i1.default.createElement(b1,{type:"number",name:"fly_cpus",label:"CPUs",value:e.fly_cpus,onChange:s=>i(s,!1),onBlur:l,min:"1",required:!0})),i1.default.createElement("div",{className:"w-36"},i1.default.createElement(b1,{type:"number",name:"fly_memory_gb",label:"Memory (GB)",value:e.fly_memory_gb,onChange:s=>i(s,!1),onBlur:l,min:"1",required:!0})),i1.default.createElement(m4,{name:"fly_gpu_kind",label:"GPU kind",value:e.fly_gpu_kind||"",onChange:i,options:Bi}),i1.default.createElement("div",{className:"w-36"},i1.default.createElement(b1,{type:"number",name:"fly_gpus",label:"GPUs",value:e.fly_gpus,onChange:s=>i(s,!1),onBlur:l,min:"1"}))),i1.default.createElement("div",{className:"w-full border-t border-gray-200"}),i1.default.createElement("div",{className:"flex flex-wrap gap-2 p-4"},i1.default.createElement(qe,{name:"fly_envs",label:"Env vars",value:e.fly_envs,onChange:s=>r("fly_envs",s),options:t.map(s=>({label:s,value:s}))})))}var c3=T1(j1());function m3({fields:e,handleChange:t,handleBlur:l}){return c3.default.createElement("div",null,c3.default.createElement(T5,{fields:e,handleChange:t,handleBlur:l}))}var Ri=[{value:"fly",label:"Fly"},{value:"k8s",label:"Kubernetes"}];function w3({ctx:e,payload:t}){let[l,i]=(0,p.useState)(t.fields),[r,s]=(0,p.useState)(t.all_envs),[C,a]=(0,p.useState)(!1),[o,m]=(0,p.useState)(t.missing_dep),[H,V]=(0,p.useState)(t.missing_livebook_cookie),h=t.warnings;(0,p.useEffect)(()=>{e.handleEvent("update",({fields:c})=>{i(n=>h1(h1({},n),c))}),e.handleEvent("missing_dep",({dep:c})=>{m(c)}),e.handleEvent("missing_livebook_cookie",({is_missing:c})=>{V(c)}),e.handleEvent("set_all_envs",({all_envs:c})=>{s(c)})},[]);function v(c,n){e.pushEvent("update_field",{field:c,value:n})}function M(c,n=!0){let w=c.target.name,g=c.target.type==="checkbox"?c.target.checked:c.target.value;D(w,g,n)}function d(c){let n=c.target.name;v(n,l[n])}function D(c,n,w=!0){i(f1(h1({},l),{[c]:n})),w&&v(c,n)}return p.default.createElement("div",{className:"flex flex-col gap-4 font-sans"},l.backend=="fly"&&h.no_fly&&p.default.createElement(w4,{variant:"warning"},"Using FLAME Fly backend only works when running within the Fly infrastructure. To use it, either use the Livebook Fly runtime or deploy your Livebook as a Fly app."),l.backend=="fly"&&!h.no_fly&&h.no_fly_token&&p.default.createElement(w4,{variant:"warning"},"FLAME Fly backend expects the FLY_API_TOKEN environment variable to be set, but none was found. If you are running Livebook as a Fly app, you can set it as a secret:",p.default.createElement("pre",{className:"mt-2 p-4 whitespace-pre-wrap"},p.default.createElement("code",null,'fly secrets set FLY_API_TOKEN="$(fly auth token)"'))),l.backend=="k8s"&&h.no_k8s&&p.default.createElement(w4,{variant:"warning"},"Using FLAME Kubernetes backend only works when Livebook is running on a Kubernetes cluster. To use it, either use the Livebook K8s runtime or deploy your Livebook as a"," ",p.default.createElement("a",{class:"text-indigo-500",target:"_blank",href:"https://artifacthub.io/packages/helm/livebook/livebook"},"Kubernetes deployment"),"."),l.backend=="k8s"&&o&&p.default.createElement(w4,{variant:"warning"},p.default.createElement("p",null,"To successfully start the FLAME pool, you need to add the following dependency:"),p.default.createElement("pre",null,p.default.createElement("code",null,o))),l.backend=="k8s"&&H&&p.default.createElement(w4,{variant:"warning"},"To successfully connect to the runtime, your Pod template must declare the following env variable:",p.default.createElement("pre",null,p.default.createElement("code",null,` +env: +- name: LIVEBOOK_COOKIE + value: #{Node.get_cookie()}`))),p.default.createElement("div",{className:`${l.backend=="k8s"?"rounded-t-lg":"rounded-lg"} border border-gray-300 bg-[#fefefe]`},p.default.createElement(Fi,null,p.default.createElement(a3,null,p.default.createElement(o3,{label:"Start FLAME"}),p.default.createElement(b1,{name:"name",value:l.name,onChange:M})),p.default.createElement(a3,null,p.default.createElement(o3,{label:"Using"}),p.default.createElement(m4,{name:"backend",value:l.backend,options:Ri,onChange:M})),p.default.createElement("div",{className:"grow"}),p.default.createElement("div",{className:"flex items-center"},p.default.createElement(yi,{onClick:c=>a(!C)},p.default.createElement(Xe,{size:20})))),C&&p.default.createElement(zi,{fields:l}),l.backend=="fly"&&p.default.createElement(n3,{fields:l,allEnvs:r,handleBlur:d,handleChange:M,handleFieldChange:D}),l.backend=="k8s"&&p.default.createElement(m3,{fields:l,handleBlur:d,handleChange:M})))}function zi({fields:e}){return p.default.createElement("div",{className:"flex flex-col gap-5 border-b border-gray-200 p-4 text-sm text-gray-700"},p.default.createElement("p",null,"This smart cell starts a"," ",p.default.createElement("a",{href:"https://github.com/phoenixframework/flame",target:"_blank",className:"border-b border-gray-900 font-medium text-gray-900 no-underline hover:border-none"},"FLAME"),"pool that delegates computation to a separate machines. To learn more about the configuration details, refer to"," ",p.default.createElement("a",{href:"https://hexdocs.pm/flame",target:"_blank",className:"border-b border-gray-900 font-medium text-gray-900 no-underline hover:border-none"},"the documentation"),"."),p.default.createElement("p",null,"Once a pool is started, you can execute code on a separate machine as follows:",p.default.createElement("pre",{className:"mt-2 p-4 bg-[#282c34] rounded-lg whitespace-pre-wrap"},p.default.createElement("code",{className:"text-[#c8ccd4]"},p.default.createElement("span",{className:"text-[#56b6c2]"},"FLAME"),p.default.createElement("span",{className:"text-[#d19a66]"},"."),p.default.createElement("span",{className:"text-[#61afef]"},"call"),"(",p.default.createElement("span",{className:"text-[#61afef]"},":",e.name),","," ",p.default.createElement("span",{className:"text-[#c678dd]"},"fn")," ",p.default.createElement("span",{className:"text-[#d19a66]"},"->"),` ... -`,M.default.createElement("span",{className:"text-[#c678dd]"},"end"),")"))))}function Oe({variant:e="neutral",children:t}){return M.default.createElement("div",{className:(0,T2.default)(["rounded-lg border p-4 text-sm",{neutral:"border-gray-300 text-gray-700",warning:"color-gray-900 border-yellow-600 bg-yellow-100"}[e]])},t)}function xi({children:e}){return M.default.createElement("div",{className:"align-stretch flex flex-wrap justify-start gap-4 rounded-t-lg border-b border-b-gray-200 bg-blue-100 px-4 py-2"},e)}function Zi(l){var i=l,{children:e}=i,t=U1(i,["children"]);return M.default.createElement("button",S1(g1({},t),{className:"align-center flex cursor-pointer items-center rounded-full p-1 leading-none text-gray-500 hover:text-gray-900 focus:bg-gray-300/25 focus:outline-none disabled:cursor-default disabled:text-gray-300"}),e)}function e3(C){var a=C,{label:e=null,value:t,className:l,options:i=[],optionGroups:r=[]}=a,s=U1(a,["label","value","className","options","optionGroups"]);function o(c){return c.map(H=>M.default.createElement("option",{key:H.value||"",value:H.value||""},H.label))}return M.default.createElement("div",{className:"flex flex-col"},e&&M.default.createElement("label",{className:"color-gray-800 mb-0.5 block text-sm font-medium"},e),M.default.createElement("div",{className:"relative block"},M.default.createElement("select",S1(g1({},s),{value:t,className:(0,T2.default)(["w-full appearance-none rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 pr-7 text-sm text-gray-600 placeholder-gray-400 focus:outline-none",l])}),o(i),r.map(({label:c,options:H})=>M.default.createElement("optgroup",{key:c,label:c},o(H)))),M.default.createElement("div",{className:"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-500"},M.default.createElement(J7,{size:16}))))}function di(C){var a=C,{label:e=null,value:t,className:l,options:i=[],onChange:r}=a,s=U1(a,["label","value","className","options","onChange"]);let o=i.filter(h=>!t.includes(h.value));function c(h){let V=i.find(x=>x.value===h);return V?V.label:h}function H(h){let V=h.target.value,x=t.concat([V]).sort();r&&r(x)}function L(h){let V=t.filter(x=>x!==h);r&&r(V)}return M.default.createElement("div",{className:"flex flex-col min-w-36"},e&&M.default.createElement("label",{className:"color-gray-800 mb-0.5 block text-sm font-medium"},e),M.default.createElement("div",{className:(0,T2.default)(["relative w-full min-h-[38px] flex rounded-lg border border-gray-200 bg-gray-50 px-3 py-1.5 pr-0 text-sm text-gray-600 placeholder-gray-400",l])},M.default.createElement("div",{className:"flex flex-wrap gap-1"},t.map(h=>M.default.createElement("div",{key:h,className:"py-0.5 px-2 flex gap-1 items-center rounded-lg bg-gray-200"},M.default.createElement("span",null,c(h)),M.default.createElement("button",{className:"rounded-lg hover:bg-gray-300",onClick:()=>L(h)},M.default.createElement(_e,{size:12}))))),M.default.createElement("select",S1(g1({},s),{value:"",onChange:H,className:"grow min-w-8 w-0 opacity-0 appearance-none focus:outline-none"}),M.default.createElement("option",{value:"",disabled:!0}),o.map(h=>M.default.createElement("option",{key:h.value||"",value:h.value||""},h.label))),M.default.createElement("div",{className:"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-500"},M.default.createElement(J7,{size:16}))))}function We({children:e}){return M.default.createElement("div",{className:"flex items-center gap-1.5"},e)}function je({label:e}){return M.default.createElement("label",{className:"block text-sm font-medium uppercase text-gray-600"},e)}function D2(c){var H=c,{label:e=null,value:t,type:l="text",className:i,required:r=!1,fullWidth:s=!1,inputRef:C,startAdornment:a}=H,o=U1(H,["label","value","type","className","required","fullWidth","inputRef","startAdornment"]);return M.default.createElement("div",{className:(0,T2.default)(["flex max-w-full flex-col",s?"w-full":"w-[20ch]"])},e&&M.default.createElement("label",{className:"color-gray-800 mb-0.5 block text-sm font-medium"},e),M.default.createElement("div",{className:(0,T2.default)(["flex items-stretch overflow-hidden rounded-lg border bg-gray-50",r&&t===null?"border-red-300":"border-gray-200"])},a,M.default.createElement("input",S1(g1({},o),{ref:C,type:l,value:t===null?"":t,className:(0,T2.default)(["w-full bg-transparent px-3 py-2 text-sm text-gray-600 placeholder-gray-400 focus:outline-none",i])}))))}function ji(e,t){e.importCSS("build/main.css"),e.importCSS("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap"),e.importCSS("https://fonts.googleapis.com/css2?family=JetBrains+Mono&display=swap"),(0,Ge.createRoot)(e.root).render(be.default.createElement(t3,{ctx:e,payload:t}))}export{ji as init}; +`,p.default.createElement("span",{className:"text-[#c678dd]"},"end"),")"))))}function w4({variant:e="neutral",children:t}){return p.default.createElement("div",{className:(0,Je.default)(["rounded-lg border p-4 text-sm",{neutral:"border-gray-300 text-gray-700",warning:"color-gray-900 border-yellow-600 bg-yellow-100"}[e]])},t)}function Fi({children:e}){return p.default.createElement("div",{className:"align-stretch flex flex-wrap justify-start gap-4 rounded-t-lg border-b border-b-gray-200 bg-blue-100 px-4 py-2"},e)}function yi(l){var i=l,{children:e}=i,t=D1(i,["children"]);return p.default.createElement("button",f1(h1({},t),{className:"align-center flex cursor-pointer items-center rounded-full p-1 leading-none text-gray-500 hover:text-gray-900 focus:bg-gray-300/25 focus:outline-none disabled:cursor-default disabled:text-gray-300"}),e)}function hr(e,t){e.importCSS("build/main.css"),e.importCSS("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap"),e.importCSS("https://fonts.googleapis.com/css2?family=JetBrains+Mono&display=swap"),(0,tt.createRoot)(e.root).render(et.default.createElement(w3,{ctx:e,payload:t}))}export{hr as init}; /*! Bundled license information: react/cjs/react.production.min.js: diff --git a/lib/kino_flame/runner_cell.ex b/lib/kino_flame/runner_cell.ex index a9a07bc..414cfb3 100644 --- a/lib/kino_flame/runner_cell.ex +++ b/lib/kino_flame/runner_cell.ex @@ -5,13 +5,28 @@ defmodule KinoFLAME.RunnerCell do use Kino.JS.Live use Kino.SmartCell, name: "FLAME runner cell" - @text_fields ["name"] + @text_fields ["name", "backend"] @number_fields ["min", "max", "max_concurrency"] ++ ["fly_cpus", "fly_memory_gb", "fly_gpus"] + @default_pod_template """ + apiVersion: v1 + kind: Pod + metadata: + generateName: livebook-flame-runner- + spec: + containers: + - name: livebook-runtime + env: + - name: LIVEBOOK_COOKIE + value: \#{Node.get_cookie()}\ + """ @impl true def init(attrs, ctx) do + backend = attrs["backend"] || default_backend() + fields = %{ "name" => Kino.SmartCell.prefixed_var_name("runner", attrs["name"]), + "backend" => backend, "min" => attrs["min"] || 0, "max" => attrs["max"] || 1, "max_concurrency" => attrs["max_concurrency"] || 10, @@ -23,15 +38,30 @@ defmodule KinoFLAME.RunnerCell do "fly_envs" => attrs["fly_envs"] || [] } - {:ok, assign(ctx, fields: fields, warning_type: warning_type(), all_envs: [])} + k8s_pod_template = attrs["k8s_pod_template"] || @default_pod_template + + ctx = + assign( + ctx, + fields: fields, + warnings: warnings(), + all_envs: [], + k8s_pod_template: k8s_pod_template, + missing_dep: missing_dep(fields), + missing_livebook_cookie: missing_livebook_cookie(k8s_pod_template) + ) + + {:ok, ctx, editor: [source: k8s_pod_template, language: "yaml", visible: backend == "k8s"]} end @impl true def handle_connect(ctx) do payload = %{ fields: ctx.assigns.fields, - warning_type: ctx.assigns.warning_type, - all_envs: ctx.assigns.all_envs + warnings: ctx.assigns.warnings, + all_envs: ctx.assigns.all_envs, + missing_dep: ctx.assigns.missing_dep, + missing_livebook_cookie: ctx.assigns.missing_livebook_cookie } {:ok, payload, ctx} @@ -46,13 +76,29 @@ defmodule KinoFLAME.RunnerCell do end @impl true - def handle_event("update_field", %{"field" => field, "value" => value}, ctx) do - updated_fields = to_updates(field, value) - ctx = update(ctx, :fields, &Map.merge(&1, updated_fields)) - broadcast_event(ctx, "update", %{"fields" => updated_fields}) + def handle_event("update_field", %{"field" => "backend", "value" => value}, ctx) do + ctx = + ctx + |> reconfigure_smart_cell(editor: [visible: value == "k8s"]) + |> update_field("backend", value) + + missing_dep = missing_dep(ctx.assigns.fields) + + ctx = + if missing_dep == ctx.assigns.missing_dep do + ctx + else + broadcast_event(ctx, "missing_dep", %{"dep" => missing_dep}) + assign(ctx, missing_dep: missing_dep) + end + {:noreply, ctx} end + def handle_event("update_field", %{"field" => field, "value" => value}, ctx) do + {:noreply, update_field(ctx, field, value)} + end + @impl true def handle_info({:scan_binding_result, all_envs}, ctx) do if all_envs == ctx.assigns.all_envs do @@ -63,6 +109,32 @@ defmodule KinoFLAME.RunnerCell do end end + @impl true + def handle_editor_change(source, ctx) do + missing_livebook_cookie = missing_livebook_cookie(source) + + if missing_livebook_cookie != ctx.assigns.missing_livebook_cookie do + broadcast_event(ctx, "missing_livebook_cookie", %{"is_missing" => missing_livebook_cookie}) + end + + {:ok, + assign(ctx, + k8s_pod_template: source, + missing_livebook_cookie: missing_livebook_cookie + )} + end + + defp update_field(ctx, field, value) do + updated_fields = to_updates(field, value) + ctx = update(ctx, :fields, &Map.merge(&1, updated_fields)) + broadcast_event(ctx, "update", %{"fields" => updated_fields}) + ctx + end + + defp default_backend() do + if System.get_env("KUBERNETES_SERVICE_HOST"), do: "k8s", else: "fly" + end + defp to_updates(field, value) when field in @number_fields and is_binary(value) do value = case Integer.parse(value) do @@ -78,15 +150,34 @@ defmodule KinoFLAME.RunnerCell do defp to_updates(field, value), do: %{field => value} @impl true - def to_attrs(ctx) do - ctx.assigns.fields + def to_attrs(%{assigns: %{fields: fields, k8s_pod_template: k8s_pod_template}}) do + fields = Map.put(fields, "k8s_pod_template", k8s_pod_template) + shared_keys = ["backend", "name", "min", "max", "max_concurrency"] + + backend_keys = + case fields["backend"] do + "k8s" -> + ~w|k8s_pod_template| + + "fly" -> + ~w|fly_cpus fly_cpu_kind fly_memory_gb fly_gpu_kind fly_gpus fly_envs| + end + + Map.take(fields, shared_keys ++ backend_keys) end + @required_keys_pool ["name", "min", "max", "max_concurrency"] @impl true def to_source(attrs) do required_keys = - ["name", "min", "max", "max_concurrency"] ++ - ["fly_cpu_kind", "fly_cpus", "fly_memory_gb"] + case attrs["backend"] do + "fly" -> + @required_keys_pool ++ + ["fly_cpu_kind", "fly_cpus", "fly_memory_gb"] + + "k8s" -> + @required_keys_pool + end if all_fields_filled?(attrs, required_keys) do attrs |> to_quoted() |> Kino.SmartCell.quoted_to_string() @@ -99,7 +190,7 @@ defmodule KinoFLAME.RunnerCell do not Enum.any?(keys, fn key -> attrs[key] in [nil, ""] end) end - defp to_quoted(attrs) do + defp to_quoted(%{"backend" => "fly"} = attrs) do specs_opts = [ cpu_kind: attrs["fly_cpu_kind"], @@ -126,6 +217,33 @@ defmodule KinoFLAME.RunnerCell do env = {:%{}, [], envs} + backend_ast = + quote do + {FLAME.FlyBackend, + [ + unquote_splicing(specs_opts), + env: unquote(env) + ]} + end + + to_quoted_pool(attrs, backend_ast) + end + + defp to_quoted(%{"backend" => "k8s"} = attrs) do + multiline_k8s_pod_template = + {:sigil_y, [delimiter: ~S["""]], [{:<<>>, [], [attrs["k8s_pod_template"] <> "\n"]}, []]} + + backend_ast = + quote do: {FLAMEK8sBackend, runner_pod_tpl: pod_template} + + quote do + import YamlElixir.Sigil + pod_template = unquote(multiline_k8s_pod_template) + unquote(to_quoted_pool(attrs, backend_ast)) + end + end + + defp to_quoted_pool(attrs, quoted_backend) do # Note we use a longer :boot_timeout in case a CUDA-based Docker # image is involved. Those images are generally large, so it takes # a while to pull them, unless they are already in the Fly cache. @@ -142,26 +260,41 @@ defmodule KinoFLAME.RunnerCell do idle_shutdown_after: :timer.minutes(1), timeout: :infinity, track_resources: true, - backend: - {FLAME.FlyBackend, - [ - unquote_splicing(specs_opts), - env: unquote(env) - ]}} + backend: unquote(quoted_backend)} ) end end - def warning_type() do + def warnings() do + %{ + "no_k8s" => !System.get_env("KUBERNETES_SERVICE_HOST"), + "no_fly" => !System.get_env("FLY_PRIVATE_IP"), + "no_fly_token" => !System.get_env("FLY_API_TOKEN") + } + end + + defp missing_dep(%{"backend" => "k8s"}) do + backend = Code.ensure_loaded?(FLAMEK8sBackend) + yaml_elixir = Code.ensure_loaded?(YamlElixir) + cond do - System.fetch_env("FLY_PRIVATE_IP") == :error -> - :no_fly + backend and yaml_elixir -> + nil + + backend -> + ~s/{:yaml_elixir, "~> 2.0"}/ - System.fetch_env("FLY_API_TOKEN") == :error -> - :no_fly_token + yaml_elixir -> + ~s/{:flame_k8s_backend, "~> 0.5"}/ true -> - nil + ~s/{:flame_k8s_backend, "~> 0.5"}, {:yaml_elixir, "~> 2.0"}/ end end + + defp missing_dep(_fields), do: nil + + defp missing_livebook_cookie(k8s_pod_template) do + not (k8s_pod_template =~ ~r|\sLIVEBOOK_COOKIE\s|) + end end diff --git a/mix.exs b/mix.exs index b5fd808..25b774b 100644 --- a/mix.exs +++ b/mix.exs @@ -26,8 +26,9 @@ defmodule KinoFLAME.MixProject do defp deps do [ - {:kino, "~> 0.13"}, + {:kino, "~> 0.14"}, {:flame, "~> 0.3"}, + {:flame_k8s_backend, "~> 0.5", optional: true}, {:ex_doc, "~> 0.34", only: :dev, runtime: false} ] end diff --git a/mix.lock b/mix.lock index 32c88ab..29209a0 100644 --- a/mix.lock +++ b/mix.lock @@ -1,9 +1,10 @@ %{ "earmark_parser": {:hex, :earmark_parser, "1.4.41", "ab34711c9dc6212dda44fcd20ecb87ac3f3fce6f0ca2f28d4a00e4154f8cd599", [:mix], [], "hexpm", "a81a04c7e34b6617c2792e291b5a2e57ab316365c2644ddc553bb9ed863ebefa"}, "ex_doc": {:hex, :ex_doc, "0.34.2", "13eedf3844ccdce25cfd837b99bea9ad92c4e511233199440488d217c92571e8", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "5ce5f16b41208a50106afed3de6a2ed34f4acfd65715b82a0b84b49d995f95c1"}, - "flame": {:hex, :flame, "0.3.0", "6938cd027d4de6c4599145d23c8242afd35a20ddda278e8cf816ce49fd0e068d", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "263ffb2f8eaffdcaa3241072e515cb6af86c0280c763a3986934b039cac36300"}, + "flame": {:hex, :flame, "0.4.2", "db1ab6ab19761a7fb7a8db80fe76454807979def48fa2d155ef8a5aabddc8e6d", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "a38092bde0a1f171e05518fbe20d557b35247c51c445a1288b9e0ea35b334b88"}, + "flame_k8s_backend": {:hex, :flame_k8s_backend, "0.5.2", "172f3f7ee21c885ae85bb82003a04fcf97258b4b72dc91a6510e02a902b9299d", [:mix], [{:flame, "~> 0.4.0", [hex: :flame, repo: "hexpm", optional: false]}], "hexpm", "917aff5937f6c47b127dc7268464cea6925dbcce0a2b0ff7a2f6f2b2850ab5df"}, "fss": {:hex, :fss, "0.1.1", "9db2344dbbb5d555ce442ac7c2f82dd975b605b50d169314a20f08ed21e08642", [:mix], [], "hexpm", "78ad5955c7919c3764065b21144913df7515d52e228c09427a004afe9c1a16b0"}, - "kino": {:hex, :kino, "0.13.2", "087c8f340734764fc8c70efd43f3155fa47498c78d2d18fa83aaf97373133ade", [:mix], [{:fss, "~> 0.1.0", [hex: :fss, repo: "hexpm", optional: false]}, {:nx, "~> 0.1", [hex: :nx, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}, {:table, "~> 0.1.2", [hex: :table, repo: "hexpm", optional: false]}], "hexpm", "05fb420dae92a81746dcaceceddf235974394486b17cc2704ddbb051072b4617"}, + "kino": {:hex, :kino, "0.14.0", "d0e18f8bcbf81de41dbafdad9c7b9f0607f5e87c2d881cd46e567477abf0fd37", [:mix], [{:fss, "~> 0.1.0", [hex: :fss, repo: "hexpm", optional: false]}, {:nx, "~> 0.1", [hex: :nx, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}, {:table, "~> 0.1.2", [hex: :table, repo: "hexpm", optional: false]}], "hexpm", "91bcc77cc58a6ed69697d6e2bdf5f577b03f93476a26270dea66b1a770b1fc76"}, "makeup": {:hex, :makeup, "1.1.2", "9ba8837913bdf757787e71c1581c21f9d2455f4dd04cfca785c70bbfff1a76a3", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cce1566b81fbcbd21eca8ffe808f33b221f9eee2cbc7a1706fc3da9ff18e6cac"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"}, "makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"}, diff --git a/test/kino_flame/runner_cell_test.exs b/test/kino_flame/runner_cell_test.exs index 3b23c45..432d009 100644 --- a/test/kino_flame/runner_cell_test.exs +++ b/test/kino_flame/runner_cell_test.exs @@ -37,7 +37,49 @@ defmodule KinoFLAME.RunnerCellTest do """ end - test "restores source code from attrs" do + test "with empty attributes on Kubernetes" do + # We only set name to make sure it's deterministic + attrs = %{"name" => "runner"} + System.put_env("KUBERNETES_SERVICE_HOST", "some-value") + + {_kino, source} = start_smart_cell!(RunnerCell, attrs) + + assert source == + ~s''' + import YamlElixir.Sigil + + pod_template = ~y""" + apiVersion: v1 + kind: Pod + metadata: + generateName: livebook-flame-runner- + spec: + containers: + - name: livebook-runtime + env: + - name: LIVEBOOK_COOKIE + value: \#{Node.get_cookie()} + """ + + Kino.start_child( + {FLAME.Pool, + name: :runner, + code_sync: [start_apps: true, copy_paths: true, sync_beams: Kino.beam_paths()], + min: 0, + max: 1, + max_concurrency: 10, + boot_timeout: :timer.minutes(3), + idle_shutdown_after: :timer.minutes(1), + timeout: :infinity, + track_resources: true, + backend: {FLAMEK8sBackend, runner_pod_tpl: pod_template}} + )\ + ''' + after + System.delete_env("KUBERNETES_SERVICE_HOST") + end + + test "restores Fly source code from attrs" do attrs = %{ "name" => "my_runner", "min" => 2, @@ -80,6 +122,42 @@ defmodule KinoFLAME.RunnerCellTest do )\ """ end + + test "restores Kubernetes source code from attrs" do + attrs = %{ + "backend" => "k8s", + "name" => "my_runner", + "min" => 2, + "max" => 3, + "max_concurrency" => 15, + "k8s_pod_template" => "some_template" + } + + {_kino, source} = start_smart_cell!(RunnerCell, attrs) + + assert source == + ~s''' + import YamlElixir.Sigil + + pod_template = ~y""" + some_template + """ + + Kino.start_child( + {FLAME.Pool, + name: :my_runner, + code_sync: [start_apps: true, copy_paths: true, sync_beams: Kino.beam_paths()], + min: 2, + max: 3, + max_concurrency: 15, + boot_timeout: :timer.minutes(3), + idle_shutdown_after: :timer.minutes(1), + timeout: :infinity, + track_resources: true, + backend: {FLAMEK8sBackend, runner_pod_tpl: pod_template}} + )\ + ''' + end end test "updates source on field update" do @@ -93,6 +171,16 @@ defmodule KinoFLAME.RunnerCellTest do assert source =~ "min: 5" end + test "sets missing_livebook_cookie if env var is missing" do + {kino, _source} = start_smart_cell!(RunnerCell, %{}) + + # TODO: use push_smart_cell_editor_source once released https://github.com/livebook-dev/kino/pull/468 + # (no need to bump :kino requirement, because it's test-only) + send(kino.pid, {:editor_source, "some-source-without-env"}) + + assert_broadcast_event(kino, "missing_livebook_cookie", %{"is_missing" => true}) + end + test "when available env vars change notifies the client" do {kino, _source} = start_smart_cell!(RunnerCell, %{})