├── .gitignore
├── index.html
├── package.json
├── public
└── vite.svg
├── src
├── App.css
├── App.jsx
├── api
│ └── index.js
├── assets
│ ├── CSV.png
│ ├── csv.png
│ ├── fonts
│ │ ├── Poppins-Bold.ttf
│ │ └── Poppins-Regular.ttf
│ ├── loader_blue.svg
│ ├── loader_white.svg
│ └── react.svg
├── components
│ ├── File.jsx
│ └── styles
│ │ └── fileItem.module.css
├── gx
│ ├── signals
│ │ ├── files.js
│ │ └── loading.js
│ └── store
│ │ └── index.js
├── index.css
├── main.jsx
└── utils
│ └── index.js
├── vite.config.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | .CSV
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "csv-annotator-front",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@dilane3/gx": "^1.2.6",
13 | "axios": "^1.3.5",
14 | "react": "^18.2.0",
15 | "react-dom": "^18.2.0"
16 | },
17 | "devDependencies": {
18 | "@types/react": "^18.0.28",
19 | "@types/react-dom": "^18.0.11",
20 | "@vitejs/plugin-react": "^3.1.0",
21 | "vite": "^4.2.0"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "PoppinsRegular";
3 | src: url("./assets/fonts/Poppins-Regular.ttf");
4 | }
5 |
6 | @font-face {
7 | font-family: "PoppinsBold";
8 | src: url("./assets/fonts/Poppins-Bold.ttf");
9 | }
10 |
11 | #root {
12 | max-width: 1280px;
13 | margin: 0;
14 | text-align: center;
15 | }
16 |
17 | .App {
18 | width: 100vw;
19 | }
20 |
21 | .logo {
22 | height: 6em;
23 | padding: 1.5em;
24 | will-change: filter;
25 | transition: filter 300ms;
26 | }
27 | .logo:hover {
28 | filter: drop-shadow(0 0 2em #646cffaa);
29 | }
30 | .logo.react:hover {
31 | filter: drop-shadow(0 0 2em #61dafbaa);
32 | }
33 |
34 | @keyframes logo-spin {
35 | from {
36 | transform: rotate(0deg);
37 | }
38 | to {
39 | transform: rotate(360deg);
40 | }
41 | }
42 |
43 | @media (prefers-reduced-motion: no-preference) {
44 | a:nth-of-type(2) .logo {
45 | animation: logo-spin infinite 20s linear;
46 | }
47 | }
48 |
49 | .card {
50 | padding: 2em;
51 | }
52 |
53 | .read-the-docs {
54 | color: #888;
55 | }
56 |
57 | .header {
58 | width: calc(100vw - 400px);
59 | height: 80px;
60 | display: flex;
61 | flex-direction: row;
62 | padding: 0 200px;
63 | justify-content: space-between;
64 | align-items: center;
65 | }
66 |
67 | .header span {
68 | font-size: 20px;
69 | font-family: "PoppinsBold";
70 | }
71 |
72 | .main {
73 | width: calc(100vw - 400px);
74 | height: calc(100vh - 80px);
75 | display: flex;
76 | flex-direction: column;
77 | justify-content: flex-start;
78 | align-items: center;
79 | padding: 0 200px;
80 | }
81 |
82 | .main__title {
83 | max-width: 800px;
84 | margin-top: 40px;
85 | display: flex;
86 | flex-direction: column;
87 | justify-content: center;
88 | align-items: center;
89 | }
90 |
91 | .main__title h1 {
92 | font-size: 40px;
93 | font-weight: 600;
94 | font-family: "PoppinsBold";
95 | }
96 |
97 | .main__title span {
98 | color: var(--color-primary);
99 | }
100 |
101 | .main__title p {
102 | font-size: 1.3rem;
103 | }
104 |
105 | .main__upload {
106 | width: 100%;
107 | min-height: 100px;
108 | margin-top: 20px;
109 | }
110 |
111 | .main__uploader {
112 | width: calc(100% - 20px);
113 | height: 60px;
114 | border-radius: 10px;
115 | background-color: var(--color-text);
116 | display: flex;
117 | flex-direction: row;
118 | justify-content: space-between;
119 | align-items: center;
120 | padding: 0 10px;
121 | }
122 |
123 | .main__chrono {
124 | width: 100px;
125 | padding: 10px 20px 5px 20px;
126 | background-color: var(--color-text);
127 | color: var(--color-text-dark);
128 | font-family: "PoppinsRegular";
129 | font-size: 1rem;
130 | margin: 0 auto;
131 | border-radius: 10px 10px 0 0;
132 | }
133 |
134 | .upload__btn {
135 | display: flex;
136 | flex-direction: row;
137 | justify-content: space-between;
138 | align-items: center;
139 | width: 200px;
140 | background-color: rgb(207, 207, 207);
141 | color: rgb(82, 82, 82);
142 | font-family: "PoppinsRegular";
143 | transition: all 0.2s;
144 | }
145 |
146 | .upload__btn.active {
147 | background-color: var(--color-primary);
148 | color: #fff;
149 | font-family: "PoppinsBold";
150 | }
151 |
152 | .upload__btn.active svg {
153 | fill: var(--color-text);
154 | }
155 |
156 | .upload__btn svg {
157 | fill: rgb(82, 82, 82);
158 | }
159 |
160 | .main__results {
161 | background-color: var(--color-primary);
162 | display: flex;
163 | align-items: center;
164 | }
165 |
166 | .main__results span {
167 | margin-left: 20px;
168 | }
169 |
170 | .main__results svg path {
171 | fill: var(--color-text);
172 | }
173 |
174 | .main__uploader__title {
175 | position: relative;
176 | font-family: "PoppinsRegular";
177 | color: var(--color-text-dark);
178 | background-color: var(--color-text);
179 | border: 1px solid #888;
180 | cursor: pointer;
181 | display: flex;
182 | flex-direction: row;
183 | justify-content: space-between;
184 | align-items: center;
185 | width: 180px;
186 | transition: all 0.3s;
187 | }
188 |
189 | .main__uploader__title:hover {
190 | background-color: #eee;
191 | }
192 |
193 | .main__uploader__title > svg path {
194 | fill: var(--color-primary);
195 | }
196 |
197 | .badge {
198 | position: absolute;
199 | top: -5px;
200 | right: -10px;
201 | padding: 2px 7px;
202 | border-radius: 3px;
203 | background-color: rgb(238, 108, 108);
204 | color: var(--color-text);
205 | font-size: 10px;
206 | }
207 |
208 | .main__files {
209 | width: calc(100%);
210 | max-height: 400px;
211 | height: auto;
212 | margin: 10px 0 20px 0;
213 | overflow-y: auto;
214 | overflow-x: hidden;
215 | }
216 |
217 | .tips {
218 | color: var(--color-text-dark);
219 | }
220 |
221 | @media screen and (max-width: 1100px) {
222 | .header,
223 | .main {
224 | padding: 0 100px;
225 | width: calc(100vw - 200px);
226 | }
227 | }
228 |
229 | @media screen and (max-width: 768px) {
230 | .header,
231 | .main {
232 | padding: 0 50px;
233 | width: calc(100vw - 100px);
234 | }
235 |
236 | .upload__btn,
237 | .main__uploader__title {
238 | width: auto;
239 | padding: 10px;
240 | }
241 |
242 | .tips {
243 | font-size: 12px;
244 | }
245 | }
246 |
247 | @media screen and (max-width: 600px) {
248 | .tips {
249 | display: none;
250 | }
251 | }
252 |
253 | @media screen and (max-width: 576px) {
254 | .header,
255 | .main {
256 | padding: 0 20px;
257 | width: calc(100vw - 40px);
258 | }
259 |
260 | .main__uploader {
261 | height: auto;
262 | flex-direction: column;
263 | justify-content: flex-start;
264 | align-items: center;
265 | padding: 10px;
266 | }
267 |
268 | .main__uploader button,
269 | .main__uploader a {
270 | width: 100%;
271 | display: flex;
272 | flex-direction: row;
273 | justify-content: center;
274 | }
275 |
276 | .main__uploader button svg {
277 | margin: 0 10px;
278 | }
279 |
280 | .main__uploader button span {
281 | margin: 0;
282 | }
283 |
284 | .main__uploader button:not(:last-child),
285 | .main__uploader a {
286 | margin-bottom: 10px;
287 | }
288 |
289 | .main__title h1 {
290 | font-size: 30px;
291 | font-weight: 600;
292 | font-family: "PoppinsBold";
293 | }
294 |
295 | .main__title p {
296 | font-size: 1.2rem;
297 | }
298 | }
299 |
300 | @media screen and (max-width: 480px) {
301 | .header,
302 | .main {
303 | padding: 0 20px;
304 | width: calc(100vw - 40px);
305 | }
306 | }
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 | import reactLogo from "./assets/react.svg";
3 | import viteLogo from "/vite.svg";
4 | import loaderBlue from "./assets/loader_blue.svg";
5 | import loaderWhite from "./assets/loader_white.svg";
6 | import "./App.css";
7 | import { FileItem } from "./components/File";
8 | import { useActions, useSignal } from "@dilane3/gx";
9 | import { useRef } from "react";
10 | import { annotateCsv } from "./api";
11 | import { instance } from "./api";
12 | import { formatTime } from "./utils";
13 | import { downloadBaseUrl } from "./utils";
14 |
15 | function App() {
16 | // Global state
17 | const files = useSignal("files");
18 | const { loading, finished, link } = useSignal("loading");
19 |
20 | // Global actions
21 | const { addFiles } = useActions("files");
22 | const { start, stop, setLink } = useActions("loading");
23 |
24 | // Local state
25 | const [zip, setZip] = useState(null);
26 | const [counter, setCounter] = useState(0);
27 |
28 | // Ref section
29 | const inputRef = useRef();
30 |
31 | // UseEffect section
32 | useEffect(() => {
33 | let timer;
34 |
35 | if (loading) {
36 | timer = setInterval(() => {
37 | setCounter((prev) => prev + 1);
38 | }, 1000);
39 | }
40 |
41 | return () => clearInterval(timer);
42 | }, [loading]);
43 |
44 | // Some functions
45 | const handleOpenFolder = () => {
46 | if (!loading && inputRef.current) inputRef.current.click();
47 | };
48 |
49 | const handleFileSelected = (event) => {
50 | // Add files to global state
51 | addFiles(event.target.files);
52 |
53 | // Empty files into input tag
54 | // inputRef.current.files;
55 | };
56 |
57 | const handleSubmit = async () => {
58 | if (files.length === 0) return;
59 |
60 | // Start loading
61 | start();
62 | setCounter(0);
63 |
64 | const { data } = await annotateCsv(files);
65 |
66 | console.log(data)
67 |
68 | if (data) {
69 | // Set link to download
70 | setLink(data.link);
71 | }
72 |
73 | // Stop loading
74 | stop();
75 | };
76 |
77 | const handleDownload = async (link) => {
78 | if (!finished) return;
79 |
80 | // Download file with custom name
81 | const { data } = await instance.get(`/static/${link}`, {
82 | responseType: "blob",
83 | headers: {
84 | "Access-Control-Allow-Origin": "*",
85 | },
86 | });
87 |
88 | // Create a blob link to download
89 | const urlToDownload = window.URL.createObjectURL(new Blob([data]));
90 |
91 | const filename = link.split("/").pop();
92 |
93 | console.log({ urlToDownload });
94 |
95 | // Add link to download
96 | setZip({
97 | url: urlToDownload,
98 | name: filename,
99 | });
100 | };
101 |
102 | return (
103 |
104 |
107 |
108 |
109 |
110 |
111 | Welcome to CSV ANNOTATOR
112 |
113 |
114 |
Upload yours clean CSV files and let us do the rest.
115 |
116 |
117 |
118 |
{formatTime(counter)}
119 |
120 |
128 |
129 |
151 |
152 | {finished && link !== null ? (
153 |
154 |
176 |
177 | ) : (
178 |
179 | Use Ctrl or Shift to select many files
180 |
181 | )}
182 |
183 |
197 |
198 |
199 |
200 | {files.map((file, index) => (
201 |
202 | ))}
203 |
204 |
205 |
206 |
207 |
208 |
209 | );
210 | }
211 |
212 | export default App;
213 |
--------------------------------------------------------------------------------
/src/api/index.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 |
3 | // export const instance = axios.create({
4 | // baseURL: "http://localhost:5000",
5 | // timeout: 86400000,
6 | // });
7 |
8 | export const instance = axios.create({
9 | baseURL: "https://csv-annotator.onrender.com",
10 | timeout: 86400000,
11 | });
12 |
13 | export const annotateCsv = async (files) => {
14 | const formData = new FormData();
15 |
16 | try {
17 | files.forEach((file) => {
18 | formData.append("image", file);
19 | });
20 |
21 | const response = await instance.post("/api/annotation", formData, {
22 | headers: {
23 | "Content-Type": "multipart/form-data",
24 | "Access-Control-Allow-Origin": "*",
25 | },
26 | });
27 |
28 | if (response.status === 200) {
29 | return { data: response.data };
30 | } else {
31 | return { error: "Something went wrong" };
32 | }
33 | } catch (err) {
34 | console.log(err);
35 |
36 | return { error: "Something went wrong" };
37 | }
38 | };
39 |
--------------------------------------------------------------------------------
/src/assets/CSV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilane3/csv-annotator-web/f7e24f7459d61f76720a4d9b9503cdc6dc34511b/src/assets/CSV.png
--------------------------------------------------------------------------------
/src/assets/csv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilane3/csv-annotator-web/f7e24f7459d61f76720a4d9b9503cdc6dc34511b/src/assets/csv.png
--------------------------------------------------------------------------------
/src/assets/fonts/Poppins-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilane3/csv-annotator-web/f7e24f7459d61f76720a4d9b9503cdc6dc34511b/src/assets/fonts/Poppins-Bold.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Poppins-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilane3/csv-annotator-web/f7e24f7459d61f76720a4d9b9503cdc6dc34511b/src/assets/fonts/Poppins-Regular.ttf
--------------------------------------------------------------------------------
/src/assets/loader_blue.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/loader_white.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/File.jsx:
--------------------------------------------------------------------------------
1 | import styles from "./styles/fileItem.module.css";
2 | import csvLogo from "../assets/csv.png";
3 | import { useAction, useSignal } from "@dilane3/gx";
4 | import { formatSize } from "../utils";
5 |
6 | export const FileItem = ({ file }) => {
7 | // Global action
8 | const removeFile = useAction("files", "removeFile");
9 |
10 | // Global state
11 | const { loading } = useSignal("loading");
12 |
13 | // Some logic
14 | const handleDelete = () => {
15 | if (!loading) {
16 | removeFile(file.name);
17 | }
18 | };
19 |
20 | return (
21 |
22 |
23 |

24 |
25 |
{file.name}
26 |
27 |
28 |
29 |
{formatSize(file.size)}
30 |
31 |
38 |
39 |
40 | );
41 | };
42 |
--------------------------------------------------------------------------------
/src/components/styles/fileItem.module.css:
--------------------------------------------------------------------------------
1 | .file__item {
2 | width: calc(100% - 40px);
3 | height: 60px;
4 | display: flex;
5 | flex-direction: row;
6 | justify-content: space-between;
7 | align-items: center;
8 | background-color: var(--color-text);
9 | padding: 0 20px;
10 | }
11 |
12 | .file__item:not(:last-child) {
13 | border-bottom: 1px solid rgb(184, 184, 184);
14 | }
15 |
16 | .file__info {
17 | display: flex;
18 | align-items: center;
19 | justify-content: flex-start;
20 | }
21 |
22 | .file__image {
23 | object-fit: contain;
24 | }
25 |
26 | .file__name {
27 | font-size: 0.9rem;
28 | font-family: "PoppinsRegular";
29 | color: var(--color-text-dark);
30 | margin-left: 10px;
31 | }
32 |
33 | .file__controls {
34 | width: 300px;
35 | display: flex;
36 | align-items: center;
37 | justify-content: space-between;
38 | }
39 |
40 | .file__controls svg {
41 | fill: rgb(252, 124, 124);
42 | width: 30px;
43 | height: 30px;
44 | transition: fill 0.2s;
45 | }
46 |
47 | .file__controls svg:hover {
48 | fill: rgb(243, 83, 83);
49 | }
50 |
51 | .file__size {
52 | font-size: 0.9rem;
53 | font-family: "PoppinsRegular";
54 | color: rgb(99, 99, 99);
55 | }
56 |
57 |
58 | @media screen and (max-width: 768px) {
59 | .file__item {
60 | width: calc(100% - 20px);
61 | padding: 0 10px;
62 | }
63 |
64 | .file__controls {
65 | width: 200px;
66 | }
67 | }
68 |
69 | @media screen and (max-width: 576px) {
70 | .file__controls {
71 | width: 100px;
72 | }
73 | }
--------------------------------------------------------------------------------
/src/gx/signals/files.js:
--------------------------------------------------------------------------------
1 | import { createSignal } from "@dilane3/gx";
2 |
3 | const fileSignal = createSignal({
4 | name: "files",
5 | state: [],
6 | actions: {
7 | addFiles: (state, payload) => {
8 | const files = [...state];
9 |
10 | for (let file of payload) {
11 | const fileExtensionCorrect = file.name.split(".").pop() === "csv";
12 |
13 | if (fileExtensionCorrect && !files.map((f) => f.name).includes(file.name)) {
14 | files.push(file);
15 | }
16 | }
17 |
18 | return files;
19 | },
20 | removeFile: (state, payload) => {
21 | return state.filter((file) => file.name !== payload);
22 | },
23 | },
24 | });
25 |
26 | export default fileSignal;
27 |
--------------------------------------------------------------------------------
/src/gx/signals/loading.js:
--------------------------------------------------------------------------------
1 | import { createSignal } from "@dilane3/gx";
2 |
3 | const loadingSignal = createSignal({
4 | name: "loading",
5 | state: {
6 | loading: false,
7 | finished: false,
8 | link: null,
9 | },
10 | actions: {
11 | stop: (state) => ({ ...state, loading: false, finished: true }),
12 | start: (state) => ({ ...state, loading: true, finished: false }),
13 | setLink: (state, payload) => ({ ...state, link: payload }),
14 | },
15 | });
16 |
17 | export default loadingSignal;
18 |
--------------------------------------------------------------------------------
/src/gx/store/index.js:
--------------------------------------------------------------------------------
1 | import { createStore } from "@dilane3/gx";
2 | import fileSignal from "../signals/files";
3 | import loadingSignal from "../signals/loading";
4 |
5 | export default createStore([fileSignal, loadingSignal]);
6 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
3 | line-height: 1.5;
4 | font-weight: 400;
5 |
6 | color-scheme: light dark;
7 | color: rgba(255, 255, 255, 0.87);
8 | background-color: #242424;
9 | --color-primary: #535bf2;
10 | --color-text: rgba(255, 255, 255, 0.87);
11 | --color-text-dark: #1a1a1a;
12 |
13 | font-synthesis: none;
14 | text-rendering: optimizeLegibility;
15 | -webkit-font-smoothing: antialiased;
16 | -moz-osx-font-smoothing: grayscale;
17 | -webkit-text-size-adjust: 100%;
18 | }
19 |
20 | a {
21 | font-weight: 500;
22 | color: #646cff;
23 | text-decoration: inherit;
24 | }
25 | a:hover {
26 | color: #535bf2;
27 | }
28 |
29 | body {
30 | margin: 0;
31 | display: flex;
32 | min-width: 320px;
33 | min-height: 100vh;
34 | /* overflow-x: hidden; */
35 | }
36 |
37 | h1 {
38 | font-size: 3.2em;
39 | line-height: 1.1;
40 | margin: 0 10px;
41 | }
42 |
43 | button {
44 | border-radius: 8px;
45 | border: 1px solid transparent;
46 | padding: 0.6em 1.2em;
47 | font-size: 1em;
48 | font-weight: 500;
49 | font-family: inherit;
50 | background-color: #1a1a1a;
51 | cursor: pointer;
52 | transition: all 0.25s;
53 | }
54 | button.active:hover {
55 | background-color: #646cff;
56 | }
57 | button:focus,
58 | button:focus-visible {
59 | outline: 4px auto -webkit-focus-ring-color;
60 | }
61 |
62 | @media (prefers-color-scheme: light) {
63 | :root {
64 | color: #213547;
65 | background-color: #ffffff;
66 | }
67 | a:hover {
68 | color: #747bff;
69 | }
70 | button {
71 | background-color: #f9f9f9;
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import GXProvider from "@dilane3/gx";
2 | import React from "react";
3 | import ReactDOM from "react-dom/client";
4 | import App from "./App";
5 | import store from "./gx/store";
6 | import "./index.css";
7 |
8 | ReactDOM.createRoot(document.getElementById("root")).render(
9 |
10 |
11 |
12 | );
13 |
--------------------------------------------------------------------------------
/src/utils/index.js:
--------------------------------------------------------------------------------
1 | export const formatSize = (size) => {
2 | if (size < 1000) return `${size} o`;
3 | if (size < 10000) return `${Math.floor((size / 1024) * 100) / 100} Ko`;
4 | };
5 |
6 | export const formatTime = (time) => {
7 | let remainingTime = time;
8 |
9 | const hours = Math.floor(remainingTime / 3600);
10 | remainingTime -= hours * 3600;
11 |
12 | const minutes = Math.floor(remainingTime / 60);
13 | remainingTime -= minutes * 60;
14 |
15 | const seconds = remainingTime;
16 |
17 | const hourstoString = hours < 10 ? `0${hours}` : `${hours}`;
18 | const minutestoString = minutes < 10 ? `0${minutes}` : `${minutes}`;
19 | const secondstoString = seconds < 10 ? `0${seconds}` : `${seconds}`;
20 |
21 | return `${hourstoString}:${minutestoString}:${secondstoString}`;
22 | }
23 |
24 | // export const downloadBaseUrl = "http://localhost:5000/static";
25 | export const downloadBaseUrl = "https://csv-annotator.onrender.com/static";
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@ampproject/remapping@^2.2.0":
6 | version "2.2.1"
7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
8 | integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
9 | dependencies:
10 | "@jridgewell/gen-mapping" "^0.3.0"
11 | "@jridgewell/trace-mapping" "^0.3.9"
12 |
13 | "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4":
14 | version "7.21.4"
15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39"
16 | integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
17 | dependencies:
18 | "@babel/highlight" "^7.18.6"
19 |
20 | "@babel/compat-data@^7.21.4":
21 | version "7.21.4"
22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f"
23 | integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==
24 |
25 | "@babel/core@^7.20.12":
26 | version "7.21.4"
27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659"
28 | integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==
29 | dependencies:
30 | "@ampproject/remapping" "^2.2.0"
31 | "@babel/code-frame" "^7.21.4"
32 | "@babel/generator" "^7.21.4"
33 | "@babel/helper-compilation-targets" "^7.21.4"
34 | "@babel/helper-module-transforms" "^7.21.2"
35 | "@babel/helpers" "^7.21.0"
36 | "@babel/parser" "^7.21.4"
37 | "@babel/template" "^7.20.7"
38 | "@babel/traverse" "^7.21.4"
39 | "@babel/types" "^7.21.4"
40 | convert-source-map "^1.7.0"
41 | debug "^4.1.0"
42 | gensync "^1.0.0-beta.2"
43 | json5 "^2.2.2"
44 | semver "^6.3.0"
45 |
46 | "@babel/generator@^7.21.4":
47 | version "7.21.4"
48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc"
49 | integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==
50 | dependencies:
51 | "@babel/types" "^7.21.4"
52 | "@jridgewell/gen-mapping" "^0.3.2"
53 | "@jridgewell/trace-mapping" "^0.3.17"
54 | jsesc "^2.5.1"
55 |
56 | "@babel/helper-compilation-targets@^7.21.4":
57 | version "7.21.4"
58 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656"
59 | integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==
60 | dependencies:
61 | "@babel/compat-data" "^7.21.4"
62 | "@babel/helper-validator-option" "^7.21.0"
63 | browserslist "^4.21.3"
64 | lru-cache "^5.1.1"
65 | semver "^6.3.0"
66 |
67 | "@babel/helper-environment-visitor@^7.18.9":
68 | version "7.18.9"
69 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
70 | integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
71 |
72 | "@babel/helper-function-name@^7.21.0":
73 | version "7.21.0"
74 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4"
75 | integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==
76 | dependencies:
77 | "@babel/template" "^7.20.7"
78 | "@babel/types" "^7.21.0"
79 |
80 | "@babel/helper-hoist-variables@^7.18.6":
81 | version "7.18.6"
82 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
83 | integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
84 | dependencies:
85 | "@babel/types" "^7.18.6"
86 |
87 | "@babel/helper-module-imports@^7.18.6":
88 | version "7.21.4"
89 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af"
90 | integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==
91 | dependencies:
92 | "@babel/types" "^7.21.4"
93 |
94 | "@babel/helper-module-transforms@^7.21.2":
95 | version "7.21.2"
96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2"
97 | integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==
98 | dependencies:
99 | "@babel/helper-environment-visitor" "^7.18.9"
100 | "@babel/helper-module-imports" "^7.18.6"
101 | "@babel/helper-simple-access" "^7.20.2"
102 | "@babel/helper-split-export-declaration" "^7.18.6"
103 | "@babel/helper-validator-identifier" "^7.19.1"
104 | "@babel/template" "^7.20.7"
105 | "@babel/traverse" "^7.21.2"
106 | "@babel/types" "^7.21.2"
107 |
108 | "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2":
109 | version "7.20.2"
110 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
111 | integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
112 |
113 | "@babel/helper-simple-access@^7.20.2":
114 | version "7.20.2"
115 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
116 | integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
117 | dependencies:
118 | "@babel/types" "^7.20.2"
119 |
120 | "@babel/helper-split-export-declaration@^7.18.6":
121 | version "7.18.6"
122 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
123 | integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
124 | dependencies:
125 | "@babel/types" "^7.18.6"
126 |
127 | "@babel/helper-string-parser@^7.19.4":
128 | version "7.19.4"
129 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
130 | integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
131 |
132 | "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
133 | version "7.19.1"
134 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
135 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
136 |
137 | "@babel/helper-validator-option@^7.21.0":
138 | version "7.21.0"
139 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180"
140 | integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==
141 |
142 | "@babel/helpers@^7.21.0":
143 | version "7.21.0"
144 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e"
145 | integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==
146 | dependencies:
147 | "@babel/template" "^7.20.7"
148 | "@babel/traverse" "^7.21.0"
149 | "@babel/types" "^7.21.0"
150 |
151 | "@babel/highlight@^7.18.6":
152 | version "7.18.6"
153 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
154 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
155 | dependencies:
156 | "@babel/helper-validator-identifier" "^7.18.6"
157 | chalk "^2.0.0"
158 | js-tokens "^4.0.0"
159 |
160 | "@babel/parser@^7.20.7", "@babel/parser@^7.21.4":
161 | version "7.21.4"
162 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17"
163 | integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==
164 |
165 | "@babel/plugin-transform-react-jsx-self@^7.18.6":
166 | version "7.21.0"
167 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54"
168 | integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==
169 | dependencies:
170 | "@babel/helper-plugin-utils" "^7.20.2"
171 |
172 | "@babel/plugin-transform-react-jsx-source@^7.19.6":
173 | version "7.19.6"
174 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86"
175 | integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==
176 | dependencies:
177 | "@babel/helper-plugin-utils" "^7.19.0"
178 |
179 | "@babel/template@^7.20.7":
180 | version "7.20.7"
181 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
182 | integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
183 | dependencies:
184 | "@babel/code-frame" "^7.18.6"
185 | "@babel/parser" "^7.20.7"
186 | "@babel/types" "^7.20.7"
187 |
188 | "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4":
189 | version "7.21.4"
190 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36"
191 | integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==
192 | dependencies:
193 | "@babel/code-frame" "^7.21.4"
194 | "@babel/generator" "^7.21.4"
195 | "@babel/helper-environment-visitor" "^7.18.9"
196 | "@babel/helper-function-name" "^7.21.0"
197 | "@babel/helper-hoist-variables" "^7.18.6"
198 | "@babel/helper-split-export-declaration" "^7.18.6"
199 | "@babel/parser" "^7.21.4"
200 | "@babel/types" "^7.21.4"
201 | debug "^4.1.0"
202 | globals "^11.1.0"
203 |
204 | "@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4":
205 | version "7.21.4"
206 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4"
207 | integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==
208 | dependencies:
209 | "@babel/helper-string-parser" "^7.19.4"
210 | "@babel/helper-validator-identifier" "^7.19.1"
211 | to-fast-properties "^2.0.0"
212 |
213 | "@dilane3/gx@^1.2.6":
214 | version "1.2.6"
215 | resolved "https://registry.yarnpkg.com/@dilane3/gx/-/gx-1.2.6.tgz#1f51976856e65892377ca2de781bc6bad4570a60"
216 | integrity sha512-2svz9YX651q9PbDosXpElP8TRsXEw8NT1mmQm0IJIBEqCkJYtmyNG/7E6UnWpW8gN7Zcftl05n73608U68B0hQ==
217 |
218 | "@esbuild/android-arm64@0.17.16":
219 | version "0.17.16"
220 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz#7b18cab5f4d93e878306196eed26b6d960c12576"
221 | integrity sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==
222 |
223 | "@esbuild/android-arm@0.17.16":
224 | version "0.17.16"
225 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.16.tgz#5c47f6a7c2cada6ed4b4d4e72d8c66e76d812812"
226 | integrity sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==
227 |
228 | "@esbuild/android-x64@0.17.16":
229 | version "0.17.16"
230 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.16.tgz#8686a6e98359071ffd5312046551943e7244c51a"
231 | integrity sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==
232 |
233 | "@esbuild/darwin-arm64@0.17.16":
234 | version "0.17.16"
235 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.16.tgz#aa79fbf447630ca0696a596beba962a775bbf394"
236 | integrity sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==
237 |
238 | "@esbuild/darwin-x64@0.17.16":
239 | version "0.17.16"
240 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.16.tgz#d5d68ee510507104da7e7503224c647c957e163e"
241 | integrity sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==
242 |
243 | "@esbuild/freebsd-arm64@0.17.16":
244 | version "0.17.16"
245 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.16.tgz#b00b4cc8c2e424907cfe3a607384ab24794edd52"
246 | integrity sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==
247 |
248 | "@esbuild/freebsd-x64@0.17.16":
249 | version "0.17.16"
250 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.16.tgz#84af4430a07730b50bbc945a90cf7036c1853b76"
251 | integrity sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==
252 |
253 | "@esbuild/linux-arm64@0.17.16":
254 | version "0.17.16"
255 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.16.tgz#35571d15de6272c862d9ce6341372fb3cef0f266"
256 | integrity sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==
257 |
258 | "@esbuild/linux-arm@0.17.16":
259 | version "0.17.16"
260 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.16.tgz#b65c7cd5b0eadd08f91aab66b9dda81b6a4b2a70"
261 | integrity sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==
262 |
263 | "@esbuild/linux-ia32@0.17.16":
264 | version "0.17.16"
265 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.16.tgz#673a68cb251ce44a00a6422ada29064c5a1cd2c0"
266 | integrity sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==
267 |
268 | "@esbuild/linux-loong64@0.17.16":
269 | version "0.17.16"
270 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.16.tgz#477e2da34ab46ffdbf4740fa6441e80045249385"
271 | integrity sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==
272 |
273 | "@esbuild/linux-mips64el@0.17.16":
274 | version "0.17.16"
275 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.16.tgz#e1e9687bbdaa831d7c34edc9278200982c1a4bf4"
276 | integrity sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==
277 |
278 | "@esbuild/linux-ppc64@0.17.16":
279 | version "0.17.16"
280 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.16.tgz#2f19075d63622987e86e83a4b7866cd57b796c60"
281 | integrity sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==
282 |
283 | "@esbuild/linux-riscv64@0.17.16":
284 | version "0.17.16"
285 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.16.tgz#bbf40a38f03ba2434fe69b5ceeec5d13c742b329"
286 | integrity sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==
287 |
288 | "@esbuild/linux-s390x@0.17.16":
289 | version "0.17.16"
290 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.16.tgz#d2b8c0779ccd2b7917cdf0fab8831a468e0f9c01"
291 | integrity sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==
292 |
293 | "@esbuild/linux-x64@0.17.16":
294 | version "0.17.16"
295 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.16.tgz#da48b39cfdc1b12a74976625f583f031eac43590"
296 | integrity sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==
297 |
298 | "@esbuild/netbsd-x64@0.17.16":
299 | version "0.17.16"
300 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.16.tgz#ddef985aed37cc81908d2573b66c0299dbc49037"
301 | integrity sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==
302 |
303 | "@esbuild/openbsd-x64@0.17.16":
304 | version "0.17.16"
305 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.16.tgz#85035bf89efd66e9068bc72aa6bb85a2c317d090"
306 | integrity sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==
307 |
308 | "@esbuild/sunos-x64@0.17.16":
309 | version "0.17.16"
310 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.16.tgz#16338ecab854cb2d831cc9ee9cc21ef69566e1f3"
311 | integrity sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==
312 |
313 | "@esbuild/win32-arm64@0.17.16":
314 | version "0.17.16"
315 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.16.tgz#423f46bb744aff897a5f74435469e1ef4952e343"
316 | integrity sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==
317 |
318 | "@esbuild/win32-ia32@0.17.16":
319 | version "0.17.16"
320 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.16.tgz#1978be5b192c7063bd2c8d5960eb213e1964740e"
321 | integrity sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==
322 |
323 | "@esbuild/win32-x64@0.17.16":
324 | version "0.17.16"
325 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.16.tgz#260f19b0a3300d22c3a3f52722c671dc561edaa3"
326 | integrity sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==
327 |
328 | "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
329 | version "0.3.3"
330 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
331 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
332 | dependencies:
333 | "@jridgewell/set-array" "^1.0.1"
334 | "@jridgewell/sourcemap-codec" "^1.4.10"
335 | "@jridgewell/trace-mapping" "^0.3.9"
336 |
337 | "@jridgewell/resolve-uri@3.1.0":
338 | version "3.1.0"
339 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
340 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
341 |
342 | "@jridgewell/set-array@^1.0.1":
343 | version "1.1.2"
344 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
345 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
346 |
347 | "@jridgewell/sourcemap-codec@1.4.14":
348 | version "1.4.14"
349 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
350 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
351 |
352 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
353 | version "1.4.15"
354 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
355 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
356 |
357 | "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
358 | version "0.3.18"
359 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
360 | integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
361 | dependencies:
362 | "@jridgewell/resolve-uri" "3.1.0"
363 | "@jridgewell/sourcemap-codec" "1.4.14"
364 |
365 | "@types/prop-types@*":
366 | version "15.7.5"
367 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
368 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
369 |
370 | "@types/react-dom@^18.0.11":
371 | version "18.0.11"
372 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33"
373 | integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==
374 | dependencies:
375 | "@types/react" "*"
376 |
377 | "@types/react@*", "@types/react@^18.0.28":
378 | version "18.0.35"
379 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.35.tgz#192061cb1044fe01f2d3a94272cd35dd50502741"
380 | integrity sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==
381 | dependencies:
382 | "@types/prop-types" "*"
383 | "@types/scheduler" "*"
384 | csstype "^3.0.2"
385 |
386 | "@types/scheduler@*":
387 | version "0.16.3"
388 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
389 | integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
390 |
391 | "@vitejs/plugin-react@^3.1.0":
392 | version "3.1.0"
393 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240"
394 | integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==
395 | dependencies:
396 | "@babel/core" "^7.20.12"
397 | "@babel/plugin-transform-react-jsx-self" "^7.18.6"
398 | "@babel/plugin-transform-react-jsx-source" "^7.19.6"
399 | magic-string "^0.27.0"
400 | react-refresh "^0.14.0"
401 |
402 | ansi-styles@^3.2.1:
403 | version "3.2.1"
404 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
405 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
406 | dependencies:
407 | color-convert "^1.9.0"
408 |
409 | asynckit@^0.4.0:
410 | version "0.4.0"
411 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
412 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
413 |
414 | axios@^1.3.5:
415 | version "1.3.5"
416 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.5.tgz#e07209b39a0d11848e3e341fa087acd71dadc542"
417 | integrity sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==
418 | dependencies:
419 | follow-redirects "^1.15.0"
420 | form-data "^4.0.0"
421 | proxy-from-env "^1.1.0"
422 |
423 | browserslist@^4.21.3:
424 | version "4.21.5"
425 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
426 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
427 | dependencies:
428 | caniuse-lite "^1.0.30001449"
429 | electron-to-chromium "^1.4.284"
430 | node-releases "^2.0.8"
431 | update-browserslist-db "^1.0.10"
432 |
433 | caniuse-lite@^1.0.30001449:
434 | version "1.0.30001478"
435 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a"
436 | integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==
437 |
438 | chalk@^2.0.0:
439 | version "2.4.2"
440 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
441 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
442 | dependencies:
443 | ansi-styles "^3.2.1"
444 | escape-string-regexp "^1.0.5"
445 | supports-color "^5.3.0"
446 |
447 | color-convert@^1.9.0:
448 | version "1.9.3"
449 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
450 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
451 | dependencies:
452 | color-name "1.1.3"
453 |
454 | color-name@1.1.3:
455 | version "1.1.3"
456 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
457 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
458 |
459 | combined-stream@^1.0.8:
460 | version "1.0.8"
461 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
462 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
463 | dependencies:
464 | delayed-stream "~1.0.0"
465 |
466 | convert-source-map@^1.7.0:
467 | version "1.9.0"
468 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
469 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
470 |
471 | csstype@^3.0.2:
472 | version "3.1.2"
473 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
474 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
475 |
476 | debug@^4.1.0:
477 | version "4.3.4"
478 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
479 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
480 | dependencies:
481 | ms "2.1.2"
482 |
483 | delayed-stream@~1.0.0:
484 | version "1.0.0"
485 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
486 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
487 |
488 | electron-to-chromium@^1.4.284:
489 | version "1.4.361"
490 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.361.tgz#010ddd5e623470ab9d1bf776b009d11c3669a4e3"
491 | integrity sha512-VocVwjPp05HUXzf3xmL0boRn5b0iyqC7amtDww84Jb1QJNPBc7F69gJyEeXRoriLBC4a5pSyckdllrXAg4mmRA==
492 |
493 | esbuild@^0.17.5:
494 | version "0.17.16"
495 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.16.tgz#5efec24a8ff29e0c157359f27e1b5532a728b720"
496 | integrity sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==
497 | optionalDependencies:
498 | "@esbuild/android-arm" "0.17.16"
499 | "@esbuild/android-arm64" "0.17.16"
500 | "@esbuild/android-x64" "0.17.16"
501 | "@esbuild/darwin-arm64" "0.17.16"
502 | "@esbuild/darwin-x64" "0.17.16"
503 | "@esbuild/freebsd-arm64" "0.17.16"
504 | "@esbuild/freebsd-x64" "0.17.16"
505 | "@esbuild/linux-arm" "0.17.16"
506 | "@esbuild/linux-arm64" "0.17.16"
507 | "@esbuild/linux-ia32" "0.17.16"
508 | "@esbuild/linux-loong64" "0.17.16"
509 | "@esbuild/linux-mips64el" "0.17.16"
510 | "@esbuild/linux-ppc64" "0.17.16"
511 | "@esbuild/linux-riscv64" "0.17.16"
512 | "@esbuild/linux-s390x" "0.17.16"
513 | "@esbuild/linux-x64" "0.17.16"
514 | "@esbuild/netbsd-x64" "0.17.16"
515 | "@esbuild/openbsd-x64" "0.17.16"
516 | "@esbuild/sunos-x64" "0.17.16"
517 | "@esbuild/win32-arm64" "0.17.16"
518 | "@esbuild/win32-ia32" "0.17.16"
519 | "@esbuild/win32-x64" "0.17.16"
520 |
521 | escalade@^3.1.1:
522 | version "3.1.1"
523 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
524 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
525 |
526 | escape-string-regexp@^1.0.5:
527 | version "1.0.5"
528 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
529 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
530 |
531 | follow-redirects@^1.15.0:
532 | version "1.15.2"
533 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
534 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
535 |
536 | form-data@^4.0.0:
537 | version "4.0.0"
538 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
539 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
540 | dependencies:
541 | asynckit "^0.4.0"
542 | combined-stream "^1.0.8"
543 | mime-types "^2.1.12"
544 |
545 | fsevents@~2.3.2:
546 | version "2.3.2"
547 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
548 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
549 |
550 | function-bind@^1.1.1:
551 | version "1.1.1"
552 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
553 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
554 |
555 | gensync@^1.0.0-beta.2:
556 | version "1.0.0-beta.2"
557 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
558 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
559 |
560 | globals@^11.1.0:
561 | version "11.12.0"
562 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
563 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
564 |
565 | has-flag@^3.0.0:
566 | version "3.0.0"
567 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
568 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
569 |
570 | has@^1.0.3:
571 | version "1.0.3"
572 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
573 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
574 | dependencies:
575 | function-bind "^1.1.1"
576 |
577 | is-core-module@^2.11.0:
578 | version "2.12.0"
579 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4"
580 | integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==
581 | dependencies:
582 | has "^1.0.3"
583 |
584 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
585 | version "4.0.0"
586 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
587 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
588 |
589 | jsesc@^2.5.1:
590 | version "2.5.2"
591 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
592 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
593 |
594 | json5@^2.2.2:
595 | version "2.2.3"
596 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
597 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
598 |
599 | loose-envify@^1.1.0:
600 | version "1.4.0"
601 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
602 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
603 | dependencies:
604 | js-tokens "^3.0.0 || ^4.0.0"
605 |
606 | lru-cache@^5.1.1:
607 | version "5.1.1"
608 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
609 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
610 | dependencies:
611 | yallist "^3.0.2"
612 |
613 | magic-string@^0.27.0:
614 | version "0.27.0"
615 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
616 | integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
617 | dependencies:
618 | "@jridgewell/sourcemap-codec" "^1.4.13"
619 |
620 | mime-db@1.52.0:
621 | version "1.52.0"
622 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
623 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
624 |
625 | mime-types@^2.1.12:
626 | version "2.1.35"
627 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
628 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
629 | dependencies:
630 | mime-db "1.52.0"
631 |
632 | ms@2.1.2:
633 | version "2.1.2"
634 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
635 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
636 |
637 | nanoid@^3.3.4:
638 | version "3.3.6"
639 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
640 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
641 |
642 | node-releases@^2.0.8:
643 | version "2.0.10"
644 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
645 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
646 |
647 | path-parse@^1.0.7:
648 | version "1.0.7"
649 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
650 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
651 |
652 | picocolors@^1.0.0:
653 | version "1.0.0"
654 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
655 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
656 |
657 | postcss@^8.4.21:
658 | version "8.4.21"
659 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
660 | integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
661 | dependencies:
662 | nanoid "^3.3.4"
663 | picocolors "^1.0.0"
664 | source-map-js "^1.0.2"
665 |
666 | proxy-from-env@^1.1.0:
667 | version "1.1.0"
668 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
669 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
670 |
671 | react-dom@^18.2.0:
672 | version "18.2.0"
673 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
674 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
675 | dependencies:
676 | loose-envify "^1.1.0"
677 | scheduler "^0.23.0"
678 |
679 | react-refresh@^0.14.0:
680 | version "0.14.0"
681 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
682 | integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
683 |
684 | react@^18.2.0:
685 | version "18.2.0"
686 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
687 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
688 | dependencies:
689 | loose-envify "^1.1.0"
690 |
691 | resolve@^1.22.1:
692 | version "1.22.2"
693 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
694 | integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
695 | dependencies:
696 | is-core-module "^2.11.0"
697 | path-parse "^1.0.7"
698 | supports-preserve-symlinks-flag "^1.0.0"
699 |
700 | rollup@^3.18.0:
701 | version "3.20.2"
702 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.20.2.tgz#f798c600317f216de2e4ad9f4d9ab30a89b690ff"
703 | integrity sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==
704 | optionalDependencies:
705 | fsevents "~2.3.2"
706 |
707 | scheduler@^0.23.0:
708 | version "0.23.0"
709 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
710 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
711 | dependencies:
712 | loose-envify "^1.1.0"
713 |
714 | semver@^6.3.0:
715 | version "6.3.0"
716 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
717 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
718 |
719 | source-map-js@^1.0.2:
720 | version "1.0.2"
721 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
722 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
723 |
724 | supports-color@^5.3.0:
725 | version "5.5.0"
726 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
727 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
728 | dependencies:
729 | has-flag "^3.0.0"
730 |
731 | supports-preserve-symlinks-flag@^1.0.0:
732 | version "1.0.0"
733 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
734 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
735 |
736 | to-fast-properties@^2.0.0:
737 | version "2.0.0"
738 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
739 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
740 |
741 | update-browserslist-db@^1.0.10:
742 | version "1.0.10"
743 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
744 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
745 | dependencies:
746 | escalade "^3.1.1"
747 | picocolors "^1.0.0"
748 |
749 | vite@^4.2.0:
750 | version "4.2.1"
751 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.2.1.tgz#6c2eb337b0dfd80a9ded5922163b94949d7fc254"
752 | integrity sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==
753 | dependencies:
754 | esbuild "^0.17.5"
755 | postcss "^8.4.21"
756 | resolve "^1.22.1"
757 | rollup "^3.18.0"
758 | optionalDependencies:
759 | fsevents "~2.3.2"
760 |
761 | yallist@^3.0.2:
762 | version "3.1.1"
763 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
764 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
765 |
--------------------------------------------------------------------------------