diff --git a/.gitignore b/.gitignore
index c340a29f40d283ea509cd91f83457a042008cb5a..12063c9603192d68c47b3bf4aeec6619db4cacf0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,9 @@
 node_modules
 # next.js build files
 .next
+next-env.d.ts
 # environment variables
 .env
 .env.*
-!.env.example
\ No newline at end of file
+!.env.example
+/.nenv/
diff --git a/.gitlab/issue_templates/Default.md b/.gitlab/issue_templates/Default.md
new file mode 100644
index 0000000000000000000000000000000000000000..aa1a65aca363b87aff50280e1a86824009d2098b
--- /dev/null
+++ b/.gitlab/issue_templates/Default.md
@@ -0,0 +1,28 @@
+## Summary
+
+*Please give a short summary of what the issue is.*
+
+## Expected Behavior
+
+*What did you expect how the software should behave?*
+
+## Actual Behavior
+
+*What did the software actually do?*
+
+## Steps to Reproduce the Problem
+
+*Please describe, step by step, how others can reproduce the problem.  Please try these steps for yourself on a clean system.*
+
+1.
+2.
+3.
+
+## Specifications
+
+- Version: *Which version of this software?*
+- Platform: *Which operating system, which other relevant software versions?*
+
+## Possible fixes
+
+*Do you have ideas how the issue can be resolved?*
diff --git a/.gitlab/merge_request_templates/Default.md b/.gitlab/merge_request_templates/Default.md
new file mode 100644
index 0000000000000000000000000000000000000000..3629e0ca3695000863d8c254516f64bf59a7bf60
--- /dev/null
+++ b/.gitlab/merge_request_templates/Default.md
@@ -0,0 +1,56 @@
+# Summary
+
+*Insert a meaningful description for this merge request here:  What is the new/changed behavior?
+Which bug has been fixed? Are there related issues?*
+
+
+# Focus
+
+*Point the reviewer to the core of the code change. Where should they start reading? What should
+they focus on (e.g. security, performance, maintainability, user-friendliness, compliance with the
+specs, finding more corner cases, concrete questions)?*
+
+
+# Test Environment
+
+*How to set up a test environment for manual testing?*
+
+
+# Check List for the Author
+
+Please, prepare your MR for a review. Be sure to write a summary and a focus and create gitlab
+comments for the reviewer. They should guide the reviewer through the changes, explain your changes
+and also point out open questions. For further good practices have a look at [our review
+guidelines](https://gitlab.com/caosdb/caosdb/-/blob/dev/REVIEW_GUIDELINES.md)
+
+- [ ] All automated tests pass
+- [ ] Reference related issues
+- [ ] Up-to-date CHANGELOG.md (or not necessary)
+- [ ] Up-to-date JSON schema (or not necessary)
+- [ ] Appropriate user and developer documentation (or not necessary)
+  - Update / write published documentation (`make doc`).
+  - How do I use the software?  Assume "stupid" users.
+  - How do I develop or debug the software?  Assume novice developers.
+- [ ] Annotations in code (Gitlab comments)
+  - Intent of new code
+  - Problems with old code
+  - Why this implementation?
+
+
+# Check List for the Reviewer
+
+- [ ] I understand the intent of this MR
+- [ ] All automated tests pass
+- [ ] Up-to-date CHANGELOG.md (or not necessary)
+- [ ] Appropriate user and developer documentation (or not necessary), also in published
+      documentation.
+- [ ] The test environment setup works and the intended behavior is reproducible in the test
+  environment
+- [ ] In-code documentation and comments are up-to-date.
+- [ ] Check: Are there specifications? Are they satisfied?
+
+For further good practices have a look at [our review guidelines](https://gitlab.com/caosdb/caosdb/-/blob/dev/REVIEW_GUIDELINES.md).
+
+
+/assign me
+/target_branch dev
diff --git a/Dockerfile b/Dockerfile
index 7f7a9d606e484bb8804a787646c68558954016ef..bb94e9aaf19ca45ac1133e98eb98986c4410e42e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,12 @@
 FROM refinedev/node:18 AS base
 
+RUN npm install -g --update npm
+
 FROM base AS deps
 
 RUN apk add --no-cache libc6-compat
 
+
 COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./
 
 RUN \
@@ -20,12 +23,34 @@ COPY --from=deps /app/refine/node_modules ./node_modules
 COPY . .
 
 
-ENV PORT 3000
-ENV NEXT_PUBLIC_API_URL=https://manager.testbed.pid.gwdg.de/api/v1
-ENV KEY_CLOAK_CLIENT_SECRET ""
+ENV PORT 8000
+ARG NEXT_PUBLIC_API_URL
+ARG KEY_CLOAK_CLIENT_SECRET
+ARG KEY_CLOAK_CLIENT_ID
+ARG KEY_CLOAK_ISSUER
+ARG NEXT_PUBLIC_HANDLE_SYSTEM_BASE_URI
+ARG NEXT_PUBLIC_HANDLE_SYSTEM_DOWNLOAD_PROXY
+ARG NEXTAUTH_URL
+ARG NEXT_PUBLIC_CORDRA_HANDLE
+ARG NEXT_PUBLIC_SHOWCASE_LEFT_PID
+ARG NEXT_PUBLIC_SHOWCASE_LEFT_MDPID
+ARG NEXT_PUBLIC_SHOWCASE_RIGHT_PID
+ARG NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID
+
+ENV KEY_CLOAK_ISSUER=${KEY_CLOAK_ISSUER}
+ENV KEY_CLOAK_CLIENT_SECRET=${KEY_CLOAK_CLIENT_SECRET}
+ENV KEY_CLOAK_CLIENT_ID=${KEY_CLOAK_CLIENT_ID}
+
+ENV NEXT_PUBLIC_HANDLE_SYSTEM_DOWNLOAD_PROXY=${NEXT_PUBLIC_HANDLE_SYSTEM_DOWNLOAD_PROXY}
+ENV NEXT_PUBLIC_HANDLE_SYSTEM_BASE_URI=${NEXT_PUBLIC_HANDLE_SYSTEM_BASE_URI}
+ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-"https://manager.testbed.pid.gwdg.de/api/v1"}
+ENV NEXTAUTH_URL=${NEXTAUTH_URL}
+ENV NEXT_PUBLIC_CORDRA_HANDLE=${NEXT_PUBLIC_CORDRA_HANDLE}
+ENV NEXT_PUBLIC_SHOWCASE_LEFT_PID=${NEXT_PUBLIC_SHOWCASE_LEFT_PID}
+ENV NEXT_PUBLIC_SHOWCASE_RIGHT_PID=${NEXT_PUBLIC_SHOWCASE_RIGHT_PID}
+ENV NEXT_PUBLIC_SHOWCASE_LEFT_MDPID=${NEXT_PUBLIC_SHOWCASE_LEFT_MDPID}
+ENV NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID=${NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID}
 
-#EXPOSE 3000
-#CMD ["npm", "run", "dev"]
 RUN npm run build
 
 FROM base AS runner
@@ -42,7 +67,10 @@ COPY --from=builder --chown=refine:nodejs /app/refine/.next/static ./.next/stati
 
 USER refine
 
-ENV PORT 3000
-ENV NEXT_PUBLIC_API_URL=http://localhost:8000/api/v1
-ENV KEY_CLOAK_CLIENT_SECRET ""
+ENV PORT 8000
+ENV KEY_CLOAK_ISSUER=${KEY_CLOAK_ISSUER}
+ENV KEY_CLOAK_CLIENT_SECRET=${KEY_CLOAK_CLIENT_SECRET}
+ENV KEY_CLOAK_CLIENT_ID=${KEY_CLOAK_CLIENT_ID}
+ENV NEXTAUTH_URL=${NEXTAUTH_URL}
+
 CMD ["node", "server.js"]
diff --git a/next-env.d.ts b/next-env.d.ts
deleted file mode 100644
index 4f11a03dc6cc37f2b5105c08f2e7b24c603ab2f4..0000000000000000000000000000000000000000
--- a/next-env.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/// <reference types="next" />
-/// <reference types="next/image-types/global" />
-
-// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/next.config.js b/next.config.js
index e7e879c5b29d294bb3cf4cdca3c1b84de0c671b8..b6232b53dec6760ac1f0b0546ac7146bfd750258 100644
--- a/next.config.js
+++ b/next.config.js
@@ -4,4 +4,17 @@ module.exports = {
   i18n,
   transpilePackages: ["@refinedev/nextjs-router"],
   output: "standalone",
+  env: {
+    KEY_CLOAK_ISSUER: process.env.KEY_CLOAK_ISSUER,
+    KEY_CLOAK_CLIENT_SECRET: process.env.KEY_CLOAK_CLIENT_SECRET,
+    KEY_CLOAK_CLIENT_ID: process.env.KEY_CLOAK_CLIENT_ID,
+    PORT: process.env.PORT,
+    NEXTAUTH_URL: process.env.NEXTAUTH_URL,
+  },
+  eslint: {
+    ignoreDuringBuilds: true,
+  },
+  typescript: {
+    ignoreBuildErrors: true,
+  },
 };
diff --git a/package-lock.json b/package-lock.json
index 96e37c820e5ad19451f3d527f68a1b5017699b4a..00b8d68a9e0ec414abf10b17f66c0010c477968b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
         "@auth/unstorage-adapter": "^1.6.0",
         "@emotion/react": "^11.11.4",
         "@emotion/styled": "^11.11.5",
+        "@fontsource/roboto": "^5.1.0",
         "@mui/icons-material": "^5.15.19",
         "@mui/lab": "^5.0.0-alpha.85",
         "@mui/material": "^5.15.19",
@@ -25,18 +26,20 @@
         "@refinedev/nextjs-router": "^6.0.1",
         "@refinedev/react-hook-form": "^4.8.15",
         "@refinedev/simple-rest": "^5.0.3",
-        "next": "^13.0.6",
+        "eslint-config-next": "^14.2.4",
+        "next": "^14.2.4",
         "next-auth": "^4.24.6",
         "next-i18next": "^8.9.0",
         "nookies": "^2.5.2",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0",
+        "react": "^18.3.1",
+        "react-dom": "^18.3.1",
+        "react-json-view-lite": "^1.5.0",
         "styled-components": "^6.1.11",
         "unstorage": "^1.10.1"
       },
       "devDependencies": {
         "@next/eslint-plugin-next": "^14.1.0",
-        "@openapitools/openapi-generator-cli": "^2.9.0",
+        "@openapitools/openapi-generator-cli": "^2.7.0",
         "@types/node": "^18.0.0",
         "@types/react": "^18.0.0",
         "@types/react-dom": "^18.0.0",
@@ -1096,6 +1099,11 @@
       "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
       "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
     },
+    "node_modules/@fontsource/roboto": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.1.0.tgz",
+      "integrity": "sha512-cFRRC1s6RqPygeZ8Uw/acwVHqih8Czjt6Q0MwoUoDe9U3m4dH1HmNDRBZyqlMSFwgNAUKgFImncKdmDHyKpwdg=="
+    },
     "node_modules/@humanwhocodes/config-array": {
       "version": "0.11.14",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
@@ -1633,25 +1641,24 @@
       }
     },
     "node_modules/@nestjs/axios": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.1.tgz",
-      "integrity": "sha512-VlOZhAGDmOoFdsmewn8AyClAdGpKXQQaY1+3PGB+g6ceurGIdTxZgRX3VXc1T6Zs60PedWjg3A82TDOB05mrzQ==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.3.tgz",
+      "integrity": "sha512-h6TCn3yJwD6OKqqqfmtRS5Zo4E46Ip2n+gK1sqwzNBC+qxQ9xpCu+ODVRFur6V3alHSCSBxb3nNtt73VEdluyA==",
       "dev": true,
       "peerDependencies": {
         "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0",
         "axios": "^1.3.1",
-        "reflect-metadata": "^0.1.12",
         "rxjs": "^6.0.0 || ^7.0.0"
       }
     },
     "node_modules/@nestjs/common": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.3.0.tgz",
-      "integrity": "sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ==",
+      "version": "10.4.3",
+      "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.3.tgz",
+      "integrity": "sha512-4hbLd3XIJubHSylYd/1WSi4VQvG68KM/ECYpMDqA3k3J1/T17SAg40sDoq3ZoO5OZgU0xuNyjuISdOTjs11qVg==",
       "dev": true,
       "dependencies": {
         "iterare": "1.2.1",
-        "tslib": "2.6.2",
+        "tslib": "2.7.0",
         "uid": "2.0.2"
       },
       "funding": {
@@ -1661,7 +1668,7 @@
       "peerDependencies": {
         "class-transformer": "*",
         "class-validator": "*",
-        "reflect-metadata": "^0.1.12",
+        "reflect-metadata": "^0.1.12 || ^0.2.0",
         "rxjs": "^7.1.0"
       },
       "peerDependenciesMeta": {
@@ -1673,18 +1680,24 @@
         }
       }
     },
+    "node_modules/@nestjs/common/node_modules/tslib": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+      "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+      "dev": true
+    },
     "node_modules/@nestjs/core": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.3.0.tgz",
-      "integrity": "sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA==",
+      "version": "10.4.3",
+      "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.3.tgz",
+      "integrity": "sha512-6OQz+5C8mT8yRtfvE5pPCq+p6w5jDot+oQku1KzQ24ABn+lay1KGuJwcKZhdVNuselx+8xhdMxknZTA8wrGLIg==",
       "dev": true,
       "hasInstallScript": true,
       "dependencies": {
         "@nuxtjs/opencollective": "0.3.2",
         "fast-safe-stringify": "2.1.1",
         "iterare": "1.2.1",
-        "path-to-regexp": "3.2.0",
-        "tslib": "2.6.2",
+        "path-to-regexp": "3.3.0",
+        "tslib": "2.7.0",
         "uid": "2.0.2"
       },
       "funding": {
@@ -1696,7 +1709,7 @@
         "@nestjs/microservices": "^10.0.0",
         "@nestjs/platform-express": "^10.0.0",
         "@nestjs/websockets": "^10.0.0",
-        "reflect-metadata": "^0.1.12",
+        "reflect-metadata": "^0.1.12 || ^0.2.0",
         "rxjs": "^7.1.0"
       },
       "peerDependenciesMeta": {
@@ -1711,24 +1724,29 @@
         }
       }
     },
+    "node_modules/@nestjs/core/node_modules/tslib": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+      "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+      "dev": true
+    },
     "node_modules/@next/env": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz",
-      "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw=="
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz",
+      "integrity": "sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw=="
     },
     "node_modules/@next/eslint-plugin-next": {
-      "version": "14.1.3",
-      "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.3.tgz",
-      "integrity": "sha512-VCnZI2cy77Yaj3L7Uhs3+44ikMM1VD/fBMwvTBb3hIaTIuqa+DmG4dhUDq+MASu3yx97KhgsVJbsas0XuiKyww==",
-      "dev": true,
+      "version": "14.2.4",
+      "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.4.tgz",
+      "integrity": "sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA==",
       "dependencies": {
         "glob": "10.3.10"
       }
     },
     "node_modules/@next/swc-darwin-arm64": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz",
-      "integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz",
+      "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==",
       "cpu": [
         "arm64"
       ],
@@ -1741,9 +1759,9 @@
       }
     },
     "node_modules/@next/swc-darwin-x64": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz",
-      "integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz",
+      "integrity": "sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==",
       "cpu": [
         "x64"
       ],
@@ -1756,9 +1774,9 @@
       }
     },
     "node_modules/@next/swc-linux-arm64-gnu": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz",
-      "integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz",
+      "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==",
       "cpu": [
         "arm64"
       ],
@@ -1771,9 +1789,9 @@
       }
     },
     "node_modules/@next/swc-linux-arm64-musl": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz",
-      "integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz",
+      "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==",
       "cpu": [
         "arm64"
       ],
@@ -1786,9 +1804,9 @@
       }
     },
     "node_modules/@next/swc-linux-x64-gnu": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz",
-      "integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz",
+      "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==",
       "cpu": [
         "x64"
       ],
@@ -1801,9 +1819,9 @@
       }
     },
     "node_modules/@next/swc-linux-x64-musl": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz",
-      "integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz",
+      "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==",
       "cpu": [
         "x64"
       ],
@@ -1816,9 +1834,9 @@
       }
     },
     "node_modules/@next/swc-win32-arm64-msvc": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz",
-      "integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz",
+      "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==",
       "cpu": [
         "arm64"
       ],
@@ -1831,9 +1849,9 @@
       }
     },
     "node_modules/@next/swc-win32-ia32-msvc": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz",
-      "integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz",
+      "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==",
       "cpu": [
         "ia32"
       ],
@@ -1846,9 +1864,9 @@
       }
     },
     "node_modules/@next/swc-win32-x64-msvc": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz",
-      "integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz",
+      "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==",
       "cpu": [
         "x64"
       ],
@@ -1911,17 +1929,17 @@
       }
     },
     "node_modules/@openapitools/openapi-generator-cli": {
-      "version": "2.12.0",
-      "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.12.0.tgz",
-      "integrity": "sha512-1msjEK5y5zVNbDvbCQNY5Un7KUdhZ/2fhMGgToOQUF1gQOOHQVZ9ALXJkd9STb+wlV/1Cr/UVM56d85NOUMstA==",
+      "version": "2.13.9",
+      "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.9.tgz",
+      "integrity": "sha512-GJaWGcHmLsvj/G1mRDytm9PTDwRGSYUDTf1uA/2FYxQAb5sq4nkZz1tD4Z7qDlZ3xTYSTw4Z8BQUdlsnrA8rcw==",
       "dev": true,
       "hasInstallScript": true,
       "dependencies": {
-        "@nestjs/axios": "3.0.1",
-        "@nestjs/common": "10.3.0",
-        "@nestjs/core": "10.3.0",
+        "@nestjs/axios": "3.0.3",
+        "@nestjs/common": "10.4.3",
+        "@nestjs/core": "10.4.3",
         "@nuxtjs/opencollective": "0.3.2",
-        "axios": "1.6.5",
+        "axios": "1.7.4",
         "chalk": "4.1.2",
         "commander": "8.3.0",
         "compare-versions": "4.1.4",
@@ -1929,6 +1947,7 @@
         "console.table": "0.10.0",
         "fs-extra": "10.1.0",
         "glob": "7.2.3",
+        "https-proxy-agent": "7.0.4",
         "inquirer": "8.2.6",
         "lodash": "4.17.21",
         "reflect-metadata": "0.1.13",
@@ -1950,6 +1969,7 @@
       "version": "7.2.3",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
       "dev": true,
       "dependencies": {
         "fs.realpath": "^1.0.0",
@@ -2808,6 +2828,11 @@
         "react-dom": "^17.0.0 || ^18.0.0"
       }
     },
+    "node_modules/@rushstack/eslint-patch": {
+      "version": "1.10.3",
+      "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz",
+      "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg=="
+    },
     "node_modules/@sindresorhus/is": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
@@ -2819,11 +2844,17 @@
         "url": "https://github.com/sindresorhus/is?sponsor=1"
       }
     },
+    "node_modules/@swc/counter": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+      "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
+    },
     "node_modules/@swc/helpers": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
-      "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
+      "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
       "dependencies": {
+        "@swc/counter": "^0.1.3",
         "tslib": "^2.4.0"
       }
     },
@@ -2922,8 +2953,7 @@
     "node_modules/@types/json5": {
       "version": "0.0.29",
       "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
-      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
-      "dev": true
+      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
     },
     "node_modules/@types/mdast": {
       "version": "3.0.15",
@@ -3071,7 +3101,6 @@
       "version": "5.48.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz",
       "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==",
-      "dev": true,
       "dependencies": {
         "@typescript-eslint/scope-manager": "5.48.0",
         "@typescript-eslint/types": "5.48.0",
@@ -3098,7 +3127,6 @@
       "version": "5.48.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz",
       "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==",
-      "dev": true,
       "dependencies": {
         "@typescript-eslint/types": "5.48.0",
         "@typescript-eslint/visitor-keys": "5.48.0"
@@ -3115,7 +3143,6 @@
       "version": "5.48.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz",
       "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==",
-      "dev": true,
       "dependencies": {
         "@typescript-eslint/types": "5.48.0",
         "eslint-visitor-keys": "^3.3.0"
@@ -3287,7 +3314,6 @@
       "version": "5.48.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz",
       "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==",
-      "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
@@ -3300,7 +3326,6 @@
       "version": "5.48.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz",
       "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==",
-      "dev": true,
       "dependencies": {
         "@typescript-eslint/types": "5.48.0",
         "@typescript-eslint/visitor-keys": "5.48.0",
@@ -3327,7 +3352,6 @@
       "version": "5.48.0",
       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz",
       "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==",
-      "dev": true,
       "dependencies": {
         "@typescript-eslint/types": "5.48.0",
         "eslint-visitor-keys": "^3.3.0"
@@ -3531,6 +3555,18 @@
         "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
     },
+    "node_modules/agent-base": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+      "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
     "node_modules/ajv": {
       "version": "8.12.0",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
@@ -3658,11 +3694,18 @@
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
       "dev": true
     },
+    "node_modules/aria-query": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+      "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+      "dependencies": {
+        "deep-equal": "^2.0.5"
+      }
+    },
     "node_modules/array-buffer-byte-length": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
       "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.5",
         "is-array-buffer": "^3.0.4"
@@ -3680,15 +3723,15 @@
       "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
     },
     "node_modules/array-includes": {
-      "version": "3.1.7",
-      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
-      "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
-      "dev": true,
+      "version": "3.1.8",
+      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+      "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.2.0",
-        "es-abstract": "^1.22.1",
-        "get-intrinsic": "^1.2.1",
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-object-atoms": "^1.0.0",
+        "get-intrinsic": "^1.2.4",
         "is-string": "^1.0.7"
       },
       "engines": {
@@ -3710,7 +3753,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz",
       "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -3729,7 +3771,6 @@
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz",
       "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.5",
         "define-properties": "^1.2.1",
@@ -3748,7 +3789,6 @@
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz",
       "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.5",
         "define-properties": "^1.2.1",
@@ -3767,7 +3807,6 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
       "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -3785,7 +3824,6 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
       "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -3803,7 +3841,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz",
       "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -3815,7 +3852,6 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz",
       "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.5",
         "define-properties": "^1.2.1",
@@ -3828,7 +3864,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
       "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
-      "dev": true,
       "dependencies": {
         "array-buffer-byte-length": "^1.0.1",
         "call-bind": "^1.0.5",
@@ -3857,14 +3892,10 @@
         "node": ">=4"
       }
     },
-    "node_modules/asynciterator.prototype": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz",
-      "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==",
-      "dev": true,
-      "dependencies": {
-        "has-symbols": "^1.0.3"
-      }
+    "node_modules/ast-types-flow": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+      "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="
     },
     "node_modules/asynckit": {
       "version": "0.4.0",
@@ -3883,7 +3914,6 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
       "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
-      "dev": true,
       "dependencies": {
         "possible-typed-array-names": "^1.0.0"
       },
@@ -3894,16 +3924,32 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/axe-core": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz",
+      "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/axios": {
-      "version": "1.6.5",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz",
-      "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==",
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz",
+      "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==",
       "dependencies": {
-        "follow-redirects": "^1.15.4",
+        "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
         "proxy-from-env": "^1.1.0"
       }
     },
+    "node_modules/axobject-query": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz",
+      "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==",
+      "dependencies": {
+        "deep-equal": "^2.0.5"
+      }
+    },
     "node_modules/babel-core": {
       "version": "7.0.0-bridge.0",
       "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
@@ -3978,9 +4024,9 @@
       }
     },
     "node_modules/body-parser": {
-      "version": "1.20.2",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
-      "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+      "version": "1.20.3",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+      "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
       "dependencies": {
         "bytes": "3.1.2",
         "content-type": "~1.0.5",
@@ -3990,7 +4036,7 @@
         "http-errors": "2.0.0",
         "iconv-lite": "0.4.24",
         "on-finished": "2.4.1",
-        "qs": "6.11.0",
+        "qs": "6.13.0",
         "raw-body": "2.5.2",
         "type-is": "~1.6.18",
         "unpipe": "1.0.0"
@@ -4013,20 +4059,6 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
     },
-    "node_modules/body-parser/node_modules/qs": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-      "dependencies": {
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/boxen": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
@@ -4058,11 +4090,11 @@
       }
     },
     "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
       "dependencies": {
-        "fill-range": "^7.0.1"
+        "fill-range": "^7.1.1"
       },
       "engines": {
         "node": ">=8"
@@ -4908,6 +4940,59 @@
       "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
       "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
     },
+    "node_modules/damerau-levenshtein": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+      "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="
+    },
+    "node_modules/data-view-buffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+      "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+      "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-offset": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+      "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/date-fns": {
       "version": "2.30.0",
       "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
@@ -4983,6 +5068,37 @@
       "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
       "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA=="
     },
+    "node_modules/deep-equal": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
+      "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.0",
+        "call-bind": "^1.0.5",
+        "es-get-iterator": "^1.1.3",
+        "get-intrinsic": "^1.2.2",
+        "is-arguments": "^1.1.1",
+        "is-array-buffer": "^3.0.2",
+        "is-date-object": "^1.0.5",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.2",
+        "isarray": "^2.0.5",
+        "object-is": "^1.1.5",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.4",
+        "regexp.prototype.flags": "^1.5.1",
+        "side-channel": "^1.0.4",
+        "which-boxed-primitive": "^1.0.2",
+        "which-collection": "^1.0.1",
+        "which-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/deep-is": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -5028,7 +5144,6 @@
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
       "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
-      "dev": true,
       "dependencies": {
         "define-data-property": "^1.0.1",
         "has-property-descriptors": "^1.0.0",
@@ -5230,13 +5345,25 @@
       "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw=="
     },
     "node_modules/encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
       "engines": {
         "node": ">= 0.8"
       }
     },
+    "node_modules/enhanced-resolve": {
+      "version": "5.17.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
+      "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
+      "dependencies": {
+        "graceful-fs": "^4.2.4",
+        "tapable": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
     "node_modules/entities": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -5284,17 +5411,20 @@
       }
     },
     "node_modules/es-abstract": {
-      "version": "1.22.5",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz",
-      "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==",
-      "dev": true,
+      "version": "1.23.3",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+      "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
       "dependencies": {
         "array-buffer-byte-length": "^1.0.1",
         "arraybuffer.prototype.slice": "^1.0.3",
         "available-typed-arrays": "^1.0.7",
         "call-bind": "^1.0.7",
+        "data-view-buffer": "^1.0.1",
+        "data-view-byte-length": "^1.0.1",
+        "data-view-byte-offset": "^1.0.0",
         "es-define-property": "^1.0.0",
         "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
         "es-set-tostringtag": "^2.0.3",
         "es-to-primitive": "^1.2.1",
         "function.prototype.name": "^1.1.6",
@@ -5305,10 +5435,11 @@
         "has-property-descriptors": "^1.0.2",
         "has-proto": "^1.0.3",
         "has-symbols": "^1.0.3",
-        "hasown": "^2.0.1",
+        "hasown": "^2.0.2",
         "internal-slot": "^1.0.7",
         "is-array-buffer": "^3.0.4",
         "is-callable": "^1.2.7",
+        "is-data-view": "^1.0.1",
         "is-negative-zero": "^2.0.3",
         "is-regex": "^1.1.4",
         "is-shared-array-buffer": "^1.0.3",
@@ -5319,17 +5450,17 @@
         "object-keys": "^1.1.1",
         "object.assign": "^4.1.5",
         "regexp.prototype.flags": "^1.5.2",
-        "safe-array-concat": "^1.1.0",
+        "safe-array-concat": "^1.1.2",
         "safe-regex-test": "^1.0.3",
-        "string.prototype.trim": "^1.2.8",
-        "string.prototype.trimend": "^1.0.7",
-        "string.prototype.trimstart": "^1.0.7",
+        "string.prototype.trim": "^1.2.9",
+        "string.prototype.trimend": "^1.0.8",
+        "string.prototype.trimstart": "^1.0.8",
         "typed-array-buffer": "^1.0.2",
         "typed-array-byte-length": "^1.0.1",
         "typed-array-byte-offset": "^1.0.2",
-        "typed-array-length": "^1.0.5",
+        "typed-array-length": "^1.0.6",
         "unbox-primitive": "^1.0.2",
-        "which-typed-array": "^1.1.14"
+        "which-typed-array": "^1.1.15"
       },
       "engines": {
         "node": ">= 0.4"
@@ -5341,8 +5472,7 @@
     "node_modules/es-array-method-boxes-properly": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
-      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
-      "dev": true
+      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="
     },
     "node_modules/es-define-property": {
       "version": "1.0.0",
@@ -5363,27 +5493,55 @@
         "node": ">= 0.4"
       }
     },
+    "node_modules/es-get-iterator": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+      "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.3",
+        "has-symbols": "^1.0.3",
+        "is-arguments": "^1.1.1",
+        "is-map": "^2.0.2",
+        "is-set": "^2.0.2",
+        "is-string": "^1.0.7",
+        "isarray": "^2.0.5",
+        "stop-iteration-iterator": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/es-iterator-helpers": {
-      "version": "1.0.17",
-      "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz",
-      "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==",
-      "dev": true,
+      "version": "1.0.19",
+      "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
+      "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
       "dependencies": {
-        "asynciterator.prototype": "^1.0.0",
         "call-bind": "^1.0.7",
         "define-properties": "^1.2.1",
-        "es-abstract": "^1.22.4",
+        "es-abstract": "^1.23.3",
         "es-errors": "^1.3.0",
-        "es-set-tostringtag": "^2.0.2",
+        "es-set-tostringtag": "^2.0.3",
         "function-bind": "^1.1.2",
         "get-intrinsic": "^1.2.4",
         "globalthis": "^1.0.3",
         "has-property-descriptors": "^1.0.2",
-        "has-proto": "^1.0.1",
+        "has-proto": "^1.0.3",
         "has-symbols": "^1.0.3",
         "internal-slot": "^1.0.7",
         "iterator.prototype": "^1.1.2",
-        "safe-array-concat": "^1.1.0"
+        "safe-array-concat": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-object-atoms": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+      "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+      "dependencies": {
+        "es-errors": "^1.3.0"
       },
       "engines": {
         "node": ">= 0.4"
@@ -5393,7 +5551,6 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
       "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
-      "dev": true,
       "dependencies": {
         "get-intrinsic": "^1.2.4",
         "has-tostringtag": "^1.0.2",
@@ -5407,7 +5564,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
       "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
-      "dev": true,
       "dependencies": {
         "hasown": "^2.0.0"
       }
@@ -5416,7 +5572,6 @@
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
       "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
       "dependencies": {
         "is-callable": "^1.1.4",
         "is-date-object": "^1.0.1",
@@ -5520,6 +5675,31 @@
         "eslint": ">=6.0.0"
       }
     },
+    "node_modules/eslint-config-next": {
+      "version": "14.2.4",
+      "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.4.tgz",
+      "integrity": "sha512-Qr0wMgG9m6m4uYy2jrYJmyuNlYZzPRQq5Kvb9IDlYwn+7yq6W6sfMNFgb+9guM1KYwuIo6TIaiFhZJ6SnQ/Efw==",
+      "dependencies": {
+        "@next/eslint-plugin-next": "14.2.4",
+        "@rushstack/eslint-patch": "^1.3.3",
+        "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0",
+        "eslint-import-resolver-node": "^0.3.6",
+        "eslint-import-resolver-typescript": "^3.5.2",
+        "eslint-plugin-import": "^2.28.1",
+        "eslint-plugin-jsx-a11y": "^6.7.1",
+        "eslint-plugin-react": "^7.33.2",
+        "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705"
+      },
+      "peerDependencies": {
+        "eslint": "^7.23.0 || ^8.0.0",
+        "typescript": ">=3.3.1"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/eslint-config-standard": {
       "version": "17.1.0",
       "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
@@ -5697,7 +5877,6 @@
       "version": "0.3.9",
       "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
       "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
-      "dev": true,
       "dependencies": {
         "debug": "^3.2.7",
         "is-core-module": "^2.13.0",
@@ -5708,16 +5887,38 @@
       "version": "3.2.7",
       "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
       "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
       "dependencies": {
         "ms": "^2.1.1"
       }
     },
+    "node_modules/eslint-import-resolver-typescript": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
+      "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
+      "dependencies": {
+        "debug": "^4.3.4",
+        "enhanced-resolve": "^5.12.0",
+        "eslint-module-utils": "^2.7.4",
+        "fast-glob": "^3.3.1",
+        "get-tsconfig": "^4.5.0",
+        "is-core-module": "^2.11.0",
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+      },
+      "peerDependencies": {
+        "eslint": "*",
+        "eslint-plugin-import": "*"
+      }
+    },
     "node_modules/eslint-module-utils": {
       "version": "2.8.1",
       "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
       "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
-      "dev": true,
       "dependencies": {
         "debug": "^3.2.7"
       },
@@ -5734,7 +5935,6 @@
       "version": "3.2.7",
       "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
       "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
       "dependencies": {
         "ms": "^2.1.1"
       }
@@ -5763,7 +5963,6 @@
       "version": "2.29.1",
       "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
       "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
-      "dev": true,
       "dependencies": {
         "array-includes": "^3.1.7",
         "array.prototype.findlastindex": "^1.2.3",
@@ -5794,7 +5993,6 @@
       "version": "3.2.7",
       "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
       "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
       "dependencies": {
         "ms": "^2.1.1"
       }
@@ -5803,7 +6001,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
       "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-      "dev": true,
       "dependencies": {
         "esutils": "^2.0.2"
       },
@@ -5815,11 +6012,44 @@
       "version": "6.3.1",
       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "dev": true,
       "bin": {
         "semver": "bin/semver.js"
       }
     },
+    "node_modules/eslint-plugin-jsx-a11y": {
+      "version": "6.9.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz",
+      "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==",
+      "dependencies": {
+        "aria-query": "~5.1.3",
+        "array-includes": "^3.1.8",
+        "array.prototype.flatmap": "^1.3.2",
+        "ast-types-flow": "^0.0.8",
+        "axe-core": "^4.9.1",
+        "axobject-query": "~3.1.1",
+        "damerau-levenshtein": "^1.0.8",
+        "emoji-regex": "^9.2.2",
+        "es-iterator-helpers": "^1.0.19",
+        "hasown": "^2.0.2",
+        "jsx-ast-utils": "^3.3.5",
+        "language-tags": "^1.0.9",
+        "minimatch": "^3.1.2",
+        "object.fromentries": "^2.0.8",
+        "safe-regex-test": "^1.0.3",
+        "string.prototype.includes": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependencies": {
+        "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+      }
+    },
+    "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+    },
     "node_modules/eslint-plugin-n": {
       "version": "16.6.2",
       "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz",
@@ -5897,7 +6127,6 @@
       "version": "7.34.0",
       "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz",
       "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==",
-      "dev": true,
       "dependencies": {
         "array-includes": "^3.1.7",
         "array.prototype.findlast": "^1.2.4",
@@ -5925,11 +6154,21 @@
         "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
       }
     },
+    "node_modules/eslint-plugin-react-hooks": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
+      "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+      }
+    },
     "node_modules/eslint-plugin-react/node_modules/doctrine": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
       "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-      "dev": true,
       "dependencies": {
         "esutils": "^2.0.2"
       },
@@ -5941,7 +6180,6 @@
       "version": "2.0.0-next.5",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
       "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
-      "dev": true,
       "dependencies": {
         "is-core-module": "^2.13.0",
         "path-parse": "^1.0.7",
@@ -5958,7 +6196,6 @@
       "version": "6.3.1",
       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-      "dev": true,
       "bin": {
         "semver": "bin/semver.js"
       }
@@ -5983,7 +6220,6 @@
       "version": "3.4.3",
       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
       "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-      "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
@@ -6070,7 +6306,6 @@
       "version": "5.3.0",
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-      "dev": true,
       "engines": {
         "node": ">=4.0"
       }
@@ -6079,7 +6314,6 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -6120,36 +6354,36 @@
       }
     },
     "node_modules/express": {
-      "version": "4.19.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
-      "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+      "version": "4.21.0",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
+      "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
       "dependencies": {
         "accepts": "~1.3.8",
         "array-flatten": "1.1.1",
-        "body-parser": "1.20.2",
+        "body-parser": "1.20.3",
         "content-disposition": "0.5.4",
         "content-type": "~1.0.4",
         "cookie": "0.6.0",
         "cookie-signature": "1.0.6",
         "debug": "2.6.9",
         "depd": "2.0.0",
-        "encodeurl": "~1.0.2",
+        "encodeurl": "~2.0.0",
         "escape-html": "~1.0.3",
         "etag": "~1.8.1",
-        "finalhandler": "1.2.0",
+        "finalhandler": "1.3.1",
         "fresh": "0.5.2",
         "http-errors": "2.0.0",
-        "merge-descriptors": "1.0.1",
+        "merge-descriptors": "1.0.3",
         "methods": "~1.1.2",
         "on-finished": "2.4.1",
         "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
+        "path-to-regexp": "0.1.10",
         "proxy-addr": "~2.0.7",
-        "qs": "6.11.0",
+        "qs": "6.13.0",
         "range-parser": "~1.2.1",
         "safe-buffer": "5.2.1",
-        "send": "0.18.0",
-        "serve-static": "1.15.0",
+        "send": "0.19.0",
+        "serve-static": "1.16.2",
         "setprototypeof": "1.2.0",
         "statuses": "2.0.1",
         "type-is": "~1.6.18",
@@ -6174,23 +6408,9 @@
       "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
     },
     "node_modules/express/node_modules/path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
-    },
-    "node_modules/express/node_modules/qs": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
-      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
-      "dependencies": {
-        "side-channel": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
+      "version": "0.1.10",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+      "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
     },
     "node_modules/extend": {
       "version": "3.0.2",
@@ -6329,9 +6549,9 @@
       }
     },
     "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "version": "7.1.1",
+      "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"
       },
@@ -6348,12 +6568,12 @@
       }
     },
     "node_modules/finalhandler": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
-      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+      "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
       "dependencies": {
         "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
+        "encodeurl": "~2.0.0",
         "escape-html": "~1.0.3",
         "on-finished": "2.4.1",
         "parseurl": "~1.3.3",
@@ -6529,7 +6749,6 @@
       "version": "0.3.3",
       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
-      "dev": true,
       "dependencies": {
         "is-callable": "^1.1.3"
       }
@@ -6632,7 +6851,6 @@
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
       "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -6650,7 +6868,6 @@
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
       "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "dev": true,
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -6718,7 +6935,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
       "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.5",
         "es-errors": "^1.3.0",
@@ -6735,7 +6951,6 @@
       "version": "4.7.3",
       "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz",
       "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==",
-      "dev": true,
       "dependencies": {
         "resolve-pkg-maps": "^1.0.0"
       },
@@ -6776,11 +6991,6 @@
         "node": ">=10.13.0"
       }
     },
-    "node_modules/glob-to-regexp": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
-      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
-    },
     "node_modules/glob/node_modules/brace-expansion": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@@ -6822,7 +7032,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
       "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
-      "dev": true,
       "dependencies": {
         "define-properties": "^1.1.3"
       },
@@ -6987,7 +7196,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
       "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "dev": true,
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -7037,7 +7245,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
       "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
-      "dev": true,
       "dependencies": {
         "has-symbols": "^1.0.3"
       },
@@ -7158,6 +7365,19 @@
         "node": ">= 0.12.0"
       }
     },
+    "node_modules/https-proxy-agent": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
+      "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+      "dev": true,
+      "dependencies": {
+        "agent-base": "^7.0.2",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
     "node_modules/human-signals": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -7319,7 +7539,6 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
       "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
-      "dev": true,
       "dependencies": {
         "es-errors": "^1.3.0",
         "hasown": "^2.0.0",
@@ -7367,11 +7586,25 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
+    "node_modules/is-arguments": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/is-array-buffer": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
       "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "get-intrinsic": "^1.2.1"
@@ -7392,7 +7625,6 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
       "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
-      "dev": true,
       "dependencies": {
         "has-tostringtag": "^1.0.0"
       },
@@ -7407,7 +7639,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
       "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dev": true,
       "dependencies": {
         "has-bigints": "^1.0.1"
       },
@@ -7430,7 +7661,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
       "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "has-tostringtag": "^1.0.0"
@@ -7461,7 +7691,6 @@
       "version": "1.2.7",
       "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
       "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       },
@@ -7480,11 +7709,24 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/is-data-view": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+      "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+      "dependencies": {
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/is-date-object": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
       "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dev": true,
       "dependencies": {
         "has-tostringtag": "^1.0.0"
       },
@@ -7538,7 +7780,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
       "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2"
       },
@@ -7558,7 +7799,6 @@
       "version": "1.0.10",
       "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
       "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
-      "dev": true,
       "dependencies": {
         "has-tostringtag": "^1.0.0"
       },
@@ -7618,7 +7858,6 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
       "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       },
@@ -7630,7 +7869,6 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
       "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       },
@@ -7650,7 +7888,6 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
       "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dev": true,
       "dependencies": {
         "has-tostringtag": "^1.0.0"
       },
@@ -7704,7 +7941,6 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
       "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "has-tostringtag": "^1.0.0"
@@ -7720,7 +7956,6 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
       "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       },
@@ -7732,7 +7967,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
       "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.7"
       },
@@ -7758,7 +7992,6 @@
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
       "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dev": true,
       "dependencies": {
         "has-tostringtag": "^1.0.0"
       },
@@ -7773,7 +8006,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
       "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
       "dependencies": {
         "has-symbols": "^1.0.2"
       },
@@ -7788,7 +8020,6 @@
       "version": "1.1.13",
       "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
       "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
-      "dev": true,
       "dependencies": {
         "which-typed-array": "^1.1.14"
       },
@@ -7814,7 +8045,6 @@
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
       "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       },
@@ -7826,7 +8056,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
       "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2"
       },
@@ -7838,7 +8067,6 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
       "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.7",
         "get-intrinsic": "^1.2.4"
@@ -7881,8 +8109,7 @@
     "node_modules/isarray": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
-      "dev": true
+      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
     },
     "node_modules/isexe": {
       "version": "2.0.0",
@@ -7910,7 +8137,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
       "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
-      "dev": true,
       "dependencies": {
         "define-properties": "^1.2.1",
         "get-intrinsic": "^1.2.1",
@@ -8119,7 +8345,6 @@
       "version": "3.3.5",
       "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
       "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
-      "dev": true,
       "dependencies": {
         "array-includes": "^3.1.6",
         "array.prototype.flat": "^1.3.1",
@@ -8163,6 +8388,22 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/language-subtag-registry": {
+      "version": "0.3.23",
+      "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
+      "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="
+    },
+    "node_modules/language-tags": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+      "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+      "dependencies": {
+        "language-subtag-registry": "^0.3.20"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
     "node_modules/levn": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -8599,9 +8840,12 @@
       }
     },
     "node_modules/merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+      "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
     "node_modules/merge-stream": {
       "version": "2.0.0",
@@ -8718,11 +8962,11 @@
       }
     },
     "node_modules/micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
       "dependencies": {
-        "braces": "^3.0.2",
+        "braces": "^3.0.3",
         "picomatch": "^2.3.1"
       },
       "engines": {
@@ -8881,37 +9125,38 @@
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
     },
     "node_modules/next": {
-      "version": "13.5.6",
-      "resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz",
-      "integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==",
+      "version": "14.2.13",
+      "resolved": "https://registry.npmjs.org/next/-/next-14.2.13.tgz",
+      "integrity": "sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==",
       "dependencies": {
-        "@next/env": "13.5.6",
-        "@swc/helpers": "0.5.2",
+        "@next/env": "14.2.13",
+        "@swc/helpers": "0.5.5",
         "busboy": "1.6.0",
-        "caniuse-lite": "^1.0.30001406",
+        "caniuse-lite": "^1.0.30001579",
+        "graceful-fs": "^4.2.11",
         "postcss": "8.4.31",
-        "styled-jsx": "5.1.1",
-        "watchpack": "2.4.0"
+        "styled-jsx": "5.1.1"
       },
       "bin": {
         "next": "dist/bin/next"
       },
       "engines": {
-        "node": ">=16.14.0"
+        "node": ">=18.17.0"
       },
       "optionalDependencies": {
-        "@next/swc-darwin-arm64": "13.5.6",
-        "@next/swc-darwin-x64": "13.5.6",
-        "@next/swc-linux-arm64-gnu": "13.5.6",
-        "@next/swc-linux-arm64-musl": "13.5.6",
-        "@next/swc-linux-x64-gnu": "13.5.6",
-        "@next/swc-linux-x64-musl": "13.5.6",
-        "@next/swc-win32-arm64-msvc": "13.5.6",
-        "@next/swc-win32-ia32-msvc": "13.5.6",
-        "@next/swc-win32-x64-msvc": "13.5.6"
+        "@next/swc-darwin-arm64": "14.2.13",
+        "@next/swc-darwin-x64": "14.2.13",
+        "@next/swc-linux-arm64-gnu": "14.2.13",
+        "@next/swc-linux-arm64-musl": "14.2.13",
+        "@next/swc-linux-x64-gnu": "14.2.13",
+        "@next/swc-linux-x64-musl": "14.2.13",
+        "@next/swc-win32-arm64-msvc": "14.2.13",
+        "@next/swc-win32-ia32-msvc": "14.2.13",
+        "@next/swc-win32-x64-msvc": "14.2.13"
       },
       "peerDependencies": {
         "@opentelemetry/api": "^1.1.0",
+        "@playwright/test": "^1.41.2",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
         "sass": "^1.3.0"
@@ -8920,6 +9165,9 @@
         "@opentelemetry/api": {
           "optional": true
         },
+        "@playwright/test": {
+          "optional": true
+        },
         "sass": {
           "optional": true
         }
@@ -9180,11 +9428,25 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/object-is": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+      "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/object-keys": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       }
@@ -9193,7 +9455,6 @@
       "version": "4.1.5",
       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
       "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.5",
         "define-properties": "^1.2.1",
@@ -9211,7 +9472,6 @@
       "version": "1.1.7",
       "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
       "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -9222,14 +9482,14 @@
       }
     },
     "node_modules/object.fromentries": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
-      "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
-      "dev": true,
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+      "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.2.0",
-        "es-abstract": "^1.22.1"
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-object-atoms": "^1.0.0"
       },
       "engines": {
         "node": ">= 0.4"
@@ -9242,7 +9502,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz",
       "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==",
-      "dev": true,
       "dependencies": {
         "array.prototype.filter": "^1.0.3",
         "call-bind": "^1.0.5",
@@ -9255,7 +9514,6 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz",
       "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==",
-      "dev": true,
       "dependencies": {
         "define-properties": "^1.2.0",
         "es-abstract": "^1.22.1"
@@ -9268,7 +9526,6 @@
       "version": "1.1.7",
       "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
       "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -9582,9 +9839,9 @@
       }
     },
     "node_modules/path-to-regexp": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz",
-      "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
+      "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==",
       "dev": true
     },
     "node_modules/path-type": {
@@ -9788,7 +10045,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
       "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       }
@@ -9948,9 +10204,9 @@
       }
     },
     "node_modules/qs": {
-      "version": "6.12.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.0.tgz",
-      "integrity": "sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==",
+      "version": "6.13.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+      "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
       "dependencies": {
         "side-channel": "^1.0.6"
       },
@@ -10025,9 +10281,9 @@
       }
     },
     "node_modules/react": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+      "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==",
       "dependencies": {
         "loose-envify": "^1.1.0"
       },
@@ -10036,15 +10292,15 @@
       }
     },
     "node_modules/react-dom": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+      "version": "18.3.1",
+      "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",
-        "scheduler": "^0.23.0"
+        "scheduler": "^0.23.2"
       },
       "peerDependencies": {
-        "react": "^18.2.0"
+        "react": "^18.3.1"
       }
     },
     "node_modules/react-hook-form": {
@@ -10088,6 +10344,18 @@
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
       "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
     },
+    "node_modules/react-json-view-lite": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz",
+      "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "react": "^16.13.1 || ^17.0.0 || ^18.0.0"
+      }
+    },
     "node_modules/react-markdown": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-6.0.3.tgz",
@@ -10230,7 +10498,6 @@
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz",
       "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.5",
         "define-properties": "^1.2.1",
@@ -10256,7 +10523,6 @@
       "version": "1.5.2",
       "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
       "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.6",
         "define-properties": "^1.2.1",
@@ -10370,7 +10636,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
       "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
-      "dev": true,
       "funding": {
         "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
       }
@@ -10473,7 +10738,6 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
       "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.7",
         "get-intrinsic": "^1.2.4",
@@ -10510,7 +10774,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
       "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.6",
         "es-errors": "^1.3.0",
@@ -10550,9 +10813,9 @@
       }
     },
     "node_modules/scheduler": {
-      "version": "0.23.0",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
-      "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+      "version": "0.23.2",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+      "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
       "dependencies": {
         "loose-envify": "^1.1.0"
       }
@@ -10627,9 +10890,9 @@
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "node_modules/send": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
-      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+      "version": "0.19.0",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+      "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
       "dependencies": {
         "debug": "2.6.9",
         "depd": "2.0.0",
@@ -10662,20 +10925,28 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
     },
+    "node_modules/send/node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
     "node_modules/send/node_modules/ms": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
     },
     "node_modules/serve-static": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
-      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+      "version": "1.16.2",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+      "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
       "dependencies": {
-        "encodeurl": "~1.0.2",
+        "encodeurl": "~2.0.0",
         "escape-html": "~1.0.3",
         "parseurl": "~1.3.3",
-        "send": "0.18.0"
+        "send": "0.19.0"
       },
       "engines": {
         "node": ">= 0.8.0"
@@ -10706,7 +10977,6 @@
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
       "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
-      "dev": true,
       "dependencies": {
         "define-data-property": "^1.1.4",
         "es-errors": "^1.3.0",
@@ -10885,6 +11155,17 @@
       "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
       "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg=="
     },
+    "node_modules/stop-iteration-iterator": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+      "dependencies": {
+        "internal-slot": "^1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/streamsearch": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
@@ -10936,11 +11217,19 @@
         "node": ">=8"
       }
     },
+    "node_modules/string.prototype.includes": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz",
+      "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==",
+      "dependencies": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
     "node_modules/string.prototype.matchall": {
       "version": "4.0.10",
       "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
       "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.2.0",
@@ -10957,14 +11246,14 @@
       }
     },
     "node_modules/string.prototype.trim": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
-      "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
-      "dev": true,
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+      "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.2.0",
-        "es-abstract": "^1.22.1"
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.0",
+        "es-object-atoms": "^1.0.0"
       },
       "engines": {
         "node": ">= 0.4"
@@ -10974,28 +11263,29 @@
       }
     },
     "node_modules/string.prototype.trimend": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
-      "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
-      "dev": true,
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+      "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.2.0",
-        "es-abstract": "^1.22.1"
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
       },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
     },
     "node_modules/string.prototype.trimstart": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
-      "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
-      "dev": true,
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+      "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.2.0",
-        "es-abstract": "^1.22.1"
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
       },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -11228,6 +11518,14 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/tapable": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/temp": {
       "version": "0.9.4",
       "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz",
@@ -11387,7 +11685,6 @@
       "version": "3.15.0",
       "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
       "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
-      "dev": true,
       "dependencies": {
         "@types/json5": "^0.0.29",
         "json5": "^1.0.2",
@@ -11399,7 +11696,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
       "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
-      "dev": true,
       "dependencies": {
         "minimist": "^1.2.0"
       },
@@ -11416,7 +11712,6 @@
       "version": "3.21.0",
       "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
       "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-      "dev": true,
       "dependencies": {
         "tslib": "^1.8.1"
       },
@@ -11430,8 +11725,7 @@
     "node_modules/tsutils/node_modules/tslib": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-      "dev": true
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
     },
     "node_modules/type-check": {
       "version": "0.4.0",
@@ -11472,7 +11766,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
       "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.7",
         "es-errors": "^1.3.0",
@@ -11486,7 +11779,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
       "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.7",
         "for-each": "^0.3.3",
@@ -11505,7 +11797,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
       "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
-      "dev": true,
       "dependencies": {
         "available-typed-arrays": "^1.0.7",
         "call-bind": "^1.0.7",
@@ -11522,10 +11813,9 @@
       }
     },
     "node_modules/typed-array-length": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz",
-      "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==",
-      "dev": true,
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+      "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
       "dependencies": {
         "call-bind": "^1.0.7",
         "for-each": "^0.3.3",
@@ -11587,7 +11877,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
       "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "dev": true,
       "dependencies": {
         "call-bind": "^1.0.2",
         "has-bigints": "^1.0.2",
@@ -12037,18 +12326,6 @@
       "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz",
       "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q=="
     },
-    "node_modules/watchpack": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
-      "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
-      "dependencies": {
-        "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.1.2"
-      },
-      "engines": {
-        "node": ">=10.13.0"
-      }
-    },
     "node_modules/wcwidth": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
@@ -12089,7 +12366,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
       "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
       "dependencies": {
         "is-bigint": "^1.0.1",
         "is-boolean-object": "^1.1.0",
@@ -12105,7 +12381,6 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
       "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
-      "dev": true,
       "dependencies": {
         "function.prototype.name": "^1.1.5",
         "has-tostringtag": "^1.0.0",
@@ -12131,7 +12406,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
       "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
-      "dev": true,
       "dependencies": {
         "is-map": "^2.0.3",
         "is-set": "^2.0.3",
@@ -12161,7 +12435,6 @@
       "version": "1.1.15",
       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
       "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
-      "dev": true,
       "dependencies": {
         "available-typed-arrays": "^1.0.7",
         "call-bind": "^1.0.7",
@@ -12241,9 +12514,9 @@
       }
     },
     "node_modules/ws": {
-      "version": "8.17.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
-      "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
+      "version": "8.17.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+      "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
       "engines": {
         "node": ">=10.0.0"
       },
diff --git a/package.json b/package.json
index 3c7729c97d27be8d5576ef0babbf588dfbee7dba..3c4c6a389294ea00ecda66673d8a90e80823178f 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
     "@auth/unstorage-adapter": "^1.6.0",
     "@emotion/react": "^11.11.4",
     "@emotion/styled": "^11.11.5",
+    "@fontsource/roboto": "^5.1.0",
     "@mui/icons-material": "^5.15.19",
     "@mui/lab": "^5.0.0-alpha.85",
     "@mui/material": "^5.15.19",
@@ -32,18 +33,20 @@
     "@refinedev/nextjs-router": "^6.0.1",
     "@refinedev/react-hook-form": "^4.8.15",
     "@refinedev/simple-rest": "^5.0.3",
-    "next": "^13.0.6",
+    "eslint-config-next": "^14.2.4",
+    "next": "^14.2.4",
     "next-auth": "^4.24.6",
     "next-i18next": "^8.9.0",
     "nookies": "^2.5.2",
-    "react": "^18.0.0",
-    "react-dom": "^18.0.0",
+    "react": "^18.3.1",
+    "react-dom": "^18.3.1",
+    "react-json-view-lite": "^1.5.0",
     "styled-components": "^6.1.11",
     "unstorage": "^1.10.1"
   },
   "devDependencies": {
     "@next/eslint-plugin-next": "^14.1.0",
-    "@openapitools/openapi-generator-cli": "^2.9.0",
+    "@openapitools/openapi-generator-cli": "^2.7.0",
     "@types/node": "^18.0.0",
     "@types/react": "^18.0.0",
     "@types/react-dom": "^18.0.0",
diff --git a/pages/_app.tsx b/pages/_app.tsx
index 29745ff3bf6bb502fbfa141da2081b5a4d030ff2..95ccab9ac156c1148daa609b5fa2cbf0d1b71e2a 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -1,4 +1,4 @@
-import { AuthBindings, Refine } from '@refinedev/core'
+import { AuthProvider, Refine } from '@refinedev/core'
 import { RefineKbar, RefineKbarProvider } from '@refinedev/kbar'
 import {
   RefineSnackbarProvider,
@@ -14,7 +14,7 @@ import {
 import type { NextPage } from 'next'
 import { SessionProvider, signIn, signOut, useSession } from 'next-auth/react'
 import { AppProps } from 'next/app'
-import { useRouter } from 'next/router'
+import { usePathname } from 'next/navigation'
 import React from 'react'
 
 import { Header } from '@components/header'
@@ -42,9 +42,8 @@ type AppPropsWithLayout = AppProps & {
 const App = (props: React.PropsWithChildren) => {
   const { t, i18n } = useTranslation()
 
-  const { data, status } = useSession()
-  const router = useRouter()
-  const { to } = router.query
+  const { data, status, error } = useSession()
+  const to = usePathname()
 
   const i18nProvider = {
     translate: (key: string, params: object) => t(key, params),
@@ -56,38 +55,29 @@ const App = (props: React.PropsWithChildren) => {
     return <span>loading...</span>
   }
 
-  const authProvider: AuthBindings = {
+  const authProvider: AuthProvider = {
     login: async () => {
-      // console.log('login')
-      signIn('keycloak', {
-        callbackUrl: to ? to.toString() : '/about',
-        redirect: true
-      })
+      await signIn('keycloak')
 
       return {
         success: true
       }
     },
     logout: async () => {
-      // console.log('logout')
-      signOut({
-        redirect: true,
-        callbackUrl: '/about'
-      })
+      signOut()
 
       return {
-        success: true
+        success: true,
       }
     },
     onError: async (error) => {
-      // console.log('onError')
-      console.error(error)
+      // console.error("onError", error)
       return {
         error
       }
     },
     check: async () => {
-      // console.log('check')
+      // console.log("check", data, error, status)
       if (status === 'unauthenticated') {
         return {
           authenticated: false,
@@ -95,17 +85,32 @@ const App = (props: React.PropsWithChildren) => {
         }
       }
 
+      if(data?.error) {
+        return {
+          error: error,
+          authenticated: false,
+          redirectTo: '/login'
+        }
+      }
+
       return {
         authenticated: true
       }
     },
     getPermissions: async () => {
-      // console.log('getPermissions')
       return null
     },
     getIdentity: async () => {
-      // console.log('getIdentity', data)
-      if (data?.user) {
+      // console.log("getIdentity", data, error, status);
+      if(data?.error) {
+        return {
+          error: error,
+          authenticated: false,
+          redirectTo: '/login'
+        }
+      }
+
+      if (data?.user && status === "authenticated") {
         const { user } = data
         return {
           name: user.name,
@@ -212,7 +217,6 @@ function MyApp ({
 
   return (
     <SessionProvider session={session}
-            refetchInterval={10}
             refetchOnWindowFocus={true}
     >
       <App>{renderComponent()}</App>
diff --git a/pages/api/auth/[...nextauth].ts b/pages/api/auth/[...nextauth].ts
index b8a6f9166acafc23e24405cd23724c8c03c4cbc9..b5cb5b65f1fbf45f47d7bce655181507acaf089d 100644
--- a/pages/api/auth/[...nextauth].ts
+++ b/pages/api/auth/[...nextauth].ts
@@ -2,18 +2,18 @@ import NextAuth from 'next-auth'
 import KeycloakProvider from 'next-auth/providers/keycloak'
 
 const secretSessionKey = process.env.SECRET_SESSION_KEY || 'UItTuD1HcGXIj8ZfHUswhYdNd40Lc325R8VlxQPUoR0='
-const clientId = 'gwdg-fdoman-test'
+const clientId = process.env.KEY_CLOAK_CLIENT_ID || 'gwdg-fdoman-test'
 const clientSecret = process.env.KEY_CLOAK_CLIENT_SECRET || ''
-const issuer = 'https://keycloak.sso.gwdg.de/auth/realms/academiccloud'
+const issuer = process.env.KEY_CLOAK_ISSUER || 'https://keycloak.sso.gwdg.de/auth/realms/academiccloud'
 
 async function refreshAccessToken (token: any) {
   try {
     const url = issuer + '/protocol/openid-connect/token'
     const params = new URLSearchParams({
-      client_id: clientId,
-      client_secret: clientSecret,
+      client_id: clientId!,
+      client_secret: clientSecret!,
       grant_type: 'refresh_token',
-      refresh_token: token.refreshToken
+      refresh_token: token.refresh_token!,
     }).toString()
 
     const response = await fetch(url, {
@@ -24,26 +24,29 @@ async function refreshAccessToken (token: any) {
       body: params
     })
 
-    const refreshedTokens = await response.json()
+    const new_tokens = await response.json()
 
     if (!response.ok) {
-      throw refreshedTokens
+      throw new_tokens
     }
-    // console.log('### refreshToken', new Date().toISOString(), refreshedTokens, '### ### ###')
+    // console.log('### new_tokens', new Date().toISOString(), new_tokens, '### ### ###')
 
     return {
       ...token,
-      accessToken: refreshedTokens.access_token,
-      accessTokenExpires: Date.now() + refreshedTokens.expires_in * 1000,
-      refreshToken: refreshedTokens.refresh_token ?? token.refreshToken // Fall back to old refresh token
+      access_token: new_tokens.access_token,
+      expires_at: Math.floor(Date.now()/1000 + new_tokens.expires_in),
+      refresh_token: new_tokens.refresh_token ?? token.refresh_token // Fall back to old refresh token
     }
   } catch (error) {
     // console.log('### RefreshAccessTokenError', error, '### ### ###')
+    throw new Error("RefreshTokenError")
 
+    /*
     return {
       ...token,
       error: 'RefreshAccessTokenError'
     }
+    */
   }
 }
 
@@ -52,7 +55,6 @@ export const authOptions = {
   session: {
     maxAge: 172800 // 48h
   },
-  debug: true,
   // Configure one or more authentication providers
   providers: [
     // !!! Should be stored in .env file.
@@ -79,36 +81,37 @@ export const authOptions = {
       // console.log('### session', session, user, token, '### ### ###')
 
       session.user = token.user
-      session.accessToken = token.accessToken
+      session.access_token = token.access_token
       session.error = token.error
 
       return session
     },
+    /*
     async redirect ({ url, baseUrl }: any) {
       // console.log('### redirect', url, baseUrl, '### ### ###')
-      return Promise.resolve(url)
+      return baseUrl
+      //Promise.resolve(url)
     },
+    */
     async jwt ({ token, user, account, profile, isNewUser }: any) {
       // console.log('### jwt', token, user, account, profile, isNewUser, '### ### ###')
 
       // Initial sign in
       if (account && user) {
         return {
-          lastRefresh: Date.now(),
-          accessToken: account.access_token,
-          accessTokenExpires: account.expires_at,
-          refreshToken: account.refresh_token,
+          access_token: account.access_token,
+          expires_at: account.expires_at,
+          refresh_token: account.refresh_token,
           user
         }
-      }
-
-      if (token.lastRefresh + 60000 > Date.now()) {
-        // return if last refresh is 10 seconds or younger
+      } else if (Date.now() < token.expires_at * 1000) {
         return token
-      }
+      } else {
+        if (!token.refresh_token) throw new TypeError("Missing refresh_token")
 
-      // Access token has expired, try to update it
-      return refreshAccessToken(token)
+        // Access token has expired, try to update it
+        return refreshAccessToken(token)
+      }
     }
   },
   secret: secretSessionKey
diff --git a/pages/fdo/show/[prefix]/[suffix].tsx b/pages/fdo/show/[prefix]/[suffix].tsx
index 8412158bd4dc5b874112f05e9d7316b3daadd3e5..dbcbaef6b442c10210bc02015f0435e087665927 100644
--- a/pages/fdo/show/[prefix]/[suffix].tsx
+++ b/pages/fdo/show/[prefix]/[suffix].tsx
@@ -3,9 +3,9 @@ import React from 'react'
 import { ErrorComponent } from '../../../../src/components/ErrorComponent'
 import { GetServerSideProps } from 'next'
 import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
-import { useShow, useTranslate, useParsed, useCustom, useApiUrl } from '@refinedev/core'
+import { useTranslate, useParsed, useCustom, useApiUrl } from '@refinedev/core'
 import { Show } from '@refinedev/mui'
-import { Typography } from '@mui/material'
+import Typography from '@mui/material/Typography'
 import CircularProgress from '@mui/material/CircularProgress'
 import Box from '@mui/material/Box'
 import Stack from '@mui/material/Stack'
@@ -19,12 +19,45 @@ import MenuList from '@mui/material/MenuList'
 import MenuItem from '@mui/material/MenuItem'
 import ListItemText from '@mui/material/ListItemText'
 import ListItemIcon from '@mui/material/ListItemIcon'
-import ContentPaste from '@mui/icons-material/ContentPaste'
-import Cloud from '@mui/icons-material/Cloud'
 import VerifiedIcon from '@mui/icons-material/Verified'
 import ReportIcon from '@mui/icons-material/Report'
+import { styled } from '@mui/material/styles'
+import EvebsDetails from '@components/Evebs'
+import { FDO_COMMUNITY_TYPE_EVEBS as EVEBS, HANDLE_SYSTEM_BASE_URI as HS_BASE_URI } from '../../../../src/constants'
 
-const resolvePid = (pid: string) => `https://hdl.handle.net/${pid}`
+const resolvePid = (pid: string) => `${HS_BASE_URI}/${pid}`
+
+const getFdoDetails = (data: object) => {
+  if(!data) return {};
+
+  const fdoDetails = {
+    pid: data["pid"],
+    isFdo: data["isFdo"],
+    typePid: data["fdoType"],
+    profilePid: data["fdoProfile"],
+    dataPid: data["dataPid"],
+    metadataPid: data["metadataPid"],
+    repository: undefined,
+    attributes: data["attributes"],
+  }
+  if(data.attributes) {
+    fdoDetails["repository"] = data.attributes["0.TYPE/DOIPService"]
+  }
+
+  return fdoDetails
+}
+
+
+const Item = styled(Paper)(({ theme }) => ({
+  backgroundColor: '#fff',
+  ...theme.typography.body2,
+  padding: theme.spacing(1),
+  textAlign: 'left',
+  color: theme.palette.text.secondary,
+  ...theme.applyStyles('dark', {
+    backgroundColor: '#1A2027'
+  })
+}))
 
 const ShowFDO = () => {
   const { params } = useParsed()
@@ -47,83 +80,96 @@ const ShowFDO = () => {
   const handleUrl = resolvePid(showId)
   const dataPid = data?.data?.dataPid
   const metadataPid = data?.data?.metadataPid
-  const profilePid = '21.T11969/141bf451b18a79d0fe66'
+
+  const fdoDetails = getFdoDetails(data?.data);
+  const isEvebs = fdoDetails?.typePid === EVEBS
 
   return (
     <Show
       isLoading={isLoading}
-      title={<Typography variant="h5">{ showId }{ !isLoading && (data?.data?.isFdo ? <Chip label="FDO" color="success" variant="outlined" /> : <Chip label="Not an FDO" color="error" variant="outlined" />)}</Typography>}
+      title={<Typography variant="h5">{ showId }
+
+        { !isLoading && (data?.data?.isFdo ? <Chip label="FDO" color="success" variant="outlined" sx={{marginLeft: 1}}/> : <Chip label="Not an FDO" color="error" variant="outlined" sx={{marginLeft: 1}}/>)}
+        </Typography>}
     >
       { isLoading && <Box sx={{ textAlign: 'center' }}><CircularProgress/></Box>}
 
-    <Paper sx={{ width: 320, maxWidth: '100%' }}>
-      <MenuList>
-        <MenuItem>
-          <ListItemIcon>
-            <RadioButtonUncheckedIcon/>
-          </ListItemIcon>
-          <ListItemText>
-              <Link href={`${handleUrl}?noredirect`}>Handle Record</Link>
-          </ListItemText>
-        </MenuItem>
-        <MenuItem>
-          <ListItemIcon>
-            <StorageIcon/>
-          </ListItemIcon>
-          <ListItemText>
-            <Link href={handleUrl}>To Repository</Link>
-          </ListItemText>
-        </MenuItem>
-        { data?.data?.isFdo && (<>
-          <Divider />
-          <MenuItem>
-            <ListItemIcon>
-              { dataPid
-                ? <VerifiedIcon color="success"/>
-                : <ReportIcon color="error"/>
-              }
-            </ListItemIcon>
-            <ListItemText>
-              { metadataPid
-                ? <Link href={resolvePid(dataPid)}>Data</Link>
-                : 'Data not available.'
-              }
-            </ListItemText>
-          </MenuItem>
-          <MenuItem>
-            <ListItemIcon>
-              { metadataPid
-                ? <VerifiedIcon color="success"/>
-                : <ReportIcon color="error"/>
-              }
-            </ListItemIcon>
-            <ListItemText>
-              { metadataPid
-                ? <Link href={resolvePid(metadataPid)}>Metadata</Link>
-                : 'Metadata not available.'
-              }
-            </ListItemText>
-          </MenuItem>
-          <MenuItem>
-            <ListItemIcon>
-              { profilePid
-                ? <VerifiedIcon color="success"/>
-                : <ReportIcon color="error"/>
-              }
-            </ListItemIcon>
-            <ListItemText>
-              { profilePid
-                ? <Link href={resolvePid(profilePid)}>Profile</Link>
-                : 'Profile not available.'
-              }
-            </ListItemText>
-          </MenuItem>
-        </>)}
-      </MenuList>
-    </Paper>
+      <div>
+        <Stack
+        direction="row"
+        // divider={<Divider orientation="vertical" flexItem />}
+        spacing={2}
+        >
+          <Item>
+            <MenuList>
+              <MenuItem>
+                <ListItemIcon>
+                  <RadioButtonUncheckedIcon/>
+                </ListItemIcon>
+                <ListItemText>
+                    <Link href={`${handleUrl}?noredirect`}>Handle Record</Link>
+                </ListItemText>
+              </MenuItem>
+              <MenuItem>
+                <ListItemIcon>
+                  <StorageIcon/>
+                </ListItemIcon>
+                <ListItemText>
+                  <Link href={handleUrl}>To Repository</Link>
+                </ListItemText>
+              </MenuItem>
+                { data?.data?.isFdo && (<>
+                  <Divider />
+              <MenuItem>
+                <ListItemIcon>
+                  { dataPid
+                    ? <VerifiedIcon color="success"/>
+                    : <ReportIcon color="error"/>
+                  }
+                </ListItemIcon>
+                <ListItemText>
+                  { metadataPid
+                    ? <Link href={resolvePid(dataPid)}>Data</Link>
+                    : 'Data not available.'
+                  }
+                </ListItemText>
+              </MenuItem>
+              <MenuItem>
+                <ListItemIcon>
+                  { metadataPid
+                    ? <VerifiedIcon color="success"/>
+                    : <ReportIcon color="error"/>
+                  }
+                </ListItemIcon>
+                <ListItemText>
+                  { metadataPid
+                    ? <Link href={resolvePid(metadataPid)}>Metadata</Link>
+                    : 'Metadata not available.'
+                  }
+                </ListItemText>
+              </MenuItem>
+              <MenuItem>
+                <ListItemIcon>
+                  { fdoDetails.profilePid
+                    ? <VerifiedIcon color="success"/>
+                    : <ReportIcon color="error"/>
+                  }
+                </ListItemIcon>
+                <ListItemText>
+                  { fdoDetails.profilePid
+                    ? <Link href={resolvePid(fdoDetails.profilePid)}>Profile</Link>
+                    : 'Profile not available.'
+                  }
+                </ListItemText>
+              </MenuItem>
+              </>)}
+            </MenuList>
+          </Item>
 
+          { isEvebs && <EvebsDetails {...fdoDetails} showJson={true}/> }
+        </Stack>
+      </div><br/><br/>
     </Show>
-
   )
 }
 
diff --git a/pages/fdo/show/[prefix]/sandbox.tsx b/pages/fdo/show/[prefix]/sandbox.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..6b66b8c802d60b914226fef4afeeea6708eea84a
--- /dev/null
+++ b/pages/fdo/show/[prefix]/sandbox.tsx
@@ -0,0 +1,175 @@
+import React from 'react'
+import { ErrorComponent } from '../../../../src/components/ErrorComponent'
+import { GetServerSideProps } from 'next'
+import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
+import { useShow, useTranslate, useParsed, useCustom, useApiUrl } from '@refinedev/core'
+import { Show } from '@refinedev/mui'
+import { Typography } from '@mui/material'
+import CircularProgress from '@mui/material/CircularProgress'
+import AssignmentIcon from '@mui/icons-material/Assignment'
+import Avatar from '@mui/material/Avatar'
+import { blue } from '@mui/material/colors'
+import Box from '@mui/material/Box'
+import Stack from '@mui/material/Stack'
+import Chip from '@mui/material/Chip'
+import Link from '@mui/material/Link'
+import StorageIcon from '@mui/icons-material/Storage'
+import Paper from '@mui/material/Paper'
+import RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked'
+import Divider from '@mui/material/Divider'
+import MenuList from '@mui/material/MenuList'
+import MenuItem from '@mui/material/MenuItem'
+import ListItemText from '@mui/material/ListItemText'
+import ListItemIcon from '@mui/material/ListItemIcon'
+import VerifiedIcon from '@mui/icons-material/Verified'
+import ReportIcon from '@mui/icons-material/Report'
+import { styled, ThemeProvider } from '@mui/material/styles'
+import Details from '../../../../src/components/fdos/details'
+
+const resolvePid = (pid: string) => `https://hdl.handle.net/${pid}`
+
+const ShowFDO = () => {
+  const { params } = useParsed()
+  const showId = `${params?.prefix}/${params?.suffix}`
+  const apiUrl = useApiUrl()
+  const t = useTranslate()
+  const { data, isLoading, isError, error } = useCustom({
+    url: `${apiUrl}/fdo/${showId}`,
+    method: 'get',
+    errorNotification: () => false,
+    queryOptions: {
+      retry: false
+    }
+  })
+
+  if (isError) {
+    return <ErrorComponent message={t('fdo.show.handle_not_found', 'Handle not found.')} />
+  }
+  const displayName = 'FDO-Name'
+  const genInfo = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore voluptua.'
+  const handleUrl = resolvePid(showId)
+  const dataPid = data?.data?.dataPid
+  const metadataPid = data?.data?.metadataPid
+  const profilePid = '21.T11969/141bf451b18a79d0fe66'
+  const Item = styled(Paper)(({ theme }) => ({
+    backgroundColor: '#fff',
+    ...theme.typography.body2,
+    padding: theme.spacing(1),
+    textAlign: 'center',
+    color: theme.palette.text.secondary,
+    ...theme.applyStyles('dark', {
+      backgroundColor: '#1A2027'
+    })
+  }))
+
+  return (
+    <Show
+      isLoading={isLoading}
+      title={<Typography variant="h5">{ showId }{ !isLoading && (data?.data?.isFdo ? <Chip label="FDO" color="success" variant="outlined" /> : <Chip label="Not an FDO" color="error" variant="outlined" />)}</Typography>}
+    >
+      { isLoading && <Box sx={{ textAlign: 'center' }}><CircularProgress/></Box>}
+
+      <div>
+        <Stack
+        direction="row"
+        // divider={<Divider orientation="vertical" flexItem />}
+        spacing={2}
+        >
+          <Item>
+            <MenuList>
+              <MenuItem>
+                <ListItemIcon>
+                  <RadioButtonUncheckedIcon/>
+                </ListItemIcon>
+                <ListItemText>
+                    <Link href={`${handleUrl}?noredirect`}>Handle Record</Link>
+                </ListItemText>
+              </MenuItem>
+              <MenuItem>
+                <ListItemIcon>
+                  <StorageIcon/>
+                </ListItemIcon>
+                <ListItemText>
+                  <Link href={handleUrl}>To Repository</Link>
+                </ListItemText>
+              </MenuItem>
+                { data?.data?.isFdo && (<>
+                  <Divider />
+              <MenuItem>
+                <ListItemIcon>
+                  { dataPid
+                    ? <VerifiedIcon color="success"/>
+                    : <ReportIcon color="error"/>
+                  }
+                </ListItemIcon>
+                <ListItemText>
+                  { metadataPid
+                    ? <Link href={resolvePid(dataPid)}>Data</Link>
+                    : 'Data not available.'
+                  }
+                </ListItemText>
+              </MenuItem>
+              <MenuItem>
+                <ListItemIcon>
+                  { metadataPid
+                    ? <VerifiedIcon color="success"/>
+                    : <ReportIcon color="error"/>
+                  }
+                </ListItemIcon>
+                <ListItemText>
+                  { metadataPid
+                    ? <Link href={resolvePid(metadataPid)}>Metadata</Link>
+                    : 'Metadata not available.'
+                  }
+                </ListItemText>
+              </MenuItem>
+              <MenuItem>
+                <ListItemIcon>
+                  { profilePid
+                    ? <VerifiedIcon color="success"/>
+                    : <ReportIcon color="error"/>
+                  }
+                </ListItemIcon>
+                <ListItemText>
+                  { profilePid
+                    ? <Link href={resolvePid(profilePid)}>Profile</Link>
+                    : 'Profile not available.'
+                  }
+                </ListItemText>
+              </MenuItem>
+              </>)}
+            </MenuList>
+          </Item>
+
+          <Item sx={{ width: '50%' }} >
+            <Stack direction="row" spacing={3}>
+              <Avatar sx={{ bgcolor: blue[500] }} variant="rounded">
+                <AssignmentIcon />
+              </Avatar>
+              <Typography variant="h5" gutterBottom> {displayName} </Typography>
+            </Stack><br/>
+            <Typography variant="subtitle1" gutterBottom sx={{ display: 'block', marginLeft: '10px' }}> {genInfo} </Typography>
+            <br/>
+            <Box>
+            <Details/>
+            </Box>
+          </Item>
+        </Stack>
+      </div><br/><br/>
+    </Show>
+  )
+}
+
+export default ShowFDO
+
+export const getServerSideProps: GetServerSideProps<{}> = async (context) => {
+  const translateProps = await serverSideTranslations(context.locale ?? 'en', [
+    'common'
+  ])
+
+  return {
+    props: {
+      ...translateProps
+    }
+  }
+}
diff --git a/pages/index.tsx b/pages/index.tsx
index eac2fa426fc855ca58b79385d7e044397558012c..29b8bd97d9a51d5be611e977c1b05464de36a7f8 100644
--- a/pages/index.tsx
+++ b/pages/index.tsx
@@ -1,70 +1,102 @@
-import Button from '@mui/material/Button'
+// import * as React from 'react'
+import React, { useContext } from 'react'
+import { useRouter } from 'next/router'
+import { experimentalStyled as styled } from '@mui/material/styles'
+import AppBar from '@mui/material/AppBar'
+import Box from '@mui/material/Box'
+import Toolbar from '@mui/material/Toolbar'
+import Typography from '@mui/material/Typography'
+import Paper from '@mui/material/Paper'
+import Avatar from '@mui/material/Avatar'
+import IconButton from '@mui/material/IconButton'
+import DarkModeOutlined from '@mui/icons-material/DarkModeOutlined'
+import LightModeOutlined from '@mui/icons-material/LightModeOutlined'
+import { ColorModeContext } from '@contexts'
+import FormControl from '@mui/material/FormControl'
+import MenuItem from '@mui/material/MenuItem'
+import Select from '@mui/material/Select'
 import Stack from '@mui/material/Stack'
-import Item from '@mui/material/ListItem'
-import { styled, alpha } from '@mui/material/styles'
-import InputBase from '@mui/material/InputBase'
-import SearchIcon from '@mui/icons-material/Search'
-import Grid from '@mui/material/Grid'
+import Link from 'next/link'
+import ContentArea from '@components/ContentArea'
 
-const Search = styled('div')(({ theme }) => ({
-  position: 'relative',
-  borderRadius: theme.shape.borderRadius,
-  backgroundColor: alpha(theme.palette.common.white, 0.15),
-  '&:hover': {
-    backgroundColor: alpha(theme.palette.common.white, 0.25)
-  },
-  marginRight: theme.spacing(2),
-  marginLeft: 0,
-  width: '100%',
-  [theme.breakpoints.up('sm')]: {
-    marginLeft: theme.spacing(3),
-    width: 'auto'
-  }
-}))
-
-const SearchIconWrapper = styled('div')(({ theme }) => ({
-  padding: theme.spacing(0, 2),
-  height: '100%',
-  position: 'absolute',
-  pointerEvents: 'none',
-  display: 'flex',
-  alignItems: 'center',
-  justifyContent: 'center'
-}))
-
-const StyledInputBase = styled(InputBase)(({ theme }) => ({
-  color: 'inherit',
-  '& .MuiInputBase-input': {
-    padding: theme.spacing(1, 1, 1, 0),
-    // vertical padding + font size from searchIcon
-    paddingLeft: `calc(1em + ${theme.spacing(4)})`,
-    transition: theme.transitions.create('width'),
-    width: '100%',
-    [theme.breakpoints.up('md')]: {
-      width: '20ch'
-    }
-  }
+const Item = styled(Paper)(({ theme }) => ({
+  backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
+  ...theme.typography.body2,
+  padding: theme.spacing(2),
+  textAlign: 'center',
+  color: theme.palette.text.secondary
 }))
 
 export default function Index () {
-  const info = ('This is the FDO Manager. The hardware and infrastructure for this test instance are provided by GWDG. IndiScale is responsible for the architecture and implementation.')
-  return (
-      <Grid container direction="column" justifyContent="center" alignItems="center">
-
-            <Stack direction="column" spacing={2} width="350px">
-                <Item><h1>FDO-Manager</h1></Item>
-                <Item>{info}</Item>
-                <Item><Button variant="contained" >Create FDO</Button></Item>
-                <Item><Search>
-                    <SearchIconWrapper>
-                    <SearchIcon />
-                    </SearchIconWrapper>
-                    <StyledInputBase
-                      placeholder="Search…" inputProps={{ 'aria-label': 'search' }}/>
-                    </Search></Item>
+  const { mode, setMode } = useContext(ColorModeContext)
+  const { locale: currentLocale, locales, pathname, query } = useRouter()
 
-            </Stack>
-      </Grid>
+  return (
+    <Box sx={{ flexGrow: 1 }}>
+      <AppBar position="static">
+        <Toolbar>
+          <Avatar
+              alt="FDO logo graphic"
+              src="images/logo-fdo-white.png">
+          </Avatar>
+          <Typography
+            variant="h6"
+            noWrap
+            component="div"
+            marginLeft={2}
+            sx={{ flexGrow: 1, display: { xs: 'none', sm: 'block' } }}>
+            FDO MANAGER
+          </Typography>
+          { /*
+          <Stack
+            direction="row"
+            width="80%"
+            justifyContent="flex-end"
+            alignItems="center"
+            gap="14px">
+            <FormControl sx={{ minWidth: 64 }}>
+              <Select
+                disableUnderline
+                defaultValue={currentLocale}
+                inputProps={{ 'aria-label': 'Without label' }}
+                variant="standard"
+                sx={{
+                  color: 'inherit',
+                  '& .MuiSvgIcon-root': { color: 'inherit' },
+                  '& .MuiStack-root > .MuiTypography-root': { display: { xs: 'none', sm: 'block' } }
+                }} >
+                    {[...(locales ?? [])].sort().map((lang: string) => (
+                      // @ts-expect-error
+                    <MenuItem
+                      component={Link}
+                      href={{ pathname, query }}
+                      locale={lang}
+                      selected={currentLocale === lang}
+                      key={lang}
+                      defaultValue={lang}
+                      value={lang} >
+                        <Typography>
+                         {lang === 'en' ? 'English' : 'German'}
+                        </Typography>
+                    </MenuItem>
+                    ))}
+              </Select>
+            </FormControl>
+          </Stack>
+          */}
+          <Stack marginLeft={2}>
+            <IconButton
+              color="inherit"
+              onClick={() => {
+                setMode()
+              }} >
+              {mode === 'dark' ? <LightModeOutlined /> : <DarkModeOutlined />}
+            </IconButton>
+          </Stack>
+        </Toolbar>
+      </AppBar>
+     <ContentArea/>
+    </Box>
   )
 }
 
diff --git a/pages/login/index.tsx b/pages/login/index.tsx
index 775128b1948fbff0e6c9981d659c4602892fee2e..606a795ccc659e80becdd744944a6f7531a9f77d 100644
--- a/pages/login/index.tsx
+++ b/pages/login/index.tsx
@@ -74,11 +74,16 @@ export const getServerSideProps: GetServerSideProps<{}> = async (context) => {
     'common'
   ])
 
+  // console.log("login", context, session);
+  const destination = context?.query?.to
+
   if (session) {
     return {
-      props: {},
+      props: {
+        ...translateProps
+      },
       redirect: {
-        destination: '/',
+        destination: destination || '/',
         permanent: false
       }
     }
diff --git a/public/images/FDO-Atom.png b/public/images/FDO-Atom.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1661fc9b0ee8ebd9bc2b4798971e15fe57181c8
Binary files /dev/null and b/public/images/FDO-Atom.png differ
diff --git a/public/images/aas.png b/public/images/aas.png
new file mode 100644
index 0000000000000000000000000000000000000000..7835ceb192ab1b44a1fd49b64f88be511115066a
Binary files /dev/null and b/public/images/aas.png differ
diff --git a/public/images/cordra-primary-blue.png b/public/images/cordra-primary-blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..dfa6327016871be44dd393cdde5b21a2572f33f5
Binary files /dev/null and b/public/images/cordra-primary-blue.png differ
diff --git a/public/images/eclipse-logo.png b/public/images/eclipse-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..5373443fba7405286e51b8530b8139aa045df778
Binary files /dev/null and b/public/images/eclipse-logo.png differ
diff --git a/public/images/la_logo.png b/public/images/la_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..88cc3aea679dcd9d2f86962caa0cb6103308e300
Binary files /dev/null and b/public/images/la_logo.png differ
diff --git a/public/images/logo-fdo-img.png b/public/images/logo-fdo-img.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7724eabfa1bac9db5db2852d343aec293f0b219
Binary files /dev/null and b/public/images/logo-fdo-img.png differ
diff --git a/public/images/logo-fdo-scal.svg b/public/images/logo-fdo-scal.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7e34f10d39dae2ed3919bf20ca73cae18d1d82ce
--- /dev/null
+++ b/public/images/logo-fdo-scal.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 169 172">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #1976d2;
+        stroke-width: 0px;
+      }
+    </style>
+  </defs>
+  <g id="FDO_Logo" data-name="FDO Logo">
+    <g>
+      <path class="cls-1" d="M56.0192501,86.9711941c0-16.1425178,13.2075127-29.3500305,29.3500305-29.3500305,8.071264,0,15.4087665,2.935,20.5450254,8.8050051l10.2725178-10.2725127c-7.3375127-8.0712589-18.3437716-13.2075127-30.817533-13.2075127-24.2137767,0-44.0250457,19.811269-44.0250457,44.0250457,0,12.4737665,5.1362538,23.4800254,13.2075127,31.5512792l10.2725076-10.2725076c-5.1362538-5.87-8.8050051-13.2075076-8.8050152-21.2787665Z"/>
+      <path class="cls-1" d="M95.6417881,76.6986865c-2.2012436-2.9350051-5.87-4.4025076-10.2725076-4.4025076-8.0712589,0-14.6750152,6.6037563-14.6750152,14.6750152,0,4.4025076,1.4675025,8.0712589,4.4025076,10.2725076l10.2725076-10.2725076,10.2725076-10.2725076Z"/>
+      <path class="cls-1" d="M33.2729759,139.0675038l10.2725127-10.2725076c-10.2725127-11.0062589-16.876269-25.6812843-16.876269-41.8238021,0-32.2850356,26.4150254-58.7000609,58.7000609-58.7000609,16.1425178,0,30.8175432,6.6037563,41.8238021,16.876269l10.2725076-10.2725127c-13.2075229-13.2075133-31.5512843-21.2787709-52.0963097-21.2787709C45.0129861,13.5961185,11.9942043,46.6149022,11.9942043,86.9711941c0,20.5450254,8.0712589,38.8887868,21.2787716,52.0963097Z"/>
+    </g>
+    <path class="cls-1" d="M71.1245395,141.8207726l18.4481862,1.5513049-2.5787866,12.2283671c-.5701653,1.7221042-2.1562343,2.9608671-3.5686453,2.7871988l-9.180671-1.1287526c-1.8089282.1360249-3.3573742-1.8465512-3.1837211-3.2589622,0,0,.0636428-12.179156.0636377-12.179156Z"/>
+    <path class="cls-1" d="M119.744003,132.1068015l12.5780845-13.5843333,8.04997,9.5593381c1.0062488,1.5093681,1.0062488,3.5218657,0,4.5281043l-6.5406019,6.5405917c-1.0062488,1.5093681-3.5218657,1.5093681-4.5281043.5031295,0,0-9.5593483-7.5468405-9.5593483-7.5468304Z"/>
+    <path class="cls-1" d="M142.7870343,86.5680994l-3.3362634-18.2102036,12.4768441-.7150924c1.8113292.0990632,3.422365,1.3051781,3.6248153,2.7137535l1.3159828,9.1557093c.6052143,1.710099-.9024242,3.7238887-2.3109894,3.9263491,0,0-11.7703894,3.1294892-11.7703894,3.1294841Z"/>
+    <circle class="cls-1" cx="85.3692805" cy="86.9711941" r="15.0172039"/>
+    <path class="cls-1" d="M129.1380256,87.2240713c-.0000102,24.2261278-19.7567421,44.1615844-43.7666594,44.1615743-11.5248679,0-22.4053521-5.1574409-30.8196187-12.8631773l-11.0062589,10.2725178c11.0071542,11.1241133,26.445954,17.8431958,42.0247161,17.8432059,32.2019149.0000102,58.7000711-26.7372427,58.7000813-59.2297494.0000102-15.6890725-6.0902139-31.1599811-17.0772136-42.261048l-11.0062589,11.0062563c8.0724238,8.2577921,12.951212,19.4636882,12.951212,31.0704204Z"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/public/images/logo-fdo-white.png b/public/images/logo-fdo-white.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f5236f101440bba0c1e797c4a283746fa71b707
Binary files /dev/null and b/public/images/logo-fdo-white.png differ
diff --git a/public/images/mds.png b/public/images/mds.png
new file mode 100755
index 0000000000000000000000000000000000000000..2fd011830cd3b3c6d2128709c22b6f34b2476512
Binary files /dev/null and b/public/images/mds.png differ
diff --git a/public/images/rwth.png b/public/images/rwth.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbef134bfb837d425c6439c8a5f13fb9717c72af
Binary files /dev/null and b/public/images/rwth.png differ
diff --git a/public/images/techno4.png b/public/images/techno4.png
new file mode 100644
index 0000000000000000000000000000000000000000..1845e2a3867026092292b826dd5580e5555deae2
Binary files /dev/null and b/public/images/techno4.png differ
diff --git a/public/images/techno4a.svg b/public/images/techno4a.svg
new file mode 100644
index 0000000000000000000000000000000000000000..081aeaa2634aa3bf5bc21b8b49537d63b6213a62
--- /dev/null
+++ b/public/images/techno4a.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1837.5871 1039.94"><defs><style>.cls-1{fill:#cdd6e0;}.cls-2,.cls-3,.cls-4,.cls-5,.cls-6{stroke:#000;}.cls-2,.cls-3,.cls-5,.cls-6{stroke-miterlimit:8.0042;}.cls-2,.cls-4,.cls-5{fill:#fff;}.cls-2,.cls-6{stroke-width:1.5px;}.cls-7{fill:#ebccb2;}.cls-3,.cls-5{stroke-width:5.9973px;}.cls-3,.cls-8,.cls-6,.cls-9{fill:none;}.cls-10{fill:#40596b;}.cls-11{fill:#f4feff;}.cls-12{fill:#334a5e;}.cls-13{fill:#ff7058;}.cls-14{fill:#1976d2;}.cls-15{fill:#006ed4;}.cls-4{stroke-miterlimit:10;stroke-width:.5px;}.cls-16{fill:#acb3ba;}.cls-8{stroke-width:32px;}.cls-8,.cls-9{stroke:#c5e0e0;stroke-miterlimit:11.3;}.cls-9{stroke-width:16px;}.cls-17{fill:#ffd15c;}</style></defs><g id="Background"><g id="layer1"><path id="path110" class="cls-9" d="M615.2212,527.6162h612.1075"/><path id="path110-1" class="cls-9" d="M208.3095,435.5061l69.2005-108.897"/><path id="path110-1-4" class="cls-9" d="M200.0537,198.7638l63.9868,46.9534"/><path id="path110-1-0" class="cls-9" d="M612.1601,198.8488l-39.1281-90.4658"/><path id="path110-1-7" class="cls-9" d="M916.8758,99.27L916.226.0524"/><path id="path110-1-2" class="cls-9" d="M1746.1399,86.8651l87.6168-47.7836"/><path id="path110-1-26" class="cls-9" d="M1647.9987,399.2005l125.8108-.8303"/><path id="path110-1-6" class="cls-9" d="M1315.8611,959.9709l59.0872,75.019"/><path id="path110-1-9" class="cls-9" d="M535.7544,1028.7469l9.3737-119.3994"/><path id="path110-1-09" class="cls-9" d="M.1779,509.069l119.7145-2.663"/><path id="path110-47" class="cls-9" d="M376.4524,264.0038l196.9254-23.5627"/><path id="path110-47-6" class="cls-9" d="M692.3775,227.9914l160.1302-61.9512"/><path id="path110-47-6-2" class="cls-9" d="M915.1795,597.6844l.4573-373.9213"/><path id="path110-6" class="cls-9" d="M247.5005,493.674l254.4258,19.4187"/><path id="path110-7" class="cls-9" d="M502.1977,806.7361l-298.9012-256.8409"/><path id="path110-2" class="cls-9" d="M915.1478,865.2986l3.3596-148.6021"/><path id="path110-74" class="cls-9" d="M968.8609,688.1276l257.6348,189.3244"/><path id="path110-0" class="cls-9" d="M1308.1747,870.9287l268.3467-419.2889"/><path id="path110-68" class="cls-9" d="M974.4621,136.1161l644.4672-19.0147"/><path id="path110-3" class="cls-9" d="M1612.2367,335.278l63.0668-155.7382"/><path id="path110-9" class="cls-9" d="M981.1325,158.0733l548.9222,219.0807"/><path id="path110-4" class="cls-9" d="M593.0401,484.1079l270.3478-293.2736"/><path id="path110-4-2" class="cls-9" d="M968.2264,188.5902l275.6065,306.536"/><path id="path56-5-6" class="cls-9" d="M867.3734,936.0617l-268.4363-355.914"/><path id="path56-5-6-2" class="cls-9" d="M1241.2062,581.6933l-276.4327,354.2684"/><g id="g174"><circle id="path173" class="cls-8" cx="553.3006" cy="527.6162" r="54.1605"/><circle id="path174" class="cls-7" cx="553.3006" cy="527.6162" r="30.5156"/></g><g id="g174-0"><circle id="path173-9" class="cls-8" cx="1276.8842" cy="527.6162" r="54.1605"/><circle id="path174-3" class="cls-7" cx="1276.8842" cy="527.6162" r="30.5156"/><circle id="path174-3-2" class="cls-7" cx="1586.4339" cy="394.9222" r="30.5156"/><circle id="path174-3-3" class="cls-7" cx="313.434" cy="271.9222" r="30.5156"/><circle id="path174-3-4" class="cls-7" cx="1276.8842" cy="915.9222" r="30.5156"/></g><g id="g174-0-6"><circle id="path173-9-2" class="cls-8" cx="917.1555" cy="154.0496" r="54.1605"/></g><g id="g174-0-6-7"><circle id="path173-9-2-9" class="cls-8" cx="313.434" cy="271.9222" r="54.1605"/></g><g id="g174-0-6-2"><circle id="path173-9-2-3" class="cls-8" cx="638.434" cy="243.9222" r="54.1605"/></g><g id="g174-0-6-9"><circle id="path173-9-2-2" class="cls-8" cx="916.434" cy="658.9222" r="54.1605"/></g><g id="g174-0-6-97"><circle id="path173-9-2-36" class="cls-8" cx="544.434" cy="846.9222" r="54.1605"/></g><g id="g174-0-6-93"><circle id="path173-9-2-1" class="cls-8" cx="184.434" cy="494.9222" r="54.1605"/></g><g id="g174-0-6-78"><circle id="path173-9-2-4" class="cls-8" cx="1586.4339" cy="394.9222" r="54.1605"/></g><g id="g174-0-6-3"><circle id="path173-9-2-6" class="cls-8" cx="1682.4339" cy="120.9222" r="54.1605"/></g><g id="g174-0-6-6"><circle id="path173-9-2-32" class="cls-8" cx="1276.434" cy="915.9222" r="54.1605"/></g></g><g id="laptop"><path id="path71" class="cls-1" d="M1053.433,1020.8834c-1.1582,1.673-2.8311,5.7911-5.1476,5.7911h-263.9438c-1.673,0-3.9894-3.9894-5.1476-5.7911,0,0-3.9894,12.6117,5.1476,12.6117h263.9438c8.6222.5148,5.1476-12.6117,5.1476-12.6117Z"/><path id="path72" class="cls-16" d="M1025.8932,970.9516h-219.1596c-3.4747,0-6.8206,2.8312-8.6223,6.3059l-18.4027,41.3096c-1.1582,4.6328.5148,8.6222,4.6328,8.6222h263.9438c3.9894,0,6.3059-3.9894,4.6328-8.6222l-18.4028-41.3096c-1.1582-3.4747-5.1476-6.3059-8.6222-6.3059h0Z"/><polygon id="polygon72" class="cls-1" points="888.8381 996.8183 939.2847 996.8183 945.5905 1018.0523 881.8888 1018.0523 888.8381 996.8183"/><path id="path73" class="cls-12" d="M1019.5874,970.9516h-206.5478c-6.3059,0-11.4535-5.1476-11.4535-11.4535v-136.5404c0-6.3059,5.1476-11.4535,11.4535-11.4535h206.5478c6.3059,0,11.4535,5.1476,11.4535,11.4535v136.5404c0,6.3059-5.1476,11.4535-11.4535,11.4535Z"/><rect id="rect77" class="cls-13" x="942.1159" y="913.1043" width="67.6911" height="12.0969"/><g id="g76"><rect id="rect75" class="cls-15" x="871.3118" y="937.9882" width="80.3028" height="12.0969"/><rect id="rect76" class="cls-15" x="963.5827" y="937.9882" width="48.7737" height="12.0969"/></g><rect id="rect73" class="cls-10" x="813.683" y="824.1159" width="204.875" height="134.8674"/><rect id="rect74" class="cls-17" x="823.3347" y="884.9865" width="32.6874" height="12.0969"/><rect id="rect78" class="cls-1" x="903.7662" y="921.6632" width="61.9" height="12.0969"/><g id="g80"><rect id="rect79" class="cls-13" x="977.1197" y="921.6632" width="32.6874" height="12.0969"/><rect id="rect80" class="cls-13" x="822.3052" y="848.181" width="43.626" height="12.0969"/></g><rect id="rect82" class="cls-1" x="877.8994" y="848.181" width="85.4504" height="12.0969"/><rect class="cls-11" x="813.683" y="824.1159" width="204.875" height="134.8674"/><rect id="rect81" class="cls-14" x="933.1076" y="855.9384" width="77.2142" height="4.3395"/><g id="FDO_Logo"><path class="cls-14" d="M852.1886,873.4864c0-7.7891,6.3729-14.1621,14.1621-14.1621,3.8946,0,7.4351,1.4162,9.9135,4.2486l4.9567-4.9567c-3.5405-3.8946-8.8513-6.3729-14.8702-6.3729-11.6837,0-21.2431,9.5594-21.2431,21.2431,0,6.0189,2.4784,11.3297,6.3729,15.2242l4.9567-4.9567c-2.4784-2.8324-4.2486-6.3729-4.2486-10.2675Z"/><path class="cls-14" d="M871.3075,868.5297c-1.0622-1.4162-2.8324-2.1243-4.9567-2.1243-3.8946,0-7.081,3.1865-7.081,7.081,0,2.1243.7081,3.8946,2.1243,4.9567l4.9567-4.9567,4.9567-4.9567Z"/><path class="cls-14" d="M841.213,898.6241l4.9567-4.9567c-4.9567-5.3108-8.1432-12.3918-8.1432-20.181,0-15.5783,12.7459-28.3242,28.3242-28.3242,7.7891,0,14.8702,3.1865,20.181,8.1432l4.9567-4.9567c-6.3729-6.3729-15.2242-10.2675-25.1377-10.2675-19.4729,0-35.4052,15.9323-35.4052,35.4052,0,9.9135,3.8946,18.7648,10.2675,25.1377Z"/><path class="cls-14" d="M859.4773,899.9526l8.9017.7485-1.2443,5.9005c-.2751.831-1.0404,1.4287-1.722,1.3449l-4.4299-.5447c-.8729.0656-1.62-.891-1.5362-1.5725l.0307-5.8767Z"/><path class="cls-14" d="M882.9374,895.2654l6.0692-6.5548,3.8843,4.6126c.4855.7283.4855,1.6994,0,2.1849l-3.156,3.156c-.4855.7283-1.6994.7283-2.1849.2428l-4.6126-3.6415Z"/><path class="cls-14" d="M894.0562,873.2919l-1.6098-8.7869,6.0204-.345c.874.0478,1.6514.6298,1.7491,1.3094l.635,4.4178c.292.8252-.4354,1.7969-1.1151,1.8946l-5.6795,1.5101Z"/><circle class="cls-14" cx="866.3507" cy="873.4864" r="7.2462"/><path class="cls-14" d="M887.4702,873.6084c0,11.6897-9.5331,21.309-21.1185,21.309-5.561,0-10.8111-2.4886-14.8712-6.2068l-5.3108,4.9567c5.3112,5.3677,12.7608,8.6098,20.2779,8.6098,15.5382,0,28.3242-12.9014,28.3242-28.5798,0-7.5704-2.9387-15.0354-8.2402-20.392l-5.3108,5.3108c3.8951,3.9846,6.2493,9.3917,6.2493,14.9922Z"/></g><circle class="cls-4" cx="991.2419" cy="884.4477" r="14.1223"/><circle class="cls-7" cx="991.2419" cy="884.4477" r="11.3406"/><rect id="rect81-2" class="cls-14" x="913.6424" y="923.0314" width="96.6794" height="4.3395"/><rect id="rect81-3" class="cls-14" x="933.1076" y="913.1043" width="77.2142" height="4.3395"/><rect id="rect81-4" class="cls-14" x="913.6424" y="932.9586" width="96.6794" height="4.3395"/><g id="g5-0"><g id="g4-9-78"><path id="rect1-2-68" class="cls-2" d="M958.8518,877.3225v14.8012c0,.5023-.4044.9068-.9068.9068h-14.7919c-.5023,0-.9068-.4044-.9068-.9068v-18.7056c0-.5023.4044-.9068.9068-.9068h9.9335"/><path id="path2-0-8" class="cls-6" d="M952.4356,872.3243l6.7016,5.7816"/></g><g id="g4-4"><path id="rect1-3" class="cls-2" d="M955.771,880.8631v14.8012c0,.5023-.4044.9068-.9068.9068h-14.7919c-.5023,0-.9068-.4044-.9068-.9068v-18.7056c0-.5023.4044-.9068.9068-.9068h9.9335"/><path id="path2-1" class="cls-6" d="M949.3547,875.8649l6.7016,5.7816"/><g id="g3-4"><path id="path3-92" class="cls-6" d="M943.1507,883.7153h8.6353"/><path id="path3-7-0" class="cls-6" d="M943.1507,892.4003h8.6353"/><path id="path3-6-6" class="cls-6" d="M943.1507,888.0578h8.6353"/></g></g></g></g></g><g id="Animation"><g id="g5-0-2"><g id="g4-9-78-2"><path id="rect1-2-68-2" class="cls-5" d="M1616.2322,319.9707v45.4669c0,1.5431-1.2423,2.7854-2.7854,2.7854h-45.4383c-1.5431,0-2.7854-1.2423-2.7854-2.7854v-57.4604c0-1.5431,1.2423-2.7854,2.7854-2.7854h30.5139"/><path id="path2-0-8-2" class="cls-3" d="M1596.5225,304.6172l20.5861,17.7601"/></g><g id="g4-4-2"><path id="rect1-3-2" class="cls-5" d="M1606.7684,330.8469v45.4669c0,1.5431-1.2423,2.7854-2.7854,2.7854h-45.4383c-1.5431,0-2.7854-1.2423-2.7854-2.7854v-57.4604c0-1.5431,1.2423-2.7854,2.7854-2.7854h30.5139"/><path id="path2-1-2" class="cls-3" d="M1587.0587,315.4934l20.5861,17.7601"/><g id="g3-4-2"><path id="path3-92-2" class="cls-3" d="M1568.0008,339.6084h26.5261"/><path id="path3-7-0-2" class="cls-3" d="M1568.0008,366.2875h26.5261"/><path id="path3-6-6-2" class="cls-3" d="M1568.0008,352.948h26.5261"/></g></g></g><g id="g5-6"><g id="g4-9-5"><path id="rect1-2-6" class="cls-5" d="M623.3159,504.7813v45.4669c0,1.5431-1.2423,2.7854-2.7854,2.7854h-45.4383c-1.5431,0-2.7854-1.2423-2.7854-2.7854v-57.4604c0-1.5431,1.2423-2.7854,2.7854-2.7854h30.5139"/><path id="path2-0-9" class="cls-3" d="M603.6062,489.4278l20.5861,17.7601"/></g><g id="g4-3"><path id="rect1-7" class="cls-5" d="M613.8522,515.6575v45.4669c0,1.5431-1.2423,2.7854-2.7854,2.7854h-45.4383c-1.5431,0-2.7854-1.2423-2.7854-2.7854v-57.4604c0-1.5431,1.2423-2.7854,2.7854-2.7854h30.5139"/><path id="path2-4" class="cls-3" d="M594.1425,500.304l20.5861,17.7601"/><g id="g3-5"><path id="path3-2" class="cls-3" d="M575.0846,524.4191h26.5261"/><path id="path3-7-54" class="cls-3" d="M575.0846,551.0981h26.5261"/><path id="path3-6-74" class="cls-3" d="M575.0846,537.7586h26.5261"/></g></g></g></g></svg>
\ No newline at end of file
diff --git a/src/components/Content.tsx b/src/components/Content.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..02cd2b3f2991d1a880a9bc0ba2d69d8efadebc77
--- /dev/null
+++ b/src/components/Content.tsx
@@ -0,0 +1,29 @@
+import * as React from 'react'
+import Box from '@mui/material/Box'
+import Typography from '@mui/material/Typography'
+
+export default function Types () {
+  return (
+    <Box sx={{ width: '100%', maxWidth: 500 }}>
+
+      <Typography variant="subtitle1" gutterBottom>
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos
+        blanditiis tenetur
+      </Typography>
+
+      <Typography variant="body1" gutterBottom>
+      Dies ist ein spannendes FDO.
+      </Typography>
+
+      <Typography variant="button" display="block" gutterBottom>
+        button text
+      </Typography>
+      <Typography variant="caption" display="block" gutterBottom>
+        caption text
+      </Typography>
+      <Typography variant="overline" display="block" gutterBottom>
+        overline text
+      </Typography>
+    </Box>
+  )
+}
diff --git a/src/components/ContentArea.tsx b/src/components/ContentArea.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..a68f625553f4ea2dc2644fa1b69e9b07d482c89e
--- /dev/null
+++ b/src/components/ContentArea.tsx
@@ -0,0 +1,70 @@
+import * as React from 'react'
+import { styled } from '@mui/material/styles'
+import Grid from '@mui/material/Grid'
+import Paper from '@mui/material/Paper'
+import Box from '@mui/material/Box'
+import QueryPanel from './header/QueryPanel'
+import Content from '@components/Content'
+import Typography from '@mui/material/Typography'
+import Divider from '@mui/material/Divider'
+import Button from '@mui/material/Button'
+import FDOImage from '@components/FDOImage'
+import Stack from '@mui/material/Stack'
+import Evebs from '@components/Evebs'
+import Link from '@mui/material/Link'
+import { FDO_COMMUNITY_MD_PROFILE_AAS as AAS, HANDLE_SYSTEM_BASE_URI as HS_BASE_URI, HANDLE_SYSTEM_DOWNLOAD_PROXY as HS_PROXY, CORDRA_HANDLE as CORDRA, FDO_COMMUNITY_TYPE_EVEBS as EVEBS } from '../constants'
+
+const Item = styled(Paper)(({ theme }) => ({
+  backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
+  ...theme.typography.body2,
+  padding: theme.spacing(2),
+  textAlign: 'center',
+  color: theme.palette.text.secondary
+}))
+
+export default function RowAndColumnSpacing () {
+  const leftShowCase = process.env.NEXT_PUBLIC_SHOWCASE_LEFT_PID
+  const leftShowCaseMD = process.env.NEXT_PUBLIC_SHOWCASE_LEFT_MDPID
+  const rightShowCase = process.env.NEXT_PUBLIC_SHOWCASE_RIGHT_PID
+  const rightShowCaseMD = process.env.NEXT_PUBLIC_SHOWCASE_RIGHT_MDPID
+  return (
+    <Box alignItems="center">
+      <Grid container spacing={2} columns={10} justifyContent="center" alignItems="center" marginTop={2}>
+        <Grid item xs={6}>
+        <Item>
+            <FDOImage/>
+          <Typography variant="h3" gutterBottom marginTop={2}>
+              Welcome to the FDO Manager
+          </Typography><br/>
+          <Stack direction="row" spacing={2} justifyContent="center">
+              <Button variant="contained" href="/fdo">Browse latest FDOs</Button><QueryPanel/>
+              </Stack>
+          </Item>
+        </Grid>
+
+      </Grid>
+
+      { (leftShowCase || rightShowCase) &&
+      <Grid container spacing={2} columns={20} justifyContent="center" alignItems="center" marginTop={2}>
+        <Grid item xs={6}>
+            { leftShowCase &&
+              <Evebs typePid={EVEBS}
+                     metadataPid={leftShowCaseMD}
+                     title="Showcase: An Asset Adminstration Shell(AAS) FDO"
+                     subtitle={<Link href={"/fdo/show/" + leftShowCase}>Show {leftShowCase}</Link>} />
+            }
+         </Grid>
+         <Grid item xs={6}>
+            { rightShowCase &&
+              <Evebs typePid={EVEBS}
+                     metadataPid={rightShowCaseMD}
+                     title="Showcase: An FDO hosted in an Eclipse Dataspace Components (EDC) Dataspace"
+                     subtitle={<Link href={"/fdo/show/" + rightShowCase}>Show {rightShowCase}</Link>} />
+            }
+         </Grid>
+       </Grid>
+       }
+
+    </Box>
+  )
+}
diff --git a/src/components/Evebs.jsx b/src/components/Evebs.jsx
new file mode 100644
index 0000000000000000000000000000000000000000..5fcb1e7f3161ac9a5d666ef25ac5875a8e3fa660
--- /dev/null
+++ b/src/components/Evebs.jsx
@@ -0,0 +1,106 @@
+import React from 'react'
+import { useTranslate, useCustom, useApiUrl } from '@refinedev/core'
+import CircularProgress from '@mui/material/CircularProgress'
+import Box from '@mui/material/Box'
+import Link from '@mui/material/Link'
+import Paper from '@mui/material/Paper'
+import Typography from '@mui/material/Typography'
+import { FDO_COMMUNITY_MD_PROFILE_AAS as AAS, HANDLE_SYSTEM_BASE_URI as HS_BASE_URI, HANDLE_SYSTEM_DOWNLOAD_PROXY as HS_PROXY, CORDRA_HANDLE as CORDRA } from '../constants'
+import { JsonView, darkStyles, defaultStyles } from 'react-json-view-lite';
+import { styled } from '@mui/material/styles'
+import 'react-json-view-lite/dist/index.css';
+
+import Details from '@components/fdos/details'
+
+const resolvePid = (pid) => `${HS_BASE_URI}/${pid}`
+
+const Item = styled(Paper)(({ theme }) => ({
+  backgroundColor: '#fff',
+  ...theme.typography.body2,
+  padding: theme.spacing(1),
+  textAlign: 'left',
+  color: theme.palette.text.secondary,
+  ...theme.applyStyles('dark', {
+    backgroundColor: '#1A2027'
+  })
+}))
+
+const getEvebsDetails = (typePid, repository, metadataRecord) => {
+  const row = (category, classification, logo) => {
+    return { category, classification, logo }
+  }
+  const techInfo = metadataRecord.fdoProfile === AAS ? "BaSyx AAS" : "EDC";
+  const techLogo = metadataRecord.fdoProfile === AAS ? "/images/aas.png" : "/images/eclipse-logo.png";
+  const dataspaceInfo = metadataRecord.fdoProfile === AAS ? "RWTH" : "MDS";
+  const dataspaceLogo = metadataRecord.fdoProfile === AAS ? "/images/rwth.png" : "/images/mds.png";
+
+  const details = [
+    row('Type', <Link href={resolvePid(typePid)}>{ "EVEBS-FDO" }</Link>, '')
+  ]
+  if(repository) {
+    details.push(row('Repository', repository,
+        repository == CORDRA ? "/images/cordra-primary-blue.png" : "/images/la_logo.png"))
+  }
+  details.push(row('Dataspace', dataspaceInfo, dataspaceLogo))
+  details.push(row('Technology', techInfo, techLogo))
+  return details
+}
+
+const EvebsDetails = ({pid, typePid, repository, metadataPid, title, showJson, subtitle}) => {
+  const apiUrl = useApiUrl()
+  const t = useTranslate()
+  const { data, isLoading, isError, error } = useCustom({
+    url: `${HS_PROXY}/${metadataPid}?locatt=payloadIndex:0`,
+    method: 'get',
+    errorNotification: () => false,
+    queryOptions: {
+      retry: false
+    }
+  })
+  const metadataRecord = useCustom({
+    url: `${apiUrl}/fdo/${metadataPid}`,
+    method: 'get',
+    errorNotification: () => false,
+    queryOptions: {
+      retry: false
+    }
+  });
+
+  const metadata = data?.data;
+  var description = undefined
+  var displayName = metadata?.displayName
+  if(displayName && displayName[0]) {
+    displayName = displayName[0].text
+  }
+  if(isError) {
+    displayName = pid
+  } else if(metadata?.description && metadata?.description[0]) {
+    description = metadata?.description[0].text
+  }
+
+  if (metadataRecord.isError) {
+    return <Item>Error</Item>
+  }
+
+  return isLoading || metadataRecord.isLoading ? <Item><CircularProgress/></Item> : (
+    <>
+      <Item>
+        <Typography variant="h5" gutterBottom>{title || displayName || metadata?.idShort || metadata?.id}</Typography>
+        <Typography variant="subtitle1" gutterBottom>{subtitle || description}</Typography>
+        <Box>
+        <Details rows={getEvebsDetails(typePid, repository, metadataRecord.data.data)}></Details>
+        </Box>
+      </Item>
+      { metadata && showJson &&
+        <Item>
+          <Box>
+            <Typography variant="h6" gutterBottom>Metadata (JSON)</Typography>
+            <JsonView data={metadata} shouldExpandNode={lvl => lvl<3} style={defaultStyles} />
+          </Box>
+        </Item>
+      }
+    </>
+  )
+}
+
+export default EvebsDetails
diff --git a/src/components/FDOImage.tsx b/src/components/FDOImage.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..3a55e196caefa78f66ca22bdad7dfa16b97c8578
--- /dev/null
+++ b/src/components/FDOImage.tsx
@@ -0,0 +1,13 @@
+import * as React from 'react'
+import Box from '@mui/material/Box'
+
+export default function FDOCard () {
+  return (
+            <Box>
+            <img width="100%"
+              src="images/techno4.png"
+              title="FDO Network"
+            />
+            </Box>
+  )
+}
diff --git a/src/components/fdos/create.tsx b/src/components/fdos/create.tsx
index 470b37a838632af810c445b61a93c1d017046c93..e7f0f74803516b0f3db4acc57ac42f8e6029d92d 100644
--- a/src/components/fdos/create.tsx
+++ b/src/components/fdos/create.tsx
@@ -160,11 +160,21 @@ const StepData: React.FC<any> = ({ register, errors }) => {
   return <FileUpload register={register} errors={errors} name="fdo_data" label="Upload data file"/>
 }
 
+const showNewFdo = (go, pid) => {
+    const prefix = pid.split('/', 1)[0]
+    const suffix = pid.substring(prefix.length + 1)
+    setTimeout(() => go({ to: { resource: 'fdo', action: 'show', id: pid, meta: { prefix, suffix } }, type: 'replace' }), 300);
+}
+
 export const FdoCreate: React.FC<IResourceComponentsProps> = () => {
   const go = useGo()
   const accessToken = useAccessToken()
 
-  const formRet = useStepsForm<any, HttpError, any>({ defaultValues: { repository: '', profile: '' }, refineCoreProps: { meta: { headers: { Authentication: `Bearer ${accessToken}` } } } })
+  const meta = {
+    headers: { Authorization: `Bearer ${accessToken}` }
+  }
+
+  const formRet = useStepsForm<any, HttpError, any>({ defaultValues: { repository: '', profile: '' }, refineCoreProps: { meta: meta } })
   const {
     setError,
     saveButtonProps,
@@ -180,9 +190,7 @@ export const FdoCreate: React.FC<IResourceComponentsProps> = () => {
   } = formRet
 
   if (data?.data?.pid) {
-    const prefix = data?.data?.pid?.split('/', 1)[0]
-    const suffix = data?.data?.pid?.substring(prefix.length + 1)
-    go({ to: { resource: 'fdo', action: 'show', id: data?.data?.pid, meta: { prefix, suffix } }, type: 'push' })
+    showNewFdo(go, data.data.pid)
   }
 
   const onSubmit = (data: any) => {
diff --git a/src/components/fdos/details.tsx b/src/components/fdos/details.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..29a44b95a865d8dbef0ae1f781671f9822046466
--- /dev/null
+++ b/src/components/fdos/details.tsx
@@ -0,0 +1,66 @@
+import * as React from 'react'
+import { styled } from '@mui/material/styles'
+import Table from '@mui/material/Table'
+import TableBody from '@mui/material/TableBody'
+import TableCell, { tableCellClasses } from '@mui/material/TableCell'
+import TableContainer from '@mui/material/TableContainer'
+import TableHead from '@mui/material/TableHead'
+import TableRow from '@mui/material/TableRow'
+import Paper from '@mui/material/Paper'
+import Typography from '@mui/material/Typography'
+import Link from '@mui/material/Link'
+
+const StyledTableCell = styled(TableCell)(({ theme }) => ({
+  [`&.${tableCellClasses.head}`]: {
+    backgroundColor: theme.palette.common.black,
+    color: theme.palette.common.white
+  },
+  [`&.${tableCellClasses.body}`]: {
+    fontSize: 14,
+    backgroundColor: theme.palette.common.white,
+    ...theme.applyStyles('dark', {
+      backgroundColor: '#262c32'
+    })
+  }
+}))
+
+const StyledTableRow = styled(TableRow)(({ theme }) => ({
+  '&:nth-of-type(odd)': { backgroundColor: theme.palette.action.hover },
+  // hide last border
+  '&:last-child td, &:last-child th': {
+    border: 0
+  }
+}))
+
+function createData (
+  category: string,
+  classification: string,
+  logo: string
+
+) {
+  return { category, classification, logo }
+}
+
+
+export default function CustomizedTables ({rows}) {
+  return (
+      <Table aria-label="simple table" sx={{border: 0}}>
+        <TableBody >
+          {rows.map((row) => (
+            <StyledTableRow key={row.category}>
+              <StyledTableCell component="th" scope="row" sx={{ border: 0 }}>
+               <Typography  sx={{fontSize: 14}} gutterBottom> {row.category}</Typography>
+              </StyledTableCell>
+              <StyledTableCell align="left">{row.classification}</StyledTableCell>
+              <StyledTableCell align="right" sx={{ maxWidth: 140 }}>{row.logo && <img
+          style={{ maxHeight: '35px' }}
+          src={row.logo}
+          title={row.category}
+        />
+              }</StyledTableCell>
+            </StyledTableRow>
+          ))}
+        </TableBody>
+      </Table>
+  )
+}
diff --git a/src/components/header/UserComponent.tsx b/src/components/header/UserComponent.tsx
index d92365c1573fcffb6c98a8f18bc68aeeef812444..9f2ac3506b1a7dd32cc1786110c789475eb5be26 100644
--- a/src/components/header/UserComponent.tsx
+++ b/src/components/header/UserComponent.tsx
@@ -1,4 +1,4 @@
-import * as React from 'react'
+import React, { useContext } from 'react'
 import Button from '@mui/material/Button'
 import Menu from '@mui/material/Menu'
 import MenuItem from '@mui/material/MenuItem'
@@ -6,6 +6,7 @@ import Stack from '@mui/material/Stack'
 import Typography from '@mui/material/Typography'
 import Avatar from '@mui/material/Avatar'
 import { useGetIdentity, useLogout, useLogin, useTranslate } from '@refinedev/core'
+import { ColorModeContext } from "@contexts"
 
 interface IUser {
   name: string
@@ -28,6 +29,7 @@ const Login = () => {
 }
 
 const UserMenu = ({ user }: any) => {
+  const { mode } = useContext(ColorModeContext);
   const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null)
   const open = Boolean(anchorEl)
   const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
@@ -63,6 +65,7 @@ const UserMenu = ({ user }: any) => {
                       }
                     }}
                     variant="subtitle2"
+                    color={mode === "light" && "white" }
                   >
                     {user?.name}
                   </Typography>
@@ -88,7 +91,8 @@ const UserMenu = ({ user }: any) => {
 }
 
 export default function UserComponent () {
-  const { data: user } = useGetIdentity<IUser>()
+  const { data, isError, error } = useGetIdentity<IUser>();
+  // console.log("UserComponent", data, isError, error);
 
-  return (user?.name ? <UserMenu user={user}/> : <Login/>)
+  return (!isError && data?.name ? <UserMenu user={data}/> : <Login/>)
 }
diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx
index 5aa8beed8f6fef5a1219d64e285727092b09c798..df9bb106fa85b915cc065e9a5a5d3039d8d0f895 100644
--- a/src/components/header/index.tsx
+++ b/src/components/header/index.tsx
@@ -2,7 +2,6 @@ import { ColorModeContext } from '@contexts'
 import DarkModeOutlined from '@mui/icons-material/DarkModeOutlined'
 import LightModeOutlined from '@mui/icons-material/LightModeOutlined'
 import AppBar from '@mui/material/AppBar'
-import Avatar from '@mui/material/Avatar'
 import FormControl from '@mui/material/FormControl'
 import IconButton from '@mui/material/IconButton'
 import MenuItem from '@mui/material/MenuItem'
@@ -40,6 +39,7 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
             gap="16px"
           >
             <QueryPanel/>
+            { /*
             <FormControl sx={{ minWidth: 64 }}>
               <Select
                 disableUnderline
@@ -75,14 +75,6 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
                       alignItems="center"
                       justifyContent="center"
                     >
-                      <Avatar
-                        sx={{
-                          width: '24px',
-                          height: '24px',
-                          marginRight: '5px'
-                        }}
-                        src={`/images/flags/${lang}.svg`}
-                      />
                       <Typography>
                         {lang === 'en' ? 'English' : 'German'}
                       </Typography>
@@ -91,6 +83,7 @@ export const Header: React.FC<RefineThemedLayoutV2HeaderProps> = ({
                 ))}
               </Select>
             </FormControl>
+            */}
 
             <IconButton
               color="inherit"
diff --git a/src/components/linkahead_icon_256.png b/src/components/linkahead_icon_256.png
new file mode 100644
index 0000000000000000000000000000000000000000..f67910740fb5e4beb56ae8bb8dcf16414ee3658d
Binary files /dev/null and b/src/components/linkahead_icon_256.png differ
diff --git a/src/constants.js b/src/constants.js
index c891c2a258058c222a7b36ecc91c542f31c7d6da..7212196c8ab8a8a553315447840bc6e735c93c7c 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -1,3 +1,9 @@
 import { version } from './version'
 export const API_URL = process.env.NEXT_PUBLIC_API_URL || '/api'
 export const FDO_MANAGER_WEBUI_VERSION = version
+export const FDO_COMMUNITY_TYPE_EVEBS = process.env.NEXT_PUBLIC_FDO_COMMUNITY_TYPE_EVEBS || "21.T11966/f7f29218c8d5832ab5b5"
+export const FDO_COMMUNITY_MD_PROFILE_AAS = process.env.NEXT_PUBLIC_FDO_COMMUNITY_MD_PROFILE_AAS || "21.T11966/49321f913c960ec3c943"
+export const FDO_COMMUNITY_MD_PROFILE_EDC = process.env.NEXT_PUBLIC_FDO_COMMUNITY_MD_PROFILE_EDC || "21.T11966/3f1cfd3bb60bee84c22b"
+export const HANDLE_SYSTEM_BASE_URI = process.env.NEXT_PUBLIC_HANDLE_SYSTEM_BASE_URI || "https://hdl.handle.net"
+export const HANDLE_SYSTEM_DOWNLOAD_PROXY = process.env.NEXT_PUBLIC_HANDLE_SYSTEM_DOWNLOAD_PROXY || HANDLE_SYSTEM_BASE_URI
+export const CORDRA_HANDLE = process.env.NEXT_PUBLIC_CORDRA_HANDLE || "21.T11967/service"
diff --git a/src/providers/dataProvider.tsx b/src/providers/dataProvider.tsx
index ad9336c3ff689963788784e108d9cab37b8e00ee..d657713626839069d0d7ab0e22f74da87f374043 100644
--- a/src/providers/dataProvider.tsx
+++ b/src/providers/dataProvider.tsx
@@ -4,7 +4,11 @@ import { Configuration, ProfilesApi, RepositoriesApi, FDOsApi, InfoApi, LoggingA
 import axios from 'axios'
 
 const getNewlyCreated = async (newLocation: string) => {
-  return await axios.get(newLocation)
+  const response = await axios.get(newLocation)
+  if (response.data.data) {
+    return response.data.data;
+  }
+  return response.data;
 }
 
 const apiDataProvider = (apiUrl: string): DataProvider => {
@@ -66,7 +70,7 @@ const apiDataProvider = (apiUrl: string): DataProvider => {
       meta
     }) => {
       if (method === 'get') {
-        return { data: (await getNewlyCreated(url)).data.data }
+        return { data: (await getNewlyCreated(url)) }
       } else {
         throw new Error('Not implemented')
       }
@@ -81,7 +85,7 @@ const apiDataProvider = (apiUrl: string): DataProvider => {
       if (response.status === 201) {
         const newLocation = response.headers.location
         const newData = await getNewlyCreated(newLocation)
-        return { data: newData.data.data }
+        return { data: newData }
       } else {
         throw new Error('Create with anything else than 201 not implemented.')
       }
diff --git a/src/utils.tsx b/src/utils.tsx
index edc9cb2f2d145ccb3f2642b9e7159028b24d6dc9..7d97f91fa9a0a00ecdc430d7a8d58daa1aff1294 100644
--- a/src/utils.tsx
+++ b/src/utils.tsx
@@ -16,19 +16,10 @@ export const useAccessToken: any = () => {
 
   const data = identity?.data?.data
 
-  if (data?.accessToken == null) {
-    return null
-  }
-
   if (data?.error) {
     doLogout(logout, open)
     return null
   }
 
-  if (data?.accessTokenExpires) {
-    doLogout(logout, open)
-    return null
-  }
-
-  return data?.accessToken
+  return data?.access_token
 }