diff --git a/package-lock.json b/package-lock.json
index 0048e57e8d764a8e3c35ac79a98d8e5b9fe0ad16..1280fef43c163bf38af3e59fd6b1253ea1a8b1de 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,7 +13,7 @@
         "core-js": "3.21.1",
         "quasar": "2.5.5",
         "tsparticles": "1.41.6",
-        "vue": "3.2.30",
+        "vue": "3.2.31",
         "vue-router": "4.0.12"
       },
       "devDependencies": {
@@ -2461,12 +2461,12 @@
       }
     },
     "node_modules/@vue/compiler-core": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.30.tgz",
-      "integrity": "sha512-64fq1KfcR+k3Vlw+IsBM2VhV5B+2IP3YxvKU8LWCDLrkmlXtbf2eMK6+0IwX5KP41D0f1gzryIiXR7P8cB9O5Q==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.31.tgz",
+      "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==",
       "dependencies": {
         "@babel/parser": "^7.16.4",
-        "@vue/shared": "3.2.30",
+        "@vue/shared": "3.2.31",
         "estree-walker": "^2.0.2",
         "source-map": "^0.6.1"
       }
@@ -2480,25 +2480,25 @@
       }
     },
     "node_modules/@vue/compiler-dom": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.30.tgz",
-      "integrity": "sha512-t7arHz2SXLCXlF2fdGDFVbhENbGMez254Z5edUqb//6WXJU1lC7GvSkUE7i5x8WSjgfqt60i0V8zdmk16rvLdw==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz",
+      "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==",
       "dependencies": {
-        "@vue/compiler-core": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/compiler-core": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "node_modules/@vue/compiler-sfc": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.30.tgz",
-      "integrity": "sha512-P/5YpILtcQY92z72gxhkyOUPHVskEzhSrvYi91Xcr+csOxaDaYU5OqOxCzZKcf3Og70Tat404vO1OHrwprN90A==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz",
+      "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==",
       "dependencies": {
         "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.30",
-        "@vue/compiler-dom": "3.2.30",
-        "@vue/compiler-ssr": "3.2.30",
-        "@vue/reactivity-transform": "3.2.30",
-        "@vue/shared": "3.2.30",
+        "@vue/compiler-core": "3.2.31",
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/compiler-ssr": "3.2.31",
+        "@vue/reactivity-transform": "3.2.31",
+        "@vue/shared": "3.2.31",
         "estree-walker": "^2.0.2",
         "magic-string": "^0.25.7",
         "postcss": "^8.1.10",
@@ -2514,12 +2514,12 @@
       }
     },
     "node_modules/@vue/compiler-ssr": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.30.tgz",
-      "integrity": "sha512-OUh3MwAu/PsD7VN3UOdBbTkltkrUCNouSht47+CMRzpUR5+ta7+xyMAVHeq8wg4YZenWaJimbR5TL35Ka4Vk6g==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz",
+      "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==",
       "dependencies": {
-        "@vue/compiler-dom": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "node_modules/@vue/devtools-api": {
@@ -2528,60 +2528,60 @@
       "integrity": "sha512-bzei608bPVQE2yq9Ghrjn/dnpf27mWfrr0q0ZQiuZoO3LQqFG0T1xSGz+9vw1j9KAZM2Cu9vdQMkddDxqzZGNg=="
     },
     "node_modules/@vue/reactivity": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.30.tgz",
-      "integrity": "sha512-qlNKbkRn2JiGxVUEdoXbLAy+vcuHUCcq+YH2uXWz0BNMvXY2plmz+oqsw+694llwmYLkke5lbdYF4DIupisIkg==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.31.tgz",
+      "integrity": "sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==",
       "dependencies": {
-        "@vue/shared": "3.2.30"
+        "@vue/shared": "3.2.31"
       }
     },
     "node_modules/@vue/reactivity-transform": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.30.tgz",
-      "integrity": "sha512-Le5XzCJyK3qTjoTnvQG/Ehu8fYjayauMNFyMaEnwFlm/avDofpuibpS9u+/6AgzsGnVWN+i0Jgf25bJd9DIwMw==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz",
+      "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==",
       "dependencies": {
         "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.30",
-        "@vue/shared": "3.2.30",
+        "@vue/compiler-core": "3.2.31",
+        "@vue/shared": "3.2.31",
         "estree-walker": "^2.0.2",
         "magic-string": "^0.25.7"
       }
     },
     "node_modules/@vue/runtime-core": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.30.tgz",
-      "integrity": "sha512-RTi7xH0Ht/6wfbo2WFBMJTEiyWFTqGhrksJm8lz6E+auO6lXZ6Eq3gPNfLt47GDWCm4xyrv+rs5R4UbarPEQ1Q==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.31.tgz",
+      "integrity": "sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==",
       "dependencies": {
-        "@vue/reactivity": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/reactivity": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "node_modules/@vue/runtime-dom": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.30.tgz",
-      "integrity": "sha512-a3+jrncDvEFQmB+v9k0VyT4/Y3XO6OAueCroXXY4yLyr6PJeyxljweV5TzvW0rvVzH9sZO0QAvG76Lo+6C92Qw==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz",
+      "integrity": "sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==",
       "dependencies": {
-        "@vue/runtime-core": "3.2.30",
-        "@vue/shared": "3.2.30",
+        "@vue/runtime-core": "3.2.31",
+        "@vue/shared": "3.2.31",
         "csstype": "^2.6.8"
       }
     },
     "node_modules/@vue/server-renderer": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.30.tgz",
-      "integrity": "sha512-pzb8J/w+JdZVOtuKFlirGqrs4GP60FXGDJySw3WV2pCetuFstaacDrnymEeSo3ohAD+Qjv7zAG+Y7OvkdxQxmQ==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.31.tgz",
+      "integrity": "sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==",
       "dependencies": {
-        "@vue/compiler-ssr": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/compiler-ssr": "3.2.31",
+        "@vue/shared": "3.2.31"
       },
       "peerDependencies": {
-        "vue": "3.2.30"
+        "vue": "3.2.31"
       }
     },
     "node_modules/@vue/shared": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.30.tgz",
-      "integrity": "sha512-B3HouBtUxcfu2w2d+VhdLcVBXKYYhXiFMAfQ+hoe8NUhKkPRkWDIqhpuehCZxVQ3S2dN1P1WfKGlxGC+pfmxGg=="
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.31.tgz",
+      "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ=="
     },
     "node_modules/@webassemblyjs/ast": {
       "version": "1.11.1",
@@ -7269,11 +7269,11 @@
       }
     },
     "node_modules/magic-string": {
-      "version": "0.25.7",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "version": "0.25.9",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
       "dependencies": {
-        "sourcemap-codec": "^1.4.4"
+        "sourcemap-codec": "^1.4.8"
       }
     },
     "node_modules/make-dir": {
@@ -10643,15 +10643,15 @@
       }
     },
     "node_modules/vue": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.30.tgz",
-      "integrity": "sha512-ZmTFWVJUX2XADkuOB8GcLTuxnBLogjJBTNVrM7WsTnjqRQ+VR8bLNrvNsbn8vj/LaP5+0WFAPrpngOYE2x+e+Q==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.31.tgz",
+      "integrity": "sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==",
       "dependencies": {
-        "@vue/compiler-dom": "3.2.30",
-        "@vue/compiler-sfc": "3.2.30",
-        "@vue/runtime-dom": "3.2.30",
-        "@vue/server-renderer": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/compiler-sfc": "3.2.31",
+        "@vue/runtime-dom": "3.2.31",
+        "@vue/server-renderer": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "node_modules/vue-eslint-parser": {
@@ -13290,12 +13290,12 @@
       }
     },
     "@vue/compiler-core": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.30.tgz",
-      "integrity": "sha512-64fq1KfcR+k3Vlw+IsBM2VhV5B+2IP3YxvKU8LWCDLrkmlXtbf2eMK6+0IwX5KP41D0f1gzryIiXR7P8cB9O5Q==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.31.tgz",
+      "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==",
       "requires": {
         "@babel/parser": "^7.16.4",
-        "@vue/shared": "3.2.30",
+        "@vue/shared": "3.2.31",
         "estree-walker": "^2.0.2",
         "source-map": "^0.6.1"
       },
@@ -13308,25 +13308,25 @@
       }
     },
     "@vue/compiler-dom": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.30.tgz",
-      "integrity": "sha512-t7arHz2SXLCXlF2fdGDFVbhENbGMez254Z5edUqb//6WXJU1lC7GvSkUE7i5x8WSjgfqt60i0V8zdmk16rvLdw==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz",
+      "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==",
       "requires": {
-        "@vue/compiler-core": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/compiler-core": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "@vue/compiler-sfc": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.30.tgz",
-      "integrity": "sha512-P/5YpILtcQY92z72gxhkyOUPHVskEzhSrvYi91Xcr+csOxaDaYU5OqOxCzZKcf3Og70Tat404vO1OHrwprN90A==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz",
+      "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==",
       "requires": {
         "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.30",
-        "@vue/compiler-dom": "3.2.30",
-        "@vue/compiler-ssr": "3.2.30",
-        "@vue/reactivity-transform": "3.2.30",
-        "@vue/shared": "3.2.30",
+        "@vue/compiler-core": "3.2.31",
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/compiler-ssr": "3.2.31",
+        "@vue/reactivity-transform": "3.2.31",
+        "@vue/shared": "3.2.31",
         "estree-walker": "^2.0.2",
         "magic-string": "^0.25.7",
         "postcss": "^8.1.10",
@@ -13341,12 +13341,12 @@
       }
     },
     "@vue/compiler-ssr": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.30.tgz",
-      "integrity": "sha512-OUh3MwAu/PsD7VN3UOdBbTkltkrUCNouSht47+CMRzpUR5+ta7+xyMAVHeq8wg4YZenWaJimbR5TL35Ka4Vk6g==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz",
+      "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==",
       "requires": {
-        "@vue/compiler-dom": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "@vue/devtools-api": {
@@ -13355,57 +13355,57 @@
       "integrity": "sha512-bzei608bPVQE2yq9Ghrjn/dnpf27mWfrr0q0ZQiuZoO3LQqFG0T1xSGz+9vw1j9KAZM2Cu9vdQMkddDxqzZGNg=="
     },
     "@vue/reactivity": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.30.tgz",
-      "integrity": "sha512-qlNKbkRn2JiGxVUEdoXbLAy+vcuHUCcq+YH2uXWz0BNMvXY2plmz+oqsw+694llwmYLkke5lbdYF4DIupisIkg==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.31.tgz",
+      "integrity": "sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==",
       "requires": {
-        "@vue/shared": "3.2.30"
+        "@vue/shared": "3.2.31"
       }
     },
     "@vue/reactivity-transform": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.30.tgz",
-      "integrity": "sha512-Le5XzCJyK3qTjoTnvQG/Ehu8fYjayauMNFyMaEnwFlm/avDofpuibpS9u+/6AgzsGnVWN+i0Jgf25bJd9DIwMw==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz",
+      "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==",
       "requires": {
         "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.30",
-        "@vue/shared": "3.2.30",
+        "@vue/compiler-core": "3.2.31",
+        "@vue/shared": "3.2.31",
         "estree-walker": "^2.0.2",
         "magic-string": "^0.25.7"
       }
     },
     "@vue/runtime-core": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.30.tgz",
-      "integrity": "sha512-RTi7xH0Ht/6wfbo2WFBMJTEiyWFTqGhrksJm8lz6E+auO6lXZ6Eq3gPNfLt47GDWCm4xyrv+rs5R4UbarPEQ1Q==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.31.tgz",
+      "integrity": "sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==",
       "requires": {
-        "@vue/reactivity": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/reactivity": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "@vue/runtime-dom": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.30.tgz",
-      "integrity": "sha512-a3+jrncDvEFQmB+v9k0VyT4/Y3XO6OAueCroXXY4yLyr6PJeyxljweV5TzvW0rvVzH9sZO0QAvG76Lo+6C92Qw==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz",
+      "integrity": "sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==",
       "requires": {
-        "@vue/runtime-core": "3.2.30",
-        "@vue/shared": "3.2.30",
+        "@vue/runtime-core": "3.2.31",
+        "@vue/shared": "3.2.31",
         "csstype": "^2.6.8"
       }
     },
     "@vue/server-renderer": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.30.tgz",
-      "integrity": "sha512-pzb8J/w+JdZVOtuKFlirGqrs4GP60FXGDJySw3WV2pCetuFstaacDrnymEeSo3ohAD+Qjv7zAG+Y7OvkdxQxmQ==",
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.31.tgz",
+      "integrity": "sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==",
       "requires": {
-        "@vue/compiler-ssr": "3.2.30",
-        "@vue/shared": "3.2.30"
+        "@vue/compiler-ssr": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "@vue/shared": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.30.tgz",
-      "integrity": "sha512-B3HouBtUxcfu2w2d+VhdLcVBXKYYhXiFMAfQ+hoe8NUhKkPRkWDIqhpuehCZxVQ3S2dN1P1WfKGlxGC+pfmxGg=="
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.31.tgz",
+      "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ=="
     },
     "@webassemblyjs/ast": {
       "version": "1.11.1",
@@ -16960,11 +16960,11 @@
       }
     },
     "magic-string": {
-      "version": "0.25.7",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "version": "0.25.9",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
       "requires": {
-        "sourcemap-codec": "^1.4.4"
+        "sourcemap-codec": "^1.4.8"
       }
     },
     "make-dir": {
@@ -19376,15 +19376,15 @@
       "dev": true
     },
     "vue": {
-      "version": "3.2.30",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.30.tgz",
-      "integrity": "sha512-ZmTFWVJUX2XADkuOB8GcLTuxnBLogjJBTNVrM7WsTnjqRQ+VR8bLNrvNsbn8vj/LaP5+0WFAPrpngOYE2x+e+Q==",
-      "requires": {
-        "@vue/compiler-dom": "3.2.30",
-        "@vue/compiler-sfc": "3.2.30",
-        "@vue/runtime-dom": "3.2.30",
-        "@vue/server-renderer": "3.2.30",
-        "@vue/shared": "3.2.30"
+      "version": "3.2.31",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.31.tgz",
+      "integrity": "sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==",
+      "requires": {
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/compiler-sfc": "3.2.31",
+        "@vue/runtime-dom": "3.2.31",
+        "@vue/server-renderer": "3.2.31",
+        "@vue/shared": "3.2.31"
       }
     },
     "vue-eslint-parser": {
diff --git a/package.json b/package.json
index f10fb46448348053403e371038d2007db81236d8..09ce198cabc97122e958ebd0d6ca1a373f874b24 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
     "axios": "0.25.0",
     "core-js": "3.21.1",
     "quasar": "2.5.5",
-    "vue": "3.2.30",
+    "vue": "3.2.31",
     "vue-router": "4.0.12",
     "tsparticles": "1.41.6"
   },