diff --git a/README.md b/README.md index 31466b54c..fb2333af7 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,33 @@ -# Final Project +# MANOMANO 🏺 -Replace this readme with your own information about your project. +As my final project I decided to combine my two current hyper fixations: building websites and crafts (in my case ceramics). -Start by briefly describing the assignment in a sentence or two. Keep it short and to the point. +MANOMANO is a marketplace for hobby artists to showcase and sell their handmade items. Instead of public transactions, visitors can express interest and connect directly with the artist to complete purchases privately. The platform offers a more personal alternative space for hobby artists to show and sell their work. To post your items you register and log in, for visitors only there's no need to sign up. -## The problem +## The Problem -Describe how you approached to problem, and what tools and techniques you used to solve it. How did you plan? What technologies did you use? If you had more time, what would be next? +I wanted to build something that felt personal and different from big e-commerce platforms like Etsy. The solution was an interest-based system where buyers reach out directly to artists, keeping the transaction human and private. + +**Planning & approach:** +- Designed the UI in Figma before building +- Built a REST API with Node/Express and MongoDB +- Used Cloudinary for image uploads +- Implemented authentication with bcrypt and access tokens +- Managed global auth state with Zustand + +**Future adds** +- Email notifications when a new interest is received +- Ability to reply to messages directly in the app +- To be able to save an object as a favorite + +## Tech Stack + +- **Frontend:** React, Styled Components, Zustand, React Router +- **Backend:** Node.js, Express, MongoDB, Mongoose +- **Other:** Cloudinary (image uploads), bcrypt (auth), Render (backend hosting), Netlify (frontend hosting) ## View it live -Every project should be deployed somewhere. Be sure to include the link to the deployed project so that the viewer can click around and see what it's all about. \ No newline at end of file +- 🌐 Frontend: https://manoamano.netlify.app +- 🔧 Backend: https://manomano-backend.onrender.com + diff --git a/backend/config/cloudinary.js b/backend/config/cloudinary.js new file mode 100644 index 000000000..6a729a4c2 --- /dev/null +++ b/backend/config/cloudinary.js @@ -0,0 +1,25 @@ +import cloudinaryFramework from "cloudinary"; +import multer from "multer"; +import { CloudinaryStorage } from "multer-storage-cloudinary"; +import dotenv from "dotenv"; +dotenv.config(); + +const cloudinary = cloudinaryFramework.v2; +cloudinary.config({ + cloud_name: process.env.cloud_name, + api_key: process.env.api_key, + api_secret: process.env.api_secret +}) + +const storage = new CloudinaryStorage({ + cloudinary, + params: { + folder: 'products', + allowedFormats: ['jpg', 'png'], + transformation: [{ width: 500, height: 500, crop: 'limit' }], + }, +}) +const parser = multer({ storage }) + + +export { parser }; diff --git a/backend/models/Interest.js b/backend/models/Interest.js new file mode 100644 index 000000000..1806f8dfb --- /dev/null +++ b/backend/models/Interest.js @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; + +const interestSchema = new mongoose.Schema({ + productId: { type: mongoose.Schema.Types.ObjectId, ref: 'Product', required: true }, + name: { type: String, required: true }, + email: { type: String, required: true }, + phone: { type: String }, + message: { type: String, required: true }, + createdAt: { type: Date, default: Date.now }, + read: { type: Boolean, default: false } +}); + +export const Interest = mongoose.model('Interest', interestSchema); \ No newline at end of file diff --git a/backend/models/Product.js b/backend/models/Product.js new file mode 100644 index 000000000..24526217b --- /dev/null +++ b/backend/models/Product.js @@ -0,0 +1,48 @@ +import mongoose from "mongoose"; + +const ProductSchema = new mongoose.Schema({ + title: { + type: String, + required: true, + trim: true + }, + image: { + type: String, + required: true + }, + category: { + type: String, + required: true, + enum: ['Ceramics', 'Textile', 'Jewelry', 'Art', 'Other'] + }, + + color: { + type: String, + enum: ['','White', 'Black', 'Brown', 'Red', 'Blue', 'Green', 'Yellow', 'Pink', 'Purple', 'Orange', 'Grey', 'Multicolor'], + default: '' +}, + + forSale: { + type: Boolean, + default: false + }, + price: { + type: Number, + required: function() { + return this.forSale === true; + } + }, + creator: { + type: mongoose.Schema.Types.ObjectId, + ref: 'User', + required: true + }, + likes: [{ + type: mongoose.Schema.Types.ObjectId, + ref: 'User' + }] +}, { + timestamps: true +}); + +export default mongoose.model('Product', ProductSchema); \ No newline at end of file diff --git a/backend/models/User.js b/backend/models/User.js new file mode 100644 index 000000000..2d07b6d64 --- /dev/null +++ b/backend/models/User.js @@ -0,0 +1,41 @@ +import mongoose from "mongoose"; +import crypto from "crypto"; + + +const UserSchema = new mongoose.Schema ({ + name: { + type: String, + required: true, + }, + email: { + type: String, + required: true, + unique: true, + lowercase: true, + }, + password: { + type: String, + required: true, + minlength: 6 + }, + bio: { + type: String, + default: "" + }, + profileImage: { + type: String, + default: "" + }, + + headerImage: { + type: String, + default: "" +}, + + accessToken: { + type: String, + default: () => crypto.randomBytes(128).toString("hex") + } +}); + +export default mongoose.model("User", UserSchema); \ No newline at end of file diff --git a/backend/package.json b/backend/package.json index 08f29f244..6d6c2eacb 100644 --- a/backend/package.json +++ b/backend/package.json @@ -12,9 +12,17 @@ "@babel/core": "^7.17.9", "@babel/node": "^7.16.8", "@babel/preset-env": "^7.16.11", - "cors": "^2.8.5", - "express": "^4.17.3", - "mongoose": "^8.4.0", - "nodemon": "^3.0.1" + "bcrypt": "^6.0.0", + "cloudinary": "^1.41.3", + "cookie-parser": "^1.4.7", + "cors": "^2.8.6", + "dotenv": "^17.3.1", + "express": "^4.22.1", + "jsonwebtoken": "^9.0.3", + "mongoose": "^8.23.0", + "multer": "^2.0.2", + "multer-storage-cloudinary": "^4.0.0", + "nodemailer": "^8.0.1", + "nodemon": "^3.1.11" } -} \ No newline at end of file +} diff --git a/backend/routes/Auth.js b/backend/routes/Auth.js new file mode 100644 index 000000000..779c317ad --- /dev/null +++ b/backend/routes/Auth.js @@ -0,0 +1,136 @@ +import express from "express"; +import bcrypt from "bcrypt"; +import User from "../models/User.js"; +import { parser } from '../config/cloudinary.js'; + +// handles register user and log in user +const router = express.Router(); + +//*** routes *** + +// route: register new user +router.post('/register', async (req, res) =>{ + try { + const {name, email, password } = req.body; + +// check if user already exists +const existingUser = await User.findOne({ email: email.toLowerCase() }); +if (existingUser) { + return res.status(400).json({ + success: false, + message: "This email address is already connected to an account" + }); +} + +// hash password +const salt = bcrypt.genSaltSync(); +const user = new User({ + name, + email: email.toLowerCase(), + password: bcrypt.hashSync(password, salt) +}); + +//save user +await user.save(); + +//response +res.status(201).json ({ + success: true, + message: "User created!", + response: { + userId: user._id, + name: user.name, + email: user.email, + accessToken: user.accessToken + } +}); + + } catch (error) { + console.log('Register error:', error); + res.status(500).json({ + success: false, + message: "Could not create user", + response: error + }); +} +}); + + +// route: log in user +router.post("/login", async (req, res) => { + try { + const { email, password } = req.body; + + const user = await User.findOne ({ email: email.toLowerCase () }); + + if (user && bcrypt.compareSync(password, user.password)) { + res.status(200).json({ + success: true, + message: "Login successful", + response: { + userId: user._id, + name: user.name, + email: user.email, + accessToken: user.accessToken + } + }); + } else { + res.status(401).json({ + success: false, + message: 'Invalid email or password' + }); + } + + } catch (error) { + res.status(500).json({ + success: false, + message: 'Something went wrong', + response: error + }); + } +}); + +// identifies who is logged in "hi, username " +router.get('/me', async (req, res) => { + try { + const user = await User.findOne({ accessToken: req.headers.authorization }); + if (!user) return res.status(401).json({ success: false, message: 'Unauthorized' }); + res.status(200).json({ success: true, response: { name: user.name, email: user.email, bio: user.bio, profileImage: user.profileImage, headerImage: user.headerImage } }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + +router.put('/me', parser.fields([{ name: 'profileImage', maxCount: 1 }, { name: 'headerImage', maxCount: 1 }]), async (req, res) => { + try { + const user = await User.findOne({ accessToken: req.headers.authorization }); + if (!user) return res.status(401).json({ success: false, message: 'Unauthorized' }); + + const { name, bio } = req.body; + if (name) user.name = name; + if (bio) user.bio = bio; + if (req.file) user.profileImage = req.file.path; + if (req.files && req.files.headerImage) user.headerImage = req.files.headerImage[0].path; + + + await user.save(); + res.status(200).json({ success: true, response: { name: user.name, bio: user.bio, profileImage: user.profileImage } }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + +router.get('/user/:userId', async (req, res) => { + try { + const user = await User.findById(req.params.userId).select('name bio profileImage headerImage'); + if (!user) return res.status(404).json({ success: false, message: 'User not found' }); + res.status(200).json({ success: true, response: user }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + + + + +export default router; \ No newline at end of file diff --git a/backend/routes/Interest.js b/backend/routes/Interest.js new file mode 100644 index 000000000..7956a1f71 --- /dev/null +++ b/backend/routes/Interest.js @@ -0,0 +1,66 @@ +import express from 'express'; +import mongoose from 'mongoose'; +import { Interest } from '../models/Interest.js'; + +const router = express.Router(); + +router.post('/', async (req, res) => { + try { + const { productId, name, email, phone, message } = req.body; + + const interest = new Interest({ productId, name, email, phone, message }); + await interest.save(); + + res.status(201).json({ message: 'Interest saved successfully' }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +router.get('/my-interests/:userId', async (req, res) => { + try { + const { userId } = req.params; + + //find product by the artist + const products = await mongoose.model('Product').find({ creator: userId }); + const productIds = products.map(p => p._id); + + // find all interest of the product + const interests = await Interest.find({ productId: { $in: productIds } }) + .populate('productId', 'title image'); + + res.status(200).json({ success: true, response: interests }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + +router.get('/unread-count/:userId', async (req, res) => { + try { + const { userId } = req.params; + const products = await mongoose.model('Product').find({ creator: userId }); + const productIds = products.map(p => p._id); + + const count = await Interest.countDocuments({ + productId: { $in: productIds }, + $or: [{ read: false }, { read: { $exists: false } }] +}); + + res.status(200).json({ success: true, count }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + +router.put('/:id/read', async (req, res) => { + try { + await Interest.findByIdAndUpdate(req.params.id, { read: true }); + res.status(200).json({ success: true }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + + + +export default router; \ No newline at end of file diff --git a/backend/routes/Products.js b/backend/routes/Products.js new file mode 100644 index 000000000..91622f479 --- /dev/null +++ b/backend/routes/Products.js @@ -0,0 +1,126 @@ +import express from "express"; +import Product from "../models/Product.js"; +import { parser } from '../config/cloudinary.js'; + +const router = express.Router(); + + + +// *** routes *** + +// route: create new product post +router.post("/",parser.single("image"), async (req, res) => { + try { + const { title, category, forSale, price, creator, color} = req.body; + const imageUrl = req.file.path; + + const product = new Product ({ + title, + image: imageUrl, + category, + forSale, + price, + creator, + color: color || undefined, + }); + + await product.save(); + + res.status(201).json ({ + success: true, + message: "Product post created", + response: product + }); + + } catch (error) { + console.log('ERROR:', error); + res.status(400).json({ + success: false, + message: 'Could not create product', + response: error.message + }); + } +}); + + +// route: get all products +router.get('/', async (req, res) => { + try { + const { userId } = req.query; + const filter = userId ? { creator: userId } : {}; + const products = await Product.find(filter) + .populate('creator', 'name email profileImage') + .sort({ createdAt: -1 }); + + res.status(200).json({ + success: true, + response: products + }); + + } catch (error) { + res.status(500).json({ + success: false, + message: 'Could not fetch products', + response: error + }); + } +}); + +// get single product by ID + +router.get("/:id", async (req,res) => { + try { + const { id } = req.params; + const product = await Product.findById(id) + .populate("creator", "name email profileImage"); +if (!product) { + return res.status(404).json({ + success: false, + message: 'Product not found' + }); + } + + res.status(200).json({ + success: true, + response: product + }); + + } catch (error) { + res.status(500).json({ + success: false, + message: 'Could not fetch product', + response: error + }); + } +}); + +router.delete('/:id', async (req, res) => { + try { + const { id } = req.params; + await Product.findByIdAndDelete(id); + res.status(200).json({ success: true, message: 'Product deleted' }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + +router.put('/:id', parser.single('image'), async (req, res) => { + try { + const { title, category, price, forSale, color } = req.body; + + const updateData = { title, category, price, forSale, color }; + if (req.file) updateData.image = req.file.path; + + const product = await Product.findByIdAndUpdate( + req.params.id, + updateData, + { new: true } + ); + + res.status(200).json({ success: true, response: product }); + } catch (error) { + res.status(500).json({ success: false, message: error.message }); + } +}); + +export default router; \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index 070c87518..78d5c2eef 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,8 +1,12 @@ import express from "express"; import cors from "cors"; import mongoose from "mongoose"; +import dotenv from "dotenv"; +dotenv.config(); -const mongoUrl = process.env.MONGO_URL || "mongodb://localhost/final-project"; + +// MongoDB connection not connected yet! +const mongoUrl = process.env.MONGO_URL || "mongodb://localhost/manomano"; mongoose.connect(mongoUrl); mongoose.Promise = Promise; @@ -12,10 +16,50 @@ const app = express(); app.use(cors()); app.use(express.json()); +//import routes +import authRoutes from "./routes/Auth.js" +import productRoutes from './routes/Products.js'; +import interestRoutes from "./routes/Interest.js"; + + +//use routes +app.use("/api/auth", authRoutes); +app.use('/api/products', productRoutes); +app.use('/api/interests', interestRoutes); + +//documentation for endpoints app.get("/", (req, res) => { - res.send("Hello Technigo!"); + res.json({ + message: "manomano API", + endpoints: [ + { + path: "/api/auth/register", + method: "POST", + description: "Register a new user", + body: { name: "string", email: "string", password: "string" } + }, + { + path: "/api/auth/login", + method: "POST", + description: "Log in (returns accessToken)", + body: { email: "string", password: "string" } + }, + { + path: "/api/products", + method: "GET", + description: "Get all products" + }, + { + path: "/api/products", + method: "POST", + description: "Create a new product", + body: { title: "string", image: "string", category: "string", forSale: "boolean", price: "number", creator: "userId" } + } + ] + }); }); + // Start the server app.listen(port, () => { console.log(`Server running on http://localhost:${port}`); diff --git a/frontend/dist/_redirects b/frontend/dist/_redirects new file mode 100644 index 000000000..5938f3424 --- /dev/null +++ b/frontend/dist/_redirects @@ -0,0 +1,2 @@ +/* /index.html 200 +git \ No newline at end of file diff --git a/frontend/dist/assets/index-CHQPGkZ9.js b/frontend/dist/assets/index-CHQPGkZ9.js new file mode 100644 index 000000000..fda37e57a --- /dev/null +++ b/frontend/dist/assets/index-CHQPGkZ9.js @@ -0,0 +1,872 @@ +(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))u(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&u(h)}).observe(document,{childList:!0,subtree:!0});function s(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function u(c){if(c.ep)return;c.ep=!0;const d=s(c);fetch(c.href,d)}})();function kd(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Zs={exports:{}},go={},qs={exports:{}},se={};/** + * @license React + * react.production.min.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. + */var Mf;function cm(){if(Mf)return se;Mf=1;var r=Symbol.for("react.element"),i=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),h=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),w=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),C=Symbol.iterator;function _(k){return k===null||typeof k!="object"?null:(k=C&&k[C]||k["@@iterator"],typeof k=="function"?k:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},F=Object.assign,$={};function T(k,L,oe){this.props=k,this.context=L,this.refs=$,this.updater=oe||N}T.prototype.isReactComponent={},T.prototype.setState=function(k,L){if(typeof k!="object"&&typeof k!="function"&&k!=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,k,L,"setState")},T.prototype.forceUpdate=function(k){this.updater.enqueueForceUpdate(this,k,"forceUpdate")};function W(){}W.prototype=T.prototype;function b(k,L,oe){this.props=k,this.context=L,this.refs=$,this.updater=oe||N}var M=b.prototype=new W;M.constructor=b,F(M,T.prototype),M.isPureReactComponent=!0;var U=Array.isArray,J=Object.prototype.hasOwnProperty,X={current:null},B={key:!0,ref:!0,__self:!0,__source:!0};function G(k,L,oe){var le,ce={},ue=null,ye=null;if(L!=null)for(le in L.ref!==void 0&&(ye=L.ref),L.key!==void 0&&(ue=""+L.key),L)J.call(L,le)&&!B.hasOwnProperty(le)&&(ce[le]=L[le]);var fe=arguments.length-2;if(fe===1)ce.children=oe;else if(1>>1,L=H[k];if(0>>1;kc(ce,V))uec(ye,ce)?(H[k]=ye,H[ue]=V,k=ue):(H[k]=ce,H[le]=V,k=le);else if(uec(ye,V))H[k]=ye,H[ue]=V,k=ue;else break e}}return ee}function c(H,ee){var V=H.sortIndex-ee.sortIndex;return V!==0?V:H.id-ee.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var h=Date,m=h.now();r.unstable_now=function(){return h.now()-m}}var y=[],w=[],S=1,C=null,_=3,N=!1,F=!1,$=!1,T=typeof setTimeout=="function"?setTimeout:null,W=typeof clearTimeout=="function"?clearTimeout:null,b=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function M(H){for(var ee=s(w);ee!==null;){if(ee.callback===null)u(w);else if(ee.startTime<=H)u(w),ee.sortIndex=ee.expirationTime,i(y,ee);else break;ee=s(w)}}function U(H){if($=!1,M(H),!F)if(s(y)!==null)F=!0,Ye(J);else{var ee=s(w);ee!==null&&we(U,ee.startTime-H)}}function J(H,ee){F=!1,$&&($=!1,W(G),G=-1),N=!0;var V=_;try{for(M(ee),C=s(y);C!==null&&(!(C.expirationTime>ee)||H&&!ae());){var k=C.callback;if(typeof k=="function"){C.callback=null,_=C.priorityLevel;var L=k(C.expirationTime<=ee);ee=r.unstable_now(),typeof L=="function"?C.callback=L:C===s(y)&&u(y),M(ee)}else u(y);C=s(y)}if(C!==null)var oe=!0;else{var le=s(w);le!==null&&we(U,le.startTime-ee),oe=!1}return oe}finally{C=null,_=V,N=!1}}var X=!1,B=null,G=-1,de=5,xe=-1;function ae(){return!(r.unstable_now()-xeH||125k?(H.sortIndex=V,i(w,H),s(y)===null&&H===s(w)&&($?(W(G),G=-1):$=!0,we(U,V-k))):(H.sortIndex=L,i(y,H),F||N||(F=!0,Ye(J))),H},r.unstable_shouldYield=ae,r.unstable_wrapCallback=function(H){var ee=_;return function(){var V=_;_=ee;try{return H.apply(this,arguments)}finally{_=V}}}})(na)),na}var Hf;function hm(){return Hf||(Hf=1,ta.exports=pm()),ta.exports}/** + * @license React + * react-dom.production.min.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. + */var Vf;function mm(){if(Vf)return at;Vf=1;var r=Ia(),i=hm();function s(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),y=Object.prototype.hasOwnProperty,w=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,S={},C={};function _(e){return y.call(C,e)?!0:y.call(S,e)?!1:w.test(e)?C[e]=!0:(S[e]=!0,!1)}function N(e,t,n,o){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function F(e,t,n,o){if(t===null||typeof t>"u"||N(e,t,n,o))return!0;if(o)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function $(e,t,n,o,l,a,f){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=f}var T={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){T[e]=new $(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];T[t]=new $(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){T[e]=new $(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){T[e]=new $(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){T[e]=new $(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){T[e]=new $(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){T[e]=new $(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){T[e]=new $(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){T[e]=new $(e,5,!1,e.toLowerCase(),null,!1,!1)});var W=/[\-:]([a-z])/g;function b(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(W,b);T[t]=new $(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(W,b);T[t]=new $(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(W,b);T[t]=new $(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){T[e]=new $(e,1,!1,e.toLowerCase(),null,!1,!1)}),T.xlinkHref=new $("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){T[e]=new $(e,1,!1,e.toLowerCase(),null,!0,!0)});function M(e,t,n,o){var l=T.hasOwnProperty(t)?T[t]:null;(l!==null?l.type!==0:o||!(2g||l[f]!==a[g]){var v=` +`+l[f].replace(" at new "," at ");return e.displayName&&v.includes("")&&(v=v.replace("",e.displayName)),v}while(1<=f&&0<=g);break}}}finally{oe=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?L(e):""}function ce(e){switch(e.tag){case 5:return L(e.type);case 16:return L("Lazy");case 13:return L("Suspense");case 19:return L("SuspenseList");case 0:case 2:case 15:return e=le(e.type,!1),e;case 11:return e=le(e.type.render,!1),e;case 1:return e=le(e.type,!0),e;default:return""}}function ue(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 B:return"Fragment";case X:return"Portal";case de:return"Profiler";case G:return"StrictMode";case ke:return"Suspense";case Ge:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ae:return(e.displayName||"Context")+".Consumer";case xe:return(e._context.displayName||"Context")+".Provider";case Ie:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case qe:return t=e.displayName||null,t!==null?t:ue(e.type)||"Memo";case Ye:t=e._payload,e=e._init;try{return ue(e(t))}catch{}}return null}function ye(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 ue(t);case 8:return t===G?"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 fe(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function me(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ue(e){var t=me(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(f){o=""+f,a.call(this,f)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(f){o=""+f},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Dt(e){e._valueTracker||(e._valueTracker=Ue(e))}function ht(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=me(e)?e.checked?"true":"false":e.value),e=o,e!==n?(t.setValue(e),!0):!1}function on(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function ln(e,t){var n=t.checked;return V({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Qt(e,t){var n=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;n=fe(t.value!=null?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Qa(e,t){t=t.checked,t!=null&&M(e,"checked",t,!1)}function ii(e,t){Qa(e,t);var n=fe(t.value),o=t.type;if(n!=null)o==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?si(e,t.type,n):t.hasOwnProperty("defaultValue")&&si(e,t.type,fe(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function ba(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function si(e,t,n){(t!=="number"||on(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Ir=Array.isArray;function Xn(e,t,n,o){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=$o.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Lr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Nr={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},hp=["Webkit","ms","Moz","O"];Object.keys(Nr).forEach(function(e){hp.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Nr[t]=Nr[e]})});function Za(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Nr.hasOwnProperty(e)&&Nr[e]?(""+t).trim():t+"px"}function qa(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var o=n.indexOf("--")===0,l=Za(n,t[n],o);n==="float"&&(n="cssFloat"),o?e.setProperty(n,l):e[n]=l}}var mp=V({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 ci(e,t){if(t){if(mp[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(s(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(s(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(s(61))}if(t.style!=null&&typeof t.style!="object")throw Error(s(62))}}function fi(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 di=null;function pi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var hi=null,Jn=null,Zn=null;function eu(e){if(e=eo(e)){if(typeof hi!="function")throw Error(s(280));var t=e.stateNode;t&&(t=Zo(t),hi(e.stateNode,e.type,t))}}function tu(e){Jn?Zn?Zn.push(e):Zn=[e]:Jn=e}function nu(){if(Jn){var e=Jn,t=Zn;if(Zn=Jn=null,eu(e),t)for(e=0;e>>=0,e===0?32:31-(Pp(e)/_p|0)|0}var To=64,Oo=4194304;function Dr(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 Do(e,t){var n=e.pendingLanes;if(n===0)return 0;var o=0,l=e.suspendedLanes,a=e.pingedLanes,f=n&268435455;if(f!==0){var g=f&~l;g!==0?o=Dr(g):(a&=f,a!==0&&(o=Dr(a)))}else f=n&~l,f!==0?o=Dr(f):a!==0&&(o=Dr(a));if(o===0)return 0;if(t!==0&&t!==o&&(t&l)===0&&(l=o&-o,a=t&-t,l>=a||l===16&&(a&4194240)!==0))return t;if((o&4)!==0&&(o|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0n;n++)t.push(e);return t}function Fr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ct(t),e[t]=n}function Lp(e,t){var n=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 o=e.eventTimes;for(e=e.expirationTimes;0=Qr),Iu=" ",Lu=!1;function Nu(e,t){switch(e){case"keyup":return lh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var tr=!1;function sh(e,t){switch(e){case"compositionend":return zu(t);case"keypress":return t.which!==32?null:(Lu=!0,Iu);case"textInput":return e=t.data,e===Iu&&Lu?null:e;default:return null}}function ah(e,t){if(tr)return e==="compositionend"||!Ni&&Nu(e,t)?(e=Eu(),Bo=Pi=fn=null,tr=!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:n,offset:t-e};e=o}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Uu(n)}}function Wu(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Wu(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Hu(){for(var e=window,t=on();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=on(e.document)}return t}function Oi(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 yh(e){var t=Hu(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Wu(n.ownerDocument.documentElement,n)){if(o!==null&&Oi(n)){if(t=o.start,e=o.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,a=Math.min(o.start,l);o=o.end===void 0?a:Math.min(o.end,l),!e.extend&&a>o&&(l=o,o=a,a=l),l=Bu(n,a);var f=Bu(n,o);l&&f&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==f.node||e.focusOffset!==f.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),a>o?(e.addRange(t),e.extend(f.node,f.offset)):(t.setEnd(f.node,f.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,nr=null,Di=null,Kr=null,Fi=!1;function Vu(e,t,n){var o=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Fi||nr==null||nr!==on(o)||(o=nr,"selectionStart"in o&&Oi(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Kr&&Yr(Kr,o)||(Kr=o,o=Ko(Di,"onSelect"),0sr||(e.current=Ki[sr],Ki[sr]=null,sr--)}function Se(e,t){sr++,Ki[sr]=e.current,e.current=t}var mn={},Ke=hn(mn),rt=hn(!1),Nn=mn;function ar(e,t){var n=e.type.contextTypes;if(!n)return mn;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var l={},a;for(a in n)l[a]=t[a];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function ot(e){return e=e.childContextTypes,e!=null}function qo(){Ee(rt),Ee(Ke)}function lc(e,t,n){if(Ke.current!==mn)throw Error(s(168));Se(Ke,t),Se(rt,n)}function ic(e,t,n){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return n;o=o.getChildContext();for(var l in o)if(!(l in t))throw Error(s(108,ye(e)||"Unknown",l));return V({},n,o)}function el(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||mn,Nn=Ke.current,Se(Ke,e),Se(rt,rt.current),!0}function sc(e,t,n){var o=e.stateNode;if(!o)throw Error(s(169));n?(e=ic(e,t,Nn),o.__reactInternalMemoizedMergedChildContext=e,Ee(rt),Ee(Ke),Se(Ke,e)):Ee(rt),Se(rt,n)}var Gt=null,tl=!1,Xi=!1;function ac(e){Gt===null?Gt=[e]:Gt.push(e)}function $h(e){tl=!0,ac(e)}function gn(){if(!Xi&&Gt!==null){Xi=!0;var e=0,t=ve;try{var n=Gt;for(ve=1;e>=f,l-=f,Yt=1<<32-Ct(t)+l|n<re?(He=ne,ne=null):He=ne.sibling;var he=z(E,ne,P[re],A);if(he===null){ne===null&&(ne=He);break}e&&ne&&he.alternate===null&&t(E,ne),x=a(he,x,re),te===null?q=he:te.sibling=he,te=he,ne=He}if(re===P.length)return n(E,ne),Pe&&Tn(E,re),q;if(ne===null){for(;rere?(He=ne,ne=null):He=ne.sibling;var jn=z(E,ne,he.value,A);if(jn===null){ne===null&&(ne=He);break}e&&ne&&jn.alternate===null&&t(E,ne),x=a(jn,x,re),te===null?q=jn:te.sibling=jn,te=jn,ne=He}if(he.done)return n(E,ne),Pe&&Tn(E,re),q;if(ne===null){for(;!he.done;re++,he=P.next())he=D(E,he.value,A),he!==null&&(x=a(he,x,re),te===null?q=he:te.sibling=he,te=he);return Pe&&Tn(E,re),q}for(ne=o(E,ne);!he.done;re++,he=P.next())he=Q(ne,E,re,he.value,A),he!==null&&(e&&he.alternate!==null&&ne.delete(he.key===null?re:he.key),x=a(he,x,re),te===null?q=he:te.sibling=he,te=he);return e&&ne.forEach(function(um){return t(E,um)}),Pe&&Tn(E,re),q}function Te(E,x,P,A){if(typeof P=="object"&&P!==null&&P.type===B&&P.key===null&&(P=P.props.children),typeof P=="object"&&P!==null){switch(P.$$typeof){case J:e:{for(var q=P.key,te=x;te!==null;){if(te.key===q){if(q=P.type,q===B){if(te.tag===7){n(E,te.sibling),x=l(te,P.props.children),x.return=E,E=x;break e}}else if(te.elementType===q||typeof q=="object"&&q!==null&&q.$$typeof===Ye&&hc(q)===te.type){n(E,te.sibling),x=l(te,P.props),x.ref=to(E,te,P),x.return=E,E=x;break e}n(E,te);break}else t(E,te);te=te.sibling}P.type===B?(x=Wn(P.props.children,E.mode,A,P.key),x.return=E,E=x):(A=$l(P.type,P.key,P.props,null,E.mode,A),A.ref=to(E,x,P),A.return=E,E=A)}return f(E);case X:e:{for(te=P.key;x!==null;){if(x.key===te)if(x.tag===4&&x.stateNode.containerInfo===P.containerInfo&&x.stateNode.implementation===P.implementation){n(E,x.sibling),x=l(x,P.children||[]),x.return=E,E=x;break e}else{n(E,x);break}else t(E,x);x=x.sibling}x=Gs(P,E.mode,A),x.return=E,E=x}return f(E);case Ye:return te=P._init,Te(E,x,te(P._payload),A)}if(Ir(P))return K(E,x,P,A);if(ee(P))return Z(E,x,P,A);ll(E,P)}return typeof P=="string"&&P!==""||typeof P=="number"?(P=""+P,x!==null&&x.tag===6?(n(E,x.sibling),x=l(x,P),x.return=E,E=x):(n(E,x),x=bs(P,E.mode,A),x.return=E,E=x),f(E)):n(E,x)}return Te}var dr=mc(!0),gc=mc(!1),il=hn(null),sl=null,pr=null,ns=null;function rs(){ns=pr=sl=null}function os(e){var t=il.current;Ee(il),e._currentValue=t}function ls(e,t,n){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===n)break;e=e.return}}function hr(e,t){sl=e,ns=pr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(lt=!0),e.firstContext=null)}function yt(e){var t=e._currentValue;if(ns!==e)if(e={context:e,memoizedValue:t,next:null},pr===null){if(sl===null)throw Error(s(308));pr=e,sl.dependencies={lanes:0,firstContext:e}}else pr=pr.next=e;return t}var On=null;function is(e){On===null?On=[e]:On.push(e)}function yc(e,t,n,o){var l=t.interleaved;return l===null?(n.next=n,is(t)):(n.next=l.next,l.next=n),t.interleaved=n,Xt(e,o)}function Xt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var yn=!1;function ss(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function vc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Jt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function vn(e,t,n){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(pe&2)!==0){var l=o.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),o.pending=t,Xt(e,n)}return l=o.interleaved,l===null?(t.next=t,is(o)):(t.next=l.next,l.next=t),o.interleaved=t,Xt(e,n)}function al(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Si(e,n)}}function xc(e,t){var n=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,n===o)){var l=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var f={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};a===null?l=a=f:a=a.next=f,n=n.next}while(n!==null);a===null?l=a=t:a=a.next=t}else l=a=t;n={baseState:o.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:o.shared,effects:o.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ul(e,t,n,o){var l=e.updateQueue;yn=!1;var a=l.firstBaseUpdate,f=l.lastBaseUpdate,g=l.shared.pending;if(g!==null){l.shared.pending=null;var v=g,R=v.next;v.next=null,f===null?a=R:f.next=R,f=v;var O=e.alternate;O!==null&&(O=O.updateQueue,g=O.lastBaseUpdate,g!==f&&(g===null?O.firstBaseUpdate=R:g.next=R,O.lastBaseUpdate=v))}if(a!==null){var D=l.baseState;f=0,O=R=v=null,g=a;do{var z=g.lane,Q=g.eventTime;if((o&z)===z){O!==null&&(O=O.next={eventTime:Q,lane:0,tag:g.tag,payload:g.payload,callback:g.callback,next:null});e:{var K=e,Z=g;switch(z=t,Q=n,Z.tag){case 1:if(K=Z.payload,typeof K=="function"){D=K.call(Q,D,z);break e}D=K;break e;case 3:K.flags=K.flags&-65537|128;case 0:if(K=Z.payload,z=typeof K=="function"?K.call(Q,D,z):K,z==null)break e;D=V({},D,z);break e;case 2:yn=!0}}g.callback!==null&&g.lane!==0&&(e.flags|=64,z=l.effects,z===null?l.effects=[g]:z.push(g))}else Q={eventTime:Q,lane:z,tag:g.tag,payload:g.payload,callback:g.callback,next:null},O===null?(R=O=Q,v=D):O=O.next=Q,f|=z;if(g=g.next,g===null){if(g=l.shared.pending,g===null)break;z=g,g=z.next,z.next=null,l.lastBaseUpdate=z,l.shared.pending=null}}while(!0);if(O===null&&(v=D),l.baseState=v,l.firstBaseUpdate=R,l.lastBaseUpdate=O,t=l.shared.interleaved,t!==null){l=t;do f|=l.lane,l=l.next;while(l!==t)}else a===null&&(l.shared.lanes=0);Mn|=f,e.lanes=f,e.memoizedState=D}}function wc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var o=ds.transition;ds.transition={};try{e(!1),t()}finally{ve=n,ds.transition=o}}function Ac(){return vt().memoizedState}function zh(e,t,n){var o=kn(e);if(n={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null},Uc(e))Bc(t,n);else if(n=yc(e,t,n,o),n!==null){var l=tt();$t(n,e,o,l),Wc(n,t,o)}}function Th(e,t,n){var o=kn(e),l={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null};if(Uc(e))Bc(t,l);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var f=t.lastRenderedState,g=a(f,n);if(l.hasEagerState=!0,l.eagerState=g,Et(g,f)){var v=t.interleaved;v===null?(l.next=l,is(t)):(l.next=v.next,v.next=l),t.interleaved=l;return}}catch{}finally{}n=yc(e,t,l,o),n!==null&&(l=tt(),$t(n,e,o,l),Wc(n,t,o))}}function Uc(e){var t=e.alternate;return e===Re||t!==null&&t===Re}function Bc(e,t){lo=dl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Wc(e,t,n){if((n&4194240)!==0){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Si(e,n)}}var ml={readContext:yt,useCallback:Xe,useContext:Xe,useEffect:Xe,useImperativeHandle:Xe,useInsertionEffect:Xe,useLayoutEffect:Xe,useMemo:Xe,useReducer:Xe,useRef:Xe,useState:Xe,useDebugValue:Xe,useDeferredValue:Xe,useTransition:Xe,useMutableSource:Xe,useSyncExternalStore:Xe,useId:Xe,unstable_isNewReconciler:!1},Oh={readContext:yt,useCallback:function(e,t){return Ut().memoizedState=[e,t===void 0?null:t],e},useContext:yt,useEffect:Lc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,pl(4194308,4,Tc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return pl(4194308,4,e,t)},useInsertionEffect:function(e,t){return pl(4,2,e,t)},useMemo:function(e,t){var n=Ut();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=Ut();return t=n!==void 0?n(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=zh.bind(null,Re,e),[o.memoizedState,e]},useRef:function(e){var t=Ut();return e={current:e},t.memoizedState=e},useState:$c,useDebugValue:xs,useDeferredValue:function(e){return Ut().memoizedState=e},useTransition:function(){var e=$c(!1),t=e[0];return e=Nh.bind(null,e[1]),Ut().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var o=Re,l=Ut();if(Pe){if(n===void 0)throw Error(s(407));n=n()}else{if(n=t(),We===null)throw Error(s(349));(Fn&30)!==0||Ec(o,t,n)}l.memoizedState=n;var a={value:n,getSnapshot:t};return l.queue=a,Lc(Pc.bind(null,o,a,e),[e]),o.flags|=2048,ao(9,jc.bind(null,o,a,n,t),void 0,null),n},useId:function(){var e=Ut(),t=We.identifierPrefix;if(Pe){var n=Kt,o=Yt;n=(o&~(1<<32-Ct(o)-1)).toString(32)+n,t=":"+t+"R"+n,n=io++,0<\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=f.createElement(n,{is:o.is}):(e=f.createElement(n),n==="select"&&(f=e,o.multiple?f.multiple=!0:o.size&&(f.size=o.size))):e=f.createElementNS(e,n),e[Mt]=t,e[qr]=o,uf(e,t,!1,!1),t.stateNode=e;e:{switch(f=fi(n,o),n){case"dialog":Ce("cancel",e),Ce("close",e),l=o;break;case"iframe":case"object":case"embed":Ce("load",e),l=o;break;case"video":case"audio":for(l=0;lxr&&(t.flags|=128,o=!0,uo(a,!1),t.lanes=4194304)}else{if(!o)if(e=cl(f),e!==null){if(t.flags|=128,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),uo(a,!0),a.tail===null&&a.tailMode==="hidden"&&!f.alternate&&!Pe)return Je(t),null}else 2*ze()-a.renderingStartTime>xr&&n!==1073741824&&(t.flags|=128,o=!0,uo(a,!1),t.lanes=4194304);a.isBackwards?(f.sibling=t.child,t.child=f):(n=a.last,n!==null?n.sibling=f:t.child=f,a.last=f)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=ze(),t.sibling=null,n=_e.current,Se(_e,o?n&1|2:n&1),t):(Je(t),null);case 22:case 23:return Hs(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&(t.mode&1)!==0?(dt&1073741824)!==0&&(Je(t),t.subtreeFlags&6&&(t.flags|=8192)):Je(t),null;case 24:return null;case 25:return null}throw Error(s(156,t.tag))}function Hh(e,t){switch(Zi(t),t.tag){case 1:return ot(t.type)&&qo(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return mr(),Ee(rt),Ee(Ke),fs(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return us(t),null;case 13:if(Ee(_e),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(s(340));fr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Ee(_e),null;case 4:return mr(),null;case 10:return os(t.type._context),null;case 22:case 23:return Hs(),null;case 24:return null;default:return null}}var xl=!1,Ze=!1,Vh=typeof WeakSet=="function"?WeakSet:Set,Y=null;function yr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(o){Le(e,t,o)}else n.current=null}function Ls(e,t,n){try{n()}catch(o){Le(e,t,o)}}var df=!1;function Qh(e,t){if(Hi=Ao,e=Hu(),Oi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var o=n.getSelection&&n.getSelection();if(o&&o.rangeCount!==0){n=o.anchorNode;var l=o.anchorOffset,a=o.focusNode;o=o.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break e}var f=0,g=-1,v=-1,R=0,O=0,D=e,z=null;t:for(;;){for(var Q;D!==n||l!==0&&D.nodeType!==3||(g=f+l),D!==a||o!==0&&D.nodeType!==3||(v=f+o),D.nodeType===3&&(f+=D.nodeValue.length),(Q=D.firstChild)!==null;)z=D,D=Q;for(;;){if(D===e)break t;if(z===n&&++R===l&&(g=f),z===a&&++O===o&&(v=f),(Q=D.nextSibling)!==null)break;D=z,z=D.parentNode}D=Q}n=g===-1||v===-1?null:{start:g,end:v}}else n=null}n=n||{start:0,end:0}}else n=null;for(Vi={focusedElem:e,selectionRange:n},Ao=!1,Y=t;Y!==null;)if(t=Y,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Y=e;else for(;Y!==null;){t=Y;try{var K=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(K!==null){var Z=K.memoizedProps,Te=K.memoizedState,E=t.stateNode,x=E.getSnapshotBeforeUpdate(t.elementType===t.type?Z:Pt(t.type,Z),Te);E.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var P=t.stateNode.containerInfo;P.nodeType===1?P.textContent="":P.nodeType===9&&P.documentElement&&P.removeChild(P.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(s(163))}}catch(A){Le(t,t.return,A)}if(e=t.sibling,e!==null){e.return=t.return,Y=e;break}Y=t.return}return K=df,df=!1,K}function co(e,t,n){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var l=o=o.next;do{if((l.tag&e)===e){var a=l.destroy;l.destroy=void 0,a!==void 0&&Ls(t,n,a)}l=l.next}while(l!==o)}}function wl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var o=n.create;n.destroy=o()}n=n.next}while(n!==t)}}function Ns(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function pf(e){var t=e.alternate;t!==null&&(e.alternate=null,pf(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Mt],delete t[qr],delete t[Yi],delete t[_h],delete t[Rh])),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 hf(e){return e.tag===5||e.tag===3||e.tag===4}function mf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||hf(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 zs(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Jo));else if(o!==4&&(e=e.child,e!==null))for(zs(e,t,n),e=e.sibling;e!==null;)zs(e,t,n),e=e.sibling}function Ts(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Ts(e,t,n),e=e.sibling;e!==null;)Ts(e,t,n),e=e.sibling}var Qe=null,_t=!1;function xn(e,t,n){for(n=n.child;n!==null;)gf(e,t,n),n=n.sibling}function gf(e,t,n){if(Ft&&typeof Ft.onCommitFiberUnmount=="function")try{Ft.onCommitFiberUnmount(zo,n)}catch{}switch(n.tag){case 5:Ze||yr(n,t);case 6:var o=Qe,l=_t;Qe=null,xn(e,t,n),Qe=o,_t=l,Qe!==null&&(_t?(e=Qe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Qe.removeChild(n.stateNode));break;case 18:Qe!==null&&(_t?(e=Qe,n=n.stateNode,e.nodeType===8?Gi(e.parentNode,n):e.nodeType===1&&Gi(e,n),Wr(e)):Gi(Qe,n.stateNode));break;case 4:o=Qe,l=_t,Qe=n.stateNode.containerInfo,_t=!0,xn(e,t,n),Qe=o,_t=l;break;case 0:case 11:case 14:case 15:if(!Ze&&(o=n.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){l=o=o.next;do{var a=l,f=a.destroy;a=a.tag,f!==void 0&&((a&2)!==0||(a&4)!==0)&&Ls(n,t,f),l=l.next}while(l!==o)}xn(e,t,n);break;case 1:if(!Ze&&(yr(n,t),o=n.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=n.memoizedProps,o.state=n.memoizedState,o.componentWillUnmount()}catch(g){Le(n,t,g)}xn(e,t,n);break;case 21:xn(e,t,n);break;case 22:n.mode&1?(Ze=(o=Ze)||n.memoizedState!==null,xn(e,t,n),Ze=o):xn(e,t,n);break;default:xn(e,t,n)}}function yf(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Vh),t.forEach(function(o){var l=em.bind(null,e,o);n.has(o)||(n.add(o),o.then(l,l))})}}function Rt(e,t){var n=t.deletions;if(n!==null)for(var o=0;ol&&(l=f),o&=~a}if(o=l,o=ze()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Gh(o/1960))-o,10e?16:e,Sn===null)var o=!1;else{if(e=Sn,Sn=null,jl=0,(pe&6)!==0)throw Error(s(331));var l=pe;for(pe|=4,Y=e.current;Y!==null;){var a=Y,f=a.child;if((Y.flags&16)!==0){var g=a.deletions;if(g!==null){for(var v=0;vze()-Fs?Un(e,0):Ds|=n),st(e,t)}function If(e,t){t===0&&((e.mode&1)===0?t=1:(t=Oo,Oo<<=1,(Oo&130023424)===0&&(Oo=4194304)));var n=tt();e=Xt(e,t),e!==null&&(Fr(e,t,n),st(e,n))}function qh(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),If(e,n)}function em(e,t){var n=0;switch(e.tag){case 13:var o=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(s(314))}o!==null&&o.delete(t),If(e,n)}var Lf;Lf=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||rt.current)lt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return lt=!1,Bh(e,t,n);lt=(e.flags&131072)!==0}else lt=!1,Pe&&(t.flags&1048576)!==0&&uc(t,rl,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;vl(e,t),e=t.pendingProps;var l=ar(t,Ke.current);hr(t,n),l=hs(null,t,o,e,l,n);var a=ms();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ot(o)?(a=!0,el(t)):a=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,ss(t),l.updater=gl,t.stateNode=l,l._reactInternals=t,Ss(t,o,e,n),t=js(null,t,o,!0,a,n)):(t.tag=0,Pe&&a&&Ji(t),et(null,t,l,n),t=t.child),t;case 16:o=t.elementType;e:{switch(vl(e,t),e=t.pendingProps,l=o._init,o=l(o._payload),t.type=o,l=t.tag=nm(o),e=Pt(o,e),l){case 0:t=Es(null,t,o,e,n);break e;case 1:t=nf(null,t,o,e,n);break e;case 11:t=Jc(null,t,o,e,n);break e;case 14:t=Zc(null,t,o,Pt(o.type,e),n);break e}throw Error(s(306,o,""))}return t;case 0:return o=t.type,l=t.pendingProps,l=t.elementType===o?l:Pt(o,l),Es(e,t,o,l,n);case 1:return o=t.type,l=t.pendingProps,l=t.elementType===o?l:Pt(o,l),nf(e,t,o,l,n);case 3:e:{if(rf(t),e===null)throw Error(s(387));o=t.pendingProps,a=t.memoizedState,l=a.element,vc(e,t),ul(t,o,null,n);var f=t.memoizedState;if(o=f.element,a.isDehydrated)if(a={element:o,isDehydrated:!1,cache:f.cache,pendingSuspenseBoundaries:f.pendingSuspenseBoundaries,transitions:f.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){l=gr(Error(s(423)),t),t=of(e,t,o,n,l);break e}else if(o!==l){l=gr(Error(s(424)),t),t=of(e,t,o,n,l);break e}else for(ft=pn(t.stateNode.containerInfo.firstChild),ct=t,Pe=!0,jt=null,n=gc(t,null,o,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(fr(),o===l){t=Zt(e,t,n);break e}et(e,t,o,n)}t=t.child}return t;case 5:return Sc(t),e===null&&es(t),o=t.type,l=t.pendingProps,a=e!==null?e.memoizedProps:null,f=l.children,Qi(o,l)?f=null:a!==null&&Qi(o,a)&&(t.flags|=32),tf(e,t),et(e,t,f,n),t.child;case 6:return e===null&&es(t),null;case 13:return lf(e,t,n);case 4:return as(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=dr(t,null,o,n):et(e,t,o,n),t.child;case 11:return o=t.type,l=t.pendingProps,l=t.elementType===o?l:Pt(o,l),Jc(e,t,o,l,n);case 7:return et(e,t,t.pendingProps,n),t.child;case 8:return et(e,t,t.pendingProps.children,n),t.child;case 12:return et(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,l=t.pendingProps,a=t.memoizedProps,f=l.value,Se(il,o._currentValue),o._currentValue=f,a!==null)if(Et(a.value,f)){if(a.children===l.children&&!rt.current){t=Zt(e,t,n);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var g=a.dependencies;if(g!==null){f=a.child;for(var v=g.firstContext;v!==null;){if(v.context===o){if(a.tag===1){v=Jt(-1,n&-n),v.tag=2;var R=a.updateQueue;if(R!==null){R=R.shared;var O=R.pending;O===null?v.next=v:(v.next=O.next,O.next=v),R.pending=v}}a.lanes|=n,v=a.alternate,v!==null&&(v.lanes|=n),ls(a.return,n,t),g.lanes|=n;break}v=v.next}}else if(a.tag===10)f=a.type===t.type?null:a.child;else if(a.tag===18){if(f=a.return,f===null)throw Error(s(341));f.lanes|=n,g=f.alternate,g!==null&&(g.lanes|=n),ls(f,n,t),f=a.sibling}else f=a.child;if(f!==null)f.return=a;else for(f=a;f!==null;){if(f===t){f=null;break}if(a=f.sibling,a!==null){a.return=f.return,f=a;break}f=f.return}a=f}et(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,o=t.pendingProps.children,hr(t,n),l=yt(l),o=o(l),t.flags|=1,et(e,t,o,n),t.child;case 14:return o=t.type,l=Pt(o,t.pendingProps),l=Pt(o.type,l),Zc(e,t,o,l,n);case 15:return qc(e,t,t.type,t.pendingProps,n);case 17:return o=t.type,l=t.pendingProps,l=t.elementType===o?l:Pt(o,l),vl(e,t),t.tag=1,ot(o)?(e=!0,el(t)):e=!1,hr(t,n),Vc(t,o,l),Ss(t,o,l,n),js(null,t,o,!0,e,n);case 19:return af(e,t,n);case 22:return ef(e,t,n)}throw Error(s(156,t.tag))};function Nf(e,t){return cu(e,t)}function tm(e,t,n,o){this.tag=e,this.key=n,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=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function wt(e,t,n,o){return new tm(e,t,n,o)}function Qs(e){return e=e.prototype,!(!e||!e.isReactComponent)}function nm(e){if(typeof e=="function")return Qs(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ie)return 11;if(e===qe)return 14}return 2}function En(e,t){var n=e.alternate;return n===null?(n=wt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function $l(e,t,n,o,l,a){var f=2;if(o=e,typeof e=="function")Qs(e)&&(f=1);else if(typeof e=="string")f=5;else e:switch(e){case B:return Wn(n.children,l,a,t);case G:f=8,l|=8;break;case de:return e=wt(12,n,t,l|2),e.elementType=de,e.lanes=a,e;case ke:return e=wt(13,n,t,l),e.elementType=ke,e.lanes=a,e;case Ge:return e=wt(19,n,t,l),e.elementType=Ge,e.lanes=a,e;case we:return Il(n,l,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case xe:f=10;break e;case ae:f=9;break e;case Ie:f=11;break e;case qe:f=14;break e;case Ye:f=16,o=null;break e}throw Error(s(130,e==null?e:typeof e,""))}return t=wt(f,n,t,l),t.elementType=e,t.type=o,t.lanes=a,t}function Wn(e,t,n,o){return e=wt(7,e,o,t),e.lanes=n,e}function Il(e,t,n,o){return e=wt(22,e,o,t),e.elementType=we,e.lanes=n,e.stateNode={isHidden:!1},e}function bs(e,t,n){return e=wt(6,e,null,t),e.lanes=n,e}function Gs(e,t,n){return t=wt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function rm(e,t,n,o,l){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=wi(0),this.expirationTimes=wi(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=wi(0),this.identifierPrefix=o,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Ys(e,t,n,o,l,a,f,g,v){return e=new rm(e,t,n,g,v),t===1?(t=1,a===!0&&(t|=8)):t=0,a=wt(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:o,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ss(a),e}function om(e,t,n){var o=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(i){console.error(i)}}return r(),ea.exports=mm(),ea.exports}var bf;function ym(){if(bf)return Fl;bf=1;var r=gm();return Fl.createRoot=r.createRoot,Fl.hydrateRoot=r.hydrateRoot,Fl}var vm=ym();const xm=kd(vm);var Ve=function(){return Ve=Object.assign||function(i){for(var s,u=1,c=arguments.length;u0?Ae(_r,--St):0,Er--,De===10&&(Er=1,ei--),De}function zt(){return De=St2||ko(De)>3?"":" "}function Im(r,i){for(;--i&&zt()&&!(De<48||De>102||De>57&&De<65||De>70&&De<97););return ni(r,Hl()+(i<6&&_n()==32&&zt()==32))}function xa(r){for(;zt();)switch(De){case r:return St;case 34:case 39:r!==34&&r!==39&&xa(De);break;case 40:r===41&&xa(r);break;case 92:zt();break}return St}function Lm(r,i){for(;zt()&&r+De!==57;)if(r+De===84&&_n()===47)break;return"/*"+ni(i,St-1)+"*"+Na(r===47?r:zt())}function Nm(r){for(;!ko(_n());)zt();return ni(r,St)}function zm(r){return Rm(Vl("",null,null,null,[""],r=_m(r),0,[0],r))}function Vl(r,i,s,u,c,d,h,m,y){for(var w=0,S=0,C=h,_=0,N=0,F=0,$=1,T=1,W=1,b=0,M="",U=c,J=d,X=u,B=M;T;)switch(F=b,b=zt()){case 40:if(F!=108&&Ae(B,C-1)==58){Wl(B+=ie(ra(b),"&","&\f"),"&\f",jd(w?m[w-1]:0))!=-1&&(W=-1);break}case 34:case 39:case 91:B+=ra(b);break;case 9:case 10:case 13:case 32:B+=$m(F);break;case 92:B+=Im(Hl()-1,7);continue;case 47:switch(_n()){case 42:case 47:vo(Tm(Lm(zt(),Hl()),i,s,y),y),(ko(F||1)==5||ko(_n()||1)==5)&&Nt(B)&&Gn(B,-1,void 0)!==" "&&(B+=" ");break;default:B+="/"}break;case 123*$:m[w++]=Nt(B)*W;case 125*$:case 59:case 0:switch(b){case 0:case 125:T=0;case 59+S:W==-1&&(B=ie(B,/\f/g,"")),N>0&&(Nt(B)-C||$===0&&F===47)&&vo(N>32?Kf(B+";",u,s,C-1,y):Kf(ie(B," ","")+";",u,s,C-2,y),y);break;case 59:B+=";";default:if(vo(X=Yf(B,i,s,w,S,c,m,M,U=[],J=[],C,d),d),b===123)if(S===0)Vl(B,i,X,X,U,d,C,m,J);else{switch(_){case 99:if(Ae(B,3)===110)break;case 108:if(Ae(B,2)===97)break;default:S=0;case 100:case 109:case 115:}S?Vl(r,X,X,u&&vo(Yf(r,X,X,0,0,c,m,M,c,U=[],C,J),J),c,J,C,m,u?U:J):Vl(B,X,X,X,[""],J,0,m,J)}}w=S=N=0,$=W=1,M=B="",C=h;break;case 58:C=1+Nt(B),N=F;default:if($<1){if(b==123)--$;else if(b==125&&$++==0&&Pm()==125)continue}switch(B+=Na(b),b*$){case 38:W=S>0?1:(B+="\f",-1);break;case 44:m[w++]=(Nt(B)-1)*W,W=1;break;case 64:_n()===45&&(B+=ra(zt())),_=_n(),S=C=Nt(M=B+=Nm(Hl())),b++;break;case 45:F===45&&Nt(B)==2&&($=0)}}return d}function Yf(r,i,s,u,c,d,h,m,y,w,S,C){for(var _=c-1,N=c===0?d:[""],F=_d(N),$=0,T=0,W=0;$0?N[b]+" "+M:ie(M,/&\f/g,N[b])))&&(y[W++]=U);return ti(r,i,s,c===0?ql:m,y,w,S,C)}function Tm(r,i,s,u){return ti(r,i,s,Cd,Na(jm()),Gn(r,2,-2),0,u)}function Kf(r,i,s,u,c){return ti(r,i,s,La,Gn(r,0,u),Gn(r,u+1,-1),u,c)}function $d(r,i,s){switch(Cm(r,i)){case 5103:return ge+"print-"+r+r;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:case 6391:case 5879:case 5623:case 6135:case 4599:return ge+r+r;case 4855:return ge+r.replace("add","source-over").replace("substract","source-out").replace("intersect","source-in").replace("exclude","xor")+r;case 4789:return xo+r+r;case 5349:case 4246:case 4810:case 6968:case 2756:return ge+r+xo+r+je+r+r;case 5936:switch(Ae(r,i+11)){case 114:return ge+r+je+ie(r,/[svh]\w+-[tblr]{2}/,"tb")+r;case 108:return ge+r+je+ie(r,/[svh]\w+-[tblr]{2}/,"tb-rl")+r;case 45:return ge+r+je+ie(r,/[svh]\w+-[tblr]{2}/,"lr")+r}case 6828:case 4268:case 2903:return ge+r+je+r+r;case 6165:return ge+r+je+"flex-"+r+r;case 5187:return ge+r+ie(r,/(\w+).+(:[^]+)/,ge+"box-$1$2"+je+"flex-$1$2")+r;case 5443:return ge+r+je+"flex-item-"+ie(r,/flex-|-self/g,"")+(en(r,/flex-|baseline/)?"":je+"grid-row-"+ie(r,/flex-|-self/g,""))+r;case 4675:return ge+r+je+"flex-line-pack"+ie(r,/align-content|flex-|-self/g,"")+r;case 5548:return ge+r+je+ie(r,"shrink","negative")+r;case 5292:return ge+r+je+ie(r,"basis","preferred-size")+r;case 6060:return ge+"box-"+ie(r,"-grow","")+ge+r+je+ie(r,"grow","positive")+r;case 4554:return ge+ie(r,/([^-])(transform)/g,"$1"+ge+"$2")+r;case 6187:return ie(ie(ie(r,/(zoom-|grab)/,ge+"$1"),/(image-set)/,ge+"$1"),r,"")+r;case 5495:case 3959:return ie(r,/(image-set\([^]*)/,ge+"$1$`$1");case 4968:return ie(ie(r,/(.+:)(flex-)?(.*)/,ge+"box-pack:$3"+je+"flex-pack:$3"),/space-between/,"justify")+ge+r+r;case 4200:if(!en(r,/flex-|baseline/))return je+"grid-column-align"+Gn(r,i)+r;break;case 2592:case 3360:return je+ie(r,"template-","")+r;case 4384:case 3616:return s&&s.some(function(u,c){return i=c,en(u.props,/grid-\w+-end/)})?~Wl(r+(s=s[i].value),"span",0)?r:je+ie(r,"-start","")+r+je+"grid-row-span:"+(~Wl(s,"span",0)?en(s,/\d+/):+en(s,/\d+/)-+en(r,/\d+/))+";":je+ie(r,"-start","")+r;case 4896:case 4128:return s&&s.some(function(u){return en(u.props,/grid-\w+-start/)})?r:je+ie(ie(r,"-end","-span"),"span ","")+r;case 4095:case 3583:case 4068:case 2532:return ie(r,/(.+)-inline(.+)/,ge+"$1$2")+r;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Nt(r)-1-i>6)switch(Ae(r,i+1)){case 109:if(Ae(r,i+4)!==45)break;case 102:return ie(r,/(.+:)(.+)-([^]+)/,"$1"+ge+"$2-$3$1"+xo+(Ae(r,i+3)==108?"$3":"$2-$3"))+r;case 115:return~Wl(r,"stretch",0)?$d(ie(r,"stretch","fill-available"),i,s)+r:r}break;case 5152:case 5920:return ie(r,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(u,c,d,h,m,y,w){return je+c+":"+d+w+(h?je+c+"-span:"+(m?y:+y-+d)+w:"")+r});case 4949:if(Ae(r,i+6)===121)return ie(r,":",":"+ge)+r;break;case 6444:switch(Ae(r,Ae(r,14)===45?18:11)){case 120:return ie(r,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,"$1"+ge+(Ae(r,14)===45?"inline-":"")+"box$3$1"+ge+"$2$3$1"+je+"$2box$3")+r;case 100:return ie(r,":",":"+je)+r}break;case 5719:case 2647:case 2135:case 3927:case 2391:return ie(r,"scroll-","scroll-snap-")+r}return r}function Kl(r,i){for(var s="",u=0;u-1&&!r.return)switch(r.type){case La:r.return=$d(r.value,r.length,s);return;case Ed:return Kl([Pn(r,{value:ie(r.value,"@","@"+ge)})],u);case ql:if(r.length)return Em(s=r.props,function(c){switch(en(c,u=/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":Sr(Pn(r,{props:[ie(c,/:(read-\w+)/,":"+xo+"$1")]})),Sr(Pn(r,{props:[c]})),va(r,{props:Gf(s,u)});break;case"::placeholder":Sr(Pn(r,{props:[ie(c,/:(plac\w+)/,":"+ge+"input-$1")]})),Sr(Pn(r,{props:[ie(c,/:(plac\w+)/,":"+xo+"$1")]})),Sr(Pn(r,{props:[ie(c,/:(plac\w+)/,je+"input-$1")]})),Sr(Pn(r,{props:[c]})),va(r,{props:Gf(s,u)});break}return""})}}var Am={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},pt={},jr=typeof process<"u"&&pt!==void 0&&(pt.REACT_APP_SC_ATTR||pt.SC_ATTR)||"data-styled",Id="active",Ld="data-styled-version",ri="6.3.9",za=`/*!sc*/ +`,wo=typeof window<"u"&&typeof document<"u",Tt=Ne.createContext===void 0,Um=!!(typeof SC_DISABLE_SPEEDY=="boolean"?SC_DISABLE_SPEEDY:typeof process<"u"&&pt!==void 0&&pt.REACT_APP_SC_DISABLE_SPEEDY!==void 0&&pt.REACT_APP_SC_DISABLE_SPEEDY!==""?pt.REACT_APP_SC_DISABLE_SPEEDY!=="false"&&pt.REACT_APP_SC_DISABLE_SPEEDY:typeof process<"u"&&pt!==void 0&&pt.SC_DISABLE_SPEEDY!==void 0&&pt.SC_DISABLE_SPEEDY!==""&&pt.SC_DISABLE_SPEEDY!=="false"&&pt.SC_DISABLE_SPEEDY),Bm={},Ta=Object.freeze([]),Pr=Object.freeze({});function Nd(r,i,s){return s===void 0&&(s=Pr),r.theme!==s.theme&&r.theme||i||s.theme}var zd=new Set(["a","abbr","address","area","article","aside","audio","b","bdi","bdo","blockquote","body","button","br","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","map","mark","menu","meter","nav","object","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","slot","small","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","switch","symbol","text","textPath","tspan","use"]),Wm=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,Hm=/(^-|-$)/g;function Xf(r){return r.replace(Wm,"-").replace(Hm,"")}var Vm=/(a)(d)/gi,Jf=function(r){return String.fromCharCode(r+(r>25?39:97))};function wa(r){var i,s="";for(i=Math.abs(r);i>52;i=i/52|0)s=Jf(i%52)+s;return(Jf(i%52)+s).replace(Vm,"$1-$2")}var oa,Vn=function(r,i){for(var s=i.length;s;)r=33*r^i.charCodeAt(--s);return r},Td=function(r){return Vn(5381,r)};function Od(r){return wa(Td(r)>>>0)}function Qm(r){return r.displayName||r.name||"Component"}function la(r){return typeof r=="string"&&!0}var Dd=typeof Symbol=="function"&&Symbol.for,Fd=Dd?Symbol.for("react.memo"):60115,bm=Dd?Symbol.for("react.forward_ref"):60112,Gm={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},Ym={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Md={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Km=((oa={})[bm]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},oa[Fd]=Md,oa);function Zf(r){return("type"in(i=r)&&i.type.$$typeof)===Fd?Md:"$$typeof"in r?Km[r.$$typeof]:Gm;var i}var Xm=Object.defineProperty,Jm=Object.getOwnPropertyNames,qf=Object.getOwnPropertySymbols,Zm=Object.getOwnPropertyDescriptor,qm=Object.getPrototypeOf,ed=Object.prototype;function Ad(r,i,s){if(typeof i!="string"){if(ed){var u=qm(i);u&&u!==ed&&Ad(r,u,s)}var c=Jm(i);qf&&(c=c.concat(qf(i)));for(var d=Zf(r),h=Zf(i),m=0;m0?" Args: ".concat(i.join(", ")):""))}var eg=(function(){function r(i){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=i,this._cGroup=0,this._cIndex=0}return r.prototype.indexOfGroup=function(i){if(i===this._cGroup)return this._cIndex;var s=this._cIndex;if(i>this._cGroup)for(var u=this._cGroup;u=i;u--)s-=this.groupSizes[u];return this._cGroup=i,this._cIndex=s,s},r.prototype.insertRules=function(i,s){if(i>=this.groupSizes.length){for(var u=this.groupSizes,c=u.length,d=c;i>=d;)if((d<<=1)<0)throw Kn(16,"".concat(i));this.groupSizes=new Uint32Array(d),this.groupSizes.set(u),this.length=d;for(var h=c;h0&&this._cGroup>i&&(this._cIndex+=y)},r.prototype.clearGroup=function(i){if(i0&&this._cGroup>i&&(this._cIndex-=s)}},r.prototype.getGroup=function(i){var s="";if(i>=this.length||this.groupSizes[i]===0)return s;for(var u=this.groupSizes[i],c=this.indexOfGroup(i),d=c+u,h=c;h=0){var u=document.createTextNode(s);return this.element.insertBefore(u,this.nodes[i]||null),this.length++,!0}return!1},r.prototype.deleteRule=function(i){this.element.removeChild(this.nodes[i]),this.length--},r.prototype.getRule=function(i){return i0&&(T+=W+",")}),y+=F+$+'{content:"'+T+'"}'+za},S=0;S0?".".concat(i):F},S=y.slice();S.push(function(F){F.type===ql&&F.value.includes("&")&&(u||(u=new RegExp("\\".concat(s,"\\b"),"g")),F.props[0]=F.props[0].replace(fg,s).replace(u,w))}),h.prefix&&S.push(Mm),S.push(Om);var C=[],_=Dm(S.concat(Fm(function(F){return C.push(F)}))),N=function(F,$,T,W){$===void 0&&($=""),T===void 0&&(T=""),W===void 0&&(W="&"),i=W,s=$,u=void 0;var b=(function(U){if(!rd(U))return U;for(var J=U.length,X="",B=0,G=0,de=0,xe=!1,ae=0;ae=3&&(32|U.charCodeAt(G-1))==108&&(32|U.charCodeAt(G-2))==114&&(32|U.charCodeAt(G-3))==117)xe=1,G++;else if(xe>0)ae===41?xe--:ae===40&&xe++,G++;else if(ae===Qn&&G+1B&&X.push(U.substring(B,G)),B=G+=2;else if(ae===tn&&G+1B&&X.push(U.substring(B,G));G="A"&&r<="Z"};function od(r){for(var i="",s=0;s>>0);if(!s.hasNameForId(this.componentId,h)){var m=u(d,".".concat(h),void 0,this.componentId);s.insertRules(this.componentId,h,m)}c=bn(c,h),this.staticRulesId=h}else{for(var y=Vn(this.baseHash,u.hash),w="",S=0;S>>0);if(!s.hasNameForId(this.componentId,N)){var F=u(w,".".concat(N),void 0,this.componentId);s.insertRules(this.componentId,N,F)}c=bn(c,N)}}return{className:c,css:typeof window>"u"?s.getTag().getGroup(Cr(this.componentId)):""}},r})(),Eo=Tt?{Provider:function(r){return r.children},Consumer:function(r){return(0,r.children)(void 0)}}:Ne.createContext(void 0);Eo.Consumer;function xg(r){if(Tt)return r.children;var i=Ne.useContext(Eo),s=Ne.useMemo(function(){return(function(u,c){if(!u)throw Kn(14);if(Yn(u)){var d=u(c);return d}if(Array.isArray(u)||typeof u!="object")throw Kn(8);return c?Ve(Ve({},c),u):u})(r.theme,i)},[r.theme,i]);return r.children?Ne.createElement(Eo.Provider,{value:s},r.children):null}var sa={};function wg(r,i,s){var u=Oa(r),c=r,d=!la(r),h=i.attrs,m=h===void 0?Ta:h,y=i.componentId,w=y===void 0?(function(U,J){var X=typeof U!="string"?"sc":Xf(U);sa[X]=(sa[X]||0)+1;var B="".concat(X,"-").concat(Od(ri+X+sa[X]));return J?"".concat(J,"-").concat(B):B})(i.displayName,i.parentComponentId):y,S=i.displayName,C=S===void 0?(function(U){return la(U)?"styled.".concat(U):"Styled(".concat(Qm(U),")")})(r):S,_=i.displayName&&i.componentId?"".concat(Xf(i.displayName),"-").concat(i.componentId):i.componentId||w,N=u&&c.attrs?c.attrs.concat(m).filter(Boolean):m,F=i.shouldForwardProp;if(u&&c.shouldForwardProp){var $=c.shouldForwardProp;if(i.shouldForwardProp){var T=i.shouldForwardProp;F=function(U,J){return $(U,J)&&T(U,J)}}else F=$}var W=new vg(s,_,u?c.componentStyle:void 0);function b(U,J){return(function(X,B,G){var de=X.attrs,xe=X.componentStyle,ae=X.defaultProps,Ie=X.foldedComponentIds,ke=X.styledComponentId,Ge=X.target,qe=Tt?void 0:Ne.useContext(Eo),Ye=Pa(),we=X.shouldForwardProp||Ye.shouldForwardProp,H=Nd(B,qe,ae)||(Tt?void 0:Pr),ee=(function(fe,me,Ue){for(var Dt,ht=Ve(Ve({},me),{className:void 0,theme:Ue}),on=0;on2&&Jl.registerId(this.componentId+i);var d=this.componentId+i;this.isStatic?u.hasNameForId(d,d)||this.createStyles(i,s,u,c):(this.removeStyles(i,u),this.createStyles(i,s,u,c))},r})();function kg(r){for(var i=[],s=1;s"u"||!S.styleSheet.server)&&y(_,w,S.styleSheet,C,S.stylis),Tt||Ne.useLayoutEffect(function(){return S.styleSheet.server||y(_,w,S.styleSheet,C,S.stylis),function(){var $;d.removeStyles(_,S.styleSheet),$=S.styleSheet.options.target,typeof document<"u"&&($??document).querySelectorAll('style[data-styled-global="'.concat(c,'"]')).forEach(function(T){return T.remove()})}},[_,w,S.styleSheet,C,S.stylis]),Tt){var N=c+_,F=typeof window>"u"?S.styleSheet.getTag().getGroup(Cr(N)):"";if(F)return Ne.createElement("style",{key:"".concat(c,"-").concat(_),"data-styled-global":c,children:F})}return null};function y(w,S,C,_,N){if(d.isStatic)d.renderStyles(w,Bm,C,N);else{var F=Ve(Ve({},S),{theme:Nd(S,_,m.defaultProps)});d.renderStyles(w,F,C,N)}}return Ne.memo(m)}const Cg={colors:{primary:"#000000",accent:"#767a07ff",text:"#000000",textLight:"#666666",background:"#ffffff",border:"#dddddd"},fonts:{heading:'"Rakkas", cursive',body:'"Lexend", sans-serif'},fontSizes:{small:"12px",medium:"14px",large:"24px",xlarge:"32px"},breakpoints:{mobile:"480px",tablet:"768px",desktop:"1024px"}},Eg=kg` + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + margin: 40px; + font-family: ${r=>r.theme.fonts.body}; + background-color: ${r=>r.theme.colors.background}; + color: ${r=>r.theme.colors.text}; + } +`;/** + * react-router v7.13.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var sd="popstate";function jg(r={}){function i(u,c){let{pathname:d,search:h,hash:m}=u.location;return Ra("",{pathname:d,search:h,hash:m},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function s(u,c){return typeof c=="string"?c:jo(c)}return _g(i,s,null,r)}function $e(r,i){if(r===!1||r===null||typeof r>"u")throw new Error(i)}function Wt(r,i){if(!r){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function Pg(){return Math.random().toString(36).substring(2,10)}function ad(r,i){return{usr:r.state,key:r.key,idx:i}}function Ra(r,i,s=null,u){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof i=="string"?Rr(i):i,state:s,key:i&&i.key||u||Pg()}}function jo({pathname:r="/",search:i="",hash:s=""}){return i&&i!=="?"&&(r+=i.charAt(0)==="?"?i:"?"+i),s&&s!=="#"&&(r+=s.charAt(0)==="#"?s:"#"+s),r}function Rr(r){let i={};if(r){let s=r.indexOf("#");s>=0&&(i.hash=r.substring(s),r=r.substring(0,s));let u=r.indexOf("?");u>=0&&(i.search=r.substring(u),r=r.substring(0,u)),r&&(i.pathname=r)}return i}function _g(r,i,s,u={}){let{window:c=document.defaultView,v5Compat:d=!1}=u,h=c.history,m="POP",y=null,w=S();w==null&&(w=0,h.replaceState({...h.state,idx:w},""));function S(){return(h.state||{idx:null}).idx}function C(){m="POP";let T=S(),W=T==null?null:T-w;w=T,y&&y({action:m,location:$.location,delta:W})}function _(T,W){m="PUSH";let b=Ra($.location,T,W);w=S()+1;let M=ad(b,w),U=$.createHref(b);try{h.pushState(M,"",U)}catch(J){if(J instanceof DOMException&&J.name==="DataCloneError")throw J;c.location.assign(U)}d&&y&&y({action:m,location:$.location,delta:1})}function N(T,W){m="REPLACE";let b=Ra($.location,T,W);w=S();let M=ad(b,w),U=$.createHref(b);h.replaceState(M,"",U),d&&y&&y({action:m,location:$.location,delta:0})}function F(T){return Rg(T)}let $={get action(){return m},get location(){return r(c,h)},listen(T){if(y)throw new Error("A history only accepts one active listener");return c.addEventListener(sd,C),y=T,()=>{c.removeEventListener(sd,C),y=null}},createHref(T){return i(c,T)},createURL:F,encodeLocation(T){let W=F(T);return{pathname:W.pathname,search:W.search,hash:W.hash}},push:_,replace:N,go(T){return h.go(T)}};return $}function Rg(r,i=!1){let s="http://localhost";typeof window<"u"&&(s=window.location.origin!=="null"?window.location.origin:window.location.href),$e(s,"No window.location.(origin|href) available to create URL");let u=typeof r=="string"?r:jo(r);return u=u.replace(/ $/,"%20"),!i&&u.startsWith("//")&&(u=s+u),new URL(u,s)}function Yd(r,i,s="/"){return $g(r,i,s,!1)}function $g(r,i,s,u){let c=typeof i=="string"?Rr(i):i,d=rn(c.pathname||"/",s);if(d==null)return null;let h=Kd(r);Ig(h);let m=null;for(let y=0;m==null&&y{let S={relativePath:w===void 0?h.path||"":w,caseSensitive:h.caseSensitive===!0,childrenIndex:m,route:h};if(S.relativePath.startsWith("/")){if(!S.relativePath.startsWith(u)&&y)return;$e(S.relativePath.startsWith(u),`Absolute route path "${S.relativePath}" nested under path "${u}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),S.relativePath=S.relativePath.slice(u.length)}let C=nn([u,S.relativePath]),_=s.concat(S);h.children&&h.children.length>0&&($e(h.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${C}".`),Kd(h.children,i,_,C,y)),!(h.path==null&&!h.index)&&i.push({path:C,score:Fg(C,h.index),routesMeta:_})};return r.forEach((h,m)=>{var y;if(h.path===""||!((y=h.path)!=null&&y.includes("?")))d(h,m);else for(let w of Xd(h.path))d(h,m,!0,w)}),i}function Xd(r){let i=r.split("/");if(i.length===0)return[];let[s,...u]=i,c=s.endsWith("?"),d=s.replace(/\?$/,"");if(u.length===0)return c?[d,""]:[d];let h=Xd(u.join("/")),m=[];return m.push(...h.map(y=>y===""?d:[d,y].join("/"))),c&&m.push(...h),m.map(y=>r.startsWith("/")&&y===""?"/":y)}function Ig(r){r.sort((i,s)=>i.score!==s.score?s.score-i.score:Mg(i.routesMeta.map(u=>u.childrenIndex),s.routesMeta.map(u=>u.childrenIndex)))}var Lg=/^:[\w-]+$/,Ng=3,zg=2,Tg=1,Og=10,Dg=-2,ud=r=>r==="*";function Fg(r,i){let s=r.split("/"),u=s.length;return s.some(ud)&&(u+=Dg),i&&(u+=zg),s.filter(c=>!ud(c)).reduce((c,d)=>c+(Lg.test(d)?Ng:d===""?Tg:Og),u)}function Mg(r,i){return r.length===i.length&&r.slice(0,-1).every((u,c)=>u===i[c])?r[r.length-1]-i[i.length-1]:0}function Ag(r,i,s=!1){let{routesMeta:u}=r,c={},d="/",h=[];for(let m=0;m{if(S==="*"){let F=m[_]||"";h=d.slice(0,d.length-F.length).replace(/(.)\/+$/,"$1")}const N=m[_];return C&&!N?w[S]=void 0:w[S]=(N||"").replace(/%2F/g,"/"),w},{}),pathname:d,pathnameBase:h,pattern:r}}function Ug(r,i=!1,s=!0){Wt(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let u=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(h,m,y)=>(u.push({paramName:m,isOptional:y!=null}),y?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return r.endsWith("*")?(u.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,i?void 0:"i"),u]}function Bg(r){try{return r.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return Wt(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),r}}function rn(r,i){if(i==="/")return r;if(!r.toLowerCase().startsWith(i.toLowerCase()))return null;let s=i.endsWith("/")?i.length-1:i.length,u=r.charAt(s);return u&&u!=="/"?null:r.slice(s)||"/"}var Wg=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Hg(r,i="/"){let{pathname:s,search:u="",hash:c=""}=typeof r=="string"?Rr(r):r,d;return s?(s=s.replace(/\/\/+/g,"/"),s.startsWith("/")?d=cd(s.substring(1),"/"):d=cd(s,i)):d=i,{pathname:d,search:bg(u),hash:Gg(c)}}function cd(r,i){let s=i.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?s.length>1&&s.pop():c!=="."&&s.push(c)}),s.length>1?s.join("/"):"/"}function aa(r,i,s,u){return`Cannot include a '${r}' character in a manually specified \`to.${i}\` field [${JSON.stringify(u)}]. Please separate it out to the \`to.${s}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Vg(r){return r.filter((i,s)=>s===0||i.route.path&&i.route.path.length>0)}function Jd(r){let i=Vg(r);return i.map((s,u)=>u===i.length-1?s.pathname:s.pathnameBase)}function Zd(r,i,s,u=!1){let c;typeof r=="string"?c=Rr(r):(c={...r},$e(!c.pathname||!c.pathname.includes("?"),aa("?","pathname","search",c)),$e(!c.pathname||!c.pathname.includes("#"),aa("#","pathname","hash",c)),$e(!c.search||!c.search.includes("#"),aa("#","search","hash",c)));let d=r===""||c.pathname==="",h=d?"/":c.pathname,m;if(h==null)m=s;else{let C=i.length-1;if(!u&&h.startsWith("..")){let _=h.split("/");for(;_[0]==="..";)_.shift(),C-=1;c.pathname=_.join("/")}m=C>=0?i[C]:"/"}let y=Hg(c,m),w=h&&h!=="/"&&h.endsWith("/"),S=(d||h===".")&&s.endsWith("/");return!y.pathname.endsWith("/")&&(w||S)&&(y.pathname+="/"),y}var nn=r=>r.join("/").replace(/\/\/+/g,"/"),Qg=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),bg=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Gg=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r,Yg=class{constructor(r,i,s,u=!1){this.status=r,this.statusText=i||"",this.internal=u,s instanceof Error?(this.data=s.toString(),this.error=s):this.data=s}};function Kg(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}function Xg(r){return r.map(i=>i.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var qd=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function ep(r,i){let s=r;if(typeof s!="string"||!Wg.test(s))return{absoluteURL:void 0,isExternal:!1,to:s};let u=s,c=!1;if(qd)try{let d=new URL(window.location.href),h=s.startsWith("//")?new URL(d.protocol+s):new URL(s),m=rn(h.pathname,i);h.origin===d.origin&&m!=null?s=m+h.search+h.hash:c=!0}catch{Wt(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:u,isExternal:c,to:s}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var tp=["POST","PUT","PATCH","DELETE"];new Set(tp);var Jg=["GET",...tp];new Set(Jg);var $r=j.createContext(null);$r.displayName="DataRouter";var oi=j.createContext(null);oi.displayName="DataRouterState";var Zg=j.createContext(!1),np=j.createContext({isTransitioning:!1});np.displayName="ViewTransition";var qg=j.createContext(new Map);qg.displayName="Fetchers";var ey=j.createContext(null);ey.displayName="Await";var kt=j.createContext(null);kt.displayName="Navigation";var Po=j.createContext(null);Po.displayName="Location";var Ht=j.createContext({outlet:null,matches:[],isDataRoute:!1});Ht.displayName="Route";var Fa=j.createContext(null);Fa.displayName="RouteError";var rp="REACT_ROUTER_ERROR",ty="REDIRECT",ny="ROUTE_ERROR_RESPONSE";function ry(r){if(r.startsWith(`${rp}:${ty}:{`))try{let i=JSON.parse(r.slice(28));if(typeof i=="object"&&i&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.location=="string"&&typeof i.reloadDocument=="boolean"&&typeof i.replace=="boolean")return i}catch{}}function oy(r){if(r.startsWith(`${rp}:${ny}:{`))try{let i=JSON.parse(r.slice(40));if(typeof i=="object"&&i&&typeof i.status=="number"&&typeof i.statusText=="string")return new Yg(i.status,i.statusText,i.data)}catch{}}function ly(r,{relative:i}={}){$e(_o(),"useHref() may be used only in the context of a component.");let{basename:s,navigator:u}=j.useContext(kt),{hash:c,pathname:d,search:h}=Ro(r,{relative:i}),m=d;return s!=="/"&&(m=d==="/"?s:nn([s,d])),u.createHref({pathname:m,search:h,hash:c})}function _o(){return j.useContext(Po)!=null}function $n(){return $e(_o(),"useLocation() may be used only in the context of a component."),j.useContext(Po).location}var op="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function lp(r){j.useContext(kt).static||j.useLayoutEffect(r)}function Ot(){let{isDataRoute:r}=j.useContext(Ht);return r?vy():iy()}function iy(){$e(_o(),"useNavigate() may be used only in the context of a component.");let r=j.useContext($r),{basename:i,navigator:s}=j.useContext(kt),{matches:u}=j.useContext(Ht),{pathname:c}=$n(),d=JSON.stringify(Jd(u)),h=j.useRef(!1);return lp(()=>{h.current=!0}),j.useCallback((y,w={})=>{if(Wt(h.current,op),!h.current)return;if(typeof y=="number"){s.go(y);return}let S=Zd(y,JSON.parse(d),c,w.relative==="path");r==null&&i!=="/"&&(S.pathname=S.pathname==="/"?i:nn([i,S.pathname])),(w.replace?s.replace:s.push)(S,w.state,w)},[i,s,d,c,r])}j.createContext(null);function Ma(){let{matches:r}=j.useContext(Ht),i=r[r.length-1];return i?i.params:{}}function Ro(r,{relative:i}={}){let{matches:s}=j.useContext(Ht),{pathname:u}=$n(),c=JSON.stringify(Jd(s));return j.useMemo(()=>Zd(r,JSON.parse(c),u,i==="path"),[r,c,u,i])}function sy(r,i){return ip(r,i)}function ip(r,i,s,u,c){var b;$e(_o(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=j.useContext(kt),{matches:h}=j.useContext(Ht),m=h[h.length-1],y=m?m.params:{},w=m?m.pathname:"/",S=m?m.pathnameBase:"/",C=m&&m.route;{let M=C&&C.path||"";ap(w,!C||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${w}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let _=$n(),N;if(i){let M=typeof i=="string"?Rr(i):i;$e(S==="/"||((b=M.pathname)==null?void 0:b.startsWith(S)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${S}" but pathname "${M.pathname}" was given in the \`location\` prop.`),N=M}else N=_;let F=N.pathname||"/",$=F;if(S!=="/"){let M=S.replace(/^\//,"").split("/");$="/"+F.replace(/^\//,"").split("/").slice(M.length).join("/")}let T=Yd(r,{pathname:$});Wt(C||T!=null,`No routes matched location "${N.pathname}${N.search}${N.hash}" `),Wt(T==null||T[T.length-1].route.element!==void 0||T[T.length-1].route.Component!==void 0||T[T.length-1].route.lazy!==void 0,`Matched leaf route at location "${N.pathname}${N.search}${N.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let W=dy(T&&T.map(M=>Object.assign({},M,{params:Object.assign({},y,M.params),pathname:nn([S,d.encodeLocation?d.encodeLocation(M.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathname]),pathnameBase:M.pathnameBase==="/"?S:nn([S,d.encodeLocation?d.encodeLocation(M.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathnameBase])})),h,s,u,c);return i&&W?j.createElement(Po.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...N},navigationType:"POP"}},W):W}function ay(){let r=yy(),i=Kg(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),s=r instanceof Error?r.stack:null,u="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:u},d={padding:"2px 4px",backgroundColor:u},h=null;return console.error("Error handled by React Router default ErrorBoundary:",r),h=j.createElement(j.Fragment,null,j.createElement("p",null,"💿 Hey developer 👋"),j.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",j.createElement("code",{style:d},"ErrorBoundary")," or"," ",j.createElement("code",{style:d},"errorElement")," prop on your route.")),j.createElement(j.Fragment,null,j.createElement("h2",null,"Unexpected Application Error!"),j.createElement("h3",{style:{fontStyle:"italic"}},i),s?j.createElement("pre",{style:c},s):null,h)}var uy=j.createElement(ay,null),sp=class extends j.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,i){return i.location!==r.location||i.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:i.error,location:i.location,revalidation:r.revalidation||i.revalidation}}componentDidCatch(r,i){this.props.onError?this.props.onError(r,i):console.error("React Router caught the following error during render",r)}render(){let r=this.state.error;if(this.context&&typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){const s=oy(r.digest);s&&(r=s)}let i=r!==void 0?j.createElement(Ht.Provider,{value:this.props.routeContext},j.createElement(Fa.Provider,{value:r,children:this.props.component})):this.props.children;return this.context?j.createElement(cy,{error:r},i):i}};sp.contextType=Zg;var ua=new WeakMap;function cy({children:r,error:i}){let{basename:s}=j.useContext(kt);if(typeof i=="object"&&i&&"digest"in i&&typeof i.digest=="string"){let u=ry(i.digest);if(u){let c=ua.get(i);if(c)throw c;let d=ep(u.location,s);if(qd&&!ua.get(i))if(d.isExternal||u.reloadDocument)window.location.href=d.absoluteURL||d.to;else{const h=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(d.to,{replace:u.replace}));throw ua.set(i,h),h}return j.createElement("meta",{httpEquiv:"refresh",content:`0;url=${d.absoluteURL||d.to}`})}}return r}function fy({routeContext:r,match:i,children:s}){let u=j.useContext($r);return u&&u.static&&u.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(u.staticContext._deepestRenderedBoundaryId=i.route.id),j.createElement(Ht.Provider,{value:r},s)}function dy(r,i=[],s=null,u=null,c=null){if(r==null){if(!s)return null;if(s.errors)r=s.matches;else if(i.length===0&&!s.initialized&&s.matches.length>0)r=s.matches;else return null}let d=r,h=s==null?void 0:s.errors;if(h!=null){let S=d.findIndex(C=>C.route.id&&(h==null?void 0:h[C.route.id])!==void 0);$e(S>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(h).join(",")}`),d=d.slice(0,Math.min(d.length,S+1))}let m=!1,y=-1;if(s)for(let S=0;S=0?d=d.slice(0,y+1):d=[d[0]];break}}}let w=s&&u?(S,C)=>{var _,N;u(S,{location:s.location,params:((N=(_=s.matches)==null?void 0:_[0])==null?void 0:N.params)??{},unstable_pattern:Xg(s.matches),errorInfo:C})}:void 0;return d.reduceRight((S,C,_)=>{let N,F=!1,$=null,T=null;s&&(N=h&&C.route.id?h[C.route.id]:void 0,$=C.route.errorElement||uy,m&&(y<0&&_===0?(ap("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),F=!0,T=null):y===_&&(F=!0,T=C.route.hydrateFallbackElement||null)));let W=i.concat(d.slice(0,_+1)),b=()=>{let M;return N?M=$:F?M=T:C.route.Component?M=j.createElement(C.route.Component,null):C.route.element?M=C.route.element:M=S,j.createElement(fy,{match:C,routeContext:{outlet:S,matches:W,isDataRoute:s!=null},children:M})};return s&&(C.route.ErrorBoundary||C.route.errorElement||_===0)?j.createElement(sp,{location:s.location,revalidation:s.revalidation,component:$,error:N,children:b(),routeContext:{outlet:null,matches:W,isDataRoute:!0},onError:w}):b()},null)}function Aa(r){return`${r} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function py(r){let i=j.useContext($r);return $e(i,Aa(r)),i}function hy(r){let i=j.useContext(oi);return $e(i,Aa(r)),i}function my(r){let i=j.useContext(Ht);return $e(i,Aa(r)),i}function Ua(r){let i=my(r),s=i.matches[i.matches.length-1];return $e(s.route.id,`${r} can only be used on routes that contain a unique "id"`),s.route.id}function gy(){return Ua("useRouteId")}function yy(){var u;let r=j.useContext(Fa),i=hy("useRouteError"),s=Ua("useRouteError");return r!==void 0?r:(u=i.errors)==null?void 0:u[s]}function vy(){let{router:r}=py("useNavigate"),i=Ua("useNavigate"),s=j.useRef(!1);return lp(()=>{s.current=!0}),j.useCallback(async(c,d={})=>{Wt(s.current,op),s.current&&(typeof c=="number"?await r.navigate(c):await r.navigate(c,{fromRouteId:i,...d}))},[r,i])}var fd={};function ap(r,i,s){!i&&!fd[r]&&(fd[r]=!0,Wt(!1,s))}j.memo(xy);function xy({routes:r,future:i,state:s,onError:u}){return ip(r,void 0,s,u,i)}function It(r){$e(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function wy({basename:r="/",children:i=null,location:s,navigationType:u="POP",navigator:c,static:d=!1,unstable_useTransitions:h}){$e(!_o(),"You cannot render a inside another . You should never have more than one in your app.");let m=r.replace(/^\/*/,"/"),y=j.useMemo(()=>({basename:m,navigator:c,static:d,unstable_useTransitions:h,future:{}}),[m,c,d,h]);typeof s=="string"&&(s=Rr(s));let{pathname:w="/",search:S="",hash:C="",state:_=null,key:N="default"}=s,F=j.useMemo(()=>{let $=rn(w,m);return $==null?null:{location:{pathname:$,search:S,hash:C,state:_,key:N},navigationType:u}},[m,w,S,C,_,N,u]);return Wt(F!=null,` is not able to match the URL "${w}${S}${C}" because it does not start with the basename, so the won't render anything.`),F==null?null:j.createElement(kt.Provider,{value:y},j.createElement(Po.Provider,{children:i,value:F}))}function Sy({children:r,location:i}){return sy($a(r),i)}function $a(r,i=[]){let s=[];return j.Children.forEach(r,(u,c)=>{if(!j.isValidElement(u))return;let d=[...i,c];if(u.type===j.Fragment){s.push.apply(s,$a(u.props.children,d));return}$e(u.type===It,`[${typeof u.type=="string"?u.type:u.type.name}] is not a component. All component children of must be a or `),$e(!u.props.index||!u.props.children,"An index route cannot have child routes.");let h={id:u.props.id||d.join("-"),caseSensitive:u.props.caseSensitive,element:u.props.element,Component:u.props.Component,index:u.props.index,path:u.props.path,middleware:u.props.middleware,loader:u.props.loader,action:u.props.action,hydrateFallbackElement:u.props.hydrateFallbackElement,HydrateFallback:u.props.HydrateFallback,errorElement:u.props.errorElement,ErrorBoundary:u.props.ErrorBoundary,hasErrorBoundary:u.props.hasErrorBoundary===!0||u.props.ErrorBoundary!=null||u.props.errorElement!=null,shouldRevalidate:u.props.shouldRevalidate,handle:u.props.handle,lazy:u.props.lazy};u.props.children&&(h.children=$a(u.props.children,d)),s.push(h)}),s}var Gl="get",Yl="application/x-www-form-urlencoded";function li(r){return typeof HTMLElement<"u"&&r instanceof HTMLElement}function ky(r){return li(r)&&r.tagName.toLowerCase()==="button"}function Cy(r){return li(r)&&r.tagName.toLowerCase()==="form"}function Ey(r){return li(r)&&r.tagName.toLowerCase()==="input"}function jy(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function Py(r,i){return r.button===0&&(!i||i==="_self")&&!jy(r)}var Ml=null;function _y(){if(Ml===null)try{new FormData(document.createElement("form"),0),Ml=!1}catch{Ml=!0}return Ml}var Ry=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function ca(r){return r!=null&&!Ry.has(r)?(Wt(!1,`"${r}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Yl}"`),null):r}function $y(r,i){let s,u,c,d,h;if(Cy(r)){let m=r.getAttribute("action");u=m?rn(m,i):null,s=r.getAttribute("method")||Gl,c=ca(r.getAttribute("enctype"))||Yl,d=new FormData(r)}else if(ky(r)||Ey(r)&&(r.type==="submit"||r.type==="image")){let m=r.form;if(m==null)throw new Error('Cannot submit a