From 9456c9f0721a28021a0716fef3c82c489b76cfbf Mon Sep 17 00:00:00 2001
From: kmiola <kmiola@ethz.ch>
Date: Fri, 22 Nov 2024 18:05:35 +0000
Subject: [PATCH 01/10] dont know what this is, maybe ignore

---
 setup.txt        | 30 ++++++++++++++++++++++++++++++
 src/Callback.tsx | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+)
 create mode 100644 setup.txt
 create mode 100644 src/Callback.tsx

diff --git a/setup.txt b/setup.txt
new file mode 100644
index 0000000..fcbbc76
--- /dev/null
+++ b/setup.txt
@@ -0,0 +1,30 @@
+src/apiClientConfig.ts
+src/ErrorBoundary.tsx
+src/index.css
+src/index.ts
+src/main.tsx
+src/ThemeWrapper.tsx
+src/vite-env.d.ts
+
+src/assets:
+amiv.svg
+amiv-wheel.svg
+react.svg
+
+src/client:
+index.ts
+schemas.gen.ts
+services.gen.ts
+types.gen.ts
+
+src/pages:
+Belegformular.tsx
+Bills.tsx
+CreditPaymentsList.tsx
+CreditPayment.tsx
+FetchData.tsx
+GenerateItem.tsx
+index.tsx
+Reimbursement.tsx
+root.tsx
+test.tsx
diff --git a/src/Callback.tsx b/src/Callback.tsx
new file mode 100644
index 0000000..ab99a69
--- /dev/null
+++ b/src/Callback.tsx
@@ -0,0 +1,33 @@
+import { useEffect, useRef } from "react";
+import { useNavigate } from "react-router-dom";
+
+const Callback = () => {
+  const navigate = useNavigate();
+  const isProcessed = useRef(false); // Tracks if token processing is done
+
+  useEffect(() => {
+    if (isProcessed.current) return; // Prevent multiple executions
+    isProcessed.current = true; // Mark as processed
+
+    // Extract parameters from URL query string
+    const searchParams = new URLSearchParams(window.location.search);
+    //console.log('Search Params:', searchParams.toString());
+    const accessToken = searchParams.get("access_token");
+    const tokenType = searchParams.get("token_type"); // if needed
+    const scope = searchParams.get("scope"); // if needed
+    const state = searchParams.get("state"); // if needed
+
+    if (accessToken) {
+      //console.log('Access Token:', accessToken);
+      localStorage.setItem("access_token", accessToken); // Store token securely
+      navigate("/"); // Redirect to home or dashboard
+    } else {
+      console.error("No access token found.");
+      navigate("/error"); // Redirect to a proper error page
+    }
+  }, [navigate]);
+
+  return <div>Processing login...</div>;
+};
+
+export default Callback;
-- 
GitLab


From d027757c81de59bc1fc4f818f84929ba62ca3700 Mon Sep 17 00:00:00 2001
From: clemens <cwalter@ethz.ch>
Date: Sat, 23 Nov 2024 19:36:34 +0000
Subject: [PATCH 02/10] onboarding start

---
 openapi.json               | 2023 +++++++++++++++++++++++++++++-------
 src/client/schemas.gen.ts  |   36 +-
 src/client/services.gen.ts |   39 +
 src/client/types.gen.ts    |   16 +-
 src/pages/Onboarding.tsx   |   36 +
 5 files changed, 1742 insertions(+), 408 deletions(-)
 create mode 100644 src/pages/Onboarding.tsx

diff --git a/openapi.json b/openapi.json
index dcc7b79..75fbfcd 100644
--- a/openapi.json
+++ b/openapi.json
@@ -1,6 +1,9 @@
 {
   "openapi": "3.1.0",
-  "info": { "title": "qtool backend", "version": "0.1.0" },
+  "info": {
+    "title": "qtool backend",
+    "version": "0.1.0"
+  },
   "paths": {
     "/api/items/": {
       "get": {
@@ -13,7 +16,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -31,7 +38,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "integer" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "integer"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Price"
             }
           },
@@ -40,7 +54,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Unit"
             }
           },
@@ -49,7 +70,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "boolean" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "boolean"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Active"
             }
           },
@@ -58,7 +86,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Search"
             }
           }
@@ -68,7 +103,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/ItemsPublic" }
+                "schema": {
+                  "$ref": "#/components/schemas/ItemsPublic"
+                }
               }
             }
           },
@@ -76,7 +113,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -91,7 +130,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/ItemBase" }
+              "schema": {
+                "$ref": "#/components/schemas/ItemBase"
+              }
             }
           }
         },
@@ -100,7 +141,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Item" }
+                "schema": {
+                  "$ref": "#/components/schemas/Item"
+                }
               }
             }
           },
@@ -108,7 +151,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -126,7 +171,11 @@
             "name": "item_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Item Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Item Id"
+            }
           }
         ],
         "responses": {
@@ -134,7 +183,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Item" }
+                "schema": {
+                  "$ref": "#/components/schemas/Item"
+                }
               }
             }
           },
@@ -142,7 +193,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -158,14 +211,20 @@
             "name": "item_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Item Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Item Id"
+            }
           }
         ],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/ItemPublic" }
+              "schema": {
+                "$ref": "#/components/schemas/ItemPublic"
+              }
             }
           }
         },
@@ -174,7 +233,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Item" }
+                "schema": {
+                  "$ref": "#/components/schemas/Item"
+                }
               }
             }
           },
@@ -182,7 +243,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -198,7 +261,11 @@
             "name": "item_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Item Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Item Id"
+            }
           }
         ],
         "responses": {
@@ -206,7 +273,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Item" }
+                "schema": {
+                  "$ref": "#/components/schemas/Item"
+                }
               }
             }
           },
@@ -214,7 +283,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -254,7 +325,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -272,7 +345,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -290,7 +367,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Adress"
             }
           },
@@ -299,7 +383,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Kst"
             }
           },
@@ -308,7 +399,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Mwst"
             }
           },
@@ -317,7 +415,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "integer" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "integer"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Payinterval"
             }
           },
@@ -326,7 +431,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Comment"
             }
           },
@@ -336,8 +448,13 @@
             "required": false,
             "schema": {
               "anyOf": [
-                { "type": "string", "format": "date-time" },
-                { "type": "null" }
+                {
+                  "type": "string",
+                  "format": "date-time"
+                },
+                {
+                  "type": "null"
+                }
               ],
               "title": "Time Create"
             }
@@ -348,8 +465,13 @@
             "required": false,
             "schema": {
               "anyOf": [
-                { "type": "string", "format": "date-time" },
-                { "type": "null" }
+                {
+                  "type": "string",
+                  "format": "date-time"
+                },
+                {
+                  "type": "null"
+                }
               ],
               "title": "Time Modified"
             }
@@ -359,7 +481,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "default": "",
               "title": "Items"
             }
@@ -370,8 +499,12 @@
             "application/json": {
               "schema": {
                 "anyOf": [
-                  { "$ref": "#/components/schemas/DebitorFilter" },
-                  { "type": "null" }
+                  {
+                    "$ref": "#/components/schemas/DebitorFilter"
+                  },
+                  {
+                    "type": "null"
+                  }
                 ],
                 "title": "Debitor"
               }
@@ -383,7 +516,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/InvoicesList" }
+                "schema": {
+                  "$ref": "#/components/schemas/InvoicesList"
+                }
               }
             }
           },
@@ -391,7 +526,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -406,7 +543,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/InvoiceCreate" }
+              "schema": {
+                "$ref": "#/components/schemas/InvoiceCreate"
+              }
             }
           }
         },
@@ -425,7 +564,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -454,7 +595,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/InvoicePublic-Input" }
+              "schema": {
+                "$ref": "#/components/schemas/InvoicePublic-Input"
+              }
             }
           }
         },
@@ -473,7 +616,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -501,7 +646,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Invoice" }
+                "schema": {
+                  "$ref": "#/components/schemas/Invoice"
+                }
               }
             }
           },
@@ -509,7 +656,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -527,7 +676,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -545,7 +698,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "integer" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "integer"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Accountnumber"
             }
           },
@@ -554,7 +714,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Search"
             }
           }
@@ -564,7 +731,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/LedgersPublic" }
+                "schema": {
+                  "$ref": "#/components/schemas/LedgersPublic"
+                }
               }
             }
           },
@@ -572,7 +741,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -587,7 +758,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/LedgerBase" }
+              "schema": {
+                "$ref": "#/components/schemas/LedgerBase"
+              }
             }
           }
         },
@@ -596,7 +769,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Ledger" }
+                "schema": {
+                  "$ref": "#/components/schemas/Ledger"
+                }
               }
             }
           },
@@ -604,7 +779,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -634,7 +811,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Ledger" }
+                "schema": {
+                  "$ref": "#/components/schemas/Ledger"
+                }
               }
             }
           },
@@ -642,7 +821,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -669,7 +850,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/LedgerPublic" }
+              "schema": {
+                "$ref": "#/components/schemas/LedgerPublic"
+              }
             }
           }
         },
@@ -678,7 +861,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Ledger" }
+                "schema": {
+                  "$ref": "#/components/schemas/Ledger"
+                }
               }
             }
           },
@@ -686,7 +871,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -714,7 +901,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Ledger" }
+                "schema": {
+                  "$ref": "#/components/schemas/Ledger"
+                }
               }
             }
           },
@@ -722,7 +911,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -740,7 +931,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -758,7 +953,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "integer" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "integer"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Accountnumber"
             }
           },
@@ -767,7 +969,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Search"
             }
           }
@@ -777,7 +986,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/KstsPublic" }
+                "schema": {
+                  "$ref": "#/components/schemas/KstsPublic"
+                }
               }
             }
           },
@@ -785,7 +996,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -800,7 +1013,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/KstBase" }
+              "schema": {
+                "$ref": "#/components/schemas/KstBase"
+              }
             }
           }
         },
@@ -809,7 +1024,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Kst" }
+                "schema": {
+                  "$ref": "#/components/schemas/Kst"
+                }
               }
             }
           },
@@ -817,7 +1034,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -835,7 +1054,11 @@
             "name": "kst_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Kst Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Kst Id"
+            }
           }
         ],
         "responses": {
@@ -843,7 +1066,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Kst" }
+                "schema": {
+                  "$ref": "#/components/schemas/Kst"
+                }
               }
             }
           },
@@ -851,7 +1076,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -867,14 +1094,20 @@
             "name": "kst_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Kst Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Kst Id"
+            }
           }
         ],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/KstPublic" }
+              "schema": {
+                "$ref": "#/components/schemas/KstPublic"
+              }
             }
           }
         },
@@ -883,7 +1116,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Kst" }
+                "schema": {
+                  "$ref": "#/components/schemas/Kst"
+                }
               }
             }
           },
@@ -891,7 +1126,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -907,7 +1144,11 @@
             "name": "kst_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Kst Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Kst Id"
+            }
           }
         ],
         "responses": {
@@ -915,7 +1156,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Kst" }
+                "schema": {
+                  "$ref": "#/components/schemas/Kst"
+                }
               }
             }
           },
@@ -923,7 +1166,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -941,7 +1186,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -959,7 +1208,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "integer" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "integer"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Accountnumber"
             }
           },
@@ -968,7 +1224,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Search"
             }
           }
@@ -978,7 +1241,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/AddressesPublic" }
+                "schema": {
+                  "$ref": "#/components/schemas/AddressesPublic"
+                }
               }
             }
           },
@@ -986,7 +1251,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1001,7 +1268,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/AddressBase" }
+              "schema": {
+                "$ref": "#/components/schemas/AddressBase"
+              }
             }
           }
         },
@@ -1010,7 +1279,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Address" }
+                "schema": {
+                  "$ref": "#/components/schemas/Address"
+                }
               }
             }
           },
@@ -1018,7 +1289,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1048,7 +1321,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Address" }
+                "schema": {
+                  "$ref": "#/components/schemas/Address"
+                }
               }
             }
           },
@@ -1056,7 +1331,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1083,7 +1360,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/AddressPublic" }
+              "schema": {
+                "$ref": "#/components/schemas/AddressPublic"
+              }
             }
           }
         },
@@ -1092,7 +1371,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Address" }
+                "schema": {
+                  "$ref": "#/components/schemas/Address"
+                }
               }
             }
           },
@@ -1100,7 +1381,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1128,7 +1411,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Address" }
+                "schema": {
+                  "$ref": "#/components/schemas/Address"
+                }
               }
             }
           },
@@ -1136,7 +1421,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1154,7 +1441,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -1172,7 +1463,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Debitor"
             }
           },
@@ -1181,7 +1479,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Creditor"
             }
           },
@@ -1190,7 +1495,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Amount"
             }
           }
@@ -1210,7 +1522,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1246,7 +1560,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1286,7 +1602,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1334,7 +1652,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1362,7 +1682,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/InternalTransfer" }
+                "schema": {
+                  "$ref": "#/components/schemas/InternalTransfer"
+                }
               }
             }
           },
@@ -1370,7 +1692,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1388,7 +1712,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -1406,7 +1734,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Creditor"
             }
           },
@@ -1415,7 +1750,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Address"
             }
           },
@@ -1424,7 +1766,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Reference"
             }
           },
@@ -1433,7 +1782,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Iban"
             }
           },
@@ -1442,7 +1798,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Recipt"
             }
           },
@@ -1451,7 +1814,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Comment"
             }
           }
@@ -1461,7 +1831,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/BillsList" }
+                "schema": {
+                  "$ref": "#/components/schemas/BillsList"
+                }
               }
             }
           },
@@ -1469,7 +1841,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1484,7 +1858,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/BillCreate" }
+              "schema": {
+                "$ref": "#/components/schemas/BillCreate"
+              }
             }
           }
         },
@@ -1493,15 +1869,19 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/BillPublic-Output" }
-              }
+                "schema": {
+                  "$ref": "#/components/schemas/BillPublic-Output"
+                }
+              }
             }
           },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1519,7 +1899,11 @@
             "name": "bill_id",
             "in": "query",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Bill Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Bill Id"
+            }
           }
         ],
         "responses": {
@@ -1527,7 +1911,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/BillPublic-Output" }
+                "schema": {
+                  "$ref": "#/components/schemas/BillPublic-Output"
+                }
               }
             }
           },
@@ -1535,7 +1921,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1551,14 +1939,20 @@
             "name": "Bill_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Bill Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Bill Id"
+            }
           }
         ],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/BillPublic-Input" }
+              "schema": {
+                "$ref": "#/components/schemas/BillPublic-Input"
+              }
             }
           }
         },
@@ -1567,7 +1961,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/BillPublic-Output" }
+                "schema": {
+                  "$ref": "#/components/schemas/BillPublic-Output"
+                }
               }
             }
           },
@@ -1575,7 +1971,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1591,7 +1989,11 @@
             "name": "Bill_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "format": "uuid", "title": "Bill Id" }
+            "schema": {
+              "type": "string",
+              "format": "uuid",
+              "title": "Bill Id"
+            }
           }
         ],
         "responses": {
@@ -1599,7 +2001,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Bill" }
+                "schema": {
+                  "$ref": "#/components/schemas/Bill"
+                }
               }
             }
           },
@@ -1607,7 +2011,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1620,12 +2026,21 @@
         "summary": "Read Reimbursements",
         "description": "retrieve all Reimbursementes, sorted by name.\npaginate the results.",
         "operationId": "reimbursements-read_Reimbursements",
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "parameters": [
           {
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -1643,7 +2058,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Creditor"
             }
           },
@@ -1652,7 +2074,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Recipt"
             }
           }
@@ -1662,7 +2091,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/ReimbursementsList" }
+                "schema": {
+                  "$ref": "#/components/schemas/ReimbursementsList"
+                }
               }
             }
           },
@@ -1670,7 +2101,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1681,11 +2114,18 @@
         "summary": "Create Reimbursement",
         "description": "create a new Reimbursement.",
         "operationId": "reimbursements-create_Reimbursement",
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/ReimbursementCreate" }
+              "schema": {
+                "$ref": "#/components/schemas/ReimbursementCreate"
+              }
             }
           }
         },
@@ -1704,7 +2144,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1717,6 +2159,11 @@
         "summary": "Read Reimbursement",
         "description": "retrieve a single Reimbursement by id.",
         "operationId": "reimbursements-read_Reimbursement",
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "parameters": [
           {
             "name": "Reimbursement_id",
@@ -1744,7 +2191,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1755,6 +2204,11 @@
         "summary": "Update Reimbursement",
         "description": "update an Reimbursement.",
         "operationId": "reimbursements-update_Reimbursement",
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "parameters": [
           {
             "name": "reimbursement_id",
@@ -1792,7 +2246,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1803,6 +2259,11 @@
         "summary": "Delete Reimbursement",
         "description": "delete an Reimbursement.",
         "operationId": "reimbursements-delete_Reimbursement",
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ],
         "parameters": [
           {
             "name": "reimbursement_id",
@@ -1820,7 +2281,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/Reimbursement" }
+                "schema": {
+                  "$ref": "#/components/schemas/Reimbursement"
+                }
               }
             }
           },
@@ -1828,7 +2291,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1846,7 +2311,11 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": { "type": "integer", "default": 0, "title": "Page" }
+            "schema": {
+              "type": "integer",
+              "default": 0,
+              "title": "Page"
+            }
           },
           {
             "name": "limit",
@@ -1864,7 +2333,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Creditor"
             }
           },
@@ -1873,7 +2349,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Recipt"
             }
           },
@@ -1882,7 +2365,14 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "string" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "title": "Card"
             }
           }
@@ -1892,7 +2382,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/CreditPaymentsList" }
+                "schema": {
+                  "$ref": "#/components/schemas/CreditPaymentsList"
+                }
               }
             }
           },
@@ -1900,7 +2392,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1915,7 +2409,9 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": { "$ref": "#/components/schemas/CreditPaymentCreate" }
+              "schema": {
+                "$ref": "#/components/schemas/CreditPaymentCreate"
+              }
             }
           }
         },
@@ -1934,7 +2430,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -1974,7 +2472,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -2022,7 +2522,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -2050,7 +2552,9 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/CreditPayment" }
+                "schema": {
+                  "$ref": "#/components/schemas/CreditPayment"
+                }
               }
             }
           },
@@ -2058,7 +2562,9 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -2074,7 +2580,11 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": { "application/json": { "schema": {} } }
+            "content": {
+              "application/json": {
+                "schema": {}
+              }
+            }
           }
         }
       }
@@ -2098,13 +2608,19 @@
         "responses": {
           "201": {
             "description": "Successful Response",
-            "content": { "application/json": { "schema": {} } }
+            "content": {
+              "application/json": {
+                "schema": {}
+              }
+            }
           },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -2122,14 +2638,24 @@
             "name": "file_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "title": "File Id" }
+            "schema": {
+              "type": "string",
+              "title": "File Id"
+            }
           },
           {
             "name": "expires",
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [{ "type": "integer" }, { "type": "null" }],
+              "anyOf": [
+                {
+                  "type": "integer"
+                },
+                {
+                  "type": "null"
+                }
+              ],
               "default": 3600,
               "title": "Expires"
             }
@@ -2138,13 +2664,19 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": { "application/json": { "schema": {} } }
+            "content": {
+              "application/json": {
+                "schema": {}
+              }
+            }
           },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -2160,7 +2692,10 @@
             "name": "file_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "title": "File Id" }
+            "schema": {
+              "type": "string",
+              "title": "File Id"
+            }
           }
         ],
         "requestBody": {
@@ -2176,13 +2711,19 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": { "application/json": { "schema": {} } }
+            "content": {
+              "application/json": {
+                "schema": {}
+              }
+            }
           },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -2198,16 +2739,23 @@
             "name": "file_id",
             "in": "path",
             "required": true,
-            "schema": { "type": "string", "title": "File Id" }
+            "schema": {
+              "type": "string",
+              "title": "File Id"
+            }
           }
         ],
         "responses": {
-          "204": { "description": "Successful Response" },
+          "204": {
+            "description": "Successful Response"
+          },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+                "schema": {
+                  "$ref": "#/components/schemas/HTTPValidationError"
+                }
               }
             }
           }
@@ -2223,17 +2771,66 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": { "application/json": { "schema": {} } }
+            "content": {
+              "application/json": {
+                "schema": {}
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/login": {
+      "get": {
+        "tags": ["auth"],
+        "summary": "Login",
+        "description": "Redirects the caller to the OAuth2 provider for authentication using the Implicit flow.",
+        "operationId": "auth-login",
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {}
+              }
+            }
           }
         }
       }
+    },
+    "/api/is-onboarded": {
+      "get": {
+        "tags": ["auth"],
+        "summary": "Is Onboarded",
+        "description": "Check if the user is onboarded.\nReturn True if he is, otherwise False.",
+        "operationId": "auth-is_onboarded",
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {}
+              }
+            }
+          }
+        },
+        "security": [
+          {
+            "HTTPBearer": []
+          }
+        ]
+      }
     }
   },
   "components": {
     "schemas": {
       "Address": {
         "properties": {
-          "name": { "type": "string", "maxLength": 30, "title": "Name" },
+          "name": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name"
+          },
           "address1": {
             "type": "string",
             "maxLength": 30,
@@ -2249,21 +2846,36 @@
             "maxLength": 30,
             "title": "Address3"
           },
-          "plz": { "type": "integer", "title": "Plz" },
-          "city": { "type": "string", "maxLength": 30, "title": "City" },
-          "country": { "type": "string", "maxLength": 30, "title": "Country" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "plz": {
+            "type": "integer",
+            "title": "Plz"
+          },
+          "city": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "City"
+          },
+          "country": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Country"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.215210"
+            "default": "2024-11-20T16:20:09.605671"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.215238"
+            "default": "2024-11-20T16:20:09.605716"
           }
         },
         "type": "object",
@@ -2280,7 +2892,11 @@
       },
       "AddressBase": {
         "properties": {
-          "name": { "type": "string", "maxLength": 30, "title": "Name" },
+          "name": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name"
+          },
           "address1": {
             "type": "string",
             "maxLength": 30,
@@ -2296,9 +2912,20 @@
             "maxLength": 30,
             "title": "Address3"
           },
-          "plz": { "type": "integer", "title": "Plz" },
-          "city": { "type": "string", "maxLength": 30, "title": "City" },
-          "country": { "type": "string", "maxLength": 30, "title": "Country" }
+          "plz": {
+            "type": "integer",
+            "title": "Plz"
+          },
+          "city": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "City"
+          },
+          "country": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Country"
+          }
         },
         "type": "object",
         "required": [
@@ -2314,7 +2941,11 @@
       },
       "AddressPublic": {
         "properties": {
-          "name": { "type": "string", "maxLength": 30, "title": "Name" },
+          "name": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name"
+          },
           "address1": {
             "type": "string",
             "maxLength": 30,
@@ -2330,10 +2961,25 @@
             "maxLength": 30,
             "title": "Address3"
           },
-          "plz": { "type": "integer", "title": "Plz" },
-          "city": { "type": "string", "maxLength": 30, "title": "City" },
-          "country": { "type": "string", "maxLength": 30, "title": "Country" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" }
+          "plz": {
+            "type": "integer",
+            "title": "Plz"
+          },
+          "city": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "City"
+          },
+          "country": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Country"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          }
         },
         "type": "object",
         "required": [
@@ -2351,13 +2997,21 @@
       "AddressesPublic": {
         "properties": {
           "items": {
-            "items": { "$ref": "#/components/schemas/AddressPublic" },
+            "items": {
+              "$ref": "#/components/schemas/AddressPublic"
+            },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -2370,7 +3024,11 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "iban": { "type": "string", "maxLength": 30, "title": "Iban" },
+          "iban": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Iban"
+          },
           "address_id": {
             "type": "string",
             "format": "uuid",
@@ -2388,31 +3046,49 @@
             "title": "Comment",
             "default": ""
           },
-          "recipt": { "type": "string", "maxLength": 30, "title": "Recipt" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "recipt": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Recipt"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.245576"
+            "default": "2024-11-20T16:20:09.675425"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.245603"
+            "default": "2024-11-20T16:20:09.675477"
           },
           "ezag_timestamp": {
             "anyOf": [
-              { "type": "string", "format": "date-time" },
-              { "type": "null" }
+              {
+                "type": "string",
+                "format": "date-time"
+              },
+              {
+                "type": "null"
+              }
             ],
             "title": "Ezag Timestamp"
           },
           "check_timestamp": {
             "anyOf": [
-              { "type": "string", "format": "date-time" },
-              { "type": "null" }
+              {
+                "type": "string",
+                "format": "date-time"
+              },
+              {
+                "type": "null"
+              }
             ],
             "title": "Check Timestamp"
           }
@@ -2429,12 +3105,28 @@
       },
       "BillCreate": {
         "properties": {
-          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
-          "address": { "$ref": "#/components/schemas/AddressBase" },
-          "reference": { "type": "integer", "title": "Reference" },
-          "iban": { "type": "string", "title": "Iban" },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "comment": { "type": "string", "title": "Comment" }
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorBase"
+          },
+          "address": {
+            "$ref": "#/components/schemas/AddressBase"
+          },
+          "reference": {
+            "type": "integer",
+            "title": "Reference"
+          },
+          "iban": {
+            "type": "string",
+            "title": "Iban"
+          },
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "comment": {
+            "type": "string",
+            "title": "Comment"
+          }
         },
         "type": "object",
         "required": [
@@ -2454,18 +3146,38 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "iban": { "type": "string", "title": "Iban" },
+          "iban": {
+            "type": "string",
+            "title": "Iban"
+          },
           "address_id": {
             "type": "string",
             "format": "uuid",
             "title": "Address Id"
           },
-          "reference": { "type": "integer", "title": "Reference" },
-          "comment": { "type": "string", "title": "Comment" },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
-          "address": { "$ref": "#/components/schemas/AddressPublic" }
+          "reference": {
+            "type": "integer",
+            "title": "Reference"
+          },
+          "comment": {
+            "type": "string",
+            "title": "Comment"
+          },
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          },
+          "address": {
+            "$ref": "#/components/schemas/AddressPublic"
+          }
         },
         "type": "object",
         "required": [
@@ -2488,21 +3200,41 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "iban": { "type": "string", "title": "Iban" },
+          "iban": {
+            "type": "string",
+            "title": "Iban"
+          },
           "address_id": {
             "type": "string",
             "format": "uuid",
             "title": "Address Id"
           },
-          "reference": { "type": "integer", "title": "Reference" },
-          "comment": { "type": "string", "title": "Comment" },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
-          "address": { "$ref": "#/components/schemas/AddressPublic" }
-        },
-        "type": "object",
-        "required": [
+          "reference": {
+            "type": "integer",
+            "title": "Reference"
+          },
+          "comment": {
+            "type": "string",
+            "title": "Comment"
+          },
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          },
+          "address": {
+            "$ref": "#/components/schemas/AddressPublic"
+          }
+        },
+        "type": "object",
+        "required": [
           "creditor_id",
           "iban",
           "address_id",
@@ -2518,12 +3250,20 @@
       "BillsList": {
         "properties": {
           "items": {
-            "items": { "$ref": "#/components/schemas/BillPublic-Output" },
+            "items": {
+              "$ref": "#/components/schemas/BillPublic-Output"
+            },
             "type": "array",
             "title": "Items"
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -2531,7 +3271,11 @@
       },
       "Body_files-replace_file": {
         "properties": {
-          "file": { "type": "string", "format": "binary", "title": "File" }
+          "file": {
+            "type": "string",
+            "format": "binary",
+            "title": "File"
+          }
         },
         "type": "object",
         "required": ["file"],
@@ -2539,7 +3283,11 @@
       },
       "Body_files-upload_file": {
         "properties": {
-          "file": { "type": "string", "format": "binary", "title": "File" }
+          "file": {
+            "type": "string",
+            "format": "binary",
+            "title": "File"
+          }
         },
         "type": "object",
         "required": ["file"],
@@ -2557,37 +3305,65 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": { "type": "string", "maxLength": 30, "title": "Recipt" },
-          "card": { "$ref": "#/components/schemas/Card" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "name": { "type": "string", "maxLength": 200, "title": "Name" },
+          "recipt": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Recipt"
+          },
+          "card": {
+            "$ref": "#/components/schemas/Card"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "name": {
+            "type": "string",
+            "maxLength": 200,
+            "title": "Name"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.255823"
+            "default": "2024-11-20T16:20:09.698195"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.255852"
+            "default": "2024-11-20T16:20:09.698241"
           },
           "ezag_timestamp": {
             "anyOf": [
-              { "type": "string", "format": "date-time" },
-              { "type": "null" }
+              {
+                "type": "string",
+                "format": "date-time"
+              },
+              {
+                "type": "null"
+              }
             ],
             "title": "Ezag Timestamp"
           },
           "check_timestamp": {
             "anyOf": [
-              { "type": "string", "format": "date-time" },
-              { "type": "null" }
+              {
+                "type": "string",
+                "format": "date-time"
+              },
+              {
+                "type": "null"
+              }
             ],
             "title": "Check Timestamp"
           },
-          "creator": { "type": "string", "maxLength": 30, "title": "Creator" }
+          "creator": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Creator"
+          }
         },
         "type": "object",
         "required": ["creditor_id", "recipt", "card", "name", "creator"],
@@ -2595,10 +3371,20 @@
       },
       "CreditPaymentCreate": {
         "properties": {
-          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "card": { "$ref": "#/components/schemas/Card" },
-          "creator": { "type": "string", "title": "Creator" }
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorBase"
+          },
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "card": {
+            "$ref": "#/components/schemas/Card"
+          },
+          "creator": {
+            "type": "string",
+            "title": "Creator"
+          }
         },
         "type": "object",
         "required": ["creditor", "recipt", "card", "creator"],
@@ -2611,12 +3397,29 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "card": { "$ref": "#/components/schemas/Card" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
-          "creator": { "type": "string", "title": "Creator" },
-          "name": { "type": "string", "title": "Name" }
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "card": {
+            "$ref": "#/components/schemas/Card"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          },
+          "creator": {
+            "type": "string",
+            "title": "Creator"
+          },
+          "name": {
+            "type": "string",
+            "title": "Name"
+          }
         },
         "type": "object",
         "required": [
@@ -2637,12 +3440,29 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "card": { "$ref": "#/components/schemas/Card" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
-          "creator": { "type": "string", "title": "Creator" },
-          "name": { "type": "string", "title": "Name" }
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "card": {
+            "$ref": "#/components/schemas/Card"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          },
+          "creator": {
+            "type": "string",
+            "title": "Creator"
+          },
+          "name": {
+            "type": "string",
+            "title": "Name"
+          }
         },
         "type": "object",
         "required": [
@@ -2665,8 +3485,14 @@
             "type": "array",
             "title": "Items"
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -2674,7 +3500,11 @@
       },
       "CreditorBase": {
         "properties": {
-          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
+          "kst_id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Kst Id"
+          },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -2691,7 +3521,9 @@
             "title": "Accounting Year",
             "default": 2024
           },
-          "currency": { "$ref": "#/components/schemas/Currency" },
+          "currency": {
+            "$ref": "#/components/schemas/Currency"
+          },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -2711,7 +3543,11 @@
       },
       "CreditorPublic": {
         "properties": {
-          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
+          "kst_id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Kst Id"
+          },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -2728,7 +3564,9 @@
             "title": "Accounting Year",
             "default": 2024
           },
-          "currency": { "$ref": "#/components/schemas/Currency" },
+          "currency": {
+            "$ref": "#/components/schemas/Currency"
+          },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -2741,7 +3579,11 @@
             "title": "Qcomment",
             "default": ""
           },
-          "id": { "type": "string", "format": "uuid", "title": "Id" }
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          }
         },
         "type": "object",
         "required": ["kst_id", "ledger_id", "amount", "currency", "id"],
@@ -2754,7 +3596,11 @@
       },
       "DebitorBase": {
         "properties": {
-          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
+          "kst_id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Kst Id"
+          },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -2766,7 +3612,11 @@
             "exclusiveMinimum": 0.0,
             "title": "Amount"
           },
-          "mwst": { "type": "string", "maxLength": 30, "title": "Mwst" }
+          "mwst": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Mwst"
+          }
         },
         "type": "object",
         "required": ["kst_id", "ledger_id", "amount", "mwst"],
@@ -2775,15 +3625,36 @@
       "DebitorFilter": {
         "properties": {
           "kst": {
-            "anyOf": [{ "type": "string" }, { "type": "null" }],
+            "anyOf": [
+              {
+                "type": "string"
+              },
+              {
+                "type": "null"
+              }
+            ],
             "title": "Kst"
           },
           "ledger": {
-            "anyOf": [{ "type": "string" }, { "type": "null" }],
+            "anyOf": [
+              {
+                "type": "string"
+              },
+              {
+                "type": "null"
+              }
+            ],
             "title": "Ledger"
           },
           "mwst": {
-            "anyOf": [{ "type": "string" }, { "type": "null" }],
+            "anyOf": [
+              {
+                "type": "string"
+              },
+              {
+                "type": "null"
+              }
+            ],
             "title": "Mwst"
           }
         },
@@ -2793,7 +3664,11 @@
       },
       "DebitorPublic": {
         "properties": {
-          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
+          "kst_id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Kst Id"
+          },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -2805,8 +3680,16 @@
             "exclusiveMinimum": 0.0,
             "title": "Amount"
           },
-          "mwst": { "type": "string", "maxLength": 30, "title": "Mwst" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" }
+          "mwst": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Mwst"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          }
         },
         "type": "object",
         "required": ["kst_id", "ledger_id", "amount", "mwst", "id"],
@@ -2815,7 +3698,9 @@
       "HTTPValidationError": {
         "properties": {
           "detail": {
-            "items": { "$ref": "#/components/schemas/ValidationError" },
+            "items": {
+              "$ref": "#/components/schemas/ValidationError"
+            },
             "type": "array",
             "title": "Detail"
           }
@@ -2825,7 +3710,11 @@
       },
       "InternalTransfer": {
         "properties": {
-          "name": { "type": "string", "maxLength": 200, "title": "Name" },
+          "name": {
+            "type": "string",
+            "maxLength": 200,
+            "title": "Name"
+          },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -2848,18 +3737,22 @@
             "exclusiveMinimum": 0.0,
             "title": "Amount"
           },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.286242"
+            "default": "2024-11-20T16:20:09.753644"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.286282"
+            "default": "2024-11-20T16:20:09.753685"
           }
         },
         "type": "object",
@@ -2868,9 +3761,16 @@
       },
       "InternalTransferCreate": {
         "properties": {
-          "debitor": { "$ref": "#/components/schemas/DebitorBase" },
-          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
-          "amount": { "type": "integer", "title": "Amount" }
+          "debitor": {
+            "$ref": "#/components/schemas/DebitorBase"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorBase"
+          },
+          "amount": {
+            "type": "integer",
+            "title": "Amount"
+          }
         },
         "type": "object",
         "required": ["debitor", "creditor", "amount"],
@@ -2878,7 +3778,11 @@
       },
       "InternalTransferPublic-Input": {
         "properties": {
-          "name": { "type": "string", "maxLength": 200, "title": "Name" },
+          "name": {
+            "type": "string",
+            "maxLength": 200,
+            "title": "Name"
+          },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -2895,10 +3799,21 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "amount": { "type": "integer", "title": "Amount" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "debitor": { "$ref": "#/components/schemas/DebitorPublic" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" }
+          "amount": {
+            "type": "integer",
+            "title": "Amount"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "debitor": {
+            "$ref": "#/components/schemas/DebitorPublic"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          }
         },
         "type": "object",
         "required": [
@@ -2914,7 +3829,11 @@
       },
       "InternalTransferPublic-Output": {
         "properties": {
-          "name": { "type": "string", "maxLength": 200, "title": "Name" },
+          "name": {
+            "type": "string",
+            "maxLength": 200,
+            "title": "Name"
+          },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -2931,10 +3850,21 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "amount": { "type": "integer", "title": "Amount" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "debitor": { "$ref": "#/components/schemas/DebitorPublic" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" }
+          "amount": {
+            "type": "integer",
+            "title": "Amount"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "debitor": {
+            "$ref": "#/components/schemas/DebitorPublic"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          }
         },
         "type": "object",
         "required": [
@@ -2957,8 +3887,14 @@
             "type": "array",
             "title": "Items"
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -2971,19 +3907,27 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "adress": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Adress"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.306366"
+            "default": "2024-11-20T16:20:09.777983"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.306411"
+            "default": "2024-11-20T16:20:09.778067"
           }
         },
         "type": "object",
@@ -2997,9 +3941,15 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
+          "adress": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Adress"
+          },
           "items": {
-            "items": { "$ref": "#/components/schemas/ItemstoInvoiceCreate" },
+            "items": {
+              "$ref": "#/components/schemas/ItemstoInvoiceCreate"
+            },
             "type": "array",
             "title": "Items"
           }
@@ -3015,8 +3965,16 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "adress": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Adress"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
@@ -3028,7 +3986,9 @@
             "title": "Time Modified"
           },
           "items": {
-            "items": { "$ref": "#/components/schemas/ItemstoInvoicePublic" },
+            "items": {
+              "$ref": "#/components/schemas/ItemstoInvoicePublic"
+            },
             "type": "array",
             "title": "Items"
           }
@@ -3044,8 +4004,16 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "adress": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Adress"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
@@ -3057,7 +4025,9 @@
             "title": "Time Modified"
           },
           "items": {
-            "items": { "$ref": "#/components/schemas/ItemstoInvoicePublic" },
+            "items": {
+              "$ref": "#/components/schemas/ItemstoInvoicePublic"
+            },
             "type": "array",
             "title": "Items"
           }
@@ -3069,12 +4039,20 @@
       "InvoicesList": {
         "properties": {
           "items": {
-            "items": { "$ref": "#/components/schemas/InvoicePublic-Output" },
+            "items": {
+              "$ref": "#/components/schemas/InvoicePublic-Output"
+            },
             "type": "array",
             "title": "Items"
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -3109,20 +4087,32 @@
             "exclusiveMinimum": 4.0,
             "title": "Price"
           },
-          "unit": { "type": "string", "maxLength": 30, "title": "Unit" },
-          "active": { "type": "boolean", "title": "Active", "default": true },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "unit": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Unit"
+          },
+          "active": {
+            "type": "boolean",
+            "title": "Active",
+            "default": true
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.264983"
+            "default": "2024-11-20T16:20:09.719534"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.265011"
+            "default": "2024-11-20T16:20:09.719577"
           }
         },
         "type": "object",
@@ -3165,8 +4155,16 @@
             "exclusiveMinimum": 4.0,
             "title": "Price"
           },
-          "unit": { "type": "string", "maxLength": 30, "title": "Unit" },
-          "active": { "type": "boolean", "title": "Active", "default": true }
+          "unit": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Unit"
+          },
+          "active": {
+            "type": "boolean",
+            "title": "Active",
+            "default": true
+          }
         },
         "type": "object",
         "required": [
@@ -3208,9 +4206,21 @@
             "exclusiveMinimum": 4.0,
             "title": "Price"
           },
-          "unit": { "type": "string", "maxLength": 30, "title": "Unit" },
-          "active": { "type": "boolean", "title": "Active", "default": true },
-          "id": { "type": "string", "format": "uuid", "title": "Id" }
+          "unit": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Unit"
+          },
+          "active": {
+            "type": "boolean",
+            "title": "Active",
+            "default": true
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          }
         },
         "type": "object",
         "required": [
@@ -3227,13 +4237,21 @@
       "ItemsPublic": {
         "properties": {
           "items": {
-            "items": { "$ref": "#/components/schemas/ItemPublic" },
+            "items": {
+              "$ref": "#/components/schemas/ItemPublic"
+            },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -3241,10 +4259,22 @@
       },
       "ItemstoInvoiceCreate": {
         "properties": {
-          "item_id": { "type": "string", "format": "uuid", "title": "Item Id" },
-          "debitor": { "$ref": "#/components/schemas/DebitorBase" },
-          "amount": { "type": "integer", "title": "Amount" },
-          "comment": { "type": "string", "title": "Comment" }
+          "item_id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Item Id"
+          },
+          "debitor": {
+            "$ref": "#/components/schemas/DebitorBase"
+          },
+          "amount": {
+            "type": "integer",
+            "title": "Amount"
+          },
+          "comment": {
+            "type": "string",
+            "title": "Comment"
+          }
         },
         "type": "object",
         "required": ["item_id", "debitor", "amount", "comment"],
@@ -3252,10 +4282,20 @@
       },
       "ItemstoInvoicePublic": {
         "properties": {
-          "item": { "$ref": "#/components/schemas/ItemPublic" },
-          "debitor": { "$ref": "#/components/schemas/DebitorBase" },
-          "amount": { "type": "integer", "title": "Amount" },
-          "comment": { "type": "string", "title": "Comment" }
+          "item": {
+            "$ref": "#/components/schemas/ItemPublic"
+          },
+          "debitor": {
+            "$ref": "#/components/schemas/DebitorBase"
+          },
+          "amount": {
+            "type": "integer",
+            "title": "Amount"
+          },
+          "comment": {
+            "type": "string",
+            "title": "Comment"
+          }
         },
         "type": "object",
         "required": ["item", "debitor", "amount", "comment"],
@@ -3263,23 +4303,46 @@
       },
       "Kst": {
         "properties": {
-          "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
-          "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
-          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
-          "active": { "type": "boolean", "title": "Active", "default": true },
-          "budget": { "type": "integer", "title": "Budget" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "name_de": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name De"
+          },
+          "name_en": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name En"
+          },
+          "owner": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Owner"
+          },
+          "active": {
+            "type": "boolean",
+            "title": "Active",
+            "default": true
+          },
+          "budget": {
+            "type": "integer",
+            "title": "Budget"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.224531"
+            "default": "2024-11-20T16:20:09.628438"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.224559"
+            "default": "2024-11-20T16:20:09.628482"
           }
         },
         "type": "object",
@@ -3288,11 +4351,30 @@
       },
       "KstBase": {
         "properties": {
-          "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
-          "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
-          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
-          "active": { "type": "boolean", "title": "Active", "default": true },
-          "budget": { "type": "integer", "title": "Budget" }
+          "name_de": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name De"
+          },
+          "name_en": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name En"
+          },
+          "owner": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Owner"
+          },
+          "active": {
+            "type": "boolean",
+            "title": "Active",
+            "default": true
+          },
+          "budget": {
+            "type": "integer",
+            "title": "Budget"
+          }
         },
         "type": "object",
         "required": ["name_de", "name_en", "owner", "budget"],
@@ -3300,12 +4382,35 @@
       },
       "KstPublic": {
         "properties": {
-          "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
-          "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
-          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
-          "active": { "type": "boolean", "title": "Active", "default": true },
-          "budget": { "type": "integer", "title": "Budget" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" }
+          "name_de": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name De"
+          },
+          "name_en": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Name En"
+          },
+          "owner": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Owner"
+          },
+          "active": {
+            "type": "boolean",
+            "title": "Active",
+            "default": true
+          },
+          "budget": {
+            "type": "integer",
+            "title": "Budget"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          }
         },
         "type": "object",
         "required": ["name_de", "name_en", "owner", "budget", "id"],
@@ -3314,13 +4419,21 @@
       "KstsPublic": {
         "properties": {
           "items": {
-            "items": { "$ref": "#/components/schemas/KstPublic" },
+            "items": {
+              "$ref": "#/components/schemas/KstPublic"
+            },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -3333,21 +4446,37 @@
             "title": "Accountnumber",
             "default": 0
           },
-          "namede": { "type": "string", "maxLength": 30, "title": "Namede" },
-          "nameen": { "type": "string", "maxLength": 30, "title": "Nameen" },
-          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "namede": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Namede"
+          },
+          "nameen": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Nameen"
+          },
+          "owner": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Owner"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.231377"
+            "default": "2024-11-20T16:20:09.644853"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.231404"
+            "default": "2024-11-20T16:20:09.644913"
           }
         },
         "type": "object",
@@ -3361,9 +4490,21 @@
             "title": "Accountnumber",
             "default": 0
           },
-          "namede": { "type": "string", "maxLength": 30, "title": "Namede" },
-          "nameen": { "type": "string", "maxLength": 30, "title": "Nameen" },
-          "owner": { "type": "string", "maxLength": 30, "title": "Owner" }
+          "namede": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Namede"
+          },
+          "nameen": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Nameen"
+          },
+          "owner": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Owner"
+          }
         },
         "type": "object",
         "required": ["namede", "nameen", "owner"],
@@ -3376,10 +4517,26 @@
             "title": "Accountnumber",
             "default": 0
           },
-          "namede": { "type": "string", "maxLength": 30, "title": "Namede" },
-          "nameen": { "type": "string", "maxLength": 30, "title": "Nameen" },
-          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" }
+          "namede": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Namede"
+          },
+          "nameen": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Nameen"
+          },
+          "owner": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Owner"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          }
         },
         "type": "object",
         "required": ["namede", "nameen", "owner", "id"],
@@ -3388,13 +4545,21 @@
       "LedgersPublic": {
         "properties": {
           "items": {
-            "items": { "$ref": "#/components/schemas/LedgerPublic" },
+            "items": {
+              "$ref": "#/components/schemas/LedgerPublic"
+            },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -3407,36 +4572,62 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": { "type": "string", "maxLength": 30, "title": "Recipt" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "name": { "type": "string", "maxLength": 200, "title": "Name" },
+          "recipt": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Recipt"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "name": {
+            "type": "string",
+            "maxLength": 200,
+            "title": "Name"
+          },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-04T14:37:27.319471"
+            "default": "2024-11-20T16:20:09.797544"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-04T14:37:27.319498"
+            "default": "2024-11-20T16:20:09.797584"
           },
           "ezag_timestamp": {
             "anyOf": [
-              { "type": "string", "format": "date-time" },
-              { "type": "null" }
+              {
+                "type": "string",
+                "format": "date-time"
+              },
+              {
+                "type": "null"
+              }
             ],
             "title": "Ezag Timestamp"
           },
           "check_timestamp": {
             "anyOf": [
-              { "type": "string", "format": "date-time" },
-              { "type": "null" }
+              {
+                "type": "string",
+                "format": "date-time"
+              },
+              {
+                "type": "null"
+              }
             ],
             "title": "Check Timestamp"
           },
-          "creator": { "type": "string", "maxLength": 30, "title": "Creator" },
+          "creator": {
+            "type": "string",
+            "maxLength": 30,
+            "title": "Creator"
+          },
           "recipient": {
             "type": "string",
             "maxLength": 30,
@@ -3449,10 +4640,21 @@
       },
       "ReimbursementCreate": {
         "properties": {
-          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "creator": { "type": "string", "title": "Creator" },
-          "recipient": { "type": "string", "title": "Recipient" }
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorBase"
+          },
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "creator": {
+            "type": "string",
+            "title": "Creator"
+          },
+          "recipient": {
+            "type": "string",
+            "title": "Recipient"
+          }
         },
         "type": "object",
         "required": ["creditor", "recipt", "creator", "recipient"],
@@ -3465,11 +4667,26 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
-          "creator": { "type": "string", "title": "Creator" },
-          "recipient": { "type": "string", "title": "Recipient" }
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          },
+          "creator": {
+            "type": "string",
+            "title": "Creator"
+          },
+          "recipient": {
+            "type": "string",
+            "title": "Recipient"
+          }
         },
         "type": "object",
         "required": [
@@ -3489,11 +4706,26 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": { "type": "string", "title": "Recipt" },
-          "id": { "type": "string", "format": "uuid", "title": "Id" },
-          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
-          "creator": { "type": "string", "title": "Creator" },
-          "recipient": { "type": "string", "title": "Recipient" }
+          "recipt": {
+            "type": "string",
+            "title": "Recipt"
+          },
+          "id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Id"
+          },
+          "creditor": {
+            "$ref": "#/components/schemas/CreditorPublic"
+          },
+          "creator": {
+            "type": "string",
+            "title": "Creator"
+          },
+          "recipient": {
+            "type": "string",
+            "title": "Recipient"
+          }
         },
         "type": "object",
         "required": [
@@ -3515,8 +4747,14 @@
             "type": "array",
             "title": "Items"
           },
-          "count": { "type": "integer", "title": "Count" },
-          "total": { "type": "integer", "title": "Total" }
+          "count": {
+            "type": "integer",
+            "title": "Count"
+          },
+          "total": {
+            "type": "integer",
+            "title": "Total"
+          }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -3525,17 +4763,38 @@
       "ValidationError": {
         "properties": {
           "loc": {
-            "items": { "anyOf": [{ "type": "string" }, { "type": "integer" }] },
+            "items": {
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "integer"
+                }
+              ]
+            },
             "type": "array",
             "title": "Location"
           },
-          "msg": { "type": "string", "title": "Message" },
-          "type": { "type": "string", "title": "Error Type" }
+          "msg": {
+            "type": "string",
+            "title": "Message"
+          },
+          "type": {
+            "type": "string",
+            "title": "Error Type"
+          }
         },
         "type": "object",
         "required": ["loc", "msg", "type"],
         "title": "ValidationError"
       }
+    },
+    "securitySchemes": {
+      "HTTPBearer": {
+        "type": "http",
+        "scheme": "bearer"
+      }
     }
   }
 }
diff --git a/src/client/schemas.gen.ts b/src/client/schemas.gen.ts
index 818b7a5..2ae4462 100644
--- a/src/client/schemas.gen.ts
+++ b/src/client/schemas.gen.ts
@@ -45,13 +45,13 @@ export const AddressSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.918524",
+      default: "2024-11-20T16:20:09.605671",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.918553",
+      default: "2024-11-20T16:20:09.605716",
     },
   },
   type: "object",
@@ -240,13 +240,13 @@ export const BillSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.947729",
+      default: "2024-11-20T16:20:09.675425",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.947759",
+      default: "2024-11-20T16:20:09.675477",
     },
     ezag_timestamp: {
       anyOf: [
@@ -502,13 +502,13 @@ export const CreditPaymentSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.957864",
+      default: "2024-11-20T16:20:09.698195",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.957889",
+      default: "2024-11-20T16:20:09.698241",
     },
     ezag_timestamp: {
       anyOf: [
@@ -933,13 +933,13 @@ export const InternalTransferSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.984901",
+      default: "2024-11-20T16:20:09.753644",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.984931",
+      default: "2024-11-20T16:20:09.753685",
     },
   },
   type: "object",
@@ -1113,13 +1113,13 @@ export const InvoiceSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.997400",
+      default: "2024-11-20T16:20:09.777983",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.997428",
+      default: "2024-11-20T16:20:09.778067",
     },
   },
   type: "object",
@@ -1303,13 +1303,13 @@ export const ItemSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.967028",
+      default: "2024-11-20T16:20:09.719534",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.967054",
+      default: "2024-11-20T16:20:09.719577",
     },
   },
   type: "object",
@@ -1539,13 +1539,13 @@ export const KstSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.927193",
+      default: "2024-11-20T16:20:09.628438",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.927219",
+      default: "2024-11-20T16:20:09.628482",
     },
   },
   type: "object",
@@ -1677,13 +1677,13 @@ export const LedgerSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:33.933799",
+      default: "2024-11-20T16:20:09.644853",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:33.933825",
+      default: "2024-11-20T16:20:09.644913",
     },
   },
   type: "object",
@@ -1802,13 +1802,13 @@ export const ReimbursementSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-19T16:32:34.007316",
+      default: "2024-11-20T16:20:09.797544",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-19T16:32:34.007341",
+      default: "2024-11-20T16:20:09.797584",
     },
     ezag_timestamp: {
       anyOf: [
diff --git a/src/client/services.gen.ts b/src/client/services.gen.ts
index 9c28151..070ab30 100644
--- a/src/client/services.gen.ts
+++ b/src/client/services.gen.ts
@@ -158,6 +158,10 @@ import {
   type FilesDeleteFileResponse,
   type FilesListFilesError,
   type FilesListFilesResponse,
+  type AuthLoginError,
+  type AuthLoginResponse,
+  type AuthIsOnboardedError,
+  type AuthIsOnboardedResponse,
   ItemsCreateItemResponseTransformer,
   ItemsReadItemResponseTransformer,
   ItemsUpdateItemResponseTransformer,
@@ -1128,3 +1132,38 @@ export const filesListFiles = <ThrowOnError extends boolean = false>(
     url: "/api/files/files",
   });
 };
+
+/**
+ * Login
+ * Redirects the caller to the OAuth2 provider for authentication using the Implicit flow.
+ */
+export const authLogin = <ThrowOnError extends boolean = false>(
+  options?: Options<unknown, ThrowOnError>,
+) => {
+  return (options?.client ?? client).get<
+    AuthLoginResponse,
+    AuthLoginError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/login",
+  });
+};
+
+/**
+ * Is Onboarded
+ * Check if the user is onboarded.
+ * Return True if he is, otherwise False.
+ */
+export const authIsOnboarded = <ThrowOnError extends boolean = false>(
+  options?: Options<unknown, ThrowOnError>,
+) => {
+  return (options?.client ?? client).get<
+    AuthIsOnboardedResponse,
+    AuthIsOnboardedError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/is-onboarded",
+  });
+};
diff --git a/src/client/types.gen.ts b/src/client/types.gen.ts
index 8a4c093..334f552 100644
--- a/src/client/types.gen.ts
+++ b/src/client/types.gen.ts
@@ -858,9 +858,6 @@ export type ReimbursementsReadReimbursementsError = HTTPValidationError;
 
 export type ReimbursementsCreateReimbursementData = {
   body: ReimbursementCreate;
-  query: {
-    session_token: string;
-  };
 };
 
 export type ReimbursementsCreateReimbursementResponse =
@@ -872,9 +869,6 @@ export type ReimbursementsReadReimbursementData = {
   path: {
     Reimbursement_id: string;
   };
-  query: {
-    session_token: string;
-  };
 };
 
 export type ReimbursementsReadReimbursementResponse =
@@ -886,7 +880,6 @@ export type ReimbursementsUpdateReimbursementData = {
   body: ReimbursementPublic_Input;
   query: {
     reimbursement_id: string;
-    session_token: string;
   };
 };
 
@@ -898,7 +891,6 @@ export type ReimbursementsUpdateReimbursementError = HTTPValidationError;
 export type ReimbursementsDeleteReimbursementData = {
   query: {
     reimbursement_id: string;
-    session_token: string;
   };
 };
 
@@ -1012,6 +1004,14 @@ export type FilesListFilesResponse = unknown;
 
 export type FilesListFilesError = unknown;
 
+export type AuthLoginResponse = unknown;
+
+export type AuthLoginError = unknown;
+
+export type AuthIsOnboardedResponse = unknown;
+
+export type AuthIsOnboardedError = unknown;
+
 export type ItemsCreateItemResponseTransformer = (
   data: any,
 ) => Promise<ItemsCreateItemResponse>;
diff --git a/src/pages/Onboarding.tsx b/src/pages/Onboarding.tsx
new file mode 100644
index 0000000..66e5b6f
--- /dev/null
+++ b/src/pages/Onboarding.tsx
@@ -0,0 +1,36 @@
+import { useState } from "react";
+import { Button, Container, Typography } from "@mui/material";
+import {
+    Container,
+    CircularProgress,
+    Typography,
+    Select,
+    MenuItem,
+    FormControl,
+    InputLabel,
+    Stack,
+    Button,
+    TextField,
+    Alert,
+  } from "@mui/material";
+  import {
+    authIsOnboarded,
+    reimbursementsCreateReimbursement,
+    ledgersReadLedgers,
+  } from "../client/services.gen";
+  import {
+    KstsPublic,
+    KstPublic,
+    ReimbursementsCreateReimbursementData,
+    LedgersPublic,
+    LedgerPublic,
+  } from "../client/types.gen";
+  import { SelectChangeEvent } from "@mui/material/Select";
+  
+  import client from "../apiClientConfig";
+
+
+export default function Onboarding() {
+
+
+}
\ No newline at end of file
-- 
GitLab


From 3a2c5dbeefeefb5e874994b252e68a4c5b035451 Mon Sep 17 00:00:00 2001
From: clemens <clemens@fedora.fritz.box>
Date: Sun, 24 Nov 2024 21:31:33 +0100
Subject: [PATCH 03/10] onboarding      Still a problem with login, causes a
 invalid body in the request

---
 src/main.tsx             |   5 +
 src/pages/Onboarding.tsx | 291 ++++++++++++++++++++++++++++++++++-----
 src/pages/root.tsx       |   5 +
 3 files changed, 266 insertions(+), 35 deletions(-)

diff --git a/src/main.tsx b/src/main.tsx
index 51e22fa..d0c1bc0 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -15,6 +15,7 @@ import Belegformular from "./pages/Belegformular";
 import GenerateItem from "./pages/GenerateItem";
 import GenerateLedger from "./pages/GenerateLedger";
 import InternalTransfer from "./pages/InternalTransfer";
+import Onboarding from "./pages/Onboarding";
 
 const router = createBrowserRouter([
   {
@@ -42,6 +43,10 @@ const router = createBrowserRouter([
         path: "creditlist",
         element: <CreditList />, // Add this route
       },
+      {
+        path: "onboarding",
+        element: <Onboarding />, // Add this route
+      },
     ],
   },
   { path: "callback", element: <Callback /> },
diff --git a/src/pages/Onboarding.tsx b/src/pages/Onboarding.tsx
index 66e5b6f..3abfd8e 100644
--- a/src/pages/Onboarding.tsx
+++ b/src/pages/Onboarding.tsx
@@ -1,36 +1,257 @@
-import { useState } from "react";
-import { Button, Container, Typography } from "@mui/material";
+import React, { useState } from "react";
 import {
-    Container,
-    CircularProgress,
-    Typography,
-    Select,
-    MenuItem,
-    FormControl,
-    InputLabel,
-    Stack,
-    Button,
-    TextField,
-    Alert,
-  } from "@mui/material";
-  import {
-    authIsOnboarded,
-    reimbursementsCreateReimbursement,
-    ledgersReadLedgers,
-  } from "../client/services.gen";
-  import {
-    KstsPublic,
-    KstPublic,
-    ReimbursementsCreateReimbursementData,
-    LedgersPublic,
-    LedgerPublic,
-  } from "../client/types.gen";
-  import { SelectChangeEvent } from "@mui/material/Select";
-  
-  import client from "../apiClientConfig";
-
-
-export default function Onboarding() {
-
-
-}
\ No newline at end of file
+  Container,
+  Typography,
+  Stack,
+  Button,
+  TextField,
+  Alert,
+  CircularProgress,
+} from "@mui/material";
+import { usersCreateUser } from "../client/services.gen";
+import { DbUserCreateData } from "../client/types.gen";
+
+export default function OnboardingPage() {
+  // Constant amiv_id
+  const AMIV_ID = "constant-amiv-id";
+
+  // State to hold form values
+  const [formData, setFormData] = useState<DbUserCreateData>({
+    body: {
+      amiv_id: AMIV_ID,
+      iban: "",
+      address: {
+        name: "",
+        address1: "",
+        address2: "",
+        address3: "",
+        plz: 0,
+        city: "",
+        country: "",
+      },
+    },
+  });
+
+  const [error, setError] = useState<string | null>(null);
+  const [success, setSuccess] = useState<string | null>(null);
+  const [loading, setLoading] = useState<boolean>(false);
+  const [validationErrors, setValidationErrors] = useState<
+    Record<string, string>
+  >({});
+
+  // Handle change to update form data
+  const handleChange = (
+    e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
+  ) => {
+    const { name, value } = e.target;
+
+    setFormData((prevState) => {
+      if (name in prevState.body.address) {
+        return {
+          ...prevState,
+          body: {
+            ...prevState.body,
+            address: {
+              ...prevState.body.address,
+              [name]: name === "plz" ? parseInt(value, 10) || 0 : value,
+            },
+          },
+        };
+      } else {
+        return {
+          ...prevState,
+          body: {
+            ...prevState.body,
+            [name]: value,
+          },
+        };
+      }
+    });
+  };
+
+  // Validate the form before submission
+  const validateForm = (): boolean => {
+    let isValid = true;
+    const errors: Record<string, string> = {};
+
+    // IBAN validation
+    if (!formData.body.iban.trim()) {
+      errors.iban = "IBAN is required";
+      isValid = false;
+    }
+    if (!/^([A-Z0-9 ]{15,34})$/.test(formData.body.iban.trim())) {
+      errors.iban = "IBAN must be a valid format";
+      isValid = false;
+    }
+
+    // Address validation
+    const address = formData.body.address;
+    if (!address.name.trim()) {
+      errors.name = "Name is required";
+      isValid = false;
+    }
+    if (!address.address1.trim()) {
+      errors.address1 = "Address line 1 is required";
+      isValid = false;
+    }
+    if (!address.plz || address.plz <= 0) {
+      errors.plz = "PLZ (postal code) must be greater than zero";
+      isValid = false;
+    }
+    if (!address.city.trim()) {
+      errors.city = "City is required";
+      isValid = false;
+    }
+    if (!address.country.trim()) {
+      errors.country = "Country is required";
+      isValid = false;
+    }
+
+    setValidationErrors(errors); // Set validation errors state
+    return isValid;
+  };
+
+  // Submit form data to the API
+  const handleSubmit = async () => {
+    setError(null);
+    setSuccess(null);
+
+    if (!validateForm()) {
+      return; // Don't submit if validation fails
+    }
+
+    setLoading(true); // Start loading
+
+    try {
+      // Call the backend API using usersCreateUser
+      const r = await usersCreateUser(formData); // The formData contains the `body` key as required
+      console.log(r);
+      setSuccess("User created successfully!");
+
+      // Reset form data after successful submission
+      /* setFormData({
+        body: {
+          amiv_id: AMIV_ID,
+          iban: "",
+          address: {
+            name: "",
+            address1: "",
+            address2: "",
+            address3: "",
+            plz: 0,
+            city: "",
+            country: "",
+          },
+        },
+      }); */
+    } catch (err) {
+      setError("Failed to create user.");
+      console.error("Error creating user:", err);
+    } finally {
+      setLoading(false); // Stop loading
+    }
+  };
+
+  return (
+    <Container>
+      <Typography variant="h4" component="h2" gutterBottom>
+        Onboarding Page
+      </Typography>
+      <Typography variant="body1" gutterBottom>
+        Please fill in your IBAN and address details to complete onboarding.
+      </Typography>
+
+      {/* Display Success or Error messages */}
+      {success && <Alert severity="success">{success}</Alert>}
+      {error && <Alert severity="error">{error}</Alert>}
+
+      {/* Display Validation Errors */}
+      <Stack spacing={2} sx={{ mt: 2 }}>
+        <TextField
+          label="IBAN"
+          name="iban"
+          value={formData.body.iban}
+          onChange={handleChange}
+          fullWidth
+          required
+          error={!!validationErrors.iban}
+          helperText={validationErrors.iban}
+        />
+        <TextField
+          label="Name"
+          name="name"
+          value={formData.body.address.name}
+          onChange={handleChange}
+          fullWidth
+          required
+          error={!!validationErrors.name}
+          helperText={validationErrors.name}
+        />
+        <TextField
+          label="Address Line 1"
+          name="address1"
+          value={formData.body.address.address1}
+          onChange={handleChange}
+          fullWidth
+          required
+          error={!!validationErrors.address1}
+          helperText={validationErrors.address1}
+        />
+        <TextField
+          label="Address Line 2"
+          name="address2"
+          value={formData.body.address.address2}
+          onChange={handleChange}
+          fullWidth
+        />
+        <TextField
+          label="Address Line 3"
+          name="address3"
+          value={formData.body.address.address3}
+          onChange={handleChange}
+          fullWidth
+        />
+        <TextField
+          label="PLZ"
+          name="plz"
+          value={formData.body.address.plz}
+          onChange={handleChange}
+          fullWidth
+          required
+          type="number"
+          error={!!validationErrors.plz}
+          helperText={validationErrors.plz}
+        />
+        <TextField
+          label="City"
+          name="city"
+          value={formData.body.address.city}
+          onChange={handleChange}
+          fullWidth
+          required
+          error={!!validationErrors.city}
+          helperText={validationErrors.city}
+        />
+        <TextField
+          label="Country"
+          name="country"
+          value={formData.body.address.country}
+          onChange={handleChange}
+          fullWidth
+          required
+          error={!!validationErrors.country}
+          helperText={validationErrors.country}
+        />
+
+        {/* Submit button */}
+        <Button
+          variant="contained"
+          onClick={handleSubmit}
+          disabled={loading} // Disable button while loading
+        >
+          {loading ? <CircularProgress size={24} /> : "Complete Onboarding"}
+        </Button>
+      </Stack>
+    </Container>
+  );
+}
diff --git a/src/pages/root.tsx b/src/pages/root.tsx
index 4662ddb..c89a194 100644
--- a/src/pages/root.tsx
+++ b/src/pages/root.tsx
@@ -64,6 +64,11 @@ const navContent = [
     name: "Internal Transfer",
     icon: <ShoppingCart />,
   },
+  {
+    path: "/Onboarding",
+    name: "Onboarding",
+    icon: <Groups />,
+  },
 ] as { path: string; name: string; icon: React.ReactNode }[];
 
 function NavigationList() {
-- 
GitLab


From 2fd802c0f5edcb188bc585d201b5f5e55c43d333 Mon Sep 17 00:00:00 2001
From: Michael Stambach <michael.stambach@protonmail.ch>
Date: Mon, 2 Dec 2024 15:55:07 +0100
Subject: [PATCH 04/10] fix the blue text in the navbar

---
 src/pages/root.tsx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/pages/root.tsx b/src/pages/root.tsx
index 4662ddb..85332eb 100644
--- a/src/pages/root.tsx
+++ b/src/pages/root.tsx
@@ -71,8 +71,8 @@ function NavigationList() {
     <>
       <List>
         {navContent.map((item, index) => (
-          <ListItem key={index} component={Link} to={item.path}>
-            <ListItemButton>
+          <ListItem key={index}>
+            <ListItemButton component={Link} to={item.path}>
               <ListItemIcon>{item.icon}</ListItemIcon>
               <ListItemText primary={item.name} />
             </ListItemButton>
-- 
GitLab


From 1b037b17584030f923f9b0a051d825357eeb17d4 Mon Sep 17 00:00:00 2001
From: Michael Stambach <michael.stambach@protonmail.ch>
Date: Tue, 3 Dec 2024 10:26:08 +0100
Subject: [PATCH 05/10] basic object editor implementation

---
 package.json                    |    2 +
 src/components/ObjectEditor.tsx |  229 +++++++
 src/pages/GenerateItem.tsx      |  195 +-----
 yarn.lock                       | 1077 +++++++++++--------------------
 4 files changed, 619 insertions(+), 884 deletions(-)
 create mode 100644 src/components/ObjectEditor.tsx

diff --git a/package.json b/package.json
index 118ad30..3ce9f35 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,9 @@
     "@mui/base": "^5.0.0-beta.61",
     "@mui/icons-material": "^6.1.6",
     "@mui/material": "^6.1.6",
+    "@mui/x-date-pickers":"^7.23.0",
     "@vitejs/plugin-react": "^4.3.3",
+    "dayjs": "^1.11.13",
     "esnext": "^3.3.1",
     "mui": "^0.0.1",
     "node": "^22.11.0",
diff --git a/src/components/ObjectEditor.tsx b/src/components/ObjectEditor.tsx
new file mode 100644
index 0000000..8d4be91
--- /dev/null
+++ b/src/components/ObjectEditor.tsx
@@ -0,0 +1,229 @@
+import { Paper, Stack, Typography, Button, TextField, FormControlLabel, Checkbox, FormControl, InputLabel, Select, SelectChangeEvent, MenuItem, ButtonGroup, Dialog, DialogTitle, DialogContentText, DialogContent, DialogActions, Container, Snackbar, Alert } from "@mui/material";
+import React, { useContext, useState } from "react";
+import { useNavigate } from "react-router-dom";
+import { DateTimePicker } from "@mui/x-date-pickers";
+import dayjs from "dayjs";
+
+export enum FieldType {
+    STRING,
+    NUMERIC,
+    BOOLEAN,
+    DATETIME
+}
+
+export interface SelectMenuItem {
+    label: string,
+    value: string | number
+}
+
+export interface FieldConfig<T> {
+    name: keyof T,
+    label: string,
+    type: FieldType,
+    items?: SelectMenuItem[]
+}
+
+interface ObjectEditorInterface<ItemT> {
+    fieldConfigs: FieldConfig<ItemT>[],
+    header: string,
+    initial: ItemT,
+    submitter: (changes: ItemT) => Promise<void>,
+    deleter?: () => Promise<void>,
+    secondary?: boolean // set this if editor is not the main editor in the page (prevent navigation)
+}
+
+export default function ObjectEditor<ItemT>({fieldConfigs, header, initial, submitter, deleter, secondary}: ObjectEditorInterface<ItemT>) {
+    const initialMap = new Map<keyof ItemT, string>(fieldConfigs.map(fc => [fc.name, initial ? String(initial[fc.name]) : ""]));
+
+    const [item, setItem] = useState(initialMap);
+    const [changedFields, setChangedFields] = useState(initial ? new Set<keyof ItemT>() : new Set<keyof ItemT>(initialMap.keys()));
+    const [fieldErrors, setFieldErrors] = useState<Map<string, string>>(new Map());
+    const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
+
+    const [showStatusAlert, setShowStatusAlert] = useState(false);
+    const [statusAlertStatusOk, setStatusAlertStatusOk] = useState(false);
+    const [statusAlertFailReason, setStatusAlertFailreason] = useState("unknown error");
+
+    const showSuccess = () => {
+        setStatusAlertStatusOk(true);
+        setStatusAlertFailreason("unknown error");
+        setShowStatusAlert(true);
+    };
+
+    const showFailure = (reason: string) => {
+        setStatusAlertStatusOk(false);
+        setStatusAlertFailreason(reason);
+        setShowStatusAlert(true);
+    };
+
+    const handleCloseStatusAlert = () => setShowStatusAlert(false);
+
+    const navigate = useNavigate();
+
+    const handleTextFieldChange = (ev: React.ChangeEvent<HTMLInputElement>) => {
+        const key = ev.target.name as keyof ItemT;
+        setItem(new Map(item).set(key, ev.target.value));
+        setChangedFields(cf => {cf.add(key); return cf;})
+    };
+
+    const handleCheckboxChange = (ev: React.ChangeEvent<HTMLInputElement>) => {
+        const key = ev.target.name as keyof ItemT;
+        setItem(new Map(item).set(key, String(ev.target.checked)));
+        setChangedFields(cf => {cf.add(key); return cf;})
+    };
+
+    const handleSelectChange = (ev: SelectChangeEvent) => {
+        const key = ev.target.name as keyof ItemT;
+        setItem(new Map(item).set(key, ev.target.value));
+        setChangedFields(cf => {cf.add(key); return cf;})
+    };
+
+    const handleDateTimePickerChange = (name: keyof ItemT, value: dayjs.Dayjs | null) => {
+        if (value) {
+            setItem(new Map(item).set(name, value.format("YYYY-MM-DDTHH:mm:ss")));
+        }
+        setChangedFields(cf => {cf.add(name); return cf;})
+    };
+
+
+    const handleSubmit = () => {
+        let updated = initial;
+        setFieldErrors(new Map());
+        let parsingError = false;
+        fieldConfigs.forEach(fc => {
+            if (changedFields.has(fc.name)) {
+                const fieldName = fc.name as string;
+                // some silly "casting" going on here to make typescript happier
+                if (fc.type == FieldType.NUMERIC) {
+                    const numericValue = Number(item.get(fc.name));
+                    if (isNaN(numericValue)) {
+                        parsingError = true;
+                        setFieldErrors(errors => errors.set(fieldName, "Please enter a number"));
+                    } else {
+                        updated[fc.name] = numericValue as ItemT[keyof ItemT];
+                    }
+                } else if (fc.type == FieldType.BOOLEAN) {
+                    updated[fc.name] = Boolean(item.get(fc.name) == "true") as ItemT[keyof ItemT];
+                } else {
+                    updated[fc.name] = String(item.get(fc.name)) as ItemT[keyof ItemT];
+                }
+            }
+        });
+        // if no parsing error do below
+        // and delete changed fields as well as errors on success
+        if (!parsingError) {
+            submitter(updated).then(() => {
+                showSuccess();
+                setChangedFields(new Set<keyof ItemT>());
+                /*
+                if (!initial) {
+                    // ugly
+                    if (!secondary) navigate(window.location.pathname.replace("/new", `/${item.id}`));
+                    else navigate(0);
+                }
+                */
+            }, (err: Error) => showFailure(err.message));
+        } else {
+            showFailure("There are errors in the form, please fix them and try again!");
+        }
+    };
+
+    const handleDeleteDialogOpen = () => {
+        setDeleteDialogOpen(true);
+    };
+
+    const handleDeleteDialogClose = () => {
+        setDeleteDialogOpen(false);
+    };
+
+    const handleDelete = () => {
+        if (deleter) deleter().then(() => {
+            showSuccess();
+            if (!secondary) navigate("/admin");
+            else navigate(0);
+        }, (err) => {showFailure(err)});
+        handleDeleteDialogClose();
+    };
+
+
+
+    return <Container>
+        <Paper variant="outlined" sx={{margin: 1, padding: 2}}>
+            <Dialog
+                open={deleteDialogOpen}
+                onClose={handleDeleteDialogClose}
+                >
+                <DialogTitle>Delete?</DialogTitle>
+                <DialogContent>
+                    <DialogContentText>
+                        Are you sure you want to delete this object?
+                    </DialogContentText>
+                </DialogContent>
+                <DialogActions>
+                    <Button onClick={handleDeleteDialogClose} autoFocus>No</Button>
+                    <Button onClick={handleDelete}>Yes!</Button>
+                </DialogActions>
+            </Dialog>
+            <Stack direction="row" justifyContent="space-between" spacing={2} sx={{margin: 2}}>
+                <Typography variant="h4" component="h2">{header}</Typography>
+                <ButtonGroup variant="contained">
+                    {deleter && <Button onClick={handleDeleteDialogOpen}>Delete</Button>}
+                    <Button onClick={handleSubmit} disabled={changedFields.size == 0}>Apply Changes</Button>
+                </ButtonGroup>
+            </Stack>
+            <Stack spacing={2}>
+                {fieldConfigs.map(fconf => {
+                    const fieldName = fconf.name as string;
+                    const error = fieldErrors.get(fieldName);
+                    if (fconf.items){
+                        // providing items always causes a dropdown
+                        return <FormControl key={fieldName} color={changedFields.has(fconf.name) ? "warning" : "primary"}>
+                            <InputLabel id={`${fieldName}-select-label`}>{fconf.label}</InputLabel>
+                            <Select
+                                labelId={`${fieldName}-select-label`}
+                                name={fieldName}
+                                value={String(item.get(fconf.name))}
+                                label={fconf.label}
+                                onChange={handleSelectChange}
+                            >{fconf.items.map(it => <MenuItem key={`menuitem-${fieldName}-${it.value}`} value={it.value}>{it.label}</MenuItem>)}</Select>
+                            </FormControl>
+                    } else if (fconf.type == FieldType.STRING || fconf.type == FieldType.NUMERIC) {
+                        return <TextField
+                            key={fieldName}
+                            name={fieldName}
+                            label={fconf.label}
+                            value={item.get(fconf.name)}
+                            onChange={handleTextFieldChange}
+                            color={changedFields.has(fconf.name) ? "warning" : "primary"}
+                            error={error != undefined}
+                            helperText={error}/>
+                    } else if (fconf.type == FieldType.BOOLEAN) {
+                        return <FormControlLabel key={fieldName} control={
+                            <Checkbox name={fieldName} checked={item.get(fconf.name) == "true"} onChange={handleCheckboxChange}/>
+                        } label={fconf.label}/>
+                    } else if (fconf.type == FieldType.DATETIME) {
+                        return <DateTimePicker
+                            key={fieldName}
+                            name={fieldName}
+                            label={fconf.label}
+                            value={dayjs(item.get(fconf.name))}
+                            onChange={(value) => {handleDateTimePickerChange(fconf.name, value)}}/>
+                    } else {
+                        return <Typography key={fieldName}>The type of field {fieldName} is not implemented yet!</Typography>
+                    }
+                })}
+            </Stack>
+        </Paper>
+        <Snackbar open={showStatusAlert} autoHideDuration={4000} onClose={handleCloseStatusAlert}>
+            <Alert
+                onClose={handleCloseStatusAlert}
+                severity={statusAlertStatusOk ? "success" : "error"}
+                variant="filled"
+                sx={{ width: '100%' }}
+            >
+                {statusAlertStatusOk ? "Changes submitted sucessfully" : statusAlertFailReason}
+            </Alert>
+        </Snackbar>
+    </Container>
+
+}
\ No newline at end of file
diff --git a/src/pages/GenerateItem.tsx b/src/pages/GenerateItem.tsx
index e25ecc9..87b1d9f 100644
--- a/src/pages/GenerateItem.tsx
+++ b/src/pages/GenerateItem.tsx
@@ -9,187 +9,42 @@ import {
   Alert,
 } from "@mui/material";
 import { itemsCreateItem } from "../client/services.gen";
-import { ItemsCreateItemData } from "../client/types.gen";
+import { ItemBase, ItemsCreateItemData } from "../client/types.gen";
 
 import client from "../apiClientConfig";
+import ObjectEditor, { FieldConfig, FieldType } from "../components/ObjectEditor";
 
-export default function GenerateItem() {
-  // State to hold form values
-  const [formData, setFormData] = useState<ItemsCreateItemData>({
-    body: {
-      title_de: "",
-      description_de: "",
-      title_en: "",
-      description_en: "",
-      price: 0,
-      unit: "",
-      active: true,
-    },
-  });
-  const [error, setError] = useState<string | null>(null);
-  const [success, setSuccess] = useState<string | null>(null);
-  const [loading, setLoading] = useState<boolean>(false);
-  const [validationErrors, setValidationErrors] = useState<
-    Record<string, string>
-  >({});
-
-  // Handle change to update form data
-  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
-    const { name, value } = e.target;
-
-    setFormData({
-      ...formData,
-      body: {
-        ...formData.body,
-        [name]: value,
-      },
-    });
-  };
 
-  // Validate the form before submission
-  const validateForm = (): boolean => {
-    let isValid = true;
-    const errors: Record<string, string> = {};
-
-    // Check if all required fields are filled in
-    if (!formData.body.title_de.trim()) {
-      errors.title_de = "Titel Deutsch is required";
-      isValid = false;
-    }
-    if (!formData.body.title_en.trim()) {
-      errors.title_en = "Titel Englisch is required";
-      isValid = false;
-    }
-    if (!formData.body.price || formData.body.price <= 0) {
-      errors.price = "Price must be greater than zero";
-      isValid = false;
-    }
-    if (!formData.body.description_de.trim()) {
-      errors.description_de = "Beschreibung Deutsch is required";
-      isValid = false;
-    }
-    if (!formData.body.description_en.trim()) {
-      errors.description_en = "Beschreibung Englisch is required";
-      isValid = false;
-    }
-
-    setValidationErrors(errors); // Set validation errors state
-    return isValid;
-  };
+const fieldConfig: FieldConfig<ItemBase>[] = [
+  {name: "title_de", label: "Titel Deutsch", type: FieldType.STRING},
+  {name: "title_en", label: "Titel Englisch", type: FieldType.STRING},
+  {name: "description_de", label: "Beschreibung Deutsch", type: FieldType.STRING},
+  {name: "description_en", label: "Beschreibung Englisch", type: FieldType.STRING},
+  {name: "price", label: "Preis", type: FieldType.NUMERIC}
+]
 
-  // Submit form data to the API
-  const handleSubmit = async () => {
-    setError(null);
-    setSuccess(null);
 
-    if (!validateForm()) {
-      return; // Don't submit if validation fails
-    }
-
-    setLoading(true); // Start loading
-
-    try {
-      // Call API to create a new item
-      await itemsCreateItem(formData);
-      setSuccess("Item created successfully!");
+export default function GenerateItem() {
 
-      // Reset form data after successful submission
-      setFormData({
-        body: {
-          title_de: "",
-          description_de: "",
-          title_en: "",
-          description_en: "",
-          price: 0,
-          unit: "",
-          active: true,
-        },
-      });
-    } catch (err) {
-      setError("Failed to create New Item.");
-      console.error("Error creating new Item:", err);
-    } finally {
-      setLoading(false); // Stop loading
-    }
+  const initialElement: ItemBase = {
+    title_de: "",
+    description_de: "",
+    title_en: "",
+    description_en: "",
+    price: 0,
+    unit: "",
+    active: true,
+  }
+
+  const submitter = async (changes: ItemBase) => {
+    console.log(changes);
+    // todo: call api here to submit changes
+    //return itemsCreateItem({body: changes});
   };
 
   return (
     <Container>
-      <Typography variant="h4" component="h2" gutterBottom>
-        Create new Invoice Item
-      </Typography>
-      <Typography variant="body1" gutterBottom>
-        Use this form to create a new item for invoices. Enter all requested
-        Data.
-      </Typography>
-
-      {/* Display Success or Error messages */}
-      {success && <Alert severity="success">{success}</Alert>}
-      {error && <Alert severity="error">{error}</Alert>}
-
-      {/* Display Validation Errors */}
-      <Stack spacing={2} sx={{ mt: 2 }}>
-        <TextField
-          label="Titel Deutsch"
-          name="title_de"
-          value={formData.body.title_de}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.title_de}
-          helperText={validationErrors.title_de}
-        />
-        <TextField
-          label="Beschreibung Deutsch"
-          name="description_de"
-          value={formData.body.description_de}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.description_de}
-          helperText={validationErrors.description_de}
-        />
-        <TextField
-          label="Titel Englisch"
-          name="title_en"
-          value={formData.body.title_en}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.title_en}
-          helperText={validationErrors.title_en}
-        />
-        <TextField
-          label="Beschreibung Englisch"
-          name="description_en"
-          value={formData.body.description_en}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.description_en}
-          helperText={validationErrors.description_en}
-        />
-        <TextField
-          label="Preis in Rappen und ohne MwSt"
-          name="price"
-          value={formData.body.price}
-          onChange={handleChange}
-          fullWidth
-          required
-          type="number"
-          error={!!validationErrors.price}
-          helperText={validationErrors.price}
-        />
-
-        {/* Submit button */}
-        <Button
-          variant="contained"
-          onClick={handleSubmit}
-          disabled={loading} // Disable button while loading
-        >
-          {loading ? <CircularProgress size={24} /> : "Submit Payment"}
-        </Button>
-      </Stack>
+      <ObjectEditor fieldConfigs={fieldConfig} header="Add Item" submitter={submitter} initial={initialElement}/>
     </Container>
   );
 }
diff --git a/yarn.lock b/yarn.lock
index 0cc55c5..84348f6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4,7 +4,7 @@
 
 "@ampproject/remapping@^2.2.0":
   version "2.3.0"
-  resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
+  resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz"
   integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
   dependencies:
     "@jridgewell/gen-mapping" "^0.3.5"
@@ -12,16 +12,16 @@
 
 "@apidevtools/json-schema-ref-parser@11.7.2":
   version "11.7.2"
-  resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz#cdf3e0aded21492364a70e193b45b7cf4177f031"
+  resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz"
   integrity sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==
   dependencies:
     "@jsdevtools/ono" "^7.1.3"
     "@types/json-schema" "^7.0.15"
     js-yaml "^4.1.0"
 
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0":
   version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+  resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz"
   integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
   dependencies:
     "@babel/helper-validator-identifier" "^7.25.9"
@@ -30,12 +30,12 @@
 
 "@babel/compat-data@^7.25.9":
   version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e"
+  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz"
   integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==
 
-"@babel/core@^7.25.2":
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.25.2":
   version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40"
+  resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz"
   integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
   dependencies:
     "@ampproject/remapping" "^2.2.0"
@@ -56,7 +56,7 @@
 
 "@babel/generator@^7.25.9", "@babel/generator@^7.26.0":
   version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f"
+  resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz"
   integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==
   dependencies:
     "@babel/parser" "^7.26.2"
@@ -67,7 +67,7 @@
 
 "@babel/helper-compilation-targets@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875"
+  resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz"
   integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==
   dependencies:
     "@babel/compat-data" "^7.25.9"
@@ -78,7 +78,7 @@
 
 "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
+  resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz"
   integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
   dependencies:
     "@babel/traverse" "^7.25.9"
@@ -86,7 +86,7 @@
 
 "@babel/helper-module-transforms@^7.26.0":
   version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
+  resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz"
   integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
   dependencies:
     "@babel/helper-module-imports" "^7.25.9"
@@ -95,27 +95,27 @@
 
 "@babel/helper-plugin-utils@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46"
+  resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz"
   integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==
 
 "@babel/helper-string-parser@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+  resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz"
   integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
 
 "@babel/helper-validator-identifier@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+  resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
   integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
 
 "@babel/helper-validator-option@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
+  resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz"
   integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
 
 "@babel/helpers@^7.26.0":
   version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4"
+  resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz"
   integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==
   dependencies:
     "@babel/template" "^7.25.9"
@@ -123,35 +123,35 @@
 
 "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2":
   version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11"
+  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz"
   integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==
   dependencies:
     "@babel/types" "^7.26.0"
 
 "@babel/plugin-transform-react-jsx-self@^7.24.7":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz"
   integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==
   dependencies:
     "@babel/helper-plugin-utils" "^7.25.9"
 
 "@babel/plugin-transform-react-jsx-source@^7.24.7":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz"
   integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==
   dependencies:
     "@babel/helper-plugin-utils" "^7.25.9"
 
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.26.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
   version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
+  resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz"
   integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
   dependencies:
     regenerator-runtime "^0.14.0"
 
 "@babel/template@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
+  resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz"
   integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
   dependencies:
     "@babel/code-frame" "^7.25.9"
@@ -160,7 +160,7 @@
 
 "@babel/traverse@^7.0.0-beta.42", "@babel/traverse@^7.25.9":
   version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84"
+  resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz"
   integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==
   dependencies:
     "@babel/code-frame" "^7.25.9"
@@ -173,7 +173,7 @@
 
 "@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.42", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0":
   version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff"
+  resolved "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz"
   integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==
   dependencies:
     "@babel/helper-string-parser" "^7.25.9"
@@ -181,7 +181,7 @@
 
 "@emotion/babel-plugin@^11.12.0":
   version "11.12.0"
-  resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2"
+  resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz"
   integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==
   dependencies:
     "@babel/helper-module-imports" "^7.16.7"
@@ -198,7 +198,7 @@
 
 "@emotion/cache@^11.13.0", "@emotion/cache@^11.13.1":
   version "11.13.1"
-  resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7"
+  resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz"
   integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==
   dependencies:
     "@emotion/memoize" "^0.9.0"
@@ -209,24 +209,24 @@
 
 "@emotion/hash@^0.9.2":
   version "0.9.2"
-  resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b"
+  resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz"
   integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==
 
 "@emotion/is-prop-valid@^1.3.0":
   version "1.3.1"
-  resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240"
+  resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz"
   integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==
   dependencies:
     "@emotion/memoize" "^0.9.0"
 
 "@emotion/memoize@^0.9.0":
   version "0.9.0"
-  resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102"
+  resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz"
   integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
 
-"@emotion/react@^11.13.3":
+"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.13.3", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.9.0":
   version "11.13.3"
-  resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4"
+  resolved "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz"
   integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==
   dependencies:
     "@babel/runtime" "^7.18.3"
@@ -240,7 +240,7 @@
 
 "@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0", "@emotion/serialize@^1.3.1", "@emotion/serialize@^1.3.2":
   version "1.3.2"
-  resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a"
+  resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz"
   integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==
   dependencies:
     "@emotion/hash" "^0.9.2"
@@ -251,12 +251,12 @@
 
 "@emotion/sheet@^1.4.0":
   version "1.4.0"
-  resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c"
+  resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz"
   integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
 
-"@emotion/styled@^11.13.0":
+"@emotion/styled@^11.13.0", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1":
   version "11.13.0"
-  resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.13.0.tgz#633fd700db701472c7a5dbef54d6f9834e9fb190"
+  resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz"
   integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==
   dependencies:
     "@babel/runtime" "^7.18.3"
@@ -268,159 +268,49 @@
 
 "@emotion/unitless@^0.10.0":
   version "0.10.0"
-  resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745"
+  resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz"
   integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==
 
 "@emotion/use-insertion-effect-with-fallbacks@^1.1.0":
   version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf"
+  resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz"
   integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==
 
 "@emotion/utils@^1.4.0", "@emotion/utils@^1.4.1":
   version "1.4.1"
-  resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad"
+  resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz"
   integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==
 
 "@emotion/weak-memoize@^0.4.0":
   version "0.4.0"
-  resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6"
+  resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
   integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
 
-"@esbuild/aix-ppc64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
-  integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
-
-"@esbuild/android-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
-  integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
-
-"@esbuild/android-arm@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
-  integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
-
-"@esbuild/android-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
-  integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
-
-"@esbuild/darwin-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
-  integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
-
-"@esbuild/darwin-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
-  integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
-
-"@esbuild/freebsd-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
-  integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
-
-"@esbuild/freebsd-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
-  integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
-
-"@esbuild/linux-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
-  integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
-
-"@esbuild/linux-arm@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
-  integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
-
-"@esbuild/linux-ia32@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
-  integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
-
-"@esbuild/linux-loong64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
-  integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
-
-"@esbuild/linux-mips64el@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
-  integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
-
-"@esbuild/linux-ppc64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
-  integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
-
-"@esbuild/linux-riscv64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
-  integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
-
-"@esbuild/linux-s390x@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
-  integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
-
 "@esbuild/linux-x64@0.21.5":
   version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
+  resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz"
   integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
 
-"@esbuild/netbsd-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
-  integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
-
-"@esbuild/openbsd-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
-  integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
-
-"@esbuild/sunos-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
-  integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
-
-"@esbuild/win32-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
-  integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
-
-"@esbuild/win32-ia32@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
-  integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
-
-"@esbuild/win32-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
-  integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
-
 "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
   version "4.4.1"
-  resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
+  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz"
   integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==
   dependencies:
     eslint-visitor-keys "^3.4.3"
 
 "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1":
   version "4.12.1"
-  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
+  resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz"
   integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
 
 "@eslint/compat@^1.2.2":
   version "1.2.2"
-  resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.2.2.tgz#46d02898df7e32ccc04166b6ea2689c52dee10da"
+  resolved "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.2.tgz"
   integrity sha512-jhgiIrsw+tRfcBQ4BFl2C3vCrIUw2trCY0cnDvGZpwTtKCEDmZhAtMfrEUP/KpnwM6PrO0T+Ltm+ccW74olG3Q==
 
 "@eslint/config-array@^0.18.0":
   version "0.18.0"
-  resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
+  resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz"
   integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
   dependencies:
     "@eslint/object-schema" "^2.1.4"
@@ -429,12 +319,12 @@
 
 "@eslint/core@^0.7.0":
   version "0.7.0"
-  resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3"
+  resolved "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz"
   integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==
 
 "@eslint/eslintrc@^3.1.0":
   version "3.1.0"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
+  resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz"
   integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
   dependencies:
     ajv "^6.12.4"
@@ -447,33 +337,33 @@
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@9.14.0", "@eslint/js@^9.14.0":
+"@eslint/js@^9.14.0", "@eslint/js@9.14.0":
   version "9.14.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.14.0.tgz#2347a871042ebd11a00fd8c2d3d56a265ee6857e"
+  resolved "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz"
   integrity sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==
 
 "@eslint/object-schema@^2.1.4":
   version "2.1.4"
-  resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
+  resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz"
   integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
 
 "@eslint/plugin-kit@^0.2.0":
   version "0.2.2"
-  resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz#5eff371953bc13e3f4d88150e2c53959f64f74f6"
+  resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz"
   integrity sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==
   dependencies:
     levn "^0.4.1"
 
 "@floating-ui/core@^1.6.0":
   version "1.6.8"
-  resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12"
+  resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz"
   integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==
   dependencies:
     "@floating-ui/utils" "^0.2.8"
 
 "@floating-ui/dom@^1.0.0":
   version "1.6.12"
-  resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.12.tgz#6333dcb5a8ead3b2bf82f33d6bc410e95f54e556"
+  resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz"
   integrity sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==
   dependencies:
     "@floating-ui/core" "^1.6.0"
@@ -481,24 +371,24 @@
 
 "@floating-ui/react-dom@^2.1.1":
   version "2.1.2"
-  resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
+  resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz"
   integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
   dependencies:
     "@floating-ui/dom" "^1.0.0"
 
 "@floating-ui/utils@^0.2.8":
   version "0.2.8"
-  resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
+  resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz"
   integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
 
 "@hey-api/client-fetch@^0.4.2":
   version "0.4.2"
-  resolved "https://registry.yarnpkg.com/@hey-api/client-fetch/-/client-fetch-0.4.2.tgz#02924579205dcfd4cb7c33db236007cb617ab30d"
+  resolved "https://registry.npmjs.org/@hey-api/client-fetch/-/client-fetch-0.4.2.tgz"
   integrity sha512-9BqcLTjsM3rWbads3afJkELS86vK7EqJvYgT429EVS9IO/kN75HEka3Ay/k142xCHSfXOuOShMdDam3nbG8wVA==
 
 "@hey-api/openapi-ts@^0.54.2":
   version "0.54.2"
-  resolved "https://registry.yarnpkg.com/@hey-api/openapi-ts/-/openapi-ts-0.54.2.tgz#f8b27b77b52243f8230663e73e98483c7f155795"
+  resolved "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.54.2.tgz"
   integrity sha512-hU/Xf8D5yOSA5JsOkM0x4Sz9jChI0v4JMkkk3sy1Tc3DXbbr+s3uyJngvYoimXOq6ljF/9QSCtrk7z5LXxd64g==
   dependencies:
     "@apidevtools/json-schema-ref-parser" "11.7.2"
@@ -508,12 +398,12 @@
 
 "@humanfs/core@^0.19.1":
   version "0.19.1"
-  resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
+  resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz"
   integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
 
 "@humanfs/node@^0.16.6":
   version "0.16.6"
-  resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e"
+  resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz"
   integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==
   dependencies:
     "@humanfs/core" "^0.19.1"
@@ -521,22 +411,22 @@
 
 "@humanwhocodes/module-importer@^1.0.1":
   version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+  resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
   integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
 
 "@humanwhocodes/retry@^0.3.0":
   version "0.3.1"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
+  resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz"
   integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
 
 "@humanwhocodes/retry@^0.4.0":
   version "0.4.0"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.0.tgz#b57438cab2a2381b4b597b0ab17339be381bd755"
+  resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.0.tgz"
   integrity sha512-xnRgu9DxZbkWak/te3fcytNyp8MTbuiZIaueg2rgEvBuN55n04nwLYLU9TX/VVlusc9L2ZNXi99nUFNkHXtr5g==
 
 "@jridgewell/gen-mapping@^0.3.5":
   version "0.3.5"
-  resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
+  resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"
   integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
   dependencies:
     "@jridgewell/set-array" "^1.2.1"
@@ -545,22 +435,22 @@
 
 "@jridgewell/resolve-uri@^3.1.0":
   version "3.1.2"
-  resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+  resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
   integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
 
 "@jridgewell/set-array@^1.2.1":
   version "1.2.1"
-  resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+  resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz"
   integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
 
 "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
   version "1.5.0"
-  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+  resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
   integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
 
 "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
   version "0.3.25"
-  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+  resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
   integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
   dependencies:
     "@jridgewell/resolve-uri" "^3.1.0"
@@ -568,12 +458,12 @@
 
 "@jsdevtools/ono@^7.1.3":
   version "7.1.3"
-  resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
+  resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz"
   integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
 
 "@mui/base@^5.0.0-beta.61":
   version "5.0.0-beta.61"
-  resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.61.tgz#729e816b5104da1eeeacb11d1e61be90f2c21dcc"
+  resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.61.tgz"
   integrity sha512-YaMOTXS3ecDNGsPKa6UdlJ8loFLvcL9+VbpCK3hfk71OaNauZRp4Yf7KeXDYr7Ms3M/XBD3SaiR6JMr6vYtfDg==
   dependencies:
     "@babel/runtime" "^7.26.0"
@@ -586,19 +476,19 @@
 
 "@mui/core-downloads-tracker@^6.1.6":
   version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.6.tgz#73d96e75689b2af922a989123149a3497c8a96fa"
+  resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.6.tgz"
   integrity sha512-nz1SlR9TdBYYPz4qKoNasMPRiGb4PaIHFkzLzhju0YVYS5QSuFF2+n7CsiHMIDcHv3piPu/xDWI53ruhOqvZwQ==
 
 "@mui/icons-material@^6.1.6":
   version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-6.1.6.tgz#bfaf32874a9f9ec88c07d1ca132d1a0671e9ed7c"
+  resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.6.tgz"
   integrity sha512-5r9urIL2lxXb/sPN3LFfFYEibsXJUb986HhhIeu1gOcte460pwdSiEhBSxkAuyT8Dj7jvu9MjqSBmSumQELo8A==
   dependencies:
     "@babel/runtime" "^7.26.0"
 
-"@mui/material@^6.1.6":
+"@mui/material@^5.15.14 || ^6.0.0", "@mui/material@^6.1.6":
   version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/material/-/material-6.1.6.tgz#505d7300401f6af38426006d7fb3b8707dc10fbc"
+  resolved "https://registry.npmjs.org/@mui/material/-/material-6.1.6.tgz"
   integrity sha512-1yvejiQ/601l5AK3uIdUlAVElyCxoqKnl7QA+2oFB/2qYPWfRwDgavW/MoywS5Y2gZEslcJKhe0s2F3IthgFgw==
   dependencies:
     "@babel/runtime" "^7.26.0"
@@ -616,7 +506,7 @@
 
 "@mui/private-theming@^6.1.6":
   version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-6.1.6.tgz#9966bf2eca3d626cddd6e173752f46d344c7d7d1"
+  resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.6.tgz"
   integrity sha512-ioAiFckaD/fJSnTrUMWgjl9HYBWt7ixCh7zZw7gDZ+Tae7NuprNV6QJK95EidDT7K0GetR2rU3kAeIR61Myttw==
   dependencies:
     "@babel/runtime" "^7.26.0"
@@ -625,7 +515,7 @@
 
 "@mui/styled-engine@^6.1.6":
   version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-6.1.6.tgz#61996621a0297aac16061e1739a738a899613fd6"
+  resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.6.tgz"
   integrity sha512-I+yS1cSuSvHnZDBO7e7VHxTWpj+R7XlSZvTC4lS/OIbUNJOMMSd3UDP6V2sfwzAdmdDNBi7NGCRv2SZ6O9hGDA==
   dependencies:
     "@babel/runtime" "^7.26.0"
@@ -635,9 +525,9 @@
     csstype "^3.1.3"
     prop-types "^15.8.1"
 
-"@mui/system@^6.1.6":
+"@mui/system@^5.15.14 || ^6.0.0", "@mui/system@^6.1.6":
   version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/system/-/system-6.1.6.tgz#d335d6952092f3c758c8b78c2d993aa13ef58175"
+  resolved "https://registry.npmjs.org/@mui/system/-/system-6.1.6.tgz"
   integrity sha512-qOf1VUE9wK8syiB0BBCp82oNBAVPYdj4Trh+G1s+L+ImYiKlubWhhqlnvWt3xqMevR+D2h1CXzA1vhX2FvA+VQ==
   dependencies:
     "@babel/runtime" "^7.26.0"
@@ -651,12 +541,12 @@
 
 "@mui/types@^7.2.19":
   version "7.2.19"
-  resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.19.tgz#c941954dd24393fdce5f07830d44440cf4ab6c80"
+  resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz"
   integrity sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==
 
-"@mui/utils@^6.1.6":
+"@mui/utils@^5.16.6 || ^6.0.0", "@mui/utils@^6.1.6":
   version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-6.1.6.tgz#4b9fd34da3a1dd4700fe506a20ca7da3933ba48e"
+  resolved "https://registry.npmjs.org/@mui/utils/-/utils-6.1.6.tgz"
   integrity sha512-sBS6D9mJECtELASLM+18WUcXF6RH3zNxBRFeyCRg8wad6NbyNrdxLuwK+Ikvc38sTZwBzAz691HmSofLqHd9sQ==
   dependencies:
     "@babel/runtime" "^7.26.0"
@@ -666,22 +556,43 @@
     prop-types "^15.8.1"
     react-is "^18.3.1"
 
+"@mui/x-date-pickers@^7.23.0":
+  version "7.23.0"
+  resolved "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.23.0.tgz"
+  integrity sha512-Db9ElibVYHluXLVsRLfFwlYkL6/3NNE5AosSZiTx+Gw7uix/Z3pdjyHeA3ab65fU1tCk08XHY0PU6LQFifYB2g==
+  dependencies:
+    "@babel/runtime" "^7.25.7"
+    "@mui/utils" "^5.16.6 || ^6.0.0"
+    "@mui/x-internals" "7.23.0"
+    "@types/react-transition-group" "^4.4.11"
+    clsx "^2.1.1"
+    prop-types "^15.8.1"
+    react-transition-group "^4.4.5"
+
+"@mui/x-internals@7.23.0":
+  version "7.23.0"
+  resolved "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.23.0.tgz"
+  integrity sha512-bPclKpqUiJYIHqmTxSzMVZi6MH51cQsn5U+8jskaTlo3J4QiMeCYJn/gn7YbeR9GOZFp8hetyHjoQoVHKRXCig==
+  dependencies:
+    "@babel/runtime" "^7.25.7"
+    "@mui/utils" "^5.16.6 || ^6.0.0"
+
 "@nodelib/fs.scandir@2.1.5":
   version "2.1.5"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+  resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
   integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
   dependencies:
     "@nodelib/fs.stat" "2.0.5"
     run-parallel "^1.1.9"
 
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
   version "2.0.5"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+  resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
   integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
 
 "@nodelib/fs.walk@^1.2.3":
   version "1.2.8"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+  resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
   integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
   dependencies:
     "@nodelib/fs.scandir" "2.1.5"
@@ -689,151 +600,27 @@
 
 "@popperjs/core@^2.11.8":
   version "2.11.8"
-  resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+  resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
   integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
 
-"@redocly/ajv@^8.11.2":
-  version "8.11.2"
-  resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.11.2.tgz#46e1bf321ec0ac1e0fd31dea41a3d1fcbdcda0b5"
-  integrity sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==
-  dependencies:
-    fast-deep-equal "^3.1.1"
-    json-schema-traverse "^1.0.0"
-    require-from-string "^2.0.2"
-    uri-js-replace "^1.0.1"
-
-"@redocly/config@^0.16.0":
-  version "0.16.0"
-  resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.16.0.tgz#4b7700a5cb6e04bc6d6fdb94b871c9e260a1fba6"
-  integrity sha512-t9jnODbUcuANRSl/K4L9nb12V+U5acIHnVSl26NWrtSdDZVtoqUXk2yGFPZzohYf62cCfEQUT8ouJ3bhPfpnJg==
-
-"@redocly/openapi-core@^1.25.9":
-  version "1.25.11"
-  resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.25.11.tgz#93f168284986da6809363b001e9aa7c2104c2fc0"
-  integrity sha512-bH+a8izQz4fnKROKoX3bEU8sQ9rjvEIZOqU6qTmxlhOJ0NsKa5e+LmU18SV0oFeg5YhWQhhEDihXkvKJ1wMMNQ==
-  dependencies:
-    "@redocly/ajv" "^8.11.2"
-    "@redocly/config" "^0.16.0"
-    colorette "^1.2.0"
-    https-proxy-agent "^7.0.4"
-    js-levenshtein "^1.1.6"
-    js-yaml "^4.1.0"
-    lodash.isequal "^4.5.0"
-    minimatch "^5.0.1"
-    node-fetch "^2.6.1"
-    pluralize "^8.0.0"
-    yaml-ast-parser "0.0.43"
-
 "@remix-run/router@1.20.0":
   version "1.20.0"
-  resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.20.0.tgz#03554155b45d8b529adf635b2f6ad1165d70d8b4"
+  resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz"
   integrity sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==
 
-"@rollup/rollup-android-arm-eabi@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz#c460b54c50d42f27f8254c435a4f3b3e01910bc8"
-  integrity sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==
-
-"@rollup/rollup-android-arm64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz#96e01f3a04675d8d5973ab8d3fd6bc3be21fa5e1"
-  integrity sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==
-
-"@rollup/rollup-darwin-arm64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz#9b2ec23b17b47cbb2f771b81f86ede3ac6730bce"
-  integrity sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==
-
-"@rollup/rollup-darwin-x64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz#f30e4ee6929e048190cf10e0daa8e8ae035b6e46"
-  integrity sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==
-
-"@rollup/rollup-freebsd-arm64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz#c54b2373ec5bcf71f08c4519c7ae80a0b6c8e03b"
-  integrity sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==
-
-"@rollup/rollup-freebsd-x64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz#3bc53aa29d5a34c28ba8e00def76aa612368458e"
-  integrity sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz#c85aedd1710c9e267ee86b6d1ce355ecf7d9e8d9"
-  integrity sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==
-
-"@rollup/rollup-linux-arm-musleabihf@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz#e77313408bf13995aecde281aec0cceb08747e42"
-  integrity sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==
-
-"@rollup/rollup-linux-arm64-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz#633f632397b3662108cfaa1abca2a80b85f51102"
-  integrity sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==
-
-"@rollup/rollup-linux-arm64-musl@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz#63edd72b29c4cced93e16113a68e1be9fef88907"
-  integrity sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==
-
-"@rollup/rollup-linux-powerpc64le-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz#a9418a4173df80848c0d47df0426a0bf183c4e75"
-  integrity sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==
-
-"@rollup/rollup-linux-riscv64-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz#bc9c195db036a27e5e3339b02f51526b4ce1e988"
-  integrity sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==
-
-"@rollup/rollup-linux-s390x-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz#1651fdf8144ae89326c01da5d52c60be63e71a82"
-  integrity sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==
-
 "@rollup/rollup-linux-x64-gnu@4.24.4":
   version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz#e473de5e4acb95fcf930a35cbb7d3e8080e57a6f"
+  resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz"
   integrity sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==
 
 "@rollup/rollup-linux-x64-musl@4.24.4":
   version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz#0af12dd2578c29af4037f0c834b4321429dd5b01"
+  resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz"
   integrity sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==
 
-"@rollup/rollup-win32-arm64-msvc@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz#e48e78cdd45313b977c1390f4bfde7ab79be8871"
-  integrity sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==
-
-"@rollup/rollup-win32-ia32-msvc@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz#a3fc8536d243fe161c796acb93eba43c250f311c"
-  integrity sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==
-
-"@rollup/rollup-win32-x64-msvc@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz#e2a9d1fd56524103a6cc8a54404d9d3ebc73c454"
-  integrity sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==
-
-"@types/babel-traverse@^6.7.17":
-  version "6.25.10"
-  resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.25.10.tgz#9451390f18576a0cb480de1778df8bb8b1b5c087"
-  integrity sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw==
-  dependencies:
-    "@types/babel-types" "*"
-
-"@types/babel-types@*":
-  version "7.0.16"
-  resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.16.tgz#74916c1b7a6bd53dc3d3f4053b65126bcc5e8e6f"
-  integrity sha512-5QXs9GBFTNTmilLlWBhnsprqpjfrotyrnzUdwDrywEL/DA4LuCWQT300BTOXA3Y9ngT9F2uvmCoIxI6z8DlJEA==
-
 "@types/babel__core@^7.20.5":
   version "7.20.5"
-  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
+  resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
   integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
   dependencies:
     "@babel/parser" "^7.20.7"
@@ -844,14 +631,14 @@
 
 "@types/babel__generator@*":
   version "7.6.8"
-  resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab"
+  resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz"
   integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==
   dependencies:
     "@babel/types" "^7.0.0"
 
 "@types/babel__template@*":
   version "7.4.4"
-  resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f"
+  resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz"
   integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
   dependencies:
     "@babel/parser" "^7.1.0"
@@ -859,41 +646,53 @@
 
 "@types/babel__traverse@*":
   version "7.20.6"
-  resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7"
+  resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz"
   integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==
   dependencies:
     "@babel/types" "^7.20.7"
 
-"@types/estree@1.0.6", "@types/estree@^1.0.6":
+"@types/babel-traverse@^6.7.17":
+  version "6.25.10"
+  resolved "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.10.tgz"
+  integrity sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw==
+  dependencies:
+    "@types/babel-types" "*"
+
+"@types/babel-types@*":
+  version "7.0.16"
+  resolved "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.16.tgz"
+  integrity sha512-5QXs9GBFTNTmilLlWBhnsprqpjfrotyrnzUdwDrywEL/DA4LuCWQT300BTOXA3Y9ngT9F2uvmCoIxI6z8DlJEA==
+
+"@types/estree@^1.0.6", "@types/estree@1.0.6":
   version "1.0.6"
-  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
+  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz"
   integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
 
 "@types/json-schema@^7.0.15":
   version "7.0.15"
-  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
+  resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
   integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
 
 "@types/parse-json@^4.0.0":
   version "4.0.2"
-  resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
+  resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz"
   integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
 
 "@types/prop-types@*", "@types/prop-types@^15.7.13":
   version "15.7.13"
-  resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451"
+  resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz"
   integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
 
 "@types/react-transition-group@^4.4.11":
   version "4.4.11"
-  resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5"
+  resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz"
   integrity sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==
   dependencies:
     "@types/react" "*"
 
-"@types/react@*":
+"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0":
   version "18.3.12"
-  resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60"
+  resolved "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz"
   integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==
   dependencies:
     "@types/prop-types" "*"
@@ -901,7 +700,7 @@
 
 "@typescript-eslint/eslint-plugin@^8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz#650c50b8c795b5d092189f139f6d00535b5b0f3d"
+  resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz"
   integrity sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==
   dependencies:
     "@eslint-community/regexpp" "^4.10.0"
@@ -914,9 +713,9 @@
     natural-compare "^1.4.0"
     ts-api-utils "^1.3.0"
 
-"@typescript-eslint/parser@^8.13.0":
+"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@^8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.13.0.tgz#ef76203b7cac515aa3ccc4f7ce5320dd61c46b29"
+  resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz"
   integrity sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==
   dependencies:
     "@typescript-eslint/scope-manager" "8.13.0"
@@ -927,7 +726,7 @@
 
 "@typescript-eslint/scope-manager@8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz#2f4aed0b87d72360e64e4ea194b1fde14a59082e"
+  resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz"
   integrity sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==
   dependencies:
     "@typescript-eslint/types" "8.13.0"
@@ -935,7 +734,7 @@
 
 "@typescript-eslint/type-utils@8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz#8c8fa68490dcb9ae1687ffc7de8fbe23c26417bd"
+  resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz"
   integrity sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==
   dependencies:
     "@typescript-eslint/typescript-estree" "8.13.0"
@@ -945,12 +744,12 @@
 
 "@typescript-eslint/types@8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.13.0.tgz#3f35dead2b2491a04339370dcbcd17bbdfc204d8"
+  resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz"
   integrity sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==
 
 "@typescript-eslint/typescript-estree@8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz#db8c93dd5437ca3ce417a255fb35ddc3c12c3e95"
+  resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz"
   integrity sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==
   dependencies:
     "@typescript-eslint/types" "8.13.0"
@@ -964,7 +763,7 @@
 
 "@typescript-eslint/utils@8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.13.0.tgz#f6d40e8b5053dcaeabbd2e26463857abf27d62c0"
+  resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz"
   integrity sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==
   dependencies:
     "@eslint-community/eslint-utils" "^4.4.0"
@@ -974,7 +773,7 @@
 
 "@typescript-eslint/visitor-keys@8.13.0":
   version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz#e97b0d92b266ef38a1faf40a74da289b66683a5b"
+  resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz"
   integrity sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==
   dependencies:
     "@typescript-eslint/types" "8.13.0"
@@ -982,7 +781,7 @@
 
 "@vitejs/plugin-react@^4.3.3":
   version "4.3.3"
-  resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz#28301ac6d7aaf20b73a418ee5c65b05519b4836c"
+  resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz"
   integrity sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==
   dependencies:
     "@babel/core" "^7.25.2"
@@ -993,24 +792,17 @@
 
 acorn-jsx@^5.3.2:
   version "5.3.2"
-  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
   integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
 
-acorn@^8.12.1, acorn@^8.14.0:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.12.1, acorn@^8.14.0:
   version "8.14.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
+  resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz"
   integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
 
-agent-base@^7.0.2:
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317"
-  integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==
-  dependencies:
-    debug "^4.3.4"
-
 ajv@^6.12.4:
   version "6.12.6"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+  resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
   integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
   dependencies:
     fast-deep-equal "^3.1.1"
@@ -1018,26 +810,21 @@ ajv@^6.12.4:
     json-schema-traverse "^0.4.1"
     uri-js "^4.2.2"
 
-ansi-colors@^4.1.3:
-  version "4.1.3"
-  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
-  integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
-
 ansi-styles@^4.1.0:
   version "4.3.0"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
   integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
   dependencies:
     color-convert "^2.0.1"
 
 argparse@^2.0.1:
   version "2.0.1"
-  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+  resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
   integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
 
 babel-plugin-macros@^3.1.0:
   version "3.1.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
+  resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz"
   integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
   dependencies:
     "@babel/runtime" "^7.12.5"
@@ -1046,17 +833,17 @@ babel-plugin-macros@^3.1.0:
 
 babylon@^7.0.0-beta.42:
   version "7.0.0-beta.47"
-  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80"
+  resolved "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz"
   integrity sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==
 
 balanced-match@^1.0.0:
   version "1.0.2"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+  resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 
 brace-expansion@^1.1.7:
   version "1.1.11"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+  resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
   integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
   dependencies:
     balanced-match "^1.0.0"
@@ -1064,21 +851,21 @@ brace-expansion@^1.1.7:
 
 brace-expansion@^2.0.1:
   version "2.0.1"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+  resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
   integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
   dependencies:
     balanced-match "^1.0.0"
 
 braces@^3.0.3:
   version "3.0.3"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+  resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
   integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
   dependencies:
     fill-range "^7.1.1"
 
-browserslist@^4.24.0:
+browserslist@^4.24.0, "browserslist@>= 4.21.0":
   version "4.24.2"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580"
+  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz"
   integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==
   dependencies:
     caniuse-lite "^1.0.30001669"
@@ -1088,7 +875,7 @@ browserslist@^4.24.0:
 
 c12@2.0.1:
   version "2.0.1"
-  resolved "https://registry.yarnpkg.com/c12/-/c12-2.0.1.tgz#5702d280b31a08abba39833494c9b1202f0f5aec"
+  resolved "https://registry.npmjs.org/c12/-/c12-2.0.1.tgz"
   integrity sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==
   dependencies:
     chokidar "^4.0.1"
@@ -1106,101 +893,91 @@ c12@2.0.1:
 
 callsites@^3.0.0:
   version "3.1.0"
-  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+  resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
   integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
 
 caniuse-lite@^1.0.30001669:
   version "1.0.30001677"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f"
+  resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz"
   integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==
 
 chalk@^4.0.0:
   version "4.1.2"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+  resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
   integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
   dependencies:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
-change-case@^5.4.4:
-  version "5.4.4"
-  resolved "https://registry.yarnpkg.com/change-case/-/change-case-5.4.4.tgz#0d52b507d8fb8f204343432381d1a6d7bff97a02"
-  integrity sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==
-
 chokidar@^4.0.1:
   version "4.0.1"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
+  resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz"
   integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
   dependencies:
     readdirp "^4.0.1"
 
 chownr@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+  resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"
   integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
 
 citty@^0.1.6:
   version "0.1.6"
-  resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.6.tgz#0f7904da1ed4625e1a9ea7e0fa780981aab7c5e4"
+  resolved "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz"
   integrity sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==
   dependencies:
     consola "^3.2.3"
 
 clsx@^2.1.1:
   version "2.1.1"
-  resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999"
+  resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
   integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
 
 color-convert@^2.0.1:
   version "2.0.1"
-  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+  resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
   integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
   dependencies:
     color-name "~1.1.4"
 
 color-name@~1.1.4:
   version "1.1.4"
-  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
   integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
 
-colorette@^1.2.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
-  integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
-
 commander@12.1.0:
   version "12.1.0"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
+  resolved "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz"
   integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
 
 concat-map@0.0.1:
   version "0.0.1"
-  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+  resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
   integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 
 confbox@^0.1.7, confbox@^0.1.8:
   version "0.1.8"
-  resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
+  resolved "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz"
   integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
 
 consola@^3.2.3:
   version "3.2.3"
-  resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f"
+  resolved "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz"
   integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==
 
 convert-source-map@^1.5.0:
   version "1.9.0"
-  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+  resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
   integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
 
 convert-source-map@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+  resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz"
   integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
 
 cosmiconfig@^7.0.0:
   version "7.1.0"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+  resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz"
   integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
   dependencies:
     "@types/parse-json" "^4.0.0"
@@ -1211,7 +988,7 @@ cosmiconfig@^7.0.0:
 
 cross-spawn@^7.0.2, cross-spawn@^7.0.3:
   version "7.0.3"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+  resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
   integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
   dependencies:
     path-key "^3.1.0"
@@ -1220,34 +997,39 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
 
 csstype@^3.0.2, csstype@^3.1.3:
   version "3.1.3"
-  resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
+  resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
   integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
 
-debug@4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+dayjs@^1.10.7, dayjs@^1.11.13:
+  version "1.11.13"
+  resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz"
+  integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
+
+debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
   version "4.3.7"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
+  resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz"
   integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
   dependencies:
     ms "^2.1.3"
 
 deep-is@^0.1.3:
   version "0.1.4"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+  resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
   integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
 
 defu@^6.1.4:
   version "6.1.4"
-  resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479"
+  resolved "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz"
   integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==
 
 destr@^2.0.3:
   version "2.0.3"
-  resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.3.tgz#7f9e97cb3d16dbdca7be52aca1644ce402cfe449"
+  resolved "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz"
   integrity sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==
 
 dom-helpers@^5.0.1:
   version "5.2.1"
-  resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
+  resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz"
   integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
   dependencies:
     "@babel/runtime" "^7.8.7"
@@ -1255,24 +1037,24 @@ dom-helpers@^5.0.1:
 
 dotenv@^16.4.5:
   version "16.4.5"
-  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
+  resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz"
   integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
 
 electron-to-chromium@^1.5.41:
   version "1.5.51"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.51.tgz#bb99216fed4892d131a8585a8593b00739310163"
+  resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.51.tgz"
   integrity sha512-kKeWV57KSS8jH4alKt/jKnvHPmJgBxXzGUSbMd4eQF+iOsVPl7bz2KUmu6eo80eMP8wVioTfTyTzdMgM15WXNg==
 
 error-ex@^1.3.1:
   version "1.3.2"
-  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+  resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
   integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
   dependencies:
     is-arrayish "^0.2.1"
 
 esbuild@^0.21.3:
   version "0.21.5"
-  resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
+  resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz"
   integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
   optionalDependencies:
     "@esbuild/aix-ppc64" "0.21.5"
@@ -1301,27 +1083,27 @@ esbuild@^0.21.3:
 
 escalade@^3.2.0:
   version "3.2.0"
-  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+  resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz"
   integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
 
 escape-string-regexp@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+  resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
   integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 
 eslint-plugin-react-hooks@^5.0.0:
   version "5.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz#72e2eefbac4b694f5324154619fee44f5f60f101"
+  resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz"
   integrity sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==
 
 eslint-plugin-react-refresh@^0.4.14:
   version "0.4.14"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz#e3c611ead69bbf7436d01295c853d4abb8c59f68"
+  resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz"
   integrity sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==
 
 eslint-scope@^8.2.0:
   version "8.2.0"
-  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442"
+  resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz"
   integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==
   dependencies:
     esrecurse "^4.3.0"
@@ -1329,17 +1111,17 @@ eslint-scope@^8.2.0:
 
 eslint-visitor-keys@^3.4.3:
   version "3.4.3"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
   integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
 eslint-visitor-keys@^4.2.0:
   version "4.2.0"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
+  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz"
   integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
 
-eslint@^9.14.0:
+"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.10.0, eslint@^9.14.0, eslint@>=7:
   version "9.14.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.14.0.tgz#534180a97c00af08bcf2b60b0ebf0c4d6c1b2c95"
+  resolved "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz"
   integrity sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
@@ -1380,7 +1162,7 @@ eslint@^9.14.0:
 
 esnext@^3.3.1:
   version "3.3.1"
-  resolved "https://registry.yarnpkg.com/esnext/-/esnext-3.3.1.tgz#115d3e32038a30e8dd3da7e80cdd8e92e307345d"
+  resolved "https://registry.npmjs.org/esnext/-/esnext-3.3.1.tgz"
   integrity sha512-hMlaFOLLFgCpi9E08z8sLAW1QtLP8vz4siUefTu8vhHNr1DtbE/gTqkpjU8kMnGNvSSHOlZJDQSkz3tvbzCpDQ==
   dependencies:
     "@babel/traverse" "^7.0.0-beta.42"
@@ -1394,7 +1176,7 @@ esnext@^3.3.1:
 
 espree@^10.0.1, espree@^10.3.0:
   version "10.3.0"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a"
+  resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz"
   integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==
   dependencies:
     acorn "^8.14.0"
@@ -1403,31 +1185,31 @@ espree@^10.0.1, espree@^10.3.0:
 
 esquery@^1.5.0:
   version "1.6.0"
-  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
+  resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz"
   integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
   dependencies:
     estraverse "^5.1.0"
 
 esrecurse@^4.3.0:
   version "4.3.0"
-  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+  resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
   integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
   dependencies:
     estraverse "^5.2.0"
 
 estraverse@^5.1.0, estraverse@^5.2.0:
   version "5.3.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+  resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
   integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
 
 esutils@^2.0.2:
   version "2.0.3"
-  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+  resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
   integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
 
 execa@^8.0.1:
   version "8.0.1"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c"
+  resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz"
   integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
   dependencies:
     cross-spawn "^7.0.3"
@@ -1442,12 +1224,12 @@ execa@^8.0.1:
 
 fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
   version "3.1.3"
-  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+  resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
   integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
 
 fast-glob@^3.3.2:
   version "3.3.2"
-  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+  resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
   integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
   dependencies:
     "@nodelib/fs.stat" "^2.0.2"
@@ -1458,43 +1240,43 @@ fast-glob@^3.3.2:
 
 fast-json-stable-stringify@^2.0.0:
   version "2.1.0"
-  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+  resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
   integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
 
 fast-levenshtein@^2.0.6:
   version "2.0.6"
-  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+  resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
   integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
 
 fastq@^1.6.0:
   version "1.17.1"
-  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+  resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz"
   integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
   dependencies:
     reusify "^1.0.4"
 
 file-entry-cache@^8.0.0:
   version "8.0.0"
-  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
+  resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz"
   integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
   dependencies:
     flat-cache "^4.0.0"
 
 fill-range@^7.1.1:
   version "7.1.1"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+  resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
   integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
   dependencies:
     to-regex-range "^5.0.1"
 
 find-root@^1.1.0:
   version "1.1.0"
-  resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+  resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz"
   integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
 
 find-up@^5.0.0:
   version "5.0.0"
-  resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+  resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
   integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
   dependencies:
     locate-path "^6.0.0"
@@ -1502,7 +1284,7 @@ find-up@^5.0.0:
 
 flat-cache@^4.0.0:
   version "4.0.1"
-  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
+  resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz"
   integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
   dependencies:
     flatted "^3.2.9"
@@ -1510,39 +1292,34 @@ flat-cache@^4.0.0:
 
 flatted@^3.2.9:
   version "3.3.1"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
+  resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz"
   integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
 
 fs-minipass@^2.0.0:
   version "2.1.0"
-  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+  resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
   integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
   dependencies:
     minipass "^3.0.0"
 
-fsevents@~2.3.2, fsevents@~2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
-  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
 function-bind@^1.1.2:
   version "1.1.2"
-  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+  resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
   integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
 
 gensync@^1.0.0-beta.2:
   version "1.0.0-beta.2"
-  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+  resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
   integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
 
 get-stream@^8.0.1:
   version "8.0.1"
-  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
+  resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz"
   integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
 
 giget@^1.2.3:
   version "1.2.3"
-  resolved "https://registry.yarnpkg.com/giget/-/giget-1.2.3.tgz#ef6845d1140e89adad595f7f3bb60aa31c672cb6"
+  resolved "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz"
   integrity sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==
   dependencies:
     citty "^0.1.6"
@@ -1556,36 +1333,36 @@ giget@^1.2.3:
 
 glob-parent@^5.1.2:
   version "5.1.2"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
   integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
   dependencies:
     is-glob "^4.0.1"
 
 glob-parent@^6.0.2:
   version "6.0.2"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
   integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
   dependencies:
     is-glob "^4.0.3"
 
 globals@^11.1.0:
   version "11.12.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+  resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
   integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
 
 globals@^14.0.0:
   version "14.0.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
+  resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz"
   integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
 
 graphemer@^1.4.0:
   version "1.4.0"
-  resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+  resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
   integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
 
 handlebars@4.7.8:
   version "4.7.8"
-  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9"
+  resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz"
   integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==
   dependencies:
     minimist "^1.2.5"
@@ -1597,44 +1374,36 @@ handlebars@4.7.8:
 
 has-flag@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+  resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
   integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
 
 hasown@^2.0.2:
   version "2.0.2"
-  resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+  resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"
   integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
   dependencies:
     function-bind "^1.1.2"
 
 hoist-non-react-statics@^3.3.1:
   version "3.3.2"
-  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+  resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
   integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
   dependencies:
     react-is "^16.7.0"
 
-https-proxy-agent@^7.0.4:
-  version "7.0.5"
-  resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2"
-  integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==
-  dependencies:
-    agent-base "^7.0.2"
-    debug "4"
-
 human-signals@^5.0.0:
   version "5.0.0"
-  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
+  resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz"
   integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
 
 ignore@^5.2.0, ignore@^5.3.1:
   version "5.3.2"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+  resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
   integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
 
 import-fresh@^3.2.1:
   version "3.3.0"
-  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+  resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
   integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
   dependencies:
     parent-module "^1.0.0"
@@ -1642,120 +1411,105 @@ import-fresh@^3.2.1:
 
 imurmurhash@^0.1.4:
   version "0.1.4"
-  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+  resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
   integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
 
-index-to-position@^0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/index-to-position/-/index-to-position-0.1.2.tgz#e11bfe995ca4d8eddb1ec43274488f3c201a7f09"
-  integrity sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==
-
 is-arrayish@^0.2.1:
   version "0.2.1"
-  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+  resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
   integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
 
 is-core-module@^2.13.0:
   version "2.15.1"
-  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
+  resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz"
   integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
   dependencies:
     hasown "^2.0.2"
 
 is-extglob@^2.1.1:
   version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+  resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
   integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
 
 is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
   version "4.0.3"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+  resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
   integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
   dependencies:
     is-extglob "^2.1.1"
 
 is-number@^7.0.0:
   version "7.0.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+  resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
   integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
 
 is-stream@^3.0.0:
   version "3.0.0"
-  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
+  resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz"
   integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
 
 isexe@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+  resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
   integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
 
-jiti@^2.3.0:
+jiti@*, jiti@^2.3.0:
   version "2.4.0"
-  resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.0.tgz#393d595fb6031a11d11171b5e4fc0b989ba3e053"
+  resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.0.tgz"
   integrity sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==
 
-js-levenshtein@^1.1.6:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
-  integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
-
 "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+  resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
   integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
 
 js-yaml@^4.1.0:
   version "4.1.0"
-  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+  resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
   integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
   dependencies:
     argparse "^2.0.1"
 
 jsesc@^3.0.2:
   version "3.0.2"
-  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e"
+  resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz"
   integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
 
 json-buffer@3.0.1:
   version "3.0.1"
-  resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+  resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
   integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
 
 json-parse-even-better-errors@^2.3.0:
   version "2.3.1"
-  resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+  resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
   integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
 
 json-schema-traverse@^0.4.1:
   version "0.4.1"
-  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+  resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
   integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
 
-json-schema-traverse@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
-  integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-
 json-stable-stringify-without-jsonify@^1.0.1:
   version "1.0.1"
-  resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+  resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
   integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
 
 json5@^2.2.3:
   version "2.2.3"
-  resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+  resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
   integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
 
 keyv@^4.5.4:
   version "4.5.4"
-  resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
+  resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
   integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
   dependencies:
     json-buffer "3.0.1"
 
 levn@^0.4.1:
   version "0.4.1"
-  resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+  resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
   integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
   dependencies:
     prelude-ls "^1.2.1"
@@ -1763,60 +1517,55 @@ levn@^0.4.1:
 
 lines-and-columns@^1.1.6:
   version "1.2.4"
-  resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+  resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
   integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
 
 locate-path@^6.0.0:
   version "6.0.0"
-  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+  resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
   integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
   dependencies:
     p-locate "^5.0.0"
 
-lodash.isequal@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
-  integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
-
 lodash.merge@^4.6.2:
   version "4.6.2"
-  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+  resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
   integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
 
 loose-envify@^1.1.0, loose-envify@^1.4.0:
   version "1.4.0"
-  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+  resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
   integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
   dependencies:
     js-tokens "^3.0.0 || ^4.0.0"
 
 lru-cache@^5.1.1:
   version "5.1.1"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+  resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
   integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
   dependencies:
     yallist "^3.0.2"
 
 magic-string@^0.22.2:
   version "0.22.5"
-  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e"
+  resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz"
   integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==
   dependencies:
     vlq "^0.2.2"
 
 merge-stream@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+  resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
   integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
 
 merge2@^1.3.0:
   version "1.4.1"
-  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+  resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
   integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
 
 micromatch@^4.0.4:
   version "4.0.8"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+  resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
   integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
   dependencies:
     braces "^3.0.3"
@@ -1824,50 +1573,43 @@ micromatch@^4.0.4:
 
 mimic-fn@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
+  resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz"
   integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
 
 minimatch@^3.1.2:
   version "3.1.2"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
   integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
   dependencies:
     brace-expansion "^1.1.7"
 
-minimatch@^5.0.1:
-  version "5.1.6"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
-  integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
-  dependencies:
-    brace-expansion "^2.0.1"
-
 minimatch@^9.0.4:
   version "9.0.5"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz"
   integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
   dependencies:
     brace-expansion "^2.0.1"
 
 minimist@^1.2.5, minimist@^1.2.6:
   version "1.2.8"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+  resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
   integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
 
 minipass@^3.0.0:
   version "3.3.6"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
+  resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz"
   integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
   dependencies:
     yallist "^4.0.0"
 
 minipass@^5.0.0:
   version "5.0.0"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
+  resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"
   integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
 
 minizlib@^2.1.1:
   version "2.1.2"
-  resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+  resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
   integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
   dependencies:
     minipass "^3.0.0"
@@ -1875,19 +1617,19 @@ minizlib@^2.1.1:
 
 mkdirp@^0.5.1:
   version "0.5.6"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
+  resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"
   integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
   dependencies:
     minimist "^1.2.6"
 
 mkdirp@^1.0.3:
   version "1.0.4"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+  resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
   integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
 
 mlly@^1.7.1, mlly@^1.7.2:
   version "1.7.2"
-  resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.2.tgz#21c0d04543207495b8d867eff0ac29fac9a023c0"
+  resolved "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz"
   integrity sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==
   dependencies:
     acorn "^8.12.1"
@@ -1897,68 +1639,61 @@ mlly@^1.7.1, mlly@^1.7.2:
 
 ms@^2.1.3:
   version "2.1.3"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+  resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
   integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
 
 mui@^0.0.1:
   version "0.0.1"
-  resolved "https://registry.yarnpkg.com/mui/-/mui-0.0.1.tgz#469a71f0932969526271ec939dc5959806590762"
+  resolved "https://registry.npmjs.org/mui/-/mui-0.0.1.tgz"
   integrity sha512-iB9zfxsJBcMkZ/SY6X+HGSPr4fftCZIQ76ZMH8iSMfVkidVzRtZlLW2gbWXUe+IMcj8JLv1p+dGKvPVlgtiocA==
 
 nanoid@^3.3.7:
   version "3.3.7"
-  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+  resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz"
   integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
 
 natural-compare@^1.4.0:
   version "1.4.0"
-  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+  resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
   integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
 
 neo-async@^2.6.2:
   version "2.6.2"
-  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+  resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
   integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
 
 node-bin-setup@^1.0.0:
   version "1.1.3"
-  resolved "https://registry.yarnpkg.com/node-bin-setup/-/node-bin-setup-1.1.3.tgz#d45d5220e3b2ecc3a94263a56116f727f6c1bb14"
+  resolved "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.1.3.tgz"
   integrity sha512-opgw9iSCAzT2+6wJOETCpeRYAQxSopqQ2z+N6BXwIMsQQ7Zj5M8MaafQY8JMlolRR6R1UXg2WmhKp0p9lSOivg==
 
 node-fetch-native@^1.6.3:
   version "1.6.4"
-  resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e"
+  resolved "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz"
   integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==
 
-node-fetch@^2.6.1:
-  version "2.7.0"
-  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
-  integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
-  dependencies:
-    whatwg-url "^5.0.0"
-
 node-releases@^2.0.18:
   version "2.0.18"
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
+  resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz"
   integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
 
 node@^22.11.0:
   version "22.11.0"
-  resolved "https://registry.yarnpkg.com/node/-/node-22.11.0.tgz#5a1dc8253c69b22ff798674f86cae94e448c0b34"
+  resolved "https://registry.npmjs.org/node/-/node-22.11.0.tgz"
   integrity sha512-RIAOdr40k1sq/DYF5u3XmhQHG+FZViuxObe2w1xPmOjEi4AiFgv/XRHW60YydS85X9gc8/jaI9RH4E9nvrV+gQ==
   dependencies:
     node-bin-setup "^1.0.0"
 
 npm-run-path@^5.1.0:
   version "5.3.0"
-  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
+  resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz"
   integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==
   dependencies:
     path-key "^4.0.0"
 
 nypm@^0.3.8:
   version "0.3.12"
-  resolved "https://registry.yarnpkg.com/nypm/-/nypm-0.3.12.tgz#37541bec0af3a37d3acd81d6662c6666e650b22e"
+  resolved "https://registry.npmjs.org/nypm/-/nypm-0.3.12.tgz"
   integrity sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==
   dependencies:
     citty "^0.1.6"
@@ -1970,48 +1705,24 @@ nypm@^0.3.8:
 
 object-assign@^4.1.1:
   version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+  resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
   integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
 
 ohash@^1.1.3, ohash@^1.1.4:
   version "1.1.4"
-  resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.4.tgz#ae8d83014ab81157d2c285abf7792e2995fadd72"
+  resolved "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz"
   integrity sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==
 
 onetime@^6.0.0:
   version "6.0.0"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
+  resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz"
   integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
   dependencies:
     mimic-fn "^4.0.0"
 
-openapi-fetch@^0.13.0:
-  version "0.13.0"
-  resolved "https://registry.yarnpkg.com/openapi-fetch/-/openapi-fetch-0.13.0.tgz#42dcdac4a8e14d2aeba321b46f6fbf4dac997a94"
-  integrity sha512-6Nlf/BDbtyHwHdNrLPUiyt4CZMzL3ZyAt55yWH8W7+Z+8aYWnvca4uZHQHXViy8KcnCMqAhLM/bifh2Yjjkf6w==
-  dependencies:
-    openapi-typescript-helpers "^0.0.15"
-
-openapi-typescript-helpers@^0.0.15:
-  version "0.0.15"
-  resolved "https://registry.yarnpkg.com/openapi-typescript-helpers/-/openapi-typescript-helpers-0.0.15.tgz#96ffa762a5e01ef66a661b163d5f1109ed1967ed"
-  integrity sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==
-
-openapi-typescript@^7.4.3:
-  version "7.4.3"
-  resolved "https://registry.yarnpkg.com/openapi-typescript/-/openapi-typescript-7.4.3.tgz#269c367929e8580dae2f7ef2d68bb39ffa30fa47"
-  integrity sha512-xTIjMIIOv9kNhsr8JxaC00ucbIY/6ZwuJPJBZMSh5FA2dicZN5uM805DWVJojXdom8YI4AQTavPDPHMx/3g0vQ==
-  dependencies:
-    "@redocly/openapi-core" "^1.25.9"
-    ansi-colors "^4.1.3"
-    change-case "^5.4.4"
-    parse-json "^8.1.0"
-    supports-color "^9.4.0"
-    yargs-parser "^21.1.1"
-
 optionator@^0.9.3:
   version "0.9.4"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
+  resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
   integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
   dependencies:
     deep-is "^0.1.3"
@@ -2023,28 +1734,28 @@ optionator@^0.9.3:
 
 p-limit@^3.0.2:
   version "3.1.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+  resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
   integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
   dependencies:
     yocto-queue "^0.1.0"
 
 p-locate@^5.0.0:
   version "5.0.0"
-  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+  resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
   integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
   dependencies:
     p-limit "^3.0.2"
 
 parent-module@^1.0.0:
   version "1.0.1"
-  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+  resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
   integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
   dependencies:
     callsites "^3.0.0"
 
 parse-json@^5.0.0:
   version "5.2.0"
-  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+  resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
   integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
   dependencies:
     "@babel/code-frame" "^7.0.0"
@@ -2052,77 +1763,63 @@ parse-json@^5.0.0:
     json-parse-even-better-errors "^2.3.0"
     lines-and-columns "^1.1.6"
 
-parse-json@^8.1.0:
-  version "8.1.0"
-  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-8.1.0.tgz#91cdc7728004e955af9cb734de5684733b24a717"
-  integrity sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==
-  dependencies:
-    "@babel/code-frame" "^7.22.13"
-    index-to-position "^0.1.2"
-    type-fest "^4.7.1"
-
 path-exists@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+  resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
   integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
 
 path-key@^3.1.0:
   version "3.1.1"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+  resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
   integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
 
 path-key@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+  resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz"
   integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
 
 path-parse@^1.0.7:
   version "1.0.7"
-  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+  resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
   integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 
 path-type@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+  resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
   integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
 
 pathe@^1.1.2:
   version "1.1.2"
-  resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
+  resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz"
   integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
 
 perfect-debounce@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
+  resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz"
   integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
 
 picocolors@^1.0.0, picocolors@^1.1.0:
   version "1.1.1"
-  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
   integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
 
 picomatch@^2.3.1:
   version "2.3.1"
-  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+  resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 
 pkg-types@^1.2.0:
   version "1.2.1"
-  resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.2.1.tgz#6ac4e455a5bb4b9a6185c1c79abd544c901db2e5"
+  resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz"
   integrity sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==
   dependencies:
     confbox "^0.1.8"
     mlly "^1.7.2"
     pathe "^1.1.2"
 
-pluralize@^8.0.0:
-  version "8.0.0"
-  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
-  integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
-
 postcss@^8.4.43:
   version "8.4.47"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
+  resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz"
   integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
   dependencies:
     nanoid "^3.3.7"
@@ -2131,17 +1828,17 @@ postcss@^8.4.43:
 
 prelude-ls@^1.2.1:
   version "1.2.1"
-  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+  resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
   integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
 
 prettier@^3.3.3:
   version "3.3.3"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
+  resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz"
   integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
 
 prop-types@^15.6.2, prop-types@^15.8.1:
   version "15.8.1"
-  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+  resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
   integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
   dependencies:
     loose-envify "^1.4.0"
@@ -2150,25 +1847,25 @@ prop-types@^15.6.2, prop-types@^15.8.1:
 
 punycode@^2.1.0:
   version "2.3.1"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+  resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
   integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
 
 queue-microtask@^1.2.2:
   version "1.2.3"
-  resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+  resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
   integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
 
 rc9@^2.1.2:
   version "2.1.2"
-  resolved "https://registry.yarnpkg.com/rc9/-/rc9-2.1.2.tgz#6282ff638a50caa0a91a31d76af4a0b9cbd1080d"
+  resolved "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz"
   integrity sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==
   dependencies:
     defu "^6.1.4"
     destr "^2.0.3"
 
-react-dom@^18.3.1:
+"react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", react-dom@^18.3.1, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0:
   version "18.3.1"
-  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
+  resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
   integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
   dependencies:
     loose-envify "^1.1.0"
@@ -2176,22 +1873,22 @@ react-dom@^18.3.1:
 
 react-is@^16.13.1, react-is@^16.7.0:
   version "16.13.1"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+  resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
   integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
 
 react-is@^18.3.1:
   version "18.3.1"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
+  resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz"
   integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
 
 react-refresh@^0.14.2:
   version "0.14.2"
-  resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
+  resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz"
   integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
 
 react-router-dom@^6.27.0:
   version "6.27.0"
-  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.27.0.tgz#8d7972a425fd75f91c1e1ff67e47240c5752dc3f"
+  resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz"
   integrity sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==
   dependencies:
     "@remix-run/router" "1.20.0"
@@ -2199,14 +1896,14 @@ react-router-dom@^6.27.0:
 
 react-router@6.27.0:
   version "6.27.0"
-  resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.27.0.tgz#db292474926c814c996c0ff3ef0162d1f9f60ed4"
+  resolved "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz"
   integrity sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==
   dependencies:
     "@remix-run/router" "1.20.0"
 
 react-transition-group@^4.4.5:
   version "4.4.5"
-  resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
+  resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz"
   integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
   dependencies:
     "@babel/runtime" "^7.5.5"
@@ -2214,36 +1911,31 @@ react-transition-group@^4.4.5:
     loose-envify "^1.4.0"
     prop-types "^15.6.2"
 
-react@^18.3.1:
+"react@^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0 || ^19.0.0", react@^18.3.1, react@>=16.6.0, react@>=16.8, react@>=16.8.0:
   version "18.3.1"
-  resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
+  resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
   integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
   dependencies:
     loose-envify "^1.1.0"
 
 readdirp@^4.0.1:
   version "4.0.2"
-  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a"
+  resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz"
   integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==
 
 regenerator-runtime@^0.14.0:
   version "0.14.1"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+  resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
   integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
 
-require-from-string@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
-  integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-
 resolve-from@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+  resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
   integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
 
 resolve@^1.19.0:
   version "1.22.8"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+  resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz"
   integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
   dependencies:
     is-core-module "^2.13.0"
@@ -2252,12 +1944,12 @@ resolve@^1.19.0:
 
 reusify@^1.0.4:
   version "1.0.4"
-  resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+  resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
   integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
 
 rollup@^4.20.0:
   version "4.24.4"
-  resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.4.tgz#fdc76918de02213c95447c9ffff5e35dddb1d058"
+  resolved "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz"
   integrity sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==
   dependencies:
     "@types/estree" "1.0.6"
@@ -2284,105 +1976,100 @@ rollup@^4.20.0:
 
 run-parallel@^1.1.9:
   version "1.2.0"
-  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+  resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
   integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
   dependencies:
     queue-microtask "^1.2.2"
 
 scheduler@^0.23.2:
   version "0.23.2"
-  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
+  resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz"
   integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
   dependencies:
     loose-envify "^1.1.0"
 
 semver@^6.3.1:
   version "6.3.1"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+  resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
   integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
 
 semver@^7.6.0:
   version "7.6.3"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
+  resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
   integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
 
 shebang-command@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+  resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
   integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
   dependencies:
     shebang-regex "^3.0.0"
 
 shebang-regex@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-2.0.0.tgz#f500bf6851b61356236167de2cc319b0fd7f0681"
+  resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-2.0.0.tgz"
   integrity sha512-qZ2//Zb9flLDxFym9xqhDyquM5WRdmuk/vviks/2cr9c5Vm+mX578TP8DwUc9fbfX58Tgeef2og1elYnkHli2w==
 
 shebang-regex@^3.0.0:
   version "3.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+  resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
   integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
 
 signal-exit@^4.1.0:
   version "4.1.0"
-  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
+  resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
   integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
 
 source-map-js@^1.2.1:
   version "1.2.1"
-  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+  resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
   integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
 
 source-map@^0.5.7:
   version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+  resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
   integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
 
 source-map@^0.6.1:
   version "0.6.1"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+  resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
   integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
 
 strip-final-newline@^3.0.0:
   version "3.0.0"
-  resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
+  resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz"
   integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
 
 strip-indent@^2.0.0:
   version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
+  resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz"
   integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==
 
 strip-json-comments@^3.1.1:
   version "3.1.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+  resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
   integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
 
 stylis@4.2.0:
   version "4.2.0"
-  resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51"
+  resolved "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz"
   integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==
 
 supports-color@^7.1.0:
   version "7.2.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+  resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
   integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
   dependencies:
     has-flag "^4.0.0"
 
-supports-color@^9.4.0:
-  version "9.4.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954"
-  integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==
-
 supports-preserve-symlinks-flag@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+  resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
   integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
 
 tar@^6.2.0:
   version "6.2.1"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
+  resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz"
   integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
   dependencies:
     chownr "^2.0.0"
@@ -2394,76 +2081,61 @@ tar@^6.2.0:
 
 text-table@^0.2.0:
   version "0.2.0"
-  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+  resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
   integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
 
 to-regex-range@^5.0.1:
   version "5.0.1"
-  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+  resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
   integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
   dependencies:
     is-number "^7.0.0"
 
-tr46@~0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
-  integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-
 ts-api-utils@^1.3.0:
   version "1.4.0"
-  resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz#709c6f2076e511a81557f3d07a0cbd566ae8195c"
+  resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz"
   integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==
 
 type-check@^0.4.0, type-check@~0.4.0:
   version "0.4.0"
-  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+  resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
   integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
   dependencies:
     prelude-ls "^1.2.1"
 
-type-fest@^4.7.1:
-  version "4.27.0"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.27.0.tgz#57329aae32e7b27b942b961e3ef861f0873c4b1b"
-  integrity sha512-3IMSWgP7C5KSQqmo1wjhKrwsvXAtF33jO3QY+Uy++ia7hqvgSK6iXbbg5PbDBc1P2ZbNEDgejOrN4YooXvhwCw==
-
-typescript@^5.6.3:
+typescript@^5.6.3, typescript@^5.x, typescript@>=4.2.0:
   version "5.6.3"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b"
+  resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz"
   integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
 
 ufo@^1.5.4:
   version "1.5.4"
-  resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
+  resolved "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz"
   integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
 
 uglify-js@^3.1.4:
   version "3.19.3"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f"
+  resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz"
   integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==
 
 update-browserslist-db@^1.1.1:
   version "1.1.1"
-  resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
+  resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz"
   integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
   dependencies:
     escalade "^3.2.0"
     picocolors "^1.1.0"
 
-uri-js-replace@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/uri-js-replace/-/uri-js-replace-1.0.1.tgz#c285bb352b701c9dfdaeffc4da5be77f936c9048"
-  integrity sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==
-
 uri-js@^4.2.2:
   version "4.4.1"
-  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+  resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
   integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
   dependencies:
     punycode "^2.1.0"
 
-vite@^5.4.10:
+"vite@^4.2.0 || ^5.0.0", vite@^5.4.10:
   version "5.4.10"
-  resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18"
+  resolved "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz"
   integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==
   dependencies:
     esbuild "^0.21.3"
@@ -2474,65 +2146,42 @@ vite@^5.4.10:
 
 vlq@^0.2.2:
   version "0.2.3"
-  resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
+  resolved "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz"
   integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
 
-webidl-conversions@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
-  integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
-
-whatwg-url@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
-  integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
-  dependencies:
-    tr46 "~0.0.3"
-    webidl-conversions "^3.0.0"
-
 which@^2.0.1:
   version "2.0.2"
-  resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+  resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
   integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
   dependencies:
     isexe "^2.0.0"
 
 word-wrap@^1.2.5:
   version "1.2.5"
-  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+  resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
   integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
 
 wordwrap@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+  resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
   integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
 
 yallist@^3.0.2:
   version "3.1.1"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+  resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
   integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
 
 yallist@^4.0.0:
   version "4.0.0"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+  resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
   integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
 
-yaml-ast-parser@0.0.43:
-  version "0.0.43"
-  resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb"
-  integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==
-
 yaml@^1.10.0:
   version "1.10.2"
-  resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+  resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
   integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
 
-yargs-parser@^21.1.1:
-  version "21.1.1"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
-  integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-
 yocto-queue@^0.1.0:
   version "0.1.0"
-  resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+  resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
   integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
-- 
GitLab


From 86e29a377739fd8330e5be9af1a0eacc4da54511 Mon Sep 17 00:00:00 2001
From: clemens <cwalter@ethz.ch>
Date: Tue, 3 Dec 2024 09:55:46 +0000
Subject: [PATCH 06/10] work

---
 openapi.json               | 2243 ++++++++++--------------------------
 src/client/schemas.gen.ts  |  127 +-
 src/client/services.gen.ts |  101 ++
 src/client/types.gen.ts    |   75 ++
 src/pages/Onboarding.tsx   |   21 +-
 5 files changed, 920 insertions(+), 1647 deletions(-)

diff --git a/openapi.json b/openapi.json
index 75fbfcd..802f246 100644
--- a/openapi.json
+++ b/openapi.json
@@ -1,9 +1,6 @@
 {
   "openapi": "3.1.0",
-  "info": {
-    "title": "qtool backend",
-    "version": "0.1.0"
-  },
+  "info": { "title": "qtool backend", "version": "0.1.0" },
   "paths": {
     "/api/items/": {
       "get": {
@@ -16,11 +13,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -38,14 +31,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "integer"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "integer" }, { "type": "null" }],
               "title": "Price"
             }
           },
@@ -54,14 +40,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Unit"
             }
           },
@@ -70,14 +49,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "boolean"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "boolean" }, { "type": "null" }],
               "title": "Active"
             }
           },
@@ -86,14 +58,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Search"
             }
           }
@@ -103,9 +68,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/ItemsPublic"
-                }
+                "schema": { "$ref": "#/components/schemas/ItemsPublic" }
               }
             }
           },
@@ -113,9 +76,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -130,9 +91,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/ItemBase"
-              }
+              "schema": { "$ref": "#/components/schemas/ItemBase" }
             }
           }
         },
@@ -141,9 +100,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Item"
-                }
+                "schema": { "$ref": "#/components/schemas/Item" }
               }
             }
           },
@@ -151,9 +108,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -171,11 +126,7 @@
             "name": "item_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Item Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Item Id" }
           }
         ],
         "responses": {
@@ -183,9 +134,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Item"
-                }
+                "schema": { "$ref": "#/components/schemas/Item" }
               }
             }
           },
@@ -193,9 +142,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -211,20 +158,14 @@
             "name": "item_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Item Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Item Id" }
           }
         ],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/ItemPublic"
-              }
+              "schema": { "$ref": "#/components/schemas/ItemPublic" }
             }
           }
         },
@@ -233,9 +174,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Item"
-                }
+                "schema": { "$ref": "#/components/schemas/Item" }
               }
             }
           },
@@ -243,9 +182,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -261,11 +198,7 @@
             "name": "item_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Item Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Item Id" }
           }
         ],
         "responses": {
@@ -273,9 +206,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Item"
-                }
+                "schema": { "$ref": "#/components/schemas/Item" }
               }
             }
           },
@@ -283,9 +214,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -325,9 +254,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -345,11 +272,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -367,14 +290,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Adress"
             }
           },
@@ -383,14 +299,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Kst"
             }
           },
@@ -399,14 +308,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Mwst"
             }
           },
@@ -415,14 +317,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "integer"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "integer" }, { "type": "null" }],
               "title": "Payinterval"
             }
           },
@@ -431,14 +326,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Comment"
             }
           },
@@ -448,13 +336,8 @@
             "required": false,
             "schema": {
               "anyOf": [
-                {
-                  "type": "string",
-                  "format": "date-time"
-                },
-                {
-                  "type": "null"
-                }
+                { "type": "string", "format": "date-time" },
+                { "type": "null" }
               ],
               "title": "Time Create"
             }
@@ -465,13 +348,8 @@
             "required": false,
             "schema": {
               "anyOf": [
-                {
-                  "type": "string",
-                  "format": "date-time"
-                },
-                {
-                  "type": "null"
-                }
+                { "type": "string", "format": "date-time" },
+                { "type": "null" }
               ],
               "title": "Time Modified"
             }
@@ -481,14 +359,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "default": "",
               "title": "Items"
             }
@@ -499,12 +370,8 @@
             "application/json": {
               "schema": {
                 "anyOf": [
-                  {
-                    "$ref": "#/components/schemas/DebitorFilter"
-                  },
-                  {
-                    "type": "null"
-                  }
+                  { "$ref": "#/components/schemas/DebitorFilter" },
+                  { "type": "null" }
                 ],
                 "title": "Debitor"
               }
@@ -516,9 +383,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/InvoicesList"
-                }
+                "schema": { "$ref": "#/components/schemas/InvoicesList" }
               }
             }
           },
@@ -526,9 +391,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -543,9 +406,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/InvoiceCreate"
-              }
+              "schema": { "$ref": "#/components/schemas/InvoiceCreate" }
             }
           }
         },
@@ -564,9 +425,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -595,9 +454,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/InvoicePublic-Input"
-              }
+              "schema": { "$ref": "#/components/schemas/InvoicePublic-Input" }
             }
           }
         },
@@ -616,9 +473,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -646,9 +501,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Invoice"
-                }
+                "schema": { "$ref": "#/components/schemas/Invoice" }
               }
             }
           },
@@ -656,9 +509,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -676,11 +527,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -698,14 +545,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "integer"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "integer" }, { "type": "null" }],
               "title": "Accountnumber"
             }
           },
@@ -714,14 +554,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Search"
             }
           }
@@ -731,9 +564,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/LedgersPublic"
-                }
+                "schema": { "$ref": "#/components/schemas/LedgersPublic" }
               }
             }
           },
@@ -741,9 +572,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -758,9 +587,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/LedgerBase"
-              }
+              "schema": { "$ref": "#/components/schemas/LedgerBase" }
             }
           }
         },
@@ -769,9 +596,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Ledger"
-                }
+                "schema": { "$ref": "#/components/schemas/Ledger" }
               }
             }
           },
@@ -779,9 +604,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -811,9 +634,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Ledger"
-                }
+                "schema": { "$ref": "#/components/schemas/Ledger" }
               }
             }
           },
@@ -821,9 +642,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -850,9 +669,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/LedgerPublic"
-              }
+              "schema": { "$ref": "#/components/schemas/LedgerPublic" }
             }
           }
         },
@@ -861,9 +678,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Ledger"
-                }
+                "schema": { "$ref": "#/components/schemas/Ledger" }
               }
             }
           },
@@ -871,9 +686,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -901,9 +714,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Ledger"
-                }
+                "schema": { "$ref": "#/components/schemas/Ledger" }
               }
             }
           },
@@ -911,9 +722,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -931,11 +740,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -953,14 +758,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "integer"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "integer" }, { "type": "null" }],
               "title": "Accountnumber"
             }
           },
@@ -969,14 +767,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Search"
             }
           }
@@ -986,9 +777,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/KstsPublic"
-                }
+                "schema": { "$ref": "#/components/schemas/KstsPublic" }
               }
             }
           },
@@ -996,9 +785,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1013,9 +800,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/KstBase"
-              }
+              "schema": { "$ref": "#/components/schemas/KstBase" }
             }
           }
         },
@@ -1024,9 +809,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Kst"
-                }
+                "schema": { "$ref": "#/components/schemas/Kst" }
               }
             }
           },
@@ -1034,9 +817,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1054,11 +835,7 @@
             "name": "kst_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Kst Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Kst Id" }
           }
         ],
         "responses": {
@@ -1066,9 +843,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Kst"
-                }
+                "schema": { "$ref": "#/components/schemas/Kst" }
               }
             }
           },
@@ -1076,9 +851,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1094,20 +867,14 @@
             "name": "kst_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Kst Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Kst Id" }
           }
         ],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/KstPublic"
-              }
+              "schema": { "$ref": "#/components/schemas/KstPublic" }
             }
           }
         },
@@ -1116,9 +883,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Kst"
-                }
+                "schema": { "$ref": "#/components/schemas/Kst" }
               }
             }
           },
@@ -1126,9 +891,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1144,11 +907,7 @@
             "name": "kst_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Kst Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Kst Id" }
           }
         ],
         "responses": {
@@ -1156,9 +915,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Kst"
-                }
+                "schema": { "$ref": "#/components/schemas/Kst" }
               }
             }
           },
@@ -1166,9 +923,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1186,11 +941,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -1208,14 +959,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "integer"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "integer" }, { "type": "null" }],
               "title": "Accountnumber"
             }
           },
@@ -1224,14 +968,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Search"
             }
           }
@@ -1241,9 +978,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/AddressesPublic"
-                }
+                "schema": { "$ref": "#/components/schemas/AddressesPublic" }
               }
             }
           },
@@ -1251,9 +986,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1268,9 +1001,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/AddressBase"
-              }
+              "schema": { "$ref": "#/components/schemas/AddressBase" }
             }
           }
         },
@@ -1279,9 +1010,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Address"
-                }
+                "schema": { "$ref": "#/components/schemas/Address" }
               }
             }
           },
@@ -1289,9 +1018,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1321,9 +1048,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Address"
-                }
+                "schema": { "$ref": "#/components/schemas/Address" }
               }
             }
           },
@@ -1331,9 +1056,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1360,9 +1083,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/AddressPublic"
-              }
+              "schema": { "$ref": "#/components/schemas/AddressPublic" }
             }
           }
         },
@@ -1371,9 +1092,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Address"
-                }
+                "schema": { "$ref": "#/components/schemas/Address" }
               }
             }
           },
@@ -1381,9 +1100,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1411,9 +1128,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Address"
-                }
+                "schema": { "$ref": "#/components/schemas/Address" }
               }
             }
           },
@@ -1421,9 +1136,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1441,11 +1154,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -1463,14 +1172,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Debitor"
             }
           },
@@ -1479,14 +1181,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Creditor"
             }
           },
@@ -1495,14 +1190,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Amount"
             }
           }
@@ -1522,9 +1210,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1560,9 +1246,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1602,9 +1286,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1652,9 +1334,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1682,9 +1362,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/InternalTransfer"
-                }
+                "schema": { "$ref": "#/components/schemas/InternalTransfer" }
               }
             }
           },
@@ -1692,9 +1370,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1712,11 +1388,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -1734,14 +1406,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Creditor"
             }
           },
@@ -1750,14 +1415,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Address"
             }
           },
@@ -1766,14 +1424,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Reference"
             }
           },
@@ -1782,14 +1433,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Iban"
             }
           },
@@ -1798,14 +1442,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Recipt"
             }
           },
@@ -1814,14 +1451,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Comment"
             }
           }
@@ -1831,9 +1461,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/BillsList"
-                }
+                "schema": { "$ref": "#/components/schemas/BillsList" }
               }
             }
           },
@@ -1841,9 +1469,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1858,9 +1484,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/BillCreate"
-              }
+              "schema": { "$ref": "#/components/schemas/BillCreate" }
             }
           }
         },
@@ -1869,9 +1493,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/BillPublic-Output"
-                }
+                "schema": { "$ref": "#/components/schemas/BillPublic-Output" }
               }
             }
           },
@@ -1879,9 +1501,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1899,11 +1519,7 @@
             "name": "bill_id",
             "in": "query",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Bill Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Bill Id" }
           }
         ],
         "responses": {
@@ -1911,9 +1527,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/BillPublic-Output"
-                }
+                "schema": { "$ref": "#/components/schemas/BillPublic-Output" }
               }
             }
           },
@@ -1921,9 +1535,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1939,20 +1551,14 @@
             "name": "Bill_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Bill Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Bill Id" }
           }
         ],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/BillPublic-Input"
-              }
+              "schema": { "$ref": "#/components/schemas/BillPublic-Input" }
             }
           }
         },
@@ -1961,9 +1567,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/BillPublic-Output"
-                }
+                "schema": { "$ref": "#/components/schemas/BillPublic-Output" }
               }
             }
           },
@@ -1971,9 +1575,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -1989,11 +1591,7 @@
             "name": "Bill_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "format": "uuid",
-              "title": "Bill Id"
-            }
+            "schema": { "type": "string", "format": "uuid", "title": "Bill Id" }
           }
         ],
         "responses": {
@@ -2001,9 +1599,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Bill"
-                }
+                "schema": { "$ref": "#/components/schemas/Bill" }
               }
             }
           },
@@ -2011,9 +1607,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2026,21 +1620,13 @@
         "summary": "Read Reimbursements",
         "description": "retrieve all Reimbursementes, sorted by name.\npaginate the results.",
         "operationId": "reimbursements-read_Reimbursements",
-        "security": [
-          {
-            "HTTPBearer": []
-          }
-        ],
+        "security": [{ "HTTPBearer": [] }],
         "parameters": [
           {
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -2058,14 +1644,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Creditor"
             }
           },
@@ -2074,14 +1653,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Recipt"
             }
           }
@@ -2091,9 +1663,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/ReimbursementsList"
-                }
+                "schema": { "$ref": "#/components/schemas/ReimbursementsList" }
               }
             }
           },
@@ -2101,9 +1671,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2114,18 +1682,12 @@
         "summary": "Create Reimbursement",
         "description": "create a new Reimbursement.",
         "operationId": "reimbursements-create_Reimbursement",
-        "security": [
-          {
-            "HTTPBearer": []
-          }
-        ],
+        "security": [{ "HTTPBearer": [] }],
         "requestBody": {
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/ReimbursementCreate"
-              }
+              "schema": { "$ref": "#/components/schemas/ReimbursementCreate" }
             }
           }
         },
@@ -2144,9 +1706,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2159,11 +1719,7 @@
         "summary": "Read Reimbursement",
         "description": "retrieve a single Reimbursement by id.",
         "operationId": "reimbursements-read_Reimbursement",
-        "security": [
-          {
-            "HTTPBearer": []
-          }
-        ],
+        "security": [{ "HTTPBearer": [] }],
         "parameters": [
           {
             "name": "Reimbursement_id",
@@ -2191,9 +1747,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2204,11 +1758,7 @@
         "summary": "Update Reimbursement",
         "description": "update an Reimbursement.",
         "operationId": "reimbursements-update_Reimbursement",
-        "security": [
-          {
-            "HTTPBearer": []
-          }
-        ],
+        "security": [{ "HTTPBearer": [] }],
         "parameters": [
           {
             "name": "reimbursement_id",
@@ -2246,9 +1796,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2259,11 +1807,7 @@
         "summary": "Delete Reimbursement",
         "description": "delete an Reimbursement.",
         "operationId": "reimbursements-delete_Reimbursement",
-        "security": [
-          {
-            "HTTPBearer": []
-          }
-        ],
+        "security": [{ "HTTPBearer": [] }],
         "parameters": [
           {
             "name": "reimbursement_id",
@@ -2281,9 +1825,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/Reimbursement"
-                }
+                "schema": { "$ref": "#/components/schemas/Reimbursement" }
               }
             }
           },
@@ -2291,9 +1833,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2311,11 +1851,7 @@
             "name": "page",
             "in": "query",
             "required": false,
-            "schema": {
-              "type": "integer",
-              "default": 0,
-              "title": "Page"
-            }
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
           },
           {
             "name": "limit",
@@ -2333,14 +1869,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Creditor"
             }
           },
@@ -2349,14 +1878,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Recipt"
             }
           },
@@ -2365,14 +1887,7 @@
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "string" }, { "type": "null" }],
               "title": "Card"
             }
           }
@@ -2382,9 +1897,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/CreditPaymentsList"
-                }
+                "schema": { "$ref": "#/components/schemas/CreditPaymentsList" }
               }
             }
           },
@@ -2392,9 +1905,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2409,9 +1920,7 @@
           "required": true,
           "content": {
             "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/CreditPaymentCreate"
-              }
+              "schema": { "$ref": "#/components/schemas/CreditPaymentCreate" }
             }
           }
         },
@@ -2430,9 +1939,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2472,9 +1979,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2522,9 +2027,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2552,9 +2055,7 @@
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/CreditPayment"
-                }
+                "schema": { "$ref": "#/components/schemas/CreditPayment" }
               }
             }
           },
@@ -2562,9 +2063,7 @@
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2580,11 +2079,7 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": {
-              "application/json": {
-                "schema": {}
-              }
-            }
+            "content": { "application/json": { "schema": {} } }
           }
         }
       }
@@ -2608,19 +2103,13 @@
         "responses": {
           "201": {
             "description": "Successful Response",
-            "content": {
-              "application/json": {
-                "schema": {}
-              }
-            }
+            "content": { "application/json": { "schema": {} } }
           },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2638,24 +2127,14 @@
             "name": "file_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "title": "File Id"
-            }
+            "schema": { "type": "string", "title": "File Id" }
           },
           {
             "name": "expires",
             "in": "query",
             "required": false,
             "schema": {
-              "anyOf": [
-                {
-                  "type": "integer"
-                },
-                {
-                  "type": "null"
-                }
-              ],
+              "anyOf": [{ "type": "integer" }, { "type": "null" }],
               "default": 3600,
               "title": "Expires"
             }
@@ -2664,19 +2143,13 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": {
-              "application/json": {
-                "schema": {}
-              }
-            }
+            "content": { "application/json": { "schema": {} } }
           },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2692,10 +2165,7 @@
             "name": "file_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "title": "File Id"
-            }
+            "schema": { "type": "string", "title": "File Id" }
           }
         ],
         "requestBody": {
@@ -2711,19 +2181,13 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": {
-              "application/json": {
-                "schema": {}
-              }
-            }
+            "content": { "application/json": { "schema": {} } }
           },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2739,23 +2203,16 @@
             "name": "file_id",
             "in": "path",
             "required": true,
-            "schema": {
-              "type": "string",
-              "title": "File Id"
-            }
+            "schema": { "type": "string", "title": "File Id" }
           }
         ],
         "responses": {
-          "204": {
-            "description": "Successful Response"
-          },
+          "204": { "description": "Successful Response" },
           "422": {
             "description": "Validation Error",
             "content": {
               "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/HTTPValidationError"
-                }
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
               }
             }
           }
@@ -2771,11 +2228,7 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": {
-              "application/json": {
-                "schema": {}
-              }
-            }
+            "content": { "application/json": { "schema": {} } }
           }
         }
       }
@@ -2789,11 +2242,7 @@
         "responses": {
           "200": {
             "description": "Successful Response",
-            "content": {
-              "application/json": {
-                "schema": {}
-              }
-            }
+            "content": { "application/json": { "schema": {} } }
           }
         }
       }
@@ -2804,78 +2253,239 @@
         "summary": "Is Onboarded",
         "description": "Check if the user is onboarded.\nReturn True if he is, otherwise False.",
         "operationId": "auth-is_onboarded",
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": { "application/json": { "schema": {} } }
+          }
+        },
+        "security": [{ "HTTPBearer": [] }]
+      }
+    },
+    "/api/users/": {
+      "get": {
+        "tags": ["users"],
+        "summary": "Read Users",
+        "description": "Retrieve all Users, sorted by id.\nPaginate the results.",
+        "operationId": "users-read_Users",
+        "security": [{ "HTTPBearer": [] }],
+        "parameters": [
+          {
+            "name": "page",
+            "in": "query",
+            "required": false,
+            "schema": { "type": "integer", "default": 0, "title": "Page" }
+          },
+          {
+            "name": "limit",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "type": "integer",
+              "maximum": 1000,
+              "default": 100,
+              "title": "Limit"
+            }
+          }
+        ],
         "responses": {
           "200": {
             "description": "Successful Response",
             "content": {
               "application/json": {
-                "schema": {}
+                "schema": { "$ref": "#/components/schemas/DbUsersList" }
               }
             }
+          },
+          "422": {
+            "description": "Validation Error",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+              }
+            }
+          }
+        }
+      },
+      "post": {
+        "tags": ["users"],
+        "summary": "Create User",
+        "description": "Create a new User.",
+        "operationId": "users-create_User",
+        "security": [{ "HTTPBearer": [] }],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": { "$ref": "#/components/schemas/DbUserCreate" }
+            }
           }
         },
-        "security": [
-          {
-            "HTTPBearer": []
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/DbUserBase" }
+              }
+            }
+          },
+          "422": {
+            "description": "Validation Error",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+              }
+            }
           }
-        ]
+        }
       }
-    }
-  },
-  "components": {
-    "schemas": {
-      "Address": {
-        "properties": {
-          "name": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name"
+    },
+    "/api/users/{user_id}": {
+      "get": {
+        "tags": ["users"],
+        "summary": "Read User",
+        "description": "Retrieve a single User by id.",
+        "operationId": "users-read_User",
+        "security": [{ "HTTPBearer": [] }],
+        "parameters": [
+          {
+            "name": "user_id",
+            "in": "path",
+            "required": true,
+            "schema": { "type": "string", "title": "User Id" }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/DbUserPublic" }
+              }
+            }
           },
-          "address1": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Address1"
+          "422": {
+            "description": "Validation Error",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+              }
+            }
+          }
+        }
+      },
+      "put": {
+        "tags": ["users"],
+        "summary": "Update User",
+        "description": "Update a User.",
+        "operationId": "users-update_User",
+        "security": [{ "HTTPBearer": [] }],
+        "parameters": [
+          {
+            "name": "user_id",
+            "in": "path",
+            "required": true,
+            "schema": { "type": "string", "title": "User Id" }
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": { "$ref": "#/components/schemas/DbUserCreate" }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/DbUserBase" }
+              }
+            }
           },
-          "address2": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Address2"
+          "422": {
+            "description": "Validation Error",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+              }
+            }
+          }
+        }
+      },
+      "delete": {
+        "tags": ["users"],
+        "summary": "Delete User",
+        "description": "Delete a User.",
+        "operationId": "users-delete_User",
+        "security": [{ "HTTPBearer": [] }],
+        "parameters": [
+          {
+            "name": "user_id",
+            "in": "path",
+            "required": true,
+            "schema": { "type": "string", "title": "User Id" }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/DbUserBase" }
+              }
+            }
           },
-          "address3": {
+          "422": {
+            "description": "Validation Error",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/HTTPValidationError" }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "Address": {
+        "properties": {
+          "name": { "type": "string", "maxLength": 30, "title": "Name" },
+          "address1": {
             "type": "string",
             "maxLength": 30,
-            "title": "Address3"
-          },
-          "plz": {
-            "type": "integer",
-            "title": "Plz"
+            "title": "Address1"
           },
-          "city": {
+          "address2": {
             "type": "string",
             "maxLength": 30,
-            "title": "City"
+            "title": "Address2"
           },
-          "country": {
+          "address3": {
             "type": "string",
             "maxLength": 30,
-            "title": "Country"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
+            "title": "Address3"
           },
+          "plz": { "type": "integer", "title": "Plz" },
+          "city": { "type": "string", "maxLength": 30, "title": "City" },
+          "country": { "type": "string", "maxLength": 30, "title": "Country" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.605671"
+            "default": "2024-11-26T07:17:39.462670"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.605716"
+            "default": "2024-11-26T07:17:39.462745"
           }
         },
         "type": "object",
@@ -2892,11 +2502,7 @@
       },
       "AddressBase": {
         "properties": {
-          "name": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name"
-          },
+          "name": { "type": "string", "maxLength": 30, "title": "Name" },
           "address1": {
             "type": "string",
             "maxLength": 30,
@@ -2912,20 +2518,9 @@
             "maxLength": 30,
             "title": "Address3"
           },
-          "plz": {
-            "type": "integer",
-            "title": "Plz"
-          },
-          "city": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "City"
-          },
-          "country": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Country"
-          }
+          "plz": { "type": "integer", "title": "Plz" },
+          "city": { "type": "string", "maxLength": 30, "title": "City" },
+          "country": { "type": "string", "maxLength": 30, "title": "Country" }
         },
         "type": "object",
         "required": [
@@ -2941,11 +2536,7 @@
       },
       "AddressPublic": {
         "properties": {
-          "name": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name"
-          },
+          "name": { "type": "string", "maxLength": 30, "title": "Name" },
           "address1": {
             "type": "string",
             "maxLength": 30,
@@ -2961,25 +2552,10 @@
             "maxLength": 30,
             "title": "Address3"
           },
-          "plz": {
-            "type": "integer",
-            "title": "Plz"
-          },
-          "city": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "City"
-          },
-          "country": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Country"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          }
+          "plz": { "type": "integer", "title": "Plz" },
+          "city": { "type": "string", "maxLength": 30, "title": "City" },
+          "country": { "type": "string", "maxLength": 30, "title": "Country" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" }
         },
         "type": "object",
         "required": [
@@ -2997,21 +2573,13 @@
       "AddressesPublic": {
         "properties": {
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/AddressPublic"
-            },
+            "items": { "$ref": "#/components/schemas/AddressPublic" },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -3024,11 +2592,7 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "iban": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Iban"
-          },
+          "iban": { "type": "string", "maxLength": 30, "title": "Iban" },
           "address_id": {
             "type": "string",
             "format": "uuid",
@@ -3046,49 +2610,31 @@
             "title": "Comment",
             "default": ""
           },
-          "recipt": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Recipt"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "recipt": { "type": "string", "maxLength": 30, "title": "Recipt" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.675425"
+            "default": "2024-11-26T07:17:39.567782"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.675477"
+            "default": "2024-11-26T07:17:39.567886"
           },
           "ezag_timestamp": {
             "anyOf": [
-              {
-                "type": "string",
-                "format": "date-time"
-              },
-              {
-                "type": "null"
-              }
+              { "type": "string", "format": "date-time" },
+              { "type": "null" }
             ],
             "title": "Ezag Timestamp"
           },
           "check_timestamp": {
             "anyOf": [
-              {
-                "type": "string",
-                "format": "date-time"
-              },
-              {
-                "type": "null"
-              }
+              { "type": "string", "format": "date-time" },
+              { "type": "null" }
             ],
             "title": "Check Timestamp"
           }
@@ -3105,28 +2651,12 @@
       },
       "BillCreate": {
         "properties": {
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorBase"
-          },
-          "address": {
-            "$ref": "#/components/schemas/AddressBase"
-          },
-          "reference": {
-            "type": "integer",
-            "title": "Reference"
-          },
-          "iban": {
-            "type": "string",
-            "title": "Iban"
-          },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "comment": {
-            "type": "string",
-            "title": "Comment"
-          }
+          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
+          "address": { "$ref": "#/components/schemas/AddressBase" },
+          "reference": { "type": "integer", "title": "Reference" },
+          "iban": { "type": "string", "title": "Iban" },
+          "recipt": { "type": "string", "title": "Recipt" },
+          "comment": { "type": "string", "title": "Comment" }
         },
         "type": "object",
         "required": [
@@ -3146,38 +2676,18 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "iban": {
-            "type": "string",
-            "title": "Iban"
-          },
+          "iban": { "type": "string", "title": "Iban" },
           "address_id": {
             "type": "string",
             "format": "uuid",
             "title": "Address Id"
           },
-          "reference": {
-            "type": "integer",
-            "title": "Reference"
-          },
-          "comment": {
-            "type": "string",
-            "title": "Comment"
-          },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          },
-          "address": {
-            "$ref": "#/components/schemas/AddressPublic"
-          }
+          "reference": { "type": "integer", "title": "Reference" },
+          "comment": { "type": "string", "title": "Comment" },
+          "recipt": { "type": "string", "title": "Recipt" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
+          "address": { "$ref": "#/components/schemas/AddressPublic" }
         },
         "type": "object",
         "required": [
@@ -3200,38 +2710,18 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "iban": {
-            "type": "string",
-            "title": "Iban"
-          },
+          "iban": { "type": "string", "title": "Iban" },
           "address_id": {
             "type": "string",
             "format": "uuid",
             "title": "Address Id"
           },
-          "reference": {
-            "type": "integer",
-            "title": "Reference"
-          },
-          "comment": {
-            "type": "string",
-            "title": "Comment"
-          },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          },
-          "address": {
-            "$ref": "#/components/schemas/AddressPublic"
-          }
+          "reference": { "type": "integer", "title": "Reference" },
+          "comment": { "type": "string", "title": "Comment" },
+          "recipt": { "type": "string", "title": "Recipt" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
+          "address": { "$ref": "#/components/schemas/AddressPublic" }
         },
         "type": "object",
         "required": [
@@ -3250,20 +2740,12 @@
       "BillsList": {
         "properties": {
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/BillPublic-Output"
-            },
+            "items": { "$ref": "#/components/schemas/BillPublic-Output" },
             "type": "array",
             "title": "Items"
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -3271,11 +2753,7 @@
       },
       "Body_files-replace_file": {
         "properties": {
-          "file": {
-            "type": "string",
-            "format": "binary",
-            "title": "File"
-          }
+          "file": { "type": "string", "format": "binary", "title": "File" }
         },
         "type": "object",
         "required": ["file"],
@@ -3283,11 +2761,7 @@
       },
       "Body_files-upload_file": {
         "properties": {
-          "file": {
-            "type": "string",
-            "format": "binary",
-            "title": "File"
-          }
+          "file": { "type": "string", "format": "binary", "title": "File" }
         },
         "type": "object",
         "required": ["file"],
@@ -3305,65 +2779,37 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Recipt"
-          },
-          "card": {
-            "$ref": "#/components/schemas/Card"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "name": {
-            "type": "string",
-            "maxLength": 200,
-            "title": "Name"
-          },
+          "recipt": { "type": "string", "maxLength": 30, "title": "Recipt" },
+          "card": { "$ref": "#/components/schemas/Card" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "name": { "type": "string", "maxLength": 200, "title": "Name" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.698195"
+            "default": "2024-11-26T07:17:39.611467"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.698241"
+            "default": "2024-11-26T07:17:39.611515"
           },
           "ezag_timestamp": {
             "anyOf": [
-              {
-                "type": "string",
-                "format": "date-time"
-              },
-              {
-                "type": "null"
-              }
+              { "type": "string", "format": "date-time" },
+              { "type": "null" }
             ],
             "title": "Ezag Timestamp"
           },
           "check_timestamp": {
             "anyOf": [
-              {
-                "type": "string",
-                "format": "date-time"
-              },
-              {
-                "type": "null"
-              }
+              { "type": "string", "format": "date-time" },
+              { "type": "null" }
             ],
             "title": "Check Timestamp"
           },
-          "creator": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Creator"
-          }
+          "creator": { "type": "string", "maxLength": 30, "title": "Creator" }
         },
         "type": "object",
         "required": ["creditor_id", "recipt", "card", "name", "creator"],
@@ -3371,20 +2817,10 @@
       },
       "CreditPaymentCreate": {
         "properties": {
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorBase"
-          },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "card": {
-            "$ref": "#/components/schemas/Card"
-          },
-          "creator": {
-            "type": "string",
-            "title": "Creator"
-          }
+          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
+          "recipt": { "type": "string", "title": "Recipt" },
+          "card": { "$ref": "#/components/schemas/Card" },
+          "creator": { "type": "string", "title": "Creator" }
         },
         "type": "object",
         "required": ["creditor", "recipt", "card", "creator"],
@@ -3397,29 +2833,12 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "card": {
-            "$ref": "#/components/schemas/Card"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          },
-          "creator": {
-            "type": "string",
-            "title": "Creator"
-          },
-          "name": {
-            "type": "string",
-            "title": "Name"
-          }
+          "recipt": { "type": "string", "title": "Recipt" },
+          "card": { "$ref": "#/components/schemas/Card" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
+          "creator": { "type": "string", "title": "Creator" },
+          "name": { "type": "string", "title": "Name" }
         },
         "type": "object",
         "required": [
@@ -3440,29 +2859,12 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "card": {
-            "$ref": "#/components/schemas/Card"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          },
-          "creator": {
-            "type": "string",
-            "title": "Creator"
-          },
-          "name": {
-            "type": "string",
-            "title": "Name"
-          }
+          "recipt": { "type": "string", "title": "Recipt" },
+          "card": { "$ref": "#/components/schemas/Card" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
+          "creator": { "type": "string", "title": "Creator" },
+          "name": { "type": "string", "title": "Name" }
         },
         "type": "object",
         "required": [
@@ -3485,14 +2887,8 @@
             "type": "array",
             "title": "Items"
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -3500,11 +2896,7 @@
       },
       "CreditorBase": {
         "properties": {
-          "kst_id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Kst Id"
-          },
+          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -3521,9 +2913,7 @@
             "title": "Accounting Year",
             "default": 2024
           },
-          "currency": {
-            "$ref": "#/components/schemas/Currency"
-          },
+          "currency": { "$ref": "#/components/schemas/Currency" },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -3543,11 +2933,7 @@
       },
       "CreditorPublic": {
         "properties": {
-          "kst_id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Kst Id"
-          },
+          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -3564,9 +2950,7 @@
             "title": "Accounting Year",
             "default": 2024
           },
-          "currency": {
-            "$ref": "#/components/schemas/Currency"
-          },
+          "currency": { "$ref": "#/components/schemas/Currency" },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -3579,11 +2963,7 @@
             "title": "Qcomment",
             "default": ""
           },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          }
+          "id": { "type": "string", "format": "uuid", "title": "Id" }
         },
         "type": "object",
         "required": ["kst_id", "ledger_id", "amount", "currency", "id"],
@@ -3594,13 +2974,62 @@
         "enum": ["CHF", "EUR", "USD"],
         "title": "Currency"
       },
-      "DebitorBase": {
+      "DbUserBase": {
+        "properties": {
+          "amiv_id": { "type": "string", "maxLength": 30, "title": "Amiv Id" },
+          "address_id": {
+            "type": "string",
+            "format": "uuid",
+            "title": "Address Id"
+          },
+          "iban": { "type": "string", "maxLength": 30, "title": "Iban" }
+        },
+        "type": "object",
+        "required": ["amiv_id", "address_id", "iban"],
+        "title": "DbUserBase"
+      },
+      "DbUserCreate": {
+        "properties": {
+          "amiv_id": { "type": "string", "title": "Amiv Id" },
+          "address": { "$ref": "#/components/schemas/AddressBase" },
+          "iban": { "type": "string", "title": "Iban" }
+        },
+        "type": "object",
+        "required": ["amiv_id", "address", "iban"],
+        "title": "DbUserCreate"
+      },
+      "DbUserPublic": {
         "properties": {
-          "kst_id": {
+          "amiv_id": { "type": "string", "maxLength": 30, "title": "Amiv Id" },
+          "address_id": {
             "type": "string",
             "format": "uuid",
-            "title": "Kst Id"
+            "title": "Address Id"
           },
+          "iban": { "type": "string", "maxLength": 30, "title": "Iban" },
+          "address": { "$ref": "#/components/schemas/AddressPublic" }
+        },
+        "type": "object",
+        "required": ["amiv_id", "address_id", "iban", "address"],
+        "title": "DbUserPublic"
+      },
+      "DbUsersList": {
+        "properties": {
+          "items": {
+            "items": { "$ref": "#/components/schemas/DbUserPublic" },
+            "type": "array",
+            "title": "Items"
+          },
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
+        },
+        "type": "object",
+        "required": ["items", "count", "total"],
+        "title": "DbUsersList"
+      },
+      "DebitorBase": {
+        "properties": {
+          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -3612,11 +3041,7 @@
             "exclusiveMinimum": 0.0,
             "title": "Amount"
           },
-          "mwst": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Mwst"
-          }
+          "mwst": { "type": "string", "maxLength": 30, "title": "Mwst" }
         },
         "type": "object",
         "required": ["kst_id", "ledger_id", "amount", "mwst"],
@@ -3625,36 +3050,15 @@
       "DebitorFilter": {
         "properties": {
           "kst": {
-            "anyOf": [
-              {
-                "type": "string"
-              },
-              {
-                "type": "null"
-              }
-            ],
+            "anyOf": [{ "type": "string" }, { "type": "null" }],
             "title": "Kst"
           },
           "ledger": {
-            "anyOf": [
-              {
-                "type": "string"
-              },
-              {
-                "type": "null"
-              }
-            ],
+            "anyOf": [{ "type": "string" }, { "type": "null" }],
             "title": "Ledger"
           },
           "mwst": {
-            "anyOf": [
-              {
-                "type": "string"
-              },
-              {
-                "type": "null"
-              }
-            ],
+            "anyOf": [{ "type": "string" }, { "type": "null" }],
             "title": "Mwst"
           }
         },
@@ -3664,11 +3068,7 @@
       },
       "DebitorPublic": {
         "properties": {
-          "kst_id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Kst Id"
-          },
+          "kst_id": { "type": "string", "format": "uuid", "title": "Kst Id" },
           "ledger_id": {
             "type": "string",
             "format": "uuid",
@@ -3680,16 +3080,8 @@
             "exclusiveMinimum": 0.0,
             "title": "Amount"
           },
-          "mwst": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Mwst"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          }
+          "mwst": { "type": "string", "maxLength": 30, "title": "Mwst" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" }
         },
         "type": "object",
         "required": ["kst_id", "ledger_id", "amount", "mwst", "id"],
@@ -3698,9 +3090,7 @@
       "HTTPValidationError": {
         "properties": {
           "detail": {
-            "items": {
-              "$ref": "#/components/schemas/ValidationError"
-            },
+            "items": { "$ref": "#/components/schemas/ValidationError" },
             "type": "array",
             "title": "Detail"
           }
@@ -3710,11 +3100,7 @@
       },
       "InternalTransfer": {
         "properties": {
-          "name": {
-            "type": "string",
-            "maxLength": 200,
-            "title": "Name"
-          },
+          "name": { "type": "string", "maxLength": 200, "title": "Name" },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -3737,22 +3123,18 @@
             "exclusiveMinimum": 0.0,
             "title": "Amount"
           },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.753644"
+            "default": "2024-11-26T07:17:39.724374"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.753685"
+            "default": "2024-11-26T07:17:39.724437"
           }
         },
         "type": "object",
@@ -3761,16 +3143,9 @@
       },
       "InternalTransferCreate": {
         "properties": {
-          "debitor": {
-            "$ref": "#/components/schemas/DebitorBase"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorBase"
-          },
-          "amount": {
-            "type": "integer",
-            "title": "Amount"
-          }
+          "debitor": { "$ref": "#/components/schemas/DebitorBase" },
+          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
+          "amount": { "type": "integer", "title": "Amount" }
         },
         "type": "object",
         "required": ["debitor", "creditor", "amount"],
@@ -3778,11 +3153,7 @@
       },
       "InternalTransferPublic-Input": {
         "properties": {
-          "name": {
-            "type": "string",
-            "maxLength": 200,
-            "title": "Name"
-          },
+          "name": { "type": "string", "maxLength": 200, "title": "Name" },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -3799,21 +3170,10 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "amount": {
-            "type": "integer",
-            "title": "Amount"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "debitor": {
-            "$ref": "#/components/schemas/DebitorPublic"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          }
+          "amount": { "type": "integer", "title": "Amount" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "debitor": { "$ref": "#/components/schemas/DebitorPublic" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" }
         },
         "type": "object",
         "required": [
@@ -3829,11 +3189,7 @@
       },
       "InternalTransferPublic-Output": {
         "properties": {
-          "name": {
-            "type": "string",
-            "maxLength": 200,
-            "title": "Name"
-          },
+          "name": { "type": "string", "maxLength": 200, "title": "Name" },
           "comment": {
             "type": "string",
             "maxLength": 255,
@@ -3850,21 +3206,10 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "amount": {
-            "type": "integer",
-            "title": "Amount"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "debitor": {
-            "$ref": "#/components/schemas/DebitorPublic"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          }
+          "amount": { "type": "integer", "title": "Amount" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "debitor": { "$ref": "#/components/schemas/DebitorPublic" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" }
         },
         "type": "object",
         "required": [
@@ -3887,14 +3232,8 @@
             "type": "array",
             "title": "Items"
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -3907,27 +3246,19 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Adress"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.777983"
+            "default": "2024-11-26T07:17:39.762455"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.778067"
+            "default": "2024-11-26T07:17:39.762559"
           }
         },
         "type": "object",
@@ -3941,15 +3272,9 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Adress"
-          },
+          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/ItemstoInvoiceCreate"
-            },
+            "items": { "$ref": "#/components/schemas/ItemstoInvoiceCreate" },
             "type": "array",
             "title": "Items"
           }
@@ -3965,16 +3290,8 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Adress"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
@@ -3986,9 +3303,7 @@
             "title": "Time Modified"
           },
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/ItemstoInvoicePublic"
-            },
+            "items": { "$ref": "#/components/schemas/ItemstoInvoicePublic" },
             "type": "array",
             "title": "Items"
           }
@@ -4004,16 +3319,8 @@
             "title": "Payinterval",
             "default": 30
           },
-          "adress": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Adress"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "adress": { "type": "string", "maxLength": 30, "title": "Adress" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
@@ -4025,9 +3332,7 @@
             "title": "Time Modified"
           },
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/ItemstoInvoicePublic"
-            },
+            "items": { "$ref": "#/components/schemas/ItemstoInvoicePublic" },
             "type": "array",
             "title": "Items"
           }
@@ -4039,20 +3344,12 @@
       "InvoicesList": {
         "properties": {
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/InvoicePublic-Output"
-            },
+            "items": { "$ref": "#/components/schemas/InvoicePublic-Output" },
             "type": "array",
             "title": "Items"
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -4087,32 +3384,20 @@
             "exclusiveMinimum": 4.0,
             "title": "Price"
           },
-          "unit": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Unit"
-          },
-          "active": {
-            "type": "boolean",
-            "title": "Active",
-            "default": true
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "unit": { "type": "string", "maxLength": 30, "title": "Unit" },
+          "active": { "type": "boolean", "title": "Active", "default": true },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.719534"
+            "default": "2024-11-26T07:17:39.650008"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.719577"
+            "default": "2024-11-26T07:17:39.650130"
           }
         },
         "type": "object",
@@ -4155,16 +3440,8 @@
             "exclusiveMinimum": 4.0,
             "title": "Price"
           },
-          "unit": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Unit"
-          },
-          "active": {
-            "type": "boolean",
-            "title": "Active",
-            "default": true
-          }
+          "unit": { "type": "string", "maxLength": 30, "title": "Unit" },
+          "active": { "type": "boolean", "title": "Active", "default": true }
         },
         "type": "object",
         "required": [
@@ -4206,21 +3483,9 @@
             "exclusiveMinimum": 4.0,
             "title": "Price"
           },
-          "unit": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Unit"
-          },
-          "active": {
-            "type": "boolean",
-            "title": "Active",
-            "default": true
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          }
+          "unit": { "type": "string", "maxLength": 30, "title": "Unit" },
+          "active": { "type": "boolean", "title": "Active", "default": true },
+          "id": { "type": "string", "format": "uuid", "title": "Id" }
         },
         "type": "object",
         "required": [
@@ -4237,21 +3502,13 @@
       "ItemsPublic": {
         "properties": {
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/ItemPublic"
-            },
+            "items": { "$ref": "#/components/schemas/ItemPublic" },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -4259,22 +3516,10 @@
       },
       "ItemstoInvoiceCreate": {
         "properties": {
-          "item_id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Item Id"
-          },
-          "debitor": {
-            "$ref": "#/components/schemas/DebitorBase"
-          },
-          "amount": {
-            "type": "integer",
-            "title": "Amount"
-          },
-          "comment": {
-            "type": "string",
-            "title": "Comment"
-          }
+          "item_id": { "type": "string", "format": "uuid", "title": "Item Id" },
+          "debitor": { "$ref": "#/components/schemas/DebitorBase" },
+          "amount": { "type": "integer", "title": "Amount" },
+          "comment": { "type": "string", "title": "Comment" }
         },
         "type": "object",
         "required": ["item_id", "debitor", "amount", "comment"],
@@ -4282,20 +3527,10 @@
       },
       "ItemstoInvoicePublic": {
         "properties": {
-          "item": {
-            "$ref": "#/components/schemas/ItemPublic"
-          },
-          "debitor": {
-            "$ref": "#/components/schemas/DebitorBase"
-          },
-          "amount": {
-            "type": "integer",
-            "title": "Amount"
-          },
-          "comment": {
-            "type": "string",
-            "title": "Comment"
-          }
+          "item": { "$ref": "#/components/schemas/ItemPublic" },
+          "debitor": { "$ref": "#/components/schemas/DebitorBase" },
+          "amount": { "type": "integer", "title": "Amount" },
+          "comment": { "type": "string", "title": "Comment" }
         },
         "type": "object",
         "required": ["item", "debitor", "amount", "comment"],
@@ -4303,46 +3538,23 @@
       },
       "Kst": {
         "properties": {
-          "name_de": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name De"
-          },
-          "name_en": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name En"
-          },
-          "owner": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Owner"
-          },
-          "active": {
-            "type": "boolean",
-            "title": "Active",
-            "default": true
-          },
-          "budget": {
-            "type": "integer",
-            "title": "Budget"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
+          "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
+          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
+          "active": { "type": "boolean", "title": "Active", "default": true },
+          "budget": { "type": "integer", "title": "Budget" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.628438"
+            "default": "2024-11-26T07:17:39.493654"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.628482"
+            "default": "2024-11-26T07:17:39.493720"
           }
         },
         "type": "object",
@@ -4351,30 +3563,11 @@
       },
       "KstBase": {
         "properties": {
-          "name_de": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name De"
-          },
-          "name_en": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name En"
-          },
-          "owner": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Owner"
-          },
-          "active": {
-            "type": "boolean",
-            "title": "Active",
-            "default": true
-          },
-          "budget": {
-            "type": "integer",
-            "title": "Budget"
-          }
+          "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
+          "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
+          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
+          "active": { "type": "boolean", "title": "Active", "default": true },
+          "budget": { "type": "integer", "title": "Budget" }
         },
         "type": "object",
         "required": ["name_de", "name_en", "owner", "budget"],
@@ -4382,35 +3575,12 @@
       },
       "KstPublic": {
         "properties": {
-          "name_de": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name De"
-          },
-          "name_en": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Name En"
-          },
-          "owner": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Owner"
-          },
-          "active": {
-            "type": "boolean",
-            "title": "Active",
-            "default": true
-          },
-          "budget": {
-            "type": "integer",
-            "title": "Budget"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          }
+          "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
+          "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
+          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
+          "active": { "type": "boolean", "title": "Active", "default": true },
+          "budget": { "type": "integer", "title": "Budget" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" }
         },
         "type": "object",
         "required": ["name_de", "name_en", "owner", "budget", "id"],
@@ -4419,21 +3589,13 @@
       "KstsPublic": {
         "properties": {
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/KstPublic"
-            },
+            "items": { "$ref": "#/components/schemas/KstPublic" },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -4446,37 +3608,21 @@
             "title": "Accountnumber",
             "default": 0
           },
-          "namede": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Namede"
-          },
-          "nameen": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Nameen"
-          },
-          "owner": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Owner"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
+          "namede": { "type": "string", "maxLength": 30, "title": "Namede" },
+          "nameen": { "type": "string", "maxLength": 30, "title": "Nameen" },
+          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.644853"
+            "default": "2024-11-26T07:17:39.513770"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.644913"
+            "default": "2024-11-26T07:17:39.513841"
           }
         },
         "type": "object",
@@ -4490,21 +3636,9 @@
             "title": "Accountnumber",
             "default": 0
           },
-          "namede": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Namede"
-          },
-          "nameen": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Nameen"
-          },
-          "owner": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Owner"
-          }
+          "namede": { "type": "string", "maxLength": 30, "title": "Namede" },
+          "nameen": { "type": "string", "maxLength": 30, "title": "Nameen" },
+          "owner": { "type": "string", "maxLength": 30, "title": "Owner" }
         },
         "type": "object",
         "required": ["namede", "nameen", "owner"],
@@ -4517,26 +3651,10 @@
             "title": "Accountnumber",
             "default": 0
           },
-          "namede": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Namede"
-          },
-          "nameen": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Nameen"
-          },
-          "owner": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Owner"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          }
+          "namede": { "type": "string", "maxLength": 30, "title": "Namede" },
+          "nameen": { "type": "string", "maxLength": 30, "title": "Nameen" },
+          "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" }
         },
         "type": "object",
         "required": ["namede", "nameen", "owner", "id"],
@@ -4545,21 +3663,13 @@
       "LedgersPublic": {
         "properties": {
           "items": {
-            "items": {
-              "$ref": "#/components/schemas/LedgerPublic"
-            },
+            "items": { "$ref": "#/components/schemas/LedgerPublic" },
             "type": "array",
             "title": "Items",
             "default": []
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["count", "total"],
@@ -4572,62 +3682,36 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Recipt"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "name": {
-            "type": "string",
-            "maxLength": 200,
-            "title": "Name"
-          },
+          "recipt": { "type": "string", "maxLength": 30, "title": "Recipt" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "name": { "type": "string", "maxLength": 200, "title": "Name" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-20T16:20:09.797544"
+            "default": "2024-11-26T07:17:39.793196"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-20T16:20:09.797584"
+            "default": "2024-11-26T07:17:39.793248"
           },
           "ezag_timestamp": {
             "anyOf": [
-              {
-                "type": "string",
-                "format": "date-time"
-              },
-              {
-                "type": "null"
-              }
+              { "type": "string", "format": "date-time" },
+              { "type": "null" }
             ],
             "title": "Ezag Timestamp"
           },
           "check_timestamp": {
             "anyOf": [
-              {
-                "type": "string",
-                "format": "date-time"
-              },
-              {
-                "type": "null"
-              }
+              { "type": "string", "format": "date-time" },
+              { "type": "null" }
             ],
             "title": "Check Timestamp"
           },
-          "creator": {
-            "type": "string",
-            "maxLength": 30,
-            "title": "Creator"
-          },
+          "creator": { "type": "string", "maxLength": 30, "title": "Creator" },
           "recipient": {
             "type": "string",
             "maxLength": 30,
@@ -4640,21 +3724,10 @@
       },
       "ReimbursementCreate": {
         "properties": {
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorBase"
-          },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "creator": {
-            "type": "string",
-            "title": "Creator"
-          },
-          "recipient": {
-            "type": "string",
-            "title": "Recipient"
-          }
+          "creditor": { "$ref": "#/components/schemas/CreditorBase" },
+          "recipt": { "type": "string", "title": "Recipt" },
+          "creator": { "type": "string", "title": "Creator" },
+          "recipient": { "type": "string", "title": "Recipient" }
         },
         "type": "object",
         "required": ["creditor", "recipt", "creator", "recipient"],
@@ -4667,26 +3740,11 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          },
-          "creator": {
-            "type": "string",
-            "title": "Creator"
-          },
-          "recipient": {
-            "type": "string",
-            "title": "Recipient"
-          }
+          "recipt": { "type": "string", "title": "Recipt" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
+          "creator": { "type": "string", "title": "Creator" },
+          "recipient": { "type": "string", "title": "Recipient" }
         },
         "type": "object",
         "required": [
@@ -4706,26 +3764,11 @@
             "format": "uuid",
             "title": "Creditor Id"
           },
-          "recipt": {
-            "type": "string",
-            "title": "Recipt"
-          },
-          "id": {
-            "type": "string",
-            "format": "uuid",
-            "title": "Id"
-          },
-          "creditor": {
-            "$ref": "#/components/schemas/CreditorPublic"
-          },
-          "creator": {
-            "type": "string",
-            "title": "Creator"
-          },
-          "recipient": {
-            "type": "string",
-            "title": "Recipient"
-          }
+          "recipt": { "type": "string", "title": "Recipt" },
+          "id": { "type": "string", "format": "uuid", "title": "Id" },
+          "creditor": { "$ref": "#/components/schemas/CreditorPublic" },
+          "creator": { "type": "string", "title": "Creator" },
+          "recipient": { "type": "string", "title": "Recipient" }
         },
         "type": "object",
         "required": [
@@ -4747,14 +3790,8 @@
             "type": "array",
             "title": "Items"
           },
-          "count": {
-            "type": "integer",
-            "title": "Count"
-          },
-          "total": {
-            "type": "integer",
-            "title": "Total"
-          }
+          "count": { "type": "integer", "title": "Count" },
+          "total": { "type": "integer", "title": "Total" }
         },
         "type": "object",
         "required": ["items", "count", "total"],
@@ -4763,38 +3800,18 @@
       "ValidationError": {
         "properties": {
           "loc": {
-            "items": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "integer"
-                }
-              ]
-            },
+            "items": { "anyOf": [{ "type": "string" }, { "type": "integer" }] },
             "type": "array",
             "title": "Location"
           },
-          "msg": {
-            "type": "string",
-            "title": "Message"
-          },
-          "type": {
-            "type": "string",
-            "title": "Error Type"
-          }
+          "msg": { "type": "string", "title": "Message" },
+          "type": { "type": "string", "title": "Error Type" }
         },
         "type": "object",
         "required": ["loc", "msg", "type"],
         "title": "ValidationError"
       }
     },
-    "securitySchemes": {
-      "HTTPBearer": {
-        "type": "http",
-        "scheme": "bearer"
-      }
-    }
+    "securitySchemes": { "HTTPBearer": { "type": "http", "scheme": "bearer" } }
   }
 }
diff --git a/src/client/schemas.gen.ts b/src/client/schemas.gen.ts
index 2ae4462..3ebee9c 100644
--- a/src/client/schemas.gen.ts
+++ b/src/client/schemas.gen.ts
@@ -45,13 +45,13 @@ export const AddressSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.605671",
+      default: "2024-11-26T07:17:39.462670",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.605716",
+      default: "2024-11-26T07:17:39.462745",
     },
   },
   type: "object",
@@ -240,13 +240,13 @@ export const BillSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.675425",
+      default: "2024-11-26T07:17:39.567782",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.675477",
+      default: "2024-11-26T07:17:39.567886",
     },
     ezag_timestamp: {
       anyOf: [
@@ -502,13 +502,13 @@ export const CreditPaymentSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.698195",
+      default: "2024-11-26T07:17:39.611467",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.698241",
+      default: "2024-11-26T07:17:39.611515",
     },
     ezag_timestamp: {
       anyOf: [
@@ -777,6 +777,97 @@ export const CurrencySchema = {
   title: "Currency",
 } as const;
 
+export const DbUserBaseSchema = {
+  properties: {
+    amiv_id: {
+      type: "string",
+      maxLength: 30,
+      title: "Amiv Id",
+    },
+    address_id: {
+      type: "string",
+      format: "uuid",
+      title: "Address Id",
+    },
+    iban: {
+      type: "string",
+      maxLength: 30,
+      title: "Iban",
+    },
+  },
+  type: "object",
+  required: ["amiv_id", "address_id", "iban"],
+  title: "DbUserBase",
+} as const;
+
+export const DbUserCreateSchema = {
+  properties: {
+    amiv_id: {
+      type: "string",
+      title: "Amiv Id",
+    },
+    address: {
+      $ref: "#/components/schemas/AddressBase",
+    },
+    iban: {
+      type: "string",
+      title: "Iban",
+    },
+  },
+  type: "object",
+  required: ["amiv_id", "address", "iban"],
+  title: "DbUserCreate",
+} as const;
+
+export const DbUserPublicSchema = {
+  properties: {
+    amiv_id: {
+      type: "string",
+      maxLength: 30,
+      title: "Amiv Id",
+    },
+    address_id: {
+      type: "string",
+      format: "uuid",
+      title: "Address Id",
+    },
+    iban: {
+      type: "string",
+      maxLength: 30,
+      title: "Iban",
+    },
+    address: {
+      $ref: "#/components/schemas/AddressPublic",
+    },
+  },
+  type: "object",
+  required: ["amiv_id", "address_id", "iban", "address"],
+  title: "DbUserPublic",
+} as const;
+
+export const DbUsersListSchema = {
+  properties: {
+    items: {
+      items: {
+        $ref: "#/components/schemas/DbUserPublic",
+      },
+      type: "array",
+      title: "Items",
+    },
+    count: {
+      type: "integer",
+      title: "Count",
+    },
+    total: {
+      type: "integer",
+      title: "Total",
+    },
+  },
+  type: "object",
+  required: ["items", "count", "total"],
+  title: "DbUsersList",
+} as const;
+
 export const DebitorBaseSchema = {
   properties: {
     kst_id: {
@@ -933,13 +1024,13 @@ export const InternalTransferSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.753644",
+      default: "2024-11-26T07:17:39.724374",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.753685",
+      default: "2024-11-26T07:17:39.724437",
     },
   },
   type: "object",
@@ -1113,13 +1204,13 @@ export const InvoiceSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.777983",
+      default: "2024-11-26T07:17:39.762455",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.778067",
+      default: "2024-11-26T07:17:39.762559",
     },
   },
   type: "object",
@@ -1303,13 +1394,13 @@ export const ItemSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.719534",
+      default: "2024-11-26T07:17:39.650008",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.719577",
+      default: "2024-11-26T07:17:39.650130",
     },
   },
   type: "object",
@@ -1539,13 +1630,13 @@ export const KstSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.628438",
+      default: "2024-11-26T07:17:39.493654",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.628482",
+      default: "2024-11-26T07:17:39.493720",
     },
   },
   type: "object",
@@ -1677,13 +1768,13 @@ export const LedgerSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.644853",
+      default: "2024-11-26T07:17:39.513770",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.644913",
+      default: "2024-11-26T07:17:39.513841",
     },
   },
   type: "object",
@@ -1802,13 +1893,13 @@ export const ReimbursementSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-20T16:20:09.797544",
+      default: "2024-11-26T07:17:39.793196",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-20T16:20:09.797584",
+      default: "2024-11-26T07:17:39.793248",
     },
     ezag_timestamp: {
       anyOf: [
diff --git a/src/client/services.gen.ts b/src/client/services.gen.ts
index 070ab30..feddea8 100644
--- a/src/client/services.gen.ts
+++ b/src/client/services.gen.ts
@@ -162,6 +162,21 @@ import {
   type AuthLoginResponse,
   type AuthIsOnboardedError,
   type AuthIsOnboardedResponse,
+  type UsersReadUsersData,
+  type UsersReadUsersError,
+  type UsersReadUsersResponse,
+  type UsersCreateUserData,
+  type UsersCreateUserError,
+  type UsersCreateUserResponse,
+  type UsersReadUserData,
+  type UsersReadUserError,
+  type UsersReadUserResponse,
+  type UsersUpdateUserData,
+  type UsersUpdateUserError,
+  type UsersUpdateUserResponse,
+  type UsersDeleteUserData,
+  type UsersDeleteUserError,
+  type UsersDeleteUserResponse,
   ItemsCreateItemResponseTransformer,
   ItemsReadItemResponseTransformer,
   ItemsUpdateItemResponseTransformer,
@@ -1167,3 +1182,89 @@ export const authIsOnboarded = <ThrowOnError extends boolean = false>(
     url: "/api/is-onboarded",
   });
 };
+
+/**
+ * Read Users
+ * Retrieve all Users, sorted by id.
+ * Paginate the results.
+ */
+export const usersReadUsers = <ThrowOnError extends boolean = false>(
+  options?: Options<UsersReadUsersData, ThrowOnError>,
+) => {
+  return (options?.client ?? client).get<
+    UsersReadUsersResponse,
+    UsersReadUsersError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/users/",
+  });
+};
+
+/**
+ * Create User
+ * Create a new User.
+ */
+export const usersCreateUser = <ThrowOnError extends boolean = false>(
+  options: Options<UsersCreateUserData, ThrowOnError>,
+) => {
+  return (options?.client ?? client).post<
+    UsersCreateUserResponse,
+    UsersCreateUserError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/users/",
+  });
+};
+
+/**
+ * Read User
+ * Retrieve a single User by id.
+ */
+export const usersReadUser = <ThrowOnError extends boolean = false>(
+  options: Options<UsersReadUserData, ThrowOnError>,
+) => {
+  return (options?.client ?? client).get<
+    UsersReadUserResponse,
+    UsersReadUserError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/users/{user_id}",
+  });
+};
+
+/**
+ * Update User
+ * Update a User.
+ */
+export const usersUpdateUser = <ThrowOnError extends boolean = false>(
+  options: Options<UsersUpdateUserData, ThrowOnError>,
+) => {
+  return (options?.client ?? client).put<
+    UsersUpdateUserResponse,
+    UsersUpdateUserError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/users/{user_id}",
+  });
+};
+
+/**
+ * Delete User
+ * Delete a User.
+ */
+export const usersDeleteUser = <ThrowOnError extends boolean = false>(
+  options: Options<UsersDeleteUserData, ThrowOnError>,
+) => {
+  return (options?.client ?? client).delete<
+    UsersDeleteUserResponse,
+    UsersDeleteUserError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/users/{user_id}",
+  });
+};
diff --git a/src/client/types.gen.ts b/src/client/types.gen.ts
index 334f552..f6e3415 100644
--- a/src/client/types.gen.ts
+++ b/src/client/types.gen.ts
@@ -184,6 +184,31 @@ export const Currency = {
   USD: "USD",
 } as const;
 
+export type DbUserBase = {
+  amiv_id: string;
+  address_id: string;
+  iban: string;
+};
+
+export type DbUserCreate = {
+  amiv_id: string;
+  address: AddressBase;
+  iban: string;
+};
+
+export type DbUserPublic = {
+  amiv_id: string;
+  address_id: string;
+  iban: string;
+  address: AddressPublic;
+};
+
+export type DbUsersList = {
+  items: Array<DbUserPublic>;
+  count: number;
+  total: number;
+};
+
 export type DebitorBase = {
   kst_id: string;
   ledger_id: string;
@@ -1012,6 +1037,56 @@ export type AuthIsOnboardedResponse = unknown;
 
 export type AuthIsOnboardedError = unknown;
 
+export type UsersReadUsersData = {
+  query?: {
+    limit?: number;
+    page?: number;
+  };
+};
+
+export type UsersReadUsersResponse = DbUsersList;
+
+export type UsersReadUsersError = HTTPValidationError;
+
+export type UsersCreateUserData = {
+  body: DbUserCreate;
+};
+
+export type UsersCreateUserResponse = DbUserBase;
+
+export type UsersCreateUserError = HTTPValidationError;
+
+export type UsersReadUserData = {
+  path: {
+    user_id: string;
+  };
+};
+
+export type UsersReadUserResponse = DbUserPublic;
+
+export type UsersReadUserError = HTTPValidationError;
+
+export type UsersUpdateUserData = {
+  body: DbUserCreate;
+  path: {
+    user_id: string;
+  };
+};
+
+export type UsersUpdateUserResponse = DbUserBase;
+
+export type UsersUpdateUserError = HTTPValidationError;
+
+export type UsersDeleteUserData = {
+  path: {
+    user_id: string;
+  };
+};
+
+export type UsersDeleteUserResponse = DbUserBase;
+
+export type UsersDeleteUserError = HTTPValidationError;
+
 export type ItemsCreateItemResponseTransformer = (
   data: any,
 ) => Promise<ItemsCreateItemResponse>;
diff --git a/src/pages/Onboarding.tsx b/src/pages/Onboarding.tsx
index 3abfd8e..eb7735b 100644
--- a/src/pages/Onboarding.tsx
+++ b/src/pages/Onboarding.tsx
@@ -9,28 +9,16 @@ import {
   CircularProgress,
 } from "@mui/material";
 import { usersCreateUser } from "../client/services.gen";
-import { DbUserCreateData } from "../client/types.gen";
+import { DbUserCreate } from "../client/types.gen";
+import { AdminObjectEditor } from "../components/AdminObjectEditor"
+import { DbUserCreateSchema } from "../client";
 
 export default function OnboardingPage() {
   // Constant amiv_id
   const AMIV_ID = "constant-amiv-id";
 
   // State to hold form values
-  const [formData, setFormData] = useState<DbUserCreateData>({
-    body: {
-      amiv_id: AMIV_ID,
-      iban: "",
-      address: {
-        name: "",
-        address1: "",
-        address2: "",
-        address3: "",
-        plz: 0,
-        city: "",
-        country: "",
-      },
-    },
-  });
+  const [formData, setFormData] = useState<DbUserCreate>();
 
   const [error, setError] = useState<string | null>(null);
   const [success, setSuccess] = useState<string | null>(null);
@@ -44,6 +32,7 @@ export default function OnboardingPage() {
     e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
   ) => {
     const { name, value } = e.target;
+    
 
     setFormData((prevState) => {
       if (name in prevState.body.address) {
-- 
GitLab


From 8e634a92755cb79611021f8838c886cdf57c3f3a Mon Sep 17 00:00:00 2001
From: clemens <cwalter@ethz.ch>
Date: Wed, 4 Dec 2024 07:28:38 +0000
Subject: [PATCH 07/10] objectEditor usage and error handling

---
 outtxt                          | 5188 -------------------------------
 src/components/ObjectEditor.tsx |   25 +-
 src/pages/GenerateItem.tsx      |   16 +-
 3 files changed, 35 insertions(+), 5194 deletions(-)
 delete mode 100644 outtxt

diff --git a/outtxt b/outtxt
deleted file mode 100644
index 07b4b8a..0000000
--- a/outtxt
+++ /dev/null
@@ -1,5188 +0,0 @@
-==> src/pages/index.tsx <==
-
-import React from "react";
-import { Container, CircularProgress } from "@mui/material";
-
-export default function Index() {
-    return (
-        <Container
-            sx={{
-                display: "flex",
-                justifyContent: "center",
-                alignItems: "center", // Center vertically
-                padding: 2,
-                height: "100vh" // Ensure full viewport height if needed
-            }}
-        >   
-            <CircularProgress />
-            
-        </Container>
-    );
-}
-
-
-
-==> src/pages/root.tsx <==
-import { AppBar, Toolbar, Typography, Button, useMediaQuery, Box, SxProps, IconButton, useTheme, ListItem, ListItemButton, ListItemIcon, ListItemText, List, Drawer, Checkbox, FormControlLabel, Divider } from "@mui/material";
-import { Outlet, useLocation } from "react-router-dom";
-import { Checklist, Groups, Home, Login, Logout, Menu, Payment, Settings, ShoppingCart } from "@mui/icons-material";
-import { Link } from "react-router-dom";
-import { useContext, useEffect, useState } from "react";
-import AmivLogoSVG from '../assets/amiv.svg';
-import AmivWheelSVG from '../assets/amiv-wheel.svg';
-import React from "react";
-
-const navContent = [
-    {
-        path: "/",
-        name: "Home",
-        icon: <Home />
-    },
-    {
-        path: "/cart",
-        name: "Cart",
-        icon: <ShoppingCart />
-    },
-    {
-        path: "/payment",
-        name: "Payment",
-        icon: <Payment />
-    },
-    {
-        path: "/signups",
-        name: "Signup Overview",
-        icon: <Checklist />
-    }
-] as {path: string, name: string, icon: React.ReactNode}[]
-
-
-function NavigationList() {
-
-    return (
-        <>
-            <List>
-                {navContent.map((item, index) => (
-                    <ListItem key={index} component={Link} to={item.path}>
-                        <ListItemButton>
-                            <ListItemIcon>
-                                {item.icon}
-                            </ListItemIcon>
-                            <ListItemText primary={item.name} />
-                        </ListItemButton>
-                    </ListItem>
-                ))}
-            </List>
-        </>
-    )
-}
-    
-
-function DesktopAppBar({sx, toggleDrawer}: {sx?: SxProps, toggleDrawer: () => void}) {
-
-
-    return (
-        <AppBar position="static" sx={sx}>
-            <Toolbar>
-                <IconButton onClick={toggleDrawer}>
-                    <Menu />
-                </IconButton>
-                <Typography variant="h6" component="div" sx={{flexGrow: 1}}>
-                    <img src={AmivLogoSVG} alt="AMIV Logo" style={{height: "1.5em"}}/>
-                </Typography>
-                <IconButton>
-                    <Settings />
-                </IconButton>
-                <IconButton>
-                    <Logout />
-                </IconButton>
-            </Toolbar>
-        </AppBar>
-    )
-}
-
-function MobileAppBar({sx, toggleDrawer}: {sx?: SxProps, toggleDrawer: () => void}) {
-
-
-    return (
-        <AppBar position="static" sx={sx}>
-            <Toolbar>
-                <IconButton onClick={toggleDrawer}>
-                    <Menu />
-                </IconButton>
-                <Typography variant="h6" component="div" sx={{flexGrow: 1}}>
-                    <img src={AmivWheelSVG} alt="AMIV Wheel" style={{height: "1.5em"}}/>
-                </Typography>
-                <IconButton>
-                    <Login />
-                </IconButton>
-            </Toolbar>
-        </AppBar>
-    )
-}
-
-function App() {
-    const theme = useTheme();
-    const bigScreen = useMediaQuery(theme.breakpoints.up("md"));
-
-    const [drawerOpen, setDrawerOpen] = useState<boolean>(false);
-    const toggleDrawer = () => {
-        setDrawerOpen(o => !o);
-    };
-    const location = useLocation();
-    useEffect(() => {
-        setDrawerOpen(false);
-    }, [location]);
-
-    return (
-        <>  
-            {bigScreen ?
-            <DesktopAppBar sx={{ display: {sx: 'none', md: 'block'}}} toggleDrawer={toggleDrawer}/> :
-            <MobileAppBar sx={{ display: {sx: 'block', md: 'none'}}} toggleDrawer={toggleDrawer}/> }
-            
-            <Drawer
-                anchor={bigScreen ? "left" : "bottom"}
-                open={drawerOpen}
-                onClose={toggleDrawer}
-            >
-                <Box sx={{width: "100%"}}>
-                    
-                    <NavigationList />
-                </Box>
-            </Drawer>
-            
-            <Outlet />
-        </>
-    )
-}
-
-export default function Root() {
-    return (
-            <App />
-    )
-}
-
-==> src/pages/test.tsx <==
-
-==> src/client/index.ts <==
-// This file is auto-generated by @hey-api/openapi-ts
-export * from "./schemas.gen";
-export * from "./services.gen";
-export * from "./types.gen";
-
-==> src/client/schemas.gen.ts <==
-// This file is auto-generated by @hey-api/openapi-ts
-
-export const AddressSchema = {
-  properties: {
-    name: {
-      type: "string",
-      maxLength: 30,
-      title: "Name",
-    },
-    address1: {
-      type: "string",
-      maxLength: 30,
-      title: "Address1",
-    },
-    address2: {
-      type: "string",
-      maxLength: 30,
-      title: "Address2",
-    },
-    address3: {
-      type: "string",
-      maxLength: 30,
-      title: "Address3",
-    },
-    plz: {
-      type: "integer",
-      title: "Plz",
-    },
-    city: {
-      type: "string",
-      maxLength: 30,
-      title: "City",
-    },
-    country: {
-      type: "string",
-      maxLength: 30,
-      title: "Country",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.215210",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.215238",
-    },
-  },
-  type: "object",
-  required: [
-    "name",
-    "address1",
-    "address2",
-    "address3",
-    "plz",
-    "city",
-    "country",
-  ],
-  title: "Address",
-} as const;
-
-export const AddressBaseSchema = {
-  properties: {
-    name: {
-      type: "string",
-      maxLength: 30,
-      title: "Name",
-    },
-    address1: {
-      type: "string",
-      maxLength: 30,
-      title: "Address1",
-    },
-    address2: {
-      type: "string",
-      maxLength: 30,
-      title: "Address2",
-    },
-    address3: {
-      type: "string",
-      maxLength: 30,
-      title: "Address3",
-    },
-    plz: {
-      type: "integer",
-      title: "Plz",
-    },
-    city: {
-      type: "string",
-      maxLength: 30,
-      title: "City",
-    },
-    country: {
-      type: "string",
-      maxLength: 30,
-      title: "Country",
-    },
-  },
-  type: "object",
-  required: [
-    "name",
-    "address1",
-    "address2",
-    "address3",
-    "plz",
-    "city",
-    "country",
-  ],
-  title: "AddressBase",
-} as const;
-
-export const AddressPublicSchema = {
-  properties: {
-    name: {
-      type: "string",
-      maxLength: 30,
-      title: "Name",
-    },
-    address1: {
-      type: "string",
-      maxLength: 30,
-      title: "Address1",
-    },
-    address2: {
-      type: "string",
-      maxLength: 30,
-      title: "Address2",
-    },
-    address3: {
-      type: "string",
-      maxLength: 30,
-      title: "Address3",
-    },
-    plz: {
-      type: "integer",
-      title: "Plz",
-    },
-    city: {
-      type: "string",
-      maxLength: 30,
-      title: "City",
-    },
-    country: {
-      type: "string",
-      maxLength: 30,
-      title: "Country",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-  },
-  type: "object",
-  required: [
-    "name",
-    "address1",
-    "address2",
-    "address3",
-    "plz",
-    "city",
-    "country",
-    "id",
-  ],
-  title: "AddressPublic",
-} as const;
-
-export const AddressesPublicSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/AddressPublic",
-      },
-      type: "array",
-      title: "Items",
-      default: [],
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["count", "total"],
-  title: "AddressesPublic",
-} as const;
-
-export const BillSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    iban: {
-      type: "string",
-      maxLength: 30,
-      title: "Iban",
-    },
-    address_id: {
-      type: "string",
-      format: "uuid",
-      title: "Address Id",
-    },
-    reference: {
-      type: "integer",
-      maximum: 1000000,
-      exclusiveMinimum: 0,
-      title: "Reference",
-    },
-    comment: {
-      type: "string",
-      maxLength: 255,
-      title: "Comment",
-      default: "",
-    },
-    recipt: {
-      type: "string",
-      maxLength: 30,
-      title: "Recipt",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.245576",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.245603",
-    },
-    ezag_timestamp: {
-      anyOf: [
-        {
-          type: "string",
-          format: "date-time",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Ezag Timestamp",
-    },
-    check_timestamp: {
-      anyOf: [
-        {
-          type: "string",
-          format: "date-time",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Check Timestamp",
-    },
-  },
-  type: "object",
-  required: ["creditor_id", "iban", "address_id", "reference", "recipt"],
-  title: "Bill",
-} as const;
-
-export const BillCreateSchema = {
-  properties: {
-    creditor: {
-      $ref: "#/components/schemas/CreditorBase",
-    },
-    address: {
-      $ref: "#/components/schemas/AddressBase",
-    },
-    reference: {
-      type: "integer",
-      title: "Reference",
-    },
-    iban: {
-      type: "string",
-      title: "Iban",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    comment: {
-      type: "string",
-      title: "Comment",
-    },
-  },
-  type: "object",
-  required: ["creditor", "address", "reference", "iban", "recipt", "comment"],
-  title: "BillCreate",
-} as const;
-
-export const BillPublic_InputSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    iban: {
-      type: "string",
-      title: "Iban",
-    },
-    address_id: {
-      type: "string",
-      format: "uuid",
-      title: "Address Id",
-    },
-    reference: {
-      type: "integer",
-      title: "Reference",
-    },
-    comment: {
-      type: "string",
-      title: "Comment",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-    address: {
-      $ref: "#/components/schemas/AddressPublic",
-    },
-  },
-  type: "object",
-  required: [
-    "creditor_id",
-    "iban",
-    "address_id",
-    "reference",
-    "comment",
-    "recipt",
-    "id",
-    "creditor",
-    "address",
-  ],
-  title: "BillPublic",
-} as const;
-
-export const BillPublic_OutputSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    iban: {
-      type: "string",
-      title: "Iban",
-    },
-    address_id: {
-      type: "string",
-      format: "uuid",
-      title: "Address Id",
-    },
-    reference: {
-      type: "integer",
-      title: "Reference",
-    },
-    comment: {
-      type: "string",
-      title: "Comment",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-    address: {
-      $ref: "#/components/schemas/AddressPublic",
-    },
-  },
-  type: "object",
-  required: [
-    "creditor_id",
-    "iban",
-    "address_id",
-    "reference",
-    "comment",
-    "recipt",
-    "id",
-    "creditor",
-    "address",
-  ],
-  title: "BillPublic",
-} as const;
-
-export const BillsListSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/BillPublic-Output",
-      },
-      type: "array",
-      title: "Items",
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["items", "count", "total"],
-  title: "BillsList",
-} as const;
-
-export const Body_files_replace_fileSchema = {
-  properties: {
-    file: {
-      type: "string",
-      format: "binary",
-      title: "File",
-    },
-  },
-  type: "object",
-  required: ["file"],
-  title: "Body_files-replace_file",
-} as const;
-
-export const Body_files_upload_fileSchema = {
-  properties: {
-    file: {
-      type: "string",
-      format: "binary",
-      title: "File",
-    },
-  },
-  type: "object",
-  required: ["file"],
-  title: "Body_files-upload_file",
-} as const;
-
-export const CardSchema = {
-  type: "string",
-  enum: ["Events", "President", "Quaestor"],
-  title: "Card",
-} as const;
-
-export const CreditPaymentSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    recipt: {
-      type: "string",
-      maxLength: 30,
-      title: "Recipt",
-    },
-    card: {
-      $ref: "#/components/schemas/Card",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    name: {
-      type: "string",
-      maxLength: 200,
-      title: "Name",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.255823",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.255852",
-    },
-    ezag_timestamp: {
-      anyOf: [
-        {
-          type: "string",
-          format: "date-time",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Ezag Timestamp",
-    },
-    check_timestamp: {
-      anyOf: [
-        {
-          type: "string",
-          format: "date-time",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Check Timestamp",
-    },
-    creator: {
-      type: "string",
-      maxLength: 30,
-      title: "Creator",
-    },
-  },
-  type: "object",
-  required: ["creditor_id", "recipt", "card", "name", "creator"],
-  title: "CreditPayment",
-} as const;
-
-export const CreditPaymentCreateSchema = {
-  properties: {
-    creditor: {
-      $ref: "#/components/schemas/CreditorBase",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    card: {
-      $ref: "#/components/schemas/Card",
-    },
-    creator: {
-      type: "string",
-      title: "Creator",
-    },
-  },
-  type: "object",
-  required: ["creditor", "recipt", "card", "creator"],
-  title: "CreditPaymentCreate",
-} as const;
-
-export const CreditPaymentPublic_InputSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    card: {
-      $ref: "#/components/schemas/Card",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-    creator: {
-      type: "string",
-      title: "Creator",
-    },
-    name: {
-      type: "string",
-      title: "Name",
-    },
-  },
-  type: "object",
-  required: [
-    "creditor_id",
-    "recipt",
-    "card",
-    "id",
-    "creditor",
-    "creator",
-    "name",
-  ],
-  title: "CreditPaymentPublic",
-} as const;
-
-export const CreditPaymentPublic_OutputSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    card: {
-      $ref: "#/components/schemas/Card",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-    creator: {
-      type: "string",
-      title: "Creator",
-    },
-    name: {
-      type: "string",
-      title: "Name",
-    },
-  },
-  type: "object",
-  required: [
-    "creditor_id",
-    "recipt",
-    "card",
-    "id",
-    "creditor",
-    "creator",
-    "name",
-  ],
-  title: "CreditPaymentPublic",
-} as const;
-
-export const CreditPaymentsListSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/CreditPaymentPublic-Output",
-      },
-      type: "array",
-      title: "Items",
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["items", "count", "total"],
-  title: "CreditPaymentsList",
-} as const;
-
-export const CreditorBaseSchema = {
-  properties: {
-    kst_id: {
-      type: "string",
-      format: "uuid",
-      title: "Kst Id",
-    },
-    ledger_id: {
-      type: "string",
-      format: "uuid",
-      title: "Ledger Id",
-    },
-    amount: {
-      type: "integer",
-      maximum: 1000000,
-      exclusiveMinimum: 0,
-      title: "Amount",
-    },
-    accounting_year: {
-      type: "integer",
-      title: "Accounting Year",
-      default: 2024,
-    },
-    currency: {
-      $ref: "#/components/schemas/Currency",
-    },
-    comment: {
-      type: "string",
-      maxLength: 255,
-      title: "Comment",
-      default: "",
-    },
-    qcomment: {
-      type: "string",
-      maxLength: 255,
-      title: "Qcomment",
-      default: "",
-    },
-  },
-  type: "object",
-  required: ["kst_id", "ledger_id", "amount", "currency"],
-  title: "CreditorBase",
-} as const;
-
-export const CreditorPublicSchema = {
-  properties: {
-    kst_id: {
-      type: "string",
-      format: "uuid",
-      title: "Kst Id",
-    },
-    ledger_id: {
-      type: "string",
-      format: "uuid",
-      title: "Ledger Id",
-    },
-    amount: {
-      type: "integer",
-      maximum: 1000000,
-      exclusiveMinimum: 0,
-      title: "Amount",
-    },
-    accounting_year: {
-      type: "integer",
-      title: "Accounting Year",
-      default: 2024,
-    },
-    currency: {
-      $ref: "#/components/schemas/Currency",
-    },
-    comment: {
-      type: "string",
-      maxLength: 255,
-      title: "Comment",
-      default: "",
-    },
-    qcomment: {
-      type: "string",
-      maxLength: 255,
-      title: "Qcomment",
-      default: "",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-  },
-  type: "object",
-  required: ["kst_id", "ledger_id", "amount", "currency", "id"],
-  title: "CreditorPublic",
-} as const;
-
-export const CurrencySchema = {
-  type: "string",
-  enum: ["CHF", "EUR", "USD"],
-  title: "Currency",
-} as const;
-
-export const DebitorBaseSchema = {
-  properties: {
-    kst_id: {
-      type: "string",
-      format: "uuid",
-      title: "Kst Id",
-    },
-    ledger_id: {
-      type: "string",
-      format: "uuid",
-      title: "Ledger Id",
-    },
-    amount: {
-      type: "integer",
-      maximum: 1000000,
-      exclusiveMinimum: 0,
-      title: "Amount",
-    },
-    mwst: {
-      type: "string",
-      maxLength: 30,
-      title: "Mwst",
-    },
-  },
-  type: "object",
-  required: ["kst_id", "ledger_id", "amount", "mwst"],
-  title: "DebitorBase",
-} as const;
-
-export const DebitorFilterSchema = {
-  properties: {
-    kst: {
-      anyOf: [
-        {
-          type: "string",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Kst",
-    },
-    ledger: {
-      anyOf: [
-        {
-          type: "string",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Ledger",
-    },
-    mwst: {
-      anyOf: [
-        {
-          type: "string",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Mwst",
-    },
-  },
-  additionalProperties: false,
-  type: "object",
-  title: "DebitorFilter",
-} as const;
-
-export const DebitorPublicSchema = {
-  properties: {
-    kst_id: {
-      type: "string",
-      format: "uuid",
-      title: "Kst Id",
-    },
-    ledger_id: {
-      type: "string",
-      format: "uuid",
-      title: "Ledger Id",
-    },
-    amount: {
-      type: "integer",
-      maximum: 1000000,
-      exclusiveMinimum: 0,
-      title: "Amount",
-    },
-    mwst: {
-      type: "string",
-      maxLength: 30,
-      title: "Mwst",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-  },
-  type: "object",
-  required: ["kst_id", "ledger_id", "amount", "mwst", "id"],
-  title: "DebitorPublic",
-} as const;
-
-export const HTTPValidationErrorSchema = {
-  properties: {
-    detail: {
-      items: {
-        $ref: "#/components/schemas/ValidationError",
-      },
-      type: "array",
-      title: "Detail",
-    },
-  },
-  type: "object",
-  title: "HTTPValidationError",
-} as const;
-
-export const InternalTransferSchema = {
-  properties: {
-    name: {
-      type: "string",
-      maxLength: 200,
-      title: "Name",
-    },
-    comment: {
-      type: "string",
-      maxLength: 255,
-      title: "Comment",
-      default: "",
-    },
-    debitor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Debitor Id",
-    },
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    amount: {
-      type: "integer",
-      maximum: 1000000,
-      exclusiveMinimum: 0,
-      title: "Amount",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.286242",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.286282",
-    },
-  },
-  type: "object",
-  required: ["name", "debitor_id", "creditor_id", "amount"],
-  title: "InternalTransfer",
-} as const;
-
-export const InternalTransferCreateSchema = {
-  properties: {
-    debitor: {
-      $ref: "#/components/schemas/DebitorBase",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorBase",
-    },
-    amount: {
-      type: "integer",
-      title: "Amount",
-    },
-  },
-  type: "object",
-  required: ["debitor", "creditor", "amount"],
-  title: "InternalTransferCreate",
-} as const;
-
-export const InternalTransferPublic_InputSchema = {
-  properties: {
-    name: {
-      type: "string",
-      maxLength: 200,
-      title: "Name",
-    },
-    comment: {
-      type: "string",
-      maxLength: 255,
-      title: "Comment",
-      default: "",
-    },
-    debitor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Debitor Id",
-    },
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    amount: {
-      type: "integer",
-      title: "Amount",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    debitor: {
-      $ref: "#/components/schemas/DebitorPublic",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-  },
-  type: "object",
-  required: [
-    "name",
-    "debitor_id",
-    "creditor_id",
-    "amount",
-    "id",
-    "debitor",
-    "creditor",
-  ],
-  title: "InternalTransferPublic",
-} as const;
-
-export const InternalTransferPublic_OutputSchema = {
-  properties: {
-    name: {
-      type: "string",
-      maxLength: 200,
-      title: "Name",
-    },
-    comment: {
-      type: "string",
-      maxLength: 255,
-      title: "Comment",
-      default: "",
-    },
-    debitor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Debitor Id",
-    },
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    amount: {
-      type: "integer",
-      title: "Amount",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    debitor: {
-      $ref: "#/components/schemas/DebitorPublic",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-  },
-  type: "object",
-  required: [
-    "name",
-    "debitor_id",
-    "creditor_id",
-    "amount",
-    "id",
-    "debitor",
-    "creditor",
-  ],
-  title: "InternalTransferPublic",
-} as const;
-
-export const InternalTransfersListSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/InternalTransferPublic-Output",
-      },
-      type: "array",
-      title: "Items",
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["items", "count", "total"],
-  title: "InternalTransfersList",
-} as const;
-
-export const InvoiceSchema = {
-  properties: {
-    payinterval: {
-      type: "integer",
-      title: "Payinterval",
-      default: 30,
-    },
-    adress: {
-      type: "string",
-      maxLength: 30,
-      title: "Adress",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.306366",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.306411",
-    },
-  },
-  type: "object",
-  required: ["adress"],
-  title: "Invoice",
-} as const;
-
-export const InvoiceCreateSchema = {
-  properties: {
-    payinterval: {
-      type: "integer",
-      title: "Payinterval",
-      default: 30,
-    },
-    adress: {
-      type: "string",
-      maxLength: 30,
-      title: "Adress",
-    },
-    items: {
-      items: {
-        $ref: "#/components/schemas/ItemstoInvoiceCreate",
-      },
-      type: "array",
-      title: "Items",
-    },
-  },
-  type: "object",
-  required: ["adress", "items"],
-  title: "InvoiceCreate",
-} as const;
-
-export const InvoicePublic_InputSchema = {
-  properties: {
-    payinterval: {
-      type: "integer",
-      title: "Payinterval",
-      default: 30,
-    },
-    adress: {
-      type: "string",
-      maxLength: 30,
-      title: "Adress",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-    },
-    items: {
-      items: {
-        $ref: "#/components/schemas/ItemstoInvoicePublic",
-      },
-      type: "array",
-      title: "Items",
-    },
-  },
-  type: "object",
-  required: ["adress", "items"],
-  title: "InvoicePublic",
-} as const;
-
-export const InvoicePublic_OutputSchema = {
-  properties: {
-    payinterval: {
-      type: "integer",
-      title: "Payinterval",
-      default: 30,
-    },
-    adress: {
-      type: "string",
-      maxLength: 30,
-      title: "Adress",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-    },
-    items: {
-      items: {
-        $ref: "#/components/schemas/ItemstoInvoicePublic",
-      },
-      type: "array",
-      title: "Items",
-    },
-  },
-  type: "object",
-  required: ["adress", "items"],
-  title: "InvoicePublic",
-} as const;
-
-export const InvoicesListSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/InvoicePublic-Output",
-      },
-      type: "array",
-      title: "Items",
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["items", "count", "total"],
-  title: "InvoicesList",
-} as const;
-
-export const ItemSchema = {
-  properties: {
-    title_de: {
-      type: "string",
-      maxLength: 255,
-      minLength: 1,
-      title: "Title De",
-    },
-    description_de: {
-      type: "string",
-      maxLength: 255,
-      title: "Description De",
-    },
-    title_en: {
-      type: "string",
-      maxLength: 255,
-      minLength: 1,
-      title: "Title En",
-    },
-    description_en: {
-      type: "string",
-      maxLength: 255,
-      title: "Description En",
-    },
-    price: {
-      type: "integer",
-      exclusiveMinimum: 4,
-      title: "Price",
-    },
-    unit: {
-      type: "string",
-      maxLength: 30,
-      title: "Unit",
-    },
-    active: {
-      type: "boolean",
-      title: "Active",
-      default: true,
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.264983",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.265011",
-    },
-  },
-  type: "object",
-  required: [
-    "title_de",
-    "description_de",
-    "title_en",
-    "description_en",
-    "price",
-    "unit",
-  ],
-  title: "Item",
-} as const;
-
-export const ItemBaseSchema = {
-  properties: {
-    title_de: {
-      type: "string",
-      maxLength: 255,
-      minLength: 1,
-      title: "Title De",
-    },
-    description_de: {
-      type: "string",
-      maxLength: 255,
-      title: "Description De",
-    },
-    title_en: {
-      type: "string",
-      maxLength: 255,
-      minLength: 1,
-      title: "Title En",
-    },
-    description_en: {
-      type: "string",
-      maxLength: 255,
-      title: "Description En",
-    },
-    price: {
-      type: "integer",
-      exclusiveMinimum: 4,
-      title: "Price",
-    },
-    unit: {
-      type: "string",
-      maxLength: 30,
-      title: "Unit",
-    },
-    active: {
-      type: "boolean",
-      title: "Active",
-      default: true,
-    },
-  },
-  type: "object",
-  required: [
-    "title_de",
-    "description_de",
-    "title_en",
-    "description_en",
-    "price",
-    "unit",
-  ],
-  title: "ItemBase",
-} as const;
-
-export const ItemPublicSchema = {
-  properties: {
-    title_de: {
-      type: "string",
-      maxLength: 255,
-      minLength: 1,
-      title: "Title De",
-    },
-    description_de: {
-      type: "string",
-      maxLength: 255,
-      title: "Description De",
-    },
-    title_en: {
-      type: "string",
-      maxLength: 255,
-      minLength: 1,
-      title: "Title En",
-    },
-    description_en: {
-      type: "string",
-      maxLength: 255,
-      title: "Description En",
-    },
-    price: {
-      type: "integer",
-      exclusiveMinimum: 4,
-      title: "Price",
-    },
-    unit: {
-      type: "string",
-      maxLength: 30,
-      title: "Unit",
-    },
-    active: {
-      type: "boolean",
-      title: "Active",
-      default: true,
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-  },
-  type: "object",
-  required: [
-    "title_de",
-    "description_de",
-    "title_en",
-    "description_en",
-    "price",
-    "unit",
-    "id",
-  ],
-  title: "ItemPublic",
-} as const;
-
-export const ItemsPublicSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/ItemPublic",
-      },
-      type: "array",
-      title: "Items",
-      default: [],
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["count", "total"],
-  title: "ItemsPublic",
-} as const;
-
-export const ItemstoInvoiceCreateSchema = {
-  properties: {
-    item_id: {
-      type: "string",
-      format: "uuid",
-      title: "Item Id",
-    },
-    debitor: {
-      $ref: "#/components/schemas/DebitorBase",
-    },
-    amount: {
-      type: "integer",
-      title: "Amount",
-    },
-    comment: {
-      type: "string",
-      title: "Comment",
-    },
-  },
-  type: "object",
-  required: ["item_id", "debitor", "amount", "comment"],
-  title: "ItemstoInvoiceCreate",
-} as const;
-
-export const ItemstoInvoicePublicSchema = {
-  properties: {
-    item: {
-      $ref: "#/components/schemas/ItemPublic",
-    },
-    debitor: {
-      $ref: "#/components/schemas/DebitorBase",
-    },
-    amount: {
-      type: "integer",
-      title: "Amount",
-    },
-    comment: {
-      type: "string",
-      title: "Comment",
-    },
-  },
-  type: "object",
-  required: ["item", "debitor", "amount", "comment"],
-  title: "ItemstoInvoicePublic",
-} as const;
-
-export const KstSchema = {
-  properties: {
-    name_de: {
-      type: "string",
-      maxLength: 30,
-      title: "Name De",
-    },
-    name_en: {
-      type: "string",
-      maxLength: 30,
-      title: "Name En",
-    },
-    owner: {
-      type: "string",
-      maxLength: 30,
-      title: "Owner",
-    },
-    active: {
-      type: "boolean",
-      title: "Active",
-      default: true,
-    },
-    budget: {
-      type: "integer",
-      title: "Budget",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.224531",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.224559",
-    },
-  },
-  type: "object",
-  required: ["name_de", "name_en", "owner", "budget"],
-  title: "Kst",
-} as const;
-
-export const KstBaseSchema = {
-  properties: {
-    name_de: {
-      type: "string",
-      maxLength: 30,
-      title: "Name De",
-    },
-    name_en: {
-      type: "string",
-      maxLength: 30,
-      title: "Name En",
-    },
-    owner: {
-      type: "string",
-      maxLength: 30,
-      title: "Owner",
-    },
-    active: {
-      type: "boolean",
-      title: "Active",
-      default: true,
-    },
-    budget: {
-      type: "integer",
-      title: "Budget",
-    },
-  },
-  type: "object",
-  required: ["name_de", "name_en", "owner", "budget"],
-  title: "KstBase",
-} as const;
-
-export const KstPublicSchema = {
-  properties: {
-    name_de: {
-      type: "string",
-      maxLength: 30,
-      title: "Name De",
-    },
-    name_en: {
-      type: "string",
-      maxLength: 30,
-      title: "Name En",
-    },
-    owner: {
-      type: "string",
-      maxLength: 30,
-      title: "Owner",
-    },
-    active: {
-      type: "boolean",
-      title: "Active",
-      default: true,
-    },
-    budget: {
-      type: "integer",
-      title: "Budget",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-  },
-  type: "object",
-  required: ["name_de", "name_en", "owner", "budget", "id"],
-  title: "KstPublic",
-} as const;
-
-export const KstsPublicSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/KstPublic",
-      },
-      type: "array",
-      title: "Items",
-      default: [],
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["count", "total"],
-  title: "KstsPublic",
-} as const;
-
-export const LedgerSchema = {
-  properties: {
-    accountnumber: {
-      type: "integer",
-      title: "Accountnumber",
-      default: 0,
-    },
-    namede: {
-      type: "string",
-      maxLength: 30,
-      title: "Namede",
-    },
-    nameen: {
-      type: "string",
-      maxLength: 30,
-      title: "Nameen",
-    },
-    owner: {
-      type: "string",
-      maxLength: 30,
-      title: "Owner",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.231377",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.231404",
-    },
-  },
-  type: "object",
-  required: ["namede", "nameen", "owner"],
-  title: "Ledger",
-} as const;
-
-export const LedgerBaseSchema = {
-  properties: {
-    accountnumber: {
-      type: "integer",
-      title: "Accountnumber",
-      default: 0,
-    },
-    namede: {
-      type: "string",
-      maxLength: 30,
-      title: "Namede",
-    },
-    nameen: {
-      type: "string",
-      maxLength: 30,
-      title: "Nameen",
-    },
-    owner: {
-      type: "string",
-      maxLength: 30,
-      title: "Owner",
-    },
-  },
-  type: "object",
-  required: ["namede", "nameen", "owner"],
-  title: "LedgerBase",
-} as const;
-
-export const LedgerPublicSchema = {
-  properties: {
-    accountnumber: {
-      type: "integer",
-      title: "Accountnumber",
-      default: 0,
-    },
-    namede: {
-      type: "string",
-      maxLength: 30,
-      title: "Namede",
-    },
-    nameen: {
-      type: "string",
-      maxLength: 30,
-      title: "Nameen",
-    },
-    owner: {
-      type: "string",
-      maxLength: 30,
-      title: "Owner",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-  },
-  type: "object",
-  required: ["namede", "nameen", "owner", "id"],
-  title: "LedgerPublic",
-} as const;
-
-export const LedgersPublicSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/LedgerPublic",
-      },
-      type: "array",
-      title: "Items",
-      default: [],
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["count", "total"],
-  title: "LedgersPublic",
-} as const;
-
-export const ReimbursementSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    recipt: {
-      type: "string",
-      maxLength: 30,
-      title: "Recipt",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    name: {
-      type: "string",
-      maxLength: 200,
-      title: "Name",
-    },
-    time_create: {
-      type: "string",
-      format: "date-time",
-      title: "Time Create",
-      default: "2024-11-04T14:37:27.319471",
-    },
-    time_modified: {
-      type: "string",
-      format: "date-time",
-      title: "Time Modified",
-      default: "2024-11-04T14:37:27.319498",
-    },
-    ezag_timestamp: {
-      anyOf: [
-        {
-          type: "string",
-          format: "date-time",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Ezag Timestamp",
-    },
-    check_timestamp: {
-      anyOf: [
-        {
-          type: "string",
-          format: "date-time",
-        },
-        {
-          type: "null",
-        },
-      ],
-      title: "Check Timestamp",
-    },
-    creator: {
-      type: "string",
-      maxLength: 30,
-      title: "Creator",
-    },
-    recipient: {
-      type: "string",
-      maxLength: 30,
-      title: "Recipient",
-    },
-  },
-  type: "object",
-  required: ["creditor_id", "recipt", "name", "creator", "recipient"],
-  title: "Reimbursement",
-} as const;
-
-export const ReimbursementCreateSchema = {
-  properties: {
-    creditor: {
-      $ref: "#/components/schemas/CreditorBase",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    creator: {
-      type: "string",
-      title: "Creator",
-    },
-    recipient: {
-      type: "string",
-      title: "Recipient",
-    },
-  },
-  type: "object",
-  required: ["creditor", "recipt", "creator", "recipient"],
-  title: "ReimbursementCreate",
-} as const;
-
-export const ReimbursementPublic_InputSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-    creator: {
-      type: "string",
-      title: "Creator",
-    },
-    recipient: {
-      type: "string",
-      title: "Recipient",
-    },
-  },
-  type: "object",
-  required: ["creditor_id", "recipt", "id", "creditor", "creator", "recipient"],
-  title: "ReimbursementPublic",
-} as const;
-
-export const ReimbursementPublic_OutputSchema = {
-  properties: {
-    creditor_id: {
-      type: "string",
-      format: "uuid",
-      title: "Creditor Id",
-    },
-    recipt: {
-      type: "string",
-      title: "Recipt",
-    },
-    id: {
-      type: "string",
-      format: "uuid",
-      title: "Id",
-    },
-    creditor: {
-      $ref: "#/components/schemas/CreditorPublic",
-    },
-    creator: {
-      type: "string",
-      title: "Creator",
-    },
-    recipient: {
-      type: "string",
-      title: "Recipient",
-    },
-  },
-  type: "object",
-  required: ["creditor_id", "recipt", "id", "creditor", "creator", "recipient"],
-  title: "ReimbursementPublic",
-} as const;
-
-export const ReimbursementsListSchema = {
-  properties: {
-    items: {
-      items: {
-        $ref: "#/components/schemas/ReimbursementPublic-Output",
-      },
-      type: "array",
-      title: "Items",
-    },
-    count: {
-      type: "integer",
-      title: "Count",
-    },
-    total: {
-      type: "integer",
-      title: "Total",
-    },
-  },
-  type: "object",
-  required: ["items", "count", "total"],
-  title: "ReimbursementsList",
-} as const;
-
-export const ValidationErrorSchema = {
-  properties: {
-    loc: {
-      items: {
-        anyOf: [
-          {
-            type: "string",
-          },
-          {
-            type: "integer",
-          },
-        ],
-      },
-      type: "array",
-      title: "Location",
-    },
-    msg: {
-      type: "string",
-      title: "Message",
-    },
-    type: {
-      type: "string",
-      title: "Error Type",
-    },
-  },
-  type: "object",
-  required: ["loc", "msg", "type"],
-  title: "ValidationError",
-} as const;
-
-==> src/client/services.gen.ts <==
-// This file is auto-generated by @hey-api/openapi-ts
-
-import {
-  createClient,
-  createConfig,
-  type Options,
-} from "@hey-api/client-fetch";
-
-export const client = createClient(createConfig());
-
-==> src/client/types.gen.ts <==
-// This file is auto-generated by @hey-api/openapi-ts
-
-export type Address = {
-  name: string;
-  address1: string;
-  address2: string;
-  address3: string;
-  plz: number;
-  city: string;
-  country: string;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-};
-
-export type AddressBase = {
-  name: string;
-  address1: string;
-  address2: string;
-  address3: string;
-  plz: number;
-  city: string;
-  country: string;
-};
-
-export type AddressesPublic = {
-  items?: Array<AddressPublic>;
-  count: number;
-  total: number;
-};
-
-export type AddressPublic = {
-  name: string;
-  address1: string;
-  address2: string;
-  address3: string;
-  plz: number;
-  city: string;
-  country: string;
-  id: string;
-};
-
-export type Bill = {
-  creditor_id: string;
-  iban: string;
-  address_id: string;
-  reference: number;
-  comment?: string;
-  recipt: string;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-  ezag_timestamp?: Date | null;
-  check_timestamp?: Date | null;
-};
-
-export type BillCreate = {
-  creditor: CreditorBase;
-  address: AddressBase;
-  reference: number;
-  iban: string;
-  recipt: string;
-  comment: string;
-};
-
-export type BillPublic_Input = {
-  creditor_id: string;
-  iban: string;
-  address_id: string;
-  reference: number;
-  comment: string;
-  recipt: string;
-  id: string;
-  creditor: CreditorPublic;
-  address: AddressPublic;
-};
-
-export type BillPublic_Output = {
-  creditor_id: string;
-  iban: string;
-  address_id: string;
-  reference: number;
-  comment: string;
-  recipt: string;
-  id: string;
-  creditor: CreditorPublic;
-  address: AddressPublic;
-};
-
-export type BillsList = {
-  items: Array<BillPublic_Output>;
-  count: number;
-  total: number;
-};
-
-export type Body_files_replace_file = {
-  file: Blob | File;
-};
-
-export type Body_files_upload_file = {
-  file: Blob | File;
-};
-
-export type Card = "Events" | "President" | "Quaestor";
-
-export const Card = {
-  EVENTS: "Events",
-  PRESIDENT: "President",
-  QUAESTOR: "Quaestor",
-} as const;
-
-export type CreditorBase = {
-  kst_id: string;
-  ledger_id: string;
-  amount: number;
-  accounting_year?: number;
-  currency: Currency;
-  comment?: string;
-  qcomment?: string;
-};
-
-export type CreditorPublic = {
-  kst_id: string;
-  ledger_id: string;
-  amount: number;
-  accounting_year?: number;
-  currency: Currency;
-  comment?: string;
-  qcomment?: string;
-  id: string;
-};
-
-export type CreditPayment = {
-  creditor_id: string;
-  recipt: string;
-  card: Card;
-  id?: string;
-  name: string;
-  time_create?: Date;
-  time_modified?: Date;
-  ezag_timestamp?: Date | null;
-  check_timestamp?: Date | null;
-  creator: string;
-};
-
-export type CreditPaymentCreate = {
-  creditor: CreditorBase;
-  recipt: string;
-  card: Card;
-  creator: string;
-};
-
-export type CreditPaymentPublic_Input = {
-  creditor_id: string;
-  recipt: string;
-  card: Card;
-  id: string;
-  creditor: CreditorPublic;
-  creator: string;
-  name: string;
-};
-
-export type CreditPaymentPublic_Output = {
-  creditor_id: string;
-  recipt: string;
-  card: Card;
-  id: string;
-  creditor: CreditorPublic;
-  creator: string;
-  name: string;
-};
-
-export type CreditPaymentsList = {
-  items: Array<CreditPaymentPublic_Output>;
-  count: number;
-  total: number;
-};
-
-export type Currency = "CHF" | "EUR" | "USD";
-
-export const Currency = {
-  CHF: "CHF",
-  EUR: "EUR",
-  USD: "USD",
-} as const;
-
-export type DebitorBase = {
-  kst_id: string;
-  ledger_id: string;
-  amount: number;
-  mwst: string;
-};
-
-export type DebitorFilter = {
-  kst?: string | null;
-  ledger?: string | null;
-  mwst?: string | null;
-};
-
-export type DebitorPublic = {
-  kst_id: string;
-  ledger_id: string;
-  amount: number;
-  mwst: string;
-  id: string;
-};
-
-export type HTTPValidationError = {
-  detail?: Array<ValidationError>;
-};
-
-export type InternalTransfer = {
-  name: string;
-  comment?: string;
-  debitor_id: string;
-  creditor_id: string;
-  amount: number;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-};
-
-export type InternalTransferCreate = {
-  debitor: DebitorBase;
-  creditor: CreditorBase;
-  amount: number;
-};
-
-export type InternalTransferPublic_Input = {
-  name: string;
-  comment?: string;
-  debitor_id: string;
-  creditor_id: string;
-  amount: number;
-  id: string;
-  debitor: DebitorPublic;
-  creditor: CreditorPublic;
-};
-
-export type InternalTransferPublic_Output = {
-  name: string;
-  comment?: string;
-  debitor_id: string;
-  creditor_id: string;
-  amount: number;
-  id: string;
-  debitor: DebitorPublic;
-  creditor: CreditorPublic;
-};
-
-export type InternalTransfersList = {
-  items: Array<InternalTransferPublic_Output>;
-  count: number;
-  total: number;
-};
-
-export type Invoice = {
-  payinterval?: number;
-  adress: string;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-};
-
-export type InvoiceCreate = {
-  payinterval?: number;
-  adress: string;
-  items: Array<ItemstoInvoiceCreate>;
-};
-
-export type InvoicePublic_Input = {
-  payinterval?: number;
-  adress: string;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-  items: Array<ItemstoInvoicePublic>;
-};
-
-export type InvoicePublic_Output = {
-  payinterval?: number;
-  adress: string;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-  items: Array<ItemstoInvoicePublic>;
-};
-
-export type InvoicesList = {
-  items: Array<InvoicePublic_Output>;
-  count: number;
-  total: number;
-};
-
-export type Item = {
-  title_de: string;
-  description_de: string;
-  title_en: string;
-  description_en: string;
-  price: number;
-  unit: string;
-  active?: boolean;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-};
-
-export type ItemBase = {
-  title_de: string;
-  description_de: string;
-  title_en: string;
-  description_en: string;
-  price: number;
-  unit: string;
-  active?: boolean;
-};
-
-export type ItemPublic = {
-  title_de: string;
-  description_de: string;
-  title_en: string;
-  description_en: string;
-  price: number;
-  unit: string;
-  active?: boolean;
-  id: string;
-};
-
-export type ItemsPublic = {
-  items?: Array<ItemPublic>;
-  count: number;
-  total: number;
-};
-
-export type ItemstoInvoiceCreate = {
-  item_id: string;
-  debitor: DebitorBase;
-  amount: number;
-  comment: string;
-};
-
-export type ItemstoInvoicePublic = {
-  item: ItemPublic;
-  debitor: DebitorBase;
-  amount: number;
-  comment: string;
-};
-
-export type Kst = {
-  name_de: string;
-  name_en: string;
-  owner: string;
-  active?: boolean;
-  budget: number;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-};
-
-export type KstBase = {
-  name_de: string;
-  name_en: string;
-  owner: string;
-  active?: boolean;
-  budget: number;
-};
-
-export type KstPublic = {
-  name_de: string;
-  name_en: string;
-  owner: string;
-  active?: boolean;
-  budget: number;
-  id: string;
-};
-
-export type KstsPublic = {
-  items?: Array<KstPublic>;
-  count: number;
-  total: number;
-};
-
-export type Ledger = {
-  accountnumber?: number;
-  namede: string;
-  nameen: string;
-  owner: string;
-  id?: string;
-  time_create?: Date;
-  time_modified?: Date;
-};
-
-export type LedgerBase = {
-  accountnumber?: number;
-  namede: string;
-  nameen: string;
-  owner: string;
-};
-
-export type LedgerPublic = {
-  accountnumber?: number;
-  namede: string;
-  nameen: string;
-  owner: string;
-  id: string;
-};
-
-export type LedgersPublic = {
-  items?: Array<LedgerPublic>;
-  count: number;
-  total: number;
-};
-
-export type Reimbursement = {
-  creditor_id: string;
-  recipt: string;
-  id?: string;
-  name: string;
-  time_create?: Date;
-  time_modified?: Date;
-  ezag_timestamp?: Date | null;
-  check_timestamp?: Date | null;
-  creator: string;
-  recipient: string;
-};
-
-export type ReimbursementCreate = {
-  creditor: CreditorBase;
-  recipt: string;
-  creator: string;
-  recipient: string;
-};
-
-export type ReimbursementPublic_Input = {
-  creditor_id: string;
-  recipt: string;
-  id: string;
-  creditor: CreditorPublic;
-  creator: string;
-  recipient: string;
-};
-
-export type ReimbursementPublic_Output = {
-  creditor_id: string;
-  recipt: string;
-  id: string;
-  creditor: CreditorPublic;
-  creator: string;
-  recipient: string;
-};
-
-export type ReimbursementsList = {
-  items: Array<ReimbursementPublic_Output>;
-  count: number;
-  total: number;
-};
-
-export type ValidationError = {
-  loc: Array<string | number>;
-  msg: string;
-  type: string;
-};
-
-==> eslint.config.mjs <==
-import { fixupConfigRules } from "@eslint/compat";
-import reactRefresh from "eslint-plugin-react-refresh";
-import globals from "globals";
-import tsParser from "@typescript-eslint/parser";
-import path from "node:path";
-import { fileURLToPath } from "node:url";
-import js from "@eslint/js";
-import { FlatCompat } from "@eslint/eslintrc";
-
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = path.dirname(__filename);
-const compat = new FlatCompat({
-    baseDirectory: __dirname,
-    recommendedConfig: js.configs.recommended,
-    allConfig: js.configs.all
-});
-
-export default [{
-    ignores: ["**/dist", "**/.eslintrc.cjs"],
-}, ...fixupConfigRules(compat.extends(
-    "eslint:recommended",
-    "plugin:@typescript-eslint/recommended",
-    "plugin:react-hooks/recommended",
-)), {
-    plugins: {
-        "react-refresh": reactRefresh,
-    },
-
-    languageOptions: {
-        globals: {
-            ...globals.browser,
-        },
-
-        parser: tsParser,
-    },
-
-    rules: {
-        "react-refresh/only-export-components": ["warn", {
-            allowConstantExport: true,
-        }],
-    },
-}];
-==> index.html <==
-<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>qtool</title>
-  </head>
-  <body>
-    <div id="root"></div>
-    <script type="module" src="/src/main.tsx"></script>
-  </body>
-</html>
-
-==> openapi.json <==
-{"openapi":"3.1.0","info":{"title":"qtool backend","version":"0.1.0"},"paths":{"/api/items/":{"get":{"tags":["items"],"summary":"Read Items","description":"retrieve all items, sorted by id.\npaginate the results.","operationId":"items-read_items","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"price","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price"}},{"name":"unit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"}},{"name":"active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["items"],"summary":"Create Item","description":"create a new item.","operationId":"items-create_item","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/items/{item_id}":{"get":{"tags":["items"],"summary":"Read Item","description":"retrieve a single item by id.","operationId":"items-read_item","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["items"],"summary":"Update Item","description":"update an item.","operationId":"items-update_item","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemPublic"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["items"],"summary":"Delete Item","description":"delete an item.","operationId":"items-delete_item","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Item"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invoices/{invoice_id}":{"get":{"tags":["invoices"],"summary":"Read Invoice","description":"Retrieve a single Invoice by id.","operationId":"invoices-read_Invoice","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoicePublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invoices/":{"get":{"tags":["invoices"],"summary":"Read Invoices","description":"Retrieve all Invoices, sorted by id.\nPaginate the results.","operationId":"invoices-read_Invoices","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"adress","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adress"}},{"name":"kst","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kst"}},{"name":"mwst","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mwst"}},{"name":"payinterval","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payinterval"}},{"name":"comment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},{"name":"time_create","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time Create"}},{"name":"time_modified","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time Modified"}},{"name":"items","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"","title":"Items"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DebitorFilter"},{"type":"null"}],"title":"Debitor"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoicesList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["invoices"],"summary":"Create Invoice","description":"Create a new Invoice.","operationId":"invoices-create_Invoice","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoicePublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/invoices/{Invoice_id}":{"patch":{"tags":["invoices"],"summary":"Update Invoice","description":"update an Invoice.","operationId":"invoices-update_Invoice","parameters":[{"name":"invoice_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Invoice Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoicePublic-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoicePublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["invoices"],"summary":"Delete Invoice","description":"delete an Invoice.","operationId":"invoices-delete_Invoice","parameters":[{"name":"Invoice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ledgers/":{"get":{"tags":["ledgers"],"summary":"Read Ledgers","description":"retrieve all ledgers, sorted by accountnumber.\npaginate the results.","operationId":"ledgers-read_ledgers","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"accountnumber","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accountnumber"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LedgersPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ledgers"],"summary":"Create Ledger","description":"create a new Ledger.","operationId":"ledgers-create_ledger","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LedgerBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ledger"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ledgers/{ledger_id}":{"get":{"tags":["ledgers"],"summary":"Read Ledger","description":"retrieve a single Ledger by id.","operationId":"ledgers-read_ledger","parameters":[{"name":"ledger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ledger Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ledger"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ledgers"],"summary":"Update Ledger","description":"update an Ledger.","operationId":"ledgers-update_ledger","parameters":[{"name":"ledger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ledger Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LedgerPublic"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ledger"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ledgers"],"summary":"Delete Ledger","description":"delete an Ledger.","operationId":"ledgers-delete_ledger","parameters":[{"name":"ledger_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ledger Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ledger"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ksts/":{"get":{"tags":["ksts"],"summary":"Read Ksts","description":"retrieve all ksts, sorted by accountnumber.\npaginate the results.","operationId":"ksts-read_ksts","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"accountnumber","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accountnumber"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KstsPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ksts"],"summary":"Create Kst","description":"create a new Kst.","operationId":"ksts-create_kst","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KstBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kst"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ksts/{kst_id}":{"get":{"tags":["ksts"],"summary":"Read Kst","description":"retrieve a single Kst by id.","operationId":"ksts-read_kst","parameters":[{"name":"kst_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Kst Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kst"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["ksts"],"summary":"Update Kst","description":"update an Kst.","operationId":"ksts-update_kst","parameters":[{"name":"kst_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Kst Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KstPublic"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kst"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ksts"],"summary":"Delete Kst","description":"delete an Kst.","operationId":"ksts-delete_kst","parameters":[{"name":"kst_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Kst Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kst"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/addresses/":{"get":{"tags":["addresses"],"summary":"Read Addresses","description":"retrieve all addresses, sorted by name.\npaginate the results.","operationId":"addresses-read_addresses","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"accountnumber","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accountnumber"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressesPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["addresses"],"summary":"Create Address","description":"create a new Address.","operationId":"addresses-create_address","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/addresses/{address_id}":{"get":{"tags":["addresses"],"summary":"Read Address","description":"retrieve a single Address by id.","operationId":"addresses-read_address","parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Address Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["addresses"],"summary":"Update Address","description":"update an Address.","operationId":"addresses-update_address","parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Address Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressPublic"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["addresses"],"summary":"Delete Address","description":"delete an Address.","operationId":"addresses-delete_address","parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Address Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internalTransfers/":{"get":{"tags":["internalTransfers"],"summary":"Read Internaltransferes","description":"retrieve all InternalTransferes, sorted by name.\npaginate the results.","operationId":"internalTransfers-read_InternalTransferes","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"debitor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Debitor"}},{"name":"creditor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creditor"}},{"name":"amount","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransfersList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["internalTransfers"],"summary":"Create Internaltransfer","description":"create a new InternalTransfer.","operationId":"internalTransfers-create_InternalTransfer","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransferCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransferPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internalTransfers/{InternalTransfer_id}":{"get":{"tags":["internalTransfers"],"summary":"Read Internaltransfer","description":"retrieve a single InternalTransfer by id.","operationId":"internalTransfers-read_InternalTransfer","parameters":[{"name":"InternalTransfer_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Internaltransfer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransferPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["internalTransfers"],"summary":"Update Internaltransfer","description":"update an InternalTransfer.","operationId":"internalTransfers-update_InternalTransfer","parameters":[{"name":"internalTransfer_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Internaltransfer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransferPublic-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransferPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["internalTransfers"],"summary":"Delete Internaltransfer","description":"delete an InternalTransfer.","operationId":"internalTransfers-delete_InternalTransfer","parameters":[{"name":"InternalTransfer_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Internaltransfer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransfer"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bills/":{"get":{"tags":["bills"],"summary":"Read Bills","description":"retrieve all Billes, sorted by name.\npaginate the results.","operationId":"bills-read_Bills","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"creditor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creditor"}},{"name":"address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"}},{"name":"reference","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"}},{"name":"iban","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iban"}},{"name":"recipt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipt"}},{"name":"comment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillsList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["bills"],"summary":"Create Bill","description":"create a new Bill.","operationId":"bills-create_Bill","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bills/{Bill_id}":{"get":{"tags":["bills"],"summary":"Read Bill","description":"retrieve a single Bill by id.","operationId":"bills-read_Bill","parameters":[{"name":"bill_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Bill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["bills"],"summary":"Update Bill","description":"update an Bill.","operationId":"bills-update_Bill","parameters":[{"name":"Bill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bill Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillPublic-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["bills"],"summary":"Delete Bill","description":"delete an Bill.","operationId":"bills-delete_Bill","parameters":[{"name":"Bill_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Bill"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reimbursements/":{"get":{"tags":["reimbursements"],"summary":"Read Reimbursements","description":"retrieve all Reimbursementes, sorted by name.\npaginate the results.","operationId":"reimbursements-read_Reimbursements","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"creditor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creditor"}},{"name":"recipt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReimbursementsList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["reimbursements"],"summary":"Create Reimbursement","description":"create a new Reimbursement.","operationId":"reimbursements-create_Reimbursement","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReimbursementCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReimbursementPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reimbursements/{Reimbursement_id}":{"get":{"tags":["reimbursements"],"summary":"Read Reimbursement","description":"retrieve a single Reimbursement by id.","operationId":"reimbursements-read_Reimbursement","parameters":[{"name":"Reimbursement_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reimbursement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReimbursementPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["reimbursements"],"summary":"Update Reimbursement","description":"update an Reimbursement.","operationId":"reimbursements-update_Reimbursement","parameters":[{"name":"reimbursement_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Reimbursement Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReimbursementPublic-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReimbursementPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["reimbursements"],"summary":"Delete Reimbursement","description":"delete an Reimbursement.","operationId":"reimbursements-delete_Reimbursement","parameters":[{"name":"reimbursement_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Reimbursement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reimbursement"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/creditPayments/":{"get":{"tags":["creditPayments"],"summary":"Read Creditpayments","description":"retrieve all CreditPaymentes, sorted by name.\npaginate the results.","operationId":"creditPayments-read_creditPayments","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"creditor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creditor"}},{"name":"recipt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipt"}},{"name":"card","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPaymentsList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["creditPayments"],"summary":"Create Creditpayment","description":"create a new CreditPayment.","operationId":"creditPayments-create_creditPayment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPaymentCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPaymentPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/creditPayments/{CreditPayment_id}":{"get":{"tags":["creditPayments"],"summary":"Read Creditpayment","description":"retrieve a single CreditPayment by id.","operationId":"creditPayments-read_creditPayment","parameters":[{"name":"creditPayment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Creditpayment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPaymentPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["creditPayments"],"summary":"Update Creditpayment","description":"update an CreditPayment.","operationId":"creditPayments-update_creditPayment","parameters":[{"name":"creditPayment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Creditpayment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPaymentPublic-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPaymentPublic-Output"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["creditPayments"],"summary":"Delete Creditpayment","description":"delete an CreditPayment.","operationId":"creditPayments-delete_creditPayment","parameters":[{"name":"creditPayment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Creditpayment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPayment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files/unlinked_files":{"get":{"tags":["files"],"summary":"Get Unlinked Files","description":"Get a list of all files in the MinIO bucket that are not linked to any item.","operationId":"files-get_unlinked_files","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/files/upload":{"post":{"tags":["files"],"summary":"Upload File","description":"Upload a file to MinIO and return its UUID.","operationId":"files-upload_file","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_files-upload_file"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files/files/{file_id}":{"get":{"tags":["files"],"summary":"Get File","description":"Generate a presigned URL for downloading the file from MinIO.","operationId":"files-get_file","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"expires","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":3600,"title":"Expires"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["files"],"summary":"Replace File","description":"Replace an existing file in MinIO with a new file using the same UUID.","operationId":"files-replace_file","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_files-replace_file"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files"],"summary":"Delete File","description":"Delete a file from MinIO.","operationId":"files-delete_file","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/files/files":{"get":{"tags":["files"],"summary":"List Files","description":"List all files in the MinIO bucket.","operationId":"files-list_files","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Address":{"properties":{"name":{"type":"string","maxLength":30,"title":"Name"},"address1":{"type":"string","maxLength":30,"title":"Address1"},"address2":{"type":"string","maxLength":30,"title":"Address2"},"address3":{"type":"string","maxLength":30,"title":"Address3"},"plz":{"type":"integer","title":"Plz"},"city":{"type":"string","maxLength":30,"title":"City"},"country":{"type":"string","maxLength":30,"title":"Country"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.215210"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.215238"}},"type":"object","required":["name","address1","address2","address3","plz","city","country"],"title":"Address"},"AddressBase":{"properties":{"name":{"type":"string","maxLength":30,"title":"Name"},"address1":{"type":"string","maxLength":30,"title":"Address1"},"address2":{"type":"string","maxLength":30,"title":"Address2"},"address3":{"type":"string","maxLength":30,"title":"Address3"},"plz":{"type":"integer","title":"Plz"},"city":{"type":"string","maxLength":30,"title":"City"},"country":{"type":"string","maxLength":30,"title":"Country"}},"type":"object","required":["name","address1","address2","address3","plz","city","country"],"title":"AddressBase"},"AddressPublic":{"properties":{"name":{"type":"string","maxLength":30,"title":"Name"},"address1":{"type":"string","maxLength":30,"title":"Address1"},"address2":{"type":"string","maxLength":30,"title":"Address2"},"address3":{"type":"string","maxLength":30,"title":"Address3"},"plz":{"type":"integer","title":"Plz"},"city":{"type":"string","maxLength":30,"title":"City"},"country":{"type":"string","maxLength":30,"title":"Country"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["name","address1","address2","address3","plz","city","country","id"],"title":"AddressPublic"},"AddressesPublic":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AddressPublic"},"type":"array","title":"Items","default":[]},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["count","total"],"title":"AddressesPublic"},"Bill":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"iban":{"type":"string","maxLength":30,"title":"Iban"},"address_id":{"type":"string","format":"uuid","title":"Address Id"},"reference":{"type":"integer","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Reference"},"comment":{"type":"string","maxLength":255,"title":"Comment","default":""},"recipt":{"type":"string","maxLength":30,"title":"Recipt"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.245576"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.245603"},"ezag_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ezag Timestamp"},"check_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Check Timestamp"}},"type":"object","required":["creditor_id","iban","address_id","reference","recipt"],"title":"Bill"},"BillCreate":{"properties":{"creditor":{"$ref":"#/components/schemas/CreditorBase"},"address":{"$ref":"#/components/schemas/AddressBase"},"reference":{"type":"integer","title":"Reference"},"iban":{"type":"string","title":"Iban"},"recipt":{"type":"string","title":"Recipt"},"comment":{"type":"string","title":"Comment"}},"type":"object","required":["creditor","address","reference","iban","recipt","comment"],"title":"BillCreate"},"BillPublic-Input":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"iban":{"type":"string","title":"Iban"},"address_id":{"type":"string","format":"uuid","title":"Address Id"},"reference":{"type":"integer","title":"Reference"},"comment":{"type":"string","title":"Comment"},"recipt":{"type":"string","title":"Recipt"},"id":{"type":"string","format":"uuid","title":"Id"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"},"address":{"$ref":"#/components/schemas/AddressPublic"}},"type":"object","required":["creditor_id","iban","address_id","reference","comment","recipt","id","creditor","address"],"title":"BillPublic"},"BillPublic-Output":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"iban":{"type":"string","title":"Iban"},"address_id":{"type":"string","format":"uuid","title":"Address Id"},"reference":{"type":"integer","title":"Reference"},"comment":{"type":"string","title":"Comment"},"recipt":{"type":"string","title":"Recipt"},"id":{"type":"string","format":"uuid","title":"Id"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"},"address":{"$ref":"#/components/schemas/AddressPublic"}},"type":"object","required":["creditor_id","iban","address_id","reference","comment","recipt","id","creditor","address"],"title":"BillPublic"},"BillsList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BillPublic-Output"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","count","total"],"title":"BillsList"},"Body_files-replace_file":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_files-replace_file"},"Body_files-upload_file":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_files-upload_file"},"Card":{"type":"string","enum":["Events","President","Quaestor"],"title":"Card"},"CreditPayment":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"recipt":{"type":"string","maxLength":30,"title":"Recipt"},"card":{"$ref":"#/components/schemas/Card"},"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","maxLength":200,"title":"Name"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.255823"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.255852"},"ezag_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ezag Timestamp"},"check_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Check Timestamp"},"creator":{"type":"string","maxLength":30,"title":"Creator"}},"type":"object","required":["creditor_id","recipt","card","name","creator"],"title":"CreditPayment"},"CreditPaymentCreate":{"properties":{"creditor":{"$ref":"#/components/schemas/CreditorBase"},"recipt":{"type":"string","title":"Recipt"},"card":{"$ref":"#/components/schemas/Card"},"creator":{"type":"string","title":"Creator"}},"type":"object","required":["creditor","recipt","card","creator"],"title":"CreditPaymentCreate"},"CreditPaymentPublic-Input":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"recipt":{"type":"string","title":"Recipt"},"card":{"$ref":"#/components/schemas/Card"},"id":{"type":"string","format":"uuid","title":"Id"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"},"creator":{"type":"string","title":"Creator"},"name":{"type":"string","title":"Name"}},"type":"object","required":["creditor_id","recipt","card","id","creditor","creator","name"],"title":"CreditPaymentPublic"},"CreditPaymentPublic-Output":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"recipt":{"type":"string","title":"Recipt"},"card":{"$ref":"#/components/schemas/Card"},"id":{"type":"string","format":"uuid","title":"Id"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"},"creator":{"type":"string","title":"Creator"},"name":{"type":"string","title":"Name"}},"type":"object","required":["creditor_id","recipt","card","id","creditor","creator","name"],"title":"CreditPaymentPublic"},"CreditPaymentsList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CreditPaymentPublic-Output"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","count","total"],"title":"CreditPaymentsList"},"CreditorBase":{"properties":{"kst_id":{"type":"string","format":"uuid","title":"Kst Id"},"ledger_id":{"type":"string","format":"uuid","title":"Ledger Id"},"amount":{"type":"integer","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Amount"},"accounting_year":{"type":"integer","title":"Accounting Year","default":2024},"currency":{"$ref":"#/components/schemas/Currency"},"comment":{"type":"string","maxLength":255,"title":"Comment","default":""},"qcomment":{"type":"string","maxLength":255,"title":"Qcomment","default":""}},"type":"object","required":["kst_id","ledger_id","amount","currency"],"title":"CreditorBase"},"CreditorPublic":{"properties":{"kst_id":{"type":"string","format":"uuid","title":"Kst Id"},"ledger_id":{"type":"string","format":"uuid","title":"Ledger Id"},"amount":{"type":"integer","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Amount"},"accounting_year":{"type":"integer","title":"Accounting Year","default":2024},"currency":{"$ref":"#/components/schemas/Currency"},"comment":{"type":"string","maxLength":255,"title":"Comment","default":""},"qcomment":{"type":"string","maxLength":255,"title":"Qcomment","default":""},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["kst_id","ledger_id","amount","currency","id"],"title":"CreditorPublic"},"Currency":{"type":"string","enum":["CHF","EUR","USD"],"title":"Currency"},"DebitorBase":{"properties":{"kst_id":{"type":"string","format":"uuid","title":"Kst Id"},"ledger_id":{"type":"string","format":"uuid","title":"Ledger Id"},"amount":{"type":"integer","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Amount"},"mwst":{"type":"string","maxLength":30,"title":"Mwst"}},"type":"object","required":["kst_id","ledger_id","amount","mwst"],"title":"DebitorBase"},"DebitorFilter":{"properties":{"kst":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kst"},"ledger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ledger"},"mwst":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mwst"}},"additionalProperties":false,"type":"object","title":"DebitorFilter"},"DebitorPublic":{"properties":{"kst_id":{"type":"string","format":"uuid","title":"Kst Id"},"ledger_id":{"type":"string","format":"uuid","title":"Ledger Id"},"amount":{"type":"integer","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Amount"},"mwst":{"type":"string","maxLength":30,"title":"Mwst"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["kst_id","ledger_id","amount","mwst","id"],"title":"DebitorPublic"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InternalTransfer":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name"},"comment":{"type":"string","maxLength":255,"title":"Comment","default":""},"debitor_id":{"type":"string","format":"uuid","title":"Debitor Id"},"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"amount":{"type":"integer","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Amount"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.286242"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.286282"}},"type":"object","required":["name","debitor_id","creditor_id","amount"],"title":"InternalTransfer"},"InternalTransferCreate":{"properties":{"debitor":{"$ref":"#/components/schemas/DebitorBase"},"creditor":{"$ref":"#/components/schemas/CreditorBase"},"amount":{"type":"integer","title":"Amount"}},"type":"object","required":["debitor","creditor","amount"],"title":"InternalTransferCreate"},"InternalTransferPublic-Input":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name"},"comment":{"type":"string","maxLength":255,"title":"Comment","default":""},"debitor_id":{"type":"string","format":"uuid","title":"Debitor Id"},"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"amount":{"type":"integer","title":"Amount"},"id":{"type":"string","format":"uuid","title":"Id"},"debitor":{"$ref":"#/components/schemas/DebitorPublic"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"}},"type":"object","required":["name","debitor_id","creditor_id","amount","id","debitor","creditor"],"title":"InternalTransferPublic"},"InternalTransferPublic-Output":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name"},"comment":{"type":"string","maxLength":255,"title":"Comment","default":""},"debitor_id":{"type":"string","format":"uuid","title":"Debitor Id"},"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"amount":{"type":"integer","title":"Amount"},"id":{"type":"string","format":"uuid","title":"Id"},"debitor":{"$ref":"#/components/schemas/DebitorPublic"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"}},"type":"object","required":["name","debitor_id","creditor_id","amount","id","debitor","creditor"],"title":"InternalTransferPublic"},"InternalTransfersList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InternalTransferPublic-Output"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","count","total"],"title":"InternalTransfersList"},"Invoice":{"properties":{"payinterval":{"type":"integer","title":"Payinterval","default":30},"adress":{"type":"string","maxLength":30,"title":"Adress"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.306366"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.306411"}},"type":"object","required":["adress"],"title":"Invoice"},"InvoiceCreate":{"properties":{"payinterval":{"type":"integer","title":"Payinterval","default":30},"adress":{"type":"string","maxLength":30,"title":"Adress"},"items":{"items":{"$ref":"#/components/schemas/ItemstoInvoiceCreate"},"type":"array","title":"Items"}},"type":"object","required":["adress","items"],"title":"InvoiceCreate"},"InvoicePublic-Input":{"properties":{"payinterval":{"type":"integer","title":"Payinterval","default":30},"adress":{"type":"string","maxLength":30,"title":"Adress"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified"},"items":{"items":{"$ref":"#/components/schemas/ItemstoInvoicePublic"},"type":"array","title":"Items"}},"type":"object","required":["adress","items"],"title":"InvoicePublic"},"InvoicePublic-Output":{"properties":{"payinterval":{"type":"integer","title":"Payinterval","default":30},"adress":{"type":"string","maxLength":30,"title":"Adress"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified"},"items":{"items":{"$ref":"#/components/schemas/ItemstoInvoicePublic"},"type":"array","title":"Items"}},"type":"object","required":["adress","items"],"title":"InvoicePublic"},"InvoicesList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InvoicePublic-Output"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","count","total"],"title":"InvoicesList"},"Item":{"properties":{"title_de":{"type":"string","maxLength":255,"minLength":1,"title":"Title De"},"description_de":{"type":"string","maxLength":255,"title":"Description De"},"title_en":{"type":"string","maxLength":255,"minLength":1,"title":"Title En"},"description_en":{"type":"string","maxLength":255,"title":"Description En"},"price":{"type":"integer","exclusiveMinimum":4.0,"title":"Price"},"unit":{"type":"string","maxLength":30,"title":"Unit"},"active":{"type":"boolean","title":"Active","default":true},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.264983"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.265011"}},"type":"object","required":["title_de","description_de","title_en","description_en","price","unit"],"title":"Item"},"ItemBase":{"properties":{"title_de":{"type":"string","maxLength":255,"minLength":1,"title":"Title De"},"description_de":{"type":"string","maxLength":255,"title":"Description De"},"title_en":{"type":"string","maxLength":255,"minLength":1,"title":"Title En"},"description_en":{"type":"string","maxLength":255,"title":"Description En"},"price":{"type":"integer","exclusiveMinimum":4.0,"title":"Price"},"unit":{"type":"string","maxLength":30,"title":"Unit"},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","required":["title_de","description_de","title_en","description_en","price","unit"],"title":"ItemBase"},"ItemPublic":{"properties":{"title_de":{"type":"string","maxLength":255,"minLength":1,"title":"Title De"},"description_de":{"type":"string","maxLength":255,"title":"Description De"},"title_en":{"type":"string","maxLength":255,"minLength":1,"title":"Title En"},"description_en":{"type":"string","maxLength":255,"title":"Description En"},"price":{"type":"integer","exclusiveMinimum":4.0,"title":"Price"},"unit":{"type":"string","maxLength":30,"title":"Unit"},"active":{"type":"boolean","title":"Active","default":true},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["title_de","description_de","title_en","description_en","price","unit","id"],"title":"ItemPublic"},"ItemsPublic":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ItemPublic"},"type":"array","title":"Items","default":[]},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["count","total"],"title":"ItemsPublic"},"ItemstoInvoiceCreate":{"properties":{"item_id":{"type":"string","format":"uuid","title":"Item Id"},"debitor":{"$ref":"#/components/schemas/DebitorBase"},"amount":{"type":"integer","title":"Amount"},"comment":{"type":"string","title":"Comment"}},"type":"object","required":["item_id","debitor","amount","comment"],"title":"ItemstoInvoiceCreate"},"ItemstoInvoicePublic":{"properties":{"item":{"$ref":"#/components/schemas/ItemPublic"},"debitor":{"$ref":"#/components/schemas/DebitorBase"},"amount":{"type":"integer","title":"Amount"},"comment":{"type":"string","title":"Comment"}},"type":"object","required":["item","debitor","amount","comment"],"title":"ItemstoInvoicePublic"},"Kst":{"properties":{"name_de":{"type":"string","maxLength":30,"title":"Name De"},"name_en":{"type":"string","maxLength":30,"title":"Name En"},"owner":{"type":"string","maxLength":30,"title":"Owner"},"active":{"type":"boolean","title":"Active","default":true},"budget":{"type":"integer","title":"Budget"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.224531"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.224559"}},"type":"object","required":["name_de","name_en","owner","budget"],"title":"Kst"},"KstBase":{"properties":{"name_de":{"type":"string","maxLength":30,"title":"Name De"},"name_en":{"type":"string","maxLength":30,"title":"Name En"},"owner":{"type":"string","maxLength":30,"title":"Owner"},"active":{"type":"boolean","title":"Active","default":true},"budget":{"type":"integer","title":"Budget"}},"type":"object","required":["name_de","name_en","owner","budget"],"title":"KstBase"},"KstPublic":{"properties":{"name_de":{"type":"string","maxLength":30,"title":"Name De"},"name_en":{"type":"string","maxLength":30,"title":"Name En"},"owner":{"type":"string","maxLength":30,"title":"Owner"},"active":{"type":"boolean","title":"Active","default":true},"budget":{"type":"integer","title":"Budget"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["name_de","name_en","owner","budget","id"],"title":"KstPublic"},"KstsPublic":{"properties":{"items":{"items":{"$ref":"#/components/schemas/KstPublic"},"type":"array","title":"Items","default":[]},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["count","total"],"title":"KstsPublic"},"Ledger":{"properties":{"accountnumber":{"type":"integer","title":"Accountnumber","default":0},"namede":{"type":"string","maxLength":30,"title":"Namede"},"nameen":{"type":"string","maxLength":30,"title":"Nameen"},"owner":{"type":"string","maxLength":30,"title":"Owner"},"id":{"type":"string","format":"uuid","title":"Id"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.231377"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.231404"}},"type":"object","required":["namede","nameen","owner"],"title":"Ledger"},"LedgerBase":{"properties":{"accountnumber":{"type":"integer","title":"Accountnumber","default":0},"namede":{"type":"string","maxLength":30,"title":"Namede"},"nameen":{"type":"string","maxLength":30,"title":"Nameen"},"owner":{"type":"string","maxLength":30,"title":"Owner"}},"type":"object","required":["namede","nameen","owner"],"title":"LedgerBase"},"LedgerPublic":{"properties":{"accountnumber":{"type":"integer","title":"Accountnumber","default":0},"namede":{"type":"string","maxLength":30,"title":"Namede"},"nameen":{"type":"string","maxLength":30,"title":"Nameen"},"owner":{"type":"string","maxLength":30,"title":"Owner"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["namede","nameen","owner","id"],"title":"LedgerPublic"},"LedgersPublic":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LedgerPublic"},"type":"array","title":"Items","default":[]},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["count","total"],"title":"LedgersPublic"},"Reimbursement":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"recipt":{"type":"string","maxLength":30,"title":"Recipt"},"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","maxLength":200,"title":"Name"},"time_create":{"type":"string","format":"date-time","title":"Time Create","default":"2024-11-04T14:37:27.319471"},"time_modified":{"type":"string","format":"date-time","title":"Time Modified","default":"2024-11-04T14:37:27.319498"},"ezag_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ezag Timestamp"},"check_timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Check Timestamp"},"creator":{"type":"string","maxLength":30,"title":"Creator"},"recipient":{"type":"string","maxLength":30,"title":"Recipient"}},"type":"object","required":["creditor_id","recipt","name","creator","recipient"],"title":"Reimbursement"},"ReimbursementCreate":{"properties":{"creditor":{"$ref":"#/components/schemas/CreditorBase"},"recipt":{"type":"string","title":"Recipt"},"creator":{"type":"string","title":"Creator"},"recipient":{"type":"string","title":"Recipient"}},"type":"object","required":["creditor","recipt","creator","recipient"],"title":"ReimbursementCreate"},"ReimbursementPublic-Input":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"recipt":{"type":"string","title":"Recipt"},"id":{"type":"string","format":"uuid","title":"Id"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"},"creator":{"type":"string","title":"Creator"},"recipient":{"type":"string","title":"Recipient"}},"type":"object","required":["creditor_id","recipt","id","creditor","creator","recipient"],"title":"ReimbursementPublic"},"ReimbursementPublic-Output":{"properties":{"creditor_id":{"type":"string","format":"uuid","title":"Creditor Id"},"recipt":{"type":"string","title":"Recipt"},"id":{"type":"string","format":"uuid","title":"Id"},"creditor":{"$ref":"#/components/schemas/CreditorPublic"},"creator":{"type":"string","title":"Creator"},"recipient":{"type":"string","title":"Recipient"}},"type":"object","required":["creditor_id","recipt","id","creditor","creator","recipient"],"title":"ReimbursementPublic"},"ReimbursementsList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReimbursementPublic-Output"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","count","total"],"title":"ReimbursementsList"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
-==> openapi-ts.config.ts <==
-import { defineConfig } from '@hey-api/openapi-ts';
-
-export default defineConfig({
-  client: '@hey-api/client-fetch',
-  input: './openapi.json',
-  output: {
-    format: 'prettier',
-    path: './src/client',
-  },
-  plugins: [
-    '@hey-api/schemas',
-    {
-      dates: true,
-      name: '@hey-api/transformers',
-    },
-    {
-      enums: 'javascript',
-      name: '@hey-api/types',
-    },
-    {
-        filter: '^\\w+ /api/*s$',
-        name: '@hey-api/services',
-    },
-  ],
-});
-
-==> package.json <==
-{
-  "name": "qtoo-frontend",
-  "private": true,
-  "version": "0.0.0",
-  "type": "module",
-  "scripts": {
-    "dev": "vite",
-    "build": "tsc && vite build",
-    "lint": "eslint .  --report-unused-disable-directives --max-warnings 0",
-    "preview": "vite preview"
-  },
-  "dependencies": {
-    "@emotion/react": "^11.13.3",
-    "@emotion/styled": "^11.13.0",
-    "@hey-api/client-fetch": "^0.4.2",
-    "@mui/base": "^5.0.0-beta.61",
-    "@mui/icons-material": "^6.1.6",
-    "@mui/material": "^6.1.6",
-    "@vitejs/plugin-react": "^4.3.3",
-    "esnext": "^3.3.1",
-    "mui": "^0.0.1",
-    "node": "^22.11.0",
-    "react": "^18.3.1",
-    "react-dom": "^18.3.1",
-    "react-router-dom": "^6.27.0",
-    "typescript": "^5.6.3",
-    "vite": "^5.4.10"
-  },
-  "devDependencies": {
-    "@eslint/compat": "^1.2.2",
-    "@eslint/eslintrc": "^3.1.0",
-    "@eslint/js": "^9.14.0",
-    "@hey-api/openapi-ts": "^0.54.2",
-    "@typescript-eslint/eslint-plugin": "^8.13.0",
-    "@typescript-eslint/parser": "^8.13.0",
-    "eslint": "^9.14.0",
-    "eslint-plugin-react-hooks": "^5.0.0",
-    "eslint-plugin-react-refresh": "^0.4.14",
-    "prettier": "^3.3.3"
-  }
-}
-
-==> README.md <==
-use https://heyapi.dev/ for generating code.
-
-run curl http://127.0.0.1:8000/api/openapi.json > openapi.json to download the latest version from the backend. 
-
-run 
-npx @hey-api/openapi-ts -i ./openapi.json -o src/client -c @hey-api/client-fetch 
-to compile it.
-==> tsconfig.json <==
-{
-  "compilerOptions": {
-    "target": "ES2020",
-    "useDefineForClassFields": true,
-    "lib": ["ES2020", "DOM", "DOM.Iterable"],
-    "module": "ESNext",
-    "skipLibCheck": true,
-
-    /* Bundler mode */
-    "moduleResolution": "bundler",
-    "allowImportingTsExtensions": true,
-    "resolveJsonModule": true,
-    "isolatedModules": true,
-    "noEmit": true,
-    "jsx": "react-jsx",
-
-    /* Linting */
-    "strict": true,
-    "noUnusedLocals": true,
-    "noUnusedParameters": true,
-    "noFallthroughCasesInSwitch": true
-  },
-  "include": ["src"],
-  "references": [{ "path": "./tsconfig.node.json" }]
-}
-
-==> tsconfig.node.json <==
-{
-  "compilerOptions": {
-    "composite": true,
-    "skipLibCheck": true,
-    "module": "ESNext",
-    "moduleResolution": "bundler",
-    "allowSyntheticDefaultImports": true,
-    "strict": true
-  },
-  "include": ["vite.config.ts"]
-}
-
-==> vite.config.ts <==
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
-import dotenv from 'dotenv';
-
-dotenv.config();
-
-// https://vitejs.dev/config/
-export default defineConfig({
-  plugins: [react()],
-})
-
-==> yarn.lock <==
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@ampproject/remapping@^2.2.0":
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
-  integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
-  dependencies:
-    "@jridgewell/gen-mapping" "^0.3.5"
-    "@jridgewell/trace-mapping" "^0.3.24"
-
-"@apidevtools/json-schema-ref-parser@11.7.2":
-  version "11.7.2"
-  resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz#cdf3e0aded21492364a70e193b45b7cf4177f031"
-  integrity sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==
-  dependencies:
-    "@jsdevtools/ono" "^7.1.3"
-    "@types/json-schema" "^7.0.15"
-    js-yaml "^4.1.0"
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0":
-  version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
-  integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
-  dependencies:
-    "@babel/helper-validator-identifier" "^7.25.9"
-    js-tokens "^4.0.0"
-    picocolors "^1.0.0"
-
-"@babel/compat-data@^7.25.9":
-  version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e"
-  integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==
-
-"@babel/core@^7.25.2":
-  version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40"
-  integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
-  dependencies:
-    "@ampproject/remapping" "^2.2.0"
-    "@babel/code-frame" "^7.26.0"
-    "@babel/generator" "^7.26.0"
-    "@babel/helper-compilation-targets" "^7.25.9"
-    "@babel/helper-module-transforms" "^7.26.0"
-    "@babel/helpers" "^7.26.0"
-    "@babel/parser" "^7.26.0"
-    "@babel/template" "^7.25.9"
-    "@babel/traverse" "^7.25.9"
-    "@babel/types" "^7.26.0"
-    convert-source-map "^2.0.0"
-    debug "^4.1.0"
-    gensync "^1.0.0-beta.2"
-    json5 "^2.2.3"
-    semver "^6.3.1"
-
-"@babel/generator@^7.25.9", "@babel/generator@^7.26.0":
-  version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f"
-  integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==
-  dependencies:
-    "@babel/parser" "^7.26.2"
-    "@babel/types" "^7.26.0"
-    "@jridgewell/gen-mapping" "^0.3.5"
-    "@jridgewell/trace-mapping" "^0.3.25"
-    jsesc "^3.0.2"
-
-"@babel/helper-compilation-targets@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875"
-  integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==
-  dependencies:
-    "@babel/compat-data" "^7.25.9"
-    "@babel/helper-validator-option" "^7.25.9"
-    browserslist "^4.24.0"
-    lru-cache "^5.1.1"
-    semver "^6.3.1"
-
-"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
-  integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
-  dependencies:
-    "@babel/traverse" "^7.25.9"
-    "@babel/types" "^7.25.9"
-
-"@babel/helper-module-transforms@^7.26.0":
-  version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
-  integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
-  dependencies:
-    "@babel/helper-module-imports" "^7.25.9"
-    "@babel/helper-validator-identifier" "^7.25.9"
-    "@babel/traverse" "^7.25.9"
-
-"@babel/helper-plugin-utils@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46"
-  integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==
-
-"@babel/helper-string-parser@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
-  integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
-
-"@babel/helper-validator-identifier@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
-  integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
-
-"@babel/helper-validator-option@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
-  integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
-
-"@babel/helpers@^7.26.0":
-  version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4"
-  integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==
-  dependencies:
-    "@babel/template" "^7.25.9"
-    "@babel/types" "^7.26.0"
-
-"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2":
-  version "7.26.2"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11"
-  integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==
-  dependencies:
-    "@babel/types" "^7.26.0"
-
-"@babel/plugin-transform-react-jsx-self@^7.24.7":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858"
-  integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.25.9"
-
-"@babel/plugin-transform-react-jsx-source@^7.24.7":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503"
-  integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.25.9"
-
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.26.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
-  version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
-  integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
-  dependencies:
-    regenerator-runtime "^0.14.0"
-
-"@babel/template@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
-  integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
-  dependencies:
-    "@babel/code-frame" "^7.25.9"
-    "@babel/parser" "^7.25.9"
-    "@babel/types" "^7.25.9"
-
-"@babel/traverse@^7.0.0-beta.42", "@babel/traverse@^7.25.9":
-  version "7.25.9"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84"
-  integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==
-  dependencies:
-    "@babel/code-frame" "^7.25.9"
-    "@babel/generator" "^7.25.9"
-    "@babel/parser" "^7.25.9"
-    "@babel/template" "^7.25.9"
-    "@babel/types" "^7.25.9"
-    debug "^4.3.1"
-    globals "^11.1.0"
-
-"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.42", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0":
-  version "7.26.0"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff"
-  integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==
-  dependencies:
-    "@babel/helper-string-parser" "^7.25.9"
-    "@babel/helper-validator-identifier" "^7.25.9"
-
-"@emotion/babel-plugin@^11.12.0":
-  version "11.12.0"
-  resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2"
-  integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==
-  dependencies:
-    "@babel/helper-module-imports" "^7.16.7"
-    "@babel/runtime" "^7.18.3"
-    "@emotion/hash" "^0.9.2"
-    "@emotion/memoize" "^0.9.0"
-    "@emotion/serialize" "^1.2.0"
-    babel-plugin-macros "^3.1.0"
-    convert-source-map "^1.5.0"
-    escape-string-regexp "^4.0.0"
-    find-root "^1.1.0"
-    source-map "^0.5.7"
-    stylis "4.2.0"
-
-"@emotion/cache@^11.13.0", "@emotion/cache@^11.13.1":
-  version "11.13.1"
-  resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7"
-  integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==
-  dependencies:
-    "@emotion/memoize" "^0.9.0"
-    "@emotion/sheet" "^1.4.0"
-    "@emotion/utils" "^1.4.0"
-    "@emotion/weak-memoize" "^0.4.0"
-    stylis "4.2.0"
-
-"@emotion/hash@^0.9.2":
-  version "0.9.2"
-  resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b"
-  integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==
-
-"@emotion/is-prop-valid@^1.3.0":
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240"
-  integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==
-  dependencies:
-    "@emotion/memoize" "^0.9.0"
-
-"@emotion/memoize@^0.9.0":
-  version "0.9.0"
-  resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102"
-  integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
-
-"@emotion/react@^11.13.3":
-  version "11.13.3"
-  resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4"
-  integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==
-  dependencies:
-    "@babel/runtime" "^7.18.3"
-    "@emotion/babel-plugin" "^11.12.0"
-    "@emotion/cache" "^11.13.0"
-    "@emotion/serialize" "^1.3.1"
-    "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0"
-    "@emotion/utils" "^1.4.0"
-    "@emotion/weak-memoize" "^0.4.0"
-    hoist-non-react-statics "^3.3.1"
-
-"@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0", "@emotion/serialize@^1.3.1", "@emotion/serialize@^1.3.2":
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a"
-  integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==
-  dependencies:
-    "@emotion/hash" "^0.9.2"
-    "@emotion/memoize" "^0.9.0"
-    "@emotion/unitless" "^0.10.0"
-    "@emotion/utils" "^1.4.1"
-    csstype "^3.0.2"
-
-"@emotion/sheet@^1.4.0":
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c"
-  integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
-
-"@emotion/styled@^11.13.0":
-  version "11.13.0"
-  resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.13.0.tgz#633fd700db701472c7a5dbef54d6f9834e9fb190"
-  integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==
-  dependencies:
-    "@babel/runtime" "^7.18.3"
-    "@emotion/babel-plugin" "^11.12.0"
-    "@emotion/is-prop-valid" "^1.3.0"
-    "@emotion/serialize" "^1.3.0"
-    "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0"
-    "@emotion/utils" "^1.4.0"
-
-"@emotion/unitless@^0.10.0":
-  version "0.10.0"
-  resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745"
-  integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==
-
-"@emotion/use-insertion-effect-with-fallbacks@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf"
-  integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==
-
-"@emotion/utils@^1.4.0", "@emotion/utils@^1.4.1":
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad"
-  integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==
-
-"@emotion/weak-memoize@^0.4.0":
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6"
-  integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
-
-"@esbuild/aix-ppc64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
-  integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
-
-"@esbuild/android-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
-  integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
-
-"@esbuild/android-arm@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
-  integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
-
-"@esbuild/android-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
-  integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
-
-"@esbuild/darwin-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
-  integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
-
-"@esbuild/darwin-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
-  integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
-
-"@esbuild/freebsd-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
-  integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
-
-"@esbuild/freebsd-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
-  integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
-
-"@esbuild/linux-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
-  integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
-
-"@esbuild/linux-arm@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
-  integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
-
-"@esbuild/linux-ia32@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
-  integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
-
-"@esbuild/linux-loong64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
-  integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
-
-"@esbuild/linux-mips64el@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
-  integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
-
-"@esbuild/linux-ppc64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
-  integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
-
-"@esbuild/linux-riscv64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
-  integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
-
-"@esbuild/linux-s390x@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
-  integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
-
-"@esbuild/linux-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
-  integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
-
-"@esbuild/netbsd-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
-  integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
-
-"@esbuild/openbsd-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
-  integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
-
-"@esbuild/sunos-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
-  integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
-
-"@esbuild/win32-arm64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
-  integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
-
-"@esbuild/win32-ia32@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
-  integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
-
-"@esbuild/win32-x64@0.21.5":
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
-  integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
-
-"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
-  version "4.4.1"
-  resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
-  integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==
-  dependencies:
-    eslint-visitor-keys "^3.4.3"
-
-"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1":
-  version "4.12.1"
-  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
-  integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
-
-"@eslint/compat@^1.2.2":
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.2.2.tgz#46d02898df7e32ccc04166b6ea2689c52dee10da"
-  integrity sha512-jhgiIrsw+tRfcBQ4BFl2C3vCrIUw2trCY0cnDvGZpwTtKCEDmZhAtMfrEUP/KpnwM6PrO0T+Ltm+ccW74olG3Q==
-
-"@eslint/config-array@^0.18.0":
-  version "0.18.0"
-  resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
-  integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
-  dependencies:
-    "@eslint/object-schema" "^2.1.4"
-    debug "^4.3.1"
-    minimatch "^3.1.2"
-
-"@eslint/core@^0.7.0":
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3"
-  integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==
-
-"@eslint/eslintrc@^3.1.0":
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
-  integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
-  dependencies:
-    ajv "^6.12.4"
-    debug "^4.3.2"
-    espree "^10.0.1"
-    globals "^14.0.0"
-    ignore "^5.2.0"
-    import-fresh "^3.2.1"
-    js-yaml "^4.1.0"
-    minimatch "^3.1.2"
-    strip-json-comments "^3.1.1"
-
-"@eslint/js@9.14.0", "@eslint/js@^9.14.0":
-  version "9.14.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.14.0.tgz#2347a871042ebd11a00fd8c2d3d56a265ee6857e"
-  integrity sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==
-
-"@eslint/object-schema@^2.1.4":
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
-  integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
-
-"@eslint/plugin-kit@^0.2.0":
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz#5eff371953bc13e3f4d88150e2c53959f64f74f6"
-  integrity sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==
-  dependencies:
-    levn "^0.4.1"
-
-"@floating-ui/core@^1.6.0":
-  version "1.6.8"
-  resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12"
-  integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==
-  dependencies:
-    "@floating-ui/utils" "^0.2.8"
-
-"@floating-ui/dom@^1.0.0":
-  version "1.6.12"
-  resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.12.tgz#6333dcb5a8ead3b2bf82f33d6bc410e95f54e556"
-  integrity sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==
-  dependencies:
-    "@floating-ui/core" "^1.6.0"
-    "@floating-ui/utils" "^0.2.8"
-
-"@floating-ui/react-dom@^2.1.1":
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
-  integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
-  dependencies:
-    "@floating-ui/dom" "^1.0.0"
-
-"@floating-ui/utils@^0.2.8":
-  version "0.2.8"
-  resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
-  integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
-
-"@hey-api/client-fetch@^0.4.2":
-  version "0.4.2"
-  resolved "https://registry.yarnpkg.com/@hey-api/client-fetch/-/client-fetch-0.4.2.tgz#02924579205dcfd4cb7c33db236007cb617ab30d"
-  integrity sha512-9BqcLTjsM3rWbads3afJkELS86vK7EqJvYgT429EVS9IO/kN75HEka3Ay/k142xCHSfXOuOShMdDam3nbG8wVA==
-
-"@hey-api/openapi-ts@^0.54.2":
-  version "0.54.2"
-  resolved "https://registry.yarnpkg.com/@hey-api/openapi-ts/-/openapi-ts-0.54.2.tgz#f8b27b77b52243f8230663e73e98483c7f155795"
-  integrity sha512-hU/Xf8D5yOSA5JsOkM0x4Sz9jChI0v4JMkkk3sy1Tc3DXbbr+s3uyJngvYoimXOq6ljF/9QSCtrk7z5LXxd64g==
-  dependencies:
-    "@apidevtools/json-schema-ref-parser" "11.7.2"
-    c12 "2.0.1"
-    commander "12.1.0"
-    handlebars "4.7.8"
-
-"@humanfs/core@^0.19.1":
-  version "0.19.1"
-  resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
-  integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
-
-"@humanfs/node@^0.16.6":
-  version "0.16.6"
-  resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e"
-  integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==
-  dependencies:
-    "@humanfs/core" "^0.19.1"
-    "@humanwhocodes/retry" "^0.3.0"
-
-"@humanwhocodes/module-importer@^1.0.1":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
-  integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-
-"@humanwhocodes/retry@^0.3.0":
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
-  integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
-
-"@humanwhocodes/retry@^0.4.0":
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.0.tgz#b57438cab2a2381b4b597b0ab17339be381bd755"
-  integrity sha512-xnRgu9DxZbkWak/te3fcytNyp8MTbuiZIaueg2rgEvBuN55n04nwLYLU9TX/VVlusc9L2ZNXi99nUFNkHXtr5g==
-
-"@jridgewell/gen-mapping@^0.3.5":
-  version "0.3.5"
-  resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
-  integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
-  dependencies:
-    "@jridgewell/set-array" "^1.2.1"
-    "@jridgewell/sourcemap-codec" "^1.4.10"
-    "@jridgewell/trace-mapping" "^0.3.24"
-
-"@jridgewell/resolve-uri@^3.1.0":
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
-  integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
-
-"@jridgewell/set-array@^1.2.1":
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
-  integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
-
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
-  integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
-
-"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
-  version "0.3.25"
-  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
-  integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
-  dependencies:
-    "@jridgewell/resolve-uri" "^3.1.0"
-    "@jridgewell/sourcemap-codec" "^1.4.14"
-
-"@jsdevtools/ono@^7.1.3":
-  version "7.1.3"
-  resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
-  integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
-
-"@mui/base@^5.0.0-beta.61":
-  version "5.0.0-beta.61"
-  resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.61.tgz#729e816b5104da1eeeacb11d1e61be90f2c21dcc"
-  integrity sha512-YaMOTXS3ecDNGsPKa6UdlJ8loFLvcL9+VbpCK3hfk71OaNauZRp4Yf7KeXDYr7Ms3M/XBD3SaiR6JMr6vYtfDg==
-  dependencies:
-    "@babel/runtime" "^7.26.0"
-    "@floating-ui/react-dom" "^2.1.1"
-    "@mui/types" "^7.2.19"
-    "@mui/utils" "^6.1.6"
-    "@popperjs/core" "^2.11.8"
-    clsx "^2.1.1"
-    prop-types "^15.8.1"
-
-"@mui/core-downloads-tracker@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.6.tgz#73d96e75689b2af922a989123149a3497c8a96fa"
-  integrity sha512-nz1SlR9TdBYYPz4qKoNasMPRiGb4PaIHFkzLzhju0YVYS5QSuFF2+n7CsiHMIDcHv3piPu/xDWI53ruhOqvZwQ==
-
-"@mui/icons-material@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-6.1.6.tgz#bfaf32874a9f9ec88c07d1ca132d1a0671e9ed7c"
-  integrity sha512-5r9urIL2lxXb/sPN3LFfFYEibsXJUb986HhhIeu1gOcte460pwdSiEhBSxkAuyT8Dj7jvu9MjqSBmSumQELo8A==
-  dependencies:
-    "@babel/runtime" "^7.26.0"
-
-"@mui/material@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/material/-/material-6.1.6.tgz#505d7300401f6af38426006d7fb3b8707dc10fbc"
-  integrity sha512-1yvejiQ/601l5AK3uIdUlAVElyCxoqKnl7QA+2oFB/2qYPWfRwDgavW/MoywS5Y2gZEslcJKhe0s2F3IthgFgw==
-  dependencies:
-    "@babel/runtime" "^7.26.0"
-    "@mui/core-downloads-tracker" "^6.1.6"
-    "@mui/system" "^6.1.6"
-    "@mui/types" "^7.2.19"
-    "@mui/utils" "^6.1.6"
-    "@popperjs/core" "^2.11.8"
-    "@types/react-transition-group" "^4.4.11"
-    clsx "^2.1.1"
-    csstype "^3.1.3"
-    prop-types "^15.8.1"
-    react-is "^18.3.1"
-    react-transition-group "^4.4.5"
-
-"@mui/private-theming@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-6.1.6.tgz#9966bf2eca3d626cddd6e173752f46d344c7d7d1"
-  integrity sha512-ioAiFckaD/fJSnTrUMWgjl9HYBWt7ixCh7zZw7gDZ+Tae7NuprNV6QJK95EidDT7K0GetR2rU3kAeIR61Myttw==
-  dependencies:
-    "@babel/runtime" "^7.26.0"
-    "@mui/utils" "^6.1.6"
-    prop-types "^15.8.1"
-
-"@mui/styled-engine@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-6.1.6.tgz#61996621a0297aac16061e1739a738a899613fd6"
-  integrity sha512-I+yS1cSuSvHnZDBO7e7VHxTWpj+R7XlSZvTC4lS/OIbUNJOMMSd3UDP6V2sfwzAdmdDNBi7NGCRv2SZ6O9hGDA==
-  dependencies:
-    "@babel/runtime" "^7.26.0"
-    "@emotion/cache" "^11.13.1"
-    "@emotion/serialize" "^1.3.2"
-    "@emotion/sheet" "^1.4.0"
-    csstype "^3.1.3"
-    prop-types "^15.8.1"
-
-"@mui/system@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/system/-/system-6.1.6.tgz#d335d6952092f3c758c8b78c2d993aa13ef58175"
-  integrity sha512-qOf1VUE9wK8syiB0BBCp82oNBAVPYdj4Trh+G1s+L+ImYiKlubWhhqlnvWt3xqMevR+D2h1CXzA1vhX2FvA+VQ==
-  dependencies:
-    "@babel/runtime" "^7.26.0"
-    "@mui/private-theming" "^6.1.6"
-    "@mui/styled-engine" "^6.1.6"
-    "@mui/types" "^7.2.19"
-    "@mui/utils" "^6.1.6"
-    clsx "^2.1.1"
-    csstype "^3.1.3"
-    prop-types "^15.8.1"
-
-"@mui/types@^7.2.19":
-  version "7.2.19"
-  resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.19.tgz#c941954dd24393fdce5f07830d44440cf4ab6c80"
-  integrity sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==
-
-"@mui/utils@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-6.1.6.tgz#4b9fd34da3a1dd4700fe506a20ca7da3933ba48e"
-  integrity sha512-sBS6D9mJECtELASLM+18WUcXF6RH3zNxBRFeyCRg8wad6NbyNrdxLuwK+Ikvc38sTZwBzAz691HmSofLqHd9sQ==
-  dependencies:
-    "@babel/runtime" "^7.26.0"
-    "@mui/types" "^7.2.19"
-    "@types/prop-types" "^15.7.13"
-    clsx "^2.1.1"
-    prop-types "^15.8.1"
-    react-is "^18.3.1"
-
-"@nodelib/fs.scandir@2.1.5":
-  version "2.1.5"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
-  integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
-  dependencies:
-    "@nodelib/fs.stat" "2.0.5"
-    run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
-  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-
-"@nodelib/fs.walk@^1.2.3":
-  version "1.2.8"
-  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
-  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
-  dependencies:
-    "@nodelib/fs.scandir" "2.1.5"
-    fastq "^1.6.0"
-
-"@popperjs/core@^2.11.8":
-  version "2.11.8"
-  resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
-  integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
-
-"@remix-run/router@1.20.0":
-  version "1.20.0"
-  resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.20.0.tgz#03554155b45d8b529adf635b2f6ad1165d70d8b4"
-  integrity sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==
-
-"@rollup/rollup-android-arm-eabi@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz#c460b54c50d42f27f8254c435a4f3b3e01910bc8"
-  integrity sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==
-
-"@rollup/rollup-android-arm64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz#96e01f3a04675d8d5973ab8d3fd6bc3be21fa5e1"
-  integrity sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==
-
-"@rollup/rollup-darwin-arm64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz#9b2ec23b17b47cbb2f771b81f86ede3ac6730bce"
-  integrity sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==
-
-"@rollup/rollup-darwin-x64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz#f30e4ee6929e048190cf10e0daa8e8ae035b6e46"
-  integrity sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==
-
-"@rollup/rollup-freebsd-arm64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz#c54b2373ec5bcf71f08c4519c7ae80a0b6c8e03b"
-  integrity sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==
-
-"@rollup/rollup-freebsd-x64@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz#3bc53aa29d5a34c28ba8e00def76aa612368458e"
-  integrity sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz#c85aedd1710c9e267ee86b6d1ce355ecf7d9e8d9"
-  integrity sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==
-
-"@rollup/rollup-linux-arm-musleabihf@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz#e77313408bf13995aecde281aec0cceb08747e42"
-  integrity sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==
-
-"@rollup/rollup-linux-arm64-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz#633f632397b3662108cfaa1abca2a80b85f51102"
-  integrity sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==
-
-"@rollup/rollup-linux-arm64-musl@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz#63edd72b29c4cced93e16113a68e1be9fef88907"
-  integrity sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==
-
-"@rollup/rollup-linux-powerpc64le-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz#a9418a4173df80848c0d47df0426a0bf183c4e75"
-  integrity sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==
-
-"@rollup/rollup-linux-riscv64-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz#bc9c195db036a27e5e3339b02f51526b4ce1e988"
-  integrity sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==
-
-"@rollup/rollup-linux-s390x-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz#1651fdf8144ae89326c01da5d52c60be63e71a82"
-  integrity sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==
-
-"@rollup/rollup-linux-x64-gnu@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz#e473de5e4acb95fcf930a35cbb7d3e8080e57a6f"
-  integrity sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==
-
-"@rollup/rollup-linux-x64-musl@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz#0af12dd2578c29af4037f0c834b4321429dd5b01"
-  integrity sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==
-
-"@rollup/rollup-win32-arm64-msvc@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz#e48e78cdd45313b977c1390f4bfde7ab79be8871"
-  integrity sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==
-
-"@rollup/rollup-win32-ia32-msvc@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz#a3fc8536d243fe161c796acb93eba43c250f311c"
-  integrity sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==
-
-"@rollup/rollup-win32-x64-msvc@4.24.4":
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz#e2a9d1fd56524103a6cc8a54404d9d3ebc73c454"
-  integrity sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==
-
-"@types/babel-traverse@^6.7.17":
-  version "6.25.10"
-  resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.25.10.tgz#9451390f18576a0cb480de1778df8bb8b1b5c087"
-  integrity sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw==
-  dependencies:
-    "@types/babel-types" "*"
-
-"@types/babel-types@*":
-  version "7.0.16"
-  resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.16.tgz#74916c1b7a6bd53dc3d3f4053b65126bcc5e8e6f"
-  integrity sha512-5QXs9GBFTNTmilLlWBhnsprqpjfrotyrnzUdwDrywEL/DA4LuCWQT300BTOXA3Y9ngT9F2uvmCoIxI6z8DlJEA==
-
-"@types/babel__core@^7.20.5":
-  version "7.20.5"
-  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
-  integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
-  dependencies:
-    "@babel/parser" "^7.20.7"
-    "@babel/types" "^7.20.7"
-    "@types/babel__generator" "*"
-    "@types/babel__template" "*"
-    "@types/babel__traverse" "*"
-
-"@types/babel__generator@*":
-  version "7.6.8"
-  resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab"
-  integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==
-  dependencies:
-    "@babel/types" "^7.0.0"
-
-"@types/babel__template@*":
-  version "7.4.4"
-  resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f"
-  integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
-  dependencies:
-    "@babel/parser" "^7.1.0"
-    "@babel/types" "^7.0.0"
-
-"@types/babel__traverse@*":
-  version "7.20.6"
-  resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7"
-  integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==
-  dependencies:
-    "@babel/types" "^7.20.7"
-
-"@types/estree@1.0.6", "@types/estree@^1.0.6":
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
-  integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
-
-"@types/json-schema@^7.0.15":
-  version "7.0.15"
-  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
-  integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
-
-"@types/parse-json@^4.0.0":
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
-  integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
-
-"@types/prop-types@*", "@types/prop-types@^15.7.13":
-  version "15.7.13"
-  resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451"
-  integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
-
-"@types/react-transition-group@^4.4.11":
-  version "4.4.11"
-  resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5"
-  integrity sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==
-  dependencies:
-    "@types/react" "*"
-
-"@types/react@*":
-  version "18.3.12"
-  resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60"
-  integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==
-  dependencies:
-    "@types/prop-types" "*"
-    csstype "^3.0.2"
-
-"@typescript-eslint/eslint-plugin@^8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz#650c50b8c795b5d092189f139f6d00535b5b0f3d"
-  integrity sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==
-  dependencies:
-    "@eslint-community/regexpp" "^4.10.0"
-    "@typescript-eslint/scope-manager" "8.13.0"
-    "@typescript-eslint/type-utils" "8.13.0"
-    "@typescript-eslint/utils" "8.13.0"
-    "@typescript-eslint/visitor-keys" "8.13.0"
-    graphemer "^1.4.0"
-    ignore "^5.3.1"
-    natural-compare "^1.4.0"
-    ts-api-utils "^1.3.0"
-
-"@typescript-eslint/parser@^8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.13.0.tgz#ef76203b7cac515aa3ccc4f7ce5320dd61c46b29"
-  integrity sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==
-  dependencies:
-    "@typescript-eslint/scope-manager" "8.13.0"
-    "@typescript-eslint/types" "8.13.0"
-    "@typescript-eslint/typescript-estree" "8.13.0"
-    "@typescript-eslint/visitor-keys" "8.13.0"
-    debug "^4.3.4"
-
-"@typescript-eslint/scope-manager@8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz#2f4aed0b87d72360e64e4ea194b1fde14a59082e"
-  integrity sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==
-  dependencies:
-    "@typescript-eslint/types" "8.13.0"
-    "@typescript-eslint/visitor-keys" "8.13.0"
-
-"@typescript-eslint/type-utils@8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz#8c8fa68490dcb9ae1687ffc7de8fbe23c26417bd"
-  integrity sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==
-  dependencies:
-    "@typescript-eslint/typescript-estree" "8.13.0"
-    "@typescript-eslint/utils" "8.13.0"
-    debug "^4.3.4"
-    ts-api-utils "^1.3.0"
-
-"@typescript-eslint/types@8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.13.0.tgz#3f35dead2b2491a04339370dcbcd17bbdfc204d8"
-  integrity sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==
-
-"@typescript-eslint/typescript-estree@8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz#db8c93dd5437ca3ce417a255fb35ddc3c12c3e95"
-  integrity sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==
-  dependencies:
-    "@typescript-eslint/types" "8.13.0"
-    "@typescript-eslint/visitor-keys" "8.13.0"
-    debug "^4.3.4"
-    fast-glob "^3.3.2"
-    is-glob "^4.0.3"
-    minimatch "^9.0.4"
-    semver "^7.6.0"
-    ts-api-utils "^1.3.0"
-
-"@typescript-eslint/utils@8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.13.0.tgz#f6d40e8b5053dcaeabbd2e26463857abf27d62c0"
-  integrity sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==
-  dependencies:
-    "@eslint-community/eslint-utils" "^4.4.0"
-    "@typescript-eslint/scope-manager" "8.13.0"
-    "@typescript-eslint/types" "8.13.0"
-    "@typescript-eslint/typescript-estree" "8.13.0"
-
-"@typescript-eslint/visitor-keys@8.13.0":
-  version "8.13.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz#e97b0d92b266ef38a1faf40a74da289b66683a5b"
-  integrity sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==
-  dependencies:
-    "@typescript-eslint/types" "8.13.0"
-    eslint-visitor-keys "^3.4.3"
-
-"@vitejs/plugin-react@^4.3.3":
-  version "4.3.3"
-  resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz#28301ac6d7aaf20b73a418ee5c65b05519b4836c"
-  integrity sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==
-  dependencies:
-    "@babel/core" "^7.25.2"
-    "@babel/plugin-transform-react-jsx-self" "^7.24.7"
-    "@babel/plugin-transform-react-jsx-source" "^7.24.7"
-    "@types/babel__core" "^7.20.5"
-    react-refresh "^0.14.2"
-
-acorn-jsx@^5.3.2:
-  version "5.3.2"
-  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
-  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-
-acorn@^8.12.1, acorn@^8.14.0:
-  version "8.14.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
-  integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
-
-ajv@^6.12.4:
-  version "6.12.6"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
-  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
-  dependencies:
-    fast-deep-equal "^3.1.1"
-    fast-json-stable-stringify "^2.0.0"
-    json-schema-traverse "^0.4.1"
-    uri-js "^4.2.2"
-
-ansi-styles@^4.1.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
-  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
-  dependencies:
-    color-convert "^2.0.1"
-
-argparse@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
-  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-
-babel-plugin-macros@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
-  integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
-  dependencies:
-    "@babel/runtime" "^7.12.5"
-    cosmiconfig "^7.0.0"
-    resolve "^1.19.0"
-
-babylon@^7.0.0-beta.42:
-  version "7.0.0-beta.47"
-  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80"
-  integrity sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==
-
-balanced-match@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
-  integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-brace-expansion@^1.1.7:
-  version "1.1.11"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
-  dependencies:
-    balanced-match "^1.0.0"
-    concat-map "0.0.1"
-
-brace-expansion@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
-  integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
-  dependencies:
-    balanced-match "^1.0.0"
-
-braces@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
-  integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
-  dependencies:
-    fill-range "^7.1.1"
-
-browserslist@^4.24.0:
-  version "4.24.2"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580"
-  integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==
-  dependencies:
-    caniuse-lite "^1.0.30001669"
-    electron-to-chromium "^1.5.41"
-    node-releases "^2.0.18"
-    update-browserslist-db "^1.1.1"
-
-c12@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/c12/-/c12-2.0.1.tgz#5702d280b31a08abba39833494c9b1202f0f5aec"
-  integrity sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==
-  dependencies:
-    chokidar "^4.0.1"
-    confbox "^0.1.7"
-    defu "^6.1.4"
-    dotenv "^16.4.5"
-    giget "^1.2.3"
-    jiti "^2.3.0"
-    mlly "^1.7.1"
-    ohash "^1.1.4"
-    pathe "^1.1.2"
-    perfect-debounce "^1.0.0"
-    pkg-types "^1.2.0"
-    rc9 "^2.1.2"
-
-callsites@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
-  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-
-caniuse-lite@^1.0.30001669:
-  version "1.0.30001677"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f"
-  integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==
-
-chalk@^4.0.0:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
-  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
-  dependencies:
-    ansi-styles "^4.1.0"
-    supports-color "^7.1.0"
-
-chokidar@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
-  integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
-  dependencies:
-    readdirp "^4.0.1"
-
-chownr@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
-  integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-
-citty@^0.1.6:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.6.tgz#0f7904da1ed4625e1a9ea7e0fa780981aab7c5e4"
-  integrity sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==
-  dependencies:
-    consola "^3.2.3"
-
-clsx@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999"
-  integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
-
-color-convert@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
-  integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
-  dependencies:
-    color-name "~1.1.4"
-
-color-name@~1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
-  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-commander@12.1.0:
-  version "12.1.0"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
-  integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
-
-concat-map@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-  integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-
-confbox@^0.1.7, confbox@^0.1.8:
-  version "0.1.8"
-  resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
-  integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
-
-consola@^3.2.3:
-  version "3.2.3"
-  resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f"
-  integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==
-
-convert-source-map@^1.5.0:
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
-  integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
-
-convert-source-map@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
-  integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
-
-cosmiconfig@^7.0.0:
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
-  integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
-  dependencies:
-    "@types/parse-json" "^4.0.0"
-    import-fresh "^3.2.1"
-    parse-json "^5.0.0"
-    path-type "^4.0.0"
-    yaml "^1.10.0"
-
-cross-spawn@^7.0.2, cross-spawn@^7.0.3:
-  version "7.0.3"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
-  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
-  dependencies:
-    path-key "^3.1.0"
-    shebang-command "^2.0.0"
-    which "^2.0.1"
-
-csstype@^3.0.2, csstype@^3.1.3:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
-  integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-
-debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
-  version "4.3.7"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
-  integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
-  dependencies:
-    ms "^2.1.3"
-
-deep-is@^0.1.3:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
-  integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-
-defu@^6.1.4:
-  version "6.1.4"
-  resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479"
-  integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==
-
-destr@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.3.tgz#7f9e97cb3d16dbdca7be52aca1644ce402cfe449"
-  integrity sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==
-
-dom-helpers@^5.0.1:
-  version "5.2.1"
-  resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
-  integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
-  dependencies:
-    "@babel/runtime" "^7.8.7"
-    csstype "^3.0.2"
-
-dotenv@^16.4.5:
-  version "16.4.5"
-  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
-  integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
-
-electron-to-chromium@^1.5.41:
-  version "1.5.51"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.51.tgz#bb99216fed4892d131a8585a8593b00739310163"
-  integrity sha512-kKeWV57KSS8jH4alKt/jKnvHPmJgBxXzGUSbMd4eQF+iOsVPl7bz2KUmu6eo80eMP8wVioTfTyTzdMgM15WXNg==
-
-error-ex@^1.3.1:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
-  integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
-  dependencies:
-    is-arrayish "^0.2.1"
-
-esbuild@^0.21.3:
-  version "0.21.5"
-  resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
-  integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
-  optionalDependencies:
-    "@esbuild/aix-ppc64" "0.21.5"
-    "@esbuild/android-arm" "0.21.5"
-    "@esbuild/android-arm64" "0.21.5"
-    "@esbuild/android-x64" "0.21.5"
-    "@esbuild/darwin-arm64" "0.21.5"
-    "@esbuild/darwin-x64" "0.21.5"
-    "@esbuild/freebsd-arm64" "0.21.5"
-    "@esbuild/freebsd-x64" "0.21.5"
-    "@esbuild/linux-arm" "0.21.5"
-    "@esbuild/linux-arm64" "0.21.5"
-    "@esbuild/linux-ia32" "0.21.5"
-    "@esbuild/linux-loong64" "0.21.5"
-    "@esbuild/linux-mips64el" "0.21.5"
-    "@esbuild/linux-ppc64" "0.21.5"
-    "@esbuild/linux-riscv64" "0.21.5"
-    "@esbuild/linux-s390x" "0.21.5"
-    "@esbuild/linux-x64" "0.21.5"
-    "@esbuild/netbsd-x64" "0.21.5"
-    "@esbuild/openbsd-x64" "0.21.5"
-    "@esbuild/sunos-x64" "0.21.5"
-    "@esbuild/win32-arm64" "0.21.5"
-    "@esbuild/win32-ia32" "0.21.5"
-    "@esbuild/win32-x64" "0.21.5"
-
-escalade@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
-  integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
-
-escape-string-regexp@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
-  integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-
-eslint-plugin-react-hooks@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz#72e2eefbac4b694f5324154619fee44f5f60f101"
-  integrity sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==
-
-eslint-plugin-react-refresh@^0.4.14:
-  version "0.4.14"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz#e3c611ead69bbf7436d01295c853d4abb8c59f68"
-  integrity sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==
-
-eslint-scope@^8.2.0:
-  version "8.2.0"
-  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442"
-  integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==
-  dependencies:
-    esrecurse "^4.3.0"
-    estraverse "^5.2.0"
-
-eslint-visitor-keys@^3.4.3:
-  version "3.4.3"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
-  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-
-eslint-visitor-keys@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
-  integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
-
-eslint@^9.14.0:
-  version "9.14.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.14.0.tgz#534180a97c00af08bcf2b60b0ebf0c4d6c1b2c95"
-  integrity sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==
-  dependencies:
-    "@eslint-community/eslint-utils" "^4.2.0"
-    "@eslint-community/regexpp" "^4.12.1"
-    "@eslint/config-array" "^0.18.0"
-    "@eslint/core" "^0.7.0"
-    "@eslint/eslintrc" "^3.1.0"
-    "@eslint/js" "9.14.0"
-    "@eslint/plugin-kit" "^0.2.0"
-    "@humanfs/node" "^0.16.6"
-    "@humanwhocodes/module-importer" "^1.0.1"
-    "@humanwhocodes/retry" "^0.4.0"
-    "@types/estree" "^1.0.6"
-    "@types/json-schema" "^7.0.15"
-    ajv "^6.12.4"
-    chalk "^4.0.0"
-    cross-spawn "^7.0.2"
-    debug "^4.3.2"
-    escape-string-regexp "^4.0.0"
-    eslint-scope "^8.2.0"
-    eslint-visitor-keys "^4.2.0"
-    espree "^10.3.0"
-    esquery "^1.5.0"
-    esutils "^2.0.2"
-    fast-deep-equal "^3.1.3"
-    file-entry-cache "^8.0.0"
-    find-up "^5.0.0"
-    glob-parent "^6.0.2"
-    ignore "^5.2.0"
-    imurmurhash "^0.1.4"
-    is-glob "^4.0.0"
-    json-stable-stringify-without-jsonify "^1.0.1"
-    lodash.merge "^4.6.2"
-    minimatch "^3.1.2"
-    natural-compare "^1.4.0"
-    optionator "^0.9.3"
-    text-table "^0.2.0"
-
-esnext@^3.3.1:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/esnext/-/esnext-3.3.1.tgz#115d3e32038a30e8dd3da7e80cdd8e92e307345d"
-  integrity sha512-hMlaFOLLFgCpi9E08z8sLAW1QtLP8vz4siUefTu8vhHNr1DtbE/gTqkpjU8kMnGNvSSHOlZJDQSkz3tvbzCpDQ==
-  dependencies:
-    "@babel/traverse" "^7.0.0-beta.42"
-    "@babel/types" "^7.0.0-beta.42"
-    "@types/babel-traverse" "^6.7.17"
-    babylon "^7.0.0-beta.42"
-    magic-string "^0.22.2"
-    mkdirp "^0.5.1"
-    shebang-regex "^2.0.0"
-    strip-indent "^2.0.0"
-
-espree@^10.0.1, espree@^10.3.0:
-  version "10.3.0"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a"
-  integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==
-  dependencies:
-    acorn "^8.14.0"
-    acorn-jsx "^5.3.2"
-    eslint-visitor-keys "^4.2.0"
-
-esquery@^1.5.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
-  integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
-  dependencies:
-    estraverse "^5.1.0"
-
-esrecurse@^4.3.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
-  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
-  dependencies:
-    estraverse "^5.2.0"
-
-estraverse@^5.1.0, estraverse@^5.2.0:
-  version "5.3.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
-  integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
-
-esutils@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
-  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-
-execa@^8.0.1:
-  version "8.0.1"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c"
-  integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
-  dependencies:
-    cross-spawn "^7.0.3"
-    get-stream "^8.0.1"
-    human-signals "^5.0.0"
-    is-stream "^3.0.0"
-    merge-stream "^2.0.0"
-    npm-run-path "^5.1.0"
-    onetime "^6.0.0"
-    signal-exit "^4.1.0"
-    strip-final-newline "^3.0.0"
-
-fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
-  integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
-fast-glob@^3.3.2:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
-  integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
-  dependencies:
-    "@nodelib/fs.stat" "^2.0.2"
-    "@nodelib/fs.walk" "^1.2.3"
-    glob-parent "^5.1.2"
-    merge2 "^1.3.0"
-    micromatch "^4.0.4"
-
-fast-json-stable-stringify@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
-  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-
-fast-levenshtein@^2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-  integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-
-fastq@^1.6.0:
-  version "1.17.1"
-  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
-  integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
-  dependencies:
-    reusify "^1.0.4"
-
-file-entry-cache@^8.0.0:
-  version "8.0.0"
-  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
-  integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
-  dependencies:
-    flat-cache "^4.0.0"
-
-fill-range@^7.1.1:
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
-  integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
-  dependencies:
-    to-regex-range "^5.0.1"
-
-find-root@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
-  integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
-
-find-up@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
-  integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
-  dependencies:
-    locate-path "^6.0.0"
-    path-exists "^4.0.0"
-
-flat-cache@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
-  integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
-  dependencies:
-    flatted "^3.2.9"
-    keyv "^4.5.4"
-
-flatted@^3.2.9:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
-  integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
-
-fs-minipass@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
-  integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
-  dependencies:
-    minipass "^3.0.0"
-
-fsevents@~2.3.2, fsevents@~2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
-  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
-function-bind@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
-  integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-
-gensync@^1.0.0-beta.2:
-  version "1.0.0-beta.2"
-  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
-  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-
-get-stream@^8.0.1:
-  version "8.0.1"
-  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
-  integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
-
-giget@^1.2.3:
-  version "1.2.3"
-  resolved "https://registry.yarnpkg.com/giget/-/giget-1.2.3.tgz#ef6845d1140e89adad595f7f3bb60aa31c672cb6"
-  integrity sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==
-  dependencies:
-    citty "^0.1.6"
-    consola "^3.2.3"
-    defu "^6.1.4"
-    node-fetch-native "^1.6.3"
-    nypm "^0.3.8"
-    ohash "^1.1.3"
-    pathe "^1.1.2"
-    tar "^6.2.0"
-
-glob-parent@^5.1.2:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
-  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
-  dependencies:
-    is-glob "^4.0.1"
-
-glob-parent@^6.0.2:
-  version "6.0.2"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
-  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
-  dependencies:
-    is-glob "^4.0.3"
-
-globals@^11.1.0:
-  version "11.12.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
-  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-globals@^14.0.0:
-  version "14.0.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
-  integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
-
-graphemer@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
-  integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
-
-handlebars@4.7.8:
-  version "4.7.8"
-  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9"
-  integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==
-  dependencies:
-    minimist "^1.2.5"
-    neo-async "^2.6.2"
-    source-map "^0.6.1"
-    wordwrap "^1.0.0"
-  optionalDependencies:
-    uglify-js "^3.1.4"
-
-has-flag@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
-  integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-hasown@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
-  integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
-  dependencies:
-    function-bind "^1.1.2"
-
-hoist-non-react-statics@^3.3.1:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
-  integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
-  dependencies:
-    react-is "^16.7.0"
-
-human-signals@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
-  integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
-
-ignore@^5.2.0, ignore@^5.3.1:
-  version "5.3.2"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
-  integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
-
-import-fresh@^3.2.1:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
-  integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
-  dependencies:
-    parent-module "^1.0.0"
-    resolve-from "^4.0.0"
-
-imurmurhash@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-  integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
-
-is-arrayish@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-  integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
-
-is-core-module@^2.13.0:
-  version "2.15.1"
-  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
-  integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
-  dependencies:
-    hasown "^2.0.2"
-
-is-extglob@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
-  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
-  dependencies:
-    is-extglob "^2.1.1"
-
-is-number@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
-  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-stream@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
-  integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
-
-isexe@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-
-jiti@^2.3.0:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.0.tgz#393d595fb6031a11d11171b5e4fc0b989ba3e053"
-  integrity sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==
-
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
-  integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-js-yaml@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
-  integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
-  dependencies:
-    argparse "^2.0.1"
-
-jsesc@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e"
-  integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
-
-json-buffer@3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
-  integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-
-json-parse-even-better-errors@^2.3.0:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
-  integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-
-json-schema-traverse@^0.4.1:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
-  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json-stable-stringify-without-jsonify@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
-  integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
-
-json5@^2.2.3:
-  version "2.2.3"
-  resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
-  integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-
-keyv@^4.5.4:
-  version "4.5.4"
-  resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
-  integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
-  dependencies:
-    json-buffer "3.0.1"
-
-levn@^0.4.1:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
-  integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
-  dependencies:
-    prelude-ls "^1.2.1"
-    type-check "~0.4.0"
-
-lines-and-columns@^1.1.6:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
-  integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
-
-locate-path@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
-  integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
-  dependencies:
-    p-locate "^5.0.0"
-
-lodash.merge@^4.6.2:
-  version "4.6.2"
-  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
-  integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-
-loose-envify@^1.1.0, loose-envify@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
-  integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
-  dependencies:
-    js-tokens "^3.0.0 || ^4.0.0"
-
-lru-cache@^5.1.1:
-  version "5.1.1"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
-  integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
-  dependencies:
-    yallist "^3.0.2"
-
-magic-string@^0.22.2:
-  version "0.22.5"
-  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e"
-  integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==
-  dependencies:
-    vlq "^0.2.2"
-
-merge-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
-  integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-
-merge2@^1.3.0:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
-  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
-micromatch@^4.0.4:
-  version "4.0.8"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
-  integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
-  dependencies:
-    braces "^3.0.3"
-    picomatch "^2.3.1"
-
-mimic-fn@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
-  integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
-
-minimatch@^3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
-  integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
-  dependencies:
-    brace-expansion "^1.1.7"
-
-minimatch@^9.0.4:
-  version "9.0.5"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
-  integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
-  dependencies:
-    brace-expansion "^2.0.1"
-
-minimist@^1.2.5, minimist@^1.2.6:
-  version "1.2.8"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
-  integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-
-minipass@^3.0.0:
-  version "3.3.6"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
-  integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
-  dependencies:
-    yallist "^4.0.0"
-
-minipass@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
-  integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
-
-minizlib@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
-  integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
-  dependencies:
-    minipass "^3.0.0"
-    yallist "^4.0.0"
-
-mkdirp@^0.5.1:
-  version "0.5.6"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
-  integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
-  dependencies:
-    minimist "^1.2.6"
-
-mkdirp@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
-  integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
-mlly@^1.7.1, mlly@^1.7.2:
-  version "1.7.2"
-  resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.2.tgz#21c0d04543207495b8d867eff0ac29fac9a023c0"
-  integrity sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==
-  dependencies:
-    acorn "^8.12.1"
-    pathe "^1.1.2"
-    pkg-types "^1.2.0"
-    ufo "^1.5.4"
-
-ms@^2.1.3:
-  version "2.1.3"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
-  integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-mui@^0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/mui/-/mui-0.0.1.tgz#469a71f0932969526271ec939dc5959806590762"
-  integrity sha512-iB9zfxsJBcMkZ/SY6X+HGSPr4fftCZIQ76ZMH8iSMfVkidVzRtZlLW2gbWXUe+IMcj8JLv1p+dGKvPVlgtiocA==
-
-nanoid@^3.3.7:
-  version "3.3.7"
-  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
-  integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
-
-natural-compare@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-  integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-
-neo-async@^2.6.2:
-  version "2.6.2"
-  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
-  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-
-node-bin-setup@^1.0.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/node-bin-setup/-/node-bin-setup-1.1.3.tgz#d45d5220e3b2ecc3a94263a56116f727f6c1bb14"
-  integrity sha512-opgw9iSCAzT2+6wJOETCpeRYAQxSopqQ2z+N6BXwIMsQQ7Zj5M8MaafQY8JMlolRR6R1UXg2WmhKp0p9lSOivg==
-
-node-fetch-native@^1.6.3:
-  version "1.6.4"
-  resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e"
-  integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==
-
-node-releases@^2.0.18:
-  version "2.0.18"
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
-  integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
-
-node@^22.11.0:
-  version "22.11.0"
-  resolved "https://registry.yarnpkg.com/node/-/node-22.11.0.tgz#5a1dc8253c69b22ff798674f86cae94e448c0b34"
-  integrity sha512-RIAOdr40k1sq/DYF5u3XmhQHG+FZViuxObe2w1xPmOjEi4AiFgv/XRHW60YydS85X9gc8/jaI9RH4E9nvrV+gQ==
-  dependencies:
-    node-bin-setup "^1.0.0"
-
-npm-run-path@^5.1.0:
-  version "5.3.0"
-  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
-  integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==
-  dependencies:
-    path-key "^4.0.0"
-
-nypm@^0.3.8:
-  version "0.3.12"
-  resolved "https://registry.yarnpkg.com/nypm/-/nypm-0.3.12.tgz#37541bec0af3a37d3acd81d6662c6666e650b22e"
-  integrity sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==
-  dependencies:
-    citty "^0.1.6"
-    consola "^3.2.3"
-    execa "^8.0.1"
-    pathe "^1.1.2"
-    pkg-types "^1.2.0"
-    ufo "^1.5.4"
-
-object-assign@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-
-ohash@^1.1.3, ohash@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.4.tgz#ae8d83014ab81157d2c285abf7792e2995fadd72"
-  integrity sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==
-
-onetime@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
-  integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
-  dependencies:
-    mimic-fn "^4.0.0"
-
-optionator@^0.9.3:
-  version "0.9.4"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
-  integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
-  dependencies:
-    deep-is "^0.1.3"
-    fast-levenshtein "^2.0.6"
-    levn "^0.4.1"
-    prelude-ls "^1.2.1"
-    type-check "^0.4.0"
-    word-wrap "^1.2.5"
-
-p-limit@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
-  integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
-  dependencies:
-    yocto-queue "^0.1.0"
-
-p-locate@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
-  integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
-  dependencies:
-    p-limit "^3.0.2"
-
-parent-module@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
-  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
-  dependencies:
-    callsites "^3.0.0"
-
-parse-json@^5.0.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
-  integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    error-ex "^1.3.1"
-    json-parse-even-better-errors "^2.3.0"
-    lines-and-columns "^1.1.6"
-
-path-exists@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
-  integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-
-path-key@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
-  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-key@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
-  integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
-
-path-parse@^1.0.7:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
-  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-
-path-type@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
-  integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
-pathe@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
-  integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
-
-perfect-debounce@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
-  integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
-
-picocolors@^1.0.0, picocolors@^1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
-  integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
-
-picomatch@^2.3.1:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
-  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-pkg-types@^1.2.0:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.2.1.tgz#6ac4e455a5bb4b9a6185c1c79abd544c901db2e5"
-  integrity sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==
-  dependencies:
-    confbox "^0.1.8"
-    mlly "^1.7.2"
-    pathe "^1.1.2"
-
-postcss@^8.4.43:
-  version "8.4.47"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
-  integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
-  dependencies:
-    nanoid "^3.3.7"
-    picocolors "^1.1.0"
-    source-map-js "^1.2.1"
-
-prelude-ls@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
-  integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-
-prettier@^3.3.3:
-  version "3.3.3"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
-  integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
-
-prop-types@^15.6.2, prop-types@^15.8.1:
-  version "15.8.1"
-  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
-  integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
-  dependencies:
-    loose-envify "^1.4.0"
-    object-assign "^4.1.1"
-    react-is "^16.13.1"
-
-punycode@^2.1.0:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
-  integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-
-queue-microtask@^1.2.2:
-  version "1.2.3"
-  resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
-  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-
-rc9@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/rc9/-/rc9-2.1.2.tgz#6282ff638a50caa0a91a31d76af4a0b9cbd1080d"
-  integrity sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==
-  dependencies:
-    defu "^6.1.4"
-    destr "^2.0.3"
-
-react-dom@^18.3.1:
-  version "18.3.1"
-  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
-  integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
-  dependencies:
-    loose-envify "^1.1.0"
-    scheduler "^0.23.2"
-
-react-is@^16.13.1, react-is@^16.7.0:
-  version "16.13.1"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
-  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-
-react-is@^18.3.1:
-  version "18.3.1"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
-  integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
-
-react-refresh@^0.14.2:
-  version "0.14.2"
-  resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
-  integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
-
-react-router-dom@^6.27.0:
-  version "6.27.0"
-  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.27.0.tgz#8d7972a425fd75f91c1e1ff67e47240c5752dc3f"
-  integrity sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==
-  dependencies:
-    "@remix-run/router" "1.20.0"
-    react-router "6.27.0"
-
-react-router@6.27.0:
-  version "6.27.0"
-  resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.27.0.tgz#db292474926c814c996c0ff3ef0162d1f9f60ed4"
-  integrity sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==
-  dependencies:
-    "@remix-run/router" "1.20.0"
-
-react-transition-group@^4.4.5:
-  version "4.4.5"
-  resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
-  integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
-  dependencies:
-    "@babel/runtime" "^7.5.5"
-    dom-helpers "^5.0.1"
-    loose-envify "^1.4.0"
-    prop-types "^15.6.2"
-
-react@^18.3.1:
-  version "18.3.1"
-  resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
-  integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
-  dependencies:
-    loose-envify "^1.1.0"
-
-readdirp@^4.0.1:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a"
-  integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==
-
-regenerator-runtime@^0.14.0:
-  version "0.14.1"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
-  integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
-
-resolve-from@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
-  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-
-resolve@^1.19.0:
-  version "1.22.8"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
-  integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
-  dependencies:
-    is-core-module "^2.13.0"
-    path-parse "^1.0.7"
-    supports-preserve-symlinks-flag "^1.0.0"
-
-reusify@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
-  integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-
-rollup@^4.20.0:
-  version "4.24.4"
-  resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.4.tgz#fdc76918de02213c95447c9ffff5e35dddb1d058"
-  integrity sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==
-  dependencies:
-    "@types/estree" "1.0.6"
-  optionalDependencies:
-    "@rollup/rollup-android-arm-eabi" "4.24.4"
-    "@rollup/rollup-android-arm64" "4.24.4"
-    "@rollup/rollup-darwin-arm64" "4.24.4"
-    "@rollup/rollup-darwin-x64" "4.24.4"
-    "@rollup/rollup-freebsd-arm64" "4.24.4"
-    "@rollup/rollup-freebsd-x64" "4.24.4"
-    "@rollup/rollup-linux-arm-gnueabihf" "4.24.4"
-    "@rollup/rollup-linux-arm-musleabihf" "4.24.4"
-    "@rollup/rollup-linux-arm64-gnu" "4.24.4"
-    "@rollup/rollup-linux-arm64-musl" "4.24.4"
-    "@rollup/rollup-linux-powerpc64le-gnu" "4.24.4"
-    "@rollup/rollup-linux-riscv64-gnu" "4.24.4"
-    "@rollup/rollup-linux-s390x-gnu" "4.24.4"
-    "@rollup/rollup-linux-x64-gnu" "4.24.4"
-    "@rollup/rollup-linux-x64-musl" "4.24.4"
-    "@rollup/rollup-win32-arm64-msvc" "4.24.4"
-    "@rollup/rollup-win32-ia32-msvc" "4.24.4"
-    "@rollup/rollup-win32-x64-msvc" "4.24.4"
-    fsevents "~2.3.2"
-
-run-parallel@^1.1.9:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
-  integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
-  dependencies:
-    queue-microtask "^1.2.2"
-
-scheduler@^0.23.2:
-  version "0.23.2"
-  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
-  integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
-  dependencies:
-    loose-envify "^1.1.0"
-
-semver@^6.3.1:
-  version "6.3.1"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
-  integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-
-semver@^7.6.0:
-  version "7.6.3"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
-  integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-
-shebang-command@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
-  integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
-  dependencies:
-    shebang-regex "^3.0.0"
-
-shebang-regex@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-2.0.0.tgz#f500bf6851b61356236167de2cc319b0fd7f0681"
-  integrity sha512-qZ2//Zb9flLDxFym9xqhDyquM5WRdmuk/vviks/2cr9c5Vm+mX578TP8DwUc9fbfX58Tgeef2og1elYnkHli2w==
-
-shebang-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
-  integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-signal-exit@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
-  integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
-
-source-map-js@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
-  integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
-
-source-map@^0.5.7:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
-
-source-map@^0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-strip-final-newline@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
-  integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
-
-strip-indent@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
-  integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==
-
-strip-json-comments@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
-  integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-
-stylis@4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51"
-  integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==
-
-supports-color@^7.1.0:
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
-  integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
-  dependencies:
-    has-flag "^4.0.0"
-
-supports-preserve-symlinks-flag@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
-  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-
-tar@^6.2.0:
-  version "6.2.1"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
-  integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
-  dependencies:
-    chownr "^2.0.0"
-    fs-minipass "^2.0.0"
-    minipass "^5.0.0"
-    minizlib "^2.1.1"
-    mkdirp "^1.0.3"
-    yallist "^4.0.0"
-
-text-table@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-  integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-
-to-regex-range@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
-  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
-  dependencies:
-    is-number "^7.0.0"
-
-ts-api-utils@^1.3.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz#709c6f2076e511a81557f3d07a0cbd566ae8195c"
-  integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==
-
-type-check@^0.4.0, type-check@~0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
-  integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
-  dependencies:
-    prelude-ls "^1.2.1"
-
-typescript@^5.6.3:
-  version "5.6.3"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b"
-  integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
-
-ufo@^1.5.4:
-  version "1.5.4"
-  resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
-  integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
-
-uglify-js@^3.1.4:
-  version "3.19.3"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f"
-  integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==
-
-update-browserslist-db@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
-  integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
-  dependencies:
-    escalade "^3.2.0"
-    picocolors "^1.1.0"
-
-uri-js@^4.2.2:
-  version "4.4.1"
-  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
-  integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
-  dependencies:
-    punycode "^2.1.0"
-
-vite@^5.4.10:
-  version "5.4.10"
-  resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18"
-  integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==
-  dependencies:
-    esbuild "^0.21.3"
-    postcss "^8.4.43"
-    rollup "^4.20.0"
-  optionalDependencies:
-    fsevents "~2.3.3"
-
-vlq@^0.2.2:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
-  integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
-
-which@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
-  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
-  dependencies:
-    isexe "^2.0.0"
-
-word-wrap@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
-  integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
-
-wordwrap@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-  integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
-
-yallist@^3.0.2:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
-  integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-
-yallist@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
-  integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yaml@^1.10.0:
-  version "1.10.2"
-  resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
-  integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
-
-yocto-queue@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
-  integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
diff --git a/src/components/ObjectEditor.tsx b/src/components/ObjectEditor.tsx
index 8d4be91..b48f52b 100644
--- a/src/components/ObjectEditor.tsx
+++ b/src/components/ObjectEditor.tsx
@@ -3,6 +3,7 @@ import React, { useContext, useState } from "react";
 import { useNavigate } from "react-router-dom";
 import { DateTimePicker } from "@mui/x-date-pickers";
 import dayjs from "dayjs";
+import { HTTPValidationError, ValidationError } from "../client";
 
 export enum FieldType {
     STRING,
@@ -34,7 +35,7 @@ interface ObjectEditorInterface<ItemT> {
 
 export default function ObjectEditor<ItemT>({fieldConfigs, header, initial, submitter, deleter, secondary}: ObjectEditorInterface<ItemT>) {
     const initialMap = new Map<keyof ItemT, string>(fieldConfigs.map(fc => [fc.name, initial ? String(initial[fc.name]) : ""]));
-
+    console.log(initialMap);
     const [item, setItem] = useState(initialMap);
     const [changedFields, setChangedFields] = useState(initial ? new Set<keyof ItemT>() : new Set<keyof ItemT>(initialMap.keys()));
     const [fieldErrors, setFieldErrors] = useState<Map<string, string>>(new Map());
@@ -122,7 +123,27 @@ export default function ObjectEditor<ItemT>({fieldConfigs, header, initial, subm
                     else navigate(0);
                 }
                 */
-            }, (err: Error) => showFailure(err.message));
+            })
+            .catch((err) => {
+                if (err && err.detail ) {
+                    // Handle HTTPValidationError
+                    showFailure("failure, see red fields");
+                    if (err.detail) {
+                        const details = err.detail;
+                        for (const detail of details) {
+                            const fieldName = detail.loc[1]; // Assuming loc provides field information
+                            setFieldErrors((errors) => errors.set(fieldName, detail.msg));
+                        }
+                    }
+                } else if (err instanceof Error) {
+                    // Handle generic Error
+                    showFailure(err.message);
+                } else {
+                    // Handle unexpected error types
+                    console.error("Unexpected error:", err);
+                    showFailure("An unexpected error occurred.");
+                }
+            });
         } else {
             showFailure("There are errors in the form, please fix them and try again!");
         }
diff --git a/src/pages/GenerateItem.tsx b/src/pages/GenerateItem.tsx
index 87b1d9f..3c2d58c 100644
--- a/src/pages/GenerateItem.tsx
+++ b/src/pages/GenerateItem.tsx
@@ -12,6 +12,7 @@ import { itemsCreateItem } from "../client/services.gen";
 import { ItemBase, ItemsCreateItemData } from "../client/types.gen";
 
 import client from "../apiClientConfig";
+
 import ObjectEditor, { FieldConfig, FieldType } from "../components/ObjectEditor";
 
 
@@ -20,7 +21,8 @@ const fieldConfig: FieldConfig<ItemBase>[] = [
   {name: "title_en", label: "Titel Englisch", type: FieldType.STRING},
   {name: "description_de", label: "Beschreibung Deutsch", type: FieldType.STRING},
   {name: "description_en", label: "Beschreibung Englisch", type: FieldType.STRING},
-  {name: "price", label: "Preis", type: FieldType.NUMERIC}
+  {name: "price", label: "Preis", type: FieldType.NUMERIC},
+  {name: "unit", label: "Einheit", type: FieldType.STRING,},
 ]
 
 
@@ -37,9 +39,15 @@ export default function GenerateItem() {
   }
 
   const submitter = async (changes: ItemBase) => {
-    console.log(changes);
-    // todo: call api here to submit changes
-    //return itemsCreateItem({body: changes});
+    
+    const response= await itemsCreateItem({body: changes})
+    if ( response.error) {
+      throw(response.error);
+    }
+    else {
+      //maybe navigate somewhere
+      return
+    }
   };
 
   return (
-- 
GitLab


From a661b7a54b36070b2ae2d462d80fdc54483b2f0a Mon Sep 17 00:00:00 2001
From: clemens <cwalter@ethz.ch>
Date: Wed, 4 Dec 2024 10:10:59 +0000
Subject: [PATCH 08/10] updated to subtypes.

---
 src/components/ObjectEditor.tsx | 341 +++++++++++++---------------
 src/pages/CreditPayment.tsx     | 382 ++++----------------------------
 2 files changed, 206 insertions(+), 517 deletions(-)

diff --git a/src/components/ObjectEditor.tsx b/src/components/ObjectEditor.tsx
index b48f52b..e9abcc7 100644
--- a/src/components/ObjectEditor.tsx
+++ b/src/components/ObjectEditor.tsx
@@ -1,9 +1,12 @@
-import { Paper, Stack, Typography, Button, TextField, FormControlLabel, Checkbox, FormControl, InputLabel, Select, SelectChangeEvent, MenuItem, ButtonGroup, Dialog, DialogTitle, DialogContentText, DialogContent, DialogActions, Container, Snackbar, Alert } from "@mui/material";
-import React, { useContext, useState } from "react";
-import { useNavigate } from "react-router-dom";
+import { 
+    Paper, Stack, Typography, Button, TextField, FormControlLabel, Checkbox, 
+    FormControl, InputLabel, Select, SelectChangeEvent, MenuItem, ButtonGroup, 
+    Dialog, DialogTitle, DialogContentText, DialogContent, DialogActions, 
+    Container, Snackbar, Alert 
+} from "@mui/material";
+import React, { useState } from "react";
 import { DateTimePicker } from "@mui/x-date-pickers";
 import dayjs from "dayjs";
-import { HTTPValidationError, ValidationError } from "../client";
 
 export enum FieldType {
     STRING,
@@ -18,7 +21,7 @@ export interface SelectMenuItem {
 }
 
 export interface FieldConfig<T> {
-    name: keyof T,
+    name: string, // Changed to string to support nested paths
     label: string,
     type: FieldType,
     items?: SelectMenuItem[]
@@ -33,218 +36,194 @@ interface ObjectEditorInterface<ItemT> {
     secondary?: boolean // set this if editor is not the main editor in the page (prevent navigation)
 }
 
-export default function ObjectEditor<ItemT>({fieldConfigs, header, initial, submitter, deleter, secondary}: ObjectEditorInterface<ItemT>) {
-    const initialMap = new Map<keyof ItemT, string>(fieldConfigs.map(fc => [fc.name, initial ? String(initial[fc.name]) : ""]));
-    console.log(initialMap);
-    const [item, setItem] = useState(initialMap);
-    const [changedFields, setChangedFields] = useState(initial ? new Set<keyof ItemT>() : new Set<keyof ItemT>(initialMap.keys()));
+// Helper functions for nested object manipulation
+const getNestedValue = (obj: any, path: string): any => 
+    path.split('.').reduce((acc, part) => acc && acc[part], obj);
+
+const setNestedValue = (obj: any, path: string, value: any): void => {
+    const parts = path.split('.');
+    const last = parts.pop()!;
+    const target = parts.reduce((acc, part) => {
+        if (!acc[part]) acc[part] = {};
+        return acc[part];
+    }, obj);
+    target[last] = value;
+};
+
+export default function ObjectEditor<ItemT>({ fieldConfigs, header, initial, submitter, deleter, secondary }: ObjectEditorInterface<ItemT>) {
+    const [item, setItem] = useState<ItemT>(initial);
+    const [changedFields, setChangedFields] = useState<Set<string>>(new Set());
     const [fieldErrors, setFieldErrors] = useState<Map<string, string>>(new Map());
     const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
 
     const [showStatusAlert, setShowStatusAlert] = useState(false);
     const [statusAlertStatusOk, setStatusAlertStatusOk] = useState(false);
-    const [statusAlertFailReason, setStatusAlertFailreason] = useState("unknown error");
+    const [statusAlertFailReason, setStatusAlertFailReason] = useState("unknown error");
 
     const showSuccess = () => {
         setStatusAlertStatusOk(true);
-        setStatusAlertFailreason("unknown error");
+        setStatusAlertFailReason("unknown error");
         setShowStatusAlert(true);
     };
 
     const showFailure = (reason: string) => {
         setStatusAlertStatusOk(false);
-        setStatusAlertFailreason(reason);
+        setStatusAlertFailReason(reason);
         setShowStatusAlert(true);
     };
 
-    const handleCloseStatusAlert = () => setShowStatusAlert(false);
-
-    const navigate = useNavigate();
-
-    const handleTextFieldChange = (ev: React.ChangeEvent<HTMLInputElement>) => {
-        const key = ev.target.name as keyof ItemT;
-        setItem(new Map(item).set(key, ev.target.value));
-        setChangedFields(cf => {cf.add(key); return cf;})
-    };
-
-    const handleCheckboxChange = (ev: React.ChangeEvent<HTMLInputElement>) => {
-        const key = ev.target.name as keyof ItemT;
-        setItem(new Map(item).set(key, String(ev.target.checked)));
-        setChangedFields(cf => {cf.add(key); return cf;})
-    };
-
-    const handleSelectChange = (ev: SelectChangeEvent) => {
-        const key = ev.target.name as keyof ItemT;
-        setItem(new Map(item).set(key, ev.target.value));
-        setChangedFields(cf => {cf.add(key); return cf;})
-    };
-
-    const handleDateTimePickerChange = (name: keyof ItemT, value: dayjs.Dayjs | null) => {
-        if (value) {
-            setItem(new Map(item).set(name, value.format("YYYY-MM-DDTHH:mm:ss")));
-        }
-        setChangedFields(cf => {cf.add(name); return cf;})
+    const handleChange = (name: string, value: any) => {
+        const updatedItem = { ...item };
+        setNestedValue(updatedItem, name, value);
+        setItem(updatedItem);
+        setChangedFields(prev => new Set(prev).add(name));
+        setFieldErrors(prev => {
+            const newErrors = new Map(prev);
+            newErrors.delete(name);
+            return newErrors;
+        });
     };
 
-
-    const handleSubmit = () => {
-        let updated = initial;
+    const handleSubmit = async () => {
         setFieldErrors(new Map());
         let parsingError = false;
+        const updatedItem = { ...initial };
+
         fieldConfigs.forEach(fc => {
             if (changedFields.has(fc.name)) {
-                const fieldName = fc.name as string;
-                // some silly "casting" going on here to make typescript happier
-                if (fc.type == FieldType.NUMERIC) {
-                    const numericValue = Number(item.get(fc.name));
+                const rawValue = getNestedValue(item, fc.name);
+                if (fc.type === FieldType.NUMERIC) {
+                    const numericValue = Number(rawValue);
                     if (isNaN(numericValue)) {
                         parsingError = true;
-                        setFieldErrors(errors => errors.set(fieldName, "Please enter a number"));
+                        setFieldErrors(prev => new Map(prev).set(fc.name, "Please enter a number"));
                     } else {
-                        updated[fc.name] = numericValue as ItemT[keyof ItemT];
+                        setNestedValue(updatedItem, fc.name, numericValue);
                     }
-                } else if (fc.type == FieldType.BOOLEAN) {
-                    updated[fc.name] = Boolean(item.get(fc.name) == "true") as ItemT[keyof ItemT];
+                } else if (fc.type === FieldType.BOOLEAN) {
+                    setNestedValue(updatedItem, fc.name, rawValue === "true");
                 } else {
-                    updated[fc.name] = String(item.get(fc.name)) as ItemT[keyof ItemT];
+                    setNestedValue(updatedItem, fc.name, rawValue);
                 }
             }
         });
-        // if no parsing error do below
-        // and delete changed fields as well as errors on success
+
         if (!parsingError) {
-            submitter(updated).then(() => {
+            try {
+                await submitter(updatedItem);
                 showSuccess();
-                setChangedFields(new Set<keyof ItemT>());
-                /*
-                if (!initial) {
-                    // ugly
-                    if (!secondary) navigate(window.location.pathname.replace("/new", `/${item.id}`));
-                    else navigate(0);
-                }
-                */
-            })
-            .catch((err) => {
-                if (err && err.detail ) {
-                    // Handle HTTPValidationError
-                    showFailure("failure, see red fields");
-                    if (err.detail) {
-                        const details = err.detail;
-                        for (const detail of details) {
-                            const fieldName = detail.loc[1]; // Assuming loc provides field information
-                            setFieldErrors((errors) => errors.set(fieldName, detail.msg));
-                        }
-                    }
-                } else if (err instanceof Error) {
-                    // Handle generic Error
-                    showFailure(err.message);
-                } else {
-                    // Handle unexpected error types
-                    console.error("Unexpected error:", err);
-                    showFailure("An unexpected error occurred.");
+                setChangedFields(new Set());
+                setFieldErrors(new Map());
+            } catch (err: any) {
+                if (err.detail) {
+                    // Map errors based on `loc`
+                    const newFieldErrors = new Map<string, string>();
+                    err.detail.forEach((error: any) => {
+                        const fieldPath = error.loc.slice(1).join("."); // Remove "body" and join the remaining path
+                        const errorMessage = error.msg;
+                        newFieldErrors.set(fieldPath, errorMessage);
+                    });
+                    setFieldErrors(newFieldErrors);
+                    showFailure("There are errors in the form, see highlighted fields.");
+                }  else {
+                    showFailure(err.message || "An unexpected error occurred.");
                 }
-            });
+            }
         } else {
             showFailure("There are errors in the form, please fix them and try again!");
         }
     };
 
-    const handleDeleteDialogOpen = () => {
-        setDeleteDialogOpen(true);
-    };
-
-    const handleDeleteDialogClose = () => {
-        setDeleteDialogOpen(false);
-    };
-
-    const handleDelete = () => {
-        if (deleter) deleter().then(() => {
-            showSuccess();
-            if (!secondary) navigate("/admin");
-            else navigate(0);
-        }, (err) => {showFailure(err)});
-        handleDeleteDialogClose();
-    };
-
-
-
-    return <Container>
-        <Paper variant="outlined" sx={{margin: 1, padding: 2}}>
-            <Dialog
-                open={deleteDialogOpen}
-                onClose={handleDeleteDialogClose}
-                >
-                <DialogTitle>Delete?</DialogTitle>
-                <DialogContent>
-                    <DialogContentText>
-                        Are you sure you want to delete this object?
-                    </DialogContentText>
-                </DialogContent>
-                <DialogActions>
-                    <Button onClick={handleDeleteDialogClose} autoFocus>No</Button>
-                    <Button onClick={handleDelete}>Yes!</Button>
-                </DialogActions>
-            </Dialog>
-            <Stack direction="row" justifyContent="space-between" spacing={2} sx={{margin: 2}}>
-                <Typography variant="h4" component="h2">{header}</Typography>
-                <ButtonGroup variant="contained">
-                    {deleter && <Button onClick={handleDeleteDialogOpen}>Delete</Button>}
-                    <Button onClick={handleSubmit} disabled={changedFields.size == 0}>Apply Changes</Button>
-                </ButtonGroup>
-            </Stack>
-            <Stack spacing={2}>
-                {fieldConfigs.map(fconf => {
-                    const fieldName = fconf.name as string;
-                    const error = fieldErrors.get(fieldName);
-                    if (fconf.items){
-                        // providing items always causes a dropdown
-                        return <FormControl key={fieldName} color={changedFields.has(fconf.name) ? "warning" : "primary"}>
-                            <InputLabel id={`${fieldName}-select-label`}>{fconf.label}</InputLabel>
-                            <Select
-                                labelId={`${fieldName}-select-label`}
-                                name={fieldName}
-                                value={String(item.get(fconf.name))}
-                                label={fconf.label}
-                                onChange={handleSelectChange}
-                            >{fconf.items.map(it => <MenuItem key={`menuitem-${fieldName}-${it.value}`} value={it.value}>{it.label}</MenuItem>)}</Select>
-                            </FormControl>
-                    } else if (fconf.type == FieldType.STRING || fconf.type == FieldType.NUMERIC) {
-                        return <TextField
-                            key={fieldName}
-                            name={fieldName}
-                            label={fconf.label}
-                            value={item.get(fconf.name)}
-                            onChange={handleTextFieldChange}
-                            color={changedFields.has(fconf.name) ? "warning" : "primary"}
-                            error={error != undefined}
-                            helperText={error}/>
-                    } else if (fconf.type == FieldType.BOOLEAN) {
-                        return <FormControlLabel key={fieldName} control={
-                            <Checkbox name={fieldName} checked={item.get(fconf.name) == "true"} onChange={handleCheckboxChange}/>
-                        } label={fconf.label}/>
-                    } else if (fconf.type == FieldType.DATETIME) {
-                        return <DateTimePicker
-                            key={fieldName}
-                            name={fieldName}
-                            label={fconf.label}
-                            value={dayjs(item.get(fconf.name))}
-                            onChange={(value) => {handleDateTimePickerChange(fconf.name, value)}}/>
-                    } else {
-                        return <Typography key={fieldName}>The type of field {fieldName} is not implemented yet!</Typography>
-                    }
-                })}
-            </Stack>
-        </Paper>
-        <Snackbar open={showStatusAlert} autoHideDuration={4000} onClose={handleCloseStatusAlert}>
-            <Alert
-                onClose={handleCloseStatusAlert}
-                severity={statusAlertStatusOk ? "success" : "error"}
-                variant="filled"
-                sx={{ width: '100%' }}
+    return (
+        <Container>
+            <Paper variant="outlined" sx={{ margin: 1, padding: 2 }}>
+                <Stack direction="row" justifyContent="space-between" spacing={2} sx={{ margin: 2 }}>
+                    <Typography variant="h4" component="h2">{header}</Typography>
+                    <ButtonGroup variant="contained">
+                        {deleter && <Button onClick={() => setDeleteDialogOpen(true)}>Delete</Button>}
+                        <Button onClick={handleSubmit} disabled={changedFields.size === 0}>Apply Changes</Button>
+                    </ButtonGroup>
+                </Stack>
+                <Stack spacing={2}>
+                    {fieldConfigs.map(fconf => {
+                        const value = getNestedValue(item, fconf.name) || "";
+                        const error = fieldErrors.get(fconf.name);
+                        if (fconf.items) {
+                            return (
+                                <FormControl key={fconf.name} error={!!error}>
+                                    <InputLabel id={`${fconf.name}-select-label`}>{fconf.label}</InputLabel>
+                                    <Select
+                                        labelId={`${fconf.name}-select-label`}
+                                        name={fconf.name}
+                                        value={value}
+                                        onChange={(e) => handleChange(fconf.name, e.target.value)}
+                                    >
+                                        {fconf.items.map(it => (
+                                            <MenuItem key={it.value} value={it.value}>
+                                                {it.label}
+                                            </MenuItem>
+                                        ))}
+                                    </Select>
+                                </FormControl>
+                            );
+                        } else if (fconf.type === FieldType.STRING || fconf.type === FieldType.NUMERIC) {
+                            return (
+                                <TextField
+                                    key={fconf.name}
+                                    name={fconf.name}
+                                    label={fconf.label}
+                                    value={value}
+                                    onChange={(e) => handleChange(fconf.name, e.target.value)}
+                                    error={!!error}
+                                    helperText={error}
+                                    fullWidth
+                                />
+                            );
+                        } else if (fconf.type === FieldType.BOOLEAN) {
+                            return (
+                                <FormControlLabel
+                                    key={fconf.name}
+                                    control={
+                                        <Checkbox
+                                            name={fconf.name}
+                                            checked={value === "true"}
+                                            onChange={(e) => handleChange(fconf.name, e.target.checked.toString())}
+                                        />
+                                    }
+                                    label={fconf.label}
+                                />
+                            );
+                        } else if (fconf.type === FieldType.DATETIME) {
+                            return (
+                                <DateTimePicker
+                                    key={fconf.name}
+                                    label={fconf.label}
+                                    value={value ? dayjs(value) : null}
+                                    onChange={(newValue) => handleChange(fconf.name, newValue?.toISOString())}
+                                    renderInput={(params) => (
+                                        <TextField {...params} error={!!error} helperText={error} />
+                                    )}
+                                />
+                            );
+                        } else {
+                            return <Typography key={fconf.name}>Unsupported field type</Typography>;
+                        }
+                    })}
+                </Stack>
+            </Paper>
+            <Snackbar
+                open={showStatusAlert}
+                autoHideDuration={4000}
+                onClose={() => setShowStatusAlert(false)}
             >
-                {statusAlertStatusOk ? "Changes submitted sucessfully" : statusAlertFailReason}
-            </Alert>
-        </Snackbar>
-    </Container>
-
-}
\ No newline at end of file
+                <Alert
+                    onClose={() => setShowStatusAlert(false)}
+                    severity={statusAlertStatusOk ? "success" : "error"}
+                    variant="filled"
+                >
+                    {statusAlertStatusOk ? "Changes submitted successfully" : statusAlertFailReason}
+                </Alert>
+            </Snackbar>
+        </Container>
+    );
+}
diff --git a/src/pages/CreditPayment.tsx b/src/pages/CreditPayment.tsx
index f425720..9271403 100644
--- a/src/pages/CreditPayment.tsx
+++ b/src/pages/CreditPayment.tsx
@@ -1,44 +1,40 @@
 import React, { useState, useEffect } from "react";
 import {
   Container,
-  CircularProgress,
-  Typography,
-  Select,
-  MenuItem,
-  FormControl,
-  InputLabel,
-  Stack,
-  Button,
-  TextField,
-  Alert,
 } from "@mui/material";
 import {
-  kstsReadKsts,
   creditPaymentsCreateCreditPayment,
-  ledgersReadLedgers,
 } from "../client/services.gen";
 import {
-  KstsPublic,
-  KstPublic,
-  CreditPaymentsCreateCreditPaymentData,
-  LedgersPublic,
-  LedgerPublic,
+  CreditPaymentCreate,
+  Card,
 } from "../client/types.gen";
-import { SelectChangeEvent } from "@mui/material/Select";
 
-import client from "../apiClientConfig";
-
-const CreditPayment: React.FC = () => {
-  const [kstItems, setKstItems] = useState<KstPublic[]>([]);
-  const [ledgerItems, setLedgerItems] = useState<LedgerPublic[]>([]);
-  const [loadingKst, setLoadingKst] = useState(true);
-  const [loadingLedger, setLoadingLedger] = useState(true);
-  const [errorKst, setErrorKst] = useState<string | null>(null);
-  const [errorLedger, setErrorLedger] = useState<string | null>(null);
-
-  const [formData, setFormData] =
-    useState<CreditPaymentsCreateCreditPaymentData>({
-      body: {
+import client from "../apiClientConfig"; //Do not remove
+
+import ObjectEditor, { FieldConfig, FieldType } from "../components/ObjectEditor";
+
+  
+    const fieldConfig: FieldConfig<CreditPaymentCreate>[] = [
+      {name: "creditor.kst_id", label: "kst", type: FieldType.STRING},
+      {name: "creditor.ledger_id", label: "ledger", type: FieldType.STRING},
+      {name: "creditor.amount", label: "amount", type: FieldType.NUMERIC},
+      {name: "creditor.currency", label: "währung", type: FieldType.STRING},
+      {name: "creditor.comment", label: "kommentar", type: FieldType.STRING},
+      {name: "creditor.qcomment", label: "kommentar quästor", type: FieldType.STRING},
+      {name: "card", label: "creditcard", type: FieldType.STRING, items: [
+        {label: "President", value: Card.PRESIDENT},
+        {label: "Events", value: Card.EVENTS},
+        {label: "Quastor", value: Card.QUAESTOR}
+    ]},
+      {name: "recipt", label: "recipt", type: FieldType.STRING},
+      {name: "creator", label: "creator", type: FieldType.STRING},
+    ]
+    
+    
+    export default function GenerateCreditPayment() {
+    
+      const initialElement: CreditPaymentCreate = {
         creditor: {
           kst_id: "",
           ledger_id: "",
@@ -49,311 +45,25 @@ const CreditPayment: React.FC = () => {
           qcomment: "",
         },
         recipt: "",
-        card: "President",
+        card: "president",
         creator: "",
-      },
-    });
-
-  const [error, setError] = useState<string | null>(null);
-  const [success, setSuccess] = useState<string | null>(null);
-  const [validationErrors, setValidationErrors] = useState<
-    Record<string, string>
-  >({});
-
-  const fetchKsts = async () => {
-    setErrorKst(null);
-    setLoadingKst(true);
-
-    try {
-      const responseKst = await kstsReadKsts();
-
-      // Check if response is HTML, indicating a possible error
-      if (
-        typeof responseKst.data !== "object" ||
-        !("items" in responseKst.data)
-      ) {
-        console.error("Unexpected response format:", responseKst.data);
-        setErrorKst("Received unexpected response format from the server.");
-        return;
-      }
-
-      const KstList = responseKst.data as KstsPublic;
-      if (!KstList.items) {
-        setErrorKst("No KSTs found");
-        return;
       }
-      setKstItems(KstList.items);
-    } catch (err) {
-      setErrorKst("Failed to load KSTs");
-      console.error("Error fetching KSTs:", err);
-    } finally {
-      setLoadingKst(false);
-    }
-  };
-
-  const fetchLedgers = async () => {
-    setErrorLedger(null);
-    setLoadingLedger(true);
-
-    try {
-      const responseLedger = await ledgersReadLedgers();
-
-      // Check if response is HTML, indicating a possible error
-      if (
-        typeof responseLedger.data !== "object" ||
-        !("items" in responseLedger.data)
-      ) {
-        console.error("Unexpected response format:", responseLedger.data);
-        setErrorLedger("Received unexpected response format from the server.");
-        return;
-      }
-
-      const LedgerList = responseLedger.data as LedgersPublic;
-      if (!LedgerList.items) {
-        setErrorLedger("No Ledgers found");
-        return;
-      }
-      setLedgerItems(LedgerList.items);
-    } catch (err) {
-      setErrorLedger("Failed to load Ledgers");
-      console.error("Error fetching Ledgers:", err);
-    } finally {
-      setLoadingLedger(false);
-    }
-  };
-
-  useEffect(() => {
-    fetchKsts();
-    fetchLedgers();
-  }, []);
-
-  const handleChange = (
-    e: React.ChangeEvent<{ name?: string; value: unknown }>,
-  ) => {
-    const { name, value } = e.target as HTMLInputElement;
-
-    const keys = name.split("."); // Handle nested keys like creditor.kst_id
-    const updatedFormData = { ...formData };
-
-    let current = updatedFormData.body as any; // Use `any` for dynamic nested updates
-    for (let i = 0; i < keys.length - 1; i++) {
-      current = current[keys[i]];
-    }
-    current[keys[keys.length - 1]] = value;
-
-    setFormData(updatedFormData);
-  };
-
-  const handleSelectChange = (event: SelectChangeEvent<string>) => {
-    const { name, value } = event.target;
-    setFormData((prevFormData) => ({
-      ...prevFormData,
-      body: {
-        ...prevFormData.body,
-        creditor: {
-          ...prevFormData.body.creditor,
-          [name]: value,
-        },
-      },
-    }));
-  };
-
-  const validateForm = (): boolean => {
-    let isValid = true;
-    const errors: Record<string, string> = {};
-
-    if (!formData.body.creditor.kst_id.trim()) {
-      errors["creditor.kst_id"] = "KST-ID is required";
-      isValid = false;
-    }
-    if (!formData.body.creditor.ledger_id.trim()) {
-      errors["creditor.ledger_id"] = "Ledger-ID is required";
-      isValid = false;
-    }
-    if (!formData.body.creditor.amount || formData.body.creditor.amount <= 0) {
-      errors["creditor.amount"] = "Amount must be greater than zero";
+    
+      const submitter = async (changes: CreditPaymentCreate) => {
+        const response= await creditPaymentsCreateCreditPayment({body: changes})
+        if ( response.error) {
+          throw(response.error);
+        }
+        else {
+          //maybe navigate somewhere
+          return
+        }
+      };
+    
+      return (
+        <Container>
+          <ObjectEditor fieldConfigs={fieldConfig} header="Add Item" submitter={submitter} initial={initialElement}/>
+        </Container>
+      );
     }
-
-    // Set validation errors if any
-    setValidationErrors(errors);
-    return isValid;
-  };
-
-  const handleSubmit = async () => {
-    setError(null);
-    setSuccess(null);
-    if (!validateForm()) {
-      return;
-    }
-    try {
-      await creditPaymentsCreateCreditPayment(formData);
-      setSuccess("CreditPayment created successfully!");
-      setFormData({
-        body: {
-          creditor: {
-            kst_id: "",
-            ledger_id: "",
-            amount: 0,
-            accounting_year: 2024,
-            currency: "CHF",
-            comment: "",
-            qcomment: "",
-          },
-          recipt: "",
-          card: "President",
-          creator: "",
-        },
-      });
-    } catch (err) {
-      setError("Failed to create reimbursement.");
-      console.error("Error creating reimbursement:", err);
-    }
-  };
-
-  return (
-    <Container>
-      <Typography variant="h4" component="h2" gutterBottom>
-        Create New CreditPayment
-      </Typography>
-
-      {success && <Alert severity="success">{success}</Alert>}
-      {error && <Alert severity="error">{error}</Alert>}
-
-      <Stack spacing={2} sx={{ mt: 2 }}>
-        <FormControl
-          fullWidth
-          required
-          error={!!validationErrors["creditor.kst_id"]}
-        >
-          <InputLabel id="kst-id-label">KST ID</InputLabel>
-          <Select
-            labelId="kst-id-label"
-            name="kst_id"
-            value={formData.body.creditor.kst_id}
-            onChange={handleSelectChange}
-          >
-            {kstItems.map((item) => (
-              <MenuItem key={item.id} value={item.id}>
-                {item.name_de}
-              </MenuItem>
-            ))}
-          </Select>
-          {validationErrors["creditor.kst_id"] && (
-            <Typography color="error">
-              {validationErrors["creditor.kst_id"]}
-            </Typography>
-          )}
-        </FormControl>
-        <FormControl
-          fullWidth
-          required
-          error={!!validationErrors["creditor.ledger_id"]}
-        >
-          <InputLabel id="ledger-id-label">Ledger ID</InputLabel>
-          <Select
-            labelId="ledger-id-label"
-            name="ledger_id"
-            value={formData.body.creditor.ledger_id}
-            onChange={handleSelectChange}
-          >
-            {ledgerItems.map((item) => (
-              <MenuItem key={item.id} value={item.id}>
-                {item.namede}
-              </MenuItem>
-            ))}
-          </Select>
-          {validationErrors["creditor.ledger_id"] && (
-            <Typography color="error">
-              {validationErrors["creditor.ledger_id"]}
-            </Typography>
-          )}
-        </FormControl>
-        <TextField
-          label="Amount"
-          name="creditor.amount"
-          type="number"
-          value={formData.body.creditor.amount}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors["creditor.amount"]}
-          helperText={validationErrors["creditor.amount"]}
-        />
-        <TextField
-          label="Accounting Year"
-          name="creditor.accounting_year"
-          type="number"
-          value={formData.body.creditor.accounting_year}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors["creditor.accounting_year"]}
-          helperText={validationErrors["creditor.accounting_year"]}
-        />
-        <TextField
-          label="Currency"
-          name="creditor.currency"
-          value={formData.body.creditor.currency}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors["creditor.currency"]}
-          helperText={validationErrors["creditor.currency"]}
-        />
-        <TextField
-          label="Comment"
-          name="creditor.comment"
-          value={formData.body.creditor.comment}
-          onChange={handleChange}
-          fullWidth
-          error={!!validationErrors["creditor.comment"]}
-          helperText={validationErrors["creditor.comment"]}
-        />
-        <TextField
-          label="QComment"
-          name="creditor.qcomment"
-          value={formData.body.creditor.qcomment}
-          onChange={handleChange}
-          fullWidth
-          error={!!validationErrors["creditor.qcomment"]}
-          helperText={validationErrors["creditor.qcomment"]}
-        />
-        <TextField
-          label="Recipt"
-          name="recipt"
-          value={formData.body.recipt}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors["recipt"]}
-          helperText={validationErrors["recipt"]}
-        />
-        <TextField
-          label="Creator"
-          name="creator"
-          value={formData.body.creator}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors["creator"]}
-          helperText={validationErrors["creator"]}
-        />
-        <TextField
-          label="Recipient"
-          name="recipient"
-          value={formData.body.card}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors["recipient"]}
-          helperText={validationErrors["recipient"]}
-        />
-        <Button onClick={handleSubmit} variant="contained" color="primary">
-          Create CreditPayment
-        </Button>
-      </Stack>
-    </Container>
-  );
-};
-
-export default CreditPayment;
+    
\ No newline at end of file
-- 
GitLab


From c528e66ed482e77d4ef977957bc59591de361a6e Mon Sep 17 00:00:00 2001
From: clemens <cwalter@ethz.ch>
Date: Sun, 8 Dec 2024 13:49:20 +0100
Subject: [PATCH 09/10] updated onboarding use new format

---
 openapi.json               |  66 +++++---
 src/client/schemas.gen.ts  |  65 +++++---
 src/client/services.gen.ts |  18 +++
 src/client/types.gen.ts    |  12 ++
 src/pages/Onboarding.tsx   | 303 ++++++++++---------------------------
 5 files changed, 206 insertions(+), 258 deletions(-)

diff --git a/openapi.json b/openapi.json
index 802f246..250c16f 100644
--- a/openapi.json
+++ b/openapi.json
@@ -2247,6 +2247,24 @@
         }
       }
     },
+    "/api/basic-user-info": {
+      "get": {
+        "tags": ["auth"],
+        "summary": "Get Basic User Info",
+        "operationId": "auth-get_basic_user_info",
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": { "$ref": "#/components/schemas/BasicUser" }
+              }
+            }
+          }
+        },
+        "security": [{ "HTTPBearer": [] }]
+      }
+    },
     "/api/is-onboarded": {
       "get": {
         "tags": ["auth"],
@@ -2479,13 +2497,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.462670"
+            "default": "2024-12-04T14:27:50.769117"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.462745"
+            "default": "2024-12-04T14:27:50.769154"
           }
         },
         "type": "object",
@@ -2585,6 +2603,18 @@
         "required": ["count", "total"],
         "title": "AddressesPublic"
       },
+      "BasicUser": {
+        "properties": {
+          "amiv_id": { "type": "string", "title": "Amiv Id" },
+          "nethz": { "type": "string", "title": "Nethz" },
+          "firstname": { "type": "string", "title": "Firstname" },
+          "lastname": { "type": "string", "title": "Lastname" },
+          "email": { "type": "string", "format": "email", "title": "Email" }
+        },
+        "type": "object",
+        "required": ["amiv_id", "nethz", "firstname", "lastname", "email"],
+        "title": "BasicUser"
+      },
       "Bill": {
         "properties": {
           "creditor_id": {
@@ -2616,13 +2646,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.567782"
+            "default": "2024-12-04T14:27:50.816108"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.567886"
+            "default": "2024-12-04T14:27:50.816148"
           },
           "ezag_timestamp": {
             "anyOf": [
@@ -2787,13 +2817,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.611467"
+            "default": "2024-12-04T14:27:50.830333"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.611515"
+            "default": "2024-12-04T14:27:50.830362"
           },
           "ezag_timestamp": {
             "anyOf": [
@@ -3128,13 +3158,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.724374"
+            "default": "2024-12-04T14:27:50.888450"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.724437"
+            "default": "2024-12-04T14:27:50.888482"
           }
         },
         "type": "object",
@@ -3252,13 +3282,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.762455"
+            "default": "2024-12-04T14:27:50.908536"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.762559"
+            "default": "2024-12-04T14:27:50.908590"
           }
         },
         "type": "object",
@@ -3391,13 +3421,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.650008"
+            "default": "2024-12-04T14:27:50.850603"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.650130"
+            "default": "2024-12-04T14:27:50.850656"
           }
         },
         "type": "object",
@@ -3548,13 +3578,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.493654"
+            "default": "2024-12-04T14:27:50.782879"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.493720"
+            "default": "2024-12-04T14:27:50.782924"
           }
         },
         "type": "object",
@@ -3616,13 +3646,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.513770"
+            "default": "2024-12-04T14:27:50.792331"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.513841"
+            "default": "2024-12-04T14:27:50.792364"
           }
         },
         "type": "object",
@@ -3689,13 +3719,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-11-26T07:17:39.793196"
+            "default": "2024-12-04T14:27:50.923768"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-11-26T07:17:39.793248"
+            "default": "2024-12-04T14:27:50.923798"
           },
           "ezag_timestamp": {
             "anyOf": [
diff --git a/src/client/schemas.gen.ts b/src/client/schemas.gen.ts
index 3ebee9c..9cbdcc1 100644
--- a/src/client/schemas.gen.ts
+++ b/src/client/schemas.gen.ts
@@ -45,13 +45,13 @@ export const AddressSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.462670",
+      default: "2024-12-04T14:27:50.769117",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.462745",
+      default: "2024-12-04T14:27:50.769154",
     },
   },
   type: "object",
@@ -197,6 +197,35 @@ export const AddressesPublicSchema = {
   title: "AddressesPublic",
 } as const;
 
+export const BasicUserSchema = {
+  properties: {
+    amiv_id: {
+      type: "string",
+      title: "Amiv Id",
+    },
+    nethz: {
+      type: "string",
+      title: "Nethz",
+    },
+    firstname: {
+      type: "string",
+      title: "Firstname",
+    },
+    lastname: {
+      type: "string",
+      title: "Lastname",
+    },
+    email: {
+      type: "string",
+      format: "email",
+      title: "Email",
+    },
+  },
+  type: "object",
+  required: ["amiv_id", "nethz", "firstname", "lastname", "email"],
+  title: "BasicUser",
+} as const;
+
 export const BillSchema = {
   properties: {
     creditor_id: {
@@ -240,13 +269,13 @@ export const BillSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.567782",
+      default: "2024-12-04T14:27:50.816108",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.567886",
+      default: "2024-12-04T14:27:50.816148",
     },
     ezag_timestamp: {
       anyOf: [
@@ -502,13 +531,13 @@ export const CreditPaymentSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.611467",
+      default: "2024-12-04T14:27:50.830333",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.611515",
+      default: "2024-12-04T14:27:50.830362",
     },
     ezag_timestamp: {
       anyOf: [
@@ -1024,13 +1053,13 @@ export const InternalTransferSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.724374",
+      default: "2024-12-04T14:27:50.888450",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.724437",
+      default: "2024-12-04T14:27:50.888482",
     },
   },
   type: "object",
@@ -1204,13 +1233,13 @@ export const InvoiceSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.762455",
+      default: "2024-12-04T14:27:50.908536",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.762559",
+      default: "2024-12-04T14:27:50.908590",
     },
   },
   type: "object",
@@ -1394,13 +1423,13 @@ export const ItemSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.650008",
+      default: "2024-12-04T14:27:50.850603",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.650130",
+      default: "2024-12-04T14:27:50.850656",
     },
   },
   type: "object",
@@ -1630,13 +1659,13 @@ export const KstSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.493654",
+      default: "2024-12-04T14:27:50.782879",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.493720",
+      default: "2024-12-04T14:27:50.782924",
     },
   },
   type: "object",
@@ -1768,13 +1797,13 @@ export const LedgerSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.513770",
+      default: "2024-12-04T14:27:50.792331",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.513841",
+      default: "2024-12-04T14:27:50.792364",
     },
   },
   type: "object",
@@ -1893,13 +1922,13 @@ export const ReimbursementSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-11-26T07:17:39.793196",
+      default: "2024-12-04T14:27:50.923768",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-11-26T07:17:39.793248",
+      default: "2024-12-04T14:27:50.923798",
     },
     ezag_timestamp: {
       anyOf: [
diff --git a/src/client/services.gen.ts b/src/client/services.gen.ts
index feddea8..f0c943b 100644
--- a/src/client/services.gen.ts
+++ b/src/client/services.gen.ts
@@ -160,6 +160,8 @@ import {
   type FilesListFilesResponse,
   type AuthLoginError,
   type AuthLoginResponse,
+  type AuthGetBasicUserInfoError,
+  type AuthGetBasicUserInfoResponse,
   type AuthIsOnboardedError,
   type AuthIsOnboardedResponse,
   type UsersReadUsersData,
@@ -1165,6 +1167,22 @@ export const authLogin = <ThrowOnError extends boolean = false>(
   });
 };
 
+/**
+ * Get Basic User Info
+ */
+export const authGetBasicUserInfo = <ThrowOnError extends boolean = false>(
+  options?: Options<unknown, ThrowOnError>,
+) => {
+  return (options?.client ?? client).get<
+    AuthGetBasicUserInfoResponse,
+    AuthGetBasicUserInfoError,
+    ThrowOnError
+  >({
+    ...options,
+    url: "/api/basic-user-info",
+  });
+};
+
 /**
  * Is Onboarded
  * Check if the user is onboarded.
diff --git a/src/client/types.gen.ts b/src/client/types.gen.ts
index f6e3415..c39395b 100644
--- a/src/client/types.gen.ts
+++ b/src/client/types.gen.ts
@@ -40,6 +40,14 @@ export type AddressPublic = {
   id: string;
 };
 
+export type BasicUser = {
+  amiv_id: string;
+  nethz: string;
+  firstname: string;
+  lastname: string;
+  email: string;
+};
+
 export type Bill = {
   creditor_id: string;
   iban: string;
@@ -1033,6 +1041,10 @@ export type AuthLoginResponse = unknown;
 
 export type AuthLoginError = unknown;
 
+export type AuthGetBasicUserInfoResponse = BasicUser;
+
+export type AuthGetBasicUserInfoError = unknown;
+
 export type AuthIsOnboardedResponse = unknown;
 
 export type AuthIsOnboardedError = unknown;
diff --git a/src/pages/Onboarding.tsx b/src/pages/Onboarding.tsx
index eb7735b..c7d5338 100644
--- a/src/pages/Onboarding.tsx
+++ b/src/pages/Onboarding.tsx
@@ -1,4 +1,4 @@
-import React, { useState } from "react";
+import React, { useEffect, useState } from "react";
 import {
   Container,
   Typography,
@@ -8,239 +8,98 @@ import {
   Alert,
   CircularProgress,
 } from "@mui/material";
-import { usersCreateUser } from "../client/services.gen";
-import { DbUserCreate } from "../client/types.gen";
-import { AdminObjectEditor } from "../components/AdminObjectEditor"
+import { usersCreateUser,authGetBasicUserInfo } from "../client/services.gen";
+import { DbUserCreate,BasicUser } from "../client/types.gen";
 import { DbUserCreateSchema } from "../client";
 
-export default function OnboardingPage() {
-  // Constant amiv_id
-  const AMIV_ID = "constant-amiv-id";
-
-  // State to hold form values
-  const [formData, setFormData] = useState<DbUserCreate>();
+import ObjectEditor, { FieldConfig, FieldType } from "../components/ObjectEditor";
+
+
+/*
+    amiv_id: str
+    address: AddressBase
+          name: str = Field(max_length=30)
+        address1: str = Field(max_length=30)
+        address2: str = Field(max_length=30)
+        address3: str = Field(max_length=30)
+        plz: int = Field(nullable=True)
+        city: str = Field(max_length=30)
+        country: str = Field(max_length=30)
+    iban: str*/
+const fieldConfig: FieldConfig<DbUserCreate>[] = [
+  {name: "iban", label: "IBAN", type: FieldType.STRING},
+  {name: "address.name", label: "Name", type: FieldType.STRING},
+  {name: "address.address1", label: "Optional Addr field", type: FieldType.STRING},
+  {name: "address.address2", label: "street and Nr", type: FieldType.STRING},
+  {name: "address.address3", label: "Optional ", type: FieldType.STRING},
+  {name: "address.plz", label: "PLZ", type: FieldType.NUMERIC},
+  {name: "address.city", label: "City", type: FieldType.STRING},
+  {name: "address.country", label: "Country", type: FieldType.STRING},
+
+
+]
+async function fetchBasicUserInfo(): Promise<BasicUser> {
+  const response = await authGetBasicUserInfo();
+  if (response.error) {
+    throw response.error;
+  }
+  return response.data;
+}
 
+export default function OnboardingPage() {
+  const [basicUser, setBasicUser] = useState<BasicUser | null>(null);
+  const [loading, setLoading] = useState(true);
   const [error, setError] = useState<string | null>(null);
-  const [success, setSuccess] = useState<string | null>(null);
-  const [loading, setLoading] = useState<boolean>(false);
-  const [validationErrors, setValidationErrors] = useState<
-    Record<string, string>
-  >({});
 
-  // Handle change to update form data
-  const handleChange = (
-    e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
-  ) => {
-    const { name, value } = e.target;
-    
-
-    setFormData((prevState) => {
-      if (name in prevState.body.address) {
-        return {
-          ...prevState,
-          body: {
-            ...prevState.body,
-            address: {
-              ...prevState.body.address,
-              [name]: name === "plz" ? parseInt(value, 10) || 0 : value,
-            },
-          },
-        };
-      } else {
-        return {
-          ...prevState,
-          body: {
-            ...prevState.body,
-            [name]: value,
-          },
-        };
+  useEffect(() => {
+    const loadUser = async () => {
+      try {
+        const userInfo = await fetchBasicUserInfo();
+        setBasicUser(userInfo);
+      } catch (err: any) {
+        setError(err.message || "Failed to fetch user info");
+      } finally {
+        setLoading(false);
       }
-    });
-  };
-
-  // Validate the form before submission
-  const validateForm = (): boolean => {
-    let isValid = true;
-    const errors: Record<string, string> = {};
-
-    // IBAN validation
-    if (!formData.body.iban.trim()) {
-      errors.iban = "IBAN is required";
-      isValid = false;
+    };
+
+    loadUser();
+  }, []);
+  if (!basicUser) {
+    return <Container>No user data available</Container>;
+  }
+
+  const initialElement: DbUserCreate = {
+    amiv_id: basicUser.amiv_id,
+    iban: "",
+    address: {
+      name: "",
+      address1: "",
+      address2: "",
+      address3: "",
+      plz: 0,
+      city: "",
+      country: "",
     }
-    if (!/^([A-Z0-9 ]{15,34})$/.test(formData.body.iban.trim())) {
-      errors.iban = "IBAN must be a valid format";
-      isValid = false;
+  }
+  const submitter = async (changes: DbUserCreate) => {
+    const response= await usersCreateUser({body: changes})
+    if ( response.error) {
+      throw(response.error);
     }
-
-    // Address validation
-    const address = formData.body.address;
-    if (!address.name.trim()) {
-      errors.name = "Name is required";
-      isValid = false;
-    }
-    if (!address.address1.trim()) {
-      errors.address1 = "Address line 1 is required";
-      isValid = false;
-    }
-    if (!address.plz || address.plz <= 0) {
-      errors.plz = "PLZ (postal code) must be greater than zero";
-      isValid = false;
+    else {
+      //maybe navigate somewhere
+      return
     }
-    if (!address.city.trim()) {
-      errors.city = "City is required";
-      isValid = false;
-    }
-    if (!address.country.trim()) {
-      errors.country = "Country is required";
-      isValid = false;
-    }
-
-    setValidationErrors(errors); // Set validation errors state
-    return isValid;
-  };
-
-  // Submit form data to the API
-  const handleSubmit = async () => {
-    setError(null);
-    setSuccess(null);
-
-    if (!validateForm()) {
-      return; // Don't submit if validation fails
-    }
-
-    setLoading(true); // Start loading
-
-    try {
-      // Call the backend API using usersCreateUser
-      const r = await usersCreateUser(formData); // The formData contains the `body` key as required
-      console.log(r);
-      setSuccess("User created successfully!");
-
-      // Reset form data after successful submission
-      /* setFormData({
-        body: {
-          amiv_id: AMIV_ID,
-          iban: "",
-          address: {
-            name: "",
-            address1: "",
-            address2: "",
-            address3: "",
-            plz: 0,
-            city: "",
-            country: "",
-          },
-        },
-      }); */
-    } catch (err) {
-      setError("Failed to create user.");
-      console.error("Error creating user:", err);
-    } finally {
-      setLoading(false); // Stop loading
-    }
-  };
+  }
 
   return (
     <Container>
-      <Typography variant="h4" component="h2" gutterBottom>
-        Onboarding Page
-      </Typography>
-      <Typography variant="body1" gutterBottom>
-        Please fill in your IBAN and address details to complete onboarding.
-      </Typography>
+      here goes some text
+      <ObjectEditor fieldConfigs={fieldConfig} header="Onboarding" submitter={submitter} initial={initialElement}/>
+    </Container>
+  );
 
-      {/* Display Success or Error messages */}
-      {success && <Alert severity="success">{success}</Alert>}
-      {error && <Alert severity="error">{error}</Alert>}
 
-      {/* Display Validation Errors */}
-      <Stack spacing={2} sx={{ mt: 2 }}>
-        <TextField
-          label="IBAN"
-          name="iban"
-          value={formData.body.iban}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.iban}
-          helperText={validationErrors.iban}
-        />
-        <TextField
-          label="Name"
-          name="name"
-          value={formData.body.address.name}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.name}
-          helperText={validationErrors.name}
-        />
-        <TextField
-          label="Address Line 1"
-          name="address1"
-          value={formData.body.address.address1}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.address1}
-          helperText={validationErrors.address1}
-        />
-        <TextField
-          label="Address Line 2"
-          name="address2"
-          value={formData.body.address.address2}
-          onChange={handleChange}
-          fullWidth
-        />
-        <TextField
-          label="Address Line 3"
-          name="address3"
-          value={formData.body.address.address3}
-          onChange={handleChange}
-          fullWidth
-        />
-        <TextField
-          label="PLZ"
-          name="plz"
-          value={formData.body.address.plz}
-          onChange={handleChange}
-          fullWidth
-          required
-          type="number"
-          error={!!validationErrors.plz}
-          helperText={validationErrors.plz}
-        />
-        <TextField
-          label="City"
-          name="city"
-          value={formData.body.address.city}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.city}
-          helperText={validationErrors.city}
-        />
-        <TextField
-          label="Country"
-          name="country"
-          value={formData.body.address.country}
-          onChange={handleChange}
-          fullWidth
-          required
-          error={!!validationErrors.country}
-          helperText={validationErrors.country}
-        />
 
-        {/* Submit button */}
-        <Button
-          variant="contained"
-          onClick={handleSubmit}
-          disabled={loading} // Disable button while loading
-        >
-          {loading ? <CircularProgress size={24} /> : "Complete Onboarding"}
-        </Button>
-      </Stack>
-    </Container>
-  );
-}
+}
\ No newline at end of file
-- 
GitLab


From aa225627ad1591b0abccb6117ddd8dcacf0484d1 Mon Sep 17 00:00:00 2001
From: cwalter <cwalter@ethz.ch>
Date: Sun, 8 Dec 2024 14:35:16 +0000
Subject: [PATCH 10/10] updated onboarding and creditPayment to new system

---
 openapi.json                |  78 +++++++----
 src/client/schemas.gen.ts   | 100 ++++++++++----
 src/client/services.gen.ts  |  18 +++
 src/client/types.gen.ts     |  12 +-
 src/components/Titles.ts    |  12 ++
 src/main.tsx                |   2 +
 src/pages/CreditPayment.tsx |  47 +++++--
 yarn.lock                   | 257 +++++++++++++++++++++++++++++++-----
 8 files changed, 430 insertions(+), 96 deletions(-)
 create mode 100644 src/components/Titles.ts

diff --git a/openapi.json b/openapi.json
index 250c16f..27f50c0 100644
--- a/openapi.json
+++ b/openapi.json
@@ -2328,7 +2328,7 @@
       "post": {
         "tags": ["users"],
         "summary": "Create User",
-        "description": "Create a new User.",
+        "description": "Create a new User.\ncreditor = Creditor().model_validate(creditPayment_in.creditor)\nwith Session(engine) as session:\n    session.add(creditor)\n    session.commit()\n    session.refresh(creditor)\n    creditPayment = CreditPayment().model_validate(\n        creditPayment_in,\n        update={\n            \"creditor\": creditor,\n            \"creditor_id\": creditor.id,\n        },\n    )\n    session.add(creditPayment)\n    session.commit()\n    session.refresh(creditPayment)\nprint(creditPayment)\nreturncreditPayment = CreditPaymentPublic.model_validate(creditPayment)\nreturn returncreditPayment",
         "operationId": "users-create_User",
         "security": [{ "HTTPBearer": [] }],
         "requestBody": {
@@ -2497,13 +2497,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.769117"
+            "default": "2024-12-08T15:17:58.788683"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.769154"
+            "default": "2024-12-08T15:17:58.788710"
           }
         },
         "type": "object",
@@ -2646,13 +2646,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.816108"
+            "default": "2024-12-08T15:17:58.816295"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.816148"
+            "default": "2024-12-08T15:17:58.816322"
           },
           "ezag_timestamp": {
             "anyOf": [
@@ -2817,13 +2817,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.830333"
+            "default": "2024-12-08T15:17:58.826441"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.830362"
+            "default": "2024-12-08T15:17:58.826463"
           },
           "ezag_timestamp": {
             "anyOf": [
@@ -3158,13 +3158,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.888450"
+            "default": "2024-12-08T15:17:58.851861"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.888482"
+            "default": "2024-12-08T15:17:58.851884"
           }
         },
         "type": "object",
@@ -3282,13 +3282,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.908536"
+            "default": "2024-12-08T15:17:58.863957"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.908590"
+            "default": "2024-12-08T15:17:58.863988"
           }
         },
         "type": "object",
@@ -3421,13 +3421,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.850603"
+            "default": "2024-12-08T15:17:58.835094"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.850656"
+            "default": "2024-12-08T15:17:58.835120"
           }
         },
         "type": "object",
@@ -3568,52 +3568,80 @@
       },
       "Kst": {
         "properties": {
+          "kst_number": { "type": "integer", "title": "Kst Number" },
           "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
           "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
           "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
           "active": { "type": "boolean", "title": "Active", "default": true },
-          "budget": { "type": "integer", "title": "Budget" },
+          "budget_plus": { "type": "integer", "title": "Budget Plus" },
+          "budget_minus": { "type": "integer", "title": "Budget Minus" },
           "id": { "type": "string", "format": "uuid", "title": "Id" },
           "time_create": {
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.782879"
+            "default": "2024-12-08T15:17:58.797270"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.782924"
+            "default": "2024-12-08T15:17:58.797294"
           }
         },
         "type": "object",
-        "required": ["name_de", "name_en", "owner", "budget"],
+        "required": [
+          "kst_number",
+          "name_de",
+          "name_en",
+          "owner",
+          "budget_plus",
+          "budget_minus"
+        ],
         "title": "Kst"
       },
       "KstBase": {
         "properties": {
+          "kst_number": { "type": "integer", "title": "Kst Number" },
           "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
           "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
           "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
           "active": { "type": "boolean", "title": "Active", "default": true },
-          "budget": { "type": "integer", "title": "Budget" }
+          "budget_plus": { "type": "integer", "title": "Budget Plus" },
+          "budget_minus": { "type": "integer", "title": "Budget Minus" }
         },
         "type": "object",
-        "required": ["name_de", "name_en", "owner", "budget"],
+        "required": [
+          "kst_number",
+          "name_de",
+          "name_en",
+          "owner",
+          "budget_plus",
+          "budget_minus"
+        ],
         "title": "KstBase"
       },
       "KstPublic": {
         "properties": {
+          "kst_number": { "type": "integer", "title": "Kst Number" },
           "name_de": { "type": "string", "maxLength": 30, "title": "Name De" },
           "name_en": { "type": "string", "maxLength": 30, "title": "Name En" },
           "owner": { "type": "string", "maxLength": 30, "title": "Owner" },
           "active": { "type": "boolean", "title": "Active", "default": true },
-          "budget": { "type": "integer", "title": "Budget" },
+          "budget_plus": { "type": "integer", "title": "Budget Plus" },
+          "budget_minus": { "type": "integer", "title": "Budget Minus" },
           "id": { "type": "string", "format": "uuid", "title": "Id" }
         },
         "type": "object",
-        "required": ["name_de", "name_en", "owner", "budget", "id"],
+        "required": [
+          "kst_number",
+          "name_de",
+          "name_en",
+          "owner",
+          "budget_plus",
+          "budget_minus",
+          "id"
+        ],
         "title": "KstPublic"
       },
       "KstsPublic": {
@@ -3646,13 +3674,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.792331"
+            "default": "2024-12-08T15:17:58.803888"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.792364"
+            "default": "2024-12-08T15:17:58.803912"
           }
         },
         "type": "object",
@@ -3719,13 +3747,13 @@
             "type": "string",
             "format": "date-time",
             "title": "Time Create",
-            "default": "2024-12-04T14:27:50.923768"
+            "default": "2024-12-08T15:17:58.874167"
           },
           "time_modified": {
             "type": "string",
             "format": "date-time",
             "title": "Time Modified",
-            "default": "2024-12-04T14:27:50.923798"
+            "default": "2024-12-08T15:17:58.874192"
           },
           "ezag_timestamp": {
             "anyOf": [
diff --git a/src/client/schemas.gen.ts b/src/client/schemas.gen.ts
index 9cbdcc1..34ee663 100644
--- a/src/client/schemas.gen.ts
+++ b/src/client/schemas.gen.ts
@@ -45,13 +45,13 @@ export const AddressSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.769117",
+      default: "2024-12-08T15:17:58.788683",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.769154",
+      default: "2024-12-08T15:17:58.788710",
     },
   },
   type: "object",
@@ -269,13 +269,13 @@ export const BillSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.816108",
+      default: "2024-12-08T15:17:58.816295",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.816148",
+      default: "2024-12-08T15:17:58.816322",
     },
     ezag_timestamp: {
       anyOf: [
@@ -531,13 +531,13 @@ export const CreditPaymentSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.830333",
+      default: "2024-12-08T15:17:58.826441",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.830362",
+      default: "2024-12-08T15:17:58.826463",
     },
     ezag_timestamp: {
       anyOf: [
@@ -1053,13 +1053,13 @@ export const InternalTransferSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.888450",
+      default: "2024-12-08T15:17:58.851861",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.888482",
+      default: "2024-12-08T15:17:58.851884",
     },
   },
   type: "object",
@@ -1233,13 +1233,13 @@ export const InvoiceSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.908536",
+      default: "2024-12-08T15:17:58.863957",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.908590",
+      default: "2024-12-08T15:17:58.863988",
     },
   },
   type: "object",
@@ -1423,13 +1423,13 @@ export const ItemSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.850603",
+      default: "2024-12-08T15:17:58.835094",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.850656",
+      default: "2024-12-08T15:17:58.835120",
     },
   },
   type: "object",
@@ -1626,6 +1626,10 @@ export const ItemstoInvoicePublicSchema = {
 
 export const KstSchema = {
   properties: {
+    kst_number: {
+      type: "integer",
+      title: "Kst Number",
+    },
     name_de: {
       type: "string",
       maxLength: 30,
@@ -1646,9 +1650,13 @@ export const KstSchema = {
       title: "Active",
       default: true,
     },
-    budget: {
+    budget_plus: {
       type: "integer",
-      title: "Budget",
+      title: "Budget Plus",
+    },
+    budget_minus: {
+      type: "integer",
+      title: "Budget Minus",
     },
     id: {
       type: "string",
@@ -1659,22 +1667,33 @@ export const KstSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.782879",
+      default: "2024-12-08T15:17:58.797270",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.782924",
+      default: "2024-12-08T15:17:58.797294",
     },
   },
   type: "object",
-  required: ["name_de", "name_en", "owner", "budget"],
+  required: [
+    "kst_number",
+    "name_de",
+    "name_en",
+    "owner",
+    "budget_plus",
+    "budget_minus",
+  ],
   title: "Kst",
 } as const;
 
 export const KstBaseSchema = {
   properties: {
+    kst_number: {
+      type: "integer",
+      title: "Kst Number",
+    },
     name_de: {
       type: "string",
       maxLength: 30,
@@ -1695,18 +1714,33 @@ export const KstBaseSchema = {
       title: "Active",
       default: true,
     },
-    budget: {
+    budget_plus: {
+      type: "integer",
+      title: "Budget Plus",
+    },
+    budget_minus: {
       type: "integer",
-      title: "Budget",
+      title: "Budget Minus",
     },
   },
   type: "object",
-  required: ["name_de", "name_en", "owner", "budget"],
+  required: [
+    "kst_number",
+    "name_de",
+    "name_en",
+    "owner",
+    "budget_plus",
+    "budget_minus",
+  ],
   title: "KstBase",
 } as const;
 
 export const KstPublicSchema = {
   properties: {
+    kst_number: {
+      type: "integer",
+      title: "Kst Number",
+    },
     name_de: {
       type: "string",
       maxLength: 30,
@@ -1727,9 +1761,13 @@ export const KstPublicSchema = {
       title: "Active",
       default: true,
     },
-    budget: {
+    budget_plus: {
       type: "integer",
-      title: "Budget",
+      title: "Budget Plus",
+    },
+    budget_minus: {
+      type: "integer",
+      title: "Budget Minus",
     },
     id: {
       type: "string",
@@ -1738,7 +1776,15 @@ export const KstPublicSchema = {
     },
   },
   type: "object",
-  required: ["name_de", "name_en", "owner", "budget", "id"],
+  required: [
+    "kst_number",
+    "name_de",
+    "name_en",
+    "owner",
+    "budget_plus",
+    "budget_minus",
+    "id",
+  ],
   title: "KstPublic",
 } as const;
 
@@ -1797,13 +1843,13 @@ export const LedgerSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.792331",
+      default: "2024-12-08T15:17:58.803888",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.792364",
+      default: "2024-12-08T15:17:58.803912",
     },
   },
   type: "object",
@@ -1922,13 +1968,13 @@ export const ReimbursementSchema = {
       type: "string",
       format: "date-time",
       title: "Time Create",
-      default: "2024-12-04T14:27:50.923768",
+      default: "2024-12-08T15:17:58.874167",
     },
     time_modified: {
       type: "string",
       format: "date-time",
       title: "Time Modified",
-      default: "2024-12-04T14:27:50.923798",
+      default: "2024-12-08T15:17:58.874192",
     },
     ezag_timestamp: {
       anyOf: [
diff --git a/src/client/services.gen.ts b/src/client/services.gen.ts
index f0c943b..9b3f6f7 100644
--- a/src/client/services.gen.ts
+++ b/src/client/services.gen.ts
@@ -1222,6 +1222,24 @@ export const usersReadUsers = <ThrowOnError extends boolean = false>(
 /**
  * Create User
  * Create a new User.
+ * creditor = Creditor().model_validate(creditPayment_in.creditor)
+ * with Session(engine) as session:
+ * session.add(creditor)
+ * session.commit()
+ * session.refresh(creditor)
+ * creditPayment = CreditPayment().model_validate(
+ * creditPayment_in,
+ * update={
+ * "creditor": creditor,
+ * "creditor_id": creditor.id,
+ * },
+ * )
+ * session.add(creditPayment)
+ * session.commit()
+ * session.refresh(creditPayment)
+ * print(creditPayment)
+ * returncreditPayment = CreditPaymentPublic.model_validate(creditPayment)
+ * return returncreditPayment
  */
 export const usersCreateUser = <ThrowOnError extends boolean = false>(
   options: Options<UsersCreateUserData, ThrowOnError>,
diff --git a/src/client/types.gen.ts b/src/client/types.gen.ts
index c39395b..0530df4 100644
--- a/src/client/types.gen.ts
+++ b/src/client/types.gen.ts
@@ -380,30 +380,36 @@ export type ItemstoInvoicePublic = {
 };
 
 export type Kst = {
+  kst_number: number;
   name_de: string;
   name_en: string;
   owner: string;
   active?: boolean;
-  budget: number;
+  budget_plus: number;
+  budget_minus: number;
   id?: string;
   time_create?: Date;
   time_modified?: Date;
 };
 
 export type KstBase = {
+  kst_number: number;
   name_de: string;
   name_en: string;
   owner: string;
   active?: boolean;
-  budget: number;
+  budget_plus: number;
+  budget_minus: number;
 };
 
 export type KstPublic = {
+  kst_number: number;
   name_de: string;
   name_en: string;
   owner: string;
   active?: boolean;
-  budget: number;
+  budget_plus: number;
+  budget_minus: number;
   id: string;
 };
 
diff --git a/src/components/Titles.ts b/src/components/Titles.ts
new file mode 100644
index 0000000..e20476e
--- /dev/null
+++ b/src/components/Titles.ts
@@ -0,0 +1,12 @@
+import { Kst, Ledger } from "../client";
+
+
+
+
+export function Kst_title (kst: Kst): string {
+    return String(kst.kst_number) +" | "+ kst.name_de;
+}
+
+export function Ledger_title (ledger: Ledger): string {
+    return ledger.namede;
+}
\ No newline at end of file
diff --git a/src/main.tsx b/src/main.tsx
index d0c1bc0..9bc1535 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -12,6 +12,7 @@ import CreditPaymentsPage from "./pages/CreditPaymentsList";
 import Callback from "./Callback";
 import CreditList from "./pages/CreditList";
 import Belegformular from "./pages/Belegformular";
+import { addLoader as addCreditPaymentLoader } from "./pages/CreditPayment";
 import GenerateItem from "./pages/GenerateItem";
 import GenerateLedger from "./pages/GenerateLedger";
 import InternalTransfer from "./pages/InternalTransfer";
@@ -30,6 +31,7 @@ const router = createBrowserRouter([
       {
         path: "belegformular",
         element: <Belegformular />, // Add this route
+        loader: addCreditPaymentLoader,
       },
       {
         path: "GenerateItem",
diff --git a/src/pages/CreditPayment.tsx b/src/pages/CreditPayment.tsx
index 9271403..7a09f26 100644
--- a/src/pages/CreditPayment.tsx
+++ b/src/pages/CreditPayment.tsx
@@ -3,37 +3,64 @@ import {
   Container,
 } from "@mui/material";
 import {
+  authGetBasicUserInfo,
   creditPaymentsCreateCreditPayment,
+  kstsReadKsts,
+  ledgersReadLedgers,
+  usersReadUser,
 } from "../client/services.gen";
 import {
   CreditPaymentCreate,
   Card,
+  Kst,
+  Ledger,
+  BasicUser,
 } from "../client/types.gen";
 
 import client from "../apiClientConfig"; //Do not remove
 
 import ObjectEditor, { FieldConfig, FieldType } from "../components/ObjectEditor";
+import { useLoaderData } from "react-router-dom";
+import { Kst_title, Ledger_title } from "../components/Titles";
 
-  
-    const fieldConfig: FieldConfig<CreditPaymentCreate>[] = [
-      {name: "creditor.kst_id", label: "kst", type: FieldType.STRING},
-      {name: "creditor.ledger_id", label: "ledger", type: FieldType.STRING},
+export async function addLoader() {
+  const kstlist = await kstsReadKsts({});
+  const kst = kstlist.data?.items || [];
+  const ledgerlist = await ledgersReadLedgers({});
+  const ledger = ledgerlist.data?.items || [];
+  const userrequest = await authGetBasicUserInfo();
+  const user = userrequest.data;
+  return { kst, ledger, user };
+}
+
+
+
+
+function generateFieldConfigs(kst: Kst[], ledger: Ledger[]): FieldConfig<CreditPaymentCreate>[] {
+    
+    return [
+      {name: "creditor.kst_id", label: "kst", type: FieldType.STRING, items: 
+        kst.map(k => ({label: Kst_title(k), value: k.id? k.id : ""}))
+      },
+      {name: "creditor.ledger_id", label: "ledger", type: FieldType.STRING, items:
+        ledger.map(l => ({label: Ledger_title(l), value: l.id? l.id : ""}))
+      },
       {name: "creditor.amount", label: "amount", type: FieldType.NUMERIC},
       {name: "creditor.currency", label: "währung", type: FieldType.STRING},
       {name: "creditor.comment", label: "kommentar", type: FieldType.STRING},
-      {name: "creditor.qcomment", label: "kommentar quästor", type: FieldType.STRING},
       {name: "card", label: "creditcard", type: FieldType.STRING, items: [
         {label: "President", value: Card.PRESIDENT},
         {label: "Events", value: Card.EVENTS},
         {label: "Quastor", value: Card.QUAESTOR}
     ]},
       {name: "recipt", label: "recipt", type: FieldType.STRING},
-      {name: "creator", label: "creator", type: FieldType.STRING},
     ]
-    
+}
     
     export default function GenerateCreditPayment() {
-    
+      const { kst, ledger,user } = useLoaderData() as {kst: Kst[], ledger: Ledger[], user: BasicUser};
+      const fieldConfig = generateFieldConfigs(kst, ledger)
+
       const initialElement: CreditPaymentCreate = {
         creditor: {
           kst_id: "",
@@ -45,8 +72,8 @@ import ObjectEditor, { FieldConfig, FieldType } from "../components/ObjectEditor
           qcomment: "",
         },
         recipt: "",
-        card: "president",
-        creator: "",
+        card: "President",
+        creator: user.amiv_id,
       }
     
       const submitter = async (changes: CreditPaymentCreate) => {
diff --git a/yarn.lock b/yarn.lock
index 84348f6..55cd8d6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -33,7 +33,7 @@
   resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz"
   integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==
 
-"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.25.2":
+"@babel/core@^7.25.2":
   version "7.26.0"
   resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz"
   integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
@@ -224,7 +224,7 @@
   resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz"
   integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
 
-"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.13.3", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.9.0":
+"@emotion/react@^11.13.3":
   version "11.13.3"
   resolved "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz"
   integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==
@@ -254,7 +254,7 @@
   resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz"
   integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
 
-"@emotion/styled@^11.13.0", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1":
+"@emotion/styled@^11.13.0":
   version "11.13.0"
   resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz"
   integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==
@@ -286,11 +286,121 @@
   resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
   integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
 
+"@esbuild/aix-ppc64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
+  integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
+
+"@esbuild/android-arm64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
+  integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
+
+"@esbuild/android-arm@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
+  integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
+
+"@esbuild/android-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
+  integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
+
+"@esbuild/darwin-arm64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
+  integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
+
+"@esbuild/darwin-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
+  integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
+
+"@esbuild/freebsd-arm64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
+  integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
+
+"@esbuild/freebsd-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
+  integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
+
+"@esbuild/linux-arm64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
+  integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
+
+"@esbuild/linux-arm@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
+  integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
+
+"@esbuild/linux-ia32@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
+  integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
+
+"@esbuild/linux-loong64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
+  integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
+
+"@esbuild/linux-mips64el@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
+  integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
+
+"@esbuild/linux-ppc64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
+  integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
+
+"@esbuild/linux-riscv64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
+  integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
+
+"@esbuild/linux-s390x@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
+  integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
+
 "@esbuild/linux-x64@0.21.5":
   version "0.21.5"
   resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz"
   integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
 
+"@esbuild/netbsd-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
+  integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
+
+"@esbuild/openbsd-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
+  integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
+
+"@esbuild/sunos-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
+  integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
+
+"@esbuild/win32-arm64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
+  integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
+
+"@esbuild/win32-ia32@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
+  integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
+
+"@esbuild/win32-x64@0.21.5":
+  version "0.21.5"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
+  integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
+
 "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
   version "4.4.1"
   resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz"
@@ -337,7 +447,7 @@
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@^9.14.0", "@eslint/js@9.14.0":
+"@eslint/js@9.14.0", "@eslint/js@^9.14.0":
   version "9.14.0"
   resolved "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz"
   integrity sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==
@@ -486,7 +596,7 @@
   dependencies:
     "@babel/runtime" "^7.26.0"
 
-"@mui/material@^5.15.14 || ^6.0.0", "@mui/material@^6.1.6":
+"@mui/material@^6.1.6":
   version "6.1.6"
   resolved "https://registry.npmjs.org/@mui/material/-/material-6.1.6.tgz"
   integrity sha512-1yvejiQ/601l5AK3uIdUlAVElyCxoqKnl7QA+2oFB/2qYPWfRwDgavW/MoywS5Y2gZEslcJKhe0s2F3IthgFgw==
@@ -525,7 +635,7 @@
     csstype "^3.1.3"
     prop-types "^15.8.1"
 
-"@mui/system@^5.15.14 || ^6.0.0", "@mui/system@^6.1.6":
+"@mui/system@^6.1.6":
   version "6.1.6"
   resolved "https://registry.npmjs.org/@mui/system/-/system-6.1.6.tgz"
   integrity sha512-qOf1VUE9wK8syiB0BBCp82oNBAVPYdj4Trh+G1s+L+ImYiKlubWhhqlnvWt3xqMevR+D2h1CXzA1vhX2FvA+VQ==
@@ -585,7 +695,7 @@
     "@nodelib/fs.stat" "2.0.5"
     run-parallel "^1.1.9"
 
-"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
   version "2.0.5"
   resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
   integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -608,6 +718,71 @@
   resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz"
   integrity sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==
 
+"@rollup/rollup-android-arm-eabi@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz#c460b54c50d42f27f8254c435a4f3b3e01910bc8"
+  integrity sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==
+
+"@rollup/rollup-android-arm64@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz#96e01f3a04675d8d5973ab8d3fd6bc3be21fa5e1"
+  integrity sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==
+
+"@rollup/rollup-darwin-arm64@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz#9b2ec23b17b47cbb2f771b81f86ede3ac6730bce"
+  integrity sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==
+
+"@rollup/rollup-darwin-x64@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz#f30e4ee6929e048190cf10e0daa8e8ae035b6e46"
+  integrity sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==
+
+"@rollup/rollup-freebsd-arm64@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz#c54b2373ec5bcf71f08c4519c7ae80a0b6c8e03b"
+  integrity sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==
+
+"@rollup/rollup-freebsd-x64@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz#3bc53aa29d5a34c28ba8e00def76aa612368458e"
+  integrity sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz#c85aedd1710c9e267ee86b6d1ce355ecf7d9e8d9"
+  integrity sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==
+
+"@rollup/rollup-linux-arm-musleabihf@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz#e77313408bf13995aecde281aec0cceb08747e42"
+  integrity sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==
+
+"@rollup/rollup-linux-arm64-gnu@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz#633f632397b3662108cfaa1abca2a80b85f51102"
+  integrity sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==
+
+"@rollup/rollup-linux-arm64-musl@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz#63edd72b29c4cced93e16113a68e1be9fef88907"
+  integrity sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==
+
+"@rollup/rollup-linux-powerpc64le-gnu@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz#a9418a4173df80848c0d47df0426a0bf183c4e75"
+  integrity sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==
+
+"@rollup/rollup-linux-riscv64-gnu@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz#bc9c195db036a27e5e3339b02f51526b4ce1e988"
+  integrity sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==
+
+"@rollup/rollup-linux-s390x-gnu@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz#1651fdf8144ae89326c01da5d52c60be63e71a82"
+  integrity sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==
+
 "@rollup/rollup-linux-x64-gnu@4.24.4":
   version "4.24.4"
   resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz"
@@ -618,6 +793,33 @@
   resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz"
   integrity sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==
 
+"@rollup/rollup-win32-arm64-msvc@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz#e48e78cdd45313b977c1390f4bfde7ab79be8871"
+  integrity sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==
+
+"@rollup/rollup-win32-ia32-msvc@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz#a3fc8536d243fe161c796acb93eba43c250f311c"
+  integrity sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==
+
+"@rollup/rollup-win32-x64-msvc@4.24.4":
+  version "4.24.4"
+  resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz#e2a9d1fd56524103a6cc8a54404d9d3ebc73c454"
+  integrity sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==
+
+"@types/babel-traverse@^6.7.17":
+  version "6.25.10"
+  resolved "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.10.tgz"
+  integrity sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw==
+  dependencies:
+    "@types/babel-types" "*"
+
+"@types/babel-types@*":
+  version "7.0.16"
+  resolved "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.16.tgz"
+  integrity sha512-5QXs9GBFTNTmilLlWBhnsprqpjfrotyrnzUdwDrywEL/DA4LuCWQT300BTOXA3Y9ngT9F2uvmCoIxI6z8DlJEA==
+
 "@types/babel__core@^7.20.5":
   version "7.20.5"
   resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
@@ -651,19 +853,7 @@
   dependencies:
     "@babel/types" "^7.20.7"
 
-"@types/babel-traverse@^6.7.17":
-  version "6.25.10"
-  resolved "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.10.tgz"
-  integrity sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw==
-  dependencies:
-    "@types/babel-types" "*"
-
-"@types/babel-types@*":
-  version "7.0.16"
-  resolved "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.16.tgz"
-  integrity sha512-5QXs9GBFTNTmilLlWBhnsprqpjfrotyrnzUdwDrywEL/DA4LuCWQT300BTOXA3Y9ngT9F2uvmCoIxI6z8DlJEA==
-
-"@types/estree@^1.0.6", "@types/estree@1.0.6":
+"@types/estree@1.0.6", "@types/estree@^1.0.6":
   version "1.0.6"
   resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz"
   integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
@@ -690,7 +880,7 @@
   dependencies:
     "@types/react" "*"
 
-"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0":
+"@types/react@*":
   version "18.3.12"
   resolved "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz"
   integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==
@@ -713,7 +903,7 @@
     natural-compare "^1.4.0"
     ts-api-utils "^1.3.0"
 
-"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@^8.13.0":
+"@typescript-eslint/parser@^8.13.0":
   version "8.13.0"
   resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz"
   integrity sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==
@@ -795,7 +985,7 @@ acorn-jsx@^5.3.2:
   resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
   integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
 
-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.12.1, acorn@^8.14.0:
+acorn@^8.12.1, acorn@^8.14.0:
   version "8.14.0"
   resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz"
   integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
@@ -863,7 +1053,7 @@ braces@^3.0.3:
   dependencies:
     fill-range "^7.1.1"
 
-browserslist@^4.24.0, "browserslist@>= 4.21.0":
+browserslist@^4.24.0:
   version "4.24.2"
   resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz"
   integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==
@@ -1000,7 +1190,7 @@ csstype@^3.0.2, csstype@^3.1.3:
   resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
   integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
 
-dayjs@^1.10.7, dayjs@^1.11.13:
+dayjs@^1.11.13:
   version "1.11.13"
   resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz"
   integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
@@ -1119,7 +1309,7 @@ eslint-visitor-keys@^4.2.0:
   resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz"
   integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
 
-"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.10.0, eslint@^9.14.0, eslint@>=7:
+eslint@^9.14.0:
   version "9.14.0"
   resolved "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz"
   integrity sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==
@@ -1302,6 +1492,11 @@ fs-minipass@^2.0.0:
   dependencies:
     minipass "^3.0.0"
 
+fsevents@~2.3.2, fsevents@~2.3.3:
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
 function-bind@^1.1.2:
   version "1.1.2"
   resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -1453,7 +1648,7 @@ isexe@^2.0.0:
   resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
   integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
 
-jiti@*, jiti@^2.3.0:
+jiti@^2.3.0:
   version "2.4.0"
   resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.0.tgz"
   integrity sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==
@@ -1863,7 +2058,7 @@ rc9@^2.1.2:
     defu "^6.1.4"
     destr "^2.0.3"
 
-"react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", react-dom@^18.3.1, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0:
+react-dom@^18.3.1:
   version "18.3.1"
   resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
   integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
@@ -1911,7 +2106,7 @@ react-transition-group@^4.4.5:
     loose-envify "^1.4.0"
     prop-types "^15.6.2"
 
-"react@^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0 || ^19.0.0", react@^18.3.1, react@>=16.6.0, react@>=16.8, react@>=16.8.0:
+react@^18.3.1:
   version "18.3.1"
   resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
   integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
@@ -2103,7 +2298,7 @@ type-check@^0.4.0, type-check@~0.4.0:
   dependencies:
     prelude-ls "^1.2.1"
 
-typescript@^5.6.3, typescript@^5.x, typescript@>=4.2.0:
+typescript@^5.6.3:
   version "5.6.3"
   resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz"
   integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
@@ -2133,7 +2328,7 @@ uri-js@^4.2.2:
   dependencies:
     punycode "^2.1.0"
 
-"vite@^4.2.0 || ^5.0.0", vite@^5.4.10:
+vite@^5.4.10:
   version "5.4.10"
   resolved "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz"
   integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==
-- 
GitLab