diff --git a/.github/workflows/mkdocs-material.yml b/.github/workflows/mkdocs-material.yml index 8d3c262e47..af03a524e9 100644 --- a/.github/workflows/mkdocs-material.yml +++ b/.github/workflows/mkdocs-material.yml @@ -4,6 +4,7 @@ on: branches: - 'main' - 'development' + - 'release-candidate-2-1' jobs: mkdocs-material: diff --git a/docs/installation/INSTALL_LINUX.md b/docs/installation/INSTALL_LINUX.md index 174fdfde05..53fdae2481 100644 --- a/docs/installation/INSTALL_LINUX.md +++ b/docs/installation/INSTALL_LINUX.md @@ -43,6 +43,7 @@ title: Manual Installation, Linux environment named `invokeai` and activate the environment. ```bash + (base) rm -rf src # (this is a precaution in case there is already a src directory) (base) ~/InvokeAI$ conda env create (base) ~/InvokeAI$ conda activate invokeai (invokeai) ~/InvokeAI$ @@ -51,50 +52,54 @@ title: Manual Installation, Linux After these steps, your command prompt will be prefixed by `(invokeai)` as shown above. -6. Load a couple of small machine-learning models required by stable diffusion: +6. Load the big stable diffusion weights files and a couple of smaller machine-learning models: ```bash (invokeai) ~/InvokeAI$ python3 scripts/preload_models.py ``` !!! note + This script will lead you through the process of creating an account on Hugging Face, + accepting the terms and conditions of the Stable Diffusion model license, and + obtaining an access token for downloading. It will then download and install the + weights files for you. - This step is necessary because I modified the original just-in-time - model loading scheme to allow the script to work on GPU machines that are not - internet connected. See [Preload Models](../features/OTHER.md#preload-models) + Please see [../features/INSTALLING_MODELS.md] for a manual process for doing the + same thing. -7. Install the weights for the stable diffusion model. +7. Start generating images! -- Sign up at https://huggingface.co -- Go to the [Stable diffusion diffusion model page](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) -- Accept the terms and click Access Repository -- Download [v1-5-pruned-emaonly.ckpt (4.27 GB)](https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt) -and move it into this directory under `models/ldm/stable_diffusion_v1/v1-5-pruned-emaonly.ckpt` + # Command-line interface + (invokeai) python scripts/invoke.py -There are many other models that you can use. Please see [../features/INSTALLING_MODELS.md] -for details. + # or run the web interface on localhost:9090! + (invokeai) python scripts/invoke.py --web -8. Start generating images! + # or run the web interface on your machine's network interface! + (invokeai) python scripts/invoke.py --web --host 0.0.0.0 - ```bash - # for the pre-release weights use the -l or --liaon400m switch - (invokeai) ~/InvokeAI$ python3 scripts/invoke.py -l +To use an alternative model you may invoke the `!switch` command in +the CLI, or pass `--model ` during `invoke.py` launch for +either the CLI or the Web UI. See [Command Line +Client](../features/CLI.md#model-selection-and-importation). The +model names are defined in `configs/models.yaml`. - # for the post-release weights do not use the switch - (invokeai) ~/InvokeAI$ python3 scripts/invoke.py - - # for additional configuration switches and arguments, use -h or --help - (invokeai) ~/InvokeAI$ python3 scripts/invoke.py -h - ``` - -9. Subsequently, to relaunch the script, be sure to run "conda activate invokeai" (step 5, second command), enter the `InvokeAI` directory, and then launch the invoke script (step 8). If you forget to activate the 'invokeai' environment, the script will fail with multiple `ModuleNotFound` errors. +9. Subsequently, to relaunch the script, be sure to run "conda +activate invokeai" (step 5, second command), enter the `InvokeAI` +directory, and then launch the invoke script (step 8). If you forget +to activate the 'invokeai' environment, the script will fail with +multiple `ModuleNotFound` errors. ## Updating to newer versions of the script -This distribution is changing rapidly. If you used the `git clone` method (step 5) to download the InvokeAI directory, then to update to the latest and greatest version, launch the Anaconda window, enter `InvokeAI` and type: +This distribution is changing rapidly. If you used the `git clone` +method (step 5) to download the InvokeAI directory, then to update to +the latest and greatest version, launch the Anaconda window, enter +`InvokeAI` and type: ```bash (invokeai) ~/InvokeAI$ git pull +(invokeai) ~/InvokeAI$ rm -rf src # prevents conda freezing errors (invokeai) ~/InvokeAI$ conda env update -f environment.yml ``` diff --git a/docs/installation/INSTALL_MAC.md b/docs/installation/INSTALL_MAC.md index a458eaf43c..49da260511 100644 --- a/docs/installation/INSTALL_MAC.md +++ b/docs/installation/INSTALL_MAC.md @@ -19,24 +19,9 @@ an issue on Github and we will do our best to help. ## Installation -First you need to download a large checkpoint file. - -1. Sign up at https://huggingface.co -2. Go to the [Stable diffusion diffusion model page](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) -3. Accept the terms and click Access Repository -4. Download [v1-5-pruned-emaonly.ckpt (4.27 GB)](https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt) -and move it into this directory under `models/ldm/stable_diffusion_v1/v1-5-pruned-emaonly.ckpt` - -There are many other models that you can try. Please see [../features/INSTALLING_MODELS.md] -for details. - -While that is downloading, open Terminal and run the following -commands one at a time, reading the comments and taking care to run -the appropriate command for your Mac's architecture (Intel or M1). - !!! todo "Homebrew" - If you have no brew installation yet (otherwise skip): + First you will install the "brew" package manager. Skip this if brew is already installed. ```bash title="install brew (and Xcode command line tools)" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" @@ -100,25 +85,6 @@ the appropriate command for your Mac's architecture (Intel or M1). cd InvokeAI ``` -!!! todo "Wait until the checkpoint-file download finished, then proceed" - - We will leave the big checkpoint wherever you stashed it for long-term storage, - and make a link to it from the repo's folder. This allows you to use it for - other repos, or if you need to delete Invoke AI, you won't have to download it again. - - ```{.bash .annotate} - # Make the directory in the repo for the symlink - mkdir -p models/ldm/stable-diffusion-v1/ - - # This is the folder where you put the checkpoint file `sd-v1-4.ckpt` - PATH_TO_CKPT="$HOME/Downloads" # (1)! - - # Create a link to the checkpoint - ln -s "$PATH_TO_CKPT/sd-v1-4.ckpt" models/ldm/stable-diffusion-v1/model.ckpt - ``` - - 1. replace `$HOME/Downloads` with the Location where you actually stored the Checkppoint (`sd-v1-4.ckpt`) - !!! todo "Create the environment & install packages" === "M1 Mac" @@ -137,25 +103,40 @@ the appropriate command for your Mac's architecture (Intel or M1). # Activate the environment (you need to do this every time you want to run SD) conda activate invokeai - # This will download some bits and pieces and make take a while - (invokeai) python scripts/preload_models.py - - # Run SD! - (invokeai) python scripts/dream.py - - # or run the web interface! - (invokeai) python scripts/invoke.py --web - - # The original scripts should work as well. - (invokeai) python scripts/orig_scripts/txt2img.py \ - --prompt "a photograph of an astronaut riding a horse" \ - --plms - ``` !!! info `export PIP_EXISTS_ACTION=w` is a precaution to fix `conda env create -f environment-mac.yml` never finishing in some situations. So - it isn't required but wont hurt. + it isn't required but won't hurt. + +!!! todo "Download the model weight files" + +The `preload_models.py` script downloads and installs the model weight +files for you. It will lead you through the process of getting a Hugging Face +account, accepting the Stable Diffusion model weight license agreement, and +creating a download token: + + # This will take some time, depending on the speed of your internet connection + # and will consume about 10GB of space + (invokeai) python scripts/preload_models.py + +!! todo "Run InvokeAI!" + + # Command-line interface + (invokeai) python scripts/invoke.py + + # or run the web interface on localhost:9090! + (invokeai) python scripts/invoke.py --web + + # or run the web interface on your machine's network interface! + (invokeai) python scripts/invoke.py --web --host 0.0.0.0 + +To use an alternative model you may invoke the `!switch` command in +the CLI, or pass `--model ` during `invoke.py` launch for +either the CLI or the Web UI. See [Command Line +Client](../features/CLI.md#model-selection-and-importation). The +model names are defined in `configs/models.yaml`. + --- ## Common problems diff --git a/docs/installation/INSTALL_WINDOWS.md b/docs/installation/INSTALL_WINDOWS.md index c3cd6465f4..9e67f98269 100644 --- a/docs/installation/INSTALL_WINDOWS.md +++ b/docs/installation/INSTALL_WINDOWS.md @@ -69,40 +69,42 @@ in the wiki environment file isn't specified, conda will default to `environment.yml`. You will need to provide the `-f` option if you wish to load a different environment file at any point. -7. Run the command: +7. Load the big stable diffusion weights files and a couple of smaller machine-learning models: - ```batch - python scripts\preload_models.py + ```bash + (invokeai) ~/InvokeAI$ python3 scripts/preload_models.py ``` - This installs several machine learning models that stable diffusion requires. + !!! note + This script will lead you through the process of creating an account on Hugging Face, + accepting the terms and conditions of the Stable Diffusion model license, and + obtaining an access token for downloading. It will then download and install the + weights files for you. - Note: This step is required. This was done because some users may might be - blocked by firewalls or have limited internet connectivity for the models to - be downloaded just-in-time. + Please see [../features/INSTALLING_MODELS.md] for a manual process for doing the + same thing. -8. Now you need to install the weights for the big stable diffusion model. +8. Start generating images! - - Sign up at https://huggingface.co - - Go to the [Stable diffusion diffusion model page](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) - - Accept the terms and click Access Repository - - Download [v1-5-pruned-emaonly.ckpt (4.27 GB)](https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt) - and move it into this directory under `models/ldm/stable_diffusion_v1/v1-5-pruned-emaonly.ckpt` + # Command-line interface + (invokeai) python scripts/invoke.py - There are many other models that you can use. Please see [../features/INSTALLING_MODELS.md] - for details. + # or run the web interface on localhost:9090! + (invokeai) python scripts/invoke.py --web -9. Start generating images! + # or run the web interface on your machine's network interface! + (invokeai) python scripts/invoke.py --web --host 0.0.0.0 - ```batch title="for the pre-release weights" - python scripts\invoke.py -l - ``` +To use an alternative model you may invoke the `!switch` command in +the CLI, or pass `--model ` during `invoke.py` launch for +either the CLI or the Web UI. See [Command Line +Client](../features/CLI.md#model-selection-and-importation). The +model names are defined in `configs/models.yaml`. - ```batch title="for the post-release weights" - python scripts\invoke.py - ``` - -10. Subsequently, to relaunch the script, first activate the Anaconda command window (step 3),enter the InvokeAI directory (step 5, `cd \path\to\InvokeAI`), run `conda activate invokeai` (step 6b), and then launch the invoke script (step 9). +9. Subsequently, to relaunch the script, first activate the Anaconda +command window (step 3),enter the InvokeAI directory (step 5, `cd +\path\to\InvokeAI`), run `conda activate invokeai` (step 6b), and then +launch the invoke script (step 9). !!! tip "Tildebyte has written an alternative" diff --git a/environment-linux-aarch64.yml b/environment-linux-aarch64.yml index f430770c4d..6e9d2cbf06 100644 --- a/environment-linux-aarch64.yml +++ b/environment-linux-aarch64.yml @@ -11,6 +11,7 @@ dependencies: - numpy=1.19 - imageio=2.9.0 - opencv=4.6.0 + - getpass_asterisk - pillow=8.* - flask=2.1.* - flask_cors=3.0.10 diff --git a/environment-mac.yml b/environment-mac.yml index ea083185a1..0e0aae01ee 100644 --- a/environment-mac.yml +++ b/environment-mac.yml @@ -22,6 +22,7 @@ dependencies: - diffusers=0.6.0 - einops=0.4.1 - grpcio=1.46.4 + - getpass_asterisk - humanfriendly=10.0 - imageio=2.21.2 - imageio-ffmpeg=0.4.7 diff --git a/environment.yml b/environment.yml index fe9eb37768..a26fc1c0fd 100644 --- a/environment.yml +++ b/environment.yml @@ -1,14 +1,14 @@ name: invokeai channels: - pytorch + - nvidia - defaults dependencies: - python>=3.9 - - pip=20.3 - - cudatoolkit=11.3 - - pytorch=1.11.0 - - torchvision=0.12.0 - - numpy=1.19.2 + - pip=22.2.2 + - numpy=1.23.3 + - torchvision=0.14.0 + - pytorch-cuda=11.7 - pip: - albumentations==0.4.3 - opencv-python==4.5.5.64 @@ -33,6 +33,7 @@ dependencies: - flask_cors==3.0.10 - dependency_injector==4.40.0 - eventlet + - getpass_asterisk - kornia==0.6.0 - -e git+https://github.com/openai/CLIP.git@main#egg=clip - -e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers diff --git a/frontend/dist/assets/index.4488003f.js b/frontend/dist/assets/index.4488003f.js new file mode 100644 index 0000000000..0faf1d3860 --- /dev/null +++ b/frontend/dist/assets/index.4488003f.js @@ -0,0 +1,829 @@ +function fee(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const l of s.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerpolicy&&(s.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?s.credentials="include":i.crossorigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var Jg=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sL(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var O={exports:{}},zk={exports:{}};/** + * @license React + * react.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(e,t){(function(){typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var n="18.2.0",r=Symbol.for("react.element"),i=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),m=Symbol.for("react.context"),b=Symbol.for("react.forward_ref"),S=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),w=Symbol.for("react.memo"),T=Symbol.for("react.lazy"),L=Symbol.for("react.offscreen"),M=Symbol.iterator,B="@@iterator";function F(k){if(k===null||typeof k!="object")return null;var j=M&&k[M]||k[B];return typeof j=="function"?j:null}var z={current:null},H={transition:null},G={current:null,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1},K={current:null},Z={},ne=null;function ie(k){ne=k}Z.setExtraStackFrame=function(k){ne=k},Z.getCurrentStack=null,Z.getStackAddendum=function(){var k="";ne&&(k+=ne);var j=Z.getCurrentStack;return j&&(k+=j()||""),k};var le=!1,oe=!1,Ae=!1,de=!1,Se=!1,Me={ReactCurrentDispatcher:z,ReactCurrentBatchConfig:H,ReactCurrentOwner:K};Me.ReactDebugCurrentFrame=Z,Me.ReactCurrentActQueue=G;function _e(k){{for(var j=arguments.length,ae=new Array(j>1?j-1:0),ce=1;ce1?j-1:0),ce=1;ce1){for(var Hn=Array(xn),mn=0;mn1){for(var Gn=Array(mn),In=0;In is not supported and will be removed in a future major release. Did you mean to render instead?")),j.Provider},set:function(Ze){j.Provider=Ze}},_currentValue:{get:function(){return j._currentValue},set:function(Ze){j._currentValue=Ze}},_currentValue2:{get:function(){return j._currentValue2},set:function(Ze){j._currentValue2=Ze}},_threadCount:{get:function(){return j._threadCount},set:function(Ze){j._threadCount=Ze}},Consumer:{get:function(){return ae||(ae=!0,J("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?")),j.Consumer}},displayName:{get:function(){return j.displayName},set:function(Ze){Ne||(_e("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.",Ze),Ne=!0)}}}),j.Consumer=mt}return j._currentRenderer=null,j._currentRenderer2=null,j}var yr=-1,ti=0,Mo=1,Do=2;function ge(k){if(k._status===yr){var j=k._result,ae=j();if(ae.then(function(mt){if(k._status===ti||k._status===yr){var Ze=k;Ze._status=Mo,Ze._result=mt}},function(mt){if(k._status===ti||k._status===yr){var Ze=k;Ze._status=Do,Ze._result=mt}}),k._status===yr){var ce=k;ce._status=ti,ce._result=ae}}if(k._status===Mo){var Ne=k._result;return Ne===void 0&&J(`lazy: Expected the result of a dynamic import() call. Instead received: %s + +Your code should look like: + const MyComponent = lazy(() => import('./MyComponent')) + +Did you accidentally put curly braces around the import?`,Ne),"default"in Ne||J(`lazy: Expected the result of a dynamic import() call. Instead received: %s + +Your code should look like: + const MyComponent = lazy(() => import('./MyComponent'))`,Ne),Ne.default}else throw k._result}function dt(k){var j={_status:yr,_result:k},ae={$$typeof:T,_payload:j,_init:ge};{var ce,Ne;Object.defineProperties(ae,{defaultProps:{configurable:!0,get:function(){return ce},set:function(mt){J("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),ce=mt,Object.defineProperty(ae,"defaultProps",{enumerable:!0})}},propTypes:{configurable:!0,get:function(){return Ne},set:function(mt){J("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),Ne=mt,Object.defineProperty(ae,"propTypes",{enumerable:!0})}}})}return ae}function xt(k){k!=null&&k.$$typeof===w?J("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof k!="function"?J("forwardRef requires a render function but was given %s.",k===null?"null":typeof k):k.length!==0&&k.length!==2&&J("forwardRef render functions accept exactly two parameters: props and ref. %s",k.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),k!=null&&(k.defaultProps!=null||k.propTypes!=null)&&J("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?");var j={$$typeof:b,render:k};{var ae;Object.defineProperty(j,"displayName",{enumerable:!1,configurable:!0,get:function(){return ae},set:function(ce){ae=ce,!k.name&&!k.displayName&&(k.displayName=ce)}})}return j}var bn;bn=Symbol.for("react.module.reference");function dr(k){return!!(typeof k=="string"||typeof k=="function"||k===s||k===f||Se||k===l||k===S||k===N||de||k===L||le||oe||Ae||typeof k=="object"&&k!==null&&(k.$$typeof===T||k.$$typeof===w||k.$$typeof===d||k.$$typeof===m||k.$$typeof===b||k.$$typeof===bn||k.getModuleId!==void 0))}function _r(k,j){dr(k)||J("memo: The first argument must be a component. Instead received: %s",k===null?"null":typeof k);var ae={$$typeof:w,type:k,compare:j===void 0?null:j};{var ce;Object.defineProperty(ae,"displayName",{enumerable:!1,configurable:!0,get:function(){return ce},set:function(Ne){ce=Ne,!k.name&&!k.displayName&&(k.displayName=Ne)}})}return ae}function Ht(){var k=z.current;return k===null&&J(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons: +1. You might have mismatching versions of React and the renderer (such as React DOM) +2. You might be breaking the Rules of Hooks +3. You might have more than one copy of React in the same app +See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.`),k}function Kn(k){var j=Ht();if(k._context!==void 0){var ae=k._context;ae.Consumer===k?J("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"):ae.Provider===k&&J("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?")}return j.useContext(k)}function sr(k){var j=Ht();return j.useState(k)}function kr(k,j,ae){var ce=Ht();return ce.useReducer(k,j,ae)}function hr(k){var j=Ht();return j.useRef(k)}function Fa(k,j){var ae=Ht();return ae.useEffect(k,j)}function Yi(k,j){var ae=Ht();return ae.useInsertionEffect(k,j)}function Po(k,j){var ae=Ht();return ae.useLayoutEffect(k,j)}function Ra(k,j){var ae=Ht();return ae.useCallback(k,j)}function gs(k,j){var ae=Ht();return ae.useMemo(k,j)}function pu(k,j,ae){var ce=Ht();return ce.useImperativeHandle(k,j,ae)}function co(k,j){{var ae=Ht();return ae.useDebugValue(k,j)}}function Rl(){var k=Ht();return k.useTransition()}function bs(k){var j=Ht();return j.useDeferredValue(k)}function Zn(){var k=Ht();return k.useId()}function Io(k,j,ae){var ce=Ht();return ce.useSyncExternalStore(k,j,ae)}var qi=0,kl,Al,nl,ni,rl,Ol,Ll;function mu(){}mu.__reactDisabledLog=!0;function ju(){{if(qi===0){kl=console.log,Al=console.info,nl=console.warn,ni=console.error,rl=console.group,Ol=console.groupCollapsed,Ll=console.groupEnd;var k={configurable:!0,enumerable:!0,value:mu,writable:!0};Object.defineProperties(console,{info:k,log:k,warn:k,error:k,group:k,groupCollapsed:k,groupEnd:k})}qi++}}function Vu(){{if(qi--,qi===0){var k={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:Ve({},k,{value:kl}),info:Ve({},k,{value:Al}),warn:Ve({},k,{value:nl}),error:Ve({},k,{value:ni}),group:Ve({},k,{value:rl}),groupCollapsed:Ve({},k,{value:Ol}),groupEnd:Ve({},k,{value:Ll})})}qi<0&&J("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Fo=Me.ReactCurrentDispatcher,ri;function fo(k,j,ae){{if(ri===void 0)try{throw Error()}catch(Ne){var ce=Ne.stack.trim().match(/\n( *(at )?)/);ri=ce&&ce[1]||""}return` +`+ri+k}}var ai=!1,Di;{var Ml=typeof WeakMap=="function"?WeakMap:Map;Di=new Ml}function Dl(k,j){if(!k||ai)return"";{var ae=Di.get(k);if(ae!==void 0)return ae}var ce;ai=!0;var Ne=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var mt;mt=Fo.current,Fo.current=null,ju();try{if(j){var Ze=function(){throw Error()};if(Object.defineProperty(Ze.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Ze,[])}catch(Qn){ce=Qn}Reflect.construct(k,[],Ze)}else{try{Ze.call()}catch(Qn){ce=Qn}k.call(Ze.prototype)}}else{try{throw Error()}catch(Qn){ce=Qn}k()}}catch(Qn){if(Qn&&ce&&typeof Qn.stack=="string"){for(var Tt=Qn.stack.split(` +`),Xt=ce.stack.split(` +`),xn=Tt.length-1,Hn=Xt.length-1;xn>=1&&Hn>=0&&Tt[xn]!==Xt[Hn];)Hn--;for(;xn>=1&&Hn>=0;xn--,Hn--)if(Tt[xn]!==Xt[Hn]){if(xn!==1||Hn!==1)do if(xn--,Hn--,Hn<0||Tt[xn]!==Xt[Hn]){var mn=` +`+Tt[xn].replace(" at new "," at ");return k.displayName&&mn.includes("")&&(mn=mn.replace("",k.displayName)),typeof k=="function"&&Di.set(k,mn),mn}while(xn>=1&&Hn>=0);break}}}finally{ai=!1,Fo.current=mt,Vu(),Error.prepareStackTrace=Ne}var Gn=k?k.displayName||k.name:"",In=Gn?fo(Gn):"";return typeof k=="function"&&Di.set(k,In),In}function Ms(k,j,ae){return Dl(k,!1)}function Pl(k){var j=k.prototype;return!!(j&&j.isReactComponent)}function ho(k,j,ae){if(k==null)return"";if(typeof k=="function")return Dl(k,Pl(k));if(typeof k=="string")return fo(k);switch(k){case S:return fo("Suspense");case N:return fo("SuspenseList")}if(typeof k=="object")switch(k.$$typeof){case b:return Ms(k.render);case w:return ho(k.type,j,ae);case T:{var ce=k,Ne=ce._payload,mt=ce._init;try{return ho(mt(Ne),j,ae)}catch{}}}return""}var Wa={},wi=Me.ReactDebugCurrentFrame;function ka(k){if(k){var j=k._owner,ae=ho(k.type,k._source,j?j.type:null);wi.setExtraStackFrame(ae)}else wi.setExtraStackFrame(null)}function Gu(k,j,ae,ce,Ne){{var mt=Function.call.bind(Rn);for(var Ze in k)if(mt(k,Ze)){var Tt=void 0;try{if(typeof k[Ze]!="function"){var Xt=Error((ce||"React class")+": "+ae+" type `"+Ze+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof k[Ze]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Xt.name="Invariant Violation",Xt}Tt=k[Ze](j,Ze,ce,ae,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(xn){Tt=xn}Tt&&!(Tt instanceof Error)&&(ka(Ne),J("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",ce||"React class",ae,Ze,typeof Tt),ka(null)),Tt instanceof Error&&!(Tt.message in Wa)&&(Wa[Tt.message]=!0,ka(Ne),J("Failed %s type: %s",ae,Tt.message),ka(null))}}}function gr(k){if(k){var j=k._owner,ae=ho(k.type,k._source,j?j.type:null);ie(ae)}else ie(null)}var zo;zo=!1;function Il(){if(K.current){var k=an(K.current.type);if(k)return` + +Check the render method of \``+k+"`."}return""}function Xn(k){if(k!==void 0){var j=k.fileName.replace(/^.*[\\\/]/,""),ae=k.lineNumber;return` + +Check your code at `+j+":"+ae+"."}return""}function Wu(k){return k!=null?Xn(k.__source):""}var qr={};function ts(k){var j=Il();if(!j){var ae=typeof k=="string"?k:k.displayName||k.name;ae&&(j=` + +Check the top-level render call using <`+ae+">.")}return j}function po(k,j){if(!(!k._store||k._store.validated||k.key!=null)){k._store.validated=!0;var ae=ts(j);if(!qr[ae]){qr[ae]=!0;var ce="";k&&k._owner&&k._owner!==K.current&&(ce=" It was passed a child from "+an(k._owner.type)+"."),gr(k),J('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',ae,ce),gr(null)}}}function ys(k,j){if(typeof k=="object"){if(gn(k))for(var ae=0;ae",Ne=" Did you accidentally export a JSX literal instead of a component?"):Ze=typeof k,J("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Ze,Ne)}var Tt=Xe.apply(this,arguments);if(Tt==null)return Tt;if(ce)for(var Xt=2;Xt10&&_e("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."),ce._updatedFibers.clear()}}}var Ps=!1,Ss=null;function vu(k){if(Ss===null)try{var j=("require"+Math.random()).slice(0,7),ae=e&&e[j];Ss=ae.call(e,"timers").setImmediate}catch{Ss=function(Ne){Ps===!1&&(Ps=!0,typeof MessageChannel>"u"&&J("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var mt=new MessageChannel;mt.port1.onmessage=Ne,mt.port2.postMessage(void 0)}}return Ss(k)}var Sr=0,Br=!1;function Yu(k){{var j=Sr;Sr++,G.current===null&&(G.current=[]);var ae=G.isBatchingLegacy,ce;try{if(G.isBatchingLegacy=!0,ce=k(),!ae&&G.didScheduleLegacyUpdate){var Ne=G.current;Ne!==null&&(G.didScheduleLegacyUpdate=!1,se(Ne))}}catch(Gn){throw mo(j),Gn}finally{G.isBatchingLegacy=ae}if(ce!==null&&typeof ce=="object"&&typeof ce.then=="function"){var mt=ce,Ze=!1,Tt={then:function(Gn,In){Ze=!0,mt.then(function(Qn){mo(j),Sr===0?$(Qn,Gn,In):Gn(Qn)},function(Qn){mo(j),In(Qn)})}};return!Br&&typeof Promise<"u"&&Promise.resolve().then(function(){}).then(function(){Ze||(Br=!0,J("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),Tt}else{var Xt=ce;if(mo(j),Sr===0){var xn=G.current;xn!==null&&(se(xn),G.current=null);var Hn={then:function(Gn,In){G.current===null?(G.current=[],$(Xt,Gn,In)):Gn(Xt)}};return Hn}else{var mn={then:function(Gn,In){Gn(Xt)}};return mn}}}}function mo(k){k!==Sr-1&&J("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),Sr=k}function $(k,j,ae){{var ce=G.current;if(ce!==null)try{se(ce),vu(function(){ce.length===0?(G.current=null,j(k)):$(k,j,ae)})}catch(Ne){ae(Ne)}else j(k)}}var X=!1;function se(k){if(!X){X=!0;var j=0;try{for(;j0;){var Lt=We-1>>>1,Rt=pt[Lt];if(m(Rt,Xe)>0)pt[Lt]=Xe,pt[We]=Rt,We=Lt;else return}}function d(pt,Xe,Bt){for(var We=Bt,Lt=pt.length,Rt=Lt>>>1;WeBt&&(!pt||fr()));){var We=de.callback;if(typeof We=="function"){de.callback=null,Se=de.priorityLevel;var Lt=de.expirationTime<=Bt,Rt=We(Lt);Bt=e.unstable_now(),typeof Rt=="function"?de.callback=Rt:de===s(le)&&l(le),xe(Bt)}else l(le);de=s(le)}if(de!==null)return!0;var gt=s(oe);return gt!==null&&En(Ve,gt.startTime-Bt),!1}function wt(pt,Xe){switch(pt){case b:case S:case N:case w:case T:break;default:pt=N}var Bt=Se;Se=pt;try{return Xe()}finally{Se=Bt}}function Ot(pt){var Xe;switch(Se){case b:case S:case N:Xe=N;break;default:Xe=Se;break}var Bt=Se;Se=Xe;try{return pt()}finally{Se=Bt}}function Ut(pt){var Xe=Se;return function(){var Bt=Se;Se=Xe;try{return pt.apply(this,arguments)}finally{Se=Bt}}}function ut(pt,Xe,Bt){var We=e.unstable_now(),Lt;if(typeof Bt=="object"&&Bt!==null){var Rt=Bt.delay;typeof Rt=="number"&&Rt>0?Lt=We+Rt:Lt=We}else Lt=We;var gt;switch(pt){case b:gt=G;break;case S:gt=K;break;case T:gt=ie;break;case w:gt=ne;break;case N:default:gt=Z;break}var _t=Lt+gt,kn={id:Ae++,callback:Xe,priorityLevel:pt,startTime:Lt,expirationTime:_t,sortIndex:-1};return Lt>We?(kn.sortIndex=Lt,i(oe,kn),s(le)===null&&kn===s(oe)&&(J?Je():J=!0,En(Ve,Lt-We))):(kn.sortIndex=_t,i(le,kn),!_e&&!Me&&(_e=!0,er(Pe))),kn}function It(){}function Qt(){!_e&&!Me&&(_e=!0,er(Pe))}function pn(){return s(le)}function ht(pt){pt.callback=null}function gn(){return Se}var De=!1,kt=null,Zt=-1,Pt=r,un=-1;function fr(){var pt=e.unstable_now()-un;return!(pt125){console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported");return}pt>0?Pt=Math.floor(1e3/pt):Pt=r}var wn=function(){if(kt!==null){var pt=e.unstable_now();un=pt;var Xe=!0,Bt=!0;try{Bt=kt(Xe,pt)}finally{Bt?Ln():(De=!1,kt=null)}}else De=!1},Ln;if(typeof ye=="function")Ln=function(){ye(wn)};else if(typeof MessageChannel<"u"){var St=new MessageChannel,Ft=St.port2;St.port1.onmessage=wn,Ln=function(){Ft.postMessage(null)}}else Ln=function(){he(wn,0)};function er(pt){kt=pt,De||(De=!0,Ln())}function En(pt,Xe){Zt=he(function(){pt(e.unstable_now())},Xe)}function Je(){ve(Zt),Zt=-1}var Mn=an,br=null;e.unstable_IdlePriority=T,e.unstable_ImmediatePriority=b,e.unstable_LowPriority=w,e.unstable_NormalPriority=N,e.unstable_Profiling=br,e.unstable_UserBlockingPriority=S,e.unstable_cancelCallback=ht,e.unstable_continueExecution=Qt,e.unstable_forceFrameRate=Rn,e.unstable_getCurrentPriorityLevel=gn,e.unstable_getFirstCallbackNode=pn,e.unstable_next=Ot,e.unstable_pauseExecution=It,e.unstable_requestPaint=Mn,e.unstable_runWithPriority=wt,e.unstable_scheduleCallback=ut,e.unstable_shouldYield=fr,e.unstable_wrapCallback=Ut,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)})()})(kH);(function(e){e.exports=kH})(w3);/** + * @license React + * react-dom.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(){typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var e=O.exports,t=w3.exports,n=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,r=!1;function i(a){r=a}function s(a){if(!r){for(var o=arguments.length,h=new Array(o>1?o-1:0),v=1;v1?o-1:0),v=1;v2&&(a[0]==="o"||a[0]==="O")&&(a[1]==="n"||a[1]==="N")}function _t(a,o,h,v){if(h!==null&&h.type===St)return!1;switch(typeof o){case"function":case"symbol":return!0;case"boolean":{if(v)return!1;if(h!==null)return!h.acceptsBooleans;var x=a.toLowerCase().slice(0,5);return x!=="data-"&&x!=="aria-"}default:return!1}}function kn(a,o,h,v){if(o===null||typeof o>"u"||_t(a,o,h,v))return!0;if(v)return!1;if(h!==null)switch(h.type){case En:return!o;case Je:return o===!1;case Mn:return isNaN(o);case br:return isNaN(o)||o<1}return!1}function Un(a){return rr.hasOwnProperty(a)?rr[a]:null}function Gt(a,o,h,v,x,A,P){this.acceptsBooleans=o===er||o===En||o===Je,this.attributeName=v,this.attributeNamespace=x,this.mustUseProperty=h,this.propertyName=a,this.type=o,this.sanitizeURL=A,this.removeEmptyString=P}var rr={},di=["children","dangerouslySetInnerHTML","defaultValue","defaultChecked","innerHTML","suppressContentEditableWarning","suppressHydrationWarning","style"];di.forEach(function(a){rr[a]=new Gt(a,St,!1,a,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var o=a[0],h=a[1];rr[o]=new Gt(o,Ft,!1,h,null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(a){rr[a]=new Gt(a,er,!1,a.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){rr[a]=new Gt(a,er,!1,a,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"].forEach(function(a){rr[a]=new Gt(a,En,!1,a.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(a){rr[a]=new Gt(a,En,!0,a,null,!1,!1)}),["capture","download"].forEach(function(a){rr[a]=new Gt(a,Je,!1,a,null,!1,!1)}),["cols","rows","size","span"].forEach(function(a){rr[a]=new Gt(a,br,!1,a,null,!1,!1)}),["rowSpan","start"].forEach(function(a){rr[a]=new Gt(a,Mn,!1,a.toLowerCase(),null,!1,!1)});var Yr=/[\-\:]([a-z])/g,pr=function(a){return a[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"].forEach(function(a){var o=a.replace(Yr,pr);rr[o]=new Gt(o,Ft,!1,a,null,!1,!1)}),["xlink:actuate","xlink:arcrole","xlink:role","xlink:show","xlink:title","xlink:type"].forEach(function(a){var o=a.replace(Yr,pr);rr[o]=new Gt(o,Ft,!1,a,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(a){var o=a.replace(Yr,pr);rr[o]=new Gt(o,Ft,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(a){rr[a]=new Gt(a,Ft,!1,a.toLowerCase(),null,!1,!1)});var Wi="xlinkHref";rr[Wi]=new Gt("xlinkHref",Ft,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(a){rr[a]=new Gt(a,Ft,!1,a.toLowerCase(),null,!0,!0)});var lo=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i,uo=!1;function hi(a){!uo&&lo.test(a)&&(uo=!0,l("A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML try using dangerouslySetInnerHTML instead. React was passed %s.",JSON.stringify(a)))}function yr(a,o,h,v){if(v.mustUseProperty){var x=v.propertyName;return a[x]}else{un(h,o),v.sanitizeURL&&hi(""+h);var A=v.attributeName,P=null;if(v.type===Je){if(a.hasAttribute(A)){var U=a.getAttribute(A);return U===""?!0:kn(o,h,v,!1)?U:U===""+h?h:U}}else if(a.hasAttribute(A)){if(kn(o,h,v,!1))return a.getAttribute(A);if(v.type===En)return h;P=a.getAttribute(A)}return kn(o,h,v,!1)?P===null?h:P:P===""+h?h:P}}function ti(a,o,h,v){{if(!Rt(o))return;if(!a.hasAttribute(o))return h===void 0?void 0:null;var x=a.getAttribute(o);return un(h,o),x===""+h?h:x}}function Mo(a,o,h,v){var x=Un(o);if(!gt(o,x,v)){if(kn(o,h,x,v)&&(h=null),v||x===null){if(Rt(o)){var A=o;h===null?a.removeAttribute(A):(un(h,o),a.setAttribute(A,""+h))}return}var P=x.mustUseProperty;if(P){var U=x.propertyName;if(h===null){var W=x.type;a[U]=W===En?!1:""}else a[U]=h;return}var re=x.attributeName,ue=x.attributeNamespace;if(h===null)a.removeAttribute(re);else{var Te=x.type,we;Te===En||Te===Je&&h===!0?we="":(un(h,re),we=""+h,x.sanitizeURL&&hi(we.toString())),ue?a.setAttributeNS(ue,re,we):a.setAttribute(re,we)}}}var Do=Symbol.for("react.element"),ge=Symbol.for("react.portal"),dt=Symbol.for("react.fragment"),xt=Symbol.for("react.strict_mode"),bn=Symbol.for("react.profiler"),dr=Symbol.for("react.provider"),_r=Symbol.for("react.context"),Ht=Symbol.for("react.forward_ref"),Kn=Symbol.for("react.suspense"),sr=Symbol.for("react.suspense_list"),kr=Symbol.for("react.memo"),hr=Symbol.for("react.lazy"),Fa=Symbol.for("react.scope"),Yi=Symbol.for("react.debug_trace_mode"),Po=Symbol.for("react.offscreen"),Ra=Symbol.for("react.legacy_hidden"),gs=Symbol.for("react.cache"),pu=Symbol.for("react.tracing_marker"),co=Symbol.iterator,Rl="@@iterator";function bs(a){if(a===null||typeof a!="object")return null;var o=co&&a[co]||a[Rl];return typeof o=="function"?o:null}var Zn=Object.assign,Io=0,qi,kl,Al,nl,ni,rl,Ol;function Ll(){}Ll.__reactDisabledLog=!0;function mu(){{if(Io===0){qi=console.log,kl=console.info,Al=console.warn,nl=console.error,ni=console.group,rl=console.groupCollapsed,Ol=console.groupEnd;var a={configurable:!0,enumerable:!0,value:Ll,writable:!0};Object.defineProperties(console,{info:a,log:a,warn:a,error:a,group:a,groupCollapsed:a,groupEnd:a})}Io++}}function ju(){{if(Io--,Io===0){var a={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:Zn({},a,{value:qi}),info:Zn({},a,{value:kl}),warn:Zn({},a,{value:Al}),error:Zn({},a,{value:nl}),group:Zn({},a,{value:ni}),groupCollapsed:Zn({},a,{value:rl}),groupEnd:Zn({},a,{value:Ol})})}Io<0&&l("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Vu=n.ReactCurrentDispatcher,Fo;function ri(a,o,h){{if(Fo===void 0)try{throw Error()}catch(x){var v=x.stack.trim().match(/\n( *(at )?)/);Fo=v&&v[1]||""}return` +`+Fo+a}}var fo=!1,ai;{var Di=typeof WeakMap=="function"?WeakMap:Map;ai=new Di}function Ml(a,o){if(!a||fo)return"";{var h=ai.get(a);if(h!==void 0)return h}var v;fo=!0;var x=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var A;A=Vu.current,Vu.current=null,mu();try{if(o){var P=function(){throw Error()};if(Object.defineProperty(P.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(P,[])}catch(Ge){v=Ge}Reflect.construct(a,[],P)}else{try{P.call()}catch(Ge){v=Ge}a.call(P.prototype)}}else{try{throw Error()}catch(Ge){v=Ge}a()}}catch(Ge){if(Ge&&v&&typeof Ge.stack=="string"){for(var U=Ge.stack.split(` +`),W=v.stack.split(` +`),re=U.length-1,ue=W.length-1;re>=1&&ue>=0&&U[re]!==W[ue];)ue--;for(;re>=1&&ue>=0;re--,ue--)if(U[re]!==W[ue]){if(re!==1||ue!==1)do if(re--,ue--,ue<0||U[re]!==W[ue]){var Te=` +`+U[re].replace(" at new "," at ");return a.displayName&&Te.includes("")&&(Te=Te.replace("",a.displayName)),typeof a=="function"&&ai.set(a,Te),Te}while(re>=1&&ue>=0);break}}}finally{fo=!1,Vu.current=A,ju(),Error.prepareStackTrace=x}var we=a?a.displayName||a.name:"",je=we?ri(we):"";return typeof a=="function"&&ai.set(a,je),je}function Dl(a,o,h){return Ml(a,!0)}function Ms(a,o,h){return Ml(a,!1)}function Pl(a){var o=a.prototype;return!!(o&&o.isReactComponent)}function ho(a,o,h){if(a==null)return"";if(typeof a=="function")return Ml(a,Pl(a));if(typeof a=="string")return ri(a);switch(a){case Kn:return ri("Suspense");case sr:return ri("SuspenseList")}if(typeof a=="object")switch(a.$$typeof){case Ht:return Ms(a.render);case kr:return ho(a.type,o,h);case hr:{var v=a,x=v._payload,A=v._init;try{return ho(A(x),o,h)}catch{}}}return""}function Wa(a){switch(a._debugOwner&&a._debugOwner.type,a._debugSource,a.tag){case w:return ri(a.type);case ne:return ri("Lazy");case G:return ri("Suspense");case oe:return ri("SuspenseList");case d:case b:case Z:return Ms(a.type);case z:return Ms(a.type.render);case m:return Dl(a.type);default:return""}}function wi(a){try{var o="",h=a;do o+=Wa(h),h=h.return;while(h);return o}catch(v){return` +Error generating stack: `+v.message+` +`+v.stack}}function ka(a,o,h){var v=a.displayName;if(v)return v;var x=o.displayName||o.name||"";return x!==""?h+"("+x+")":h}function Gu(a){return a.displayName||"Context"}function gr(a){if(a==null)return null;if(typeof a.tag=="number"&&l("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof a=="function")return a.displayName||a.name||null;if(typeof a=="string")return a;switch(a){case dt:return"Fragment";case ge:return"Portal";case bn:return"Profiler";case xt:return"StrictMode";case Kn:return"Suspense";case sr:return"SuspenseList"}if(typeof a=="object")switch(a.$$typeof){case _r:var o=a;return Gu(o)+".Consumer";case dr:var h=a;return Gu(h._context)+".Provider";case Ht:return ka(a,a.render,"ForwardRef");case kr:var v=a.displayName||null;return v!==null?v:gr(a.type)||"Memo";case hr:{var x=a,A=x._payload,P=x._init;try{return gr(P(A))}catch{return null}}}return null}function zo(a,o,h){var v=o.displayName||o.name||"";return a.displayName||(v!==""?h+"("+v+")":h)}function Il(a){return a.displayName||"Context"}function Xn(a){var o=a.tag,h=a.type;switch(o){case Me:return"Cache";case B:var v=h;return Il(v)+".Consumer";case F:var x=h;return Il(x._context)+".Provider";case le:return"DehydratedFragment";case z:return zo(h,h.render,"ForwardRef");case L:return"Fragment";case w:return h;case N:return"Portal";case S:return"Root";case T:return"Text";case ne:return gr(h);case M:return h===xt?"StrictMode":"Mode";case de:return"Offscreen";case H:return"Profiler";case Ae:return"Scope";case G:return"Suspense";case oe:return"SuspenseList";case _e:return"TracingMarker";case m:case d:case ie:case b:case K:case Z:if(typeof h=="function")return h.displayName||h.name||null;if(typeof h=="string")return h;break}return null}var Wu=n.ReactDebugCurrentFrame,qr=null,ts=!1;function po(){{if(qr===null)return null;var a=qr._debugOwner;if(a!==null&&typeof a<"u")return Xn(a)}return null}function ys(){return qr===null?"":wi(qr)}function ga(){Wu.getCurrentStack=null,qr=null,ts=!1}function oa(a){Wu.getCurrentStack=a===null?null:ys,qr=a,ts=!1}function Ds(){return qr}function _i(a){ts=a}function Kr(a){return""+a}function ii(a){switch(typeof a){case"boolean":case"number":case"string":case"undefined":return a;case"object":return Ln(a),a;default:return""}}var yf={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0};function Ps(a,o){yf[o.type]||o.onChange||o.onInput||o.readOnly||o.disabled||o.value==null||l("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`."),o.onChange||o.readOnly||o.disabled||o.checked==null||l("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")}function Ss(a){var o=a.type,h=a.nodeName;return h&&h.toLowerCase()==="input"&&(o==="checkbox"||o==="radio")}function vu(a){return a._valueTracker}function Sr(a){a._valueTracker=null}function Br(a){var o="";return a&&(Ss(a)?o=a.checked?"true":"false":o=a.value),o}function Yu(a){var o=Ss(a)?"checked":"value",h=Object.getOwnPropertyDescriptor(a.constructor.prototype,o);Ln(a[o]);var v=""+a[o];if(!(a.hasOwnProperty(o)||typeof h>"u"||typeof h.get!="function"||typeof h.set!="function")){var x=h.get,A=h.set;Object.defineProperty(a,o,{configurable:!0,get:function(){return x.call(this)},set:function(U){Ln(U),v=""+U,A.call(this,U)}}),Object.defineProperty(a,o,{enumerable:h.enumerable});var P={getValue:function(){return v},setValue:function(U){Ln(U),v=""+U},stopTracking:function(){Sr(a),delete a[o]}};return P}}function mo(a){vu(a)||(a._valueTracker=Yu(a))}function $(a){if(!a)return!1;var o=vu(a);if(!o)return!0;var h=o.getValue(),v=Br(a);return v!==h?(o.setValue(v),!0):!1}function X(a){if(a=a||(typeof document<"u"?document:void 0),typeof a>"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var se=!1,qe=!1,Kt=!1,yn=!1;function Jt(a){var o=a.type==="checkbox"||a.type==="radio";return o?a.checked!=null:a.value!=null}function k(a,o){var h=a,v=o.checked,x=Zn({},o,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:v??h._wrapperState.initialChecked});return x}function j(a,o){Ps("input",o),o.checked!==void 0&&o.defaultChecked!==void 0&&!qe&&(l("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components",po()||"A component",o.type),qe=!0),o.value!==void 0&&o.defaultValue!==void 0&&!se&&(l("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components",po()||"A component",o.type),se=!0);var h=a,v=o.defaultValue==null?"":o.defaultValue;h._wrapperState={initialChecked:o.checked!=null?o.checked:o.defaultChecked,initialValue:ii(o.value!=null?o.value:v),controlled:Jt(o)}}function ae(a,o){var h=a,v=o.checked;v!=null&&Mo(h,"checked",v,!1)}function ce(a,o){var h=a;{var v=Jt(o);!h._wrapperState.controlled&&v&&!yn&&(l("A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components"),yn=!0),h._wrapperState.controlled&&!v&&!Kt&&(l("A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components"),Kt=!0)}ae(a,o);var x=ii(o.value),A=o.type;if(x!=null)A==="number"?(x===0&&h.value===""||h.value!=x)&&(h.value=Kr(x)):h.value!==Kr(x)&&(h.value=Kr(x));else if(A==="submit"||A==="reset"){h.removeAttribute("value");return}o.hasOwnProperty("value")?Tt(h,o.type,x):o.hasOwnProperty("defaultValue")&&Tt(h,o.type,ii(o.defaultValue)),o.checked==null&&o.defaultChecked!=null&&(h.defaultChecked=!!o.defaultChecked)}function Ne(a,o,h){var v=a;if(o.hasOwnProperty("value")||o.hasOwnProperty("defaultValue")){var x=o.type,A=x==="submit"||x==="reset";if(A&&(o.value===void 0||o.value===null))return;var P=Kr(v._wrapperState.initialValue);h||P!==v.value&&(v.value=P),v.defaultValue=P}var U=v.name;U!==""&&(v.name=""),v.defaultChecked=!v.defaultChecked,v.defaultChecked=!!v._wrapperState.initialChecked,U!==""&&(v.name=U)}function mt(a,o){var h=a;ce(h,o),Ze(h,o)}function Ze(a,o){var h=o.name;if(o.type==="radio"&&h!=null){for(var v=a;v.parentNode;)v=v.parentNode;un(h,"name");for(var x=v.querySelectorAll("input[name="+JSON.stringify(""+h)+'][type="radio"]'),A=0;A.")))}):o.dangerouslySetInnerHTML!=null&&(Hn||(Hn=!0,l("Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected.")))),o.selected!=null&&!Xt&&(l("Use the `defaultValue` or `value` props on must be a scalar value if `multiple` is false.%s",h,ns())}}}}function Ur(a,o,h,v){var x=a.options;if(o){for(var A=h,P={},U=0;U.");var v=Zn({},o,{value:void 0,defaultValue:void 0,children:Kr(h._wrapperState.initialValue)});return v}function Kb(a,o){var h=a;Ps("textarea",o),o.value!==void 0&&o.defaultValue!==void 0&&!ZS&&(l("%s contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://reactjs.org/link/controlled-components",po()||"A component"),ZS=!0);var v=o.value;if(v==null){var x=o.children,A=o.defaultValue;if(x!=null){l("Use the `defaultValue` or `value` props instead of setting children on