From f17554539995d4973cec180b3323c90be0843407 Mon Sep 17 00:00:00 2001 From: Salih Altun Date: Mon, 1 Apr 2024 21:34:52 +0300 Subject: [PATCH] Tasks page implementation (#120) --- skyvern-frontend/package-lock.json | 1827 ++++++++++++++++- skyvern-frontend/package.json | 22 +- skyvern-frontend/public/skyvern-logo-text.png | Bin 0 -> 21725 bytes skyvern-frontend/public/skyvern-logo.png | Bin 0 -> 101173 bytes skyvern-frontend/server.js | 28 + skyvern-frontend/src/App.tsx | 15 +- skyvern-frontend/src/api/AxiosClient.ts | 12 + skyvern-frontend/src/api/QueryClient.ts | 11 + skyvern-frontend/src/api/types.ts | 69 + .../src/components/TaskStatusBadge.tsx | 21 + .../src/components/ui/accordion.tsx | 55 + .../src/components/ui/badge-variants.ts | 27 + skyvern-frontend/src/components/ui/badge.tsx | 17 + .../ui/{Button.tsx => button-variants.ts} | 28 +- skyvern-frontend/src/components/ui/button.tsx | 28 + skyvern-frontend/src/components/ui/card.tsx | 83 + skyvern-frontend/src/components/ui/dialog.tsx | 120 ++ skyvern-frontend/src/components/ui/form.tsx | 138 ++ skyvern-frontend/src/components/ui/input.tsx | 25 + skyvern-frontend/src/components/ui/label.tsx | 24 + .../src/components/ui/pagination.tsx | 122 ++ .../src/components/ui/radio-group.tsx | 42 + skyvern-frontend/src/components/ui/select.tsx | 162 ++ .../src/components/ui/skeleton.tsx | 15 + skyvern-frontend/src/components/ui/table.tsx | 120 ++ .../src/components/ui/textarea.tsx | 24 + skyvern-frontend/src/components/ui/toast.tsx | 127 ++ .../src/components/ui/toaster.tsx | 33 + .../src/components/ui/tooltip.tsx | 28 + .../src/components/ui/use-form-field.ts | 46 + .../src/components/ui/use-toast.ts | 189 ++ skyvern-frontend/src/index.css | 5 + skyvern-frontend/src/router.tsx | 51 + .../src/routes/root/RootLayout.tsx | 49 + skyvern-frontend/src/routes/root/SideNav.tsx | 58 + .../src/routes/settings/Settings.tsx | 49 + .../routes/settings/SettingsPageLayout.tsx | 13 + .../src/routes/tasks/TasksPageLayout.tsx | 13 + .../src/routes/tasks/constants.ts | 1 + .../src/routes/tasks/create/CreateNewTask.tsx | 49 + .../routes/tasks/create/CreateNewTaskForm.tsx | 297 +++ .../tasks/data/descriptionHelperContent.ts | 16 + .../src/routes/tasks/data/sampleTaskData.ts | 282 +++ .../src/routes/tasks/detail/StepList.tsx | 123 ++ .../routes/tasks/detail/StepListSkeleton.tsx | 46 + .../src/routes/tasks/detail/TaskDetails.tsx | 142 ++ .../src/routes/tasks/list/TaskList.tsx | 151 ++ .../routes/tasks/list/TaskListSkeleton.tsx | 46 + .../tasks/running/RunningTaskSkeleton.tsx | 83 + .../src/routes/tasks/running/RunningTasks.tsx | 81 + skyvern-frontend/src/routes/tasks/types.ts | 5 + skyvern-frontend/src/store/SettingsStore.ts | 19 + skyvern-frontend/src/util/env.ts | 25 + skyvern-frontend/src/util/timeFormat.ts | 13 + skyvern-frontend/vite.config.ts | 6 + 55 files changed, 5040 insertions(+), 41 deletions(-) create mode 100644 skyvern-frontend/public/skyvern-logo-text.png create mode 100644 skyvern-frontend/public/skyvern-logo.png create mode 100644 skyvern-frontend/server.js create mode 100644 skyvern-frontend/src/api/AxiosClient.ts create mode 100644 skyvern-frontend/src/api/QueryClient.ts create mode 100644 skyvern-frontend/src/api/types.ts create mode 100644 skyvern-frontend/src/components/TaskStatusBadge.tsx create mode 100644 skyvern-frontend/src/components/ui/accordion.tsx create mode 100644 skyvern-frontend/src/components/ui/badge-variants.ts create mode 100644 skyvern-frontend/src/components/ui/badge.tsx rename skyvern-frontend/src/components/ui/{Button.tsx => button-variants.ts} (61%) create mode 100644 skyvern-frontend/src/components/ui/button.tsx create mode 100644 skyvern-frontend/src/components/ui/card.tsx create mode 100644 skyvern-frontend/src/components/ui/dialog.tsx create mode 100644 skyvern-frontend/src/components/ui/form.tsx create mode 100644 skyvern-frontend/src/components/ui/input.tsx create mode 100644 skyvern-frontend/src/components/ui/label.tsx create mode 100644 skyvern-frontend/src/components/ui/pagination.tsx create mode 100644 skyvern-frontend/src/components/ui/radio-group.tsx create mode 100644 skyvern-frontend/src/components/ui/select.tsx create mode 100644 skyvern-frontend/src/components/ui/skeleton.tsx create mode 100644 skyvern-frontend/src/components/ui/table.tsx create mode 100644 skyvern-frontend/src/components/ui/textarea.tsx create mode 100644 skyvern-frontend/src/components/ui/toast.tsx create mode 100644 skyvern-frontend/src/components/ui/toaster.tsx create mode 100644 skyvern-frontend/src/components/ui/tooltip.tsx create mode 100644 skyvern-frontend/src/components/ui/use-form-field.ts create mode 100644 skyvern-frontend/src/components/ui/use-toast.ts create mode 100644 skyvern-frontend/src/router.tsx create mode 100644 skyvern-frontend/src/routes/root/RootLayout.tsx create mode 100644 skyvern-frontend/src/routes/root/SideNav.tsx create mode 100644 skyvern-frontend/src/routes/settings/Settings.tsx create mode 100644 skyvern-frontend/src/routes/settings/SettingsPageLayout.tsx create mode 100644 skyvern-frontend/src/routes/tasks/TasksPageLayout.tsx create mode 100644 skyvern-frontend/src/routes/tasks/constants.ts create mode 100644 skyvern-frontend/src/routes/tasks/create/CreateNewTask.tsx create mode 100644 skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx create mode 100644 skyvern-frontend/src/routes/tasks/data/descriptionHelperContent.ts create mode 100644 skyvern-frontend/src/routes/tasks/data/sampleTaskData.ts create mode 100644 skyvern-frontend/src/routes/tasks/detail/StepList.tsx create mode 100644 skyvern-frontend/src/routes/tasks/detail/StepListSkeleton.tsx create mode 100644 skyvern-frontend/src/routes/tasks/detail/TaskDetails.tsx create mode 100644 skyvern-frontend/src/routes/tasks/list/TaskList.tsx create mode 100644 skyvern-frontend/src/routes/tasks/list/TaskListSkeleton.tsx create mode 100644 skyvern-frontend/src/routes/tasks/running/RunningTaskSkeleton.tsx create mode 100644 skyvern-frontend/src/routes/tasks/running/RunningTasks.tsx create mode 100644 skyvern-frontend/src/routes/tasks/types.ts create mode 100644 skyvern-frontend/src/store/SettingsStore.ts create mode 100644 skyvern-frontend/src/util/env.ts create mode 100644 skyvern-frontend/src/util/timeFormat.ts diff --git a/skyvern-frontend/package-lock.json b/skyvern-frontend/package-lock.json index eb1afd38..7a69fcc0 100644 --- a/skyvern-frontend/package-lock.json +++ b/skyvern-frontend/package-lock.json @@ -8,14 +8,29 @@ "name": "skyvern-frontend", "version": "0.0.0", "dependencies": { + "@hookform/resolvers": "^3.3.4", + "@radix-ui/react-accordion": "^1.1.2", + "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-radio-group": "^1.1.3", + "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.0.7", + "@tanstack/react-query": "^5.28.6", + "axios": "^1.6.8", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", + "express": "^4.19.2", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-hook-form": "^7.51.1", + "react-router-dom": "^6.22.3", "tailwind-merge": "^2.2.2", - "tailwindcss-animate": "^1.0.7" + "tailwindcss-animate": "^1.0.7", + "zod": "^3.22.4", + "zustand": "^4.5.2" }, "devDependencies": { "@types/node": "^20.11.30", @@ -516,6 +531,48 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "dependencies": { + "@floating-ui/dom": "^1.6.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@hookform/resolvers": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.3.4.tgz", + "integrity": "sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -756,6 +813,132 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.1.2.tgz", + "integrity": "sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collapsible": "1.0.3", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.0.3.tgz", + "integrity": "sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", @@ -773,6 +956,145 @@ } } }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-icons": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", @@ -781,6 +1103,255 @@ "react": "^16.x || ^17.x || ^18.x" } }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", + "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz", + "integrity": "sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", + "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-slot": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", @@ -799,6 +1370,236 @@ } } }, + "node_modules/@radix-ui/react-toast": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.5.tgz", + "integrity": "sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", + "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@remix-run/router": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", + "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@swc/core": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.8.tgz", @@ -1012,6 +1813,30 @@ "@swc/counter": "^0.1.3" } }, + "node_modules/@tanstack/query-core": { + "version": "5.28.6", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.28.6.tgz", + "integrity": "sha512-hnhotV+DnQtvtR3jPvbQMPNMW4KEK0J4k7c609zJ8muiNknm+yoDyMHmxTWM5ZnlZpsz0zOxYFr+mzRJNHWJsA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.28.6", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.28.6.tgz", + "integrity": "sha512-/DdYuDBSsA21Qbcder1R8Cr/3Nx0ZnA2lgtqKsLMvov8wL4+g0HBz/gWYZPlIsof7iyfQafyhg4wUVUsS3vWZw==", + "dependencies": { + "@tanstack/query-core": "5.28.6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -1054,7 +1879,7 @@ "version": "18.2.22", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.22.tgz", "integrity": "sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==", - "dev": true, + "devOptional": true, "dependencies": { "@types/react": "*" } @@ -1279,6 +2104,18 @@ "vite": "^4 || ^5" } }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", @@ -1393,6 +2230,22 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -1402,6 +2255,11 @@ "node": ">=8" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/autoprefixer": { "version": "10.4.18", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", @@ -1439,6 +2297,16 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1455,6 +2323,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1506,6 +2410,32 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1673,6 +2603,17 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", @@ -1688,6 +2629,38 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1741,6 +2714,52 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -1780,6 +2799,11 @@ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, "node_modules/electron-to-chromium": { "version": "1.4.712", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.712.tgz", @@ -1792,6 +2816,33 @@ "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", "dev": true }, + "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/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -1839,6 +2890,11 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2078,6 +3134,14 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -2107,6 +3171,60 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "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", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2188,6 +3306,36 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2224,6 +3372,25 @@ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -2239,6 +3406,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -2252,6 +3440,14 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2291,6 +3487,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/get-stream": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", @@ -2391,6 +3613,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -2406,6 +3639,39 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -2417,6 +3683,21 @@ "node": ">= 0.4" } }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/human-signals": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", @@ -2441,6 +3722,17 @@ "url": "https://github.com/sponsors/typicode" } }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -2488,8 +3780,23 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -2862,6 +4169,19 @@ "node": ">=10" } }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "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==" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -2876,6 +4196,14 @@ "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -2888,6 +4216,36 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", @@ -2961,6 +4319,14 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -3027,6 +4393,25 @@ "node": ">= 6" } }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3110,6 +4495,14 @@ "node": ">=6" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3164,6 +4557,11 @@ "node": "14 || >=16.14" } }, + "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/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -3383,6 +4781,23 @@ "node": ">=6.0.0" } }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3392,6 +4807,20 @@ "node": ">=6" } }, + "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/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -3411,6 +4840,28 @@ } ] }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -3434,6 +4885,118 @@ "react": "^18.2.0" } }, + "node_modules/react-hook-form": { + "version": "7.51.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.1.tgz", + "integrity": "sha512-ifnBjl+kW0ksINHd+8C/Gp6a4eZOdWyvRv0UBaByShwU8JbVx5hTcTWEcd5VdybvmPTATkVVXk9npXArHmo56w==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", + "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "dependencies": { + "@remix-run/router": "1.15.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", + "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "dependencies": { + "@remix-run/router": "1.15.3", + "react-router": "6.22.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -3601,6 +5164,30 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -3624,6 +5211,82 @@ "node": ">=10" } }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3643,6 +5306,23 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -3699,6 +5379,14 @@ "node": ">=0.10.0" } }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -4015,6 +5703,14 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -4035,8 +5731,7 @@ "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-check": { "version": "0.4.0", @@ -4062,6 +5757,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typescript": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", @@ -4081,6 +5788,14 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -4120,11 +5835,76 @@ "punycode": "^2.1.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vite": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.2.tgz", @@ -4324,6 +6104,41 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zustand": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz", + "integrity": "sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } } } } diff --git a/skyvern-frontend/package.json b/skyvern-frontend/package.json index f276c7d2..7cb8d6b2 100644 --- a/skyvern-frontend/package.json +++ b/skyvern-frontend/package.json @@ -4,23 +4,39 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite & npm run run:server", "build": "tsc --noEmit && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "format": "prettier --write .", "preview": "vite preview", "prepare": "cd .. && husky skyvern-frontend/.husky", - "precommit": "lint-staged" + "precommit": "lint-staged", + "run:server": "node server.js" }, "dependencies": { + "@hookform/resolvers": "^3.3.4", + "@radix-ui/react-accordion": "^1.1.2", + "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-radio-group": "^1.1.3", + "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.0.7", + "@tanstack/react-query": "^5.28.6", + "axios": "^1.6.8", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", + "express": "^4.19.2", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-hook-form": "^7.51.1", + "react-router-dom": "^6.22.3", "tailwind-merge": "^2.2.2", - "tailwindcss-animate": "^1.0.7" + "tailwindcss-animate": "^1.0.7", + "zod": "^3.22.4", + "zustand": "^4.5.2" }, "devDependencies": { "@types/node": "^20.11.30", diff --git a/skyvern-frontend/public/skyvern-logo-text.png b/skyvern-frontend/public/skyvern-logo-text.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b5ab2992cf7d15d7f72b2be64c78dbd0b9e589 GIT binary patch literal 21725 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

3_aa|3z8P9M zUjFW&!peY{NN38+l6Z1xCv9rkh0p2k*Jk|La_OW;h(Wmpa z&-JaTjS?v`hR?PRfMsa}IPX%GR$4;bpu9}8V?RC4LEEJ2v0gIn=Bh6c|5PyznyHWE zN;ZV>Pne817?Y|6J0TLBo4R7PCjA|r*fyH}LVu(dPt~63Mib4syY=Ciak$+aSGaYG zRE2kjJ3bfQ7gE4r4n8yWIZL}@X1o3hEHn8eda?L=(eSd&!XwH&_*Uumo#)ZxfgRtQ zoon|Wu(d8`SU6HLJW7O3Ur^|z=?N+R-62x1c|(HG?^>(Js3lZ49IDTs3nYsEWLQ4} z=ym{QLlO&~^m={9W#z<72h3?YVoG^2Ul3$xGX=Ytu*NAhf{M6Dt*hhQ_7|mu&kHQV zF*Pm~VtG9GZZ%%RnRpMSWl`|^88pzSArKAOF<(y8Ry06sd`G{zuSnQok@w6aS5eVr zKW7lEgMIYVFB8KC@q<{m#?a=P_TAMD?ac+tl{HlDEqM+25v)36S|4h5@&Lg^IE#Sk zH1y*mZ@hIu73eS`kWCrNlt_X~wS0N;cJL4xmSHImQ|9*cSLmc7aoRisRYs45DL$#B zWE({t4o>V#%VeeWmQs{^f*zOIN=!*5eR}7#zO3Fdbg8g&?G7>LaS|lcKu1aMP-^{7 z#cpoNX1y+6;tl#dT+PO|Mt(G-cv-JQ0<6IpJrkP6m+pPJ zf1MrrEt>OE$tqz~1P%xHGi&ta;OS@SU{ZmBMk|tpkPLYDgNBVOH*Pp&UgWv^XhW#T1N&B_UyNKMcONNV zQHloXTe>A9!z62ql-#W#cCb5pJN9%yv&Tn>uTSaP9hHN458vcuplP^_7o)<+FVrON zoGHUaKP>Y!G#1@-iO+w#2d^>(m9`8c+1F)ITM~$|oM(j5#vJJ+NYxukQvK4nL!ksQ zGYCKiE6Y53EZglwyJP?5&yBC!SNq;&fiol-bv-Aq@WAM}hV3$DBW>k?ZS~i!<3(Q* zo8kH2yOqgyld6&zEp~6l939OtIpeZ;Lqh8E2*|rP5(aI2z4U2lt!WKswU^hD2&?R} zACVjD{Iecj?9=^&^vIg?Op}v4I){@)nM$QtSC1#FO7yd9T4Be3LQ|rO>q^(lW2BjM z!o;ZG;ABy-%pku0Q5~GH1$a6i%4aTex#RSQpSidS!!f^&9B#u21|eWDWnKF zm0uq7>zP+}ZWQ*Z8X9K~IyW$1UY`$@=pRLOv>AOmX@RndTZ1j+$BD@s=CDFR^I95V zZj?Iz)MOtH&@Ucj3>Qj{qh#iTo-zcxNa95M=2@KI2#!rgS^R z?9)aIGL00QZ-ZuTk?Wzo9JY{E;7?>OHqto1ocRzIcOqy)kNy7pwsc7S=ACmO5m1|9 zl=+FrTuP<&NXC6{Jn3$*-0xIlM_G0ZD#~4miN!F>#Ncf?rHrrmhp6o2!o3a9yb3!b)MScb9u5d~JIu8lMER z^|t~&TIvpwcuqCAq1OYLf%W{4G~-F1n0sTg{H5o>gB{jZr%LB;6^ z1vI)Nb$R%hQ}+X%@-H*q6FaktG_~mjae{>5m(z!Ta|bl)JI~j-VNJoqq29boYYI2O zLVF3#D^W*iw_GFDzb>z%iT}LqeWy@nV7E!>?Wu_8s=7OQ3F>T`xT3gj04>AMnmQ+@NNy080t;*P&SB5=+D19~gDQ|I8>s-EIog9j8~Eh6aW79b9L*DM>D zj?pXsiGA|2tW23yG!C@Piz^_ZyC*$ z0@H&De6HPT%xPoNB!AC`rXC0O;fgYUfZHl#sdWlsnGH}|>I+!?`y_Qp+}Hm{1w0o* zR1sy55tH_XgdA0ZZsLq&5-0S$UK9_1_YRb!+oRZr6OXovK&3T!e88B(tE~^2D!;Sb z8L8=jGyVC^w13Xnm?Y_sCZrHQmwki2! zqfV#MJh()VnD8~U_C%C&*Zpyr>N$drJG3ywoW-yaR%+GZdZS>XSrd=lgf9}^jLQ-0 zyO%^yZDE*b=BI$)T?Yq5W1TCe;c?BPGSIwxdU(%dMbW}kY%vLqX4@}cNdRzDc#th5 z$b969jENS8>MAvZ&~NPE0k1amC{*wpVEppuZW~=wO#bX3YR$G*21n=f(RgeoYm$6R zn8`kku}1FH6j$EJT<*+Z^e+#u8J)Ed8x@st?OEq*EP#&*z(j?u<`>vCm8V%5%Bte& zUgO*aokpcvmoA)e);wuSuTQ|g;buhTHTNDIp>uKK-lqcIR5Go-$MnOwvB+6M;@WG5 z(2YG`tEf)itdDtg<=m(u5NR}H;24^7`0bTr@qsKsV4!~xLC2A&8c{>=yQ&B;w==g{5|ZZ2<_4BYT( z)!xK()c5HEOQGB6BR72xXl;zzk2E04yQ_|rzA;u~vybiXBjTefx(3sP{qP^Y?%`MI zk^eN!LjjV8f_RE&me1Uwpb#Lz(>@b0ee;`DB!p;+?W4S_RemC>jA4$@Y-*fjenx}|mHYT1cdmyMuxounN zzT98X(-XfQo@nPt@$V=Pzz7FS&TFbV`kZArc8a#6eeAgPwLCE$haT7pKX!r1!d40_ zFGI}vA*Im4PKnj`eJ_;p*w3u^KmMry+TrtehZ4(xl{H;pG>D?;%oy)~y6I-9(z2cL zy#KM|f_@O9QrTo>m+{_J#$YeQ^qg+1D5MKfZI3v`)0CExQIVWIlL!bJjJ~MtW}HVA zke~O2P3NWXY^jN7lp@lglz+m_XbT{XsVT<$FM%OHw5)RTH8%Vu!EKDNSs)HNI_ugAz3HnZ((JpU$@+5{bfJQHck4pyJPZJLrDE2fXjiq zT zass~w&x4?Uu;XD`($H=d*)bk2Qehc94VMn1nSskunAG!Uw_~CB z=Q)zrq6}OsdN%pNANKQjxJ{(LvexSbXWfPL`KMTl@X#a%RoU@HXXluJHuAY#tq~zm zR3EnAw<(enztE$Z*cCx}E1A+~QGjCr^8uJFDBNUVcLvxDUG6j{m+JJ{UqzbBe**$t z%8a+r$H}No^)g<#PFp!eqQr?C*G+@fzqvg-*oZU;avWpEk~P^omeo~|N!npln4jK_ zaXtHIJ_7!^cHrOy$VsIfGqSh4wVYST`UEAwsCOuhk+o- zTdB>@y+6IrTo?dXyvWZKOV_AOEe4PuQ#Dcej6BUZAx`gkt0rL_r5SPXO%yIe;98uAjnj8l*bu(8rC4riKB zcw02-@@*bJaf5F#+3*`YLM(h?5F+>elCVx~gSEGOI*W^R*0lR5gCD#`AN7X*n42NY z`>ntq1vf#Y{K{^{TqKwF(ckE^YK6j1etS=$aD%?L zbRUKo3U?Q7jfiK7aCX>;ED=r~7G?e(jf1;iVPsse$df&#WH1?Rb>%anf&Xj;?|4W$ zm<@mWmpVbxWI;4wX#fOFqmD=WW-U>aB5z5WHx<=<_G;U4)+Y@m+3*-+?m3MN){sRJ z1hZ@3xM|@AxgE(IXE9D5dJn{@2-Ch(Mdt$cQi>S|1->l$JJM89Y(=_P)`yL5fyFF{Yum zj}eM2(Fwhl%JhmRrQMZQ2Q1lT!WKmbh2qUq2bzV~VX%M))%$?G6AiIR&7x#TTmDvw zfX_7lIT=(PO$J;1O>tV_B0{REq3wpi7r{n~R0DsX%$!czB4lPQ8)z?o%U{-NJnKje+c7fQGW z*S?6zbYfB(5spfLhL`LF(PXdDrqok=xu-WJ2P75+0alDSBK*@@2ND}^72B3TfVsAQ zL_Xle6dfGzyLFSP{4@?=j&*7x}JIz~zGv;k_krrf<0VyV-QyI13xvaS0h zdic==+I^}rIpsXBHPY@c{xII4{dOJ+;Zufk%aPTX)85cdFNyc}J=ZD`Pl6pAI;`%e z2W|VKN%Y~+sN|@oNqvQxxY)>)#5)5m4llYF5<}4DKjMOhELTjkA=9!R(oizc<6V{j z2IK7;H?h>q&FJpa$%Yai|8W_TzHBN<^lj$vY0(MZrGPn%eikT=2)Ba{;psS^tS-Ms z@9O!*>o}RZDIaA@sExPr?l>F9m;As!Wx!3QB?vtf>Zr3F#p(CwJ1x@kd3BdxeZ^f~ zC9v5=sl1!FPH1Q{$^6Hx4ojCp6!D74Ns!fb!#|N}%WoK^#}#7)51zDg?OA0^7xb9; zxH8;61-d)0j(01doDGc6-}>$FvS@50L;~R&XpCs4RO#}n>NPs%N(|a&H)WxPaP8lt zsiF_l6|#C*WPZX&i4va;edaRGnFa0U=VJS<$*6@pgbRH{olb+`gp$?Jjj4%a(`#F5 z$Z9R9kK(0BSgg;#wI4k%{m&g*-EZQd$c~NE2>7Vm4|4YcWRP8L`X$U5&X{{B`v)T1 zpYE}H?mhE9P@j9Iz4YOHA3F=AtXMlUj-7X+Fk6(|dyfC3NE5$2CgyrJAas)=9>E#) zZQ(D#4)h-NFeJ(J^s*uQ@IaIZNTA>} zKY6y=QR^u-Sv@w5D5Xe}H93G^_uVHFvIvf$w(73&ZTzo9q~hsl$1P`K)_3jYp6PlD z^)I{v3N@e0Dl~7}*-^zDd(9?a01I4h!M{Owg@h(yg)fQ{WA4#yDH!Mxi4QU^b>4Lm zuz-378dj2aOHN*>$Sh7{&X33H@Egjve}YmcuGi&as!yQe|3~MAc%5Ktb#X9I9Egcy^F>ST_ddnVRZH+|5*T0+n9bI-CKe2qwNs4(;Cr>#;a zK7;B_f>2j$zxSR?eCRv|s=#^&0ZMPCl5QL6o`P96Qr98--(VU27R2MGM|iGo>+w)y znHej2v=&KRP)_BeXE4j%kBWx<-{l;aVicBcFJI#CX8?8E~(PcIu$5X zj!W+j9P2ML#i!1s!J7#fiQN+0MpVWJNGRy=6R4E_^xp-%;Lu(ChgKe7eFU7D`x*UE zSJh!7m=lYx3}}kVkRyuhrGTU zKD|I`^pW>qn1VYC^8pJ}PM;uUiy9L^6H=vN_bLPJ?PhUiIvG@_nVDZ&qcP_m>8|`h zeydl#zpyKEhaSw*EIF3UVGPY{LnTbWqa*M&p9=c*qmRv~iN;0~1AbS(0x@ys(@8)a zo(cWewl&ec{#m@4u;BgG>9Hx_rK9hYNUL`EqS&Gk^b|_A{Z(YMwe`814a!Da&q?7r zgnAY35(GNh>PczdvN9I3I2sDHQJR%Sh~KK1opt}(&*8>Ox_kd<)+;PUh$Gr>^u*X; z4rkI`jtGJOetF2IMIHZiP8H7(9Zd4!R_LAkQn;1^$^SV;eF}x+kmxVO9}$nsF4Kvy zY9`CkT9F$+bOvp1oTq*%Qw)BXXvQ@AMq)>tU1xjUZAFG4DMUQm`E(n?(@ryeJcVU}n6Oh4(eJcLPXT`PEEOSbYt=^&| zavn~6JF}Fg0O{4|Z_O;X<UR(NE6+m7dxu&G@mNK;F7irB@VeD(Ov=mC}*a%ot>*6fcuDv9G@@^W5 zy?w^Ub+_4s58%EVpr0A}+YV2NhSin#XEoB`eV2-ixE9u}NNA@%@js`xHPIDNs+iF*Duz4;kxtaxShXzJ5#iAd2vg~ZqWWTuamI~xaSX206VnQ_NViKjtU ztI&!-i5VBqyNO=@maDfxFnbnU-u*()9wBu5kiP>mp?-jVNYN%oHItDYLnB6`qSh!P z*lhaU86GxglCo~c$Vl_YEb!tPujKqcN;&3cTHd8tLytj|K`7&Y_jU;#1(M4ej1>Mf z_e@EL*5OHSPDuu&*%0GZ+!%PEQj5>RDGrx(?qngH`>+d)d;oU_gTz-voJ|QlUQZ@d zpN`O7WyGq+S`bBr2u_$vEz|aZ(;p($gXpNwFZ=3zI#NzMf>K_t_XSNBlcC%W5Pc5m z&vxA%2giJIUY{S1BkcN7tMLVze435kTr2&r%bng2*;HBK9?vwMTa(+ZzTtwabIRsw zdhP=sP5nzT7p%P7fmKrlo%=H&8`7+YU@)7Fz7`c(U3eIi$3|*lvalMu1$8^HFl`R*(I`9A ziQ)Wy*;-~ZP$#bYEG`r0uArLidC$cTOeOGzHQlqx^B5;fMop2 z7_HNikE1baK#Gm^#F5t@D!qI$OB1p)QoSbC@6N6X51b_QM+72_L4UfWo|DOzAPN%G z>;cUWmtTzUTKpirio1`gWGYg5mcqd~1oNfMY+a5Ym67WEKD}VJc6&JZq)5*VJEoo1 zA5->^SRaWyPj4yH0&&u-aHQSwr(;dv#>wkr5?`n^q{3yk#6Avs=%tnMb)6C$#DHfr z9gPA?bbUmX6JSrhiHsZJ-t13$TQB4nBaLye2mT^|mzpTav$S4k~oD13NTL32(@ZT4Oq$G@f&6eX#mJ9oje z9jMS}GeJ??7%3SbQZtJ9{K;XLj#>8QtQmmmVI}}}2_t?At4fAml>PigCx5S2Fg}@K z;oAML*NqKhHxVJC?3iMEz(9gFXI^);wS{(yk>I)G8O@{1b;NFbgU6G#VNrL0u&U|K zhi2wHMjNMXYpu^+zX+L~xEf=ei_6yAz%_+Z%9!y0|Sq zkWiN+O3d%ytVj1Wa0R(&9Gf9A1@U90h0T^s{D)Vjo?nPj?t%&cqm9ogUv;l;Y&Sl8 ze@$wB5OCQvq{=+GHa1t49++#^q5U!=eaU;QmDNKLugGOI5O!z(Y+^N@o*PR}Y}XRp zeS5(7dbJCkm0*!qpB}cRj&&-dWeMV-4j1;e{sn@t{z-~3YI6%=+iUSJN2H*;_d3HE zmY(89?wZ+m3 zSw6uCR%DFi9@>V=WRO=DWX=L7reT;YuoG!?Obk!7tg;7YQ+i}UGpXJFQ;8B})BK0T z9AU|GHW__8&ECA$k-FcOUdJ5|A0(vu%C4cppR=10u!MOS*B?n91a@OQCYd4jX@xf( zuDQ+GJwCN@NFx{;sb?teaRdHV^T_;WTu@>A*ZUKT{C`{4#P-G3!z#Ix13{d;FljJ? ztQNIp1Z1w>I;$(Dl9BizQ=?4KrRQ38G`F&Y>R+3g!OE)t*-xX3bF_kM;F9Cgx1U4L z(0BuVtafZe0L<0*@YnJ|E%MXc2MiPadu;O)&F?t4SyR?S*!Upi7)>72r2{OtkM92- zOCG)CC^h|)UYyNaKUSb@}2pTzSDXo}VNxba$#m@wEx9q1F)~xk+?OVcf{rGP~ojTj! zCfAO8X8vyQdKg`Zz1Mf?g)Ss303fr-O8Pb^iJtHy?nGI)G?r?lW~7-~L7@~Idcs5m z>-0}P-c7ZFs3FyYsR_{Vc5f0MyY$wNM27sGu0dSsklDz^|H@*w9QjQ?FCTUzdm|iV z?PWkjrVEQl4;P>Zj~?13~upkA+?MHcqIi%f-2S`Hun@_9Il8^1$| z+QO9`Zdu)k1+<(WszvEox|`*{aGhl*G@zzXR-c``tu{&Z3M%mM$mHD zMC~^L9Vv)>B%RW7gN_)GdEJ>$)}ab6_bb`H{^o8cZ$p+W-5*C(=w^P;4DJktfiJDu zvo|-bz0F0d#6SaRInU0Io~eBuum-g8b*D`LrD5EO|uOeNVg!EYSS-%w~!Ar zmzc*3 zknxhEnV-ct$k;^UI+E($;>&PIOrw4wW&fCkiZ6=LDN#@!3^U#B{OtTWeN5rOuj;%& zI!!de05wjm%r5>*54#GAQZMkW_KZ|Ka8A7EYlCsn^`(Xc0}kN&rYq*vyH(iGN^9l#GfiKG4XWLT96xI+$V{2asSb>z_aW(zb$KJsSJ=*&X?W6%E3rh;899)M%IwP zZLpwLJ-M)M+ZHkja0(9KV@miRq&?ay#1f&BRPsE@?)a`9^EqS@W9`*WO9n%oiG#t0 zBzUKLJy2!_ZXDY6DJdq6ii!!5PE$w1%x{_M*zd#$cRS_%5O9l`0_NtwhlJN|xUe($ ztN5!5v>qb|q775D0116tE6lY;f1mn3gbh|1MY1VM*K38riZkJX%Nu-gp@T~El!v>7 z+5{fUWQ%_lRN<$)8mc$L+{WWp&b1yjyRM!nw3_ZP-&j>3a49joLbRipPR0VyN2dCL zx`)AW5Z$7av6^UmSu96r7tyx_q#4U$OH|g#FC;3+3o2Po+F2|zSrDwji0a9xyvD4L z*DWegBbUL+V#|IB=KV-d?o{McWQLJ#umdCyCXHmz8yCvMv`zsj~-}a z+D(6H|BD`p09pL|Q_Dd=1x=_E49#6()Cgn5`P%Gsavr8)T+VZY!@vWfMB>9_b$tTNK{+$64b)X{bEC!EYcGjDM2v}TsL`sQ0^}e>5@0ks6Yj@*^y8mL?zilR z_{va@7jU?0evJ7=$!-uPQp}m!Va>g9PtLPg^1KF$y(gzX)ZAP9cU`>sp9ZXQU&jKq zu?4+g_F26cl`k~PfiZg%Wq?j0S?=KN+f?D+^z7#i;lb09b4Hbhbi)1KAOFbhqv)HX ziz^*ahlGUxJxcxdJ6w=RjM>S29d2Ggt2SqoJ!qDJ!f&0^FTgv@?+EL%DCdPE;%;pKxZpF(1`VOJjYPU zJ$atGw}@p^7`Srzjw62M+aL>E3ghU56X{e7pQ>PL%r9etCl400SPFd>qw>KzLm(+4 zm+i#AHC5H6bMZ^61_z!m#!Ec^-kkDE3$3iTL{f%7@lbSpV$9Ido5-D6=Ev#|=U-1P zIDE%7Ro|VUxR;5!^c!y+C$TCoU;`m0ExNCNGZ4s?ADo&&2;Y7!tJ-J9okw5%3kSq7 ze!ve_K*TDpjJv$WSDz`vo!YB4i4)%(1D)%J`%8N4-*%Q*p3=Z!eZxwCN-15z4^Hcf zSDR`Wd&3ydk!apYp!=w}v)yUXR+iP-XGGht%KJTHC`FxEX~?twcE8*~JNfQG3&TRa zJUbLNPCLgoPIt#}xX)5aHsYRV7e)^UpW^D66#gR=_;hy*UyYGOuXt^1*s~sdthVp# zUM)UNoK4|}D-GpcS{YJN7)z>tCsle+9nq*FU0kq2@7O}BpI>{+n!2Q#0lU<7&?`BM z?y~HtA9F@1=-I51V0q%P;x9kt4F^h5smA{jF>z8eGbVEohBr)Z!_GKx>WZ`X3a}^y zLu~!+z;aP#UVkz#kTo8DR199~ow^G6wC1P*bVq7x5^#RjJz{FTBSIZ^?)&GJ-Ravq z8a-^1i=rpJ60)B{OC?lEbHC&WaU0GFNPs6FdDN@?5xJT_BfND)n$r3lx`~*hH)nm> zvY+bm!$pw|ukU|6h*gIsIBZMa2g=*ONmN&Eo^y+a$o*+mN=hK1#-)H!SS{E(nlsBB70VOp>U*9ohK@218xBC zB$`vfcPsn0Zm7Hb{A0A;V(P-i7W_FZPG_>JhjL?6(aVP<1r3kSX4*pmi-RPV?EhLh z&v!Q5w~d<>BWTRlC>5I+u{X6sDYez!qiV(0DuUA3tsSIRt=hHso{e3*r1q+<6hGhN z`4^t+54hi4FYfa=uk&;M&?7Q6yFL7oIuVXo-XL2{CRB=YwASWIvZkkof2O3oB2UJ| zXY0GVG|A7bGvED{P^?e>Nn|jR*9nFpvv@yk^i>r;MUyJ*Ws#XV&{r`oR31kIiv%)y z8#l@5NtgGLmh@vaM8`=QMf4ooFYJexlNwy6axYmW+d5zgr@vKWL#Q~gd#h&H*u>#r}H8`V3> z(&n}y$d||{)l?jpC&tNm%zWivA3I4EkNck+EV{xWFVo{6sBal!%Di&XP)xc%Uoj~Y zkofII(0dGL9o${`?lCtH7-Y|yq?8E|;s*z%Z=XDH=^t1HDoo49=H4i^(JzISldmjUl}lr^*fop+6zb*=go!#4u#qTC=&(Mny2bk- zV#K>2E7{VvVrG(@3c^oF>{2d4$|e^2#x>ufdv?JB!mx}(*P7B%kjVCgTOsQUb;`GQGr&s5<_TpADYAk794eE;pH0;rvcMphzYS zP>4PvPNBL=q%Nd*CMmzm+9430k#rnFno@$G?yX23fW{w7dlU*x?|Iq*o!l3Y2NG+qsBT(5>csLTvYSN4w~P z)lo2Ln{;8Qz2Qs#Z;!2&Ox!mE*LQ8!KVY&4zY3Pv4%!Qx#yY#zdo$S5=)-Q^RA18g z$t>LMja9p|MQh*0rspbb%}IgbubUsi@DbTWN-K7f9=p%)J(jBWyY|Yk9B7hRj$H&j zp&rzcgNwV+w;Knymm7lFCzflySI(}7zMvP@x>N6@aS`OGQA(9E-IHa{MwUP6_2iB1 zyZHPlN_#wW+>*Gu5Wz;QM_4LuGA-fE+So?t_{nVhFhddJ{ej3!F@*n(W#5PD)mYU` z-xPz}*W3HN@_sj36igq3%(ZD2F_%#x{;rL;=#XH)?V%*wKaI;CL_<_LJ;GImyml!B zo?x_hMj1?sW3=Nkd>61jr(p)@(Lmf|_MH0X7a;(VyHb1;7kTbd>LgxTY}b{Dpqw3x z#O8a>f0YH_Pfi=l5Yex8SkaDzqCjPGp7#zjBegB{dZ=3Hk#^~Q7O8$qUjpX@yP zN89#HZzAQWK1Gb9=dI zo@mBIig*LDNh4MvR9bmyC~B*umfQGqpA?1FTDKVdqmP3 z`sZd}MYA{6L7ID%Kw_)>rn^2lj2_g}wMOOwjF#D+*PHbk4hqFQ+~pVTzXex44bROrs9(?Y(9$TM-!9!#dDD_Jz&})U#&HEvzz{k8d9@PVXNt&uttp8^{a$p4`6M48Tx0*5L$C|L0fu`5T29Y||xRs^Umb zt;?dAQG{qVUxT{0pt6h1Zt#L;XZW*OqJu-{NV4G)>QTKL6!{NxZxi!r@ae-J8hC&u zVCFLS_)1*WHQfBl#lH!U>LyvaS zGyX^d*5A0{I&HB>9<^n2-Sl=^?Q8=Sr6pmh0muwWni`Q(@ET#-882LwQaNLNqJ`zM zntDN&S#vrraxDmjZs=u>X*~d_4&iO@p&5tCsTdh-Rdf?XG0lRZxVs))4K7FslL1NL zhe$V?vz4@urjY+~`>63fRx`U^!YAHz9t}s5ET`r6)9t8@FI(-oQ!Y0O_5C4e0aOr* zl07C_h3W07F<_VvLRdyMHu(*5z11ynz$5MU{ZYjvAt=!G?$}4QO?z^G zyeYi62Ow{xehQuLS1C7rN-8MJ$NJi&{bbK%&HIYN_5sWxhvGsx);mWhv4dQxJ<6Xx zJ~}~euND#xlTi2PAM-sK^0r~={}{?AKv46vC5KuOut6Y~Cd=1__)z#;XXH@p16OQb zKD+axnpb$Z=W(a@i*xV)!}x6Zk3~4I6rrRAV)>5PeJPkW;`0kD9r^vs3pLKavsTGtf5<8+@+@P zY7udj_vJ%XCi!Enr$P=P_gH2+kn(0g;ivSc@ z-yQUXpXZU5xQ?1Q-F=J-fJ&+VP99iQF~VJJ!>n~(dB@pCJ+8>5uwM8ofrvc@s>#KI zCi2=tugKQom_d>|B4t{ej~g^xS3u43CpI!a8eqDcl8R8SKST6VW=Il5 zY+bxc%{dHx^5p>wZyNCsZm4%Iu%px_Wp|3(Vl1BX*uegbU;I;9-N@Y7z4VImK65&^ z{>nPCyz%8l4BcAh`OKnjwRQLFk(pj&h5~D=OYu&|x#&U7H2n@55{C3PbpK1u#jW?fuJ^F2&a8WTcV-bIfw5HD6ZHGY zI3B<$a4E-rC*)!aN*aaXtn@d54HB8Y?$l!lQa#i@nvYXYIRb?ZS@(<9uPC)YOey>< zxIm@1$3D3dO%RpImnJ9Gprg|h+B068EJU9ZV+VL8_^j1GxA-E6eOE(X$jC0PL)-nM z?pc6VsuMjKIDwInLTZdOI`w>dS$09h6O7utuPU06`rW{r#u;^-`+3rXoY7x|j12EV z5P9~IL^s9k{LRH}z&(4v0lj%-4gun`)!PdV^&(q3DmBc0e=%EdDQ|Dh(@DFN4X>je z7LsklxameR6n4CJRD2kxYZg)j^&jrj*lpQU6}k7;X3rXL>7O=w>Qg2VcXy3x_n zk!DDexa>qMRby^M4KO0Jc2ft59n;-m(wNL<3~z)>1l}pPs+tmA^>_6HZhgbTd(u=P z$2(IR?jDwULuR~mdEKziL<*)KOC++aa837Ryjnn4%ipqI8=n##k@+Oh*qerV#-~K* zmOdyi4h*9L#TnoBs=oS@SwrmD^L$*)=+|;tuKkge-~%Rae1M=-*ooQ}2a$|!)8?lP z-0N=Kq+@7Ie%>w(za1@ev3&mw|21}n)`6cc%id#h$wT9x688Od8zpN?26!%;jIGBQ zwyt8Jr^qHm2N)UU%YA0+P|z5y%sTbl7Oa9p#h1lWJf;)*uCb}kZ%&8Bb0}Dur}ol| z6WF_T1B0|mJRba<*CR3ebF_8fS8WRB37OIE;6U!K;@46sL;2WRGZL|urxSDV zHFrg0?&{ojs_n$=fsb==mS+WhW79+qZe^Rv^=rw1hzPaZ=hDU1=dDS24(@xK%k z0q2v+&dKrAc`Tua5LXtK=czph22DB@C|7SUWZybQPG?l? zcP5zR7D<&gdT=Gu0GGFVce*V|w!mFQJ&AFv4LyDixoMZR zWd4)Y=QSBrnGSesutr(K$&vYP+O4s7a=yyblErh-eI!%*N#A4m!4@}4eE#bf;@q|% z{~ygs8_ieSy&=cj6mIdzt&NLJr9>D$9V1gF)G+7qfI*BOnI`iMbYm81cA93cK5Ry; zyP;+G!*lR;lt6mo1WD^sCb-d~-xfA2m?I95yT`M<$T4wQ%;pUl(5IX#UMPIXXvi})Upq>|Gw|L)+QS}R1B?u$XOs3`ibXl73c2tr%Y0l#7ZM@ zR*sna^j{nHKq;VD`MTAlVXu1h1dQ2y_d(FdgTu5+S&4%4YNLWhhGoSBgK zPJM^k)Edo<>!jQ8l zU$M9k+~|3+Prpp?lr7w2GOs2jUizTpStMa+TkZTjmZB0IQd?E@wJJ*0)>hZte2I3Z zMh)!}d>LXrYdAMIQ#;pUVDd{@4~Gx8T#~r6HR6m<^tSm(r8jH+>z+|BkxzN6-^DsD x4o-vQjE$o@n%@DX?G7InyKfi$|C`n@iLG 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�uSEhkZ4viw08 zkDDGi5V~mpg?#|`+IJ2+Xx}<;5z{pYc^$OE=eJpZe$VeYR@`j1T(EHOnHT`QcF|Yo z;2QR~q=)^Tpnvy}BY@tq`tAJ}O;tChc(C}3x%n@SL}$4kj7aY?k4)8lg@BI&hy&pF z0N5$W1ITxW8I?k54}gA82r3zr2USgP1LMiw;6$>^KcRc|)!@G)9ANxsfJBPaV<9|6zH_MUS9 zXWjGGflInK_g|nu59cG`^u3>0WAWEV?$IgZ4C)uR+bnr~-x(2t9Uc92y>-BF&1phM z55TW_!~Fc=`Sb5y(PIizd~KjZI1rg}?W?fl&OKqtIt2Xgh-9)GQ!xnoaJ{3y4SGEO zXVC8sP9Qr1Vgd3r%GvJhlR#NjV5`>n$%-!nh^=Mp%$b~Pq22v1e(XY2D(yxlryZQT)|Y}jR^s5&2p}xM z#1$^Hxu_A(Ojh2dsEl>nFMIv|o^J6+4D85l17rT^o6UbOT3BS2nqQR#z;ET(woOpG zMuBrTR^3Pt@U_j9-I~{byn&<>@7XdaT%x;HFYy9dC&3xK{896GiX+~Ig6g-#38+A)(bIwMkZ8dlE z|MSCsXM|NQ_Wm)C1u~>>$4E+!r5DxFxixLwqK5V|phx#kfxhFGu-c}ext&VeAm9=7CGG8?RscV^d~o$eeK$3- zjsZz}LEW|>{l+DCb=}_-3wNLY>i7z1C%LEy}HXbefEZDjHaDEPtC*Rn2uH=>7XG}{VnBqZ$%mNtO?hQ_E z+8vUt-4&7okWU67>_H((WCy@~TW~zt78FOeQ;G+$)4;VG6%TGcPA@p$?hnuVCt!Y_ zZ1avMYp;byudxrr+uEOfScK3Xw~tI);m44MM+nu8kwT>=LZBoOLKTS+s7NSBKH`zV ztZGUoh96aXfvpFO%7dI*4>p>6l$YhVXWwNCgVp6P+`UKB2>`L`O zu=-bp8IAVur{Q-I$WSbf6PH}ct7uY4ntBH%4V_w1O$(KuSJXBVbweY`Z)hOu`g(wU zJyA4(8XJkS89?8Ht5qWO_0=|NI94}dn#SnrjiA@V9#c2PZRqS#Z3b80Ns7CANkP}Z zprF1jCRV6=-}OP3nlLl_uSH*7+`4ez`Lfsd*-tI}>H>kgRPyTHvmGyNvpMthD$9Fs zVh)g=v-Z&Zg}cv&zhw^B*rNyg>w8gWKz4@qPC*AS32o7WJ$AUL*+czzH^oC7JA4zY z_XMTX0pzE42B(l6pzR^aWIKR<`+x0_{Nb< z-mzq>FTmd)-s?>xn_Oe~X0DMxs}jq*#b?Kze`y<%@w#g||3V;Fksl#07>SY;Xd?v* z62X&^aISO;T>FG~27M|Zhph{wv`49_B2`HGuRQ${8{f7Ppm%l`-SEgPc8cDLi=m`F6b5@Z8U(NpM8#9CeTQG1K{T?}Cys*rW&r#~ z06oHf3j*I0T9260HIDwT|Cn{*|MFP8_&@AIQlE54$ll`1k|qG`TcX7I6X86$4nPmE zmymF_h=j2OB$UY~Aq<{D#;pg1Bq&!v0pAxuk4q;6G6Yk;x%_S)x|n_`HtWzKueiB8 z?WyIBANmf|IfDL6pG?6*nz-~7v#d!VuIucV*0pKnRQg7rve7$sth8w)a&+>oZA8_I zWs}XICPUjw<>aY!4S*g2U)a)R06n<(HV}ZlqyvSJZzm<-@{6DYDD3RjC|i4_%*w_c z@N;~t6wZrVPtAF4&v~CW%r6XsqbCdYohPsCJ=gof_EXoMT4PSFTsreTGXrz@3%1#8 zUbx$?@{K)bDbT+TdTkHN4rKeaTCm%8;+35?vKP0VFq?TzQ<&nuWApXM?YsPvig)=Z zPi_MjzS*A!iU$F_!L92>0|D&)K>+q`n3e&!qqh3QQ;%(e;|*RhREv&&Gs50823`~2 zwA8_G}WoFgWY6!e7@ z^!0*crU*I!5ddERZl6bj5&m!UTLd6i2lH_$dD^K%Oi+T)AuIS+O29>d(+ z{6F22_}6*)Q9q`+ZtsJT^e~qhYoj-Qc{bQwGnkQwzwQIx_N}VQ7xpP1woIH z$5hR2&=<9K0pvmLT?WV-1fVaaa`w;xboP>x-l0KpOLs)9r0^{ZkL-I6o*LuTJ!fBg zb=R4=S9hHqdv*6&^6K96+L!m7QOwz5z3yIX+ZbZj-)#{u%)6y$dS+(F>h z5$2%NU#nMlpB{T@`$^uMO;*ciUepw(xbIkTDPYAmFPdVff1+lqUjo^Lt{mJsYLg$h zb3beWr-IU6J4mDb>bq2x{Hwy5PXA>^3sCsr^5jB8U+1oI|1&yY{{#42*AGU)HLC_?addr zp3Ht~_5P1%Ue*+*xbOJb#^r;pp7FdLeu)!X!KvSdd^`ntboaL*p9Ek}BwM`z^jYvm;v0)ZbSg&Bea`6qQ*A5M=Dl11zVfB2K~G%Z|)Jx&CP#tK0JA@ zV_f!j?;KG~I6uESl&iQI%9d#(xN?2|9vprI2Z4`}7XaY-AZWqahcVy|06K;+aP=X1 zAf}9jvXvA5d9o(Y97&RWOx9j2@5niZ-Ky@HO87Cu%-;ULt|T#MCn~CUvno5Y#SMME zil%<8s;L*?-U*;L)X9U3zZ>ZFkjIpb5%k@+RNB!^$^rJ}0QzzOKAsnM_LJhin-k*J zUV5ykco}v&Gk>lSeH8(7y_LW#{P`vYDn+=G`*13eFEx#0CvCJ{(rSCdn<>wMh?CpQ;7?bvjb3)!%KDnaAV2+|LjHkW{ z(ANf|YiCOV;9_d)!BBAa;cy%Q3TKG{_(DDK@pV*s2OeX|NC;bTGl-?Aa82U`*#;#o z+v^_qM|1yw?ZRl^HqcFbCCh%Ftg8KzRn-|SZ5n7-wGK?Fo4QGUV>>AX*yHTi!e#`# z9`aa1iIbuVTidC@*O`znr2yYUsSLng*4|0V+x4I??}W#?`bkOe2vPTpwDX&KF4JTc z&)koze_^xrQ?Kl>J-uMp8S(sWr$oUp2fVVy$zi;Lx=^laB!nZM z3gO5|5I{T#;m+183{yNzggn3>Tz+^SAD}Ow9t&e(2SEY9KY*`}ANP-aYv)g( zI)}z7{Z+iM;-j46Mn6e?Pra(SZ!*8JlLCEFGrD(#yAkm47&W+xnhyCc3i4$X;EghX z9vpo|C#G<~)dTE{y9Y>7?}$dy*2hg%SFH2MzW4G7Pw%wk4cwstRWJ#~1_ z7V8&rIfI$6``Unx?U5`3NC%yDFSy16?|)-_tU&NXIYjay9pmzTq%mt79o@zGh2R~H|&$DMxe%klhQjy?84zdIkB z^~Tji)&Y+!aeN3bzbZ^vFc`#DXaZPLZ6HfR0UrlrF`tk5`v@kVL@;>J@<=2eQ!=D> zSklQbma-)vN0fCjBE|B!Z`?~39#Ox3n1OHapYaR74ADDT`PHtnhVF`j=I-&r=1yG^ zm4^p+Pr3IFy^}YTP*N>*jDxNK@pjC~--bOpcud_?0O0kY$C69v6uNpzanGPGziX(I zSKr|t!%;qOe;*Uk7H+bC3_$-9y8EXW-(SiG15M5gn@=nSz)N4`P*y`Ju?4Z3#OUE6n6{w0&Tt#cYTv*eCGy_SltHCSYqZ8 zP0T!FK+)9kx*HK>gJ&dwJ_45>1}7gy)?JSv>s%tWX09=VE3QTemN*1kzHjUGI_^Vz zUjtP4j#;?GEZ$mEx7YgRW`Cv~hyB0dey@&+%vUZaGIv~069o9Nl(HZ}ep?Vvbu*AH z(+097BoHfcm{^&^Cy{IciNqFQACbo)k>K#7;Q5F=5j-Y?=M>{%OnI$WhA8n&aOxo| zubBBKoq`{ISj${-&s?u0*6Zo=vWw!HmO^!N*H}Som#zQ@Tn(uiBkU3G2z!0aJVIWt zGHL+U0C`XafWHD^--)Rkcpg;R)lEve`$I>7b_spq~!-nV<)0UfgD*nzz{+Yv_Nb-+fd3i^Bfj);fjRZM+fJ zXyzKFUGEV~<=fW*%-6U@khK8zb?)KB%smt!A5Jy__&2yk5;NDx$#u?AjmsQDLq9#^ zvtrS~Yk#_*i6b)u-ITL)#4kfrQvR1IEB}3AO~)TfyGH(0Sl#m1{QUZ-IpUHzJZb)O zEM@Vt!qVEml{Iw#xwx+Lk9>9Y|Aiqv^ppS3umn2Flfh~89BGVY z4#~`OH|U}af3C7Bn6K&&;wdHq*s?i{Zy4ovC5`8W>eUG&t?Zt=H;agaE{I@GD>*X{>>3MNoN1>{vdpy6jn*i_u z@CbK3@UdRr=*Xi+~4p8q|gA0@y=G0Bu=!FDdQ86wc6qw58LJCRM+9 zKd$}(V%8I@56yjk;|c$lx1Aa{0{*2fHu`p}4S8|v*SmSj0$2{M%KE9khLx$l%ogGkFUEHUbw6elDG>JQ$h5Tosoq zd7W2W^JE66@-e62v`4YB13z!(5AaioITjZGz1_k0iHk`&iyV`4w_nTR_y+LRqA*cG za|l;49Kw-n!ZS4lp0juCrY7 z!ln~qBjD$6K1sEx7vT7XEhho?s1uZ?LmwU=p0~w1{>c@G-bW}y^r|^$DNB7!5=MY3chj-w#)TqTJ?*fXUhimf1_Sc=J%lW;abpRF1W zVJOSJGet2M!!!1t^p1Pspttw09;TFzeQ4?;xY6y$qI1vvOhP!+(vs@n+sZc^5RDV)JxL4AjNP_B5+ z_x(F~;vd_8KhNy=iTRssI$qjx3Lp;-e$xpG_NeDK9w*OlK0)b)EvVy^p5JVZ(mlWV zc=xSwIvtt9b`o1crnLIw3C$E4n*>d1$*4hN@Z2c8{wB0T@Z6wAH`O;jHPSUS z+TPYTRNB%zz$~e6^Uo2gtYYZgPiZ{aGyXK%Zx;VBx9IB zVobKBQzA1ckSXUy35#o^1%-XFeDzqYK&_1d;K#6K0D2h-1L%iCClJX2*aP&VI7(d< zR}H|Im3pOfLoY<8Y&zi|_bdYTk%#0i2$xNW=BPj6mN!MKn!37*+Ij)@J*23;=QijK z6QXW`9w1+76u|rzEG9_v1WJIvVpS#i?V8OF* zj#*EvI=Eo2nRVQY8*L_E+=P$^2M=&Z*ke0ygEaw=Qv#?{fSYIHzs4n^Wu zV&}E;@27lzi)CXoFLNu6A0P+cd z`1r&m(E!LNHPB8>fHVO2DGKsh1U(RcVses9Ou_S7IEM3aI3J(XfF_^=m>@SN#-WAR zXrU8;>x_(p;0=8vV*_xfP}|TqC{Q=I1!k-A_t7|_1>woe-~ZH8JGgD#a%=m?to;+8 z_omC=y`I9^c|D2c5kME^g>w|;5o}p!G*>Ya$5&29umJQ-5kOx;Rp(G?9u~TNxC>w_ z2Ew^2g=dz)-7zNX)1&S&4^0ieN4E6W8RFvA;;QD%g4W)_;*Ne@F@U}pCq)71OR2$E zBjmA+vV($rRo89Mmv{96)cfvm^ay%vD*^r$eM3ai(p{5PTzixzrj{}OegghaJ-gO& z)!g;g1@qQ}Q{Q-k0{rs;cZ58)2>Q7jrwajZMQPqfD-E2h=WIH*^{)TdOks*|6Q9_6 zZeHmWR=C0`WO5}1`Vg}8N)QG66;9z}%N#@VKC$y#x!BU}fA2O?1lKf);uQWhp08M& z-#HT2FnF`HcT77tK1H;X2zPYvph=CEOakO50qj!KbVhq{|kcQIO1Zske0QmbgQ&a6XCk7e@hRaIYdJ=Nw#Ye+4 zSZ{iTC;$Ej8if0o$9ua^K6=nKXwLN{#@kopGB;j{&9J|bnwJpDl;%fr?$0RKo7IR0p!YBG|m?hIio7}t~YZ0tjlUdIZZ`r(w{S=C5NQ- zoyx+t{)v)~K2p-zLrQUA6{~0f?xmgWq^t{I52~ObKi$zI2Q9@y`F9Yj*6|^BYcdJhu*9x&ij{)*quFKNs4$8xZVz z$UjFN-v<5MO~=NdWj$+lvWlUe}1mP*HH z5cF`ack=*wIMz;Lx<*TBY6@NpngHmJW4Z>wkB(h006C>esvQNWBizyHV<#{QF8}7( z7&vQG5S1)`_{_z~vV9+I#%fK9siL za$MGz4l(JLE(v)d0d$Elf|p+lQ16T6sKz5HM=vMQYz2wss!2RQe>{$>stL~)M7u_% zZa(Ga`?Q6{y?0LfAp=uw9&x#^W*64Dt6F=TN;?O%IPs~B0zE*!3)OCD!QBJoF$Z4- zkgr5h`T2f;`Tz*p-rH%MN`yU}*9?zpl$j?CfrVlceUZwG4fJz4gRA zGX%ZC!6VQ?2=?cuL4MA9t6Q*tZUY`$4bE9_8TG`MU%fi>+NLnY0|(~mzq}L_u<~+9 z--;_Cx-T6A$g-<}Q%fBDiWi@8|7y{RYk&I2TS#~uZ+laP@(q<;gYg|B6Rjh_@KJ#E z7yzA0&mh33FyD@k0le`Tgs&NgmXa1l;4z{@jcK8Ujso-eBket29D`l0bjGB`E~ExZ;4=i1(p@u8;Pp+a?it53Q# ze`QoQ=dVA7O+CJCV2Wq4x&33-9#Jp4rt?2^PGau47N6(kohjmlv(@#HZ1rFaS3MaA zpr`TFB$2PyCG%B-30#HDKbh`uH8S?SFPyi|ilFA20lWd`2y~;2u%9yx^c3{XEOh|+R&etUe_FEZ z@tK!5g()69;6L)GXS{3x^!3XfgQk`_1Zcl-3~2q(&i%qdi%ZXb(;y}~;RvDfZ=904 zLv?-qf}V+~VF0oYSPD?b{QD%C0Ju&};JFSU4+5x<=?H*ZJJ~y-x!E&5(bqLT(b_*X zRXeEDRrcvfS+|yy^=L^c92bL12MHa`?Rk{H;DQxB1PX%K>vQgk}80Av)`bM=~!wnpdPukd(K^3kq-2_yyWzVG&6b z6liGt{Khb*BJoOG?%rcw;d8&u(!Sq!xJBmvIa66>p=jt*mvs(I;2ErKqy{Aiu2EN!`>HThl)(Y95=YZ5x~H?$l^Udo)^I-{cg5 z4ukXq==(I|0RC}+`#2dK1&5EF066|WaQeL{=mem{ARXhHvHJeenu4b8*i2c;ju56` zw#U!V-A@l(Q4t4o?SqnE^2?Ae^-dSqh2$yHWBDc3G*Q_=yr6iJCMwaz35$oL1%>&3 zS>kJOC-9yK?mjRF=azR9tT-*z;!z4 zsj3?QeJ=>0UeyQB_4SY%fP5_;qr)E@nJnxYNQh>u7Jk>k=-Dd|zdU=5Mbw6chD3+QoOS5_#c*C40ikC zd_dvHXFSv1vvgVV-fpKyANiUu8_uju%ES4sy`OT5Yu^aY5ze!95B%eDbNgT14I=oT z{lFEU-@2vbJe?t{d{x%a@iD)$VXwHh$+f(DFsEf~qOx5x+1EKasp-^cbX}7Zqz`~U z03FW2=qR*fq+bJWe&QxT{w6s3o1}XbbaRw+43F!Y2F3n8R6y#V_@QZq2DgYTm>Nm{b*ewQ!)+JNsbzo|H5Sw{g5LP}v+IryKfT%_{%@-eES!0HQ<&nr2SDvpJ0G)8?fkC4d)#^BYZjLu z|GL{)gkQ3tU~Xx1pL561c*D@RW)cTS$8lhE90y3T3{r`u&N3lm$-loE=`7;^0_rQ9+8hyf;l=Igu!-7zpPSNZr%<=gx+w zy@u=4%)G`A9J9i+WOD`O%~wj=`Wq`c2efcUs9(Ps5hW6L|bH_=t) z3+;nwzx$yaGG5msD*M-r;;I)^9o@@i&8<#lgG2m=n`0fF;~Gs5{EXe;?7POm$&Uf( z#{u-C0Qup5(m&Ww`UVC_&%h9A>mLG_H>j=bAMBDgwWTIXRa<>CSWnRYkHDS^_+6UW zT>TAnqA$C|(YFL#_Uyxlb%_1Sc9OSjaqe>JcC+&m^=lV4taF+#`KK= z^iu%(il^2bKKRIzB|qAjh$;R*d*=Za)w#WWx$FMFdy^YGc4LpxSdwTGyQ0$UEhwlU zO;i*Wdv}bz#9m@dVl+`Bu^}oVT|s)Ap)|dDeQ?IRisc z;CG(cXTSUXUl)RyDxW;Pjq=FN#1`pg;tc|=rCbM)uQXezTD;k8qFNm*Yl%%+S*2vk zH1WA?QCMUO<0D+<*yQE@a9&Ed!V`O<<15%xGWpUYY`r;CWT{q5E!9>Te6I>f_sU9u zy+H?%*Ak6ZLsS3;IeU=OGy_n!k#ifz6%`D zR4E6cKO@Z2ZC2RBF4IDBkJvx#Z^j{qeiE)Gy_%9go2k%e$&FPO_`4t`fTkH>Zv^YB zYHFp%DqeO4_jEFY?SA%hqVs=oN}>}kX}^(?-#e8f@}^6b-*NS3rr2C-l2=ySWqPRg z?Ws$?Z8vFg|AwF6A&34D9laJeFjuU)E;dx_G^QGx(Nsk+(Hr0hkgpbM%=C^dY=Y>12Uqq!JhyafNwOB9D%IhLQKj6 zoUq#Pi#}V#sq2)bgSt&y_D$DmOO*)rZs4wymyj;twS9jENsHFEboFZdX_^i>^n0Qmzt=3bh)3fZssu`l)vCn>NC0?jThy4VYXJT^41p@> zVpK|(=Xu$SogOYBhny#FKH1fMdq~qj8cF0dz zOr3XxBL(~^coA4!-FeF5%ytuk=fGdwYyUrV$e~|~5T~=ZM2(QQ z)DVrO*2YyE3yVaWfO`*f+dTW_J8{BxO-SrrJl7l<=DF@@=%lSD4o=>F`kR@%&fT55 z<8&UlY}TGHA5Q)3bjTzep4P}pEGl~Ien!!#%yQAea=EF1t+rHhG?g}v)=1bIJM6iT zhL>4JD25hawVP!voUIAbS*t1pGKB;N| zdbj`p+&PfuxnLeZA3@L2n@E97Cy6iSZ@Cbc(YoQ+e3lUO-KK=}d3)00z|NBw9RUB> zdD5c1E|V6k5%^uEEFm2yg^&*5ddPRE2mMc8V(c_^(e-u{{D(ID{0=$v+O_h?`4&kf z+|Sttvs77YvudiXL{V8q@F>t(xM^klRS}7q?VkmC7k^rd$!m|jK zF{%9@m5EoCs7*=b+DdJ?+Gwj#>Iqw^B^-b{0-gt;=VD0!$Km4Ka{xZVK8+{MxJPF$ zyA+?>l}7vf!XD%lN{e{wU_{cevkwXmT}-J+|K?HI)q|0#lS1v?IImSlBck7pD`S6N zs8owev856~kHg9k@GST_vhfufqRBVnv*AoN(vKew{i^T-dvlXW+1QZb8AFJVU;NL|@T$>XPbC2zLNImE@lQ zJ>|)ZY@Mbq76b5i!RKk)@UuJQ(Ce1d`3ETz%T&5_ex=2t1h~u1)kJQpCL*Ir{kVj; z7yHU@l1onRxsf!?pZ4N6G+#viv?DE|i%J&d%an{#mCA}k%CMc11%PL(bYQq>1LU!z zhOM=Oo-)9m1+eGnlmK~n<)%{+F1`&wUtz2^<|`|Y;{?`c4e3F}^ZN~)+ z?=&G~cjw8AO9Aw?2>K^s-yY7<9VRWRfw$+iow(5V_x5>k$e~6T_ESG*OHS}B%?gpp zVv|{Fh@{d&!~p#qw(x31Li*skaRI;5_@#SVk6X2CxaX#W+ub%DOq#Ius03{G*nGqW zCZ3y*kqKLm|Ky2VPmsymPLZkGPmyWc&s5LcaW2DS{gFw7LuhX{{M?Nq_(Q&skE5{eF#jQ~g)M^3mO*BF{{rB(7AY zHe(wlQ>mf=PbGRKc1~&Rpa-)k(8GmX2k+Nm3$2Rq0QLgCnsD{@M9(tSSPHe3XCqRw z@m|xb|4b)@{j04<;QJjtgO7Eb6rw=Lx1YGs4tD^3J2-DUAs8PU+D{C**4jN_NW)Lz zkVCIsd%n9fs#K*<6`86mVxxsf&9y{YRSU^hogb4;pZ;}Z%2P)qOk8`Qz3bY2ev`Kx zy6C>~0Ly*L=O)jsM{Mp}4iUFa;LV>CkIhFZdu}-fkpCIu?3`xurqk!f zt~mPcvqmGls&3|SS|pe9r{)Qi5v5X{tW2u0mICaHg;G)?w5Rz}p@0+#_@q!EBy^#K z6hPw76{$7xCEV-ZK1i90i^2Ygn~;BI;eM|O`;!lHw|$*j{{5Lm`l3zWJ?zl%d5x*B zA0&R1SjPIUNU7E^5#}lcJs#^5y@qfbz@7!5XH!-K=v9QTN8lsq^@MGzswp*^zq*o^ z)~!)M--KE%`(_7^z*+4l1ZTCI0ATkFBJB|F0C_yN@eHy8g238Z1_+v4)6ER>C*cR3#KKcYmLl-uY>N3?r6p@94Jv^Q9i^KTq)7 zbV%v8{(u$X?g4h+4BqrP91-+Ki2KIF@ODi1N6Ex3$I0aFCjs^+$)v3($@J}KtTSm} zR=BS_7BX_l-bTMM`=surS2Rl~=1$7wDX!8bI(eZ)ZDrv8qyY6IkqFYf2+oCIJc>!a zKum2|oh_6rVvCp;zlwf1{*PWI`ezg-``yJByTB9#f;WQJ}|~JOz8K(`zZv<03e&#$LwZ;Eh+E4pO`p0IwzjfV}{YTuA%e zO0%`1()`U$Tr=^M-|d$Yd>&_ykU?!c7Dlx32(~$U1QBPCKq|>2^xJv{R<)ZDl-71) z;4DYk#-Tr4^JuhY={(tYe62+%)tYQl15SFhL6X&$L}nGcJ#CLo7fABs*X&>JzV1+} z`}#wA*L4SNuImqwdb@2n2ym~1JwV=VgZ+r6U{59c<7C3-V`MVGej4oy)8s8@qQ-|G z9yKBC=_R7Z()R%S_!7~SOuq7Zo>;Ap6cW%9uFc{lu8$PcwG=1ff7WebY78c31 z`Am(j20LsJ_V(6F1U&#xxV z8*#TOyiwc6BdC|Nd+=Fjk6rNgTz39L@ulvR)mT?lw1v4{+ z%1HRPs}S}DLMbT#*cXZb_yGC>9*@xZ0#YClkvxF}E_|xmbgsNKhQZx@DLL<*zvb%L z23q%ZWYfL3)7=l=$=bE!hxmZd1Lt4MfG*s+GNFh)l`hdFGc|e(8|T;{>>5xOOTTc6bh?+;2=nMH8bB#b{Btif^OJy;}W7q5_ zLmz;@@hI`!c#KTgc)VuP#*>9^s}C>!Fklbvxbs@eBRIVOjvY`QQS+J=Nz5WF%Xls!n0aGjC;;Ej=5R(&cY81nuc^T6-#@{r1ao^LJfM z+O+w*nBiVt)Q0ShEvE+stnoQ~SxkjWYeLZ5+bOja=t;Xje9U@Q&+m761_*D+1WiXzU4T- z3GmEDdIjN-L(ePt<-D9i-$9oegdCO006;;%zRFb?h)`ccQcFaIcOI7vKb!r_m7$|n z?|IK-{h^cN*6b5Nny@(_!Z=-;}27td7 z6F(&U^^oq@1Mt@$uk>7hBE}{Bu;<{Av#+NM=Ly}2DQFv8#1G6As*?&NYD2zIPQjio z6x-80f*yenu+N1HK(0VevIHtqa+xIl+T%i>;}Q3MXYttozOaRL&AG^dTQ5Z~U;Fhf zzr}|ybZYpV#!zG`eRKv(bh}KcG2(1_1U(zlIZLA_Y|Rs(*J2$W+bXqnpw|)?5nmg*9v@!Rtc(%)&cL=T^*jcee@Hg19U?Vv{^1s&i>F{Q`4W8aKierPbx#(DDlZEPW=k443HxnICpnZcE3=L;3)JfX~f z6P72iC;EEW!{a=jnB)nSBuAjpB$f!izw#*0rEY5H-&!I2&Ng3u>ayqRFRzC!{UT!6 z>$uNyAv$$fN-6JZnL@3jAdfd)wYr}{59fRUKOb+nV*fm(c=k_;UPnX*Es+51G12pl zRaM1`%C91lGrBk0g&O{roLz$^wRI25Xp5l7(hb(=-2-b{x%ua{aGAHjF_PG!|B7%^ z=}eyPJVUJ0mdo_Ea;cuM)Yar#QvQzpUq^O)@{eHHGFl%<;71{;OUJG`U>gUJAG3Nl z8Ml5ffF6@NB>UBSDY(}g)BMO4yQnn(@uF?utz_s@g#8{0^!3JM@4oH`aa(hkxUW8J zov`5q*LBV3yM`>^`HstP%*$^q;pabfC%JD-K659)zBHS!sLtg}NggElJODf$%)om6 zPh}h_!rqq2mGR;WIs0y;7WAh@{P8<6{iy_LcK+T|y@Egg)^GmauV-P~ZNsO$s!rdG z8JxhVxLB@KtEsLUsfvsyuro zy7Ag8;g9M6IgbyV*VZkl0!$#;6K6Mn8^B)Q+STvUo1?uyZ1^D#IrN99pI7KxxkAGg zx=3p%7HLVLP(w=PW^yete;L&?{=~fcv8(sb9Jl7sbx7-4m(}}iSgt|Pk6yit@|ab7 zD6o%SiQY{m_fY_OO!LE+0q8@vl8+W{As>ZowGIpYtkxwQJ_n|H1pS&r#BD7=e%(=f z31`Fc>Is`q=DDmouyk<9rVdzQdh+{jY=s>^{;%_~DMKGHIA5gk6v7;#vNlg3qw4ik zqUUl6gOAY1at^!=F9ZU4O*%_VkI5+uKOddg?eAW%pSo^;)0vx(j`rShYR;VPCwn(( zbM48VPF(=7yd$+dD&ZtXBxldv^G(FxyIv2ee$s{`J!Wk=Hqmp< z!GZW{vEfr*MF%fj8yK5c@@1Jqqu}avb%`Eet}}p*zXZKrL%5LMxd3;b(MW+_1kjg& z#YPjnt){Y2T6qH3h`iDWgrDWq!o|B=>v8_a+qwr;QHkC)z}CiffuZ#{zw1p$dk@Fw zH2ffk9Qs2veKDNVHyN>F2N?;;9pPT@k#&Ga4-cim@iQ_wXjAn7-!+fl_g(w_kdUqS z#;)8a8o%mb?fBIPDbTyFJ3<*j@4EJg4PdXHu<69LF)Q}F4fI{}+H2tvvDwY4uMsqyXw%fIQb&N%#PKAwnKqX@-kH zjiEqlIC>=|x8rZ^vi3rPi(FF|zmct61Mo(y4Qur6Jc4T5y7`y28tWV0WaOmRx)9JI zhn}hFVF!9vGLp$wksp)u<~3XaI>3KpAD2}JPmEr-jDbj*X!};^U1>Py~l)p_OUzeN8E@y za_Qy=2?b?emCDshPTf|Jd;~pJwt?i1-85Qkqx?1K1(lUV1h7YoD=mbnt;G%)xQQf8SSn4*mBvWyQWO zsTGQ-bf(0V#gdRLmXxHkl(x%>IloHu?I2N)TCq1AAkTz!UppK-XjWiH&1YnI*p6R8 z{%6qdpg@lvxol_Epr8%6-}4Upu;Y{v=K;QJ$BYi!dtq$&LCH9P{a8r$RGJ6aBlO)j z97ET_WB%Ax2akkZ^TuW0`m6}G3%*rogWH8$w+W^7V1^Fp~& zqsB1?^`PfdkT<|lM+69ZNcworGZ-k)^D0e5U@{R=rICoRRu753RA~?;6!ACJ&7*%+ z&^x_3YJP_nZvLOOatqW@3#HrwYr#dW$NMgA^1<{M+T6q;hZ{{P0C!GjlUa33DJ>++cJ{j#yE_FFN@*SjA2;2QUJN0}}w z4;=ht(P!_!?zT(+^XLD4IkjM1e3|e{8c(XsniRU?ItaRG({y zy(P6&kaYb~-ru@jk5fp8FW%nPC6v~vvv1DdOB|Y9%DGyh((3rw8&9QoJ=jRWUI1_x z>a>&v@P59*p5_tsd`$FIsy7m`*+L4X>VoU3dH!|7`d&>gw12+k>hIFhBk+DJkD%Jt z?m;$Z_h414aSOg_F>=oPOx+KVYjXP=?q!c7a1r2$NiJ8WPN1{Dk9e3l z=HSJPul=6FpHgsv!;9 z^n$uHPl4V9kcU(+HJgdVQdLWrDDIt$PISR;tA=0a1?BYCsDL)j-2&FNny^sV$}^a> z_6W8(y9GUJK6d`>CWEKE_CQ6hQwIfZo!!H0 zeRF)d-`Oj?RbT(r(}#ua{BiWky;4Z`wJxg;5;Rq}N8qnMM8>W>SUqm#f#MONJ3spa zVDEI|c1-s>`4!tz*`ksxp0qj}pq|44$a4|&g1RHX9?tVvcoC3Tv)EEzd?9b|<&>g+ z4ObRB^pe7v^f{%TxdK@nQ>`~s^>{4RP)Qy^ZzMv!0RWGE^0+w44thS7=Icr~W&pj# zOaztYO1fC_#dr4;d%g0-2tNLe@qWXaxdleH^bD?UJz=30Qaz`YtN->lhRo~S@aYaY z^k36`2Ipu}sX&oj%&{dS=-Eng>{{&Ju>I$rI-dC5sq2~!UA!Y4AkPNZ+5x|V48;Ur z2l*lOM!?q@d+4cS@K)Q$LECfy{2Tq|t{RIa9E5$R8B1ID_uDx6lO?nZ!n~h&c$`}?`#5teNlgV-f zax20Lf#0FN6_mj$P2N{rV`!b z^O18~wjAfTtfhM(r_J^LoHSp=f!1eDBS+xDu&_y)EkVT)_K3Tkje6pAZ-d?u?cAI^H zRNW$}!Qc;rHc^iU2X7&Rf;QXWTt3i$-Kp-gmJGCyx264~%cLbO-}PNH?t`FhhlecL zRWx$>KFg>T`^m`V`^hLYb-s^`4BJ;VJakXt#|vpY`psYeey<6y{1W^(wLdblX=HY( z*CVzpHiM_sXL2RB92|uJaL;9N0q$G?JwTqrC0N?YSgg+% z$yLQs*@eO1-%EeR_D|yU=4ihUTe=2ZcJ>G|w{{OSwQ>)LZ$94d(2X-=zym5=%t2357iJs6s}*d60GQa765Y-|8Oe>=pjTN5NZyhKB4Y_-Ntw>W@RV z1H{o=DX0$$-b@+cUhfYAH~!-7gM&BM!a1|A@2bt+rZ4VRw;6*|8?Vr}dd*omXuyKa zTZS&#l`&%ZKK+Pg`)tFP?Iq}8OZSkWp}XN##O|u0i*^+a4&1(Xp!dch9j8!R5xy3n z9>1R0`Az|QO$tX|kinHzWnn!YOE!?=^Vl3X=a6i04wp};@(xcOl|CuhaqHwL}6( zF(i6vRTU{yYT~XYrn%D2zuI26&LaYwHXZF7)XFuWq_sy7&a)|MG2U;*TaHb?9r`nB z#mOr}?$Slc3B^K7d;yz0DwmM!X{C(QcTz?@>tYG~*l z$?&CnYZ3C0^x>7mPBL`yE&`yh{y1oR`G)~pPxSX*=Yn|zTQRe_5|S%WSu;6m<^wu!$K^zNpR;Ej z_4=394{@0vKP=&XU#8G$_*zKu4MC4(oO;mzRJzdv9?LWc zdb>Xev>y@v1N}EpkVn`L^j}Xt2-s-*AaIkRpYOWp-rj3wU?NHIV8#g95gE(|_KE8NI#2J7LS)FTdGW z7wv4+n?F7-nVig&MrQDp>I{z9mdzGW-8Z?A>hq}b4J3N(x#x=EC?nZCb#+RGJnv>k z$+C0z(mOlq^)D{GVH#J&@yr*h;+RUKnXdt`1LP@V=|+#nR1Y@Tji4790rEzKyq3rS z^b(VauyjU6zErg{hRJ-T)Qxj(nvV7hY&AZh(AhOm-)j7Vd(FoBPHf_W_nRDY=uaq2 zHkVRLc0=+MClzw6aggeh%VnmMkqxPAzLpTOYo8ZX5Wv4w`C3r-fHa>Gd2(|mTST(id;mR`aL{-Tpl1t7Hp^bZ$>OQZamD-x-zDVE+IaFt>!)-w zIrI#9t>4!?md;*SEHlvAno28zUI>sEQY9NB5gIB1?r1#6Q3v)Fuo8f~6cW7@r&d-P zh|E%DEmdkW9~6}ML?jlyd<`9bes7MNKd6Pvg7c8(#jVHtr?wb3KcJaM5Vj*bNq9j$^K)fZjh9^&RE&EzyIdNgMzn5 zeY9}9^rIkJ?MFe|$)JF(clMqh{z*G`U+iUn`YV!` z5MK0-+=%TP&0rsR%#pFvInvrp7IxoY*A2f8^mf>1v%nlN$>c~$8e67}E?{2#`hLpT zhAWO8dbW0+zxGZn{C}4!j6$B)M6gDWpchd$VG-`8I#)uHH&TnDBmjC$@p7;XKrhF# zjmc73EK_|OnVvI{Mtk{fAm1A9+qUIs-=!_b`lYuVzu+-WrhLPNYNd4iOda}jYx%MB z@W;fBiYurv#?hI!2MivGgqV6VDrMsD-$*1*gBNV+`M&?=&jIGV_x(54+LQV(jX8PWpLNp*_-*|11OLsX9|ml( zAmrcogU{=`k-YD_(KgU;lX<}W4W<3&t~=4^({Oi4_HF8J^frq8Y3Kj_U1F9?T&dvu z#~isVgCn8p^?B6I*?Qn(IfqZOSbUNRz|Z7Lt*LB@;7)$o@o(bO21P^^y|$Ln|0%(R zH6kT{WJ6E{ndBptO@8bYxz5k*>8_~>E6gL^-5;S?x%6(x(sZ&#GA9! z3RwYF%E@7INEVY#vf(@vE&^EsS?wd1n0Y(5Y}=*ebjRl6&!NEm`h?uccF+UlnJlXH zGK!;4(~U2{WSnPdw}0Y3mk0#cmja8y*GDlW#75$O5dBi?wdY7Ykhjp z4e!wy=^nd54&P4b7n#pK^pGuMXK-aTnQSpYT}a)a&B3-yfIPNd;-ac77AAWU$>b}| zNoC^HtEu#bha=)UIXZEkE`NX8zptkpTd<%XDH&wO(%*^HXIwZ%xERn14v9Sq6l zcS@QLIrJwK?w$Je{q&W0>0D+somX==k4f$`__aTz6y81^`S5vfU^%_(yQcdG0bBL} z+}ZtnH&C$ehX9|y{x^;9uLpgfdFx1DcpJP5s2#XqlMo(X?lF7StTq!v+driiO5LdK zg|++H;jZs`ulfvto&aE%_Vrm?^RCYtLfLywO>ghjQaF!?R|;FOi>HSd_T0Z*x~mt~ z>%U3J9do~sdntt_k!NzGR$NS#g*Rid3x|v8o;M<8Nd!lyz#1_ zK#!2GA$)z6I+w3JaqV$-pWj*l_$=Y?SM!lxgPV==32QdmdnukfhLt(=m)3?eS3bO+ z&Ab!M;2SX2->0+4y#luAn+F+-4oBQ?MV=$oBa8>m-!y1|@5Yn;eK&IZ&)-gm1e?N{x&-yfOM^wOg|ulN#v z%wx7po5mK~(pf@)I^Uk`SzMCCSFun~^eHIsB&sFH+i@0|$#-w_0zj&jq1NJ{F zghqSwP6lIAovr%)rn~v}fazNgp{|QZjKd{qxAFsV%C}2NeaBE{3Eb@TPs=l6H zeD_F1+_13Y_nxaa9Y-V#n7es&f4|KD)D6NubJy4QoeNNZmNDJem2U9755gYP{k(Nn z0JgT*oK>m4X0M`k^;$aYDRq0h;39)JYr9NeGPuXA<%DrpbkXbZGSD3u_Uov^f-krtxV@gY#H^iXYwe}=R%^- z#~yoZyJTaJz08)uk!s=?tf+5dQs!(wcI&Az2MV*1C@p3HKBW1o8p6?;Bv~BU{>aCLydLtm9oW{*<;@t zF=ys~hI@U`WFXb9>ySf#eXTnF!~3^#DsJB|U>aiS6}ATj_ zyl8LroxjPgkI%X*eSFp{`pn&6g(G>Y=dPzpHuYs2%J>*yUuPR6aTB<#*PQULAhl0v zk8P8`@x5T`?>==!yRMTL4eK@|YqS&-auK@}5HJwP4@pyjgw`W0NN4HL&5 z=WxZgOs-TLTgZ+2>OqFr#=r4~CH0~mIo~2WtHh^3s7~N&ER|w|g-8MPQX_WL*t=>d z(ATASsTr+@1dsjldV8X`R1vYc+FT@4-HXa9o`@U2H~c!kr1`=jQgyvM&a zbVlDMgMYEM!y$+M+H#@M{(a`o!zIxL6(z9+<<$@JN=Y1pQ+q4BqVU9>M_xG1vB`6$ zUz|6OeeZpJ*53iE0s7WH-T-j$yHDB&JQuz8CqDssdz~HJo2s?15(BhvcAXIx*kMv| z-_FCr@ut|*z8`94PUp#sJ9U}1#I?(erQ3SU3cJ_SYb6&zZ-xto6^<4FKfBkQ)jxEf zxgx03#HGD^O_=apuUZ-^B;@S>ow=9%VN_oE(Ilprlg^e>H)pe%0QH|zJ%{A6aL-vj zHP0TWUE-d!89aq1rig#*tLO}`zw_=?I2QW**z}=k72sf7SQ*ow*Gg6Q zSu0Yy&RBY&^VCJ2RJ#B5joLcV{(<%Twi7~ncAT_u>f6(o?1Ybt?mlxlr{||DD|^je zRo&BTm8{#$mGO}N*LR(|_`{c7QHzVqzKzcu9Zlzb`-mlzq_HH{OdN&464aG$c%*=1 z-&{NooQ>T$TuA%^nJt4WQ^ggqZ-4jTvCrUQA&Y<&M}gga$C?>Rf1 zbpLd@4PbBT;T6v9_G#Gl&ND(6wx6)*z0UUJ^>jePg`m}hdCl6m`M=X{LeP{>Qx|XT zIz8-qw;9Vzy3Jgn>@jPFy!))>Y29WnqjjAYIvi{Lzf~G~mS_noLYNUab0zB9VX&qO*Qpp}uzM1N*Q9!a+nsN0jysyea zgqA8xky0BMQ&9RTZU@=qw|*a=Nf46p?i^g}Fykyne)0TbHW!lo@F4ID@-<}?NtK0O@b=_ty9YVEWz65Ns!{d5Z z#nj|-Y2;(JT%FDo+On{~pYw&lZqOmQbHm%uc?WQx<+c zCb7?i=YRF|m(}SzcUs2K%ckdumDkI4CI#16WfKC##g%3vqf)zl5tQ8~NcRZ%DzJs> znO9mM@mIlftE+3dMoU4iNV)u0Cgbf_7)6Y~*Dw5YcgUf?q&9pN(d**Ff-}*DJVgwH zX}e!gMjjM#s&3^n;|@nY^2E`-4L{}?a>DHb-}MUj>^(dD)H`0QS>T$UUYOGDM%e$_ z_B3A)`+CrKo3)%WKpxV4n7R9`W!$baLvMDTx@bkmDItRp=J+)meiJ{7_7Ci~ft265 zt!Ln{wi5#9wf6{G-*Lji9dA!r9FBGUo--D={q2&_vlWreYJQ)=oBgmtazBkN)uywA zwhShZWHLEa$tH(`N#1Upi-SYZsEYyKz~xCR)7esbEWKjy@gMFD^`g;!dtCHiTnPC) zSp`!wxsoeoTBC$tSzRlvtO3YZ6G>$ikyYA(ZZFfAs2+Kx*-UlUC@i@06)pnUX;WQI z_$IT6A=4a6sNgyF>vhPX=ama2<2{$}jfu!8xf9Lc8lveeTTCIB+$-ejzfUc`{MnVe zL!Pxc$y4OiYhGBhcV?{_^3LqFJ9~b*x}e9WtIS~1(+gn^u>Z-B@G<2#1U)2qO!M6l z^fSW%_R9eLVemMtw)@O5P1otmayw03e7gO_g|o3t)8zNZ6+7Wl_GZJpS~VZ-+r8y@ zzk$x~!Gqg)1ofiYIA0>s*Xu?`N$WfL?D>%F<5HLsT{>HA%fKOLEUeE1;ITfBGwfMH zfV`M;4o5<5N0`f#S7)&$toXc&FTcDIH+kd93$34Lb@E?Hr|&!h$QMn`;)t%4t8`*W z@wH-8H9)?GNDS4KWpFNsx5*LqW^A3r*)<4v1CdwZ_+k6bQG!Z~HeW2eb}zrg{ZvHa z%a0*;$f3WZd=DP{4|dyJ&#Fj?F5;O0_~aggYm1@_WS1Y89;KbX*2m?=RvbEEpZz;C z*7fZ%XU)o9UaOLOej2U=+j`amAKc5U9{AK^Cp+x1TvO*Bkm?ck-4XP&DA1E`GnUx^ z^i^+93l(*qx+K2Sl*PN+OFw?nu>BIs z#j%e$a{GcRCXO&h$Ybfo-dCT^mQtY4Ws6B3PQ!$^74W3B`COUg5rcjEc1r%DQ{P4Q z@_PD$vA>)y#AURO&1cQb=1H!WE7fA5-cV~_3}qrxNb@oy8Xym#mjUQy<|=@@g}UL2 zfR|V4AjRv6tlC6GW{asrsZB^Ms+fNRnAEmW0Q*FyH0}{gs!L;uZCP9qwHs9~ZZeKLQem10=X1bpJ}H32 z&)^D4Ax~nZYL>%y;Pvr z*Glv{A~oRrcpPH@P_HZ7*dbp{^~Nh8xhtyy_SKbO15wn#g~4K~Vruo7IehujsO+LH zFT60yA%`6LS%;z$oiAsWg+h{N+%FbZ-zmUkFQ|!T2#Ri`m9D3qzuE0YVUJ~z?mjEp z^_&?#qsOe3mjUpS?lV_f!G!XxpTUmD`g5veQ|GP#`L5GLNjHFew`ogBmnlog+mjbl z?lL8`1|F+BPg<1U!87=)wr)Ybt;R0s*T%)`53YF=r&D(m+av4~%EYm$9GNzq1F*+M zQ`k$7Q!kk~;uumqz&)SMC3Hypb_)odD}f7uqAHiG<|P#huScepE zv{R?vIv<_%aeNVHLxDsaU!gTAxVlO!jy8}P^>y>(?d_CulNkVCx60LGH-cVKg`hXX z5z9A~wLHC%kuOrNPh<*uB_@&=d1dL4Lk>Mn=i(Ucu4b{qZ`1jO4~j+A_vkzl!{AlN z7Kw_kXEL|EOtMGV_wx#G)qTclw{A05oar`WC8z836*XO_FQ;JNW7dkFpkANk?SNla z=TOpR+7i+gl6=>xp%mZ&?3C+(Z|giMq^iS&h0+cl!KoeG1CO_{w zVX{91$v&o-@10OCzLUa|s55y|YX*x?vMP8am&v16&K3aV3pik|{Yd8t;T%#vPe$_j zYHKb}qsw5)^AhRo6IT<`W^Xursu%7j(D3X1nS_hUjzvUuxtm)uD}y8cf+15gm|CNr zuQyq7XQ*HH%7aY?st#{2(^L`}LcPjNwNKiUJ*IqfE&NwhFog2mv2@meh$6>kE)F@= zXgd3_xWf;bFfQcKBi%2e43ZPez0=^2~uBfI971FG7?xWc3f`eBQ(?4Bz^y_zVPk@GB^1rQp zXCs<_6aRR445MOWo>(4JuGWb;dSeyeV6X`ddLl6x>OgO{Pn|Ra=*_tJ$w-tnMyf<3 zuZCldy|YGMRSOq^+8Vy5vZ8=1I(R=T|C5*AOvE9F9QsW;VY0sl$^I^#TNFd*R!8Tv zNpyj*<}O2A{9`(M>y~pj`eKS}_<_G8r_NqpZ}jk5HlWAMl^X%{nO&xZRd$`e%=To8 zuLnF;iwFM_^qA=FufY?$_ zKsrxy0aAPsOK;Tkj7BS8uOmW(hDeNBu%4PmDK%NBQjN@FsslS3AYY@0Bc%IUNb)tc zknU|YJbhJZK1Z?t?xXA>r%pxu!DTpy9QqsSd}3z%8=2+HA=T4kiv-no^0*|LA*#M# zBq_a-!9DQVw|54=z^H_ugtKPeo*vc{Ait>Vw6NH2Gr}}oXD+io3HZ)am;B_nr!ApM zH(j0pJwm?I#9slP0NkIn4Qy%e5iINA9+U^b|Gtf@e^{$AK6c>0;`rj<6Se>zyA?nD zR#wUG#}&f7e7?9cpDVOsyJaq4NV0i+lEo8{9KM+339#J~K`$Y6fdmr2fH2@!oK=G@lh{$C z2hbzzAoesDjlWY(in;pQ}^^h$xmkX@oONh@?_3tMlp@o@w1O5FC( zK*3#V(gEnTL=5L*0KC*v4QU>Xb$DFmigo#F6C`;HQCbo5HI{O9Wo`~%xj8PUbYR_L zz1Q+{amXQu8Yn8e%=toM!GfC^6}Ms-0{Md?k@Y@ZSQ}p=6Gi24Z(dC)oxS(cofmHh z1R&wCG8|ggb?TDOA+giJm0hQX+OSMR-FT${9|C}f)J~=N#Q^k04Qz+}ld$jLNdX=l zV7Ge!Y3J&116P67ZN~eTI*(m&r}Y@W-Oi)u&28l}Z)mF_^E%f}F?_Lq$L|Q|3SCaj zc8*BNof^Ynoqo)f7G;Z+rYrz{4kY*-o{(z6gtSlS0RKX85u6uu`J@C~%;S+Fcm+@- zl#n8kj1-FGq)4o+EflMa1ww@^mnSQH%oN7P(#yYzXE4`9=aqVWdE>#D)q9S==eu}K z+ZXD~ho6bN@0$MvuG`;{cI=1#S7NhV9+ru`(<+3U9+&gK%@?Us%2bscme!(S>n&9r zz1haqnF!xtqBidq0qC(;UJ8~$vX_~R)U-*d#R9GZz*iGRbv4ypgEw96kF7*xvgk|X zn&fPrd__V5``zRBs6l0o`g3r|A%}iPr!PHfdF;xA@wc-p_Qf!GQ|nz&+-HLh5! zc~B@$yqnKoOgkUl?FAQBHNhLC*!$jj>XLz-CoKvC-vINvOkPr5f8(|Dq=f+Z;Ge+W z!84?Re^s)nOY#7BcmJR57C_pL_ov)u+=3eCv3>?H-`T}Cy_Jja4=r8h?P@i0USNw6 zbH_IS#H)MVPD70bo3A5Nntl!2?sB~qoWNUE%1NaUtMiBd(ED45w?QF?MwMPz(I z@tMTJ(k;ow6+sW^rC#^)=+p1hi>BSp$)9{F?vd+>tC1s)e1Cn!SJz`k{}`X{{vd}j zBej$_Kdqd%Jhha&E476CWd=)h8!jkWERCMa)*93tt-%6Nw<6dDXniGR+`t=KC~?ye zDbBB{v)pX&puv_&8ICakxGV9o1zkgw7OPdHuaXq-<<}Dm%KYx;7I$@wHgL$H|DtgF zx3l+Bdq$?0uDF-WN=`19>5|H2)`U_?WqheP=T1KNvjbNjjKER84L|mG2-oYbySEq>~sQ`Rc=gEt$ohH_&^$^mr9_}6se{y>dJJ{Q~V}iGrYw#T5-qvja z<#ulVnCR;v|C61^EwBRYEv?4P*MfyD$IQ!bIePBx=A-5vXfe_!py^1Tk*!91zuj2n zoshF<{|{dwMWp6UN+@9;OJ@lR3WU;1248F|gcM%{kT2qi0rnD7$deKVxKJn~C6MHc zg#dk#n3ReE_Ck2BNJL7d@IHJDE`jq>nZjBkRa6yA&Nsm&dp3F|9&1%oLVfB6;voR6&#I0#MK&Yx0n>s6oAv_&dA}mc| zE2@*r#g>QVQdU$}#f94$ZK8)ME79+!iC}UT-;S-kugC=LfVH14(~0B>hGx@8FHvFK*p??@ksY zFtLzzC7UDRGK8w?LZO1t`BFlMG|xcT3uF}NF~uX`OGIc$_yGA5F+yKV9qU~tk&<$m zoG@id!j!8BOQEq=$W*oEN_BO)LTM?J%Pkd3rJ1QxSAz9SrAp6Ks0=KHvXZUTSa@np z4PUFX3iSq?NN*q_eI3*($OG7^4jM3=iw#;Lfuj^2V{bf;6IM`@C(YFKNtL;ps4W0> zNbgEW^tj?xS%cuOtq~f`q9TzjGNXjEC@#I|J^cT0j5Tn`p+A{u$G>lO=0;-wYZ)cW z?iX?*Q z&n0P{Jr}6}^0gg30s-*#w%6XS#Z=r}#Fmew6K?_a$vz=L6(@DLapwPr3D2 z0KCiGI@r(u$t@}9&#MOOTa5zfkD8a?V$|HI<|BO$H67uzp!o>zkD7ks*ZP^`l7B~d zA-r_wQOmFHJsgo(!e5Oo@YG7eSF4CXqb5SFhKO_k zaXrG^K=r_*#Q^ep*KgP@H5nk4BjoL%r^X3`Rg^76W3D0^3&I{;4S=tywF(R-4O5{@ zDd0+XKgcd||L*?74vC40Fa3Y$kV6i=W+ABXCgYjg@#B)qg`1N~1ko8>wJ=+#*Qar{ z?4&Zq-6W6c2KVjcw$Q(mXYjWjJ%Wncy9F8`xm&T`PWg!x zZ+G2eEYr9m?CrpB>x!WNHRPWG`X_Az&{qTKjm<~-NScqFo84lB&-X1x`mAa`+Gm{e z2=9(f28Xa@ME%h3TcU4S6eJml45{+u}A?&w4AEb zQ^}r6_?Y7BEg}_gWXWWNEmKgiXTis_DA>bMuAo5ALC`Bzgo~gD!1FZ#dJTXcATQKu zsT41UG>@RKH&vR!-JeW$OHFvA)nH%vWUi$4aaEYjlvS20dy0odufjTfl@(hnjV!f3 zKaVFqn^eg1xt~+m>tamIe;g^^A&34V3O{`KjqBOP9WKOWOitx!Xb+i+#5AE%mLscD zrwfeqm_q)Am_p%#!?zRqg}vCeZ%znMO!olmk!@Z5*E+i{h-~W?z-{LqXldgfU~>kj zw?U`_;HhI>9sZ}Au2`xWx1g?U^LwEG1>B!%fIUEeZdHp>K3V{NX|s_&x0{df+1PZ{ zyb2Dr-r@(L{DfC2DqFh{MX%!L%s)1ozmuhkNP z4r}jvA_TY#4Mxf$yvYiWWw-+r&Z@yq8ftsLI>6V>sIhm@0N87-klwBEHmg-=sMa%8 z#sY>!_4UJIcJQ_2tPk;3jAJmFLk|5l<%Ek{QuvCFmmU^POA#7Ad&t$qr3Afw z3}8pM8CU1AcDEgeuB*w{LH^gEpG#VzN28wtcz8SIQFb>U=|h^0^sWILn-2Fbe{1-h zD@{kt32r)aPVc(;_%Bwjsuv_&>>oc9^|;g5_mbUX8SJ%>DufYfED4h?(wZUVlVX{g z6iO7NNCN2|pk54cFOdQ4(E$AlnFQc2B^)Z*%OK&)0rE-;@+?U4Y%m7^kLCj4(L5c1 zUJszx>xcj$4+$PSX{c@*Y?TD#Kr*}Q>hU;?%v?pJlxv6#;4Zh?h_u#L&DNV_aAA6! z$5)(wRKyRAe4PK`g}AuZw1^07^?bSi8;2Zn=+7ZSh!fsei!W1lx|&upDO$GuW$2le&F_yOO^40d`_}N;qg%L4Z}BSW9^@2q_UxP3q4Pyl+^}2eg-er) zcxO{8_$fJjxwuH7t13}yNwHi-N)&QZB8P+z!$SGt000WuNkl8vL`q*sr+$}9!{9>KQ`3u2S0C^h)`X^xT?6LstM_Rkg2eAJd@GVArKLL6>?4L~U zKZD-e?or;PdA;jk50JOLHEecO(_ypOaJ>AVpD zsF*(IV;)XVDCVq7=ZL<3RKZJ4=ZS?3h1yi6(Ob(jI#Qw5l5$Ay<#HuuW?iX=>?r560wtpy3zVd|9*!Ya_G-406r}$>dm`FMeQ%$ zPa2z4ShgyQBfgL)kY|?4_3R3TF0YU;y;R6kt-Sq+F?r94%YB}&tOIFzpznYFHNxxN zX2X1ZT8^4~;{UgI?y*gsXB-W2yDC5H7DC6Re=!7NxF(7$=mVn@i+*^(JWQUWo0^&vhLfxa@=b&Yf0sj*Sx_)x zPqrg2r{v<|^GzMEUubIESJ8aUS$(y)%;okTFRypMcedv0a~XL>Pptgi_V3(dExy0H zpD||wr?F}{QC<pj!an46FGC?K%}yC(l2`=?trjKf+ZhZ>5r8ANXfH$ z$se73NAy7zem^V9K9Kx*O0>MA<|T`Y9If!^{kL<1A(cK^`IMTT!yPCpiq5X6|JJVj zlat@xpRfPxkyFyg&Wpc3aj9W-NnP8^7p`32c)7iMQ>CXTx!T*4QtjDt6I&0SIHPA9iDGgCb@2#?wS z13{3lC4-@)63oe|<{ZT!r$e7;{&BQeK7Ow8`J&pZub#SGzb(7y;-#4VI}->1$90C; zqr6Y!j$PhX2(y#qb(mper*KwhT@Nzzvg>js8Rl)?H*bxM$IA$tMP43f+G*vbNRw8{ zOU+BS)43GF#!i33eV^~|pXd90zdwD~HsnDIlTHy^EooqJ$1ID`Nftikw5;$bq)#;r zU$e3;8pYVCIiThtZ3+`;X(N$vjgB_{z;c*jX%DLuF;G!2SJRKBuwA`o5T@-rA_q>s zW~ED(Xh+xjCaV1Vsdzj+VJIa5)vfoZM>(dz&%Hi+T(-3r*ZYTBz4v}oUr^ircfJ9_ zF(K|L;*@Vc{-&rRfiNzu?p2#S%;xl@Aj3(kS^jml&5uqU#Zp!ZjJZ0vw6UI6FOf~$i5!YC96JJ=7mVC9X4EQIXxI}-hPk$>-v@h zbaw^a$TjFtHnk+?_Qko`ei_hrW$?3ssaHh{c~R+L>r^s9nP<}AL+rtqciVr&dhhUo zROmt^`V6(3L>aIwp_p>%b4=+)$~wxB#H`cVNhM;ppVL&jdKP13^o z*h`1SA@5Lciphbnty>cBbQ>&JIbqsZkWJ=-c!q~C~$Y3&vbXQ((&kRc+Us%!* z3*W8x2H%maLXEHgqZ$c?%51@|7qUHap0KDOcP)H+J^|OUr=^J&(DavWI57d27Mo1y ziO|QFy|nxz0tW+&^3 zUz4EGggO^WNzEBv-AJjU=4C`s^kF|$6dL~HB}p*;@(qRrI|kik(f4pe?}eKP8|IT~ z{%f}Q;P;4#rFJ7-^lY!SCAWszp!;AMoQLaSo8B9RF-Cy?G7YkG%Bl8yVekf5gGfOU zIF2;UpFk2hhVV|8t6(=O6bK)lWldwzxNOXAY%YdnL^P$6JzH^Ces?RPLxXpf+{riU9dp z45DSOENkTVnV;n+L%4o&ZGBR;6L=s_8{kP#@!EaAs3$G$1wjC#trblYi@cvv3{yko z_UUi=20o#3dj3s53>!kk4BK&u9nL4mP$X;j7R1yQI24E9G0(Y0XhB@*^0!J1eH0!M zG7=tvBeHi+43*lsiRIUwH0)qE4k$e1NZiMuqh Tx6$4$C>_YpC(yeCd6D`b^pu>9 literal 0 HcmV?d00001 diff --git a/skyvern-frontend/server.js b/skyvern-frontend/server.js new file mode 100644 index 00000000..c2337779 --- /dev/null +++ b/skyvern-frontend/server.js @@ -0,0 +1,28 @@ +import express from "express"; +import fs from "fs"; + +const app = express(); + +app.get("/artifact", (req, res) => { + const range = req.headers.range; + const path = req.query.path; + const videoSize = fs.statSync(path).size; + const chunkSize = 1 * 1e6; + const start = Number(range.replace(/\D/g, "")); + const end = Math.min(start + chunkSize, videoSize - 1); + const contentLength = end - start + 1; + const headers = { + "Content-Range": `bytes ${start}-${end}/${videoSize}`, + "Accept-Ranges": "bytes", + "Content-Length": contentLength, + "Content-Type": "video/mp4", + }; + res.writeHead(206, headers); + const stream = fs.createReadStream(path, { + start, + end, + }); + stream.pipe(res); +}); + +app.listen(9090); diff --git a/skyvern-frontend/src/App.tsx b/skyvern-frontend/src/App.tsx index 880af492..8e96842a 100644 --- a/skyvern-frontend/src/App.tsx +++ b/skyvern-frontend/src/App.tsx @@ -1,13 +1,16 @@ -import { Button } from "./components/ui/Button"; +import { RouterProvider } from "react-router-dom"; import { ThemeProvider } from "@/components/ThemeProvider"; +import { router } from "./router"; +import { QueryClientProvider } from "@tanstack/react-query"; +import { queryClient } from "./api/QueryClient"; function App() { return ( - -

- + + + + + ); } diff --git a/skyvern-frontend/src/api/AxiosClient.ts b/skyvern-frontend/src/api/AxiosClient.ts new file mode 100644 index 00000000..c332cab2 --- /dev/null +++ b/skyvern-frontend/src/api/AxiosClient.ts @@ -0,0 +1,12 @@ +import { apiBaseUrl, credential } from "@/util/env"; +import axios from "axios"; + +const client = axios.create({ + baseURL: apiBaseUrl, + headers: { + "Content-Type": "application/json", + "x-api-key": credential, + }, +}); + +export { client }; diff --git a/skyvern-frontend/src/api/QueryClient.ts b/skyvern-frontend/src/api/QueryClient.ts new file mode 100644 index 00000000..aaaac778 --- /dev/null +++ b/skyvern-frontend/src/api/QueryClient.ts @@ -0,0 +1,11 @@ +import { QueryClient } from "@tanstack/react-query"; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 1000 * 60 * 5, // 5 minutes + }, + }, +}); + +export { queryClient }; diff --git a/skyvern-frontend/src/api/types.ts b/skyvern-frontend/src/api/types.ts new file mode 100644 index 00000000..6c4a59be --- /dev/null +++ b/skyvern-frontend/src/api/types.ts @@ -0,0 +1,69 @@ +export const ArtifactType = { + Recording: "recording", + ActionScreenshot: "screenshot_action", +} as const; + +export const Status = { + Created: "created", + Running: "running", + Failed: "failed", + Terminated: "terminated", + Completed: "completed", +} as const; + +export type Status = (typeof Status)[keyof typeof Status]; + +export type ArtifactType = (typeof ArtifactType)[keyof typeof ArtifactType]; + +export type ArtifactApiResponse = { + created_at: string; + modified_at: string; + artifact_id: string; + task_id: string; + step_id: string; + artifact_type: ArtifactType; + uri: string; + organization_id: string; +}; + +export type StepApiResponse = { + step_id: string; + task_id: string; + created_at: string; + modified_at: string; + input_token_count: number; + is_last: boolean; + order: number; + organization_id: string; + output: { + action_results: unknown[]; + actions_and_results: unknown[]; + errors: unknown[]; + }; + retry_index: number; + status: Status; + step_cost: number; +}; + +export type TaskApiResponse = { + request: { + title: string | null; + url: string; + webhook_callback_url: string; + navigation_goal: string; + data_extraction_goal: string; + navigation_payload: string; // stringified JSON + error_code_mapping: null; + proxy_location: string; + extracted_information_schema: string; + }; + task_id: string; + status: Status; + created_at: string; // ISO 8601 + modified_at: string; // ISO 8601 + extracted_information: unknown; + screenshot_url: string | null; + recording_url: string | null; + failure_reason: string | null; + errors: unknown[]; +}; diff --git a/skyvern-frontend/src/components/TaskStatusBadge.tsx b/skyvern-frontend/src/components/TaskStatusBadge.tsx new file mode 100644 index 00000000..8021bf1f --- /dev/null +++ b/skyvern-frontend/src/components/TaskStatusBadge.tsx @@ -0,0 +1,21 @@ +import { Status } from "@/api/types"; +import { Badge } from "./ui/badge"; + +type Props = { + status: Status; +}; + +function TaskStatusBadge({ status }: Props) { + let variant: "default" | "success" | "destructive" | "warning" = "default"; + if (status === "completed") { + variant = "success"; + } else if (status === "failed" || status === "terminated") { + variant = "destructive"; + } else if (status === "running") { + variant = "warning"; + } + + return {status}; +} + +export { TaskStatusBadge }; diff --git a/skyvern-frontend/src/components/ui/accordion.tsx b/skyvern-frontend/src/components/ui/accordion.tsx new file mode 100644 index 00000000..1d8d2478 --- /dev/null +++ b/skyvern-frontend/src/components/ui/accordion.tsx @@ -0,0 +1,55 @@ +import * as React from "react"; +import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { ChevronDownIcon } from "@radix-ui/react-icons"; + +import { cn } from "@/util/utils"; + +const Accordion = AccordionPrimitive.Root; + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +AccordionItem.displayName = "AccordionItem"; + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180", + className, + )} + {...props} + > + {children} + + + +)); +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
{children}
+
+)); +AccordionContent.displayName = AccordionPrimitive.Content.displayName; + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/skyvern-frontend/src/components/ui/badge-variants.ts b/skyvern-frontend/src/components/ui/badge-variants.ts new file mode 100644 index 00000000..2c34ad44 --- /dev/null +++ b/skyvern-frontend/src/components/ui/badge-variants.ts @@ -0,0 +1,27 @@ +import { cva } from "class-variance-authority"; + +const badgeVariants = cva( + "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + success: + "border-transparent bg-green-700 text-secondary-foreground shadow hover:bg-green-700/80", + warning: + "border-transparent bg-yellow-500 text-primary-foreground shadow hover:bg-yellow-500/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +export { badgeVariants }; diff --git a/skyvern-frontend/src/components/ui/badge.tsx b/skyvern-frontend/src/components/ui/badge.tsx new file mode 100644 index 00000000..a6272075 --- /dev/null +++ b/skyvern-frontend/src/components/ui/badge.tsx @@ -0,0 +1,17 @@ +import * as React from "react"; +import { type VariantProps } from "class-variance-authority"; + +import { cn } from "@/util/utils"; +import { badgeVariants } from "./badge-variants"; + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ); +} + +export { Badge }; diff --git a/skyvern-frontend/src/components/ui/Button.tsx b/skyvern-frontend/src/components/ui/button-variants.ts similarity index 61% rename from skyvern-frontend/src/components/ui/Button.tsx rename to skyvern-frontend/src/components/ui/button-variants.ts index c03946e7..2662f0a9 100644 --- a/skyvern-frontend/src/components/ui/Button.tsx +++ b/skyvern-frontend/src/components/ui/button-variants.ts @@ -1,8 +1,4 @@ -import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; -import { cva, type VariantProps } from "class-variance-authority"; - -import { cn } from "@/util/utils"; +import { cva } from "class-variance-authority"; const buttonVariants = cva( "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", @@ -34,24 +30,4 @@ const buttonVariants = cva( }, ); -interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button"; - return ( - - ); - }, -); -Button.displayName = "Button"; - -export { Button }; +export { buttonVariants }; diff --git a/skyvern-frontend/src/components/ui/button.tsx b/skyvern-frontend/src/components/ui/button.tsx new file mode 100644 index 00000000..824394b4 --- /dev/null +++ b/skyvern-frontend/src/components/ui/button.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { type VariantProps } from "class-variance-authority"; + +import { cn } from "@/util/utils"; +import { buttonVariants } from "./button-variants"; + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + }, +); +Button.displayName = "Button"; + +export { Button }; diff --git a/skyvern-frontend/src/components/ui/card.tsx b/skyvern-frontend/src/components/ui/card.tsx new file mode 100644 index 00000000..84a3b50b --- /dev/null +++ b/skyvern-frontend/src/components/ui/card.tsx @@ -0,0 +1,83 @@ +import * as React from "react"; + +import { cn } from "@/util/utils"; + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +Card.displayName = "Card"; + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +CardHeader.displayName = "CardHeader"; + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardTitle.displayName = "CardTitle"; + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardDescription.displayName = "CardDescription"; + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardContent.displayName = "CardContent"; + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +CardFooter.displayName = "CardFooter"; + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardDescription, + CardContent, +}; diff --git a/skyvern-frontend/src/components/ui/dialog.tsx b/skyvern-frontend/src/components/ui/dialog.tsx new file mode 100644 index 00000000..4e01b1f4 --- /dev/null +++ b/skyvern-frontend/src/components/ui/dialog.tsx @@ -0,0 +1,120 @@ +import * as React from "react"; +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { Cross2Icon } from "@radix-ui/react-icons"; + +import { cn } from "@/util/utils"; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = DialogPrimitive.Portal; + +const DialogClose = DialogPrimitive.Close; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogHeader.displayName = "DialogHeader"; + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogFooter.displayName = "DialogFooter"; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogTrigger, + DialogClose, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/skyvern-frontend/src/components/ui/form.tsx b/skyvern-frontend/src/components/ui/form.tsx new file mode 100644 index 00000000..38b3f758 --- /dev/null +++ b/skyvern-frontend/src/components/ui/form.tsx @@ -0,0 +1,138 @@ +import * as React from "react"; +import * as LabelPrimitive from "@radix-ui/react-label"; +import { Slot } from "@radix-ui/react-slot"; +import { + Controller, + ControllerProps, + FieldPath, + FieldValues, + FormProvider, +} from "react-hook-form"; + +import { cn } from "@/util/utils"; +import { Label } from "@/components/ui/label"; +import { + FormFieldContext, + FormItemContext, + useFormField, +} from "./use-form-field"; + +const Form = FormProvider; + +const FormField = < + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +>({ + ...props +}: ControllerProps) => { + return ( + + + + ); +}; + +const FormItem = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const id = React.useId(); + + return ( + +
+ + ); +}); +FormItem.displayName = "FormItem"; + +const FormLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + const { error, formItemId } = useFormField(); + + return ( +