From 27f3bcacbfe09a4083a32bdeaf2dfdcb3aaa091e Mon Sep 17 00:00:00 2001 From: "DESKTOP-RQ919RC\\Pc" <1300399510@qq.com> Date: Fri, 21 Mar 2025 15:55:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A8=E8=AE=BA=E5=8A=A0=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .output/nitro.json | 9 +- .output/public/static/D68ufz1E.js | 1 + .output/public/static/D8XG0MVX.js | 1 + .output/public/static/Dm9wah96.js | 26 + .../public/static/QRCode-icon.a105d5fc.svg | 6 - .output/public/static/add-icon.0b0b5313.svg | 6 - .../public/static/arrows-icon.271dd0d3.svg | 6 - .output/public/static/builds/latest.json | 2 +- .../a09a0e4f-e1ae-4b62-83ed-c95a7a6c55ee.json | 1 + .../fab4a5cc-9cfc-497f-9ee3-5ea7a6942142.json | 1 - .output/public/static/close-icon.86743366.svg | 7 - .../static/collect-icon-colours.6d2ade7f.svg | 6 - .../static/comment-icon-gray.2c8779f9.svg | 11 - ....4d386dce.svg => delete-icon.C00hnugk.svg} | 0 .output/public/static/dot-gray.86cdd7b5.svg | 7 - .output/public/static/dot-yellow.4b5e135b.svg | 7 - .output/public/static/dot.1026a040.svg | 7 - ...n.24a01ae2.svg => empty-icon.DUxtcfqq.svg} | 0 .output/public/static/entry.544a51c2.css | 1 - .output/public/static/entry.5472f4d7.js | 7 - .output/public/static/entry.VRf8S3Qj.css | 1 + .output/public/static/error-404.7fc72018.css | 1 - .output/public/static/error-404.CZkObG7r.css | 1 + .output/public/static/error-404.e25a8fb9.js | 1 - .output/public/static/error-500.00e01ec2.js | 1 - .output/public/static/error-500.BFrSi6nG.css | 1 + .output/public/static/error-500.c5df6088.css | 1 - .../{logo.6622f82d.png => logo.DlviZpxD.png} | Bin .../public/static/menu-icon-gray.d61f02b1.svg | 11 - .output/public/static/tick-no.179037b3.svg | 5 - .../public/static/tick-option.e092d22f.svg | 6 - .../public/static/tick-orange.233abc69.svg | 6 - .../public/static/triangle-icon.c39ff2e7.svg | 6 - .output/public/static/view-icon.da7fef35.svg | 6 - .output/server/chunks/_/error-500.mjs | 8 + .output/server/chunks/_/error-500.mjs.map | 1 + .../{nitro/node-server.mjs => _/nitro.mjs} | 4648 +++++----- .output/server/chunks/_/nitro.mjs.map | 1 + .output/server/chunks/app/client.manifest.mjs | 341 - .../server/chunks/app/client.manifest.mjs.map | 1 - .output/server/chunks/app/server.mjs.map | 1 - .../app/static/entry-styles.6ffc8e86.mjs | 28 - .../app/static/entry-styles.6ffc8e86.mjs.map | 1 - .../chunks/app/static/error-404-e554c81e.mjs | 283 - .../app/static/error-404-e554c81e.mjs.map | 1 - .../app/static/error-404-styles.1e0dde27.mjs | 6 - .../static/error-404-styles.1e0dde27.mjs.map | 1 - .../chunks/app/static/error-500-87e865c4.mjs | 65 - .../app/static/error-500-87e865c4.mjs.map | 1 - .../app/static/error-500-styles.cf4b3e80.mjs | 6 - .../static/error-500-styles.cf4b3e80.mjs.map | 1 - .../app/static/island-renderer-e75852ba.mjs | 43 - .../static/island-renderer-e75852ba.mjs.map | 1 - .output/server/chunks/app/styles.mjs | 9 - .output/server/chunks/app/styles.mjs.map | 1 - .../chunks/build/app-styles.BfYsvsru.mjs | 6 + .../chunks/build/app-styles.BfYsvsru.mjs.map | 1 + .../chunks/build/app-styles.Do9N83c2.mjs | 6 + .../chunks/build/app-styles.Do9N83c2.mjs.map | 1 + .../server/chunks/build/client.manifest.mjs | 113 + .../chunks/build/client.manifest.mjs.map | 1 + .../chunks/build/entry-styles-4.mjs.mjs | 4 + .../chunks/build/entry-styles-4.mjs.mjs.map | 1 + .../chunks/build/entry-styles.4OIjBqNs.mjs | 12 + .../build/entry-styles.4OIjBqNs.mjs.map | 1 + .../chunks/build/error-404-styles-1.mjs.mjs | 4 + .../build/error-404-styles-1.mjs.mjs.map | 1 + .../build/error-404-styles.BNmKahfp.mjs | 6 + .../build/error-404-styles.BNmKahfp.mjs.map | 1 + .../build/error-404-styles.wRz_-Rw1.mjs | 6 + .../build/error-404-styles.wRz_-Rw1.mjs.map | 1 + .output/server/chunks/build/error-404.vue.mjs | 366 + .../server/chunks/build/error-404.vue.mjs.map | 1 + .../chunks/build/error-500-styles-1.mjs.mjs | 4 + .../build/error-500-styles-1.mjs.mjs.map | 1 + .../build/error-500-styles.Cx3AJg0u.mjs | 6 + .../build/error-500-styles.Cx3AJg0u.mjs.map | 1 + .../build/error-500-styles.TwxDbBgG.mjs | 6 + .../build/error-500-styles.TwxDbBgG.mjs.map | 1 + .output/server/chunks/build/error-500.vue.mjs | 75 + .../server/chunks/build/error-500.vue.mjs.map | 1 + .../server/chunks/{app => build}/server.mjs | 1680 ++-- .output/server/chunks/build/server.mjs.map | 1 + .output/server/chunks/build/styles.mjs | 13 + .output/server/chunks/build/styles.mjs.map | 1 + .output/server/chunks/error-500.mjs | 21 - .output/server/chunks/error-500.mjs.map | 1 - .output/server/chunks/handlers/renderer.mjs | 384 - .../server/chunks/handlers/renderer.mjs.map | 1 - .../server/chunks/nitro/node-server.mjs.map | 1 - .output/server/chunks/routes/renderer.mjs | 409 + .output/server/chunks/routes/renderer.mjs.map | 1 + .../_virtual_spa-template.mjs | 0 .../_virtual_spa-template.mjs.map | 0 .output/server/index.mjs | 40 +- .output/server/index.mjs.map | 2 +- .../node_modules/@babel/parser/lib/index.js | 1219 +-- .../node_modules/@babel/parser/package.json | 22 +- .../node_modules/@unhead/dom/dist/index.mjs | 133 - .../node_modules/@unhead/dom/package.json | 40 - .../@unhead/shared/dist/index.mjs | 640 -- .../node_modules/@unhead/shared/package.json | 47 - .../node_modules/@unhead/ssr/dist/index.mjs | 84 - .../node_modules/@unhead/ssr/package.json | 40 - .../compiler-core/dist/compiler-core.cjs.js | 5505 ------------ .../dist/compiler-core.cjs.prod.js | 4342 +++++---- .../node_modules/@vue/compiler-core/index.js | 7 - .../@vue/compiler-core/package.json | 30 +- .../compiler-dom/dist/compiler-dom.cjs.js | 3047 ------- .../dist/compiler-dom.cjs.prod.js | 2500 +----- .../node_modules/@vue/compiler-dom/index.js | 7 - .../@vue/compiler-dom/package.json | 25 +- .../compiler-ssr/dist/compiler-ssr.cjs.js | 177 +- .../@vue/compiler-ssr/package.json | 11 +- .../@vue/reactivity/dist/reactivity.cjs.js | 1265 --- .../reactivity/dist/reactivity.cjs.prod.js | 1755 ++-- .../node_modules/@vue/reactivity/index.js | 7 - .../node_modules/@vue/reactivity/package.json | 23 +- .../runtime-core/dist/runtime-core.cjs.js | 7901 ----------------- .../dist/runtime-core.cjs.prod.js | 5085 ++++++----- .../node_modules/@vue/runtime-core/index.js | 7 - .../@vue/runtime-core/package.json | 25 +- .../@vue/runtime-dom/dist/runtime-dom.cjs.js | 1503 ---- .../runtime-dom/dist/runtime-dom.cjs.prod.js | 583 +- .../node_modules/@vue/runtime-dom/index.js | 7 - .../@vue/runtime-dom/package.json | 31 +- .../dist/server-renderer.cjs.js | 1086 --- .../dist/server-renderer.cjs.prod.js | 161 +- .../@vue/server-renderer/index.js | 7 - .../@vue/server-renderer/package.json | 27 +- .../@vue/shared/dist/shared.cjs.js | 474 - .../@vue/shared/dist/shared.cjs.prod.js | 198 +- .../server/node_modules/@vue/shared/index.js | 7 - .../node_modules/@vue/shared/package.json | 21 +- .../server/node_modules/asynckit/package.json | 5 +- .../axios/lib/adapters/adapters.js | 4 +- .../node_modules/axios/lib/adapters/fetch.js | 229 + .../node_modules/axios/lib/adapters/http.js | 64 +- .../node_modules/axios/lib/adapters/xhr.js | 135 +- .../axios/lib/cancel/CancelToken.js | 14 + .../node_modules/axios/lib/core/Axios.js | 45 +- .../node_modules/axios/lib/core/AxiosError.js | 7 +- .../axios/lib/core/AxiosHeaders.js | 4 + .../axios/lib/core/buildFullPath.js | 5 +- .../axios/lib/core/mergeConfig.js | 12 +- .../node_modules/axios/lib/defaults/index.js | 12 +- .../server/node_modules/axios/lib/env/data.js | 2 +- .../axios/lib/helpers/AxiosTransformStream.js | 54 +- .../axios/lib/helpers/buildURL.js | 8 +- .../axios/lib/helpers/combineURLs.js | 2 +- .../axios/lib/helpers/composeSignals.js | 48 + .../axios/lib/helpers/formDataToJSON.js | 3 + .../axios/lib/helpers/formDataToStream.js | 9 +- .../axios/lib/helpers/isURLSameOrigin.js | 75 +- .../axios/lib/helpers/progressEventReducer.js | 44 + .../axios/lib/helpers/resolveConfig.js | 57 + .../axios/lib/helpers/throttle.js | 49 +- .../axios/lib/helpers/trackStream.js | 87 + .../axios/lib/helpers/validator.js | 8 + .../axios/lib/platform/common/utils.js | 14 +- .../axios/lib/platform/node/index.js | 26 + .../server/node_modules/axios/lib/utils.js | 65 +- .../server/node_modules/axios/package.json | 58 +- .../call-bind-apply-helpers/actualApply.js | 10 + .../call-bind-apply-helpers/functionApply.js | 4 + .../call-bind-apply-helpers/functionCall.js | 4 + .../call-bind-apply-helpers/index.js | 15 + .../call-bind-apply-helpers/package.json | 88 + .../call-bind-apply-helpers/reflectApply.js | 4 + .../node_modules/combined-stream/package.json | 5 +- .../server/node_modules/debug/package.json | 19 +- .../server/node_modules/debug/src/browser.js | 5 +- .../server/node_modules/debug/src/common.js | 98 +- .output/server/node_modules/debug/src/node.js | 4 +- .../node_modules/delayed-stream/package.json | 5 +- .../server/node_modules/devalue/package.json | 10 +- .../server/node_modules/devalue/src/base64.js | 110 + .../server/node_modules/devalue/src/parse.js | 27 + .../node_modules/devalue/src/stringify.js | 46 +- .../server/node_modules/devalue/src/uneval.js | 43 +- .../server/node_modules/devalue/src/utils.js | 14 + .../server/node_modules/dunder-proto/get.js | 30 + .../node_modules/dunder-proto/package.json | 79 + .../node_modules/entities/lib/decode.js | 536 ++ .../entities/lib/decode_codepoint.js | 76 + .../lib/generated/decode-data-html.js | 9 + .../entities/lib/generated/decode-data-xml.js | 9 + .../server/node_modules/entities/package.json | 93 + .../node_modules/es-define-property/index.js | 14 + .../es-define-property/package.json | 84 + .output/server/node_modules/es-errors/eval.js | 4 + .../server/node_modules/es-errors/index.js | 4 + .../node_modules/es-errors/package.json | 83 + .../server/node_modules/es-errors/range.js | 4 + .output/server/node_modules/es-errors/ref.js | 4 + .../server/node_modules/es-errors/syntax.js | 4 + .output/server/node_modules/es-errors/type.js | 4 + .output/server/node_modules/es-errors/uri.js | 4 + .../node_modules/es-object-atoms/index.js | 4 + .../node_modules/es-object-atoms/package.json | 83 + .../node_modules/es-set-tostringtag/index.js | 35 + .../es-set-tostringtag/package.json | 81 + .../node_modules/estree-walker/package.json | 5 +- .../node_modules/follow-redirects/index.js | 213 +- .../follow-redirects/package.json | 9 +- .../node_modules/form-data/lib/form_data.js | 48 +- .../node_modules/form-data/package.json | 49 +- .../function-bind/implementation.js | 84 + .../node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 90 + .../node_modules/get-intrinsic/index.js | 378 + .../node_modules/get-intrinsic/package.json | 100 + .../get-proto/Object.getPrototypeOf.js | 6 + .../get-proto/Reflect.getPrototypeOf.js | 4 + .../server/node_modules/get-proto/index.js | 27 + .../node_modules/get-proto/package.json | 84 + .output/server/node_modules/gopd/gOPD.js | 4 + .output/server/node_modules/gopd/index.js | 15 + .output/server/node_modules/gopd/package.json | 80 + .../server/node_modules/has-symbols/index.js | 14 + .../node_modules/has-symbols/package.json | 114 + .../server/node_modules/has-symbols/shams.js | 45 + .../node_modules/has-tostringtag/package.json | 111 + .../node_modules/has-tostringtag/shams.js | 8 + .output/server/node_modules/hasown/index.js | 8 + .../server/node_modules/hasown/package.json | 95 + .../server/node_modules/hookable/package.json | 5 +- .../node_modules/math-intrinsics/abs.js | 4 + .../node_modules/math-intrinsics/floor.js | 4 + .../node_modules/math-intrinsics/isNaN.js | 6 + .../node_modules/math-intrinsics/max.js | 4 + .../node_modules/math-intrinsics/min.js | 4 + .../node_modules/math-intrinsics/package.json | 89 + .../node_modules/math-intrinsics/pow.js | 4 + .../node_modules/math-intrinsics/round.js | 4 + .../node_modules/math-intrinsics/sign.js | 11 + .../server/node_modules/mime-db/package.json | 5 +- .../node_modules/mime-types/package.json | 5 +- .output/server/node_modules/ms/index.js | 2 +- .output/server/node_modules/ms/package.json | 14 +- .../node_modules/proxy-from-env/package.json | 5 +- .../source-map-js/lib/source-map-consumer.js | 8 +- .../node_modules/source-map-js/package.json | 7 +- .../node_modules/supports-color/index.js | 36 +- .../node_modules/supports-color/package.json | 27 +- .output/server/node_modules/ufo/package.json | 5 +- .../server/node_modules/unhead/dist/index.mjs | 646 +- .../node_modules/unhead/dist/plugins.mjs | 94 + .../node_modules/unhead/dist/scripts.mjs | 30 + .../node_modules/unhead/dist/server.mjs | 214 + .../unhead/dist/shared/unhead.B52g_5xR.mjs | 170 + .../unhead/dist/shared/unhead.B578PsDV.mjs | 266 + .../unhead/dist/shared/unhead.BPM0-cfG.mjs | 44 + .../unhead/dist/shared/unhead.BaPU1zLf.mjs | 177 + .../unhead/dist/shared/unhead.CApf5sj3.mjs | 148 + .../unhead/dist/shared/unhead.DQc16pHI.mjs | 196 + .../unhead/dist/shared/unhead.DZbvapt-.mjs | 70 + .../unhead/dist/shared/unhead.DnNYlT4k.mjs | 155 + .../unhead/dist/shared/unhead.kVuXtrDW.mjs | 48 + .../unhead/dist/shared/unhead.yem5I2v_.mjs | 38 + .../server/node_modules/unhead/dist/utils.mjs | 5 + .../server/node_modules/unhead/package.json | 88 +- .../vue-bundle-renderer/dist/runtime.mjs | 8 +- .../vue-bundle-renderer/package.json | 45 +- .../server/node_modules/vue/dist/vue.cjs.js | 7 +- .../node_modules/vue/dist/vue.cjs.prod.js | 7 +- .output/server/node_modules/vue/index.mjs | 2 +- .output/server/node_modules/vue/package.json | 32 +- .../vue/server-renderer/index.mjs | 2 +- .output/server/package.json | 2 +- components/commentList.vue | 621 +- nuxt.config.ts | 128 +- 272 files changed, 18932 insertions(+), 35894 deletions(-) create mode 100644 .output/public/static/D68ufz1E.js create mode 100644 .output/public/static/D8XG0MVX.js create mode 100644 .output/public/static/Dm9wah96.js delete mode 100644 .output/public/static/QRCode-icon.a105d5fc.svg delete mode 100644 .output/public/static/add-icon.0b0b5313.svg delete mode 100644 .output/public/static/arrows-icon.271dd0d3.svg create mode 100644 .output/public/static/builds/meta/a09a0e4f-e1ae-4b62-83ed-c95a7a6c55ee.json delete mode 100644 .output/public/static/builds/meta/fab4a5cc-9cfc-497f-9ee3-5ea7a6942142.json delete mode 100644 .output/public/static/close-icon.86743366.svg delete mode 100644 .output/public/static/collect-icon-colours.6d2ade7f.svg delete mode 100644 .output/public/static/comment-icon-gray.2c8779f9.svg rename .output/public/static/{delete-icon.4d386dce.svg => delete-icon.C00hnugk.svg} (100%) delete mode 100644 .output/public/static/dot-gray.86cdd7b5.svg delete mode 100644 .output/public/static/dot-yellow.4b5e135b.svg delete mode 100644 .output/public/static/dot.1026a040.svg rename .output/public/static/{empty-icon.24a01ae2.svg => empty-icon.DUxtcfqq.svg} (100%) delete mode 100644 .output/public/static/entry.544a51c2.css delete mode 100644 .output/public/static/entry.5472f4d7.js create mode 100644 .output/public/static/entry.VRf8S3Qj.css delete mode 100644 .output/public/static/error-404.7fc72018.css create mode 100644 .output/public/static/error-404.CZkObG7r.css delete mode 100644 .output/public/static/error-404.e25a8fb9.js delete mode 100644 .output/public/static/error-500.00e01ec2.js create mode 100644 .output/public/static/error-500.BFrSi6nG.css delete mode 100644 .output/public/static/error-500.c5df6088.css rename .output/public/static/{logo.6622f82d.png => logo.DlviZpxD.png} (100%) delete mode 100644 .output/public/static/menu-icon-gray.d61f02b1.svg delete mode 100644 .output/public/static/tick-no.179037b3.svg delete mode 100644 .output/public/static/tick-option.e092d22f.svg delete mode 100644 .output/public/static/tick-orange.233abc69.svg delete mode 100644 .output/public/static/triangle-icon.c39ff2e7.svg delete mode 100644 .output/public/static/view-icon.da7fef35.svg create mode 100644 .output/server/chunks/_/error-500.mjs create mode 100644 .output/server/chunks/_/error-500.mjs.map rename .output/server/chunks/{nitro/node-server.mjs => _/nitro.mjs} (66%) create mode 100644 .output/server/chunks/_/nitro.mjs.map delete mode 100644 .output/server/chunks/app/client.manifest.mjs delete mode 100644 .output/server/chunks/app/client.manifest.mjs.map delete mode 100644 .output/server/chunks/app/server.mjs.map delete mode 100644 .output/server/chunks/app/static/entry-styles.6ffc8e86.mjs delete mode 100644 .output/server/chunks/app/static/entry-styles.6ffc8e86.mjs.map delete mode 100644 .output/server/chunks/app/static/error-404-e554c81e.mjs delete mode 100644 .output/server/chunks/app/static/error-404-e554c81e.mjs.map delete mode 100644 .output/server/chunks/app/static/error-404-styles.1e0dde27.mjs delete mode 100644 .output/server/chunks/app/static/error-404-styles.1e0dde27.mjs.map delete mode 100644 .output/server/chunks/app/static/error-500-87e865c4.mjs delete mode 100644 .output/server/chunks/app/static/error-500-87e865c4.mjs.map delete mode 100644 .output/server/chunks/app/static/error-500-styles.cf4b3e80.mjs delete mode 100644 .output/server/chunks/app/static/error-500-styles.cf4b3e80.mjs.map delete mode 100644 .output/server/chunks/app/static/island-renderer-e75852ba.mjs delete mode 100644 .output/server/chunks/app/static/island-renderer-e75852ba.mjs.map delete mode 100644 .output/server/chunks/app/styles.mjs delete mode 100644 .output/server/chunks/app/styles.mjs.map create mode 100644 .output/server/chunks/build/app-styles.BfYsvsru.mjs create mode 100644 .output/server/chunks/build/app-styles.BfYsvsru.mjs.map create mode 100644 .output/server/chunks/build/app-styles.Do9N83c2.mjs create mode 100644 .output/server/chunks/build/app-styles.Do9N83c2.mjs.map create mode 100644 .output/server/chunks/build/client.manifest.mjs create mode 100644 .output/server/chunks/build/client.manifest.mjs.map create mode 100644 .output/server/chunks/build/entry-styles-4.mjs.mjs create mode 100644 .output/server/chunks/build/entry-styles-4.mjs.mjs.map create mode 100644 .output/server/chunks/build/entry-styles.4OIjBqNs.mjs create mode 100644 .output/server/chunks/build/entry-styles.4OIjBqNs.mjs.map create mode 100644 .output/server/chunks/build/error-404-styles-1.mjs.mjs create mode 100644 .output/server/chunks/build/error-404-styles-1.mjs.mjs.map create mode 100644 .output/server/chunks/build/error-404-styles.BNmKahfp.mjs create mode 100644 .output/server/chunks/build/error-404-styles.BNmKahfp.mjs.map create mode 100644 .output/server/chunks/build/error-404-styles.wRz_-Rw1.mjs create mode 100644 .output/server/chunks/build/error-404-styles.wRz_-Rw1.mjs.map create mode 100644 .output/server/chunks/build/error-404.vue.mjs create mode 100644 .output/server/chunks/build/error-404.vue.mjs.map create mode 100644 .output/server/chunks/build/error-500-styles-1.mjs.mjs create mode 100644 .output/server/chunks/build/error-500-styles-1.mjs.mjs.map create mode 100644 .output/server/chunks/build/error-500-styles.Cx3AJg0u.mjs create mode 100644 .output/server/chunks/build/error-500-styles.Cx3AJg0u.mjs.map create mode 100644 .output/server/chunks/build/error-500-styles.TwxDbBgG.mjs create mode 100644 .output/server/chunks/build/error-500-styles.TwxDbBgG.mjs.map create mode 100644 .output/server/chunks/build/error-500.vue.mjs create mode 100644 .output/server/chunks/build/error-500.vue.mjs.map rename .output/server/chunks/{app => build}/server.mjs (69%) create mode 100644 .output/server/chunks/build/server.mjs.map create mode 100644 .output/server/chunks/build/styles.mjs create mode 100644 .output/server/chunks/build/styles.mjs.map delete mode 100644 .output/server/chunks/error-500.mjs delete mode 100644 .output/server/chunks/error-500.mjs.map delete mode 100644 .output/server/chunks/handlers/renderer.mjs delete mode 100644 .output/server/chunks/handlers/renderer.mjs.map delete mode 100644 .output/server/chunks/nitro/node-server.mjs.map create mode 100644 .output/server/chunks/routes/renderer.mjs create mode 100644 .output/server/chunks/routes/renderer.mjs.map rename .output/server/chunks/{rollup => virtual}/_virtual_spa-template.mjs (100%) rename .output/server/chunks/{rollup => virtual}/_virtual_spa-template.mjs.map (100%) delete mode 100644 .output/server/node_modules/@unhead/dom/dist/index.mjs delete mode 100644 .output/server/node_modules/@unhead/dom/package.json delete mode 100644 .output/server/node_modules/@unhead/shared/dist/index.mjs delete mode 100644 .output/server/node_modules/@unhead/shared/package.json delete mode 100644 .output/server/node_modules/@unhead/ssr/dist/index.mjs delete mode 100644 .output/server/node_modules/@unhead/ssr/package.json delete mode 100644 .output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js delete mode 100644 .output/server/node_modules/@vue/compiler-core/index.js delete mode 100644 .output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js delete mode 100644 .output/server/node_modules/@vue/compiler-dom/index.js delete mode 100644 .output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js delete mode 100644 .output/server/node_modules/@vue/reactivity/index.js delete mode 100644 .output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js delete mode 100644 .output/server/node_modules/@vue/runtime-core/index.js delete mode 100644 .output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js delete mode 100644 .output/server/node_modules/@vue/runtime-dom/index.js delete mode 100644 .output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js delete mode 100644 .output/server/node_modules/@vue/server-renderer/index.js delete mode 100644 .output/server/node_modules/@vue/shared/dist/shared.cjs.js delete mode 100644 .output/server/node_modules/@vue/shared/index.js create mode 100644 .output/server/node_modules/axios/lib/adapters/fetch.js create mode 100644 .output/server/node_modules/axios/lib/helpers/composeSignals.js create mode 100644 .output/server/node_modules/axios/lib/helpers/progressEventReducer.js create mode 100644 .output/server/node_modules/axios/lib/helpers/resolveConfig.js create mode 100644 .output/server/node_modules/axios/lib/helpers/trackStream.js create mode 100644 .output/server/node_modules/call-bind-apply-helpers/actualApply.js create mode 100644 .output/server/node_modules/call-bind-apply-helpers/functionApply.js create mode 100644 .output/server/node_modules/call-bind-apply-helpers/functionCall.js create mode 100644 .output/server/node_modules/call-bind-apply-helpers/index.js create mode 100644 .output/server/node_modules/call-bind-apply-helpers/package.json create mode 100644 .output/server/node_modules/call-bind-apply-helpers/reflectApply.js create mode 100644 .output/server/node_modules/devalue/src/base64.js create mode 100644 .output/server/node_modules/dunder-proto/get.js create mode 100644 .output/server/node_modules/dunder-proto/package.json create mode 100644 .output/server/node_modules/entities/lib/decode.js create mode 100644 .output/server/node_modules/entities/lib/decode_codepoint.js create mode 100644 .output/server/node_modules/entities/lib/generated/decode-data-html.js create mode 100644 .output/server/node_modules/entities/lib/generated/decode-data-xml.js create mode 100644 .output/server/node_modules/entities/package.json create mode 100644 .output/server/node_modules/es-define-property/index.js create mode 100644 .output/server/node_modules/es-define-property/package.json create mode 100644 .output/server/node_modules/es-errors/eval.js create mode 100644 .output/server/node_modules/es-errors/index.js create mode 100644 .output/server/node_modules/es-errors/package.json create mode 100644 .output/server/node_modules/es-errors/range.js create mode 100644 .output/server/node_modules/es-errors/ref.js create mode 100644 .output/server/node_modules/es-errors/syntax.js create mode 100644 .output/server/node_modules/es-errors/type.js create mode 100644 .output/server/node_modules/es-errors/uri.js create mode 100644 .output/server/node_modules/es-object-atoms/index.js create mode 100644 .output/server/node_modules/es-object-atoms/package.json create mode 100644 .output/server/node_modules/es-set-tostringtag/index.js create mode 100644 .output/server/node_modules/es-set-tostringtag/package.json create mode 100644 .output/server/node_modules/function-bind/implementation.js create mode 100644 .output/server/node_modules/function-bind/index.js create mode 100644 .output/server/node_modules/function-bind/package.json create mode 100644 .output/server/node_modules/get-intrinsic/index.js create mode 100644 .output/server/node_modules/get-intrinsic/package.json create mode 100644 .output/server/node_modules/get-proto/Object.getPrototypeOf.js create mode 100644 .output/server/node_modules/get-proto/Reflect.getPrototypeOf.js create mode 100644 .output/server/node_modules/get-proto/index.js create mode 100644 .output/server/node_modules/get-proto/package.json create mode 100644 .output/server/node_modules/gopd/gOPD.js create mode 100644 .output/server/node_modules/gopd/index.js create mode 100644 .output/server/node_modules/gopd/package.json create mode 100644 .output/server/node_modules/has-symbols/index.js create mode 100644 .output/server/node_modules/has-symbols/package.json create mode 100644 .output/server/node_modules/has-symbols/shams.js create mode 100644 .output/server/node_modules/has-tostringtag/package.json create mode 100644 .output/server/node_modules/has-tostringtag/shams.js create mode 100644 .output/server/node_modules/hasown/index.js create mode 100644 .output/server/node_modules/hasown/package.json create mode 100644 .output/server/node_modules/math-intrinsics/abs.js create mode 100644 .output/server/node_modules/math-intrinsics/floor.js create mode 100644 .output/server/node_modules/math-intrinsics/isNaN.js create mode 100644 .output/server/node_modules/math-intrinsics/max.js create mode 100644 .output/server/node_modules/math-intrinsics/min.js create mode 100644 .output/server/node_modules/math-intrinsics/package.json create mode 100644 .output/server/node_modules/math-intrinsics/pow.js create mode 100644 .output/server/node_modules/math-intrinsics/round.js create mode 100644 .output/server/node_modules/math-intrinsics/sign.js create mode 100644 .output/server/node_modules/unhead/dist/plugins.mjs create mode 100644 .output/server/node_modules/unhead/dist/scripts.mjs create mode 100644 .output/server/node_modules/unhead/dist/server.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.B52g_5xR.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.BaPU1zLf.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.DnNYlT4k.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.kVuXtrDW.mjs create mode 100644 .output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs create mode 100644 .output/server/node_modules/unhead/dist/utils.mjs diff --git a/.output/nitro.json b/.output/nitro.json index c3e7eda..b5cf083 100644 --- a/.output/nitro.json +++ b/.output/nitro.json @@ -1,14 +1,15 @@ { - "date": "2025-02-21T07:56:36.858Z", + "date": "2025-03-21T07:55:21.288Z", "preset": "node-server", "framework": { "name": "nuxt", - "version": "3.8.2" + "version": "3.16.0" }, "versions": { - "nitro": "2.8.1" + "nitro": "2.11.6" }, "commands": { "preview": "node ./server/index.mjs" - } + }, + "config": {} } \ No newline at end of file diff --git a/.output/public/static/D68ufz1E.js b/.output/public/static/D68ufz1E.js new file mode 100644 index 0000000..300fcaa --- /dev/null +++ b/.output/public/static/D68ufz1E.js @@ -0,0 +1 @@ +import{u as P,d as B,r as q,a as N,o as I,b as U,c as T,e as H,f as V,h as A,g as L,p as F,i as z,j as x,k as O,l as M,m as D,n as $,w as W,q as G,s as K,_ as Q,t as J,v as X,x as Y,y as C,z as S,A as Z,B as ee,C as te}from"./Dm9wah96.js";async function E(t,n=P()){const{path:d,matched:h}=n.resolve(t);if(!h.length||(n._routePreloaded||(n._routePreloaded=new Set),n._routePreloaded.has(d)))return;const v=n._preloadPromises||(n._preloadPromises=[]);if(v.length>4)return Promise.all(v).then(()=>E(t,n));n._routePreloaded.add(d);const e=h.map(a=>{var u;return(u=a.components)==null?void 0:u.default}).filter(a=>typeof a=="function");for(const a of e){const u=Promise.resolve(a()).catch(()=>{}).finally(()=>v.splice(v.indexOf(u)));v.push(u)}await Promise.all(v)}const ne=(...t)=>t.find(n=>n!==void 0);function ae(t){const n=t.componentName||"NuxtLink";function d(e){return typeof e=="string"&&e.startsWith("#")}function h(e,a){if(!e||t.trailingSlash!=="append"&&t.trailingSlash!=="remove")return e;if(typeof e=="string")return j(e,t.trailingSlash);const u="path"in e&&e.path!==void 0?e.path:a(e).path;return{...e,name:void 0,path:j(u,t.trailingSlash)}}function v(e){const a=P(),u=D(),s=x(()=>!!e.target&&e.target!=="_self"),p=x(()=>{const f=e.to||e.href||"";return typeof f=="string"&&O(f,{acceptRelative:!0})}),_=L("RouterLink"),b=typeof _!="string"?_.useLink:void 0,m=x(()=>{if(e.external)return!0;const f=e.to||e.href||"";return typeof f=="object"?!1:f===""||p.value}),r=x(()=>{const f=e.to||e.href||"";return m.value?f:h(f,a.resolve)}),c=m.value||b==null?void 0:b({...e,to:r}),y=x(()=>{var f;if(!r.value||p.value||d(r.value))return r.value;if(m.value){const k=typeof r.value=="object"&&"path"in r.value?z(r.value):r.value,w=typeof k=="object"?a.resolve(k).href:k;return h(w,a.resolve)}return typeof r.value=="object"?((f=a.resolve(r.value))==null?void 0:f.href)??null:h(M(u.app.baseURL,r.value),a.resolve)});return{to:r,hasTarget:s,isAbsoluteUrl:p,isExternal:m,href:y,isActive:(c==null?void 0:c.isActive)??x(()=>r.value===a.currentRoute.value.path),isExactActive:(c==null?void 0:c.isExactActive)??x(()=>r.value===a.currentRoute.value.path),route:(c==null?void 0:c.route)??x(()=>a.resolve(r.value)),async navigate(f){await $(y.value,{replace:e.replace,external:m.value||s.value})}}}return B({name:n,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},useLink:v,setup(e,{slots:a}){const u=P(),{to:s,href:p,navigate:_,isExternal:b,hasTarget:m,isAbsoluteUrl:r}=v(e),c=q(!1),y=q(null),f=o=>{var l;y.value=e.custom?(l=o==null?void 0:o.$el)==null?void 0:l.nextElementSibling:o==null?void 0:o.$el};function k(o){var l,i;return!c.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===o:((l=e.prefetchOn)==null?void 0:l[o])??((i=t.prefetchOn)==null?void 0:i[o]))&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!se()}async function w(o=N()){if(c.value)return;c.value=!0;const l=typeof s.value=="string"?s.value:b.value?z(s.value):u.resolve(s.value).fullPath,i=b.value?new URL(l,window.location.href).href:l;await Promise.all([o.hooks.callHook("link:prefetch",i).catch(()=>{}),!b.value&&!m.value&&E(s.value,u).catch(()=>{})])}if(k("visibility")){const o=N();let l,i=null;I(()=>{const g=oe();U(()=>{l=T(()=>{var R;(R=y==null?void 0:y.value)!=null&&R.tagName&&(i=g.observe(y.value,async()=>{i==null||i(),i=null,await w(o)}))})})}),H(()=>{l&&V(l),i==null||i(),i=null})}return()=>{var i;if(!b.value&&!m.value&&!d(s.value)){const g={ref:f,to:s.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(k("interaction")&&(g.onPointerenter=w.bind(null,void 0),g.onFocus=w.bind(null,void 0)),c.value&&(g.class=e.prefetchedClass||t.prefetchedClass),g.rel=e.rel||void 0),A(L("RouterLink"),g,a.default)}const o=e.target||null,l=ne(e.noRel?"":e.rel,t.externalRelAttribute,r.value||m.value?"noopener noreferrer":"")||null;return e.custom?a.default?a.default({href:p.value,navigate:_,prefetch:w,get route(){if(!p.value)return;const g=new URL(p.value,window.location.href);return{path:g.pathname,fullPath:g.pathname,get query(){return F(g.search)},hash:g.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:p.value}},rel:l,target:o,isExternal:b.value||m.value,isActive:!1,isExactActive:!1}):null:A("a",{ref:y,href:p.value||null,rel:l,target:o},(i=a.default)==null?void 0:i.call(a))}}})}const re=ae(K);function j(t,n){const d=n==="append"?W:G;return O(t)&&!t.startsWith("http")?t:d(t,!0)}function oe(){const t=N();if(t._observer)return t._observer;let n=null;const d=new Map,h=(e,a)=>(n||(n=new IntersectionObserver(u=>{for(const s of u){const p=d.get(s.target);(s.isIntersecting||s.intersectionRatio>0)&&p&&p()}})),d.set(e,a),n.observe(e),()=>{d.delete(e),n==null||n.unobserve(e),d.size===0&&(n==null||n.disconnect(),n=null)});return t._observer={observe:h}}const ie=/2g/;function se(){const t=navigator.connection;return!!(t&&(t.saveData||ie.test(t.effectiveType)))}const le={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},ue={class:"max-w-520px text-center z-20"},ce=["textContent"],fe=["textContent"],de={class:"flex items-center justify-center w-full"},he={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return J({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(d,h)=>{const v=re;return Y(),X("div",le,[h[0]||(h[0]=C("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),C("div",ue,[C("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:S(t.statusCode)},null,8,ce),C("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:S(t.description)},null,8,fe),C("div",de,[Z(v,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:ee(()=>[te(S(t.backHome),1)]),_:1})])])])}}},pe=Q(he,[["__scopeId","data-v-075d74b5"]]);export{pe as default}; diff --git a/.output/public/static/D8XG0MVX.js b/.output/public/static/D8XG0MVX.js new file mode 100644 index 0000000..aeb9162 --- /dev/null +++ b/.output/public/static/D8XG0MVX.js @@ -0,0 +1 @@ +import{_ as s,t as a,v as i,x as u,y as e,z as o}from"./Dm9wah96.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return a({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(u(),i("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},m=s(f,[["__scopeId","data-v-84d937c0"]]);export{m as default}; diff --git a/.output/public/static/Dm9wah96.js b/.output/public/static/Dm9wah96.js new file mode 100644 index 0000000..a9aafd1 --- /dev/null +++ b/.output/public/static/Dm9wah96.js @@ -0,0 +1,26 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./D68ufz1E.js","./error-404.CZkObG7r.css","./D8XG0MVX.js","./error-500.BFrSi6nG.css"])))=>i.map(i=>d[i]); +var Id=Object.defineProperty;var Pd=(e,t,n)=>t in e?Id(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var rn=(e,t,n)=>Pd(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Zi(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Le={},is=[],Tt=()=>{},Md=()=>!1,eo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Xi=e=>e.startsWith("onUpdate:"),Ve=Object.assign,$i=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Nd=Object.prototype.hasOwnProperty,be=(e,t)=>Nd.call(e,t),de=Array.isArray,ls=e=>tr(e)==="[object Map]",ou=e=>tr(e)==="[object Set]",ce=e=>typeof e=="function",Oe=e=>typeof e=="string",nn=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",ru=e=>(Te(e)||ce(e))&&ce(e.then)&&ce(e.catch),iu=Object.prototype.toString,tr=e=>iu.call(e),Dd=e=>tr(e).slice(8,-1),lu=e=>tr(e)==="[object Object]",el=e=>Oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,as=Zi(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),nr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ud=/-(\w)/g,St=nr(e=>e.replace(Ud,(t,n)=>n?n.toUpperCase():"")),Hd=/\B([A-Z])/g,yn=nr(e=>e.replace(Hd,"-$1").toLowerCase()),sr=nr(e=>e.charAt(0).toUpperCase()+e.slice(1)),qr=nr(e=>e?`on${sr(e)}`:""),An=(e,t)=>!Object.is(e,t),_o=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Ai=e=>{const t=parseFloat(e);return isNaN(t)?e:t},cu=e=>{const t=Oe(e)?Number(e):NaN;return isNaN(t)?e:t};let Aa;const or=()=>Aa||(Aa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function rt(e){if(de(e)){const t={};for(let n=0;n{if(n){const s=n.split(jd);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Se(e){let t="";if(Oe(e))t=e;else if(de(e))for(let n=0;n!!(e&&e.__v_isRef===!0),ne=e=>Oe(e)?e:e==null?"":de(e)||Te(e)&&(e.toString===iu||!ce(e.toString))?fu(e)?ne(e.value):JSON.stringify(e,du,2):String(e),du=(e,t)=>fu(t)?du(e,t.value):ls(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[zr(s,r)+" =>"]=o,n),{})}:ou(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zr(n))}:nn(t)?zr(t):Te(t)&&!de(t)&&!lu(t)?String(t):t,zr=(e,t="")=>{var n;return nn(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let it;class Au{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=it,!t&&it&&(this.index=(it.scopes||(it.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(Hs){let t=Hs;for(Hs=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Us;){let t=Us;for(Us=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function mu(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function yu(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),ol(s),Jd(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function pi(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(vu(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function vu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===zs))return;e.globalVersion=zs;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!pi(e)){e.flags&=-3;return}const n=Be,s=Rt;Be=e,Rt=!0;try{mu(e);const o=e.fn(e._value);(t.version===0||An(o,e._value))&&(e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Be=n,Rt=s,yu(e),e.flags&=-3}}function ol(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)ol(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Jd(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Rt=!0;const wu=[];function vn(){wu.push(Rt),Rt=!1}function wn(){const e=wu.pop();Rt=e===void 0?!0:e}function pa(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Be;Be=void 0;try{t()}finally{Be=n}}}let zs=0;class Yd{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class rl{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Be||!Rt||Be===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Be)n=this.activeLink=new Yd(Be,this),Be.deps?(n.prevDep=Be.depsTail,Be.depsTail.nextDep=n,Be.depsTail=n):Be.deps=Be.depsTail=n,bu(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Be.depsTail,n.nextDep=void 0,Be.depsTail.nextDep=n,Be.depsTail=n,Be.deps===n&&(Be.deps=s)}return n}trigger(t){this.version++,zs++,this.notify(t)}notify(t){nl();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{sl()}}}function bu(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)bu(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const No=new WeakMap,Dn=Symbol(""),hi=Symbol(""),Ks=Symbol("");function et(e,t,n){if(Rt&&Be){let s=No.get(e);s||No.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new rl),o.map=s,o.key=n),o.track()}}function Yt(e,t,n,s,o,r){const i=No.get(e);if(!i){zs++;return}const l=c=>{c&&c.trigger()};if(nl(),t==="clear")i.forEach(l);else{const c=de(e),f=c&&el(n);if(c&&n==="length"){const u=Number(s);i.forEach((a,p)=>{(p==="length"||p===Ks||!nn(p)&&p>=u)&&l(a)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),f&&l(i.get(Ks)),t){case"add":c?f&&l(i.get("length")):(l(i.get(Dn)),ls(e)&&l(i.get(hi)));break;case"delete":c||(l(i.get(Dn)),ls(e)&&l(i.get(hi)));break;case"set":ls(e)&&l(i.get(Dn));break}}sl()}function Zd(e,t){const n=No.get(e);return n&&n.get(t)}function Xn(e){const t=we(e);return t===e?t:(et(t,"iterate",Ks),xt(e)?t:t.map(tt))}function rr(e){return et(e=we(e),"iterate",Ks),e}const Xd={__proto__:null,[Symbol.iterator](){return Vr(this,Symbol.iterator,tt)},concat(...e){return Xn(this).concat(...e.map(t=>de(t)?Xn(t):t))},entries(){return Vr(this,"entries",e=>(e[1]=tt(e[1]),e))},every(e,t){return Wt(this,"every",e,t,void 0,arguments)},filter(e,t){return Wt(this,"filter",e,t,n=>n.map(tt),arguments)},find(e,t){return Wt(this,"find",e,t,tt,arguments)},findIndex(e,t){return Wt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Wt(this,"findLast",e,t,tt,arguments)},findLastIndex(e,t){return Wt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Wt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Wr(this,"includes",e)},indexOf(...e){return Wr(this,"indexOf",e)},join(e){return Xn(this).join(e)},lastIndexOf(...e){return Wr(this,"lastIndexOf",e)},map(e,t){return Wt(this,"map",e,t,void 0,arguments)},pop(){return Os(this,"pop")},push(...e){return Os(this,"push",e)},reduce(e,...t){return ha(this,"reduce",e,t)},reduceRight(e,...t){return ha(this,"reduceRight",e,t)},shift(){return Os(this,"shift")},some(e,t){return Wt(this,"some",e,t,void 0,arguments)},splice(...e){return Os(this,"splice",e)},toReversed(){return Xn(this).toReversed()},toSorted(e){return Xn(this).toSorted(e)},toSpliced(...e){return Xn(this).toSpliced(...e)},unshift(...e){return Os(this,"unshift",e)},values(){return Vr(this,"values",tt)}};function Vr(e,t,n){const s=rr(e),o=s[t]();return s!==e&&!xt(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.value&&(r.value=n(r.value)),r}),o}const $d=Array.prototype;function Wt(e,t,n,s,o,r){const i=rr(e),l=i!==e&&!xt(e),c=i[t];if(c!==$d[t]){const a=c.apply(e,r);return l?tt(a):a}let f=n;i!==e&&(l?f=function(a,p){return n.call(this,tt(a),p,e)}:n.length>2&&(f=function(a,p){return n.call(this,a,p,e)}));const u=c.call(i,f,s);return l&&o?o(u):u}function ha(e,t,n,s){const o=rr(e);let r=n;return o!==e&&(xt(e)?n.length>3&&(r=function(i,l,c){return n.call(this,i,l,c,e)}):r=function(i,l,c){return n.call(this,i,tt(l),c,e)}),o[t](r,...s)}function Wr(e,t,n){const s=we(e);et(s,"iterate",Ks);const o=s[t](...n);return(o===-1||o===!1)&&cl(n[0])?(n[0]=we(n[0]),s[t](...n)):o}function Os(e,t,n=[]){vn(),nl();const s=we(e)[t].apply(e,n);return sl(),wn(),s}const e2=Zi("__proto__,__v_isRef,__isVue"),Cu=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(nn));function t2(e){nn(e)||(e=String(e));const t=we(this);return et(t,"has",e),t.hasOwnProperty(e)}class xu{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?f2:_u:r?ku:Eu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=de(t);if(!o){let c;if(i&&(c=Xd[n]))return c;if(n==="hasOwnProperty")return t2}const l=Reflect.get(t,n,Ie(t)?t:s);return(nn(n)?Cu.has(n):e2(n))||(o||et(t,"get",n),r)?l:Ie(l)?i&&el(n)?l:l.value:Te(l)?o?ll(l):$t(l):l}}class Su extends xu{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];if(!this._isShallow){const c=hn(r);if(!xt(s)&&!hn(s)&&(r=we(r),s=we(s)),!de(t)&&Ie(r)&&!Ie(s))return c?!1:(r.value=s,!0)}const i=de(t)&&el(n)?Number(n)e,po=e=>Reflect.getPrototypeOf(e);function i2(e,t,n){return function(...s){const o=this.__v_raw,r=we(o),i=ls(r),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=o[e](...s),u=n?gi:t?mi:tt;return!t&&et(r,"iterate",c?hi:Dn),{next(){const{value:a,done:p}=f.next();return p?{value:a,done:p}:{value:l?[u(a[0]),u(a[1])]:u(a),done:p}},[Symbol.iterator](){return this}}}}function ho(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function l2(e,t){const n={get(o){const r=this.__v_raw,i=we(r),l=we(o);e||(An(o,l)&&et(i,"get",o),et(i,"get",l));const{has:c}=po(i),f=t?gi:e?mi:tt;if(c.call(i,o))return f(r.get(o));if(c.call(i,l))return f(r.get(l));r!==i&&r.get(o)},get size(){const o=this.__v_raw;return!e&&et(we(o),"iterate",Dn),Reflect.get(o,"size",o)},has(o){const r=this.__v_raw,i=we(r),l=we(o);return e||(An(o,l)&&et(i,"has",o),et(i,"has",l)),o===l?r.has(o):r.has(o)||r.has(l)},forEach(o,r){const i=this,l=i.__v_raw,c=we(l),f=t?gi:e?mi:tt;return!e&&et(c,"iterate",Dn),l.forEach((u,a)=>o.call(r,f(u),f(a),i))}};return Ve(n,e?{add:ho("add"),set:ho("set"),delete:ho("delete"),clear:ho("clear")}:{add(o){!t&&!xt(o)&&!hn(o)&&(o=we(o));const r=we(this);return po(r).has.call(r,o)||(r.add(o),Yt(r,"add",o,o)),this},set(o,r){!t&&!xt(r)&&!hn(r)&&(r=we(r));const i=we(this),{has:l,get:c}=po(i);let f=l.call(i,o);f||(o=we(o),f=l.call(i,o));const u=c.call(i,o);return i.set(o,r),f?An(r,u)&&Yt(i,"set",o,r):Yt(i,"add",o,r),this},delete(o){const r=we(this),{has:i,get:l}=po(r);let c=i.call(r,o);c||(o=we(o),c=i.call(r,o)),l&&l.call(r,o);const f=r.delete(o);return c&&Yt(r,"delete",o,void 0),f},clear(){const o=we(this),r=o.size!==0,i=o.clear();return r&&Yt(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=i2(o,e,t)}),n}function il(e,t){const n=l2(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(be(n,o)&&o in s?n:s,o,r)}const a2={get:il(!1,!1)},c2={get:il(!1,!0)},u2={get:il(!0,!1)};const Eu=new WeakMap,ku=new WeakMap,_u=new WeakMap,f2=new WeakMap;function d2(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function A2(e){return e.__v_skip||!Object.isExtensible(e)?0:d2(Dd(e))}function $t(e){return hn(e)?e:al(e,!1,s2,a2,Eu)}function Mn(e){return al(e,!1,r2,c2,ku)}function ll(e){return al(e,!0,o2,u2,_u)}function al(e,t,n,s,o){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=o.get(e);if(r)return r;const i=A2(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return o.set(e,l),l}function Un(e){return hn(e)?Un(e.__v_raw):!!(e&&e.__v_isReactive)}function hn(e){return!!(e&&e.__v_isReadonly)}function xt(e){return!!(e&&e.__v_isShallow)}function cl(e){return e?!!e.__v_raw:!1}function we(e){const t=e&&e.__v_raw;return t?we(t):e}function p2(e){return!be(e,"__v_skip")&&Object.isExtensible(e)&&au(e,"__v_skip",!0),e}const tt=e=>Te(e)?$t(e):e,mi=e=>Te(e)?ll(e):e;function Ie(e){return e?e.__v_isRef===!0:!1}function H(e){return Tu(e,!1)}function ga(e){return Tu(e,!0)}function Tu(e,t){return Ie(e)?e:new h2(e,t)}class h2{constructor(t,n){this.dep=new rl,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:we(t),this._value=n?t:tt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||xt(t)||hn(t);t=s?t:we(t),An(t,n)&&(this._rawValue=t,this._value=s?t:tt(t),this.dep.trigger())}}function z(e){return Ie(e)?e.value:e}function g2(e){return ce(e)?e():z(e)}const m2={get:(e,t,n)=>t==="__v_raw"?e:z(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Ru(e){return Un(e)?e:new Proxy(e,m2)}class y2{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Zd(we(this._object),this._key)}}class v2{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Lu(e,t,n){return Ie(e)?e:ce(e)?new v2(e):Te(e)&&arguments.length>1?w2(e,t,n):H(e)}function w2(e,t,n){const s=e[t];return Ie(s)?s:new y2(e,t,n)}class b2{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new rl(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=zs-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Be!==this)return gu(this,!0),!0}get value(){const t=this.dep.track();return vu(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function C2(e,t,n=!1){let s,o;return ce(e)?s=e:(s=e.get,o=e.set),new b2(s,o,n)}const go={},Do=new WeakMap;let Pn;function x2(e,t=!1,n=Pn){if(n){let s=Do.get(n);s||Do.set(n,s=[]),s.push(e)}}function S2(e,t,n=Le){const{immediate:s,deep:o,once:r,scheduler:i,augmentJob:l,call:c}=n,f=k=>o?k:xt(k)||o===!1||o===0?Zt(k,1):Zt(k);let u,a,p,w,h=!1,A=!1;if(Ie(e)?(a=()=>e.value,h=xt(e)):Un(e)?(a=()=>f(e),h=!0):de(e)?(A=!0,h=e.some(k=>Un(k)||xt(k)),a=()=>e.map(k=>{if(Ie(k))return k.value;if(Un(k))return f(k);if(ce(k))return c?c(k,2):k()})):ce(e)?t?a=c?()=>c(e,2):e:a=()=>{if(p){vn();try{p()}finally{wn()}}const k=Pn;Pn=u;try{return c?c(e,3,[w]):e(w)}finally{Pn=k}}:a=Tt,t&&o){const k=a,_=o===!0?1/0:o;a=()=>Zt(k(),_)}const C=tl(),T=()=>{u.stop(),C&&C.active&&$i(C.effects,u)};if(r&&t){const k=t;t=(..._)=>{k(..._),T()}}let P=A?new Array(e.length).fill(go):go;const g=k=>{if(!(!(u.flags&1)||!u.dirty&&!k))if(t){const _=u.run();if(o||h||(A?_.some((Q,V)=>An(Q,P[V])):An(_,P))){p&&p();const Q=Pn;Pn=u;try{const V=[_,P===go?void 0:A&&P[0]===go?[]:P,w];c?c(t,3,V):t(...V),P=_}finally{Pn=Q}}}else u.run()};return l&&l(g),u=new pu(a),u.scheduler=i?()=>i(g,!1):g,w=k=>x2(k,!1,u),p=u.onStop=()=>{const k=Do.get(u);if(k){if(c)c(k,4);else for(const _ of k)_();Do.delete(u)}},t?s?g(!0):P=u.run():i?i(g.bind(null,!0),!0):u.run(),T.pause=u.pause.bind(u),T.resume=u.resume.bind(u),T.stop=T,T}function Zt(e,t=1/0,n){if(t<=0||!Te(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Ie(e))Zt(e.value,t,n);else if(de(e))for(let s=0;s{Zt(s,t,n)});else if(lu(e)){for(const s in e)Zt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Zt(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function to(e,t,n,s){try{return s?e(...s):e()}catch(o){gs(o,t,n)}}function Lt(e,t,n,s){if(ce(e)){const o=to(e,t,n,s);return o&&ru(o)&&o.catch(r=>{gs(r,t,n)}),o}if(de(e)){const o=[];for(let r=0;r>>1,o=lt[s],r=Vs(o);r=Vs(n)?lt.push(e):lt.splice(k2(t),0,e),e.flags|=1,Bu()}}function Bu(){Uo||(Uo=Ou.then(Iu))}function yi(e){de(e)?cs.push(...e):an&&e.id===-1?an.splice(ns+1,0,e):e.flags&1||(cs.push(e),e.flags|=1),Bu()}function ma(e,t,n=Ht+1){for(;nVs(n)-Vs(s));if(cs.length=0,an){an.push(...t);return}for(an=t,ns=0;nse.id==null?e.flags&2?-1:1/0:e.id;function Iu(e){try{for(Ht=0;Ht{s._d&&Oa(-1);const r=Fo(t);let i;try{i=e(...o)}finally{Fo(r),s._d&&Oa(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Ct(e,t){if(ze===null)return e;const n=ur(ze),s=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,cn=Symbol("_leaveCb"),mo=Symbol("_enterCb");function T2(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return en(()=>{e.isMounted=!0}),dl(()=>{e.isUnmounting=!0}),e}const wt=[Function,Array],Nu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:wt,onEnter:wt,onAfterEnter:wt,onEnterCancelled:wt,onBeforeLeave:wt,onLeave:wt,onAfterLeave:wt,onLeaveCancelled:wt,onBeforeAppear:wt,onAppear:wt,onAfterAppear:wt,onAppearCancelled:wt},Du=e=>{const t=e.subTree;return t.component?Du(t.component):t},R2={name:"BaseTransition",props:Nu,setup(e,{slots:t}){const n=tn(),s=T2();return()=>{const o=t.default&&Fu(t.default(),!0);if(!o||!o.length)return;const r=Uu(o),i=we(e),{mode:l}=i;if(s.isLeaving)return Gr(r);const c=ya(r);if(!c)return Gr(r);let f=vi(c,i,s,n,a=>f=a);c.type!==Ke&&Ws(c,f);let u=n.subTree&&ya(n.subTree);if(u&&u.type!==Ke&&!Qt(c,u)&&Du(n).type!==Ke){let a=vi(u,i,s,n);if(Ws(u,a),l==="out-in"&&c.type!==Ke)return s.isLeaving=!0,a.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete a.afterLeave,u=void 0},Gr(r);l==="in-out"&&c.type!==Ke?a.delayLeave=(p,w,h)=>{const A=Hu(s,u);A[String(u.key)]=u,p[cn]=()=>{w(),p[cn]=void 0,delete f.delayedLeave,u=void 0},f.delayedLeave=()=>{h(),delete f.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return r}}};function Uu(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ke){t=n;break}}return t}const L2=R2;function Hu(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function vi(e,t,n,s,o){const{appear:r,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:u,onEnterCancelled:a,onBeforeLeave:p,onLeave:w,onAfterLeave:h,onLeaveCancelled:A,onBeforeAppear:C,onAppear:T,onAfterAppear:P,onAppearCancelled:g}=t,k=String(e.key),_=Hu(n,e),Q=(K,J)=>{K&&Lt(K,s,9,J)},V=(K,J)=>{const te=J[1];Q(K,J),de(K)?K.every(j=>j.length<=1)&&te():K.length<=1&&te()},ie={mode:i,persisted:l,beforeEnter(K){let J=c;if(!n.isMounted)if(r)J=C||c;else return;K[cn]&&K[cn](!0);const te=_[k];te&&Qt(e,te)&&te.el[cn]&&te.el[cn](),Q(J,[K])},enter(K){let J=f,te=u,j=a;if(!n.isMounted)if(r)J=T||f,te=P||u,j=g||a;else return;let re=!1;const ae=K[mo]=he=>{re||(re=!0,he?Q(j,[K]):Q(te,[K]),ie.delayedLeave&&ie.delayedLeave(),K[mo]=void 0)};J?V(J,[K,ae]):ae()},leave(K,J){const te=String(e.key);if(K[mo]&&K[mo](!0),n.isUnmounting)return J();Q(p,[K]);let j=!1;const re=K[cn]=ae=>{j||(j=!0,J(),ae?Q(A,[K]):Q(h,[K]),K[cn]=void 0,_[te]===e&&delete _[te])};_[te]=e,w?V(w,[K,re]):re()},clone(K){const J=vi(K,t,n,s,o);return o&&o(J),J}};return ie}function Gr(e){if(no(e))return e=mn(e),e.children=null,e}function ya(e){if(!no(e))return Mu(e.type)&&e.children?Uu(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&ce(n.default))return n.default()}}function Ws(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ws(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Fu(e,t=!1,n){let s=[],o=0;for(let r=0;r1)for(let r=0;rGs(h,t&&(de(t)?t[A]:t),n,s,o));return}if(Hn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Gs(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?ur(s.component):s.el,i=o?null:r,{i:l,r:c}=e,f=t&&t.r,u=l.refs===Le?l.refs={}:l.refs,a=l.setupState,p=we(a),w=a===Le?()=>!1:h=>be(p,h);if(f!=null&&f!==c&&(Oe(f)?(u[f]=null,w(f)&&(a[f]=null)):Ie(f)&&(f.value=null)),ce(c))to(c,l,12,[i,u]);else{const h=Oe(c),A=Ie(c);if(h||A){const C=()=>{if(e.f){const T=h?w(c)?a[c]:u[c]:c.value;o?de(T)&&$i(T,r):de(T)?T.includes(r)||T.push(r):h?(u[c]=[r],w(c)&&(a[c]=u[c])):(c.value=[r],e.k&&(u[e.k]=c.value))}else h?(u[c]=i,w(c)&&(a[c]=i)):A&&(c.value=i,e.k&&(u[e.k]=i))};i?(C.id=-1,gt(C,n)):C()}}}let va=!1;const $n=()=>{va||(console.error("Hydration completed but contains mismatches."),va=!0)},O2=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",B2=e=>e.namespaceURI.includes("MathML"),yo=e=>{if(e.nodeType===1){if(O2(e))return"svg";if(B2(e))return"mathml"}},os=e=>e.nodeType===8;function I2(e){const{mt:t,p:n,o:{patchProp:s,createText:o,nextSibling:r,parentNode:i,remove:l,insert:c,createComment:f}}=e,u=(g,k)=>{if(!k.hasChildNodes()){n(null,g,k),Ho(),k._vnode=g;return}a(k.firstChild,g,null,null,null),Ho(),k._vnode=g},a=(g,k,_,Q,V,ie=!1)=>{ie=ie||!!k.dynamicChildren;const K=os(g)&&g.data==="[",J=()=>A(g,k,_,Q,V,K),{type:te,ref:j,shapeFlag:re,patchFlag:ae}=k;let he=g.nodeType;k.el=g,ae===-2&&(ie=!1,k.dynamicChildren=null);let q=null;switch(te){case jn:he!==3?k.children===""?(c(k.el=o(""),i(g),g),q=g):q=J():(g.data!==k.children&&($n(),g.data=k.children),q=r(g));break;case Ke:P(g)?(q=r(g),T(k.el=g.content.firstChild,g,_)):he!==8||K?q=J():q=r(g);break;case js:if(K&&(g=r(g),he=g.nodeType),he===1||he===3){q=g;const le=!k.children.length;for(let X=0;X{ie=ie||!!k.dynamicChildren;const{type:K,props:J,patchFlag:te,shapeFlag:j,dirs:re,transition:ae}=k,he=K==="input"||K==="option";if(he||te!==-1){re&&jt(k,null,_,"created");let q=!1;if(P(g)){q=uf(null,ae)&&_&&_.vnode.props&&_.vnode.props.appear;const X=g.content.firstChild;q&&ae.beforeEnter(X),T(X,g,_),k.el=g=X}if(j&16&&!(J&&(J.innerHTML||J.textContent))){let X=w(g.firstChild,k,g,_,Q,V,ie);for(;X;){vo(g,1)||$n();const Ce=X;X=X.nextSibling,l(Ce)}}else if(j&8){let X=k.children;X[0]===` +`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(X=X.slice(1)),g.textContent!==X&&(vo(g,0)||$n(),g.textContent=k.children)}if(J){if(he||!ie||te&48){const X=g.tagName.includes("-");for(const Ce in J)(he&&(Ce.endsWith("value")||Ce==="indeterminate")||eo(Ce)&&!as(Ce)||Ce[0]==="."||X)&&s(g,Ce,null,J[Ce],void 0,_)}else if(J.onClick)s(g,"onClick",null,J.onClick,void 0,_);else if(te&4&&Un(J.style))for(const X in J.style)J.style[X]}let le;(le=J&&J.onVnodeBeforeMount)&&bt(le,_,k),re&&jt(k,null,_,"beforeMount"),((le=J&&J.onVnodeMounted)||re||q)&&yf(()=>{le&&bt(le,_,k),q&&ae.enter(g),re&&jt(k,null,_,"mounted")},Q)}return g.nextSibling},w=(g,k,_,Q,V,ie,K)=>{K=K||!!k.dynamicChildren;const J=k.children,te=J.length;for(let j=0;j{const{slotScopeIds:K}=k;K&&(V=V?V.concat(K):K);const J=i(g),te=w(r(g),k,J,_,Q,V,ie);return te&&os(te)&&te.data==="]"?r(k.anchor=te):($n(),c(k.anchor=f("]"),J,te),te)},A=(g,k,_,Q,V,ie)=>{if(vo(g.parentElement,1)||$n(),k.el=null,ie){const te=C(g);for(;;){const j=r(g);if(j&&j!==te)l(j);else break}}const K=r(g),J=i(g);return l(g),n(null,k,J,K,_,Q,yo(J),V),_&&(_.vnode.el=k.el,cr(_,k.el)),K},C=(g,k="[",_="]")=>{let Q=0;for(;g;)if(g=r(g),g&&os(g)&&(g.data===k&&Q++,g.data===_)){if(Q===0)return r(g);Q--}return g},T=(g,k,_)=>{const Q=k.parentNode;Q&&Q.replaceChild(g,k);let V=_;for(;V;)V.vnode.el===k&&(V.vnode.el=V.subTree.el=g),V=V.parent},P=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[u,a]}const wa="data-allow-mismatch",P2={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function vo(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(wa);)e=e.parentElement;const n=e&&e.getAttribute(wa);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(P2[t])}}or().requestIdleCallback;or().cancelIdleCallback;function M2(e,t){if(os(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(os(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const Hn=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function ba(e){ce(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,hydrate:r,timeout:i,suspensible:l=!0,onError:c}=e;let f=null,u,a=0;const p=()=>(a++,f=null,w()),w=()=>{let h;return f||(h=f=t().catch(A=>{if(A=A instanceof Error?A:new Error(String(A)),c)return new Promise((C,T)=>{c(A,()=>C(p()),()=>T(A),a+1)});throw A}).then(A=>h!==f&&f?f:(A&&(A.__esModule||A[Symbol.toStringTag]==="Module")&&(A=A.default),u=A,A)))};return Me({name:"AsyncComponentWrapper",__asyncLoader:w,__asyncHydrate(h,A,C){const T=r?()=>{const P=r(C,g=>M2(h,g));P&&(A.bum||(A.bum=[])).push(P)}:C;u?T():w().then(()=>!A.isUnmounted&&T())},get __asyncResolved(){return u},setup(){const h=qe;if(fl(h),u)return()=>Jr(u,h);const A=g=>{f=null,gs(g,h,13,!s)};if(l&&h.suspense||ds)return w().then(g=>()=>Jr(g,h)).catch(g=>(A(g),()=>s?xe(s,{error:g}):null));const C=H(!1),T=H(),P=H(!!o);return o&&setTimeout(()=>{P.value=!1},o),i!=null&&setTimeout(()=>{if(!C.value&&!T.value){const g=new Error(`Async component timed out after ${i}ms.`);A(g),T.value=g}},i),w().then(()=>{C.value=!0,h.parent&&no(h.parent.vnode)&&h.parent.update()}).catch(g=>{A(g),T.value=g}),()=>{if(C.value&&u)return Jr(u,h);if(T.value&&s)return xe(s,{error:T.value});if(n&&!P.value)return xe(n)}}})}function Jr(e,t){const{ref:n,props:s,children:o,ce:r}=t.vnode,i=xe(e,s,o);return i.ref=n,i.ce=r,delete t.vnode.ce,i}const no=e=>e.type.__isKeepAlive;function ju(e,t){qu(e,"a",t)}function Qu(e,t){qu(e,"da",t)}function qu(e,t,n=qe){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ir(t,s,n),n){let o=n.parent;for(;o&&o.parent;)no(o.parent.vnode)&&N2(s,t,n,o),o=o.parent}}function N2(e,t,n,s){const o=ir(t,e,s,!0);zt(()=>{$i(s[t],o)},n)}function ir(e,t,n=qe,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{vn();const l=so(n),c=Lt(t,n,e,i);return l(),wn(),c});return s?o.unshift(r):o.push(r),r}}const sn=e=>(t,n=qe)=>{(!ds||e==="sp")&&ir(e,(...s)=>t(...s),n)},D2=sn("bm"),en=sn("m"),U2=sn("bu"),H2=sn("u"),dl=sn("bum"),zt=sn("um"),F2=sn("sp"),j2=sn("rtg"),Q2=sn("rtc");function zu(e,t=qe){ir("ec",e,t)}const Ku="components";function A7(e,t){return Gu(Ku,e,!0,t)||e}const Vu=Symbol.for("v-ndc");function Wu(e){return Oe(e)?Gu(Ku,e,!1)||e:e||Vu}function Gu(e,t,n=!0,s=!1){const o=ze||qe;if(o){const r=o.type;{const l=LA(r,!1);if(l&&(l===t||l===St(t)||l===sr(St(t))))return r}const i=Ca(o[e]||r[e],t)||Ca(o.appContext[e],t);return!i&&s?r:i}}function Ca(e,t){return e&&(e[t]||e[St(t)]||e[sr(St(t))])}function Ze(e,t,n,s){let o;const r=n,i=de(e);if(i||Oe(e)){const l=i&&Un(e);let c=!1;l&&(c=!xt(e),e=rr(e)),o=new Array(e.length);for(let f=0,u=e.length;ft(l,c,void 0,r));else{const l=Object.keys(e);o=new Array(l.length);for(let c=0,f=l.length;cgn(t)?!(t.type===Ke||t.type===pe&&!Ju(t.children)):!0)?e:null}const wi=e=>e?Sf(e)?ur(e):wi(e.parent):null,Fs=Ve(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>wi(e.parent),$root:e=>wi(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Zu(e),$forceUpdate:e=>e.f||(e.f=()=>{ul(e.update)}),$nextTick:e=>e.n||(e.n=Xt.bind(e.proxy)),$watch:e=>aA.bind(e)}),Yr=(e,t)=>e!==Le&&!e.__isScriptSetup&&be(e,t),q2={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:i,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const w=i[t];if(w!==void 0)switch(w){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(Yr(s,t))return i[t]=1,s[t];if(o!==Le&&be(o,t))return i[t]=2,o[t];if((f=e.propsOptions[0])&&be(f,t))return i[t]=3,r[t];if(n!==Le&&be(n,t))return i[t]=4,n[t];bi&&(i[t]=0)}}const u=Fs[t];let a,p;if(u)return t==="$attrs"&&et(e.attrs,"get",""),u(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(n!==Le&&be(n,t))return i[t]=4,n[t];if(p=c.config.globalProperties,be(p,t))return p[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return Yr(o,t)?(o[t]=n,!0):s!==Le&&be(s,t)?(s[t]=n,!0):be(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,propsOptions:r}},i){let l;return!!n[i]||e!==Le&&be(e,i)||Yr(t,i)||(l=r[0])&&be(l,i)||be(s,i)||be(Fs,i)||be(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:be(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function xa(e){return de(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let bi=!0;function z2(e){const t=Zu(e),n=e.proxy,s=e.ctx;bi=!1,t.beforeCreate&&Sa(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:l,provide:c,inject:f,created:u,beforeMount:a,mounted:p,beforeUpdate:w,updated:h,activated:A,deactivated:C,beforeDestroy:T,beforeUnmount:P,destroyed:g,unmounted:k,render:_,renderTracked:Q,renderTriggered:V,errorCaptured:ie,serverPrefetch:K,expose:J,inheritAttrs:te,components:j,directives:re,filters:ae}=t;if(f&&K2(f,s,null),i)for(const le in i){const X=i[le];ce(X)&&(s[le]=X.bind(n))}if(o){const le=o.call(n,n);Te(le)&&(e.data=$t(le))}if(bi=!0,r)for(const le in r){const X=r[le],Ce=ce(X)?X.bind(n,n):ce(X.get)?X.get.bind(n,n):Tt,dt=!ce(X)&&ce(X.set)?X.set.bind(n):Tt,He=_e({get:Ce,set:dt});Object.defineProperty(s,le,{enumerable:!0,configurable:!0,get:()=>He.value,set:Fe=>He.value=Fe})}if(l)for(const le in l)Yu(l[le],s,n,le);if(c){const le=ce(c)?c.call(n):c;Reflect.ownKeys(le).forEach(X=>{Qe(X,le[X])})}u&&Sa(u,e,"c");function q(le,X){de(X)?X.forEach(Ce=>le(Ce.bind(n))):X&&le(X.bind(n))}if(q(D2,a),q(en,p),q(U2,w),q(H2,h),q(ju,A),q(Qu,C),q(zu,ie),q(Q2,Q),q(j2,V),q(dl,P),q(zt,k),q(F2,K),de(J))if(J.length){const le=e.exposed||(e.exposed={});J.forEach(X=>{Object.defineProperty(le,X,{get:()=>n[X],set:Ce=>n[X]=Ce})})}else e.exposed||(e.exposed={});_&&e.render===Tt&&(e.render=_),te!=null&&(e.inheritAttrs=te),j&&(e.components=j),re&&(e.directives=re),K&&fl(e)}function K2(e,t,n=Tt){de(e)&&(e=Ci(e));for(const s in e){const o=e[s];let r;Te(o)?"default"in o?r=ke(o.from||s,o.default,!0):r=ke(o.from||s):r=ke(o),Ie(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[s]=r}}function Sa(e,t,n){Lt(de(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Yu(e,t,n,s){let o=s.includes(".")?pf(n,s):()=>n[s];if(Oe(e)){const r=t[e];ce(r)&&pn(o,r)}else if(ce(e))pn(o,e.bind(n));else if(Te(e))if(de(e))e.forEach(r=>Yu(r,t,n,s));else{const r=ce(e.handler)?e.handler.bind(n):t[e.handler];ce(r)&&pn(o,r,e)}}function Zu(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let c;return l?c=l:!o.length&&!n&&!s?c=t:(c={},o.length&&o.forEach(f=>Qo(c,f,i,!0)),Qo(c,t,i)),Te(t)&&r.set(t,c),c}function Qo(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Qo(e,r,n,!0),o&&o.forEach(i=>Qo(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=V2[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const V2={data:Ea,props:ka,emits:ka,methods:Ds,computed:Ds,beforeCreate:ot,created:ot,beforeMount:ot,mounted:ot,beforeUpdate:ot,updated:ot,beforeDestroy:ot,beforeUnmount:ot,destroyed:ot,unmounted:ot,activated:ot,deactivated:ot,errorCaptured:ot,serverPrefetch:ot,components:Ds,directives:Ds,watch:G2,provide:Ea,inject:W2};function Ea(e,t){return t?e?function(){return Ve(ce(e)?e.call(this,this):e,ce(t)?t.call(this,this):t)}:t:e}function W2(e,t){return Ds(Ci(e),Ci(t))}function Ci(e){if(de(e)){const t={};for(let n=0;n1)return n&&ce(t)?t.call(s&&s.proxy):t}}function lr(){return!!(qe||ze||Fn)}const $u={},ef=()=>Object.create($u),tf=e=>Object.getPrototypeOf(e)===$u;function Z2(e,t,n,s=!1){const o={},r=ef();e.propsDefaults=Object.create(null),nf(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=s?o:Mn(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function X2(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=we(o),[c]=e.propsOptions;let f=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let a=0;a{c=!0;const[p,w]=sf(a,t,!0);Ve(i,p),w&&l.push(...w)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!r&&!c)return Te(e)&&s.set(e,is),is;if(de(r))for(let u=0;ue[0]==="_"||e==="$stable",Al=e=>de(e)?e.map(mt):[mt(e)],eA=(e,t,n)=>{if(t._n)return t;const s=qt((...o)=>Al(t(...o)),n);return s._c=!1,s},rf=(e,t,n)=>{const s=e._ctx;for(const o in e){if(of(o))continue;const r=e[o];if(ce(r))t[o]=eA(o,r,s);else if(r!=null){const i=Al(r);t[o]=()=>i}}},lf=(e,t)=>{const n=Al(t);e.slots.default=()=>n},af=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},tA=(e,t,n)=>{const s=e.slots=ef();if(e.vnode.shapeFlag&32){const o=t._;o?(af(s,t,n),n&&au(s,"_",o,!0)):rf(t,s)}else t&&lf(e,t)},nA=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,i=Le;if(s.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:af(o,t,n):(r=!t.$stable,rf(t,o)),i=t}else t&&(lf(e,t),i={default:1});if(r)for(const l in o)!of(l)&&i[l]==null&&delete o[l]},gt=yf;function sA(e){return cf(e)}function oA(e){return cf(e,I2)}function cf(e,t){const n=or();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:i,createText:l,createComment:c,setText:f,setElementText:u,parentNode:a,nextSibling:p,setScopeId:w=Tt,insertStaticContent:h}=e,A=(y,b,L,N=null,M=null,D=null,Z=void 0,W=null,Y=!!b.dynamicChildren)=>{if(y===b)return;y&&!Qt(y,b)&&(N=kt(y),Fe(y,M,D,!0),y=null),b.patchFlag===-2&&(Y=!1,b.dynamicChildren=null);const{type:U,ref:E,shapeFlag:v}=b;switch(U){case jn:C(y,b,L,N);break;case Ke:T(y,b,L,N);break;case js:y==null&&P(b,L,N,Z);break;case pe:j(y,b,L,N,M,D,Z,W,Y);break;default:v&1?_(y,b,L,N,M,D,Z,W,Y):v&6?re(y,b,L,N,M,D,Z,W,Y):(v&64||v&128)&&U.process(y,b,L,N,M,D,Z,W,Y,Ge)}E!=null&&M&&Gs(E,y&&y.ref,D,b||y,!b)},C=(y,b,L,N)=>{if(y==null)s(b.el=l(b.children),L,N);else{const M=b.el=y.el;b.children!==y.children&&f(M,b.children)}},T=(y,b,L,N)=>{y==null?s(b.el=c(b.children||""),L,N):b.el=y.el},P=(y,b,L,N)=>{[y.el,y.anchor]=h(y.children,b,L,N,y.el,y.anchor)},g=({el:y,anchor:b},L,N)=>{let M;for(;y&&y!==b;)M=p(y),s(y,L,N),y=M;s(b,L,N)},k=({el:y,anchor:b})=>{let L;for(;y&&y!==b;)L=p(y),o(y),y=L;o(b)},_=(y,b,L,N,M,D,Z,W,Y)=>{b.type==="svg"?Z="svg":b.type==="math"&&(Z="mathml"),y==null?Q(b,L,N,M,D,Z,W,Y):K(y,b,M,D,Z,W,Y)},Q=(y,b,L,N,M,D,Z,W)=>{let Y,U;const{props:E,shapeFlag:v,transition:S,dirs:I}=y;if(Y=y.el=i(y.type,D,E&&E.is,E),v&8?u(Y,y.children):v&16&&ie(y.children,Y,null,N,M,Zr(y,D),Z,W),I&&jt(y,null,N,"created"),V(Y,y,y.scopeId,Z,N),E){for(const fe in E)fe!=="value"&&!as(fe)&&r(Y,fe,null,E[fe],D,N);"value"in E&&r(Y,"value",null,E.value,D),(U=E.onVnodeBeforeMount)&&bt(U,N,y)}I&&jt(y,null,N,"beforeMount");const ee=uf(M,S);ee&&S.beforeEnter(Y),s(Y,b,L),((U=E&&E.onVnodeMounted)||ee||I)&>(()=>{U&&bt(U,N,y),ee&&S.enter(Y),I&&jt(y,null,N,"mounted")},M)},V=(y,b,L,N,M)=>{if(L&&w(y,L),N)for(let D=0;D{for(let U=Y;U{const W=b.el=y.el;let{patchFlag:Y,dynamicChildren:U,dirs:E}=b;Y|=y.patchFlag&16;const v=y.props||Le,S=b.props||Le;let I;if(L&&Rn(L,!1),(I=S.onVnodeBeforeUpdate)&&bt(I,L,b,y),E&&jt(b,y,L,"beforeUpdate"),L&&Rn(L,!0),(v.innerHTML&&S.innerHTML==null||v.textContent&&S.textContent==null)&&u(W,""),U?J(y.dynamicChildren,U,W,L,N,Zr(b,M),D):Z||X(y,b,W,null,L,N,Zr(b,M),D,!1),Y>0){if(Y&16)te(W,v,S,L,M);else if(Y&2&&v.class!==S.class&&r(W,"class",null,S.class,M),Y&4&&r(W,"style",v.style,S.style,M),Y&8){const ee=b.dynamicProps;for(let fe=0;fe{I&&bt(I,L,b,y),E&&jt(b,y,L,"updated")},N)},J=(y,b,L,N,M,D,Z)=>{for(let W=0;W{if(b!==L){if(b!==Le)for(const D in b)!as(D)&&!(D in L)&&r(y,D,b[D],null,M,N);for(const D in L){if(as(D))continue;const Z=L[D],W=b[D];Z!==W&&D!=="value"&&r(y,D,W,Z,M,N)}"value"in L&&r(y,"value",b.value,L.value,M)}},j=(y,b,L,N,M,D,Z,W,Y)=>{const U=b.el=y?y.el:l(""),E=b.anchor=y?y.anchor:l("");let{patchFlag:v,dynamicChildren:S,slotScopeIds:I}=b;I&&(W=W?W.concat(I):I),y==null?(s(U,L,N),s(E,L,N),ie(b.children||[],L,E,M,D,Z,W,Y)):v>0&&v&64&&S&&y.dynamicChildren?(J(y.dynamicChildren,S,L,M,D,Z,W),(b.key!=null||M&&b===M.subTree)&&ff(y,b,!0)):X(y,b,L,E,M,D,Z,W,Y)},re=(y,b,L,N,M,D,Z,W,Y)=>{b.slotScopeIds=W,y==null?b.shapeFlag&512?M.ctx.activate(b,L,N,Z,Y):ae(b,L,N,M,D,Z,Y):he(y,b,Y)},ae=(y,b,L,N,M,D,Z)=>{const W=y.component=EA(y,N,M);if(no(y)&&(W.ctx.renderer=Ge),kA(W,!1,Z),W.asyncDep){if(M&&M.registerDep(W,q,Z),!y.el){const Y=W.subTree=xe(Ke);T(null,Y,b,L)}}else q(W,y,b,L,M,D,Z)},he=(y,b,L)=>{const N=b.component=y.component;if(pA(y,b,L))if(N.asyncDep&&!N.asyncResolved){le(N,b,L);return}else N.next=b,N.update();else b.el=y.el,N.vnode=b},q=(y,b,L,N,M,D,Z)=>{const W=()=>{if(y.isMounted){let{next:v,bu:S,u:I,parent:ee,vnode:fe}=y;{const Ue=df(y);if(Ue){v&&(v.el=fe.el,le(y,v,Z)),Ue.asyncDep.then(()=>{y.isUnmounted||W()});return}}let ue=v,me;Rn(y,!1),v?(v.el=fe.el,le(y,v,Z)):v=fe,S&&_o(S),(me=v.props&&v.props.onVnodeBeforeUpdate)&&bt(me,ee,v,fe),Rn(y,!0);const F=Xr(y),ve=y.subTree;y.subTree=F,A(ve,F,a(ve.el),kt(ve),y,M,D),v.el=F.el,ue===null&&cr(y,F.el),I&>(I,M),(me=v.props&&v.props.onVnodeUpdated)&>(()=>bt(me,ee,v,fe),M)}else{let v;const{el:S,props:I}=b,{bm:ee,m:fe,parent:ue,root:me,type:F}=y,ve=Hn(b);if(Rn(y,!1),ee&&_o(ee),!ve&&(v=I&&I.onVnodeBeforeMount)&&bt(v,ue,b),Rn(y,!0),S&&Ne){const Ue=()=>{y.subTree=Xr(y),Ne(S,y.subTree,y,M,null)};ve&&F.__asyncHydrate?F.__asyncHydrate(S,y,Ue):Ue()}else{me.ce&&me.ce._injectChildStyle(F);const Ue=y.subTree=Xr(y);A(null,Ue,L,N,y,M,D),b.el=Ue.el}if(fe&>(fe,M),!ve&&(v=I&&I.onVnodeMounted)){const Ue=b;gt(()=>bt(v,ue,Ue),M)}(b.shapeFlag&256||ue&&Hn(ue.vnode)&&ue.vnode.shapeFlag&256)&&y.a&>(y.a,M),y.isMounted=!0,b=L=N=null}};y.scope.on();const Y=y.effect=new pu(W);y.scope.off();const U=y.update=Y.run.bind(Y),E=y.job=Y.runIfDirty.bind(Y);E.i=y,E.id=y.uid,Y.scheduler=()=>ul(E),Rn(y,!0),U()},le=(y,b,L)=>{b.component=y;const N=y.vnode.props;y.vnode=b,y.next=null,X2(y,b.props,N,L),nA(y,b.children,L),vn(),ma(y),wn()},X=(y,b,L,N,M,D,Z,W,Y=!1)=>{const U=y&&y.children,E=y?y.shapeFlag:0,v=b.children,{patchFlag:S,shapeFlag:I}=b;if(S>0){if(S&128){dt(U,v,L,N,M,D,Z,W,Y);return}else if(S&256){Ce(U,v,L,N,M,D,Z,W,Y);return}}I&8?(E&16&&st(U,M,D),v!==U&&u(L,v)):E&16?I&16?dt(U,v,L,N,M,D,Z,W,Y):st(U,M,D,!0):(E&8&&u(L,""),I&16&&ie(v,L,N,M,D,Z,W,Y))},Ce=(y,b,L,N,M,D,Z,W,Y)=>{y=y||is,b=b||is;const U=y.length,E=b.length,v=Math.min(U,E);let S;for(S=0;SE?st(y,M,D,!0,!1,v):ie(b,L,N,M,D,Z,W,Y,v)},dt=(y,b,L,N,M,D,Z,W,Y)=>{let U=0;const E=b.length;let v=y.length-1,S=E-1;for(;U<=v&&U<=S;){const I=y[U],ee=b[U]=Y?un(b[U]):mt(b[U]);if(Qt(I,ee))A(I,ee,L,null,M,D,Z,W,Y);else break;U++}for(;U<=v&&U<=S;){const I=y[v],ee=b[S]=Y?un(b[S]):mt(b[S]);if(Qt(I,ee))A(I,ee,L,null,M,D,Z,W,Y);else break;v--,S--}if(U>v){if(U<=S){const I=S+1,ee=IS)for(;U<=v;)Fe(y[U],M,D,!0),U++;else{const I=U,ee=U,fe=new Map;for(U=ee;U<=S;U++){const je=b[U]=Y?un(b[U]):mt(b[U]);je.key!=null&&fe.set(je.key,U)}let ue,me=0;const F=S-ee+1;let ve=!1,Ue=0;const Xe=new Array(F);for(U=0;U=F){Fe(je,M,D,!0);continue}let De;if(je.key!=null)De=fe.get(je.key);else for(ue=ee;ue<=S;ue++)if(Xe[ue-ee]===0&&Qt(je,b[ue])){De=ue;break}De===void 0?Fe(je,M,D,!0):(Xe[De-ee]=U+1,De>=Ue?Ue=De:ve=!0,A(je,b[De],L,null,M,D,Z,W,Y),me++)}const vt=ve?rA(Xe):is;for(ue=vt.length-1,U=F-1;U>=0;U--){const je=ee+U,De=b[je],ge=je+1{const{el:D,type:Z,transition:W,children:Y,shapeFlag:U}=y;if(U&6){He(y.component.subTree,b,L,N);return}if(U&128){y.suspense.move(b,L,N);return}if(U&64){Z.move(y,b,L,Ge);return}if(Z===pe){s(D,b,L);for(let v=0;vW.enter(D),M);else{const{leave:v,delayLeave:S,afterLeave:I}=W,ee=()=>s(D,b,L),fe=()=>{v(D,()=>{ee(),I&&I()})};S?S(D,ee,fe):fe()}else s(D,b,L)},Fe=(y,b,L,N=!1,M=!1)=>{const{type:D,props:Z,ref:W,children:Y,dynamicChildren:U,shapeFlag:E,patchFlag:v,dirs:S,cacheIndex:I}=y;if(v===-2&&(M=!1),W!=null&&Gs(W,null,L,y,!0),I!=null&&(b.renderCache[I]=void 0),E&256){b.ctx.deactivate(y);return}const ee=E&1&&S,fe=!Hn(y);let ue;if(fe&&(ue=Z&&Z.onVnodeBeforeUnmount)&&bt(ue,b,y),E&6)on(y.component,L,N);else{if(E&128){y.suspense.unmount(L,N);return}ee&&jt(y,null,b,"beforeUnmount"),E&64?y.type.remove(y,b,L,Ge,N):U&&!U.hasOnce&&(D!==pe||v>0&&v&64)?st(U,b,L,!1,!0):(D===pe&&v&384||!M&&E&16)&&st(Y,b,L),N&&At(y)}(fe&&(ue=Z&&Z.onVnodeUnmounted)||ee)&>(()=>{ue&&bt(ue,b,y),ee&&jt(y,null,b,"unmounted")},L)},At=y=>{const{type:b,el:L,anchor:N,transition:M}=y;if(b===pe){Et(L,N);return}if(b===js){k(y);return}const D=()=>{o(L),M&&!M.persisted&&M.afterLeave&&M.afterLeave()};if(y.shapeFlag&1&&M&&!M.persisted){const{leave:Z,delayLeave:W}=M,Y=()=>Z(L,D);W?W(y.el,D,Y):Y()}else D()},Et=(y,b)=>{let L;for(;y!==b;)L=p(y),o(y),y=L;o(b)},on=(y,b,L)=>{const{bum:N,scope:M,job:D,subTree:Z,um:W,m:Y,a:U}=y;Ta(Y),Ta(U),N&&_o(N),M.stop(),D&&(D.flags|=8,Fe(Z,y,b,L)),W&>(W,b),gt(()=>{y.isUnmounted=!0},b),b&&b.pendingBranch&&!b.isUnmounted&&y.asyncDep&&!y.asyncResolved&&y.suspenseId===b.pendingId&&(b.deps--,b.deps===0&&b.resolve())},st=(y,b,L,N=!1,M=!1,D=0)=>{for(let Z=D;Z{if(y.shapeFlag&6)return kt(y.component.subTree);if(y.shapeFlag&128)return y.suspense.next();const b=p(y.anchor||y.el),L=b&&b[_2];return L?p(L):b};let Bt=!1;const It=(y,b,L)=>{y==null?b._vnode&&Fe(b._vnode,null,null,!0):A(b._vnode||null,y,b,null,null,null,L),b._vnode=y,Bt||(Bt=!0,ma(),Ho(),Bt=!1)},Ge={p:A,um:Fe,m:He,r:At,mt:ae,mc:ie,pc:X,pbc:J,n:kt,o:e};let pt,Ne;return t&&([pt,Ne]=t(Ge)),{render:It,hydrate:pt,createApp:Y2(It,pt)}}function Zr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Rn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function uf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ff(e,t,n=!1){const s=e.children,o=t.children;if(de(s)&&de(o))for(let r=0;r>1,e[n[l]]0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,i=n[r-1];r-- >0;)n[r]=i,i=t[i];return n}function df(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:df(t)}function Ta(e){if(e)for(let t=0;tke(iA);function Af(e,t){return pl(e,null,t)}function pn(e,t,n){return pl(e,t,n)}function pl(e,t,n=Le){const{immediate:s,deep:o,flush:r,once:i}=n,l=Ve({},n),c=t&&s||!t&&r!=="post";let f;if(ds){if(r==="sync"){const w=lA();f=w.__watcherHandles||(w.__watcherHandles=[])}else if(!c){const w=()=>{};return w.stop=Tt,w.resume=Tt,w.pause=Tt,w}}const u=qe;l.call=(w,h,A)=>Lt(w,u,h,A);let a=!1;r==="post"?l.scheduler=w=>{gt(w,u&&u.suspense)}:r!=="sync"&&(a=!0,l.scheduler=(w,h)=>{h?w():ul(w)}),l.augmentJob=w=>{t&&(w.flags|=4),a&&(w.flags|=2,u&&(w.id=u.uid,w.i=u))};const p=S2(e,t,l);return ds&&(f?f.push(p):c&&p()),p}function aA(e,t,n){const s=this.proxy,o=Oe(e)?e.includes(".")?pf(s,e):()=>s[e]:e.bind(s,s);let r;ce(t)?r=t:(r=t.handler,n=t);const i=so(this),l=pl(o,r.bind(s),n);return i(),l}function pf(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${St(t)}Modifiers`]||e[`${yn(t)}Modifiers`];function uA(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Le;let o=n;const r=t.startsWith("update:"),i=r&&cA(s,t.slice(7));i&&(i.trim&&(o=n.map(u=>Oe(u)?u.trim():u)),i.number&&(o=n.map(Ai)));let l,c=s[l=qr(t)]||s[l=qr(St(t))];!c&&r&&(c=s[l=qr(yn(t))]),c&&Lt(c,e,6,o);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Lt(f,e,6,o)}}function hf(e,t,n=!1){const s=t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let i={},l=!1;if(!ce(e)){const c=f=>{const u=hf(f,t,!0);u&&(l=!0,Ve(i,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!r&&!l?(Te(e)&&s.set(e,null),null):(de(r)?r.forEach(c=>i[c]=null):Ve(i,r),Te(e)&&s.set(e,i),i)}function ar(e,t){return!e||!eo(t)?!1:(t=t.slice(2).replace(/Once$/,""),be(e,t[0].toLowerCase()+t.slice(1))||be(e,yn(t))||be(e,t))}function Xr(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:i,attrs:l,emit:c,render:f,renderCache:u,props:a,data:p,setupState:w,ctx:h,inheritAttrs:A}=e,C=Fo(e);let T,P;try{if(n.shapeFlag&4){const k=o||s,_=k;T=mt(f.call(_,k,u,a,w,p,h)),P=l}else{const k=t;T=mt(k.length>1?k(a,{attrs:l,slots:i,emit:c}):k(a,null)),P=t.props?l:dA(l)}}catch(k){Qs.length=0,gs(k,e,1),T=xe(Ke)}let g=T;if(P&&A!==!1){const k=Object.keys(P),{shapeFlag:_}=g;k.length&&_&7&&(r&&k.some(Xi)&&(P=AA(P,r)),g=mn(g,P,!1,!0))}return n.dirs&&(g=mn(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&Ws(g,n.transition),T=g,Fo(C),T}function fA(e,t=!0){let n;for(let s=0;s{let t;for(const n in e)(n==="class"||n==="style"||eo(n))&&((t||(t={}))[n]=e[n]);return t},AA=(e,t)=>{const n={};for(const s in e)(!Xi(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function pA(e,t,n){const{props:s,children:o,component:r}=e,{props:i,children:l,patchFlag:c}=t,f=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Ra(s,i,f):!!i;if(c&8){const u=t.dynamicProps;for(let a=0;ae.__isSuspense;let Si=0;const hA={name:"Suspense",__isSuspense:!0,process(e,t,n,s,o,r,i,l,c,f){if(e==null)mA(t,n,s,o,r,i,l,c,f);else{if(r&&r.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}yA(e,t,n,s,o,i,l,c,f)}},hydrate:vA,normalize:wA},gA=hA;function Js(e,t){const n=e.props&&e.props[t];ce(n)&&n()}function mA(e,t,n,s,o,r,i,l,c){const{p:f,o:{createElement:u}}=c,a=u("div"),p=e.suspense=mf(e,o,s,t,a,n,r,i,l,c);f(null,p.pendingBranch=e.ssContent,a,null,s,p,r,i),p.deps>0?(Js(e,"onPending"),Js(e,"onFallback"),f(null,e.ssFallback,t,n,s,null,r,i),us(p,e.ssFallback)):p.resolve(!1,!0)}function yA(e,t,n,s,o,r,i,l,{p:c,um:f,o:{createElement:u}}){const a=t.suspense=e.suspense;a.vnode=t,t.el=e.el;const p=t.ssContent,w=t.ssFallback,{activeBranch:h,pendingBranch:A,isInFallback:C,isHydrating:T}=a;if(A)a.pendingBranch=p,Qt(p,A)?(c(A,p,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0?a.resolve():C&&(T||(c(h,w,n,s,o,null,r,i,l),us(a,w)))):(a.pendingId=Si++,T?(a.isHydrating=!1,a.activeBranch=A):f(A,o,a),a.deps=0,a.effects.length=0,a.hiddenContainer=u("div"),C?(c(null,p,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0?a.resolve():(c(h,w,n,s,o,null,r,i,l),us(a,w))):h&&Qt(p,h)?(c(h,p,n,s,o,a,r,i,l),a.resolve(!0)):(c(null,p,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0&&a.resolve()));else if(h&&Qt(p,h))c(h,p,n,s,o,a,r,i,l),us(a,p);else if(Js(t,"onPending"),a.pendingBranch=p,p.shapeFlag&512?a.pendingId=p.component.suspenseId:a.pendingId=Si++,c(null,p,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0)a.resolve();else{const{timeout:P,pendingId:g}=a;P>0?setTimeout(()=>{a.pendingId===g&&a.fallback(w)},P):P===0&&a.fallback(w)}}function mf(e,t,n,s,o,r,i,l,c,f,u=!1){const{p:a,m:p,um:w,n:h,o:{parentNode:A,remove:C}}=f;let T;const P=bA(e);P&&t&&t.pendingBranch&&(T=t.pendingId,t.deps++);const g=e.props?cu(e.props.timeout):void 0,k=r,_={vnode:e,parent:t,parentComponent:n,namespace:i,container:s,hiddenContainer:o,deps:0,pendingId:Si++,timeout:typeof g=="number"?g:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(Q=!1,V=!1){const{vnode:ie,activeBranch:K,pendingBranch:J,pendingId:te,effects:j,parentComponent:re,container:ae}=_;let he=!1;_.isHydrating?_.isHydrating=!1:Q||(he=K&&J.transition&&J.transition.mode==="out-in",he&&(K.transition.afterLeave=()=>{te===_.pendingId&&(p(J,ae,r===k?h(K):r,0),yi(j))}),K&&(A(K.el)===ae&&(r=h(K)),w(K,re,_,!0)),he||p(J,ae,r,0)),us(_,J),_.pendingBranch=null,_.isInFallback=!1;let q=_.parent,le=!1;for(;q;){if(q.pendingBranch){q.effects.push(...j),le=!0;break}q=q.parent}!le&&!he&&yi(j),_.effects=[],P&&t&&t.pendingBranch&&T===t.pendingId&&(t.deps--,t.deps===0&&!V&&t.resolve()),Js(ie,"onResolve")},fallback(Q){if(!_.pendingBranch)return;const{vnode:V,activeBranch:ie,parentComponent:K,container:J,namespace:te}=_;Js(V,"onFallback");const j=h(ie),re=()=>{_.isInFallback&&(a(null,Q,J,j,K,null,te,l,c),us(_,Q))},ae=Q.transition&&Q.transition.mode==="out-in";ae&&(ie.transition.afterLeave=re),_.isInFallback=!0,w(ie,K,null,!0),ae||re()},move(Q,V,ie){_.activeBranch&&p(_.activeBranch,Q,V,ie),_.container=Q},next(){return _.activeBranch&&h(_.activeBranch)},registerDep(Q,V,ie){const K=!!_.pendingBranch;K&&_.deps++;const J=Q.vnode.el;Q.asyncDep.catch(te=>{gs(te,Q,0)}).then(te=>{if(Q.isUnmounted||_.isUnmounted||_.pendingId!==Q.suspenseId)return;Q.asyncResolved=!0;const{vnode:j}=Q;ki(Q,te),J&&(j.el=J);const re=!J&&Q.subTree.el;V(Q,j,A(J||Q.subTree.el),J?null:h(Q.subTree),_,i,ie),re&&C(re),cr(Q,j.el),K&&--_.deps===0&&_.resolve()})},unmount(Q,V){_.isUnmounted=!0,_.activeBranch&&w(_.activeBranch,n,Q,V),_.pendingBranch&&w(_.pendingBranch,n,Q,V)}};return _}function vA(e,t,n,s,o,r,i,l,c){const f=t.suspense=mf(t,s,n,e.parentNode,document.createElement("div"),null,o,r,i,l,!0),u=c(e,f.pendingBranch=t.ssContent,n,f,r,i);return f.deps===0&&f.resolve(!1,!0),u}function wA(e){const{shapeFlag:t,children:n}=e,s=t&32;e.ssContent=La(s?n.default:n),e.ssFallback=s?La(n.fallback):xe(Ke)}function La(e){let t;if(ce(e)){const n=fs&&e._c;n&&(e._d=!1,R()),e=e(),n&&(e._d=!0,t=ut,vf())}return de(e)&&(e=fA(e)),e=mt(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function yf(e,t){t&&t.pendingBranch?de(e)?t.effects.push(...e):t.effects.push(e):yi(e)}function us(e,t){e.activeBranch=t;const{vnode:n,parentComponent:s}=e;let o=t.el;for(;!o&&t.component;)t=t.component.subTree,o=t.el;n.el=o,s&&s.subTree===n&&(s.vnode.el=o,cr(s,o))}function bA(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const pe=Symbol.for("v-fgt"),jn=Symbol.for("v-txt"),Ke=Symbol.for("v-cmt"),js=Symbol.for("v-stc"),Qs=[];let ut=null;function R(e=!1){Qs.push(ut=e?null:[])}function vf(){Qs.pop(),ut=Qs[Qs.length-1]||null}let fs=1;function Oa(e,t=!1){fs+=e,e<0&&ut&&t&&(ut.hasOnce=!0)}function wf(e){return e.dynamicChildren=fs>0?ut||is:null,vf(),fs>0&&ut&&ut.push(e),e}function B(e,t,n,s,o,r){return wf(d(e,t,n,s,o,r,!0))}function at(e,t,n,s,o){return wf(xe(e,t,n,s,o,!0))}function gn(e){return e?e.__v_isVNode===!0:!1}function Qt(e,t){return e.type===t.type&&e.key===t.key}const bf=({key:e})=>e??null,To=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Oe(e)||Ie(e)||ce(e)?{i:ze,r:e,k:t,f:!!n}:e:null);function d(e,t=null,n=null,s=0,o=null,r=e===pe?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&bf(t),ref:t&&To(t),scopeId:Pu,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:ze};return l?(hl(c,n),r&128&&e.normalize(c)):n&&(c.shapeFlag|=Oe(n)?8:16),fs>0&&!i&&ut&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&ut.push(c),c}const xe=CA;function CA(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===Vu)&&(e=Ke),gn(e)){const l=mn(e,t,!0);return n&&hl(l,n),fs>0&&!r&&ut&&(l.shapeFlag&6?ut[ut.indexOf(e)]=l:ut.push(l)),l.patchFlag=-2,l}if(OA(e)&&(e=e.__vccOpts),t){t=Cf(t);let{class:l,style:c}=t;l&&!Oe(l)&&(t.class=Se(l)),Te(c)&&(cl(c)&&!de(c)&&(c=Ve({},c)),t.style=rt(c))}const i=Oe(e)?1:gf(e)?128:Mu(e)?64:Te(e)?4:ce(e)?2:0;return d(e,t,n,s,o,i,r,!0)}function Cf(e){return e?cl(e)||tf(e)?Ve({},e):e:null}function mn(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:i,children:l,transition:c}=e,f=t?xf(o||{},t):o,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&bf(f),ref:t&&t.ref?n&&r?de(r)?r.concat(To(t)):[r,To(t)]:To(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==pe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&mn(e.ssContent),ssFallback:e.ssFallback&&mn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Ws(u,c.clone(u)),u}function Re(e=" ",t=0){return xe(jn,null,e,t)}function $r(e,t){const n=xe(js,null,e);return n.staticCount=t,n}function oe(e="",t=!1){return t?(R(),at(Ke,null,e)):xe(Ke,null,e)}function mt(e){return e==null||typeof e=="boolean"?xe(Ke):de(e)?xe(pe,null,e.slice()):gn(e)?un(e):xe(jn,null,String(e))}function un(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:mn(e)}function hl(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(de(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),hl(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!tf(t)?t._ctx=ze:o===3&&ze&&(ze.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ce(t)?(t={default:t,_ctx:ze},n=32):(t=String(t),s&64?(n=16,t=[Re(t)]):n=8);e.children=t,e.shapeFlag|=n}function xf(...e){const t={};for(let n=0;nqe||ze;let qo,Ei;{const e=or(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(i=>i(r)):o[0](r)}};qo=t("__VUE_INSTANCE_SETTERS__",n=>qe=n),Ei=t("__VUE_SSR_SETTERS__",n=>ds=n)}const so=e=>{const t=qe;return qo(e),e.scope.on(),()=>{e.scope.off(),qo(t)}},Ba=()=>{qe&&qe.scope.off(),qo(null)};function Sf(e){return e.vnode.shapeFlag&4}let ds=!1;function kA(e,t=!1,n=!1){t&&Ei(t);const{props:s,children:o}=e.vnode,r=Sf(e);Z2(e,s,r,t),tA(e,o,n);const i=r?_A(e,t):void 0;return t&&Ei(!1),i}function _A(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,q2);const{setup:s}=n;if(s){vn();const o=e.setupContext=s.length>1?RA(e):null,r=so(e),i=to(s,e,0,[e.props,o]),l=ru(i);if(wn(),r(),(l||e.sp)&&!Hn(e)&&fl(e),l){if(i.then(Ba,Ba),t)return i.then(c=>{ki(e,c)}).catch(c=>{gs(c,e,0)});e.asyncDep=i}else ki(e,i)}else Ef(e)}function ki(e,t,n){ce(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=Ru(t)),Ef(e)}function Ef(e,t,n){const s=e.type;e.render||(e.render=s.render||Tt);{const o=so(e);vn();try{z2(e)}finally{wn(),o()}}}const TA={get(e,t){return et(e,"get",""),e[t]}};function RA(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,TA),slots:e.slots,emit:e.emit,expose:t}}function ur(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ru(p2(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Fs)return Fs[n](e)},has(t,n){return n in t||n in Fs}})):e.proxy}function LA(e,t=!0){return ce(e)?e.displayName||e.name:e.name||t&&e.__name}function OA(e){return ce(e)&&"__vccOpts"in e}const _e=(e,t)=>C2(e,t,ds);function kf(e,t,n){const s=arguments.length;return s===2?Te(t)&&!de(t)?gn(t)?xe(e,null,[t]):xe(e,t):xe(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&gn(n)&&(n=[n]),xe(e,t,n))}const BA="3.5.13",IA=Tt;/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let _i;const Ia=typeof window<"u"&&window.trustedTypes;if(Ia)try{_i=Ia.createPolicy("vue",{createHTML:e=>e})}catch{}const _f=_i?e=>_i.createHTML(e):e=>e,PA="http://www.w3.org/2000/svg",MA="http://www.w3.org/1998/Math/MathML",Jt=typeof document<"u"?document:null,Pa=Jt&&Jt.createElement("template"),NA={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?Jt.createElementNS(PA,e):t==="mathml"?Jt.createElementNS(MA,e):n?Jt.createElement(e,{is:n}):Jt.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>Jt.createTextNode(e),createComment:e=>Jt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Jt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const i=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{Pa.innerHTML=_f(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Pa.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ln="transition",Bs="animation",Ys=Symbol("_vtc"),Tf={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},DA=Ve({},Nu,Tf),UA=e=>(e.displayName="Transition",e.props=DA,e),gl=UA((e,{slots:t})=>kf(L2,HA(e),t)),Ln=(e,t=[])=>{de(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ma=e=>e?de(e)?e.some(t=>t.length>1):e.length>1:!1;function HA(e){const t={};for(const j in e)j in Tf||(t[j]=e[j]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=r,appearActiveClass:f=i,appearToClass:u=l,leaveFromClass:a=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:w=`${n}-leave-to`}=e,h=FA(o),A=h&&h[0],C=h&&h[1],{onBeforeEnter:T,onEnter:P,onEnterCancelled:g,onLeave:k,onLeaveCancelled:_,onBeforeAppear:Q=T,onAppear:V=P,onAppearCancelled:ie=g}=t,K=(j,re,ae,he)=>{j._enterCancelled=he,On(j,re?u:l),On(j,re?f:i),ae&&ae()},J=(j,re)=>{j._isLeaving=!1,On(j,a),On(j,w),On(j,p),re&&re()},te=j=>(re,ae)=>{const he=j?V:P,q=()=>K(re,j,ae);Ln(he,[re,q]),Na(()=>{On(re,j?c:r),Gt(re,j?u:l),Ma(he)||Da(re,s,A,q)})};return Ve(t,{onBeforeEnter(j){Ln(T,[j]),Gt(j,r),Gt(j,i)},onBeforeAppear(j){Ln(Q,[j]),Gt(j,c),Gt(j,f)},onEnter:te(!1),onAppear:te(!0),onLeave(j,re){j._isLeaving=!0;const ae=()=>J(j,re);Gt(j,a),j._enterCancelled?(Gt(j,p),Fa()):(Fa(),Gt(j,p)),Na(()=>{j._isLeaving&&(On(j,a),Gt(j,w),Ma(k)||Da(j,s,C,ae))}),Ln(k,[j,ae])},onEnterCancelled(j){K(j,!1,void 0,!0),Ln(g,[j])},onAppearCancelled(j){K(j,!0,void 0,!0),Ln(ie,[j])},onLeaveCancelled(j){J(j),Ln(_,[j])}})}function FA(e){if(e==null)return null;if(Te(e))return[ei(e.enter),ei(e.leave)];{const t=ei(e);return[t,t]}}function ei(e){return cu(e)}function Gt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ys]||(e[Ys]=new Set)).add(t)}function On(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Ys];n&&(n.delete(t),n.size||(e[Ys]=void 0))}function Na(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let jA=0;function Da(e,t,n,s){const o=e._endId=++jA,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:i,timeout:l,propCount:c}=QA(e,t);if(!i)return s();const f=i+"end";let u=0;const a=()=>{e.removeEventListener(f,p),r()},p=w=>{w.target===e&&++u>=c&&a()};setTimeout(()=>{u(n[h]||"").split(", "),o=s(`${ln}Delay`),r=s(`${ln}Duration`),i=Ua(o,r),l=s(`${Bs}Delay`),c=s(`${Bs}Duration`),f=Ua(l,c);let u=null,a=0,p=0;t===ln?i>0&&(u=ln,a=i,p=r.length):t===Bs?f>0&&(u=Bs,a=f,p=c.length):(a=Math.max(i,f),u=a>0?i>f?ln:Bs:null,p=u?u===ln?r.length:c.length:0);const w=u===ln&&/\b(transform|all)(,|$)/.test(s(`${ln}Property`).toString());return{type:u,timeout:a,propCount:p,hasTransform:w}}function Ua(e,t){for(;e.lengthHa(n)+Ha(e[s])))}function Ha(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Fa(){return document.body.offsetHeight}function qA(e,t,n){const s=e[Ys];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const zo=Symbol("_vod"),Rf=Symbol("_vsh"),Ko={beforeMount(e,{value:t},{transition:n}){e[zo]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Is(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Is(e,!0),s.enter(e)):s.leave(e,()=>{Is(e,!1)}):Is(e,t))},beforeUnmount(e,{value:t}){Is(e,t)}};function Is(e,t){e.style.display=t?e[zo]:"none",e[Rf]=!t}const zA=Symbol(""),KA=/(^|;)\s*display\s*:/;function VA(e,t,n){const s=e.style,o=Oe(n);let r=!1;if(n&&!o){if(t)if(Oe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Ro(s,l,"")}else for(const i in t)n[i]==null&&Ro(s,i,"");for(const i in n)i==="display"&&(r=!0),Ro(s,i,n[i])}else if(o){if(t!==n){const i=s[zA];i&&(n+=";"+i),s.cssText=n,r=KA.test(n)}}else t&&e.removeAttribute("style");zo in e&&(e[zo]=r?s.display:"",e[Rf]&&(s.display="none"))}const ja=/\s*!important$/;function Ro(e,t,n){if(de(n))n.forEach(s=>Ro(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=WA(e,t);ja.test(n)?e.setProperty(yn(s),n.replace(ja,""),"important"):e[s]=n}}const Qa=["Webkit","Moz","ms"],ti={};function WA(e,t){const n=ti[t];if(n)return n;let s=St(t);if(s!=="filter"&&s in e)return ti[t]=s;s=sr(s);for(let o=0;oni||(ZA.then(()=>ni=0),ni=Date.now());function $A(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Lt(ep(s,n.value),t,5,[s])};return n.value=e,n.attached=XA(),n}function ep(e,t){if(de(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const Ga=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,tp=(e,t,n,s,o,r)=>{const i=o==="svg";t==="class"?qA(e,s,i):t==="style"?VA(e,n,s):eo(t)?Xi(t)||JA(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):np(e,t,s,i))?(Ka(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&za(e,t,s,i,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Oe(s))?Ka(e,St(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),za(e,t,s,i))};function np(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ga(t)&&ce(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Ga(t)&&Oe(n)?!1:t in e}const Ja=e=>{const t=e.props["onUpdate:modelValue"]||!1;return de(t)?n=>_o(t,n):t};function sp(e){e.target.composing=!0}function Ya(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const si=Symbol("_assign"),dn={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[si]=Ja(o);const r=s||o.props&&o.props.type==="number";ss(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),r&&(l=Ai(l)),e[si](l)}),n&&ss(e,"change",()=>{e.value=e.value.trim()}),t||(ss(e,"compositionstart",sp),ss(e,"compositionend",Ya),ss(e,"change",Ya))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},i){if(e[si]=Ja(i),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?Ai(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===c)||(e.value=c))}},op=["ctrl","shift","alt","meta"],rp={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>op.some(n=>e[`${n}Key`]&&!t.includes(n))},Ee=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(o,...r)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=o=>{if(!("key"in o))return;const r=yn(o.key);if(t.some(i=>i===r||ip[i]===r))return e(o)})},Lf=Ve({patchProp:tp},NA);let qs,Za=!1;function Of(){return qs||(qs=sA(Lf))}function ap(){return qs=Za?qs:oA(Lf),Za=!0,qs}const Xa=(...e)=>{Of().render(...e)},cp=(...e)=>{const t=Of().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=If(s);if(!o)return;const r=t._component;!ce(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const i=n(o,!1,Bf(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t},up=(...e)=>{const t=ap().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=If(s);if(o)return n(o,!0,Bf(o))},t};function Bf(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function If(e){return Oe(e)?document.querySelector(e):e}const fp=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,dp=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,Ap=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function pp(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){hp(e);return}return t}function hp(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function Vo(e,t={}){if(typeof e!="string")return e;const n=e.trim();if(e[0]==='"'&&e.endsWith('"')&&!e.includes("\\"))return n.slice(1,-1);if(n.length<=9){const s=n.toLowerCase();if(s==="true")return!0;if(s==="false")return!1;if(s==="undefined")return;if(s==="null")return null;if(s==="nan")return Number.NaN;if(s==="infinity")return Number.POSITIVE_INFINITY;if(s==="-infinity")return Number.NEGATIVE_INFINITY}if(!Ap.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(fp.test(e)||dp.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,pp)}return JSON.parse(e)}catch(s){if(t.strict)throw s;return e}}const gp=/#/g,mp=/&/g,yp=/\//g,vp=/=/g,ml=/\+/g,wp=/%5e/gi,bp=/%60/gi,Cp=/%7c/gi,xp=/%20/gi;function Sp(e){return encodeURI(""+e).replace(Cp,"|")}function Ti(e){return Sp(typeof e=="string"?e:JSON.stringify(e)).replace(ml,"%2B").replace(xp,"+").replace(gp,"%23").replace(mp,"%26").replace(bp,"`").replace(wp,"^").replace(yp,"%2F")}function oi(e){return Ti(e).replace(vp,"%3D")}function Wo(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Ep(e){return Wo(e.replace(ml," "))}function kp(e){return Wo(e.replace(ml," "))}function yl(e=""){const t={};e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const s=n.match(/([^=]+)=?(.*)/)||[];if(s.length<2)continue;const o=Ep(s[1]);if(o==="__proto__"||o==="constructor")continue;const r=kp(s[2]||"");t[o]===void 0?t[o]=r:Array.isArray(t[o])?t[o].push(r):t[o]=[t[o],r]}return t}function _p(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${oi(e)}=${Ti(n)}`).join("&"):`${oi(e)}=${Ti(t)}`:oi(e)}function Pf(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>_p(t,e[t])).filter(Boolean).join("&")}const Tp=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Rp=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,Lp=/^([/\\]\s*){2,}[^/\\]/,Op=/^[\s\0]*(blob|data|javascript|vbscript):$/i,Bp=/\/$|\/\?|\/#/,Ip=/^\.?\//;function ms(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?Tp.test(e):Rp.test(e)||(t.acceptRelative?Lp.test(e):!1)}function Pp(e){return!!e&&Op.test(e)}function Ri(e="",t){return t?Bp.test(e):e.endsWith("/")}function vl(e="",t){if(!t)return(Ri(e)?e.slice(0,-1):e)||"/";if(!Ri(e,!0))return e||"/";let n=e,s="";const o=e.indexOf("#");o>=0&&(n=e.slice(0,o),s=e.slice(o));const[r,...i]=n.split("?");return((r.endsWith("/")?r.slice(0,-1):r)||"/")+(i.length>0?`?${i.join("?")}`:"")+s}function Li(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(Ri(e,!0))return e||"/";let n=e,s="";const o=e.indexOf("#");if(o>=0&&(n=e.slice(0,o),s=e.slice(o),!n))return s;const[r,...i]=n.split("?");return r+"/"+(i.length>0?`?${i.join("?")}`:"")+s}function Mp(e=""){return e.startsWith("/")}function $a(e=""){return Mp(e)?e:"/"+e}function Np(e,t){if(Nf(t)||ms(e))return e;const n=vl(t);return e.startsWith(n)?e:fr(n,e)}function Dp(e,t){if(Nf(t))return e;const n=vl(t);if(!e.startsWith(n))return e;const s=e.slice(n.length);return s[0]==="/"?s:"/"+s}function Mf(e,t){const n=Hf(e),s={...yl(n.search),...t};return n.search=Pf(s),Ff(n)}function Nf(e){return!e||e==="/"}function Up(e){return e&&e!=="/"}function fr(e,...t){let n=e||"";for(const s of t.filter(o=>Up(o)))if(n){const o=s.replace(Ip,"");n=Li(n)+o}else n=s;return n}function Df(...e){var i,l,c,f;const t=/\/(?!\/)/,n=e.filter(Boolean),s=[];let o=0;for(const u of n)if(!(!u||u==="/")){for(const[a,p]of u.split(t).entries())if(!(!p||p===".")){if(p===".."){if(s.length===1&&ms(s[0]))continue;s.pop(),o--;continue}if(a===1&&((i=s[s.length-1])!=null&&i.endsWith(":/"))){s[s.length-1]+="/"+p;continue}s.push(p),o++}}let r=s.join("/");return o>=0?(l=n[0])!=null&&l.startsWith("/")&&!r.startsWith("/")?r="/"+r:(c=n[0])!=null&&c.startsWith("./")&&!r.startsWith("./")&&(r="./"+r):r="../".repeat(-1*o)+r,(f=n[n.length-1])!=null&&f.endsWith("/")&&!r.endsWith("/")&&(r+="/"),r}function Hp(e,t,n={}){return n.trailingSlash||(e=Li(e),t=Li(t)),n.leadingSlash||(e=$a(e),t=$a(t)),n.encoding||(e=Wo(e),t=Wo(t)),e===t}const Uf=Symbol.for("ufo:protocolRelative");function Hf(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,a,p=""]=n;return{protocol:a.toLowerCase(),pathname:p,href:a+p,auth:"",host:"",search:"",hash:""}}if(!ms(e,{acceptRelative:!0}))return ec(e);const[,s="",o,r=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",l=""]=r.match(/([^#/?]*)(.*)?/)||[];s==="file:"&&(l=l.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:c,search:f,hash:u}=ec(l);return{protocol:s.toLowerCase(),auth:o?o.slice(0,Math.max(0,o.length-1)):"",host:i,pathname:c,search:f,hash:u,[Uf]:!s}}function ec(e=""){const[t="",n="",s=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:s}}function Ff(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",s=e.hash||"",o=e.auth?e.auth+"@":"",r=e.host||"";return(e.protocol||e[Uf]?(e.protocol||"")+"//":"")+o+r+t+n+s}class Fp extends Error{constructor(t,n){super(t,n),this.name="FetchError",n!=null&&n.cause&&!this.cause&&(this.cause=n.cause)}}function jp(e){var c,f,u,a,p;const t=((c=e.error)==null?void 0:c.message)||((f=e.error)==null?void 0:f.toString())||"",n=((u=e.request)==null?void 0:u.method)||((a=e.options)==null?void 0:a.method)||"GET",s=((p=e.request)==null?void 0:p.url)||String(e.request)||"/",o=`[${n}] ${JSON.stringify(s)}`,r=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${o}: ${r}${t?` ${t}`:""}`,l=new Fp(i,e.error?{cause:e.error}:void 0);for(const w of["request","options","response"])Object.defineProperty(l,w,{get(){return e[w]}});for(const[w,h]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(l,w,{get(){return e.response&&e.response[h]}});return l}const Qp=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function tc(e="GET"){return Qp.has(e.toUpperCase())}function qp(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const zp=new Set(["image/svg","application/xml","application/xhtml","application/html"]),Kp=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Vp(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return Kp.test(t)?"json":zp.has(t)||t.startsWith("text/")?"text":"blob"}function Wp(e,t,n,s){const o=Gp((t==null?void 0:t.headers)??(e==null?void 0:e.headers),n==null?void 0:n.headers,s);let r;return(n!=null&&n.query||n!=null&&n.params||t!=null&&t.params||t!=null&&t.query)&&(r={...n==null?void 0:n.params,...n==null?void 0:n.query,...t==null?void 0:t.params,...t==null?void 0:t.query}),{...n,...t,query:r,params:r,headers:o}}function Gp(e,t,n){if(!t)return new n(e);const s=new n(t);if(e)for(const[o,r]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))s.set(o,r);return s}async function wo(e,t){if(t)if(Array.isArray(t))for(const n of t)await n(e);else await t(e)}const Jp=new Set([408,409,425,429,500,502,503,504]),Yp=new Set([101,204,205,304]);function jf(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:s=globalThis.AbortController}=e;async function o(l){const c=l.error&&l.error.name==="AbortError"&&!l.options.timeout||!1;if(l.options.retry!==!1&&!c){let u;typeof l.options.retry=="number"?u=l.options.retry:u=tc(l.options.method)?0:1;const a=l.response&&l.response.status||500;if(u>0&&(Array.isArray(l.options.retryStatusCodes)?l.options.retryStatusCodes.includes(a):Jp.has(a))){const p=typeof l.options.retryDelay=="function"?l.options.retryDelay(l):l.options.retryDelay||0;return p>0&&await new Promise(w=>setTimeout(w,p)),r(l.request,{...l.options,retry:u-1})}}const f=jp(l);throw Error.captureStackTrace&&Error.captureStackTrace(f,r),f}const r=async function(c,f={}){const u={request:c,options:Wp(c,f,e.defaults,n),response:void 0,error:void 0};u.options.method&&(u.options.method=u.options.method.toUpperCase()),u.options.onRequest&&await wo(u,u.options.onRequest),typeof u.request=="string"&&(u.options.baseURL&&(u.request=Np(u.request,u.options.baseURL)),u.options.query&&(u.request=Mf(u.request,u.options.query),delete u.options.query),"query"in u.options&&delete u.options.query,"params"in u.options&&delete u.options.params),u.options.body&&tc(u.options.method)&&(qp(u.options.body)?(u.options.body=typeof u.options.body=="string"?u.options.body:JSON.stringify(u.options.body),u.options.headers=new n(u.options.headers||{}),u.options.headers.has("content-type")||u.options.headers.set("content-type","application/json"),u.options.headers.has("accept")||u.options.headers.set("accept","application/json")):("pipeTo"in u.options.body&&typeof u.options.body.pipeTo=="function"||typeof u.options.body.pipe=="function")&&("duplex"in u.options||(u.options.duplex="half")));let a;if(!u.options.signal&&u.options.timeout){const w=new s;a=setTimeout(()=>{const h=new Error("[TimeoutError]: The operation was aborted due to timeout");h.name="TimeoutError",h.code=23,w.abort(h)},u.options.timeout),u.options.signal=w.signal}try{u.response=await t(u.request,u.options)}catch(w){return u.error=w,u.options.onRequestError&&await wo(u,u.options.onRequestError),await o(u)}finally{a&&clearTimeout(a)}if((u.response.body||u.response._bodyInit)&&!Yp.has(u.response.status)&&u.options.method!=="HEAD"){const w=(u.options.parseResponse?"json":u.options.responseType)||Vp(u.response.headers.get("content-type")||"");switch(w){case"json":{const h=await u.response.text(),A=u.options.parseResponse||Vo;u.response._data=A(h);break}case"stream":{u.response._data=u.response.body||u.response._bodyInit;break}default:u.response._data=await u.response[w]()}}return u.options.onResponse&&await wo(u,u.options.onResponse),!u.options.ignoreResponseError&&u.response.status>=400&&u.response.status<600?(u.options.onResponseError&&await wo(u,u.options.onResponseError),await o(u)):u.response},i=async function(c,f){return(await r(c,f))._data};return i.raw=r,i.native=(...l)=>t(...l),i.create=(l={},c={})=>jf({...e,...c,defaults:{...e.defaults,...c.defaults,...l}}),i}const Go=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),Zp=Go.fetch?(...e)=>Go.fetch(...e):()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!")),Xp=Go.Headers,$p=Go.AbortController,eh=jf({fetch:Zp,Headers:Xp,AbortController:$p}),th=eh,nh=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},Jo=nh().app,sh=()=>Jo.baseURL,oh=()=>Jo.buildAssetsDir,wl=(...e)=>Df(Qf(),oh(),...e),Qf=(...e)=>{const t=Jo.cdnURL||Jo.baseURL;return e.length?Df(t,...e):t};globalThis.__buildAssetsURL=wl,globalThis.__publicAssetsURL=Qf;globalThis.$fetch||(globalThis.$fetch=th.create({baseURL:sh()}));function Oi(e,t={},n){for(const s in e){const o=e[s],r=n?`${n}:${s}`:s;typeof o=="object"&&o!==null?Oi(o,t,r):typeof o=="function"&&(t[r]=o)}return t}const rh={run:e=>e()},ih=()=>rh,qf=typeof console.createTask<"u"?console.createTask:ih;function lh(e,t){const n=t.shift(),s=qf(n);return e.reduce((o,r)=>o.then(()=>s.run(()=>r(...t))),Promise.resolve())}function ah(e,t){const n=t.shift(),s=qf(n);return Promise.all(e.map(o=>s.run(()=>o(...t))))}function ri(e,t){for(const n of[...e])n(t)}class ch{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,s={}){if(!t||typeof n!="function")return()=>{};const o=t;let r;for(;this._deprecatedHooks[t];)r=this._deprecatedHooks[t],t=r.to;if(r&&!s.allowDeprecated){let i=r.message;i||(i=`${o} hook has been deprecated`+(r.to?`, please use ${r.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let s,o=(...r)=>(typeof s=="function"&&s(),s=void 0,o=void 0,n(...r));return s=this.hook(t,o),s}removeHook(t,n){if(this._hooks[t]){const s=this._hooks[t].indexOf(n);s!==-1&&this._hooks[t].splice(s,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const s=this._hooks[t]||[];delete this._hooks[t];for(const o of s)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=Oi(t),s=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{for(const o of s.splice(0,s.length))o()}}removeHooks(t){const n=Oi(t);for(const s in n)this.removeHook(s,n[s])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(lh,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(ah,t,...n)}callHookWith(t,n,...s){const o=this._before||this._after?{name:n,args:s,context:{}}:void 0;this._before&&ri(this._before,o);const r=t(n in this._hooks?[...this._hooks[n]]:[],s);return r instanceof Promise?r.finally(()=>{this._after&&o&&ri(this._after,o)}):(this._after&&o&&ri(this._after,o),r)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function zf(){return new ch}function uh(e={}){let t,n=!1;const s=i=>{if(t&&t!==i)throw new Error("Context conflict")};let o;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?o=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const r=()=>{if(o){const i=o.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=r();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>r(),set:(i,l)=>{l||s(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,l)=>{s(i),t=i;try{return o?o.run(i,l):l()}finally{n||(t=void 0)}},async callAsync(i,l){t=i;const c=()=>{t=i},f=()=>t===i?c:void 0;Bi.add(f);try{const u=o?o.run(i,l):l();return n||(t=void 0),await u}finally{Bi.delete(f)}}}}function fh(e={}){const t={};return{get(n,s={}){return t[n]||(t[n]=uh({...e,...s})),t[n]}}}const Yo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},nc="__unctx__",dh=Yo[nc]||(Yo[nc]=fh()),Ah=(e,t={})=>dh.get(e,t),sc="__unctx_async_handlers__",Bi=Yo[sc]||(Yo[sc]=new Set);function Kf(e){const t=[];for(const o of Bi){const r=o();r&&t.push(r)}const n=()=>{for(const o of t)o()};let s=e();return s&&typeof s=="object"&&"catch"in s&&(s=s.catch(o=>{throw n(),o})),[s,n]}const p7={componentName:"NuxtLink",prefetch:!0,prefetchOn:{visibility:!0}},ph=null,hh="#__nuxt",Vf="nuxt-app",oc=36e5,gh="vite:preloadError";function Wf(e=Vf){return Ah(e,{asyncContext:!1})}const mh="__nuxt_plugin";function yh(e){var o;let t=0;const n={_id:e.id||Vf||"nuxt-app",_scope:Wd(),provide:void 0,globalName:"nuxt",versions:{get nuxt(){return"3.16.0"},get vue(){return n.vueApp.version}},payload:Mn({...((o=e.ssrContext)==null?void 0:o.payload)||{},data:Mn({}),state:$t({}),once:new Set,_errors:Mn({})}),static:{data:{}},runWithContext(r){return n._scope.active&&!tl()?n._scope.run(()=>rc(n,r)):rc(n,r)},isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let r=!1;return()=>{if(!r&&(r=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:Mn({}),_payloadRevivers:{},...e};{const r=window.__NUXT__;if(r)for(const i in r)switch(i){case"data":case"state":case"_errors":Object.assign(n.payload[i],r[i]);break;default:n.payload[i]=r[i]}}n.hooks=zf(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(r,i)=>{const l="$"+r;bo(n,l,i),bo(n.vueApp.config.globalProperties,l,i)},bo(n.vueApp,"$nuxt",n),bo(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener(gh,i=>{n.callHook("app:chunkError",{error:i.payload}),(n.isHydrating||i.payload.message.includes("Unable to preload CSS"))&&i.preventDefault()}),window.useNuxtApp||(window.useNuxtApp=We);const r=n.hook("app:error",(...i)=>{console.error("[nuxt] error caught during app initialization",...i)});n.hook("app:mounted",r)}const s=n.payload.config;return n.provide("config",s),n}function vh(e,t){t.hooks&&e.hooks.addHooks(t.hooks)}async function wh(e,t){if(typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const s in n)e.provide(s,n[s])}}async function bh(e,t){const n=[],s=[],o=[],r=[];let i=0;async function l(c){var u;const f=((u=c.dependsOn)==null?void 0:u.filter(a=>t.some(p=>p._name===a)&&!n.includes(a)))??[];if(f.length>0)s.push([new Set(f),c]);else{const a=wh(e,c).then(async()=>{c._name&&(n.push(c._name),await Promise.all(s.map(async([p,w])=>{p.has(c._name)&&(p.delete(c._name),p.size===0&&(i++,await l(w)))})))});c.parallel?o.push(a.catch(p=>r.push(p))):await a}}for(const c of t)vh(e,c);for(const c of t)await l(c);if(await Promise.all(o),i)for(let c=0;c{}),e,{[mh]:!0,_name:t})}function rc(e,t,n){const s=()=>t();return Wf(e._id).set(e),e.vueApp.runWithContext(s)}function Gf(e){var n;let t;return lr()&&(t=(n=tn())==null?void 0:n.appContext.app.$nuxt),t||(t=Wf(e).tryUse()),t||null}function We(e){const t=Gf(e);if(!t)throw new Error("[nuxt] instance unavailable");return t}function Zs(e){return We().$config}function bo(e,t,n){Object.defineProperty(e,t,{get:()=>n})}function Ch(e,t){return{ctx:{table:e},matchAll:n=>Yf(n,e)}}function Jf(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([s,o])=>[s,Jf(o)])):new Map(Object.entries(e[n]));return t}function xh(e){return Ch(Jf(e))}function Yf(e,t,n){e.endsWith("/")&&(e=e.slice(0,-1)||"/");const s=[];for(const[r,i]of ic(t.wildcard))(e===r||e.startsWith(r+"/"))&&s.push(i);for(const[r,i]of ic(t.dynamic))if(e.startsWith(r+"/")){const l="/"+e.slice(r.length).split("/").splice(2).join("/");s.push(...Yf(l,i))}const o=t.static.get(e);return o&&s.push(o),s.filter(Boolean)}function ic(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function ii(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function Ii(e,t,n=".",s){if(!ii(t))return Ii(e,{},n,s);const o=Object.assign({},t);for(const r in e){if(r==="__proto__"||r==="constructor")continue;const i=e[r];i!=null&&(s&&s(o,r,i,n)||(Array.isArray(i)&&Array.isArray(o[r])?o[r]=[...i,...o[r]]:ii(i)&&ii(o[r])?o[r]=Ii(i,o[r],(n?`${n}.`:"")+r.toString(),s):o[r]=i))}return o}function Sh(e){return(...t)=>t.reduce((n,s)=>Ii(n,s,"",e),{})}const Eh=Sh();function kh(e,t){try{return t in e}catch{return!1}}class Pi extends Error{constructor(n,s={}){super(n,s);rn(this,"statusCode",500);rn(this,"fatal",!1);rn(this,"unhandled",!1);rn(this,"statusMessage");rn(this,"data");rn(this,"cause");s.cause&&!this.cause&&(this.cause=s.cause)}toJSON(){const n={message:this.message,statusCode:Mi(this.statusCode,500)};return this.statusMessage&&(n.statusMessage=Zf(this.statusMessage)),this.data!==void 0&&(n.data=this.data),n}}rn(Pi,"__h3_error__",!0);function _h(e){if(typeof e=="string")return new Pi(e);if(Th(e))return e;const t=new Pi(e.message??e.statusMessage??"",{cause:e.cause||e});if(kh(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=Mi(e.statusCode,t.statusCode):e.status&&(t.statusCode=Mi(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;Zf(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function Th(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const Rh=/[^\u0009\u0020-\u007E]/g;function Zf(e=""){return e.replace(Rh,"")}function Mi(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Xf=Symbol("route"),qn=()=>{var e;return(e=We())==null?void 0:e.$router},bl=()=>lr()?ke(Xf,We()._route):We()._route;const Lh=()=>{try{if(We()._processingMiddleware)return!0}catch{return!1}return!1},Oh=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:"path"in e?Bh(e):qn().resolve(e).href;if(t!=null&&t.open){const{target:c="_blank",windowFeatures:f={}}=t.open,u=Object.entries(f).filter(([a,p])=>p!==void 0).map(([a,p])=>`${a.toLowerCase()}=${p}`).join(", ");return open(n,c,u),Promise.resolve()}const s=ms(n,{acceptRelative:!0}),o=(t==null?void 0:t.external)||s;if(o){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const{protocol:c}=new URL(n,window.location.href);if(c&&Pp(c))throw new Error(`Cannot navigate to a URL with '${c}' protocol.`)}const r=Lh();if(!o&&r){if(t!=null&&t.replace){if(typeof e=="string"){const{pathname:c,search:f,hash:u}=Hf(e);return{path:c,...f&&{query:yl(f)},...u&&{hash:u},replace:!0}}return{...e,replace:!0}}return e}const i=qn(),l=We();return o?(l._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,r?l.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?i.replace(e):i.push(e)};function Bh(e){return Mf(e.path||"",e.query||{})+(e.hash||"")}const $f="__nuxt_error",Cl=()=>Lu(We().payload,"error"),Ih=e=>{const t=xl(e);try{const n=We(),s=Cl();n.hooks.callHook("app:error",t),s.value||(s.value=t)}catch{throw t}return t},Ph=async(e={})=>{const t=We(),n=Cl();t.callHook("app:error:cleared",e),e.redirect&&await qn().replace(e.redirect),n.value=ph},Mh=e=>!!e&&typeof e=="object"&&$f in e,xl=e=>{const t=_h(e);return Object.defineProperty(t,$f,{value:!0,configurable:!1,writable:!1}),t};function lc(e){const t=Dh(e),n=new ArrayBuffer(t.length),s=new DataView(n);for(let o=0;o>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=s=0);return s===12?(n>>=4,t+=String.fromCharCode(n)):s===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const Uh=-1,Hh=-2,Fh=-3,jh=-4,Qh=-5,qh=-6;function zh(e,t){return Kh(JSON.parse(e),t)}function Kh(e,t){if(typeof e=="number")return o(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,s=Array(n.length);function o(r,i=!1){if(r===Uh)return;if(r===Fh)return NaN;if(r===jh)return 1/0;if(r===Qh)return-1/0;if(r===qh)return-0;if(i)throw new Error("Invalid input");if(r in s)return s[r];const l=n[r];if(!l||typeof l!="object")s[r]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const c=l[0],f=t==null?void 0:t[c];if(f)return s[r]=f(o(l[1]));switch(c){case"Date":s[r]=new Date(l[1]);break;case"Set":const u=new Set;s[r]=u;for(let w=1;w`${s}:${String(o)}`).join(",")}`}function Zo(e,t,n){typeof e==="function"&&(!n||n!=="titleTemplate"&&!(n[0]==="o"&&n[1]==="n"))&&(e=e());let o;if(t&&(o=t(n,e)),Array.isArray(o))return o.map(r=>Zo(r,t));if((o==null?void 0:o.constructor)===Object){const r={};for(const i of Object.keys(o))r[i]=Zo(o[i],t,i);return r}return o}function e1(e,t){const n=e==="style"?new Map:new Set;function s(o){const r=o.trim();if(r)if(e==="style"){const[i,...l]=r.split(":").map(c=>c.trim());i&&l.length&&n.set(i,l.join(":"))}else r.split(" ").filter(Boolean).forEach(i=>n.add(i))}return typeof t=="string"?e==="style"?t.split(";").forEach(s):s(t):Array.isArray(t)?t.forEach(o=>s(o)):t&&typeof t=="object"&&Object.entries(t).forEach(([o,r])=>{r&&r!=="false"&&(e==="style"?n.set(o.trim(),r):s(o))}),n}function t0(e,t){return e.props=e.props||{},t&&Object.entries(t).forEach(([n,s])=>{if(s===null){e.props[n]=null;return}if(n==="class"||n==="style"){e.props[n]=e1(n,s);return}if(Yh.has(n)){if(["textContent","innerHTML"].includes(n)&&typeof s=="object"){let i=t.type;if(t.type||(i="application/json"),!(i!=null&&i.endsWith("json"))&&i!=="speculationrules")return;t.type=i,e.props.type=i,e[n]=JSON.stringify(s)}else e[n]=s;return}const o=String(s),r=n.startsWith("data-");o==="true"||o===""?e.props[n]=r?"true":!0:!s&&r&&o==="false"?e.props[n]="false":s!==void 0&&(e.props[n]=s)}),e}function t1(e,t){const n=typeof t=="object"&&typeof t!="function"?t:{[e==="script"||e==="noscript"||e==="style"?"innerHTML":"textContent"]:t},s=t0({tag:e,props:{}},n);return s.key&&Vh.has(s.tag)&&(s.props["data-hid"]=s._h=s.key),s.tag==="script"&&typeof s.innerHTML=="object"&&(s.innerHTML=JSON.stringify(s.innerHTML),s.props.type=s.props.type||"application/json"),Array.isArray(s.props.content)?s.props.content.map(o=>({...s,props:{...s.props,content:o}})):s}function n1(e,t){if(!e)return[];typeof e=="function"&&(e=e());const n=(o,r)=>{for(let i=0;i{if(r!==void 0)for(const i of Array.isArray(r)?r:[r])s.push(t1(o,i))}),s.flat()}const Di=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,uc={base:-10,title:10},s1={critical:-8,high:-1,low:2},fc={meta:{"content-security-policy":-30,charset:-20,viewport:-15},link:{preconnect:20,stylesheet:60,preload:70,modulepreload:70,prefetch:90,"dns-prefetch":90,prerender:90},script:{async:30,defer:80,sync:50},style:{imported:40,sync:60}},o1=/@import/,Ps=e=>e===""||e===!0;function r1(e,t){var r;if(typeof t.tagPriority=="number")return t.tagPriority;let n=100;const s=s1[t.tagPriority]||0,o=e.resolvedOptions.disableCapoSorting?{link:{},script:{},style:{}}:fc;if(t.tag in uc)n=uc[t.tag];else if(t.tag==="meta"){const i=t.props["http-equiv"]==="content-security-policy"?"content-security-policy":t.props.charset?"charset":t.props.name==="viewport"?"viewport":null;i&&(n=fc.meta[i])}else t.tag==="link"&&t.props.rel?n=o.link[t.props.rel]:t.tag==="script"?Ps(t.props.async)?n=o.script.async:t.props.src&&!Ps(t.props.defer)&&!Ps(t.props.async)&&t.props.type!=="module"&&!((r=t.props.type)!=null&&r.endsWith("json"))?n=o.script.sync:Ps(t.props.defer)&&t.props.src&&!Ps(t.props.async)&&(n=o.script.defer):t.tag==="style"&&(n=t.innerHTML&&o1.test(t.innerHTML)?o.style.imported:o.style.sync);return(n||100)+s}function dc(e,t){const n=typeof t=="function"?t(e):t,s=n.key||String(e.plugins.size+1);e.plugins.get(s)||(e.plugins.set(s,n),e.hooks.addHooks(n.hooks||{}))}function i1(e={}){var l;const t=zf();t.addHooks(e.hooks||{});const n=!e.document,s=new Map,o=new Map,r=[],i={_entryCount:1,plugins:o,dirty:!1,resolvedOptions:e,hooks:t,ssr:n,entries:s,headEntries(){return[...s.values()]},use:c=>dc(i,c),push(c,f){const u={...f||{}};delete u.head;const a=u._index??i._entryCount++,p={_i:a,input:c,options:u},w={_poll(h=!1){i.dirty=!0,!h&&r.push(a),t.callHook("entries:updated",i)},dispose(){s.delete(a)&&w._poll(!0)},patch(h){(!u.mode||u.mode==="server"&&n||u.mode==="client"&&!n)&&(p.input=h,s.set(a,p),w._poll())}};return w.patch(c),w},async resolveTags(){var w;const c={tagMap:new Map,tags:[],entries:[...i.entries.values()]};for(await t.callHook("entries:resolve",c);r.length;){const h=r.shift(),A=s.get(h);if(A){const C={tags:n1(A.input,e.propResolvers||[]).map(T=>Object.assign(T,A.options)),entry:A};await t.callHook("entries:normalize",C),A._tags=C.tags.map((T,P)=>(T._w=r1(i,T),T._p=(A._i<<10)+P,T._d=Ni(T),T))}}let f=!1;c.entries.flatMap(h=>(h._tags||[]).map(A=>({...A,props:{...A.props}}))).sort(Di).reduce((h,A)=>{const C=String(A._d||A._p);if(!h.has(C))return h.set(C,A);const T=h.get(C);if(((A==null?void 0:A.tagDuplicateStrategy)||(Zh.has(A.tag)?"merge":null)||(A.key&&A.key===T.key?"merge":null))==="merge"){const g={...T.props};Object.entries(A.props).forEach(([k,_])=>g[k]=k==="style"?new Map([...T.props.style||new Map,..._]):k==="class"?new Set([...T.props.class||new Set,..._]):_),h.set(C,{...A,props:g})}else A._p>>10===T._p>>10&&e0(A._d)?(h.set(C,Object.assign([...Array.isArray(T)?T:[T],A],A)),f=!0):(A._w===T._w?A._p>T._p:(A==null?void 0:A._w)<(T==null?void 0:T._w))&&h.set(C,A);return h},c.tagMap);const u=c.tagMap.get("title"),a=c.tagMap.get("titleTemplate");if(i._title=u==null?void 0:u.textContent,a){const h=a==null?void 0:a.textContent;if(i._titleTemplate=typeof h=="string"?h:void 0,h){let A=typeof h=="function"?h(u==null?void 0:u.textContent):h;typeof A=="string"&&!i.plugins.has("template-params")&&(A=A.replace("%s",(u==null?void 0:u.textContent)||"")),u?A===null?c.tagMap.delete("title"):c.tagMap.set("title",{...u,textContent:A}):(a.tag="title",a.textContent=A)}}c.tags=Array.from(c.tagMap.values()),f&&(c.tags=c.tags.flat().sort(Di)),await t.callHook("tags:beforeResolve",c),await t.callHook("tags:resolve",c),await t.callHook("tags:afterResolve",c);const p=[];for(const h of c.tags){const{innerHTML:A,tag:C,props:T}=h;if(Gh.has(C)&&!(Object.keys(T).length===0&&!h.innerHTML&&!h.textContent)&&!(C==="meta"&&!T.content&&!T["http-equiv"]&&!T.charset)){if(C==="script"&&A){if((w=T.type)!=null&&w.endsWith("json")){const P=typeof A=="string"?A:JSON.stringify(A);h.innerHTML=P.replace(/dc(i,c)),i.hooks.callHook("init",i),(l=e.init)==null||l.forEach(c=>c&&i.push(c)),i}const fn="%separator",l1=new RegExp(`${fn}(?:\\s*${fn})*`,"g");function a1(e,t,n=!1){var o;let s;if(t==="s"||t==="pageTitle")s=e.pageTitle;else if(t.includes(".")){const r=t.indexOf(".");s=(o=e[t.substring(0,r)])==null?void 0:o[t.substring(r+1)]}else s=e[t];if(s!==void 0)return n?(s||"").replace(/{if(l===fn||!r.includes(l))return l;const c=a1(t,l.slice(1),s);return c!==void 0?c:l}).trim(),i&&(e.endsWith(fn)&&(e=e.slice(0,-fn.length)),e.startsWith(fn)&&(e=e.slice(fn.length)),e=e.replace(l1,n||"").trim()),e}const Ac=e=>e.includes(":key")?e:e.split(":").join(":key:"),c1={key:"aliasSorting",hooks:{"tags:resolve":e=>{let t=!1;for(const n of e.tags){const s=n.tagPriority;if(!s)continue;const o=String(s);if(o.startsWith("before:")){const r=Ac(o.slice(7)),i=e.tagMap.get(r);i&&(typeof i.tagPriority=="number"&&(n.tagPriority=i.tagPriority),n._p=i._p-1,t=!0)}else if(o.startsWith("after:")){const r=Ac(o.slice(6)),i=e.tagMap.get(r);i&&(typeof i.tagPriority=="number"&&(n.tagPriority=i.tagPriority),n._p=i._p+1,t=!0)}}t&&(e.tags=e.tags.sort(Di))}}},u1={key:"deprecations",hooks:{"entries:normalize":({tags:e})=>{for(const t of e)t.props.children&&(t.innerHTML=t.props.children,delete t.props.children),t.props.hid&&(t.key=t.props.hid,delete t.props.hid),t.props.vmid&&(t.key=t.props.vmid,delete t.props.vmid),t.props.body&&(t.tagPosition="bodyClose",delete t.props.body)}}};async function Ui(e){if(typeof e==="function")return e;if(e instanceof Promise)return await e;if(Array.isArray(e))return await Promise.all(e.map(n=>Ui(n)));if((e==null?void 0:e.constructor)===Object){const n={};for(const s of Object.keys(e))n[s]=await Ui(e[s]);return n}return e}const f1={key:"promises",hooks:{"entries:resolve":async e=>{const t=[];for(const n in e.entries)e.entries[n]._promisesProcessed||t.push(Ui(e.entries[n].input).then(s=>{e.entries[n].input=s,e.entries[n]._promisesProcessed=!0}));await Promise.all(t)}}},d1={meta:"content",link:"href",htmlAttrs:"lang"},A1=["innerHTML","textContent"],p1=e=>({key:"template-params",hooks:{"tags:resolve":({tagMap:t,tags:n})=>{var r;const s=((r=t.get("templateParams"))==null?void 0:r.props)||{},o=s.separator||"|";delete s.separator,s.pageTitle=Co(s.pageTitle||e._title||"",s,o);for(const i of n){if(i.processTemplateParams===!1)continue;const l=d1[i.tag];if(l&&typeof i.props[l]=="string")i.props[l]=Co(i.props[l],s,o);else if(i.processTemplateParams||i.tag==="titleTemplate"||i.tag==="title")for(const c of A1)typeof i[c]=="string"&&(i[c]=Co(i[c],s,o,i.tag==="script"&&i.props.type.endsWith("json")))}e._templateParams=s,e._separator=o},"tags:afterResolve":({tagMap:t})=>{const n=t.get("title");n!=null&&n.textContent&&n.processTemplateParams!==!1&&(n.textContent=Co(n.textContent,e._templateParams,e._separator))}}}),h1=(e,t)=>Ie(t)?g2(t):t,Sl="usehead";function g1(e){return{install(n){n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(Sl,e)}}.install}function m1(){if(lr()){const e=ke(Sl);if(!e)throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.");return e}throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.")}function y1(e,t={}){const n=t.head||m1();return n.ssr?n.push(e||{},t):v1(n,e,t)}function v1(e,t,n={}){const s=H(!1);let o;return Af(()=>{const i=s.value?{}:Zo(t,h1);o?o.patch(i):o=e.push(i,n)}),tn()&&(dl(()=>{o.dispose()}),Qu(()=>{s.value=!0}),ju(()=>{s.value=!1})),o}function w1(e){var n;const t=e||Gf();return((n=t==null?void 0:t.ssrContext)==null?void 0:n.head)||(t==null?void 0:t.runWithContext(()=>{if(lr())return ke(Sl)}))}function b1(e,t={}){const n=w1(t.nuxt);if(n)return y1(e,{head:n,...t})}const C1="modulepreload",x1=function(e,t){return new URL(e,t).href},pc={},hc=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),c=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));o=Promise.allSettled(n.map(f=>{if(f=x1(f,s),f in pc)return;pc[f]=!0;const u=f.endsWith(".css"),a=u?'[rel="stylesheet"]':"";if(!!s)for(let h=i.length-1;h>=0;h--){const A=i[h];if(A.href===f&&(!u||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${a}`))return;const w=document.createElement("link");if(w.rel=u?"stylesheet":C1,u||(w.as="script"),w.crossOrigin="",w.href=f,c&&w.setAttribute("nonce",c),document.head.appendChild(w),u)return new Promise((h,A)=>{w.addEventListener("load",h),w.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${f}`)))})}))}function r(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return o.then(i=>{for(const l of i||[])l.status==="rejected"&&r(l.reason);return t().catch(r)})};let Lo,Oo;function S1(){return Lo=$fetch(wl(`builds/meta/${Zs().app.buildId}.json`),{responseType:"json"}),Lo.then(e=>{Oo=xh(e.matcher)}).catch(e=>{console.error("[nuxt] Error fetching app manifest.",e)}),Lo}function dr(){return Lo||S1()}async function El(e){const t=typeof e=="string"?e:e.path;if(await dr(),!Oo)return console.error("[nuxt] Error creating app manifest matcher.",Oo),{};try{return Eh({},...Oo.matchAll(t).reverse())}catch(n){return console.error("[nuxt] Error matching route rules.",n),{}}}async function gc(e,t={}){const n=await k1(e,t),s=We(),o=s._payloadCache||(s._payloadCache={});return n in o?o[n]||null:(o[n]=s0(e).then(r=>r?n0(n).then(i=>i||(delete o[n],null)):(o[n]=null,null)),o[n])}const E1="_payload.json";async function k1(e,t={}){const n=new URL(e,"http://localhost");if(n.host!=="localhost"||ms(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const s=Zs(),o=t.hash||(t.fresh?Date.now():s.app.buildId),r=s.app.cdnURL,i=r&&await s0(e)?r:s.app.baseURL;return fr(i,n.pathname,E1+(o?`?${o}`:""))}async function n0(e){const t=fetch(e).then(n=>n.text().then(o0));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function s0(e=bl().path){const t=We();return e=vl(e),(await dr()).prerendered.includes(e)?!0:t.runWithContext(async()=>{const s=await El({path:e});return!!s.prerender&&!s.redirect})}let Bn=null;async function _1(){var s;if(Bn)return Bn;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await o0(e.textContent||""),n=e.dataset.src?await n0(e.dataset.src):void 0;return Bn={...t,...n,...window.__NUXT__},(s=Bn.config)!=null&&s.public&&(Bn.config.public=$t(Bn.config.public)),Bn}async function o0(e){return await zh(e,We()._payloadRevivers)}function T1(e,t){We()._payloadRevivers[e]=t}const R1=[["NuxtError",e=>xl(e)],["EmptyShallowRef",e=>ga(e==="_"?void 0:e==="0n"?BigInt(0):Vo(e))],["EmptyRef",e=>H(e==="_"?void 0:e==="0n"?BigInt(0):Vo(e))],["ShallowRef",e=>ga(e)],["ShallowReactive",e=>Mn(e)],["Ref",e=>H(e)],["Reactive",e=>$t(e)]],L1=Kt({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const[s,o]of R1)T1(s,o);Object.assign(e.payload,([t,n]=Kf(()=>e.runWithContext(_1)),t=await t,n(),t)),window.__NUXT__=e.payload}});async function kl(e,t={}){const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const s={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",s),!!s.shouldRender)return e._domUpdatePromise||(e._domUpdatePromise=new Promise(async o=>{var w;const r=new Map,i=new Promise(h=>{e.resolveTags().then(A=>{h(A.map(C=>{const T=r.get(C._d)||0,P={tag:C,id:(T?`${C._d}:${T}`:C._d)||cc(C),shouldRender:!0};return C._d&&e0(C._d)&&r.set(C._d,T+1),P}))})});let l=e._dom;if(!l){l={title:n.title,elMap:new Map().set("htmlAttrs",n.documentElement).set("bodyAttrs",n.body)};for(const h of["body","head"]){const A=(w=n[h])==null?void 0:w.children;for(const C of A){const T=C.tagName.toLowerCase();if(!ac.has(T))continue;const P=t0({tag:T,props:{}},{innerHTML:C.innerHTML,...C.getAttributeNames().reduce((g,k)=>(g[k]=C.getAttribute(k),g),{})||{}});if(P.key=C.getAttribute("data-hid")||void 0,P._d=Ni(P)||cc(P),l.elMap.has(P._d)){let g=1,k=P._d;for(;l.elMap.has(k);)k=`${P._d}:${g++}`;l.elMap.set(k,C)}else l.elMap.set(P._d,C)}}}l.pendingSideEffects={...l.sideEffects},l.sideEffects={};function c(h,A,C){const T=`${h}:${A}`;l.sideEffects[T]=C,delete l.pendingSideEffects[T]}function f({id:h,$el:A,tag:C}){const T=C.tag.endsWith("Attrs");l.elMap.set(h,A),T||(C.textContent&&C.textContent!==A.textContent&&(A.textContent=C.textContent),C.innerHTML&&C.innerHTML!==A.innerHTML&&(A.innerHTML=C.innerHTML),c(h,"el",()=>{A==null||A.remove(),l.elMap.delete(h)}));for(const P in C.props){if(!Object.hasOwn(C.props,P))continue;const g=C.props[P];if(P.startsWith("on")&&typeof g=="function"){const _=A==null?void 0:A.dataset;if(_&&_[`${P}fired`]){const Q=P.slice(0,-5);g.call(A,new Event(Q.substring(2)))}A.getAttribute(`data-${P}`)!==""&&((C.tag==="bodyAttrs"?n.defaultView:A).addEventListener(P.substring(2),g.bind(A)),A.setAttribute(`data-${P}`,""));continue}const k=`attr:${P}`;if(P==="class"){if(!g)continue;for(const _ of g)T&&c(h,`${k}:${_}`,()=>A.classList.remove(_)),!A.classList.contains(_)&&A.classList.add(_)}else if(P==="style"){if(!g)continue;for(const[_,Q]of g)c(h,`${k}:${_}`,()=>{A.style.removeProperty(_)}),A.style.setProperty(_,Q)}else g!==!1&&g!==null&&(A.getAttribute(P)!==g&&A.setAttribute(P,g===!0?"":String(g)),T&&c(h,k,()=>A.removeAttribute(P)))}}const u=[],a={bodyClose:void 0,bodyOpen:void 0,head:void 0},p=await i;for(const h of p){const{tag:A,shouldRender:C,id:T}=h;if(C){if(A.tag==="title"){n.title=A.textContent,c("title","",()=>n.title=l.title);continue}h.$el=h.$el||l.elMap.get(T),h.$el?f(h):ac.has(A.tag)&&u.push(h)}}for(const h of u){const A=h.tag.tagPosition||"head";h.$el=n.createElement(h.tag.tag),f(h),a[A]=a[A]||n.createDocumentFragment(),a[A].appendChild(h.$el)}for(const h of p)await e.hooks.callHook("dom:renderTag",h,n,c);a.head&&n.head.appendChild(a.head),a.bodyOpen&&n.body.insertBefore(a.bodyOpen,n.body.firstChild),a.bodyClose&&n.body.appendChild(a.bodyClose);for(const h in l.pendingSideEffects)l.pendingSideEffects[h]();e._dom=l,await e.hooks.callHook("dom:rendered",{renders:p}),o()}).finally(()=>{e._domUpdatePromise=void 0,e.dirty=!1})),e._domUpdatePromise}function O1(e={}){var s,o,r;const t=((s=e.domOptions)==null?void 0:s.render)||kl;e.document=e.document||(typeof window<"u"?document:void 0);const n=((r=(o=e.document)==null?void 0:o.head.querySelector('script[id="unhead:payload"]'))==null?void 0:r.innerHTML)||!1;return i1({...e,plugins:[...e.plugins||[],{key:"client",hooks:{"entries:updated":t}}],init:[n?JSON.parse(n):!1,...e.init||[]]})}function B1(e,t){let n=0;return()=>{const s=++n;t(()=>{n===s&&e()})}}function I1(e={}){const t=O1({domOptions:{render:B1(()=>kl(t),Xt)},...e});return t.install=g1(t),t}const P1={disableDefaults:!0,disableCapoSorting:!1,plugins:[u1,f1,p1,c1]},M1=Kt({name:"nuxt:head",enforce:"pre",setup(e){const t=I1(P1);e.vueApp.use(t);{let n=!0;const s=async()=>{n=!1,await kl(t)};t.hooks.hook("dom:beforeRender",o=>{o.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||s()}),e.hooks.hook("app:error",s),e.hooks.hook("app:suspense:resolve",s)}}}),N1=async e=>{let t,n;const s=([t,n]=Kf(()=>El({path:e.path})),t=await t,n(),t);if(s.redirect)return ms(s.redirect,{acceptRelative:!0})?(window.location.href=s.redirect,!1):s.redirect},D1=[N1];function li(e){typeof e=="object"&&(e=Ff({pathname:e.path||"",search:Pf(e.query||{}),hash:e.hash||""}));const t=new URL(e.toString(),window.location.href);return{path:t.pathname,fullPath:e,query:yl(t.search),hash:t.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:e}}const U1=Kt({name:"nuxt:router",enforce:"pre",setup(e){const t=Dp(window.location.pathname,Zs().app.baseURL)+window.location.search+window.location.hash,n=[],s={"navigate:before":[],"resolve:before":[],"navigate:after":[],error:[]},o=(a,p)=>(s[a].push(p),()=>s[a].splice(s[a].indexOf(p),1)),r=Zs().app.baseURL,i=$t(li(t));async function l(a,p){try{const w=li(a);for(const h of s["navigate:before"]){const A=await h(w,i);if(A===!1||A instanceof Error)return;if(typeof A=="string"&&A.length)return l(A,!0)}for(const h of s["resolve:before"])await h(w,i);Object.assign(i,w),window.history[p?"replaceState":"pushState"]({},"",fr(r,w.fullPath)),e.isHydrating||await e.runWithContext(Ph);for(const h of s["navigate:after"])await h(w,i)}catch(w){for(const h of s.error)await h(w)}}const f={currentRoute:_e(()=>i),isReady:()=>Promise.resolve(),options:{},install:()=>Promise.resolve(),push:a=>l(a,!1),replace:a=>l(a,!0),back:()=>window.history.go(-1),go:a=>window.history.go(a),forward:()=>window.history.go(1),beforeResolve:a=>o("resolve:before",a),beforeEach:a=>o("navigate:before",a),afterEach:a=>o("navigate:after",a),onError:a=>o("error",a),resolve:li,addRoute:(a,p)=>{n.push(p)},getRoutes:()=>n,hasRoute:a=>n.some(p=>p.name===a),removeRoute:a=>{const p=n.findIndex(w=>w.name===a);p!==-1&&n.splice(p,1)}};e.vueApp.component("RouterLink",Me({functional:!0,props:{to:{type:String,required:!0},custom:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:String},setup:(a,{slots:p})=>{const w=()=>l(a.to,a.replace);return()=>{var A;const h=f.resolve(a.to);return a.custom?(A=p.default)==null?void 0:A.call(p,{href:a.to,navigate:w,route:h}):kf("a",{href:a.to,onClick:C=>(C.preventDefault(),w())},p)}}})),window.addEventListener("popstate",a=>{const p=a.target.location;f.replace(p.href.replace(p.origin,""))}),e._route=i,e._middleware||(e._middleware={global:[],named:{}});const u=e.payload.state._layout;return e.hooks.hookOnce("app:created",async()=>{f.beforeEach(async(a,p)=>{a.meta=$t(a.meta||{}),e.isHydrating&&u&&!hn(a.meta.layout)&&(a.meta.layout=u),e._processingMiddleware=!0;{const w=new Set([...D1,...e._middleware.global]);{const h=await e.runWithContext(()=>El({path:a.path}));if(h.appMiddleware)for(const A in h.appMiddleware){const C=e._middleware.named[A];if(!C)return;h.appMiddleware[A]?w.add(C):w.delete(C)}}for(const h of w){const A=await e.runWithContext(()=>h(a,p));if(A!==!0&&(A||A===!1))return A}}}),f.afterEach(()=>{delete e._processingMiddleware}),await f.replace(t),Hp(i.fullPath,t)||await e.runWithContext(()=>Oh(i.fullPath))}),{provide:{route:i,router:f}}}}),mc=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),h7=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),_l=e=>{const t=We();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{mc(()=>e())}):mc(()=>e())},H1=Kt({name:"nuxt:payload",setup(e){qn().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const s=await gc(t.path);s&&Object.assign(e.static.data,s.data)}),_l(()=>{var t;e.hooks.hook("link:prefetch",async n=>{const{hostname:s}=new URL(n,window.location.href);s===window.location.hostname&&await gc(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(dr,1e3)})}}),F1=Kt(()=>{const e=qn();_l(()=>{e.beforeResolve(async()=>{await new Promise(t=>{setTimeout(t,100),requestAnimationFrame(()=>{setTimeout(t,0)})})})})}),j1=Kt(e=>{let t;async function n(){const s=await dr();t&&clearTimeout(t),t=setTimeout(n,oc);try{const o=await $fetch(wl("builds/latest.json")+`?${Date.now()}`);o.id!==s.id&&e.hooks.callHook("app:manifest:update",o)}catch{}}_l(()=>{t=setTimeout(n,oc)})});function Q1(e={}){const t=e.path||window.location.pathname;let n={};try{n=Vo(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){s.clear()}),e.hook("app:chunkError",({error:r})=>{s.add(r)});function o(r){const l="href"in r&&r.href[0]==="#"?n.app.baseURL+r.href:fr(n.app.baseURL,r.fullPath);Q1({path:l,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(o)}),t.onError((r,i)=>{s.has(r)&&o(i)})}}),z1=Kt({name:"nuxt:global-components"}),K1=Kt(e=>{e.hook("app:rendered",t=>{var n;(n=t.ssrContext)!=null&&n.teleports&&(t.ssrContext.teleports=V1(t.ssrContext.teleports))})});function V1(e){const t=Object.entries(e).reduce((n,[s,o])=>s.startsWith("#el-popper-container-")||[].includes(s)?`${n}
${o}
`:n,e.body||"");return{...e,body:t}}var yc;const ys=typeof window<"u",W1=e=>typeof e=="string",G1=()=>{};ys&&((yc=window==null?void 0:window.navigator)!=null&&yc.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Tl(e){return typeof e=="function"?e():z(e)}function J1(e){return e}function Rl(e){return tl()?(Gd(e),!0):!1}function Y1(e,t=!0){tn()?en(e):t?e():Xt(e)}function Z1(e,t,n={}){const{immediate:s=!0}=n,o=H(!1);let r=null;function i(){r&&(clearTimeout(r),r=null)}function l(){o.value=!1,i()}function c(...f){i(),o.value=!0,r=setTimeout(()=>{o.value=!1,r=null,e(...f)},Tl(t))}return s&&(o.value=!0,ys&&c()),Rl(l),{isPending:ll(o),start:c,stop:l}}function r0(e){var t;const n=Tl(e);return(t=n==null?void 0:n.$el)!=null?t:n}const i0=ys?window:void 0;function X1(...e){let t,n,s,o;if(W1(e[0])||Array.isArray(e[0])?([n,s,o]=e,t=i0):[t,n,s,o]=e,!t)return G1;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const r=[],i=()=>{r.forEach(u=>u()),r.length=0},l=(u,a,p,w)=>(u.addEventListener(a,p,w),()=>u.removeEventListener(a,p,w)),c=pn(()=>[r0(t),Tl(o)],([u,a])=>{i(),u&&r.push(...n.flatMap(p=>s.map(w=>l(u,p,w,a))))},{immediate:!0,flush:"post"}),f=()=>{c(),i()};return Rl(f),f}function $1(e,t=!1){const n=H(),s=()=>n.value=!!e();return s(),Y1(s,t),n}const vc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},wc="__vueuse_ssr_handlers__";vc[wc]=vc[wc]||{};var bc=Object.getOwnPropertySymbols,eg=Object.prototype.hasOwnProperty,tg=Object.prototype.propertyIsEnumerable,ng=(e,t)=>{var n={};for(var s in e)eg.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&bc)for(var s of bc(e))t.indexOf(s)<0&&tg.call(e,s)&&(n[s]=e[s]);return n};function sg(e,t,n={}){const s=n,{window:o=i0}=s,r=ng(s,["window"]);let i;const l=$1(()=>o&&"ResizeObserver"in o),c=()=>{i&&(i.disconnect(),i=void 0)},f=pn(()=>r0(e),a=>{c(),l.value&&o&&a&&(i=new ResizeObserver(t),i.observe(a,r))},{immediate:!0,flush:"post"}),u=()=>{c(),f()};return Rl(u),{isSupported:l,stop:u}}var Cc;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Cc||(Cc={}));var og=Object.defineProperty,xc=Object.getOwnPropertySymbols,rg=Object.prototype.hasOwnProperty,ig=Object.prototype.propertyIsEnumerable,Sc=(e,t,n)=>t in e?og(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lg=(e,t)=>{for(var n in t||(t={}))rg.call(t,n)&&Sc(e,n,t[n]);if(xc)for(var n of xc(t))ig.call(t,n)&&Sc(e,n,t[n]);return e};const ag={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};lg({linear:J1},ag);const Bo="el",cg="is-",In=(e,t,n,s,o)=>{let r=`${e}-${t}`;return n&&(r+=`-${n}`),s&&(r+=`__${s}`),o&&(r+=`--${o}`),r},l0=Symbol("namespaceContextKey"),ug=e=>{const t=e||(tn()?ke(l0,H(Bo)):H(Bo));return _e(()=>z(t)||Bo)},Ll=(e,t)=>{const n=ug(t);return{namespace:n,b:(A="")=>In(n.value,e,A,"",""),e:A=>A?In(n.value,e,"",A,""):"",m:A=>A?In(n.value,e,"","",A):"",be:(A,C)=>A&&C?In(n.value,e,A,C,""):"",em:(A,C)=>A&&C?In(n.value,e,"",A,C):"",bm:(A,C)=>A&&C?In(n.value,e,A,"",C):"",bem:(A,C,T)=>A&&C&&T?In(n.value,e,A,C,T):"",is:(A,...C)=>{const T=C.length>=1?C[0]:!0;return A&&T?`${cg}${A}`:""},cssVar:A=>{const C={};for(const T in A)A[T]&&(C[`--${n.value}-${T}`]=A[T]);return C},cssVarName:A=>`--${n.value}-${A}`,cssVarBlock:A=>{const C={};for(const T in A)A[T]&&(C[`--${n.value}-${e}-${T}`]=A[T]);return C},cssVarBlockName:A=>`--${n.value}-${e}-${A}`}},fg=Symbol("elIdInjection");var dg=typeof global=="object"&&global&&global.Object===Object&&global,Ag=typeof self=="object"&&self&&self.Object===Object&&self,Ol=dg||Ag||Function("return this")(),As=Ol.Symbol,a0=Object.prototype,pg=a0.hasOwnProperty,hg=a0.toString,Ms=As?As.toStringTag:void 0;function gg(e){var t=pg.call(e,Ms),n=e[Ms];try{e[Ms]=void 0;var s=!0}catch{}var o=hg.call(e);return s&&(t?e[Ms]=n:delete e[Ms]),o}var mg=Object.prototype,yg=mg.toString;function vg(e){return yg.call(e)}var wg="[object Null]",bg="[object Undefined]",Ec=As?As.toStringTag:void 0;function c0(e){return e==null?e===void 0?bg:wg:Ec&&Ec in Object(e)?gg(e):vg(e)}function Cg(e){return e!=null&&typeof e=="object"}var xg="[object Symbol]";function Bl(e){return typeof e=="symbol"||Cg(e)&&c0(e)==xg}function Sg(e,t){for(var n=-1,s=e==null?0:e.length,o=Array(s);++n-1}function um(e,t){var n=this.__data__,s=Ar(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this}function vs(e){var t=-1,n=e==null?0:e.length;for(this.clear();++te===void 0,Rc=e=>typeof e=="boolean",Kn=e=>typeof e=="number",Om=e=>typeof Element>"u"?!1:e instanceof Element,Bm=e=>Oe(e)?!Number.isNaN(Number(e)):!1,Lc={current:0},Oc=H(0),A0=2e3,Hi=Symbol("elZIndexContextKey"),p0=Symbol("zIndexContextKey"),Im=e=>{const t=tn()?ke(Hi,Lc):Lc,n=e||(tn()?ke(p0,void 0):void 0),s=_e(()=>{const i=z(n);return Kn(i)?i:A0}),o=_e(()=>s.value+Oc.value),r=()=>(t.current++,Oc.value=t.current,o.value);return!ys&&ke(Hi),{initialZIndex:s,currentZIndex:o,nextZIndex:r}},Pm=Kt(e=>{e.vueApp.provide(fg,{prefix:1024,current:0}).provide(Hi,{current:0})}),Mm=[L1,M1,U1,H1,F1,j1,q1,z1,K1,Pm],Fi=Symbol("head-component"),Ml={body:{type:Boolean,default:void 0},tagPosition:{type:String}},oo=e=>{const t=Object.fromEntries(Object.entries(e).filter(([n,s])=>s!==void 0));return typeof t.body<"u"&&(t.tagPosition=t.body?"bodyClose":"head"),typeof t.renderPriority<"u"&&(t.tagPriority=t.renderPriority),t};function Gn(){return ke(Fi,h0,!0)}function h0(){const e=ke(Fi,null);if(e)return e;const t=$t({}),n=b1(t),s={input:t,entry:n};return Qe(Fi,s),s}const ws={accesskey:String,autocapitalize:String,autofocus:{type:Boolean,default:void 0},class:{type:[String,Object,Array],default:void 0},contenteditable:{type:Boolean,default:void 0},contextmenu:String,dir:String,draggable:{type:Boolean,default:void 0},enterkeyhint:String,exportparts:String,hidden:{type:Boolean,default:void 0},id:String,inputmode:String,is:String,itemid:String,itemprop:String,itemref:String,itemscope:String,itemtype:String,lang:String,nonce:String,part:String,slot:String,spellcheck:{type:Boolean,default:void 0},style:{type:[String,Object,Array],default:void 0},tabindex:String,title:String,translate:String,renderPriority:[String,Number],tagPriority:{type:[String,Number]}};({...ws,...Ml});({...ws,...Ml});({...ws});const Nm=Me({name:"Title",inheritAttrs:!1,setup(e,{slots:t}){const{input:n}=Gn();return zt(()=>n.title=null),()=>{var o,r,i;const s=(o=t.default)==null?void 0:o.call(t);return n.title=(r=s==null?void 0:s[0])!=null&&r.children?String((i=s==null?void 0:s[0])==null?void 0:i.children):void 0,null}}}),Dm=Me({name:"Meta",inheritAttrs:!1,props:{...ws,charset:String,content:String,httpEquiv:String,name:String,property:String},setup(e){const{input:t}=Gn();t.meta||(t.meta=[]);const n=t.meta.push({})-1;return zt(()=>t.meta[n]=null),()=>{const s={"http-equiv":e.httpEquiv,...oo(e)};return"httpEquiv"in s&&delete s.httpEquiv,t.meta[n]=s,null}}});({...ws,...Ml});const Um=Me({name:"Head",inheritAttrs:!1,setup:(e,t)=>(h0(),()=>{var n,s;return(s=(n=t.slots).default)==null?void 0:s.call(n)})});({...ws});const Hm=Symbol.for("nuxt:client-only"),Fm=Me({name:"ClientOnly",inheritAttrs:!1,props:["fallback","placeholder","placeholderTag","fallbackTag"],setup(e,{slots:t,attrs:n}){const s=H(!1);return en(()=>{s.value=!0}),Qe(Hm,!0),o=>{var c;if(s.value)return(c=t.default)==null?void 0:c.call(t);const r=t.fallback||t.placeholder;if(r)return r();const i=o.fallback||o.placeholder||"",l=o.fallbackTag||o.placeholderTag||"span";return B(l,n,i)}}}),xo="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAALmklEQVR4nO2d7VnbSBeGZ6QF9l+cCkIqwFsBpIKQAgC5gpAKcCoIWwEKFBBvBXEqCFQQbwXr999CXkl7jywRA/6Q7fmS0H1d55ojIHA055lvyZGigWRRtPv/JHmVSNnlBjsiy3YzIXYFSCnVdRf3AZmUI74+EgVSiDE/fE05knz9tzC8kXE85luNgvurNyS7c5em+7jdLMsOuKEufgczwTgT4jrAEMxwOwi+1V0U1Ff9+Hl0tE8iDknCAa22y5fcoXqJLBtSkYOtq6tvfKVWSKwW3EVRN0uS97iHWAfzkTE2kGH453YcX+N7j9cCoHvfpXs/obVHtLJdUSPonUZUbsww8ZlhYiQ8hRj942cUHaRJcoIbiWYQB2H4eSuOh8IzJOYNKvFJkpwR1IFoIJkQwzAMP/okBIk5p+mJf4xPQpCYM9QYf5skFwRxIJ4ng+0w/OByjkDdu+H2+PiMJdwpbgd7zqgNp/Ody8uP+NaRmFXy7j5NL+o2qzeNWjWEQdCzPSxIzBp3R0efGP9OcVvmQELOt6+uPuBagb9nHjXWs57/Qpff5bJlGewusn/wzsbcwLgAaPURrf4Tbgdrqc5YhGFvJ44H+MYwKoBiotcXLWtDgowOCfx+/dDld+6SRLX6SLToIC6Wi2N8rWgXQJ78NP1Ky+9y2aKLybzgjW4RaBVAm3zDGBCBNgG0ybeD2i8IWCHoOm7WIoA2+XZRItgJgj909AQbC6BNviM0DQcbCaBNvmM0iGAjAdweHV1QRKLFJfHO1VWPci0kthZ3x8fnWZa9x21xjJTyz+3Ly1PclVlLALdRdCiS5Atuiy+E4bt1to1XFgDj/i67fN9xO1iLP4zZLVQrg5FYgZUEQPLbSZ/PMCncubz8A68yKwmgHff9Z9X5QGUBqCd50iT5itviOUEYvtmq+GSRxCrB0e73tuuvB2qn8PfLy9e4S5HYUkh+n+Sf4bbUBSk/Mh/oiyUsFQATPzXr/4HbUi8qrQqWCoDdvi8Uh1jLfG4Yd0/TNB3QU77g2hcG7BK+o5zLQgF4M/GT8n8yy04Z2849q2DFDS3tgJY2zt9gTtOhTzEizDeLJoQSm8u/R0df+YED4RKV/CA4UOffqoIR5ICYXvEdH7hPPn6ObzFmQgx/v7p6gzsTic3Ei9Y/lXyucpiTqOcNh0KIPcwdM2Ir8SbGgkW9gMRm4rz1+1zBC2IrcR7jFNmCXkBiT/Ch9RNYb/vqKhZzcFbBFZJf4izGGczrBST2BNb9MROZE1wnENTC5JdYr+AVkl9iPcZ5SPmZfYFIPEJiDyBgp+t+AqqU/BLiVRUcCyHeYkaRrKtXSf40rhuVggnrayasIzEF9f0QAu0T6BmudQimt0rypyHumLhPcI2wSWwlpmNcyozdQe7rIf8eH/9gzb0rLJMJ8YGJyjnu2piqYCpp4+SXmIqxCuyjPDkjkNg9ag2bTR72sMuc8WkddFew1Jj8Et0xroJ8NIxxf79wEpjG5Jfoug9pIPkKttcvKCLhgMfPC3CPvyCwfyg6mBUyIb7R7R8IA7CPcSonr6Wvx4zxUgfU8QVFJNwx5nzgJWUOdTTB4do/JqAepXaKzya4wF0NA72SwoPk50zvCUgsh26zT7d5huuC2BsRNDz5OVO9m8RyEIDrJ37ci8BQ8iv/fUtkU0OvxMrNlH9wXWNWBIuOk59J8kvYFHrJptBY4vv2oseA4HoqOHyt5MvcGef12VSL0Imvyc8pXiSRuP497i3lxi89zmOGCJ6c6evA6+RDuRzMBcCSaYizj+sPdkQwMpJ89fsnK6oO5iVZ0euRd4YAy+v/yhgWwZb6/4A0/271e31PfkG+HyCZADo9/VuKQRHopkbJz6H3eykdbgCtwliyeTG9h+0bdUu+Qm0ISdb/fcbCM659x1sR0IvW8qVZxv9enQSg8E4EdU1+DjuC0ssVwGK8EUGtkz/hrzoKQGHlg5QX0YDk50tB6eoJIB0g3J6J8/oqsHS+oIhEjcmUALgRyvriQgTU2QVFJGpO1gQBKGyKgPq6oIhEA+BwbNQIAShsiIC6uqCIRINojAAKYrY3e5TaKSZ9IyZ9L7hsDM0SgKEz/ZJ8t29yiNQYETRHAIaTX9I0ETRDAJaSX9IkETRBAEYe6FhGLoLJO4l7WC0h8WwEHR2NpCefZrEGTpJfkk8MfXjzd02yQgBDBLDPdd1wmvySOosgq7EAvEh+SW1FwNypbsfBKuiVP6TBBrUUgToOrpUAPE1+SSGCWFj4sAodZEJ8kJ69EzAfz5M/DY0qplGd4HpN/kgYqvX7oVBFjZJfUgcRMI96yfwvD3ZMsC9wvYQgtR/0KOHfpunXMAh6W8WbsrqhXmPq1U8R0KjYPOtIXOHzSoC4TCRfHezcP81j4m+U+CqCjCXg/Ysh3r0aVkBw2hPzOPklJv5WiZf1ywqAHqDPfROgh++xZcxQUeg5rjbmJb+EyjAnAt/qePrlUCrGr4kgGxSoMxKaoTte+hkI8pmIIJ8AspHG/U7gUOiaYg9zi6nkr/Y0T2zqwRJPRHDD/XUphcRyvBin/Eh+SXNFUIz/AiSW48E7gn9R4YeUWlkz+SVmRbDoE0sMojaAtoqlr8TuYYwcuwgIjBzuaOrVYmMiUM8U2H6wpFj/4+VI7B4EEBPMCa5NzCRftTB93az1j60xhSw+GQQ354EAHAwDdUj+BIOfU0DD6yOAM1zjyEUfFatgV3DEF1/hGiUT4u+dMOzqrlAjyS8xIAKj8T4io87ZW9kVU5DrhyCAU774Cdc0A8bWd5TasNKDaRSBzeTnTM3+S8j1QyxvCmmbYOVj6ST5HcwsExG8QwQjsSbWkw8Mt68fxyyxJ7B0GlC8xWywsQisJv8Xa39OQRHvd1x7zNljkdgTrHSlD1lbBEVlqlg7mG1WFoGreKfX/tNIbCbMBYZ8cx/XDpNu9Q1d1JirSjBcqUewfuB2MFdUFoGr5GfF0a+YgcRm4qAXIJrqIsiTv+BkzzJLReAq+Yp5rV8hsblY7wUUFUTgWfLvoa56s04SiVdNrNWY38Gski1o/QqJzcVJL6BYIAIq08vkl1ChD0TgOt5FrV8hsYVYXhH8AhHIIOg97lbpldz+l7YVIL5cBK6Tny1p/QqJLYSb2OUmrrmJF1za5sHYihgvKCJRAzjpUxtqEfXW5dI+HPrQi6qd1pFYADEux+Ze9QxyETCBeo8fiZZqzNj1m0UlAShofdcUe1iL52Qz9vznUVkAziaELSuzbOI3jcQqo+kBixaTVOz6S1YSgKIdCrzmhi31LmVlVhaA41VByzwqzvofs7IAFLV5o/gZQSJ7au9BrAj/bj3a+YBHrDjuT7O2ABTsD8QMBSe4La6Yc85fFYltRDspdMrGD9VuLAAmhepMfihaEdhm4+QrNhaAohWBdbQkX6FFAApEoM68B7itCMyiLfkKbQJQIIK2JzCL1uQrtApA0YrAGNqTr9AugJJ2iaiRDZd6i5CYMdrNos15/DKnbowKQJFvG6ep6g1ecNlSFfb2RRBE6nN8uDKGcQEomBe0K4TVUOP9IeP9SBjGigBK2iFhOaa7/MdYFYCieLLoHHcPa/nFjQzDqHwA1hbWBVDCKqEvhDht5wawwWnepjgTgKKYG5zjvsWeHyzvtoOgb2Osn4dTAZSoYSFJkj7B7HPZeDIhvoVh2K/64KZJqHN/aLoQMo8SX0Jd+4cSAhPFU9xmDA109TIIzm1P8KrgpQBK1BzhNkkOcdVrVq8oa0MmxN8U5zthOHA5xi9DYrUg7xXSNBJCHHq7cmD3jgqN2cGLfWztsyDe+pF/2EKaKiEccrmHueSGxA+CIBhueTS2V6WWApiGYaLzk2Eik3KXXcYDdtK6wlQPQQvnb1zzN4a08uttIYZ072O+U1sk1jgQxe6dEF2Rpl0u0UN2IICb7VDsYYu4Yfwe87NjEn7NNbkOhr8JcV33ZM/iP99/T4+xGHCrAAAAAElFTkSuQmCC",So="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAIiklEQVR4nO2bj13iSBTH33gFkKtArMBQAbECsQKhgTPhCtAtYCFWYKxAtgJjBeYqMFuB2QLOue8EiCQESAK4uLffz2d23oTMm/d+8yeB3VWyZ8bjcftI664o1dYitmhtcdmmWJRFYjFFqUSJRNwXvSn15HlewvW9wVi7h6RtHF+SRI9mW7YjQpQQ8e4RI6K9UxRlJ5C0dSRypbXui0hb9kOsRHxWhhEjob01+NuOhcRdmhblI0iUUv6byK23pRBbCXA7Gl2xNG+kQuLc90Rl9nYiR0ehlPH25rDc2yLSViJd6k0k3OdeDYf32I1QlNow67bS+g7TppSiRb5TTUhowiyF0gDGcRCsh9lXIi3qVYRaqQHjxFIT/NZj06zz2RNJ+wQzobkzEKOHGC4Bd2mWkSACw3qB1AB/1fHH4zuC6EsJepq4SwARzb2BEDYx+ATepbmMUgFBDLAqoSgbYVCLJf+A6UgBbZb6NPEJzQ+DmHozIY5p5kEELUJImw9I+q+HgUzyj5g2JYcW+cZg/SoD7QMTGyIEJHFOs0jEljjbFBt91+OPRs9UNiUHzvHt+Zg/HYToM0l3mHk4gFmaF1grWSvAqj1P8gOSD+SAQASHWCck1KL5DtsBEQZYpShKKTh0UXWMmYPkO96eD7qmELONCCFJtWhmEPPKCePeZYwjkn/EtCgZ6xwdCsTuzGJfJCH2M2KPsHOUClC273FA/8PY85tAhD4i3GEuErnDYYc6x5IAdHbpPMbM0Jz23nDYw/w0jEejgOQuMTPKJpF73iF5i+RfMC1Kip4+5206JjQ/DSYXzoOIBI9pzjFb4WQxFz5/Z/z16w3fsq4xM+hw4X3wS86uQIQeE/qAmcG31i/e33/fyIxMAG62uPkF06KkaF5vWfqOfGLYCiFJdjEzmFSzCmIBPpuyYvY7XsnJ+ZlgYm0m9hkzY3EVZAJw8r9QtWWG/gVmf07JKoh5IpxQi6KUq7TF3sef9YfWp/8q9cPbwQra1h/9e+T3gJkxz28qwGjkY1xhpmhOfma/LTVhIAs/16wxl+aciMEGDBZh14bX8fEu/JFjTGzHmCna/Mg6HPa5xiCFFx8+vOVDF7MWDOLj8AqzSEzQHW/h8VOFsnNpRm1/JbElbIM/FQJbLI9XLmTg/AznodQEITVVKfgc4DOQGmzwh7v8S806yNMhz0fMDHx0jAA9PnignYEyiFUP/CwNsMjiyVsF/Nn4e8YsRTdYpUVBEcBTxWWmG57+BGwR8CtmKWYw8DErUwx4kbqCGtgGITPbxUzRnAOKixMuntNO4WJtZecUfc3B5w9Rqo0ACc3KbPBnXs9jqQH+AvxdYqZoJtsIEHKxSzulibJzzCrAgfF3SjNFT4PtEWwoNZn5MyJ0aaboqT8Xf4HUpLjaDYpl9kptUVJYqmc4D2ULCNxJ/5Lj6CgWkQn+EurGFPyF+IulAfjpsU0fMDOMAJo6YxcCHCoIsHRQ/xbgtwD/dwF4CiScsi3slF9cgD4C3GFmGAHMY6uLnbLNY/DQKT4GNY9UI8AEAc5pp3Cx8YvQoVOSKy9Cy6o0ehX+DHDePVPZlBRyvd/Zl6FDhzwt8nzFzOC8GxgByj745Q5C8uyR5wNmBnmepDPN3ogwTjFTWBqNzgEGsajaiBdR7wXGaAswRiw1IMeAHC8xU/TsVy+upR/6GFeYc2K2wQl1ZQjMRuFHTAtlO94eRCiMMWCMQCrC/n+lsigpejbJCnvu+BkzgwEuPH40xKwEA5j+NsWQ0P+M/hH2TiBG8wwfY1qUFMY4YYxYNjDre4eZQd+OR3ypAAZWQUzjGHNOyCo4o64EAmiqRYwIF96WZwnBW2r5h9YU/J9V8U9sj1SOzNCz5S+A7ynFx6Gh6gCGsv4pSvla5At+Elq1uB2NLul7IyJtKcD1J5JwZAMI6DD7j5gZ5EU401+nFCWFG82PDzEXWjTn1FoFrKJQLbxVLjD/l533DBzLGkwcR1qf6xWJG/jsCWF7+EporoXZf6ayKSn0NT+otOd9FSWjbBZR68KreBaY4BFxgtMuzVVEjDH1x9/e8idRKJs/aab/KNKmrESzMJh5F3MjxNNn9u8wMxgj96pPrO/QwSQQc7FFc06MCB1vplgVWAk+Pq4wd4Zm3yKUSxwTmhsxuZD8C6ZFSdGF2TcoSg46unQcY77DjDHyBVZl8OMgphHilGZj0qDxw89h/mLgm2DpP1I5sgATeeEVBCS+ZZjBiA9ygdOZvtODow4zIVxMB58t6kro6T4PGDOQmpRuZfyxdRwpQEzLELRN0CEf5gJGhEGTgObgd/rjpmG67y2KIWG8iFqY6ZAxQmkIYyzve7OKGA+/sRQgx3JwtLwVABE6Hi8QmAcHMS8lbyDmM2IOpYSVAhjYCgE3XGLmwOEAh4EcECuTL5z6RchvPYgQclMXMwfXzH9UuMX86dyOx9da6xspoM17B38FLmsgj/WgrIWMITee0szD04FBzGpIaH04JjZm/QHTkQLEtTF5A3ltxgyECBNu7tIsErMl0CD/eNk3s9dkH9Oi5OB6peQN5FQdtkNAh0vMMkKE+IIQoewRJsNh1q8xHSmBGAih+uOafOpBAC6r4YaOLZplhHzmcz58w94ZzLj5fuBiOlICn5lHXY/kQ6kBsdYHEWxECOh8SnMVMQFN+GIz+Ws4fKJdC8aw6NtlRnuM1eOSRSmF5M1Lk0k+oVkLRWkMQboEd4OTFs1NhAQZc2/MEg6lAElYfG5Tt/Fpc8mUtXDvd/q4JD6h2QhF2QpEsHi7c00gOKsixNaQeKPvB2UQ825YEKKP02Mu7Rwt8g/+fczJtonPIdbdgxg2M9QXDiwGOKVuTJr0dPsEJB1h7xTi2y+IYVGZL0E2SdjYFqXNwMfUGdrsZ84HMYXfJFjeEXZI0gn13vgPpzOTBSef2gIAAAAASUVORK5CYII=",Eo="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAEMklEQVRoBdVYXVLbMBCOM4FnjpCeAB8hPUHbE+CcoGSGn0fcR+AhuQHmBMAJQk9AeoK2N2hfgSH9PlXrWcuycUKsGM0oK63k1fdJ2pWiqKfSxcXFV1QT5Fipu1Rc9Pv92dHR0bWAiliYTqd7T09PcxS7Clzwilzs7Ox8nEwmf/rUvDPwhBxbzL3o8vLycLlcTqllQvnb7u5uBna/jKIjP9glw8fHxySKojMFaRxh3z9AYbYOwZ+enqaqQ+eK5+fnqSKx4BbK9z1nvnOIHUAOxpgrsJQ+JycnxqmlLtITnUrRQPqGkBrzoG7AmugUv7y8ZDB0KNGgzk6bbSYKVQ3QIDrl0aDKRtv6SgKMThg89w84zgSz/YGZzq6AxViJRNWDFiu3EEAeCBKCPz4+nkkdMkU06KlowBM8U+3BipUrAAT57A8GgxI4NxoEQ+wMVEfA6drNaiUBbI8fAhknIP2hkHgqikL3FV0oWekDAJAhmysG9zqceomtdE1gz8/PB/CR/EhHWfsHuwRLlStAp9UzC5ApwupPZpYFIfvgAMykHlpWEiAQzPhIk3DBsY19XH3Iet0W6vG+DTAmzgMsb637BEfgKM+wShnr20y1BASY3SKZ1NuSOBBj2sZ4i6ZjNCLQ1Ni6/SzwG3w/pA3U7yEmTYjU+gCNtZ0s+DnGGaqxRijPZUWUvlTcKgEFfq+ErNej7lUSWyPgAX+HF4cvzAB+ZwkJicTWS2IrPuABP3bOklv0IegrZJK4Qp3OnaFcSMFXoAF4A9CCHSu0JMFbbyEFJdAUvCD0kJjBBlclT8EIrApeEHpIJNJGuZYP8I0GFzpzKuMq8d2e2NpuobwueDFCErDBamH2qVh5BWAowYXuAVeJW2Ze7qijMV+ybYzzEipdh/V9VtJ5VsL0WYkAwHAGmAUMjZgogev2GSs6WfC6/1rgxaaPRGMCFnwixlyJ1UhtH9OkwEvXN4EXI5aEVF/3Ac/b0F/cRlNYWNAKgB9CfGIZKQHwIdrvoJ/+V5nfjYBX9vJirRPTWbHHb9A7tl/8hvyMa7QBb3X3zmyPAH5k2yhaA0/jlVsIoPho9YA+Bjz/A+BNKMYSavC0ISekPnSMHt/wRpmZSks/XgJwyBHGmyPvcVyC5z+vunDpczCsxAG3IG20lUoEuB0wsAZ/jS0T14EXcB4S5umxTRIFAjYUMuyZhJkn+MRWG4nQJAoEMPOpQjleFbx8G5JEgYAAgHxz5AhFwiXAGP/RDq74rFcMQcIlMMK2uV8Prv+rtkkUCGCwUoz3w1pN2yaJAoE2w92mSPB2oKevz0NKFL5XaGnbhNwECfdVnCuQCTiQ4Sv0mctS2jchK0jwvlWbiInYiFE6IuzPIlbQsEBlXxreg+TO4Q3B+MBrr9BdI0Tw8ipuVkAA8h6ExvwVWvRdkQTObWO3oYH1D6b3GS95f85qAAAAAElFTkSuQmCC",ji="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEZ0lEQVR4nO2ZUU4bMRCGvUi8gcgNmp6giwCJN8wJmp6g9AQNJ0h6AsIJGk7Q9ARZ3pAAZTkBuUGD4A3B9rMW0kzWXhaSTRPiTxrNLHhizx/biZ1ALTleAGyp8QJgS00hAXZ3d6v39/d7QRBU1QKQJEl/dXX19OzsrK9eIMCc7OzshLzYEabVAsIbFmGH5+fnMY9WnAJQ/MHj4+NPwoVnZWXlGyK0lQWrAFtbWzXcL+w98eXy8rKDF2QE0FpXbm9vrwkr2HtisL6+/jGKogHxkIwA29vbddb8EeG7w+wHFxcXLcIhNgF6CBASjnPCWmqxlmLiuYW9K2TvqhN+xQQIECPAJuGQjACs/wQ3zhXrJ8QvDNQR4z5hAuoQNYsHA4k2AY5JrOMXBupo4b5jAuoQNYsHA4kZAZg6P5g6TbVAsJSbLOUGocAL4AXwAoiaxYPBC+AF8AIkOIEXwAvgBfACuASgfY3/f6czjY+xNifGY/7lRKd3DkeENWyARZzVD8fP6qPofzlapXcVEfd+h657v5kIQCeuuwPn4UmnhVwTVrBRrBcWBp3m9AirSjJAhE2bCIytfAFo+wdXwTJwd7DJTIgJBeS0leWs/sQJAzxQY1CMS2gztt+MrUYoIKdcAehA00GX0Ao5h+S0CAXk9cgLCTOQk7mwMJATkbNHaKNPUR/xAnKa5DQIBbQNcEPEg6GoAE83Lz1CK8wA600sA4sY2B5hBvo5pR+txiCnQ85nQhtXFJURlJwmOQ1CAW1FzeLBUFQAA237SqkP2Dg3rM3wNWvT4OoHsfOu6I8pqo4XuPqhrahZPBgoKsEJXAOjE00nHcINbIjr3X+GPmLcJ2yUKwYX4q3Ql20WXLFx6siycdK+SfsGoYA+RM3iwcDgEpzAJYDh6WezOm1COuzj27SN1AswwDpOq5SInBY+FzMT6KNGWME6eTm8fpO2DULB1AWYV7wAXgAvgBfAC+AF8AI0CAVeAC/AGwQA6zl9nkGADgKMnx0KCTDAbWCjDDjg7HPAiYnnHs4M5qjeJaxgo9wggPibTYC2st/YDLAOy6GvCkA70/50UtFMMbZ30gVtqyq9a6xg42RmckYApo7mRbqEUwEhWmtraz9sR9Y8NPeAd3d3vxiLVlOCseyzl0VqhIwABkTo0HFh1V+CjmNE2C8qgk6L7yaOq7O3wBh+U3yNUGAVQDMAbmEjlb20mIQ20+8bPhdN39MuHpwXJwFmRacDaTOQzzxOi1wRdNpnN5li8eadZ/YdRJbiDQGWC8tBM6ADlW4sG9ikWEXQ0y3+BjMbdptpH6kcAmzqmJ2bj6FIuQXLiIDQvZzib/gY1pN+otgIsFIoIgJFHeM3KLyJaWWntOINpQlgQIS86+wilFq8oVQBDBOIUHrxhtIFMLxBhJkUb5iJAIZXiDCz4g0zE8CACCGbXQvb49HGCT+pNW0/qZXFTAV4xvya9PDwoBGiqgAf802N7yr2Lytl8l8EmCe8ANhS4wXAlpq/sWppbrWv2fQAAAAASUVORK5CYII=",Qi="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAE40lEQVR4nO3ZjVHbSBiH8f9WEKeCiAoiKshSQZwKTq4gpgJMBZgKMBXEVwFSBSgVRK7gTAV7j27ZwQLklWTMx8Ez8xvPxF/xK61XgNE772MAeNd9DADvuqEDSPEdibyXrJL3N0r0yqBPVtIFEr3O6gEcI1fHDLqWyX/4t9AEC3XIoEuZ3s6HD02wUCSDWCP8QX0bWmEmf8rVXrL01hyfEFrjAPVtawaxpjhD6DesIi/8Ao2QS/qK0DHmaK3LAHJJ3xA6RInXWIprhApYbckglkNohUSvu0rSF4QMWtt6520OoQJWr7slviNk0NrWO2977gEk8ksu0V2V/HtXijfGL9SdY4rWDGI5hApY7acUJxijrVzSKXJtL721xBqtGcRyCBWwevpOMFP3FvL7/M4ZxHIIFbB62i6QqX8lDrFTBrEcQgWsfCnqtZaoe3McIzSTP/qbrVA/rkQl//oppviCzc5R//vgDGI5hApY+RaS/kLfDlEikb/C3OwSU6zxWDM9HNgRcg3MIJZDqICVb46f6NsBKj0c4CUyxZupOYRcfgiDMojlECpg5UvkhzBC15aYo+4fjFB3g0TtR/5+lZrL4QCVBmQQyyFUwGr3UlwjdI4pulY/9gyhCRYakEGsfQxgjF8I/cASXbOSrhA6xUwDMojlECpgtXuZ/PYXOkKu7qW4RugUMw3IIJZDqIDV7lk1j+AEC3XPqvn8U8w0IINYDqECVruXqLkFXiJT96Y4Q+gIuQZkEMshVMDKZ+XX8QhtVfL7/hr3qzTsm3yEP6hvQ5+xRu8MYjmEClj5Fmru421NsNDDZmru5yUOEesCme66RKaBGcRyCBWw8s3xE7F+YIn7jVCp+Xu8EvXjKz1shDNkanaASgMziNU2gPo/NEei9nL5I92WVfPLLLSQf24l/z7jWyNsdow5BmcQyyFUwOppy+RP675dItOOGcRyCBWwerqs/DIao2+5/PaXa4cMYu1jACOcYIpdW2KCNXpnEMshVMBqt1JcoL59rBUqNY+slZSouW1utsYRSvTKIJZDqIDV8FJcYYTNbrCQ/0Kr1F4iv+4zPT6MCRbqkUEsh1ABq2GluMIIm51jJn8UuzbCFCe43xFydcwglkOogFX/RrhCitANxsg1vBS5mtcSaxyiUocMYjmEClj1b46fCN3AasCafaREfghfEMrlz4RoBrEcQgWs+mXlj/5mR8j1dKXI1TwTJlgokkEsh1ABq35dwequU8z09GXyu0uokr9M3ppBLIdQAavuJfI/uYVWqI/WGvuoxFeEfmCJ1gxiOYQKWHVvijOEjjHHvsrUPAsukWlLBrEcQgWsupfL/6Ez9Blr7LP69T+hrlJkGRjEcggVsOperrsBlDjEvst19551Bq1tvfM2h1ABq+4t8R2hCRbaXymuEVoh0ZYMYu0ygEzNNfncnWKmLRnEcggVsOpXia947m6QyH8ntGYQa9cBjLDENzxXK4xRYmsGsRxCBayGlck/N9H+WmN5a41oBrGeagCvMoNYmwOoFNlX31oGsXI11+8hSvwv6jKAKc4QKnGENd58BrFGqHR3eVlXye+vv1HizdZlAHWZXvaCpksTLNQzg65lev1D6PN5/qvvE6z8lL/gtbVCop4ZDCnFGIm8l66S/z1DiV4ZvOs+BoB33ccA8K77F/DNI1Ad1eJHAAAAAElFTkSuQmCC",Bc="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='14px'%20height='14px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdefs%3e%3cfilter%20x='-50.00%25'%20y='-50.00%25'%20width='200.00%25'%20height='200.00%25'%20filterUnits='objectBoundingBox'%20id='filter572'%3e%3cfeColorMatrix%20type='matrix'%20values='1%200%200%200%200.4%200%201%200%200%200.4%200%200%201%200%200.4%200%200%200%201%200%20'%20in='SourceGraphic'%20/%3e%3c/filter%3e%3c/defs%3e%3cg%20transform='matrix(1%200%200%201%20-1686%20-5323%20)'%3e%3cimage%20preserveAspectRatio='none'%20style='overflow:visible'%20width='14'%20height='14'%20xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAIdQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA92IrIQAAACx0Uk5TAB5tuNj0bB0bmfz9qiBQ8/JOb24cGp6ba7e12/HZ12n7nJgZSU1MFZGitmptU/ZgAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAAASAAAAEgARslrPgAAAQ1JREFUeNrt1utOwlAQReEC5WKrnGKrItaK4t3z/s+nicYIHacN2ZHErO8nk7UDDSEkCQAAAAAAAAAAAPBpMByl43E6mkwP0syOsvglPz7pN6Vs5iH+UCz6bCmb0zxuycvuLWUz33n949L5eZRNFWJLceZvSZvzaLjwx5TNILMOWeVtSZsympbemLS5tA8rb0zaXNmH1BuTNsE+BG9M2vxyqPcY26+5tg+NNyZtDv4lnNiHG29M2kzNH4i1+6OibW6tw13ikjazov16vfHHtM196+HkD0kHbVPu/lEYdm2pm8XW06kfu7fUzdPz+vttvWz6bMmbavnahNCs3qp+U3/ZAAAAAAAAAAAA4J97B6Y13hOEznw5AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTAzLTE4VDEyOjI5OjA2KzA4OjAwpDFvtAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wMy0xOFQxMjoyOTowNiswODowMNVs1wgAAABJdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2V3MGNucnU1MjUvZ2VuZ2R1by5zdmfa+p/PAAAAAElFTkSuQmCC'%20x='1686px'%20y='5323px'%20filter='url(%23filter572)'%20/%3e%3c/g%3e%3c/svg%3e",qi="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='14px'%20height='13px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdefs%3e%3cfilter%20x='-50.00%25'%20y='-50.00%25'%20width='200.00%25'%20height='200.00%25'%20filterUnits='objectBoundingBox'%20id='filter571'%3e%3cfeColorMatrix%20type='matrix'%20values='1%200%200%200%200.4%200%201%200%200%200.4%200%200%201%200%200.4%200%200%200%201%200%20'%20in='SourceGraphic'%20/%3e%3c/filter%3e%3c/defs%3e%3cg%20transform='matrix(1%200%200%201%20-1740%20-5324%20)'%3e%3cimage%20preserveAspectRatio='none'%20style='overflow:visible'%20width='14'%20height='13'%20xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAA4CAYAAABNGP5yAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAOAAAAACP8+m+AAADhUlEQVRoBe2aS4hPURzHZ7zfj4USmTGTkGcodiRRNh5JNsooO7NhgyJSyoayIDbySFlYkLLwyAaRR5Ty2DCTJPIYeYfx+U5z9O/M+f/N/zf3/q//vfdX3+4959zze3zP6557T01NxqU2EP8M8prAPDAaVLN8x/lWcBEcA+9AURlCyVHwG7SnEG3EtAEERcHfAmkM3I9pd4iBUxkJ3pGxwpGgOWAuUOv7cpuM60DjqFplOI4vA2O8AJ6TngB+Kf8QcMy46zbyQhOknq82GYbDV4GLzV0Xu0AeeoV3XUGKrg3E4k/uOxVfL+AvdWIrbfKMgF54QdUrLQL6ewXfvHRakp+8QHorLQIyLTkBmW5+gs98D+jTwx4wivpDe6jDr/6WDL23V0SsBDTi3XkwJSYvr6B3Ofgck/6/aq1DQG+KcQUv5xaB9bqJW6wEdLxExOzc+Jj1d6i3EvCkAs49qoAN8yqwB+cugx8xOPkFnSfBiRh0d1FpnQRfoUm7Kb1OarcVpbyPUtm/dFkJcHq1n66ow85wVFfrHBCV/cT15AQk3gQJO5D3gIQbIHHzme8B1mVQxK0DC8GABJuxFdsHgb75mcRKQDPWDpgsRl9pNSonAdO3TOsQWBJ9HGaNddQ070ytBMSxBzAzQEVT68uglYDj1NWPhv9BbuLEY6sj1jngHAZngwVgoNV4BPVa0HEWmBvDSoB8f9AJ3VetWIdA1QbsO54T4DOStXTeA7LW4n68eQ+AkXaPlb5eOi1Jv7E73h2U+caLcJqXTkNSh6UavEBeu/QZbtQLHPSld74rTMl1X0F8Ls41iq0WrAIioVC+ktgPLgH/aEnhc1Hda3OlP0E/y1SoHqweW2zY1lO2FqwEhfKRRB1oU6Z+buhMoGMmqatOq80E3ZURPHgfWPzd7huZTIbmAouyKOvoUOYO0J09yiajv/r1HtQ/nYKnRqVRkiBdd8BUUEo2Uliu3dPUKbl7HcQDm4G1a5XrUKnn9ZFjK9AQDclgMq+BUjpUJj0XwFLQRTQJFhMdfRkLZChOGYdyzdKNRYzoHHMTCH30kP9a3kaCkHwgswWUO7mGdMWap265t9PRUItqVdoCivUGitIhswjjHgiRoLwbQF+AUy39iG4X0IoQIuIl+XEPS0wkL3rB0QfPEAlzknevMh5ozGu913E5R4R6gFarTMlEoj0MjgC9tEUmfwCaJfF0KbQc/QAAAABJRU5ErkJggg=='%20x='1740px'%20y='5324px'%20filter='url(%23filter571)'%20/%3e%3c/g%3e%3c/svg%3e",g0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAFFklEQVRoBdWZW2icRRTHdze7MVsviblYRVEbr4iihnjpmnuCxEARtQYFxZc+ircHfUygUkXQPlnQKuibBEEkNRISkxDazUNDQLBREW0pPtikmsqa2N1ks/5OzLecmb0k+/ml+zkw7DlnZs78/zNn5puZDQZ2KI2MjFwVjUZfxf1+8q3ki+STmUzm/a6uri+RPUlBT7xYTsbHx+8Kh8NfA/ZGq8hRP0U40NnZueYY3P6G3DYs1G5ycrKmoqLiqyLgpekL5DcL+SjF7jkBOn+ZfLMF4i90e7RfGxsbKzRDVvPC6k4QeFp3FwwGjywuLtYRUtcgx1VZBJtRV5VtW/ScACBv070TSgf7+/tTra2tS+vr6+/qMuT7LL1k1VMCs7OzEQBHFIo0C/U3R2dtfO/I8gvZ27XuRvaUwPLy8g2CSwFZUnIAAr9qHbI3ad2N7CkBQuQWDYIRPqv1lpaWBLaUslUq2ZXoKQEQ9GoUjLARMlKGLUsAMhW6vhvZMwKDg4Pi60kLxJjWh4aGBPDljg0yq47s9tczAu3t7c8CYo8CcjGdTh9TeqChoeFqdL1GzupyN7InBEZHR2VUD1oAPu/p6fld21gjTVonhE5r3Y3sCYHKysqP6FyPfprweNsGFAqFHrVs31l6yWq45BaqASCDU1NThzA9o8wiHuXEecqyiWoQIMS+yVOnJJNrAsPDw7sA/wG9PWf1+FMkEnndsgUmJiYewnaPsieqq6tnlO5KLJmA7DZtbW1PEA7vMQP2YewCo7qfr2/CRkO8v2LZrkwkEilOr3LQ285uJPeJefJn5E+co7jeEbDnT3RyLSV3k9vJz5PzfUETEHqM0DlBuZHkiAHYPzFGjQL3yixN98kxRWK4lY6PYLi+gD9Z6NUFyjbMjO4v+Hgch3kXZTwej6ZSqfPU2VXMTyll9Dm3sLCwN4TTj2kooyt7dL5cDHwGRx+urq42FQIvoGKx2N/08xJ1/xDdi4S/pvr6+gNBwkPir9S1kKbNF+zrb3V3d89tF5CsH+oXG5CCrpLJ5HXcHw4DXO9kM24IvMhClY/UuYK97VABd+3dnGizx3O6SeR8yIjV3TCtdTKVZLSzidvV0XKAFwCAT2aB/CtEJHSMnaiurm6pubk5u60RYkabxsbGjGG4hApr6H5CSPd4OmcG2O6MGjQwCNrl2ttOy2B5xOrjRA4Bq4KvVGZgrwYEoRnZRo0RJsaNGdANyilv4nxYY2BNzPxvZmB6evpOSNQqAkuszx+3JMC0+WKG+ObEFHgR43xX1rckYDUqp2rEP0A2TrI5BObn5325BgBszACBEZfRzCEgxmKpHASJ9Rri/w6FS258J0UP2zGuKvlGBGwMnNnBRv62o6ND7hGlz0A5WAHYiH8IbYRPXgIDAwO+WwMQMOIfAtmraHZaioyssY1eaoLyGAbgBzU+CBWeAV3RDzKHy3vBcYXCco7L0xlH384MOHXL8svjgRH/gDiugQgBI0SYnqJrYKty7dwj2SaQjX/x7/sZAKOxgHX8+56AXCEBuUeAbqbkysqKcQf37QzwR/llXGsPOcg3f+f6+vqS2pbzGsE70c+6AluYVgN2uVHooUK/teQa7RL9mNZFziFApUa7kta3Ktd1PZZ/qKqqOmz7lBA6bxt9qJ/hKecpeSCzscmV8g2M8nDqu8SOs0B+B2AP8JQjD7s5aeMbIE/lpAbI/Oc/3XJ6cGlYW1u70Nvb69lTpEsYO9/sHwHIu0q4cL20AAAAAElFTkSuQmCC",Nl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAD30lEQVR4AeVa7XXaMBSVDANkBDxB6QRxJmg6QVmANp2gZAOaDBCYoGwQugGZAGUD+F9Q7zPIxxAZy7ZkG0vn5Ejoy/fe954+7HDWgrRbf/8FGPeMySFyIRmf9MOneR3QeB0PufQMkJ+AOAlwlvgqYMEdD6ebswarPwOrs5WaTP7QD5PDPdu/6tvs1bZAAHaTTUcODx6S3aNqS6MhINcP0Z7tcq0csF6IUBBVyerGt8EDdLhO6iASFkg3qVEBEOORGS3+zaxf8V6NCmAOVw4RLhfWCvOZzns2KoBkMjoHdOH38EJb6abGBCCLYgW+NUW+Y7uBad8i/RoTACCjIkA544Mi/U37NiYALDoyBemyXyMCwP0HcP8vLomZzt2IANj+JqYAXferXQCyPi4/zvb1ooLVLgBi/6UoSOqPLVOUGZc3plYBYP17xH6UB0rX3mM9oauvWlebAOT6ONOXsv6R5KYqWd342gQ4un7p4yxugysdgap1/aoTmIzfrcdk+cikb0aft4z6ytXOPeDfejwCSvqrkLgT6xMgpwIQeSx6VeJeiSZUwXbuTACL5GGlYGmbuJoPBrKfbJIndL3w2QlOmtu6B9gmLxn7S0BdpRNl5Xp8a/ogHj5/AIa9/gZ7/RpzlN7uNM+fwUozTX3pqjT2WAA6oR0PKQWA81UvfPqcRnGc50+6rqVlgTfNX+lsEQA0PkDsCHQB8kQrfk8XUUkl3PKGqtzynE6lr+A+CHBCm7QcrCt4CNf9JEAMGMe9KyQNzvuJdoGCrt8gXOuPlpwEeLc+79VMiC/Q2GfF1eC1DlTiE7zHCVvhCosgF75qgHPAkjzASwEQ+vFJ1tsQgOcvyfOxCLp520qTtznhir0ifIGrt61tJn/EtqTcyxCg+McCuFECCCr4lFT8E+cASgifyMekWbBQnH0MgS2MHi+ABzEOUnh0H+CJ9RMBfLoPYPv7KICKBw/yLTgu0zzjNcCf+wBfqO1PiaAWQaEqupyfuz9xVQJ0mbfiRqv/SfwnAvhxH+AzpUQ6jz3Ah/sA3H+aJq7KvoTAW9aJVwkglCJdzHHO0VqfuMYCZKnTETG2/fB5lsVFeUBWewfqeab1iVxagE7eB7D4zS5ZMRGgm/cBPs8L70SASypda1vW1pfmkwjQtfvA8bXXKk1WV04EQKPQdbjWOhzuHkywJwJ06zjMHxH7udYngRIBoNgSv+m+fOWJz/GvOxNTEokAtFoibozcJjX5JlWGmoePDem6GstkvJ8gPyryzEQAGkQnJnwxvaMFJGeS+GHnbobfC8b475yxNpvfD1j5I3AP8P+E06KT/wdPOffX7me6UQAAAABJRU5ErkJggg==",rs="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAgKADAAQAAAABAAAAgAAAAABIjgR3AAAGo0lEQVR4Ae2dTW8bVRSGEydOihDEUSW2ICQ2wBJERSLRDaJlwc8obBI5ShQkVl4SN5aVOEIgfgb9QioqCxcWXSLY0ILKjkWkuBVK4yQO5ygzMHbjyXzcO3PPue9Iluf73vu8z1zPxJnxxAQGEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABPQQmbTVlZWXl9cFg8GalUnk2MzPzYGNjo2erLI37rdfrtZOTk3epbbPE8Ld2u/2HjXYaF2B5efkNqvC3VNkPIhXuT05Ofj03N/d5o9F4FpmP0RECxOdCr9e7TuFfo0Uz4WKavkevT7e3t38P55l4NypAEP7PVLGLYyrXpd7g42az+XTMcq9nr6+vv9Tv928RhMUxIHbpQLpEvcHDMctTz66k3iJmg+DIHxc+b7lIDbzNDY3ZjZeLgvBvM6MYABepF/gmZnnqRcZ6AP7Mp8o9SliD+9QTXEVPcEorEv5CEn5TU1OvtVqtx0nWPW8dYz0An/CdV1hk+QJ6glMaacPnrQ4PD9+KsMw1akwAPttPWRPvJcgSPjPOwHpsNMYE4Es9KqU/tqSzF3grQdbwCeNBwPpsoinnGhOAr/P5Ui9l+by6dxLkCH+CzrO+MnnuZEwATpKv8+mty+MpB28kyBM+Me3Oz89/kZJt7OrGrgLCUtbW1l48Ojq6QdOXw3lJ36kH+Ym2vdrpdJ4k3UbSegGbm1Tn6B/JEjWB2VSr1Ssmj34u2LgAvFNIwBSGBxfD5xpaEYB3DAmYwungavhcO2sC8M4hwX8MnOr2OZtwsCoAF+KzBC4f+YUJ4KsEEsLnbKz3AKFpPvUEUsIvVAAuzAcJJIVfuADaJZAWfikCaJVAYvilCaBNAqnhlyqAFgkkh1+6ANIlkB6+EwJIlUBD+M4IIE0CLeE7JYAUCTSF75wArkugLXwnBXBVAo3hOyuAaxJoDd9pAVyRQHP4zgtQtgTawxchQFkS+BC+GAGKlsCX8EUJUJQEPoUvTgDbEvgWvkgBbEngY/hiBTAtga/hixbAlASzs7PHdDuas/+3z+20ORT2X8G2GpHzZsv7Qb0SPZljpA0qnnIiXgAOJejCM92QOhJqoklbN2omKtzwSioEYCZFSaApfOamRoAiJNAWvjoBbEqgMXyVAtiQQGv4agUwKYHm8FULYEIC7eEzI6MPieIdOjjkOtHd39/Ptb2DPIaqpLZxef68GyXEvYDmB1epFMBU+KEImiVQJ4Dp8LVLoEoAW+FrlkCNALbD1yqBCgGKCl+jBOIvA/nrYDpL/57CSf34VdqGvw4OvxIO8z33nR7Y/D79aMMtLvvclR1fQbQAfOTTD098R4xTf5/PZ/b8qyXT09Mf0fY/ZshpgX644c7S0tLLGbZ1ZhOxHwF5uv3Rv/AF+8r0/wTSLxFFCmAy/PBQ9FUCcQLYCN9nCUQJYDN8XyUQI0AR4fsogQgBigzfNwmcF6CM8H2SwGkBygzfFwmcFcCF8H2QwEkBXApfuwTOCeBi+JolcEoAl8PXKoEzAkgIX6METgggKXxtEpQugMTwNUlQqgCSw9ciQWkCaAhfgwSlCKApfOkSFC6AxvAlS1CoAJrDlypBYQL4EL5ECQoRwKfwpUlgXQAfw5ckgVUBfA5figTWBED4oQL5HmFn+74DKwIg/P/DD8cCJs7dfGJcAIQfRv78u4sSGL03sNFoXKAbNe9Q0zPdqFmtVq80m82nz6PTMWdzc/Mfuh/xE2pN1htSbzJjkzSMCtDr9a5T5RYzVFDFg5eTtJsF55tSad3UEjDbvb29L5OUk3QdYx8B9Xq9RoX+Ta+ZpIUH63kTfpRLjqecHxwfH7/S6XSeRPeXddxYD0Bnq+9QJRB+wiRy9ASz9GwCZm1kMCbAYDBI+9nk5ZEfTS2rBBlYR4sdGjcmAHVLvw7tOX7C+/BDPFkkoJPlNKzDos58NybAzs7On/TolHtnljI8E+EP85hIKcHdVqv1eGQXmSeNCcA1qFQq1+htN6Y2XT4D5gbHrOPloogE3RgAu9TTfhazPPUiowK02+2HdDJ4iV4/jNTkgHqHdq1W+xDhj5CJTDIbZkSztuh1EFnEo3cp/Pfo7P/RyPxck8YuA0drsbq6+ipV+G2av09H/QMEP0oofpofPhWc7b9AB88vW1tbf8VvgaUgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIg8C9yNG0zv/zA5QAAAABJRU5ErkJggg==",jm="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAIA0lEQVRoBc2aaWxVVRDHea9FEtomZXFBqlEj4DdDCsgXE+GDxqqIdGWTBAUUUInBxBijQYx8QAOBogIqhKVQyiYqrrEuiYIC+pGCSiLiVqlgW6SUtv7+l3tv553e9+hroXWS4ZyZc2bOf86Zs9xXYn0uAW3btu0a3IyPxWK3tbW13UL9JngQnA2LGuCT8E/0Odza2rqPsrqkpOR3NXaHYl013rlz56Dm5uapAJmOj1Fd9PMt9hszMjIqJk2apADTprQD2LFjR15LS8tCRpoF9097xGiDRlZuLcG8zKqciO4Sre10AKtXr+47YMCAubh5EQ5SI9pr17VnCGRpTk7OkoKCgqbOuOlUAOT4CJxVwrcmcdqC/hvlNeVBypqmpqZfGyD1z4b69et3LeDkJ59yPOUYOA5H0ffsk9KysrIjUY1Wd9EAKisrCwG0HqOoWT8OmFW0b0p36f1UnIbfeXAe7FI9ihn43eU2WDllAIB/BHDlGGRYI+q18LPwegY457SlJbK6VzAJMxlnMYaDHWOt7FzGWOPoQzFpAD7418Ke7ZUKqo/htK5d1f2af6qVE0hZhLc5yYKIDMBPG+W8nflmnM8tLi5+I2KAS6aqqqqaw4qsxGFf47QFXVFpaeluo/OqHQLwN+wBWm3OnwF8EeDfdx1cDpkJLGC8KnzbY7o+Ho/nFxUVHbVjJpwCykcaNfMWvGa+x8ALHDO9l6IEbpbsUw4nU6WO80ChMiEA5CfhhKPST5semXkBCoicf4+0eTyQ/XIkd9ECqwtTiNkfSkMNnBV0wMFmZkNHXa8RuLYyeKkB0MDTY3hhYeFv0tkVeAo5BE/9JE+GhGhl0Auk2/8vM262/5TxVF4AOsKQ9Lax9MyUKVOsoW3rsbqOa9L4eWfAOT7mCyugVyUd7I7/BXm9Y9RrIqmso/tnAyALzN594a0AEepJHBIG5UTerRs2dHYJKj6WhEsVzA/KdZw3yRDKfDNOa2Zm5mYj/1+qGwGip0VAoysqKq7OPH/+/B1EE55GtO5nhyuFQuIkuAdhNdwGP86MpHxghYZpVhjnAUx0C5MEbXP8+8DzwpgnaD+IoFesKMZE38HlFh97Qb7wL7HoSeySwOuYzYOrcDTF7dBd2fep29cbBxwa06VPrYIgx8b5R9+wISEfCIX2yvn2qvc+2sCACfvGtKdd9X1twNC+veyYgU+tQEgEOUKb+OZQQ4UVOWJl1en4KIXd1BpoHW+WGWrvDvk+1uHDgj/HmDr/XapxFMMUQK5V8t7wbjir0yMOhxPRnTX6DHTrmD0F1yUCvL4D3sLYBV8S9XBkv7rYchWAfbgJiPcZqIol36E2mQ1Cm38VT+Co2bLmHeoE/hDg19IgDAFplRmq+O1AYcvc3Nx6K1PPscZOW0eRk+AD9oi7EjF05czmvI4W0RoCfpiWNbAd/xx+ihhjT7RVtFYO3Bl3VyTBkqPtQ2bufpT/mgZUsZXM6nyji6wS6CyA6oSx4JuwL8T3O5FGvvLUqVM5Tnu9nPxtlWziIVaOqrPEH6G/G2407UqnFQB0n8BhFwKcDVAXvCbiPny+G3ZMUuHcd7GdUgA/2v5s4uFWTlZnqT9nJgtotyuolVgO0CdcO30qonsdtpemfgeagK+P3f5J5BGO/micAQ9bJQ5HWzlVnSX/AvsOQWCjIJ4ObAG/AL96yySAx3YCPj4J+l2spP8o2wefNZnMuH5oDZed+jjb6WJ1lv5LwCqd9Bloc3QJ6aQJOstArzh+ziArbRJuVqdPBxE/4x3l1zHvQZSZqfM1mJ1WPhhumDx58nGnc0qRWb6dARREykOA9gaCKlDgKR06jUzS9aiOwcHmb+NeGBLno+UPlAdM/zifbFON3KmqAAHsLjr/k8KgkT6a+bTAyx92whSAl2q/sHsKGjdKY2geEesXirQIYF/hS+l0OsLwNG130ueziLaUqr179/ZjdRPumQCzF4B+n8eDPRLzMJiZ0muSRgXhv3C300WpKdYr8za1UaZN/Easz92hxrARzJWSg7zvw4ZbRlT2I76OHBvR29/F+vYFh07KwUEATO4rnF4LJYc5BfiXke0qDCRKfVz0KgFex28Innq9j9XDFQbAZXKChhcsWuQy/wKy6h6rkxXK+2I7IJgWgTX821oYgDrV1dUto/jOGrBcK3Gky6pHiYm7F7DLnUEPgXGF1YV7IFBu3bp1OJtQx6q9lHTlF5N3OucvOwk842mT9jeD6XjOZ/Z/MLr2PRAo/T/r6EvL/gLQn9nYzUo8EvS7XKXSBvC78G/BC8t0F7wwdFgBKUXcA7Mp9HJ0qZKNNf9Sn06MdyUDrYITch6ZeLxfKNa6QCQnDUCNfhCvUs2QbOgkK/JcVlbWm539a6KxTajqkvLP+UU0DExoJAsA/yipGwlefVMGoA4s6UTAbqBq94SaRCfgct5Om9N9O23ZsuU63vfTAKiTxl5S8itSzitt9nhSkn8uGoDstm/fPkx/XKA6MomfVvTa+HpdHoRrYAXXAIuyORjy9K3BZIwC9Hh0+XDCKaiOPh2iLI3K+aBDUHYqAHWurq7OrK2t1WwthqNWQ926S94fugnyJcDbn3GS+u10AIEH/ZbKTD7FLGqTZwX6bpaN2OvAWArw8JLqjM+0Awic+m+UycjT4DFwur7asNnPRGxixrcAvA45bUp30MgBCOYqjtZxgBkLGP1UeSOsYzHbN9BeqIWP0ecwffaxgav5Hyp/+u1dLv4D4SL5jJQdUmEAAAAASUVORK5CYII=",m0="__epPropKey",ps=e=>e,Qm=e=>Te(e)&&!!e[m0],y0=(e,t)=>{if(!Te(e)||Qm(e))return e;const{values:n,required:s,default:o,type:r,validator:i}=e,c={type:r,required:!!s,validator:n||i?f=>{let u=!1,a=[];if(n&&(a=Array.from(n),be(e,"default")&&a.push(o),u||(u=a.includes(f))),i&&(u||(u=i(f))),!u&&a.length>0){const p=[...new Set(a)].map(w=>JSON.stringify(w)).join(", ");IA(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${p}], got value ${JSON.stringify(f)}.`)}return u}:void 0,[m0]:!0};return be(e,"default")&&(c.default=o),c},hr=e=>Rm(Object.entries(e).map(([t,n])=>[t,y0(n,t)])),qm=hr({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:ps([String,Object,Array])},offset:{type:ps(Array),default:[0,0]},badgeClass:{type:String}});var Dl=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n};const Ic=e=>Object.keys(e);function zi(e,t="px"){if(!e)return"";if(Kn(e)||Bm(e))return`${e}${t}`;if(Oe(e))return e}const zm=Me({name:"ElBadge"}),Km=Me({...zm,props:qm,setup(e,{expose:t}){const n=e,s=Ll("badge"),o=_e(()=>n.isDot?"":Kn(n.value)&&Kn(n.max)?n.max{var i,l,c,f,u;return[{backgroundColor:n.color,marginRight:zi(-((l=(i=n.offset)==null?void 0:i[0])!=null?l:0)),marginTop:zi((f=(c=n.offset)==null?void 0:c[1])!=null?f:0)},(u=n.badgeStyle)!=null?u:{}]});return t({content:o}),(i,l)=>(R(),B("div",{class:Se(z(s).b())},[jo(i.$slots,"default"),xe(gl,{name:`${z(s).namespace.value}-zoom-in-center`,persisted:""},{default:qt(()=>[Ct(d("sup",{class:Se([z(s).e("content"),z(s).em("content",i.type),z(s).is("fixed",!!i.$slots.default),z(s).is("dot",i.isDot),z(s).is("hide-zero",!i.showZero&&n.value===0),i.badgeClass]),style:rt(z(r))},[jo(i.$slots,"content",{value:z(o)},()=>[Re(ne(z(o)),1)])],6),[[Ko,!i.hidden&&(z(o)||i.isDot||i.$slots.content)]])]),_:3},8,["name"])],2))}});var Vm=Dl(Km,[["__file","badge.vue"]]);const v0=(e,t)=>(e.install=n=>{for(const s of[e,...Object.values({})])n.component(s.name,s)},e),Wm=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),Gm=v0(Vm),Jm=hr({size:{type:ps([Number,String])},color:{type:String}}),Ym=Me({name:"ElIcon",inheritAttrs:!1}),Zm=Me({...Ym,props:Jm,setup(e){const t=e,n=Ll("icon"),s=_e(()=>{const{size:o,color:r}=t;return!o&&!r?{}:{fontSize:Lm(o)?void 0:zi(o),"--color":r}});return(o,r)=>(R(),B("i",xf({class:z(n).b(),style:z(s)},o.$attrs),[jo(o.$slots,"default")],16))}});var Xm=Dl(Zm,[["__file","icon.vue"]]);const Pc=v0(Xm);/*! Element Plus Icons Vue v2.3.1 */var $m=Me({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(R(),B("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),e3=$m,t3=Me({name:"Close",__name:"close",setup(e){return(t,n)=>(R(),B("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),n3=t3,s3=Me({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(R(),B("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),o3=s3,r3=Me({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(R(),B("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),i3=r3,l3=Me({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(R(),B("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),a3=l3;const c3=ps([String,Object,Function]),u3={Close:n3},Mc={success:i3,warning:a3,error:e3,info:o3},f3=e=>e,w0=["success","info","warning","error"],$e=f3({customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",plain:!1,offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:ys?document.body:void 0}),d3=hr({customClass:{type:String,default:$e.customClass},center:{type:Boolean,default:$e.center},dangerouslyUseHTMLString:{type:Boolean,default:$e.dangerouslyUseHTMLString},duration:{type:Number,default:$e.duration},icon:{type:c3,default:$e.icon},id:{type:String,default:$e.id},message:{type:ps([String,Object,Function]),default:$e.message},onClose:{type:ps(Function),default:$e.onClose},showClose:{type:Boolean,default:$e.showClose},type:{type:String,values:w0,default:$e.type},plain:{type:Boolean,default:$e.plain},offset:{type:Number,default:$e.offset},zIndex:{type:Number,default:$e.zIndex},grouping:{type:Boolean,default:$e.grouping},repeatNum:{type:Number,default:$e.repeatNum}}),A3={destroy:()=>!0},_t=Mn([]),p3=e=>{const t=_t.findIndex(o=>o.id===e),n=_t[t];let s;return t>0&&(s=_t[t-1]),{current:n,prev:s}},h3=e=>{const{prev:t}=p3(e);return t?t.vm.exposed.bottom.value:0},g3=(e,t)=>_t.findIndex(s=>s.id===e)>0?16:t,b0=Symbol();var m3={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const y3=e=>(t,n)=>v3(t,n,z(e)),v3=(e,t,n)=>Tm(n,e,e).replace(/\{(\w+)\}/g,(s,o)=>{var r;return`${(r=t==null?void 0:t[o])!=null?r:`{${o}}`}`}),w3=e=>{const t=_e(()=>z(e).name),n=Ie(e)?e:H(e);return{lang:t,locale:n,t:y3(e)}},C0=Symbol("localeContextKey"),b3=e=>{const t=e||ke(C0,H());return w3(_e(()=>t.value||m3))},C3=["","default","small","large"],g7=y0({type:String,values:C3,required:!1}),x3=Symbol("size"),S3=Symbol("emptyValuesContextKey"),m7=hr({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>ce(e)?!e():!e}}),Xo=H();function x0(e,t=void 0){return tn()?ke(b0,Xo):Xo}function E3(e,t){const n=x0(),s=Ll(e,_e(()=>{var l;return((l=n.value)==null?void 0:l.namespace)||Bo})),o=b3(_e(()=>{var l;return(l=n.value)==null?void 0:l.locale})),r=Im(_e(()=>{var l;return((l=n.value)==null?void 0:l.zIndex)||A0})),i=_e(()=>{var l;return z(t)||((l=n.value)==null?void 0:l.size)||""});return k3(_e(()=>z(n)||{})),{ns:s,locale:o,zIndex:r,size:i}}const k3=(e,t,n=!1)=>{var s;const o=!!tn(),r=o?x0():void 0,i=(s=void 0)!=null?s:o?Qe:void 0;if(!i)return;const l=_e(()=>{const c=z(e);return r!=null&&r.value?_3(r.value,c):c});return i(b0,l),i(C0,_e(()=>l.value.locale)),i(l0,_e(()=>l.value.namespace)),i(p0,_e(()=>l.value.zIndex)),i(x3,{size:_e(()=>l.value.size||"")}),i(S3,_e(()=>({emptyValues:l.value.emptyValues,valueOnClear:l.value.valueOnClear}))),(n||!Xo.value)&&(Xo.value=l.value),l},_3=(e,t)=>{const n=[...new Set([...Ic(e),...Ic(t)])],s={};for(const o of n)s[o]=t[o]!==void 0?t[o]:e[o];return s},T3={esc:"Escape"},R3=Me({name:"ElMessage"}),L3=Me({...R3,props:d3,emits:A3,setup(e,{expose:t}){const n=e,{Close:s}=u3,{ns:o,zIndex:r}=E3("message"),{currentZIndex:i,nextZIndex:l}=r,c=H(),f=H(!1),u=H(0);let a;const p=_e(()=>n.type?n.type==="error"?"danger":n.type:"info"),w=_e(()=>{const V=n.type;return{[o.bm("icon",V)]:V&&Mc[V]}}),h=_e(()=>n.icon||Mc[n.type]||""),A=_e(()=>h3(n.id)),C=_e(()=>g3(n.id,n.offset)+A.value),T=_e(()=>u.value+C.value),P=_e(()=>({top:`${C.value}px`,zIndex:i.value}));function g(){n.duration!==0&&({stop:a}=Z1(()=>{_()},n.duration))}function k(){a==null||a()}function _(){f.value=!1}function Q({code:V}){V===T3.esc&&_()}return en(()=>{g(),l(),f.value=!0}),pn(()=>n.repeatNum,()=>{k(),g()}),X1(document,"keydown",Q),sg(c,()=>{u.value=c.value.getBoundingClientRect().height}),t({visible:f,bottom:T,close:_}),(V,ie)=>(R(),at(gl,{name:z(o).b("fade"),onBeforeLeave:V.onClose,onAfterLeave:K=>V.$emit("destroy"),persisted:""},{default:qt(()=>[Ct(d("div",{id:V.id,ref_key:"messageRef",ref:c,class:Se([z(o).b(),{[z(o).m(V.type)]:V.type},z(o).is("center",V.center),z(o).is("closable",V.showClose),z(o).is("plain",V.plain),V.customClass]),style:rt(z(P)),role:"alert",onMouseenter:k,onMouseleave:g},[V.repeatNum>1?(R(),at(z(Gm),{key:0,value:V.repeatNum,type:z(p),class:Se(z(o).e("badge"))},null,8,["value","type","class"])):oe("v-if",!0),z(h)?(R(),at(z(Pc),{key:1,class:Se([z(o).e("icon"),z(w)])},{default:qt(()=>[(R(),at(Wu(z(h))))]),_:1},8,["class"])):oe("v-if",!0),jo(V.$slots,"default",{},()=>[V.dangerouslyUseHTMLString?(R(),B(pe,{key:1},[oe(" Caution here, message could've been compromised, never use user's input as message "),d("p",{class:Se(z(o).e("content")),innerHTML:V.message},null,10,["innerHTML"])],2112)):(R(),B("p",{key:0,class:Se(z(o).e("content"))},ne(V.message),3))]),V.showClose?(R(),at(z(Pc),{key:2,class:Se(z(o).e("closeBtn")),onClick:Ee(_,["stop"])},{default:qt(()=>[xe(z(s))]),_:1},8,["class","onClick"])):oe("v-if",!0)],46,["id"]),[[Ko,f.value]])]),_:3},8,["name","onBeforeLeave","onAfterLeave"]))}});var O3=Dl(L3,[["__file","message.vue"]]);const Ft={};let B3=1;const S0=e=>{const t=!e||Oe(e)||gn(e)||ce(e)?{message:e}:e,n={...$e,...t};if(!n.appendTo)n.appendTo=document.body;else if(Oe(n.appendTo)){let s=document.querySelector(n.appendTo);Om(s)||(s=document.body),n.appendTo=s}return Rc(Ft.grouping)&&!n.grouping&&(n.grouping=Ft.grouping),Kn(Ft.duration)&&n.duration===3e3&&(n.duration=Ft.duration),Kn(Ft.offset)&&n.offset===16&&(n.offset=Ft.offset),Rc(Ft.showClose)&&!n.showClose&&(n.showClose=Ft.showClose),n},I3=e=>{const t=_t.indexOf(e);if(t===-1)return;_t.splice(t,1);const{handler:n}=e;n.close()},P3=({appendTo:e,...t},n)=>{const s=`message_${B3++}`,o=t.onClose,r=document.createElement("div"),i={...t,id:s,onClose:()=>{o==null||o(),I3(u)},onDestroy:()=>{Xa(null,r)}},l=xe(O3,i,ce(i.message)||gn(i.message)?{default:ce(i.message)?i.message:()=>i.message}:null);l.appContext=n||hs._context,Xa(l,r),e.appendChild(r.firstElementChild);const c=l.component,u={id:s,vnode:l,vm:c,handler:{close:()=>{c.exposed.visible.value=!1}},props:l.component.props};return u},hs=(e={},t)=>{if(!ys)return{close:()=>{}};const n=S0(e);if(n.grouping&&_t.length){const o=_t.find(({vnode:r})=>{var i;return((i=r.props)==null?void 0:i.message)===n.message});if(o)return o.props.repeatNum+=1,o.props.type=n.type,o.handler}if(Kn(Ft.max)&&_t.length>=Ft.max)return{close:()=>{}};const s=P3(n,t);return _t.push(s),s.handler};w0.forEach(e=>{hs[e]=(t={},n)=>{const s=S0(t);return hs({...s,type:e},n)}});function M3(e){for(const t of _t)(!e||e===t.props.type)&&t.handler.close()}hs.closeAll=M3;hs._context=null;const ci=Wm(hs,"$message"),N3={class:"answer-discuss"},D3={key:0,class:"edit-comment flexcenter"},U3={class:"box"},H3={class:"input-box"},F3={class:"top flexflex"},j3={key:0,class:"picture-box"},Q3={class:"picture"},q3=["src"],z3={class:"bottom flexacenter"},K3={class:"operate flexacenter"},V3={class:"emoji-box"},W3=["onClick"],G3={class:"btn-list flexacenter"},J3={class:"header flexacenter"},Y3={class:"num"},Z3={class:"input-box"},X3={class:"top flexflex"},$3=["src"],e6={key:0,class:"picture-box"},t6={class:"picture"},n6=["src"],s6={class:"bottom flexacenter"},o6={class:"operate flexacenter"},r6={class:"emoji-box"},i6=["onClick"],l6={class:"comments-box"},a6={class:"comments-header flexacenter"},c6={class:"comments-header-left flexacenter"},u6=["onClick","src"],f6=["onClick"],d6={class:"comments-time"},A6={key:0,class:"comments-identity"},p6=["src","alt"],h6={key:2,class:"avatar-box flexflex"},g6=["onClick"],m6=["onClick"],y6=["onClick"],v6={class:"comments-header-right flexacenter"},w6={class:"menu-box flexacenter"},b6={class:"operate-boxx"},C6=["onClick"],x6=["onClick"],S6=["onClick"],E6=["onClick"],k6=["onClick"],_6={key:0,class:"like-icon",src:g0},T6={key:1,class:"like-icon",src:Nl},R6={class:"like-quantity"},L6={class:"comments-content"},O6=["innerHTML"],B6=["src"],I6={key:1,class:"input-box"},P6=["onClick"],M6={class:"top flexflex"},N6=["onUpdate:modelValue","onPaste"],D6={key:0,class:"picture-box"},U6={class:"picture"},H6=["onClick"],F6=["src"],j6={class:"bottom flexacenter"},Q6={class:"operate flexacenter"},q6=["onClick"],z6={class:"emoji-box"},K6=["onClick"],V6=["onChange"],W6=["onClick"],G6={key:0,class:"child-comments"},J6={class:"comments-header flexacenter"},Y6={class:"comments-header-left flexacenter"},Z6=["onClick","src"],X6=["onClick"],$6={class:"comments-time"},ey={key:0,class:"comments-identity"},ty=["src","alt"],ny={key:2,class:"avatar-box flexflex"},sy=["onClick"],oy=["onClick"],ry=["onClick"],iy={class:"comments-header-right flexacenter"},ly={class:"menu-box flexacenter"},ay={class:"operate-boxx"},cy=["onClick"],uy=["onClick"],fy=["onClick"],dy=["onClick"],Ay=["onClick"],py={key:0,class:"like-icon",src:g0},hy={key:1,class:"like-icon",src:Nl},gy={class:"like-quantity"},my={class:"comments-content"},yy={class:"comments-text"},vy={key:0,class:"comments-reply"},wy=["innerHTML"],by=["src"],Cy={key:1,class:"input-box"},xy=["onClick"],Sy={class:"top flexflex"},Ey=["onUpdate:modelValue","placeholder","onPaste"],ky={key:0,class:"picture-box"},_y={class:"picture"},Ty=["onClick"],Ry=["src"],Ly={class:"bottom flexacenter"},Oy={class:"operate flexacenter"},By=["onClick"],Iy={class:"emoji-box"},Py=["onClick"],My=["onChange"],Ny=["onClick"],Dy=["onClick"],Uy={class:""},Nc=20*1024*1024,Hy={__name:"commentList",props:{token:String},setup(e,{expose:t,emit:n}){en(()=>{});let s=H([]);en(()=>{});const o=n,r=ke("$ajax");ke("$ajaxGET");const i=ke("detailsToken"),l=ke("handleDate"),c=ke("isNeedLogin"),f=ke("handleMsg"),u=ke("uploadImg"),a=ke("handleAnswerText"),p=ke("emojiMaskState"),w=ke("user"),h=ke("goLogin"),A=ke("detailLoading"),C=E=>{P(`https://bbs.gter.net/home.php?mod=space&uid=${E}`)},T=E=>{if(E&&typeof messagePrivateItem=="function"){messagePrivateItem({uin:E});return}else P(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${E}`)},P=E=>{const v=document.createElement("a");v.href=E,v.target="_blank",v.click()},g=H([]);let k=H(0),_=H(0),Q=H(1),V=!1;const ie=()=>{Q.value==0||V||(V=!0,r("/api/comment/lists",{token:i.value,page:Q.value,limit:1500}).then(E=>{if(E.code!=200)return;let v=E.data;if(v.data.forEach((S,I)=>{S.isReplyBoxShow=0,S.child.length>0&&S.child.forEach(ee=>{ee.isReplyBoxShow=0})}),Q.value>1){let S=S;for(let I=0;Ig.length?Q.value+1:0}).finally(()=>{V=!1}))};let K=H({});pn(i,(E,v)=>{E!==v&&(Q.value=1,g.value=[],K.value={},_.value=0,k.value=0,ie())},{immediate:!0});const J=(E,v,S)=>{if(c.value){h();return}he();const I=E.target.files[0];if(!I)return;if(I.size>Nc){f("error","文件大小不能超过 20MB");return}const ee=new FileReader;ee.onload=fe=>{const ue=fe.target.result;u(ue).then(me=>{const F={base64:ue,...me};pt.value?y.value=F:S!=null?g.value[v].child[S].picture=F:v!=null?g.value[v].picture=F:K.value=F,f("success","上传成功")})},ee.readAsDataURL(I)},te=(E,v)=>{v!=null?g.value[E].child[v].picture={}:E!=null?g.value[E].picture={}:K.value={}};let j=H(!1);const re=["😀","😁","😆","😅","😂","😉","😍","🥰","😋","😜","🤪","😎","🤩","🥳","😔","🙁","😭","😡","😳","🤗","🤔","🤭","🤫","😯","😵","🙄","🥴","🤢","🤑","🤠","👌","✌️","🤟","🤘","🤙","👍","👎","✊","👏","🤝","🙏","💪","❤️","💔","🌹","🥀","🎉","🎁","🧧","🌙","⭐","🌍","💌","📬","🚗","🚕","🚲","🛵","🚀","🚁","⛵","🚢","🍎","🍐","🍊","🍉","🍓","🍑","🍔","🍟","🍕","🥪","🍜","🍡","🍨","🍦","🎂","🍰","🍭","🍿","🍩","🧃","🍹"],ae=(E,v)=>{if(c.value){h();return}v!=null?g.value[E].child[v].emojiState=!0:E!=null?g.value[E].emojiState=!0:(he(),At(),j.value=!0),p.value=!0},he=(E,v)=>{g.value.forEach(S=>{S.emojiState=!1,S.child&&S.child.length!=0&&S.child.forEach(I=>{I.emojiState=!1})}),j.value=!1,p.value=!1,L.value=!1};t({closeEmoji:he});const q=(E,v,S)=>{he(),S!=null?(g.value[v].child[S].commentInput||(g.value[v].child[S].commentInput=""),g.value[v].child[S].commentInput+=E):v!=null?(g.value[v].commentInput||(g.value[v].commentInput=""),g.value[v].commentInput+=E):Ce.value+=E},le=E=>{E.target.style.height="auto",E.target.style.height=`${E.target.scrollHeight}px`},X=(E,v,S)=>{if(c.value){h();return}const I=E.clipboardData.items;for(let ee=0;eeNc){f("error","文件大小不能超过 20MB");return}const me=new FileReader;me.onload=F=>{const ve=F.target.result;u(ve).then(Ue=>{const Xe={base64:ve,...Ue};pt.value?y.value=Xe:S!=null?g.value[v].child[S].picture=Xe:v!=null?g.value[v].picture=Xe:K.value=Xe,f("success","上传成功")})},me.readAsDataURL(ue)}}};let Ce=H("");const dt=(E,v)=>{if(c.value){h();return}let S="",I=null,ee=i.value,fe={};v!=null?(S=g.value[E].child[v].commentInput,I=g.value[E].child[v].id,fe=g.value[E].child[v].picture):E!=null?(S=g.value[E].commentInput,I=g.value[E].id,fe=g.value[E].picture):(S=Ce.value,fe=K.value),A.value=!0,r("/api/comment/submit",{content:S,token:ee,parentid:I,image:fe?{aid:fe.aid,url:fe.url}:null}).then(ue=>{if(ue.code!=200){f("error",ue.message);return}let me=ue.data;if(v!=null){let F={id:me.commentid,content:S,isauthor:1,islike:0,likenum:0,reply:{nickname:g.value[E].child[v].nickname},...me,image:fe};g.value[E].child.push(F),g.value[E].childnum++}else if(E!=null){let F={id:me.commentid,content:S,isauthor:1,islike:0,likenum:0,reply:[],...me,image:fe};g.value[E].child.unshift(F),g.value[E].childnum++}else{let F={id:me.commentid,content:S,isauthor:1,islike:0,likenum:0,...me,child:[],image:fe};g.value.unshift(F),Ce.value="",K.value={}}_.value=me.count||0,o("updateAnswers",me.count),At(),f("success",ue.message||"操作成功")}).finally(()=>{A.value=!1})},He=(E,v,S)=>{if(c.value){h();return}r("/api/comment/like",{token:E}).then(I=>{if(I.code!=200)return;let ee=I.data;S!=null?(g.value[v].child[S].islike=ee.status,g.value[v].child[S].likenum=ee.likenum):(g.value[v].islike=ee.status,g.value[v].likenum=ee.likenum),f("success",I.message||"操作成功")})},Fe=(E,v)=>{if(c.value){h();return}At(),v==null?g.value[E].childState=!0:g.value[E].child[v].childState=!0},At=()=>{g.value.forEach(E=>{E.childState=!1,E.commentInput="",E.child&&E.child.length!=0&&E.child.forEach(v=>{v.childState=!1,v.commentInput=""})})},Et=(E,v)=>{const S=g.value[E].id,I=i.value;r("/api/comment/childrenList",{token:I,parentid:S,limit:2e3,page:1,childlimit:3}).then(ee=>{if(ee.code!=200)return;let fe=ee.data,ue=[...g.value[E].child,...fe.data.filter(me=>!g.value[E].child.find(F=>F.id==me.id))];g.value[E].child=ue})},on=ke("handleMenuState"),st=(E,v)=>{if(c.value){h();return}let S="";v===void 0?S=g.value[E].token:S=g.value[E].child[v].token,on(S)},kt=(E,v)=>{v!=null&&g.value[E].child[v].uin>0?g.value[E].child[v].avatarState=!0:v==null&&E!=null&&g.value[E].uin>0&&(g.value[E].avatarState=!0)},Bt=(E,v)=>{v!=null?g.value[E].child[v].avatarState=!1:E!=null&&(g.value[E].avatarState=!1)},It=(E,v,S)=>{r("/api/comment/commentDelete",{token:E}).then(I=>{if(I.code!=200){ci.error(I.message);return}S>=0?(g.value[v].child.splice(S,1),g.value[v].childnum-=1):(_.value-=g.value[v].childnum,g.value.splice(v,1)),_.value-=1})},Ge=()=>{if(c.value){h();return}};let pt=H(!1),Ne="",y=H({}),b=H(""),L=H(!1);const N=H(null),M=(E,v,S)=>{const I=JSON.parse(JSON.stringify(g.value));let ee={};S!=null?ee=I[v].child[S]:ee=I[v],console.log(E,v,S,ee),Ne=ee.token||"",b.value=ee.content||"",y.value=ee.image||{},pt.value=!0,Xt(()=>{console.log("editInput.value",N.value),N.value.style.height=`${N.value.scrollHeight}px`})},D=()=>{y.value={},Ne="",b.value="",pt.value=!1},Z=(E,v)=>{if(c.value){h();return}L.value=!0},W=E=>{he(),b.value+=E},Y=()=>{if(c.value){h();return}const E=y.value;r("/api/comment/commentsEditSubmit",{content:b.value,token:Ne,image:E?{aid:E.aid,url:E.url}:null}).then(v=>{if(v.code!=200){ci.error(v.message);return}g.value.forEach(S=>{S.token==Ne&&(S.content=b.value,S.image=E),S.child&&S.child.forEach(I=>{I.token==Ne&&(I.content=b.value,I.image=E)})}),y.value={},Ne="",pt.value=!1,L.value=!1,ci.success(v.message)})},U=()=>y.value={};return(E,v)=>(R(),B("div",N3,[z(pt)?(R(),B("div",D3,[d("div",U3,[v[23]||(v[23]=d("div",{class:"text"},"编辑评论",-1)),d("div",H3,[d("div",F3,[Ct(d("textarea",{ref_key:"editInputRef",ref:N,class:"input-textarea flex1",maxlength:"500","onUpdate:modelValue":v[0]||(v[0]=S=>Ie(b)?b.value=S:b=S),onFocus:Ge,onInput:le,onPaste:X,placeholder:"说说你的想法或疑问…"},null,544),[[dn,z(b)]])]),z(y).url?(R(),B("div",j3,[d("div",Q3,[d("img",{class:"close",onClick:v[1]||(v[1]=S=>U()),src:xo}),d("img",{class:"img",onClick:v[2]||(v[2]=(...S)=>z(a)&&z(a)(...S)),src:z(y).base64||z(y).url},null,8,q3)])])):oe("",!0),d("div",z3,[d("div",K3,[d("div",{class:Se(["item",{pitch:z(L)}])},[d("img",{class:"icon",src:So,onClick:v[3]||(v[3]=S=>Z()),alt:""}),d("div",V3,[(R(),B(pe,null,Ze(re,S=>d("div",{class:"emoji-icon",key:S,onClick:I=>W(S)},ne(S),9,W3)),64))])],2),d("div",{class:"item flexacenter",onClick:v[5]||(v[5]=S=>Ge())},[d("input",{class:"file",type:"file",onChange:v[4]||(v[4]=S=>J(S)),accept:".png, .jpg, .jpeg"},null,32),v[21]||(v[21]=d("img",{class:"icon",style:{"border-radius":"0"},src:Eo,alt:""},null,-1)),v[22]||(v[22]=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1))])])])]),d("div",G3,[d("div",{class:"btn",onClick:v[6]||(v[6]=S=>D())},"取消"),d("div",{class:"btn send",onClick:v[7]||(v[7]=S=>Y())},"发送")])])])):oe("",!0),d("div",J3,[v[24]||(v[24]=Re(" 回答&讨论 ")),d("span",Y3,ne(z(_)||""),1)]),d("div",Z3,[d("div",X3,[z(w).avatar?(R(),B("img",{key:0,class:"avatar",src:z(w).avatar},null,8,$3)):oe("",!0),Ct(d("textarea",{class:"input-textarea flex1",maxlength:"500","onUpdate:modelValue":v[8]||(v[8]=S=>Ie(Ce)?Ce.value=S:Ce=S),onFocus:Ge,onInput:le,onPaste:X,placeholder:"说说你的看法…"},null,544),[[dn,z(Ce)]])]),z(K).url?(R(),B("div",e6,[d("div",t6,[d("img",{class:"close",onClick:v[9]||(v[9]=S=>te()),src:xo}),d("img",{class:"img",onClick:v[10]||(v[10]=(...S)=>z(a)&&z(a)(...S)),src:z(K).base64||z(K).url},null,8,n6)])])):oe("",!0),d("div",s6,[d("div",o6,[d("div",{class:Se(["item",{pitch:z(j)}])},[d("img",{class:"icon",src:So,onClick:v[11]||(v[11]=S=>ae()),alt:""}),d("div",r6,[(R(),B(pe,null,Ze(re,S=>d("div",{class:"emoji-icon",key:S,onClick:I=>q(S)},ne(S),9,i6)),64))])],2),d("div",{class:"item flexacenter",onClick:v[13]||(v[13]=S=>Ge())},[d("input",{class:"file",type:"file",onChange:v[12]||(v[12]=S=>J(S)),accept:".png, .jpg, .jpeg"},null,32),v[25]||(v[25]=d("img",{class:"icon",style:{"border-radius":"0"},src:Eo,alt:""},null,-1)),v[26]||(v[26]=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1))])]),d("div",{class:"btn",onClick:v[14]||(v[14]=S=>dt())},"发送")])]),d("div",l6,[(R(!0),B(pe,null,Ze(z(g),(S,I)=>{var ee,fe,ue,me;return R(),B("div",{class:"comments-item",key:I},[d("div",a6,[d("div",c6,[d("img",{class:"comments-avatar",onClick:F=>kt(I),src:S.avatar},null,8,u6),d("div",{class:"comments-username",onClick:F=>kt(I)},ne(S.nickname||"匿名用户"),9,f6),d("div",d6,ne(z(l)(S.timestamp)),1),S.isauthor==1?(R(),B("div",A6,"提问者")):oe("",!0),S.groupimage?(R(),B("img",{key:1,class:"comments-title",src:S.groupimage,alt:S.grouptitle,style:{height:"17px"}},null,8,p6)):oe("",!0),S.avatarState?(R(),B("div",h6,[d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:Ee(F=>T(S.uin),["prevent"])},v[27]||(v[27]=[d("img",{class:"avatar-icon",src:ji},null,-1),Re(" 发送信息 ")]),8,g6),d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:Ee(F=>C(S.uin),["prevent"])},v[28]||(v[28]=[d("img",{class:"avatar-icon",src:Qi},null,-1),Re(" TA的主页 ")]),8,m6),d("div",{class:"avatar-mask",onClick:F=>Bt(I)},null,8,y6)])):oe("",!0)]),d("div",v6,[d("div",w6,[v[29]||(v[29]=d("img",{class:"menu-icon",src:Bc},null,-1)),d("div",b6,[d("div",{class:"item flexcenter",onClick:F=>st(I)},"举报",8,C6),z(s).includes("comment.edit")?(R(),B("div",{key:0,class:"item flexcenter",onClick:F=>M(S.token,I)},"编辑",8,x6)):oe("",!0),z(s).includes("comment.delete")?(R(),B("div",{key:1,class:"item flexcenter",onClick:F=>It(S.token,I)},"删除",8,S6)):oe("",!0)])]),d("img",{class:"comment-icon",onClick:F=>Fe(I),src:qi},null,8,E6),d("div",{class:"flexacenter like-box",onClick:F=>He(S.token,I)},[S.islike==0?(R(),B("img",_6)):(R(),B("img",T6)),d("div",R6,ne(S.likenum||""),1)],8,k6)])]),d("div",L6,[d("div",{class:"comments-text",innerHTML:S.content},null,8,O6),(ee=S.image)!=null&&ee.url?(R(),B("img",{key:0,class:"comments-img",onClick:v[15]||(v[15]=(...F)=>z(a)&&z(a)(...F)),src:((fe=S.image)==null?void 0:fe.base64)||((ue=S.image)==null?void 0:ue.url)},null,8,B6)):oe("",!0),S.childState?(R(),B("div",I6,[d("img",{class:"cross",onClick:F=>At(),src:rs},null,8,P6),d("div",M6,[Ct(d("textarea",{class:"input-textarea flex1",maxlength:"500",placeholder:"说说你的看法…","onUpdate:modelValue":F=>S.commentInput=F,onFocus:Ge,onInput:le,onPaste:F=>X(F,I)},null,40,N6),[[dn,S.commentInput]])]),(me=S.picture)!=null&&me.url?(R(),B("div",D6,[d("div",U6,[d("img",{class:"close",onClick:F=>te(I),src:xo},null,8,H6),d("img",{class:"img",onClick:v[16]||(v[16]=(...F)=>z(a)&&z(a)(...F)),src:S.picture.base64||S.picture.url},null,8,F6)])])):oe("",!0),d("div",j6,[d("div",Q6,[d("div",{class:Se(["item",{pitch:S.emojiState}])},[d("img",{class:"icon",src:So,onClick:F=>ae(I),alt:""},null,8,q6),d("div",z6,[(R(),B(pe,null,Ze(re,F=>d("div",{class:"emoji-icon",key:F,onClick:ve=>q(F,I)},ne(F),9,K6)),64))])],2),d("div",{class:"item flexacenter",onClick:v[17]||(v[17]=F=>Ge())},[d("input",{class:"file",type:"file",onChange:F=>J(F,I),accept:".png, .jpg, .jpeg"},null,40,V6),v[30]||(v[30]=d("img",{class:"icon",style:{"border-radius":"0"},src:Eo,alt:""},null,-1)),v[31]||(v[31]=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1))])]),d("div",{class:"btn",onClick:F=>dt(I)},"发送",8,W6)])])):oe("",!0)]),S.child.length!=0?(R(),B("div",G6,[(R(!0),B(pe,null,Ze(S.child,(F,ve)=>{var Ue,Xe,vt,je,De;return R(),B("div",{class:"comments-item",key:F.id},[d("div",J6,[d("div",Y6,[d("img",{class:"comments-avatar",onClick:ge=>kt(I,ve),src:F.avatar},null,8,Z6),d("div",{class:"comments-username",onClick:ge=>kt(I,ve)},ne(F.nickname||"匿名用户"),9,X6),d("div",$6,ne(z(l)(F.timestamp)),1),F.isauthor==1?(R(),B("div",ey,"提问者")):oe("",!0),F.groupimage?(R(),B("img",{key:1,class:"comments-title",src:F.groupimage,alt:F.grouptitle,style:{height:"17px"}},null,8,ty)):oe("",!0),F.avatarState?(R(),B("div",ny,[d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:Ee(ge=>T(F.uin),["prevent"])},v[32]||(v[32]=[d("img",{class:"avatar-icon",src:ji},null,-1),Re(" 发送信息 ")]),8,sy),d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:Ee(ge=>C(F.uin),["prevent"])},v[33]||(v[33]=[d("img",{class:"avatar-icon",src:Qi},null,-1),Re(" TA的主页 ")]),8,oy),d("div",{class:"avatar-mask",onClick:ge=>Bt(I,ve)},null,8,ry)])):oe("",!0)]),d("div",iy,[d("div",ly,[v[34]||(v[34]=d("img",{class:"menu-icon",src:Bc},null,-1)),d("div",ay,[d("div",{class:"item flexcenter",onClick:ge=>st(I,ve)},"举报",8,cy),z(s).includes("comment.edit")?(R(),B("div",{key:0,class:"item flexcenter",onClick:ge=>M(F.token,I,ve)},"编辑",8,uy)):oe("",!0),z(s).includes("comment.delete")?(R(),B("div",{key:1,class:"item flexcenter",onClick:ge=>It(F.token,I,ve)},"删除",8,fy)):oe("",!0)])]),d("img",{class:"comment-icon",onClick:ge=>Fe(I,ve),src:qi},null,8,dy),d("div",{class:"flexacenter like-box",onClick:ge=>He(F.token,I,ve)},[F.islike==0?(R(),B("img",py)):(R(),B("img",hy)),d("div",gy,ne(F.likenum||""),1)],8,Ay)])]),d("div",my,[d("div",yy,[(Ue=F==null?void 0:F.reply)!=null&&Ue.nickname?(R(),B("div",vy,"@"+ne(F.reply.nickname||"匿名用户"),1)):oe("",!0),d("span",{innerHTML:F.content},null,8,wy)]),(Xe=F.image)!=null&&Xe.url?(R(),B("img",{key:0,class:"comments-img",onClick:v[18]||(v[18]=(...ge)=>z(a)&&z(a)(...ge)),src:((vt=F.image)==null?void 0:vt.base64)||((je=F.image)==null?void 0:je.url)},null,8,by)):oe("",!0),F.childState?(R(),B("div",Cy,[d("img",{class:"cross",onClick:ge=>At(),src:rs},null,8,xy),d("div",Sy,[Ct(d("textarea",{class:"input-textarea flex1",maxlength:"500","onUpdate:modelValue":ge=>F.commentInput=ge,placeholder:"回复“"+(F.nickname||"匿名用户")+"”:",onFocus:Ge,onInput:le,onPaste:ge=>X(ge,I,ve)},null,40,Ey),[[dn,F.commentInput]])]),(De=F.picture)!=null&&De.url?(R(),B("div",ky,[d("div",_y,[d("img",{class:"close",onClick:ge=>te(I,ve),src:xo},null,8,Ty),d("img",{class:"img",onClick:v[19]||(v[19]=(...ge)=>z(a)&&z(a)(...ge)),src:F.picture.base64||F.picture.url},null,8,Ry)])])):oe("",!0),d("div",Ly,[d("div",Oy,[d("div",{class:Se(["item",{pitch:F.emojiState}])},[d("img",{class:"icon",src:So,onClick:ge=>ae(I,ve),alt:""},null,8,By),d("div",Iy,[(R(),B(pe,null,Ze(re,ge=>d("div",{class:"emoji-icon",key:ge,onClick:bn=>q(ge,I,ve)},ne(ge),9,Py)),64))])],2),d("div",{class:"item flexacenter",onClick:v[20]||(v[20]=ge=>Ge())},[d("input",{class:"file",type:"file",onChange:ge=>J(ge,I,ve),accept:".png, .jpg, .jpeg"},null,40,My),v[35]||(v[35]=d("img",{class:"icon",style:{"border-radius":"0"},src:Eo,alt:""},null,-1)),v[36]||(v[36]=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1))])]),d("div",{class:"btn",onClick:ge=>dt(I,ve)},"发送",8,Ny)])])):oe("",!0)])])}),128)),S.childnum>S.child.length?(R(),B("div",{key:0,class:"comments-also flexacenter",onClick:F=>Et(I,E.i)},[d("div",Uy,"还有"+ne(S.childnum-S.child.length)+"条回复",1),v[37]||(v[37]=d("img",{class:"also-icon",src:jm},null,-1))],8,Dy)):oe("",!0)])):oe("",!0)])}),128))])]))}};function E0(e,t){return function(){return e.apply(t,arguments)}}const{toString:Fy}=Object.prototype,{getPrototypeOf:Ul}=Object,gr=(e=>t=>{const n=Fy.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ot=e=>(e=e.toLowerCase(),t=>gr(t)===e),mr=e=>t=>typeof t===e,{isArray:bs}=Array,$s=mr("undefined");function jy(e){return e!==null&&!$s(e)&&e.constructor!==null&&!$s(e.constructor)&&yt(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const k0=Ot("ArrayBuffer");function Qy(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&k0(e.buffer),t}const qy=mr("string"),yt=mr("function"),_0=mr("number"),yr=e=>e!==null&&typeof e=="object",zy=e=>e===!0||e===!1,Io=e=>{if(gr(e)!=="object")return!1;const t=Ul(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Ky=Ot("Date"),Vy=Ot("File"),Wy=Ot("Blob"),Gy=Ot("FileList"),Jy=e=>yr(e)&&yt(e.pipe),Yy=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||yt(e.append)&&((t=gr(e))==="formdata"||t==="object"&&yt(e.toString)&&e.toString()==="[object FormData]"))},Zy=Ot("URLSearchParams"),[Xy,$y,e5,t5]=["ReadableStream","Request","Response","Headers"].map(Ot),n5=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ro(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let s,o;if(typeof e!="object"&&(e=[e]),bs(e))for(s=0,o=e.length;s0;)if(o=n[s],t===o.toLowerCase())return o;return null}const Nn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,R0=e=>!$s(e)&&e!==Nn;function Ki(){const{caseless:e}=R0(this)&&this||{},t={},n=(s,o)=>{const r=e&&T0(t,o)||o;Io(t[r])&&Io(s)?t[r]=Ki(t[r],s):Io(s)?t[r]=Ki({},s):bs(s)?t[r]=s.slice():t[r]=s};for(let s=0,o=arguments.length;s(ro(t,(o,r)=>{n&&yt(o)?e[r]=E0(o,n):e[r]=o},{allOwnKeys:s}),e),o5=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),r5=(e,t,n,s)=>{e.prototype=Object.create(t.prototype,s),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},i5=(e,t,n,s)=>{let o,r,i;const l={};if(t=t||{},e==null)return t;do{for(o=Object.getOwnPropertyNames(e),r=o.length;r-- >0;)i=o[r],(!s||s(i,e,t))&&!l[i]&&(t[i]=e[i],l[i]=!0);e=n!==!1&&Ul(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},l5=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const s=e.indexOf(t,n);return s!==-1&&s===n},a5=e=>{if(!e)return null;if(bs(e))return e;let t=e.length;if(!_0(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},c5=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Ul(Uint8Array)),u5=(e,t)=>{const s=(e&&e[Symbol.iterator]).call(e);let o;for(;(o=s.next())&&!o.done;){const r=o.value;t.call(e,r[0],r[1])}},f5=(e,t)=>{let n;const s=[];for(;(n=e.exec(t))!==null;)s.push(n);return s},d5=Ot("HTMLFormElement"),A5=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,s,o){return s.toUpperCase()+o}),Dc=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),p5=Ot("RegExp"),L0=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),s={};ro(n,(o,r)=>{let i;(i=t(o,r,e))!==!1&&(s[r]=i||o)}),Object.defineProperties(e,s)},h5=e=>{L0(e,(t,n)=>{if(yt(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const s=e[n];if(yt(s)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},g5=(e,t)=>{const n={},s=o=>{o.forEach(r=>{n[r]=!0})};return bs(e)?s(e):s(String(e).split(t)),n},m5=()=>{},y5=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function v5(e){return!!(e&&yt(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const w5=e=>{const t=new Array(10),n=(s,o)=>{if(yr(s)){if(t.indexOf(s)>=0)return;if(!("toJSON"in s)){t[o]=s;const r=bs(s)?[]:{};return ro(s,(i,l)=>{const c=n(i,o+1);!$s(c)&&(r[l]=c)}),t[o]=void 0,r}}return s};return n(e,0)},b5=Ot("AsyncFunction"),C5=e=>e&&(yr(e)||yt(e))&&yt(e.then)&&yt(e.catch),O0=((e,t)=>e?setImmediate:t?((n,s)=>(Nn.addEventListener("message",({source:o,data:r})=>{o===Nn&&r===n&&s.length&&s.shift()()},!1),o=>{s.push(o),Nn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",yt(Nn.postMessage)),x5=typeof queueMicrotask<"u"?queueMicrotask.bind(Nn):typeof process<"u"&&process.nextTick||O0,O={isArray:bs,isArrayBuffer:k0,isBuffer:jy,isFormData:Yy,isArrayBufferView:Qy,isString:qy,isNumber:_0,isBoolean:zy,isObject:yr,isPlainObject:Io,isReadableStream:Xy,isRequest:$y,isResponse:e5,isHeaders:t5,isUndefined:$s,isDate:Ky,isFile:Vy,isBlob:Wy,isRegExp:p5,isFunction:yt,isStream:Jy,isURLSearchParams:Zy,isTypedArray:c5,isFileList:Gy,forEach:ro,merge:Ki,extend:s5,trim:n5,stripBOM:o5,inherits:r5,toFlatObject:i5,kindOf:gr,kindOfTest:Ot,endsWith:l5,toArray:a5,forEachEntry:u5,matchAll:f5,isHTMLForm:d5,hasOwnProperty:Dc,hasOwnProp:Dc,reduceDescriptors:L0,freezeMethods:h5,toObjectSet:g5,toCamelCase:A5,noop:m5,toFiniteNumber:y5,findKey:T0,global:Nn,isContextDefined:R0,isSpecCompliantForm:v5,toJSONObject:w5,isAsyncFn:b5,isThenable:C5,setImmediate:O0,asap:x5};function Ae(e,t,n,s,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),s&&(this.request=s),o&&(this.response=o,this.status=o.status?o.status:null)}O.inherits(Ae,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:O.toJSONObject(this.config),code:this.code,status:this.status}}});const B0=Ae.prototype,I0={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{I0[e]={value:e}});Object.defineProperties(Ae,I0);Object.defineProperty(B0,"isAxiosError",{value:!0});Ae.from=(e,t,n,s,o,r)=>{const i=Object.create(B0);return O.toFlatObject(e,i,function(c){return c!==Error.prototype},l=>l!=="isAxiosError"),Ae.call(i,e.message,t,n,s,o),i.cause=e,i.name=e.name,r&&Object.assign(i,r),i};const S5=null;function Vi(e){return O.isPlainObject(e)||O.isArray(e)}function P0(e){return O.endsWith(e,"[]")?e.slice(0,-2):e}function Uc(e,t,n){return e?e.concat(t).map(function(o,r){return o=P0(o),!n&&r?"["+o+"]":o}).join(n?".":""):t}function E5(e){return O.isArray(e)&&!e.some(Vi)}const k5=O.toFlatObject(O,{},null,function(t){return/^is[A-Z]/.test(t)});function vr(e,t,n){if(!O.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=O.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(A,C){return!O.isUndefined(C[A])});const s=n.metaTokens,o=n.visitor||u,r=n.dots,i=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&O.isSpecCompliantForm(t);if(!O.isFunction(o))throw new TypeError("visitor must be a function");function f(h){if(h===null)return"";if(O.isDate(h))return h.toISOString();if(!c&&O.isBlob(h))throw new Ae("Blob is not supported. Use a Buffer instead.");return O.isArrayBuffer(h)||O.isTypedArray(h)?c&&typeof Blob=="function"?new Blob([h]):Buffer.from(h):h}function u(h,A,C){let T=h;if(h&&!C&&typeof h=="object"){if(O.endsWith(A,"{}"))A=s?A:A.slice(0,-2),h=JSON.stringify(h);else if(O.isArray(h)&&E5(h)||(O.isFileList(h)||O.endsWith(A,"[]"))&&(T=O.toArray(h)))return A=P0(A),T.forEach(function(g,k){!(O.isUndefined(g)||g===null)&&t.append(i===!0?Uc([A],k,r):i===null?A:A+"[]",f(g))}),!1}return Vi(h)?!0:(t.append(Uc(C,A,r),f(h)),!1)}const a=[],p=Object.assign(k5,{defaultVisitor:u,convertValue:f,isVisitable:Vi});function w(h,A){if(!O.isUndefined(h)){if(a.indexOf(h)!==-1)throw Error("Circular reference detected in "+A.join("."));a.push(h),O.forEach(h,function(T,P){(!(O.isUndefined(T)||T===null)&&o.call(t,T,O.isString(P)?P.trim():P,A,p))===!0&&w(T,A?A.concat(P):[P])}),a.pop()}}if(!O.isObject(e))throw new TypeError("data must be an object");return w(e),t}function Hc(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(s){return t[s]})}function Hl(e,t){this._pairs=[],e&&vr(e,this,t)}const M0=Hl.prototype;M0.append=function(t,n){this._pairs.push([t,n])};M0.toString=function(t){const n=t?function(s){return t.call(this,s,Hc)}:Hc;return this._pairs.map(function(o){return n(o[0])+"="+n(o[1])},"").join("&")};function _5(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function N0(e,t,n){if(!t)return e;const s=n&&n.encode||_5;O.isFunction(n)&&(n={serialize:n});const o=n&&n.serialize;let r;if(o?r=o(t,n):r=O.isURLSearchParams(t)?t.toString():new Hl(t,n).toString(s),r){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+r}return e}class Fc{constructor(){this.handlers=[]}use(t,n,s){return this.handlers.push({fulfilled:t,rejected:n,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){O.forEach(this.handlers,function(s){s!==null&&t(s)})}}const D0={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},T5=typeof URLSearchParams<"u"?URLSearchParams:Hl,R5=typeof FormData<"u"?FormData:null,L5=typeof Blob<"u"?Blob:null,O5={isBrowser:!0,classes:{URLSearchParams:T5,FormData:R5,Blob:L5},protocols:["http","https","file","blob","url","data"]},Fl=typeof window<"u"&&typeof document<"u",Wi=typeof navigator=="object"&&navigator||void 0,B5=Fl&&(!Wi||["ReactNative","NativeScript","NS"].indexOf(Wi.product)<0),I5=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",P5=Fl&&window.location.href||"http://localhost",M5=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Fl,hasStandardBrowserEnv:B5,hasStandardBrowserWebWorkerEnv:I5,navigator:Wi,origin:P5},Symbol.toStringTag,{value:"Module"})),nt={...M5,...O5};function N5(e,t){return vr(e,new nt.classes.URLSearchParams,Object.assign({visitor:function(n,s,o,r){return nt.isNode&&O.isBuffer(n)?(this.append(s,n.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}function D5(e){return O.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function U5(e){const t={},n=Object.keys(e);let s;const o=n.length;let r;for(s=0;s=n.length;return i=!i&&O.isArray(o)?o.length:i,c?(O.hasOwnProp(o,i)?o[i]=[o[i],s]:o[i]=s,!l):((!o[i]||!O.isObject(o[i]))&&(o[i]=[]),t(n,s,o[i],r)&&O.isArray(o[i])&&(o[i]=U5(o[i])),!l)}if(O.isFormData(e)&&O.isFunction(e.entries)){const n={};return O.forEachEntry(e,(s,o)=>{t(D5(s),o,n,0)}),n}return null}function H5(e,t,n){if(O.isString(e))try{return(t||JSON.parse)(e),O.trim(e)}catch(s){if(s.name!=="SyntaxError")throw s}return(n||JSON.stringify)(e)}const io={transitional:D0,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const s=n.getContentType()||"",o=s.indexOf("application/json")>-1,r=O.isObject(t);if(r&&O.isHTMLForm(t)&&(t=new FormData(t)),O.isFormData(t))return o?JSON.stringify(U0(t)):t;if(O.isArrayBuffer(t)||O.isBuffer(t)||O.isStream(t)||O.isFile(t)||O.isBlob(t)||O.isReadableStream(t))return t;if(O.isArrayBufferView(t))return t.buffer;if(O.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(r){if(s.indexOf("application/x-www-form-urlencoded")>-1)return N5(t,this.formSerializer).toString();if((l=O.isFileList(t))||s.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return vr(l?{"files[]":t}:t,c&&new c,this.formSerializer)}}return r||o?(n.setContentType("application/json",!1),H5(t)):t}],transformResponse:[function(t){const n=this.transitional||io.transitional,s=n&&n.forcedJSONParsing,o=this.responseType==="json";if(O.isResponse(t)||O.isReadableStream(t))return t;if(t&&O.isString(t)&&(s&&!this.responseType||o)){const i=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(t)}catch(l){if(i)throw l.name==="SyntaxError"?Ae.from(l,Ae.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:nt.classes.FormData,Blob:nt.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};O.forEach(["delete","get","head","post","put","patch"],e=>{io.headers[e]={}});const F5=O.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),j5=e=>{const t={};let n,s,o;return e&&e.split(` +`).forEach(function(i){o=i.indexOf(":"),n=i.substring(0,o).trim().toLowerCase(),s=i.substring(o+1).trim(),!(!n||t[n]&&F5[n])&&(n==="set-cookie"?t[n]?t[n].push(s):t[n]=[s]:t[n]=t[n]?t[n]+", "+s:s)}),t},jc=Symbol("internals");function Ns(e){return e&&String(e).trim().toLowerCase()}function Po(e){return e===!1||e==null?e:O.isArray(e)?e.map(Po):String(e)}function Q5(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=n.exec(e);)t[s[1]]=s[2];return t}const q5=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function ui(e,t,n,s,o){if(O.isFunction(s))return s.call(this,t,n);if(o&&(t=n),!!O.isString(t)){if(O.isString(s))return t.indexOf(s)!==-1;if(O.isRegExp(s))return s.test(t)}}function z5(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,s)=>n.toUpperCase()+s)}function K5(e,t){const n=O.toCamelCase(" "+t);["get","set","has"].forEach(s=>{Object.defineProperty(e,s+n,{value:function(o,r,i){return this[s].call(this,t,o,r,i)},configurable:!0})})}let ft=class{constructor(t){t&&this.set(t)}set(t,n,s){const o=this;function r(l,c,f){const u=Ns(c);if(!u)throw new Error("header name must be a non-empty string");const a=O.findKey(o,u);(!a||o[a]===void 0||f===!0||f===void 0&&o[a]!==!1)&&(o[a||c]=Po(l))}const i=(l,c)=>O.forEach(l,(f,u)=>r(f,u,c));if(O.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(O.isString(t)&&(t=t.trim())&&!q5(t))i(j5(t),n);else if(O.isHeaders(t))for(const[l,c]of t.entries())r(c,l,s);else t!=null&&r(n,t,s);return this}get(t,n){if(t=Ns(t),t){const s=O.findKey(this,t);if(s){const o=this[s];if(!n)return o;if(n===!0)return Q5(o);if(O.isFunction(n))return n.call(this,o,s);if(O.isRegExp(n))return n.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Ns(t),t){const s=O.findKey(this,t);return!!(s&&this[s]!==void 0&&(!n||ui(this,this[s],s,n)))}return!1}delete(t,n){const s=this;let o=!1;function r(i){if(i=Ns(i),i){const l=O.findKey(s,i);l&&(!n||ui(s,s[l],l,n))&&(delete s[l],o=!0)}}return O.isArray(t)?t.forEach(r):r(t),o}clear(t){const n=Object.keys(this);let s=n.length,o=!1;for(;s--;){const r=n[s];(!t||ui(this,this[r],r,t,!0))&&(delete this[r],o=!0)}return o}normalize(t){const n=this,s={};return O.forEach(this,(o,r)=>{const i=O.findKey(s,r);if(i){n[i]=Po(o),delete n[r];return}const l=t?z5(r):String(r).trim();l!==r&&delete n[r],n[l]=Po(o),s[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return O.forEach(this,(s,o)=>{s!=null&&s!==!1&&(n[o]=t&&O.isArray(s)?s.join(", "):s)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const s=new this(t);return n.forEach(o=>s.set(o)),s}static accessor(t){const s=(this[jc]=this[jc]={accessors:{}}).accessors,o=this.prototype;function r(i){const l=Ns(i);s[l]||(K5(o,i),s[l]=!0)}return O.isArray(t)?t.forEach(r):r(t),this}};ft.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);O.reduceDescriptors(ft.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(s){this[n]=s}}});O.freezeMethods(ft);function fi(e,t){const n=this||io,s=t||n,o=ft.from(s.headers);let r=s.data;return O.forEach(e,function(l){r=l.call(n,r,o.normalize(),t?t.status:void 0)}),o.normalize(),r}function H0(e){return!!(e&&e.__CANCEL__)}function Cs(e,t,n){Ae.call(this,e??"canceled",Ae.ERR_CANCELED,t,n),this.name="CanceledError"}O.inherits(Cs,Ae,{__CANCEL__:!0});function F0(e,t,n){const s=n.config.validateStatus;!n.status||!s||s(n.status)?e(n):t(new Ae("Request failed with status code "+n.status,[Ae.ERR_BAD_REQUEST,Ae.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function V5(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function W5(e,t){e=e||10;const n=new Array(e),s=new Array(e);let o=0,r=0,i;return t=t!==void 0?t:1e3,function(c){const f=Date.now(),u=s[r];i||(i=f),n[o]=c,s[o]=f;let a=r,p=0;for(;a!==o;)p+=n[a++],a=a%e;if(o=(o+1)%e,o===r&&(r=(r+1)%e),f-i{n=u,o=null,r&&(clearTimeout(r),r=null),e.apply(null,f)};return[(...f)=>{const u=Date.now(),a=u-n;a>=s?i(f,u):(o=f,r||(r=setTimeout(()=>{r=null,i(o)},s-a)))},()=>o&&i(o)]}const $o=(e,t,n=3)=>{let s=0;const o=W5(50,250);return G5(r=>{const i=r.loaded,l=r.lengthComputable?r.total:void 0,c=i-s,f=o(c),u=i<=l;s=i;const a={loaded:i,total:l,progress:l?i/l:void 0,bytes:c,rate:f||void 0,estimated:f&&l&&u?(l-i)/f:void 0,event:r,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(a)},n)},Qc=(e,t)=>{const n=e!=null;return[s=>t[0]({lengthComputable:n,total:e,loaded:s}),t[1]]},qc=e=>(...t)=>O.asap(()=>e(...t)),J5=nt.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,nt.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(nt.origin),nt.navigator&&/(msie|trident)/i.test(nt.navigator.userAgent)):()=>!0,Y5=nt.hasStandardBrowserEnv?{write(e,t,n,s,o,r){const i=[e+"="+encodeURIComponent(t)];O.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),O.isString(s)&&i.push("path="+s),O.isString(o)&&i.push("domain="+o),r===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Z5(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function X5(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function j0(e,t,n){let s=!Z5(t);return e&&s||n==!1?X5(e,t):t}const zc=e=>e instanceof ft?{...e}:e;function Vn(e,t){t=t||{};const n={};function s(f,u,a,p){return O.isPlainObject(f)&&O.isPlainObject(u)?O.merge.call({caseless:p},f,u):O.isPlainObject(u)?O.merge({},u):O.isArray(u)?u.slice():u}function o(f,u,a,p){if(O.isUndefined(u)){if(!O.isUndefined(f))return s(void 0,f,a,p)}else return s(f,u,a,p)}function r(f,u){if(!O.isUndefined(u))return s(void 0,u)}function i(f,u){if(O.isUndefined(u)){if(!O.isUndefined(f))return s(void 0,f)}else return s(void 0,u)}function l(f,u,a){if(a in t)return s(f,u);if(a in e)return s(void 0,f)}const c={url:r,method:r,data:r,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:l,headers:(f,u,a)=>o(zc(f),zc(u),a,!0)};return O.forEach(Object.keys(Object.assign({},e,t)),function(u){const a=c[u]||o,p=a(e[u],t[u],u);O.isUndefined(p)&&a!==l||(n[u]=p)}),n}const Q0=e=>{const t=Vn({},e);let{data:n,withXSRFToken:s,xsrfHeaderName:o,xsrfCookieName:r,headers:i,auth:l}=t;t.headers=i=ft.from(i),t.url=N0(j0(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&i.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):"")));let c;if(O.isFormData(n)){if(nt.hasStandardBrowserEnv||nt.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((c=i.getContentType())!==!1){const[f,...u]=c?c.split(";").map(a=>a.trim()).filter(Boolean):[];i.setContentType([f||"multipart/form-data",...u].join("; "))}}if(nt.hasStandardBrowserEnv&&(s&&O.isFunction(s)&&(s=s(t)),s||s!==!1&&J5(t.url))){const f=o&&r&&Y5.read(r);f&&i.set(o,f)}return t},$5=typeof XMLHttpRequest<"u",ev=$5&&function(e){return new Promise(function(n,s){const o=Q0(e);let r=o.data;const i=ft.from(o.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:f}=o,u,a,p,w,h;function A(){w&&w(),h&&h(),o.cancelToken&&o.cancelToken.unsubscribe(u),o.signal&&o.signal.removeEventListener("abort",u)}let C=new XMLHttpRequest;C.open(o.method.toUpperCase(),o.url,!0),C.timeout=o.timeout;function T(){if(!C)return;const g=ft.from("getAllResponseHeaders"in C&&C.getAllResponseHeaders()),_={data:!l||l==="text"||l==="json"?C.responseText:C.response,status:C.status,statusText:C.statusText,headers:g,config:e,request:C};F0(function(V){n(V),A()},function(V){s(V),A()},_),C=null}"onloadend"in C?C.onloadend=T:C.onreadystatechange=function(){!C||C.readyState!==4||C.status===0&&!(C.responseURL&&C.responseURL.indexOf("file:")===0)||setTimeout(T)},C.onabort=function(){C&&(s(new Ae("Request aborted",Ae.ECONNABORTED,e,C)),C=null)},C.onerror=function(){s(new Ae("Network Error",Ae.ERR_NETWORK,e,C)),C=null},C.ontimeout=function(){let k=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const _=o.transitional||D0;o.timeoutErrorMessage&&(k=o.timeoutErrorMessage),s(new Ae(k,_.clarifyTimeoutError?Ae.ETIMEDOUT:Ae.ECONNABORTED,e,C)),C=null},r===void 0&&i.setContentType(null),"setRequestHeader"in C&&O.forEach(i.toJSON(),function(k,_){C.setRequestHeader(_,k)}),O.isUndefined(o.withCredentials)||(C.withCredentials=!!o.withCredentials),l&&l!=="json"&&(C.responseType=o.responseType),f&&([p,h]=$o(f,!0),C.addEventListener("progress",p)),c&&C.upload&&([a,w]=$o(c),C.upload.addEventListener("progress",a),C.upload.addEventListener("loadend",w)),(o.cancelToken||o.signal)&&(u=g=>{C&&(s(!g||g.type?new Cs(null,e,C):g),C.abort(),C=null)},o.cancelToken&&o.cancelToken.subscribe(u),o.signal&&(o.signal.aborted?u():o.signal.addEventListener("abort",u)));const P=V5(o.url);if(P&&nt.protocols.indexOf(P)===-1){s(new Ae("Unsupported protocol "+P+":",Ae.ERR_BAD_REQUEST,e));return}C.send(r||null)})},tv=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let s=new AbortController,o;const r=function(f){if(!o){o=!0,l();const u=f instanceof Error?f:this.reason;s.abort(u instanceof Ae?u:new Cs(u instanceof Error?u.message:u))}};let i=t&&setTimeout(()=>{i=null,r(new Ae(`timeout ${t} of ms exceeded`,Ae.ETIMEDOUT))},t);const l=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(r):f.removeEventListener("abort",r)}),e=null)};e.forEach(f=>f.addEventListener("abort",r));const{signal:c}=s;return c.unsubscribe=()=>O.asap(l),c}},nv=function*(e,t){let n=e.byteLength;if(n{const o=sv(e,t);let r=0,i,l=c=>{i||(i=!0,s&&s(c))};return new ReadableStream({async pull(c){try{const{done:f,value:u}=await o.next();if(f){l(),c.close();return}let a=u.byteLength;if(n){let p=r+=a;n(p)}c.enqueue(new Uint8Array(u))}catch(f){throw l(f),f}},cancel(c){return l(c),o.return()}},{highWaterMark:2})},wr=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",q0=wr&&typeof ReadableStream=="function",rv=wr&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),z0=(e,...t)=>{try{return!!e(...t)}catch{return!1}},iv=q0&&z0(()=>{let e=!1;const t=new Request(nt.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Vc=64*1024,Gi=q0&&z0(()=>O.isReadableStream(new Response("").body)),er={stream:Gi&&(e=>e.body)};wr&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!er[t]&&(er[t]=O.isFunction(e[t])?n=>n[t]():(n,s)=>{throw new Ae(`Response type '${t}' is not supported`,Ae.ERR_NOT_SUPPORT,s)})})})(new Response);const lv=async e=>{if(e==null)return 0;if(O.isBlob(e))return e.size;if(O.isSpecCompliantForm(e))return(await new Request(nt.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(O.isArrayBufferView(e)||O.isArrayBuffer(e))return e.byteLength;if(O.isURLSearchParams(e)&&(e=e+""),O.isString(e))return(await rv(e)).byteLength},av=async(e,t)=>{const n=O.toFiniteNumber(e.getContentLength());return n??lv(t)},cv=wr&&(async e=>{let{url:t,method:n,data:s,signal:o,cancelToken:r,timeout:i,onDownloadProgress:l,onUploadProgress:c,responseType:f,headers:u,withCredentials:a="same-origin",fetchOptions:p}=Q0(e);f=f?(f+"").toLowerCase():"text";let w=tv([o,r&&r.toAbortSignal()],i),h;const A=w&&w.unsubscribe&&(()=>{w.unsubscribe()});let C;try{if(c&&iv&&n!=="get"&&n!=="head"&&(C=await av(u,s))!==0){let _=new Request(t,{method:"POST",body:s,duplex:"half"}),Q;if(O.isFormData(s)&&(Q=_.headers.get("content-type"))&&u.setContentType(Q),_.body){const[V,ie]=Qc(C,$o(qc(c)));s=Kc(_.body,Vc,V,ie)}}O.isString(a)||(a=a?"include":"omit");const T="credentials"in Request.prototype;h=new Request(t,{...p,signal:w,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:s,duplex:"half",credentials:T?a:void 0});let P=await fetch(h);const g=Gi&&(f==="stream"||f==="response");if(Gi&&(l||g&&A)){const _={};["status","statusText","headers"].forEach(K=>{_[K]=P[K]});const Q=O.toFiniteNumber(P.headers.get("content-length")),[V,ie]=l&&Qc(Q,$o(qc(l),!0))||[];P=new Response(Kc(P.body,Vc,V,()=>{ie&&ie(),A&&A()}),_)}f=f||"text";let k=await er[O.findKey(er,f)||"text"](P,e);return!g&&A&&A(),await new Promise((_,Q)=>{F0(_,Q,{data:k,headers:ft.from(P.headers),status:P.status,statusText:P.statusText,config:e,request:h})})}catch(T){throw A&&A(),T&&T.name==="TypeError"&&/fetch/i.test(T.message)?Object.assign(new Ae("Network Error",Ae.ERR_NETWORK,e,h),{cause:T.cause||T}):Ae.from(T,T&&T.code,e,h)}}),Ji={http:S5,xhr:ev,fetch:cv};O.forEach(Ji,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Wc=e=>`- ${e}`,uv=e=>O.isFunction(e)||e===null||e===!1,K0={getAdapter:e=>{e=O.isArray(e)?e:[e];const{length:t}=e;let n,s;const o={};for(let r=0;r`adapter ${l} `+(c===!1?"is not supported by the environment":"is not available in the build"));let i=t?r.length>1?`since : +`+r.map(Wc).join(` +`):" "+Wc(r[0]):"as no adapter specified";throw new Ae("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return s},adapters:Ji};function di(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Cs(null,e)}function Gc(e){return di(e),e.headers=ft.from(e.headers),e.data=fi.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),K0.getAdapter(e.adapter||io.adapter)(e).then(function(s){return di(e),s.data=fi.call(e,e.transformResponse,s),s.headers=ft.from(s.headers),s},function(s){return H0(s)||(di(e),s&&s.response&&(s.response.data=fi.call(e,e.transformResponse,s.response),s.response.headers=ft.from(s.response.headers))),Promise.reject(s)})}const V0="1.8.3",br={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{br[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}});const Jc={};br.transitional=function(t,n,s){function o(r,i){return"[Axios v"+V0+"] Transitional option '"+r+"'"+i+(s?". "+s:"")}return(r,i,l)=>{if(t===!1)throw new Ae(o(i," has been removed"+(n?" in "+n:"")),Ae.ERR_DEPRECATED);return n&&!Jc[i]&&(Jc[i]=!0,console.warn(o(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(r,i,l):!0}};br.spelling=function(t){return(n,s)=>(console.warn(`${s} is likely a misspelling of ${t}`),!0)};function fv(e,t,n){if(typeof e!="object")throw new Ae("options must be an object",Ae.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let o=s.length;for(;o-- >0;){const r=s[o],i=t[r];if(i){const l=e[r],c=l===void 0||i(l,r,e);if(c!==!0)throw new Ae("option "+r+" must be "+c,Ae.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Ae("Unknown option "+r,Ae.ERR_BAD_OPTION)}}const Mo={assertOptions:fv,validators:br},Ut=Mo.validators;let Qn=class{constructor(t){this.defaults=t,this.interceptors={request:new Fc,response:new Fc}}async request(t,n){try{return await this._request(t,n)}catch(s){if(s instanceof Error){let o={};Error.captureStackTrace?Error.captureStackTrace(o):o=new Error;const r=o.stack?o.stack.replace(/^.+\n/,""):"";try{s.stack?r&&!String(s.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(s.stack+=` +`+r):s.stack=r}catch{}}throw s}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Vn(this.defaults,n);const{transitional:s,paramsSerializer:o,headers:r}=n;s!==void 0&&Mo.assertOptions(s,{silentJSONParsing:Ut.transitional(Ut.boolean),forcedJSONParsing:Ut.transitional(Ut.boolean),clarifyTimeoutError:Ut.transitional(Ut.boolean)},!1),o!=null&&(O.isFunction(o)?n.paramsSerializer={serialize:o}:Mo.assertOptions(o,{encode:Ut.function,serialize:Ut.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Mo.assertOptions(n,{baseUrl:Ut.spelling("baseURL"),withXsrfToken:Ut.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=r&&O.merge(r.common,r[n.method]);r&&O.forEach(["delete","get","head","post","put","patch","common"],h=>{delete r[h]}),n.headers=ft.concat(i,r);const l=[];let c=!0;this.interceptors.request.forEach(function(A){typeof A.runWhen=="function"&&A.runWhen(n)===!1||(c=c&&A.synchronous,l.unshift(A.fulfilled,A.rejected))});const f=[];this.interceptors.response.forEach(function(A){f.push(A.fulfilled,A.rejected)});let u,a=0,p;if(!c){const h=[Gc.bind(this),void 0];for(h.unshift.apply(h,l),h.push.apply(h,f),p=h.length,u=Promise.resolve(n);a{if(!s._listeners)return;let r=s._listeners.length;for(;r-- >0;)s._listeners[r](o);s._listeners=null}),this.promise.then=o=>{let r;const i=new Promise(l=>{s.subscribe(l),r=l}).then(o);return i.cancel=function(){s.unsubscribe(r)},i},t(function(r,i,l){s.reason||(s.reason=new Cs(r,i,l),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=s=>{t.abort(s)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new W0(function(o){t=o}),cancel:t}}};function Av(e){return function(n){return e.apply(null,n)}}function pv(e){return O.isObject(e)&&e.isAxiosError===!0}const Yi={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Yi).forEach(([e,t])=>{Yi[t]=e});function G0(e){const t=new Qn(e),n=E0(Qn.prototype.request,t);return O.extend(n,Qn.prototype,t,{allOwnKeys:!0}),O.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return G0(Vn(e,o))},n}const Pe=G0(io);Pe.Axios=Qn;Pe.CanceledError=Cs;Pe.CancelToken=dv;Pe.isCancel=H0;Pe.VERSION=V0;Pe.toFormData=vr;Pe.AxiosError=Ae;Pe.Cancel=Pe.CanceledError;Pe.all=function(t){return Promise.all(t)};Pe.spread=Av;Pe.isAxiosError=pv;Pe.mergeConfig=Vn;Pe.AxiosHeaders=ft;Pe.formToJSON=e=>U0(O.isHTMLForm(e)?new FormData(e):e);Pe.getAdapter=K0.getAdapter;Pe.HttpStatusCode=Yi;Pe.default=Pe;const{Axios:w7,AxiosError:b7,CanceledError:C7,isCancel:x7,CancelToken:S7,VERSION:E7,all:k7,Cancel:_7,isAxiosError:T7,spread:R7,toFormData:L7,AxiosHeaders:O7,HttpStatusCode:B7,formToJSON:I7,getAdapter:P7,mergeConfig:M7}=Pe,hv="$s";function gv(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);const[n,s]=e;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(s!==void 0&&typeof s!="function")throw new Error("[nuxt] [useState] init must be a function: "+s);const o=hv+n,r=We(),i=Lu(r.payload.state,o);if(i.value===void 0&&s){const l=s();if(Ie(l))return r.payload.state[o]=l,l;i.value=l}return i}const mv=""+new URL("logo.DlviZpxD.png",import.meta.url).href,yv="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFqUlEQVR4nN2a200jSxCGa1bwBGh9IlgTAUaAxBtNBGsiWBMBJgJMBGsiYIgAbwQ7vCEBwkSAieCA4I3L7FdmxjK+zaVnBuxPKlWZNUXXP9Xd7vY6UgAbGxtbvu8brOI4Tokfica4EhbS4d86/Pwe3+Z1e3Fx8czzvHvi3MhFgM3NzfLLy8seoaGgCj41gRge/uTi4kLjTMlMAGNM6fHx8ScDrdsWPYHOt2/fmgsLCydZdUYmAqyvrx/4vl8nLGFFoNOkyRQ5shXCSoC1tbVfuIaIlOVz0OLrV1dXJ/hUOFhigjl+7LOwyReAbvDm5uZ2z8/PO5KQxALQ7rqwnRKWsK/EPbZLN7TwsUkkAMUf+L7fkC8M3dC8vLzcJ4xFbAGY78e4mkwHLp2wi4/EwSKZsuJDWoiwg59IpABTWnxIZCc42Fgovonbw6aZI0So40cyVgCKr+JOsVlgBxFa+CFGCmDeP9beEpawWeB+fn5+ddTnhJECsN399b/Ih5ysYHv02B63CT/gYB/g6Fp7e3s7Jpw5OEjtcqJ0pY8hAZj7t7iyzCb3S0tLy/0HKAfrkcHTv6HVWnhhCtVE5AeWBXeO47gC5K3iVrBUkOeQqdCQgJ4A5n3huyYsSwoGEyt0kysivzAbTljBa9KHZd4PXeBgXVj46qj7mzANNwyygh+CwbZxK1gacsnLw9rnYTUJPwhwjQAVwsSQcOjph5j3zvIk+WBveFLGC57UIIy3wXgPCBPDeNuMd5XwXQA93z8/P98SpoKEYwVQTHIRJhav2AigsCOssiO0uwKQzKb9lQ6tuowfi4kvQmTxClPgFleW9Bwx5rpDoAKkbv8+XBLu4sdiokWIW/wxriYW0LXdaeDYtn8/mpSLyu1JBZjxIkQWb/jdp6env779w+rC3/vPQc0q8SmWCSlFKLz4gB2H9rdaTEaRUAR9EsaLeG8Oxes4D1UAj8RbvM4UkscSASdexHvyKD7gRKfA/wQlLHPiiDAJk2/xOr4zFcAnzg3+SCoRTM7FB3RyF0BJKoIppvguhQigxBXBFFi8UpgAELnVKQYBgt1hBcudogSIVXyIKU6EhyIESFR8iClABKZl7rtAquJDTM4idAXI64MQRBZvKBAnXsR78hIBAf5oB7iS/nppHLGK19WeUKJ2B8N78xABAQ6dDC5CB4ldvB9sdQwkcos0/E7WIvB3t1WACgJc8zoLEhcfwmAKF4H7C8fB6wVDR+yvsIdubwcxFDCq+JA4IiiM1xX7aXvDeCuhAK7YJbwjWVkmYCKKD0kgQkfsHtoRY66HAlRxp1gqGHTkpWic4kPIFykCu1eDfAeEqeDL0mX9srQrgIIIHUmpKAMeK4BJWHwIOSeKYCMAuc8YrxHoCUDC1DfDJOxeMBIOQd7UF6555eVKvPclaU8Aw5Nihe2IyHcsMQy2yWD3CXvQVce4mtjhMld38T0s8z6wU5W9oLMcrAeqpm4rBRHauBYm5KmJSFmyoUNuV96pkruCTwV5DnlQDQlwsB7GsgumgKHd6oMACl1QR+HfhLPIDgK08D2GBFAQwUOELcKZgdY/o/WNDDBSgODbojbhd2wWeGDfr+i+LwOMFEBhpa3iTrGph6e/zdP3ZARjBVAQoYnbw6YWij+k+IaMYaIACiK4YndO+ExOWPRqMoFIARQWxRaL4k/CaSKyeCWWAMqUdUKs4pXYAiiIMA1rwhHF1/GxSCSAgghVnCtfb4t8wGoU38LHJrEAin5OeHl5cVkXtnj56bDS/+HoXPOCA04SUgkQwuJYR4SGfF433HG0bYRH2zRYCaAYDlBceKgQdV4WJYR14SHWAoSYdyFqgRA/sDy4ofBmFoWHZCZAP8FVe004u2O2Yuh/wHbn5uZaoz7L25KLAP3ogvn6+moQxFBImQ7Z4sfjeOA9bbzH+9ocYNp5FN3PP2o7eJ3ygAdFAAAAAElFTkSuQmCC",vv="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAkBQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03KISwAAAL90Uk5TAA9Ne6PBzN3Qxa2GWxwTbMb82oQnIJH3xA2O+9yfdlNENUFMa5PLtSNA49l5EGHA9m4BUgIzr64MA5nybUXbyhXOJaXWkLMJ/sgLYKoEoir1uwZ/4vEZ/TsR5aFYK130FKCNSyRmdLe2czHwMuw2G/oFXteFVLx4YqZlrKtanIcp2M1cGozz5GMiGPmS6+pDOfidX+nTL+Ys4H25HQp13yYImB/UgEJvsrrVeqhpx2ipLTQHEpfeg+cu7j9PVmTFnY/3AAAAAWJLR0QAiAUdSAAAAAlwSFlzAAAASAAAAEgARslrPgAAAxFJREFUWMPtV/k7VVEUPc/QMxQqUppkKGWI50bPEBqfR+QpLw00oEGZSjRKESGlVCTNc5rncf1r7Xsf38cdj9dvfe2f7l37rHXO3Wefs/dl7L9pmsnD08t7itnH189/6rRJswMCg6ZjnM2YGTwZesisUChstgcvfU7YXIkxb/6CheGLIiKjohe7VrMkhou/dJk4ODYuZBwWn7BcBBOTLMZ8T3E2n2RBjq9IESVSVxrQrWk0Kj3DqubLXEW+rGxdvuBFY3JWawVnDXnXBugJrKMR6zfofJ8NyLVr+/OIn79Rb4YoGlGg6S3cBBQ59INUTAoJGj4LbdXmAH0+s6QCW0o0P8C5lRlZ6TZgu6rHSruUZshnbAfNs1PNUQaU7+IQYEHAbjXcF9jDw2d7gdB4JVxhg43vsLBYoFKJVgHefHxxK/cp0f3AAU6BgxQtRbpYqoFDnALCYaBGDtYCdfWcAqwIaJBjEcARXj6LBo7KsUbgGLdAk0rKNQMp3AKBwHE5dgI4yS1QCZySY6dV91bDKGfOyDHKzyxugRYgTI6dBaq5BfyADDnmoGLCXQFbgUwFeA44z8lvs8GZrUDb9W7LiUZXV44SDQcu2PkEKJNblKi1A+jk4l90Amp3mj9VVCuPAFW/XDW8K5FvCcHdQLKqpwe4ZFQWXBHwUa/ypb1UGA0bgCTAdlnD10Blq8qAf6UPuKrpLSD1a7r8in5quEya7jnX6WIr0+HfuEnZMqAzoHaQ1nBL0HJH0s3bl8n0rMJMcRi6reobbqf2AncMgtRFhwrlTcqkFhrvSr1e/z0DhfsPxGG9xQ8noKbOR2MN52CtgQLzkKZy+j5+4mokTDVPnyWKUPpzSeGFYbYNv+wdna28wzxYPfrc3ZMtjEhPucan1v7qtaxTbo0TV+4Ykl6GHIYKjMW8GYmtc5E7/KrGSqHdJfxW4FAgqw95936g5MN46KMrmJ/4BNSs7bOk8MV9hZivkgJvM6Fi376LArZm9xV+SP8zdYXuK/yUfml+uS/A8uhY5XAWAXX7bc6P/xv+P2Z/AEq6ab7rDxu3AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA4LTE4VDE1OjIwOjM1KzA4OjAwHpcN9AAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wOC0xOFQxNToyMDozNSswODowMG/KtUgAAABJdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2kyYzV4MjJydTJsL3NvdXN1by5zdmfTYjJrAAAAAElFTkSuQmCC",wv="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='14px'%20height='14px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-1460%20-88%20)'%3e%3cpath%20d='M%2010.91015625%207.99348958333333%20C%2011.0256076388889%207.87803819444444%2011.0833333333333%207.74131944444444%2011.0833333333333%207.58333333333333%20L%2011.0833333333333%206.41666666666667%20C%2011.0833333333333%206.25868055555555%2011.0256076388889%206.12196180555555%2010.91015625%206.00651041666667%20C%2010.7947048611111%205.89105902777778%2010.6579861111111%205.83333333333333%2010.5%205.83333333333333%20L%208.16666666666667%205.83333333333333%20L%208.16666666666667%203.5%20C%208.16666666666667%203.34201388888889%208.10894097222222%203.20529513888889%207.99348958333333%203.08984375%20C%207.87803819444445%202.97439236111111%207.74131944444445%202.91666666666667%207.58333333333333%202.91666666666667%20L%206.41666666666667%202.91666666666667%20C%206.25868055555556%202.91666666666667%206.12196180555556%202.97439236111111%206.00651041666667%203.08984375%20C%205.89105902777778%203.20529513888889%205.83333333333333%203.34201388888889%205.83333333333333%203.5%20L%205.83333333333333%205.83333333333333%20L%203.5%205.83333333333333%20C%203.34201388888889%205.83333333333333%203.20529513888889%205.89105902777778%203.08984375%206.00651041666667%20C%202.97439236111111%206.12196180555555%202.91666666666667%206.25868055555555%202.91666666666667%206.41666666666667%20L%202.91666666666667%207.58333333333333%20C%202.91666666666667%207.74131944444444%202.97439236111111%207.87803819444444%203.08984375%207.99348958333333%20C%203.20529513888889%208.10894097222222%203.34201388888889%208.16666666666667%203.5%208.16666666666667%20L%205.83333333333333%208.16666666666667%20L%205.83333333333333%2010.5%20C%205.83333333333333%2010.6579861111111%205.89105902777778%2010.7947048611111%206.00651041666667%2010.91015625%20C%206.12196180555556%2011.0256076388889%206.25868055555556%2011.0833333333333%206.41666666666667%2011.0833333333333%20L%207.58333333333333%2011.0833333333333%20C%207.74131944444445%2011.0833333333333%207.87803819444445%2011.0256076388889%207.99348958333333%2010.91015625%20C%208.10894097222222%2010.7947048611111%208.16666666666667%2010.6579861111111%208.16666666666667%2010.5%20L%208.16666666666667%208.16666666666667%20L%2010.5%208.16666666666667%20C%2010.6579861111111%208.16666666666667%2010.7947048611111%208.10894097222222%2010.91015625%207.99348958333333%20Z%20M%2013.0611979166667%203.486328125%20C%2013.6870659722222%204.55881076388889%2014%205.73003472222222%2014%207%20C%2014%208.26996527777778%2013.6870659722222%209.44118923611111%2013.0611979166667%2010.513671875%20C%2012.4353298611111%2011.5861545138889%2011.5861545138889%2012.4353298611111%2010.513671875%2013.0611979166667%20C%209.44118923611111%2013.6870659722222%208.26996527777778%2014%207%2014%20C%205.73003472222222%2014%204.55881076388889%2013.6870659722222%203.486328125%2013.0611979166667%20C%202.41384548611111%2012.4353298611111%201.56467013888889%2011.5861545138889%200.938802083333333%2010.513671875%20C%200.312934027777778%209.44118923611111%200%208.26996527777778%200%207%20C%200%205.73003472222222%200.312934027777778%204.55881076388889%200.938802083333333%203.486328125%20C%201.56467013888889%202.41384548611111%202.41384548611111%201.56467013888889%203.486328125%200.938802083333333%20C%204.55881076388889%200.312934027777777%205.73003472222222%200%207%200%20C%208.26996527777778%200%209.44118923611111%200.312934027777777%2010.513671875%200.938802083333333%20C%2011.5861545138889%201.56467013888889%2012.4353298611111%202.41384548611111%2013.0611979166667%203.486328125%20Z%20'%20fill-rule='nonzero'%20fill='%23000000'%20stroke='none'%20transform='matrix(1%200%200%201%201460%2088%20)'%20/%3e%3c/g%3e%3c/svg%3e",Yc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAED0lEQVRYCe2Wu09UQRTGdwlYWWMAIzEhWhCJhRgVAbHzAWil1sT/gKcKLAqG159AYimVgIFSeVOglSYmRhPFEEiIlTQ2sP6+y5zr3OUuLFDqJLPnzHce883MmdmbSPzrLXmQDRgaGjqNfyO9Op1OFyFPuvjVZDK5Dja3tbU10dHR8d3h+4qcCDDxdZL3ku3yvhlxgMwS4nFLS8vMfv57Eujr6zuRn5//goQ3vESf0Sch9BW55vBifMrA6pFnPN9Jxk0Q2fCwiJqVwODg4Hk8J+inXMQYyVIk+xDJkDFgtyogkgK+60wrxDVki4sloMkJmifRcZJsoN/LZTvdhIEYGBioI26UQSF9E/1qHIldBLTtBQUFywRp5Z/y8vJuNjc3r6AfuA0PD5dub29PEVhOX4HERUhEjiMvM6vOHEyTbxxlcuUVcXLcUi56KTs6ItxvEQKqdlgGBYfz/cOu3J9AOcj5wGH1HG+tb48QYNI+Zxxra2ub9h2lc64XSFCVidtYNvnY2CTb/hZ9XGPIPDdcMiTgHplLAnFKSfqN86wEV20s4Nvp26Q7bEE+cSTAu+XHIq+oNqSrhQQw3NmBEl/iqpViOoY9KFp8n7LaLuefkC7MjZPo8o00l1NviEjoNQ1aSACGVx322smIaG1tXSSw1QN7WHU3q20D6zGcPF3t7e1LNvYl8boRatU7IroDwbtOgi9mzJTUxZBPAj2Ff7/5aXJW+szGMTLITVyJ2cIdAChy4JoZ42QmCfPJYfIEV3Ld+RdbnE8gLZCz3vU4mbMn/TiD4zCzBdLLHcwl0A+ylYfsItFuoDP3t918dByqCRvHSeKCXUbaXH8JGIgsiwsWpmrHHp45kK5jeCVFwr8divEbdsu9mwDGOTkzQXhF/GASq3LDakfv5Gb0qkv3fHv6+/vtRnlwoN7WL0cxa4bwCPQlI1As2coKczBJAf2WWWNIPnETB2bpwoIBPujyjTTlBD8DyBTp8KqHBPQZhcOSonBISfqNN/0dJCphX8VVsyc7dBEmm3y4Ke9Dg1PIGewecyzyTvwwe6TiYXkNx2kZkdfj/g8s8CCSvPqke+NiatixeYsPd0AAq5hBTEqH6aj/Zgs7TFMOJn/pYsf9yYVFCAhg4ibECr2QLZ06CgnFKody0b9xPA+RkbaLALugT7AGvDbp5SRY1tFEonIY8F7UKVY56L/QG6mjn5mhkRrwjapatk7VWiocUq+4KSkK6KPvl6lzBc+xUhWcfZR+0+TZ4rISUGJIFEJiBLVeY9f0l6rPbf2xBA8KE5Qw1iOje36Wbm1c2x63cnPYk4A58QjVouvqVRm2l4TMAsQfZRZcXExOBCzQVXQjyWuYpAhpf+Gr6Pqnm2U3Jvx7brH/ZbYd+APZxM/2zgvhdQAAAABJRU5ErkJggg==",Zc="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='6px'%20height='6px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20d='M%203%200%20C%204.68%200%206%201.32%206%203%20C%206%204.68%204.68%206%203%206%20C%201.32%206%200%204.68%200%203%20C%200%201.32%201.32%200%203%200%20Z%20'%20fill-rule='nonzero'%20fill='%23ffffff'%20stroke='none'%20/%3e%3cpath%20d='M%203%200.5%20C%204.4%200.5%205.5%201.6%205.5%203%20C%205.5%204.4%204.4%205.5%203%205.5%20C%201.6%205.5%200.5%204.4%200.5%203%20C%200.5%201.6%201.6%200.5%203%200.5%20Z%20'%20stroke-width='1'%20stroke='%23797979'%20fill='none'%20/%3e%3c/g%3e%3c/svg%3e",bv="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAG+ElEQVR4Ae1bXXLbNhAG/aPX8AZRTxD6BGZOEOUE9nN/JuoJrJ7A6kzbV6snsHwCsycwfYI6J6j8qiRivl0CJEiCECiBkuwpZigusD/ALheLBUgJcUAlG0dh9mMU7XJIJ7vsTO+LlBVfxAeRiRjtpHQklkxxxr87+tm5AbKfo1isxCcoOzLo+HvwV5oa2ntr2pkBWPFMXEH5uFWbgZi04npC9G4AdvWluIHipideqhWIv4NpuigbdgP1agB+6ktxC1XCteoEYraWpgeCoAeZLBLR/BLAjaP8z5j7Q0dar2RHXqVJYdlP0Rigq/LENZesO795NwA/+Uxcd9LkSCSd6D0SezVAR7cv1TjZnwG8xQCZwT2UWjlDe5v/NEKfHkDRfpPytAmTLx4vy6B0/eGGg0pd+ZBTDJE+U3BNRSDugj/SxJW3jc6XB1y1deDQvnCgYRIkSk/YO5zhGiOxuofh/0WuMXLlN9FtbQA5gKFJeE9tiSZ3CEPcYtm9Z+/QEK7g1gaw5vauo+hG15wytKNciodNvGF7AwhsabcrYSf2QLRNmZC9Ic9AnUX6MMDQuTczYWRubmkNEADt5UYGZTuVxPowgFNHFqJ3FtymKGcjbGUA3upuOsSSL+RdY1m3QysxtBMU2BsXuWsNQNFVZnmFZAV427/TQYl7cZ8ytELQ0ZulWA3AiiO6Il+0CXm2yHdDIYqjr7W7R6nMhZtQpqJzR2uG2moA2RkxU3RdWDpNLbguqEvbes7jWYp7Hk8XqblxJ20srZshPJEpmD4RIw4rbHQTkHRxYRJpLwHvDlNkfLnhAzyETFyCKbQzWrAD8QNnkjUS416Agwed3MoC6w9NzIw+wrK0UpSe7vlReVxIywpoc2DJZxQf6wLMU6AelL5aIu/J2nW53ue+6iPTqtAwABPlT0AfaKvrtXqGzn0o8Kp5UtUwANz5ujHerP1Iu22JbMg4jIao7gUVAwA5wjijxlgz8UGuCg0UGvwGQFMPPtvyYFpIrBgAkZYMYCohdlu05SymApasCzz9BxC38Zjk7L8tExcU1NVAiuWNlVuK/xTCck+Biyz4l4D6DUv7hAZaesAXXmddBv/SlScdL5SipQHa3V/RvqZ7sb8pDSDE+WvS0EEXjl2cCfLSYM7mPkPQkyaM3P+NVi/BQDwWqWve2k6b42kTlRYC8nT3XVGvA035dYp19foDjokhT4Xb39nPVLAgYkT9BLe6IEJhwyDGwZ/lMXUrLV6Dw1BTyC2VzyUIGYhHqE5wvZXN+a0mv4JzqGA8WY2M9VB7gbiG7KNK3jSCkRqKq87k+cIMhphjGzuFoS4Uro87eb4eA/roQ8kkdx+Znroi0O9kCBjqEm13ert3GKdLygPa556fXscm5bNfzs7FtyxGFwsxwJseevGhlwGW5iXHoDeUoiP5WuhogmGo93obnSno9QKuT4AcURggLAj9A/Tyc6aLlXP9HspHRftSTDH4KRT6VbWRJ2DuTlG/whVhSqwvzY2cjSfsfwrkhxvVQdD8NmWTeOUl9yM6/VyveIYjNQVc5c5AmBiJTyrLpU6S6hWGsblqtKmGFWekhdI0deAFCuv93skAdVd2Gk3tRYbMOUILrw1nYdsM1f8U6D6u8+4sG3OkygNomTJneJpsuGIkjgMz3XH2KNdxjQNg/UUGHaHln8RW6craPyXYO7RQHpA4djVF5E6M19fWLXJlAksjUVJkLkE1lmDFGJoJPbTiQFcZIPUgrk1E06WP8IGDuTyLUzGpoJYirtR9VuCNygBzn3JrshrncPi0ZY6TiI/YPzxqtHeA40Yy1NeRG/qmvjgGyKWG3PKtNiB/IGVx4+i9HiPYCGs+kERiNEbyM/Q3EE1Sli/nygMIM9PQvkH6LwAZIXQVzAlR1w8uXYUT3YCTMe1ILG+g1aCvQnn9PecBlh4o6GG1oa/Lby1k26HyL9OfSEigS5Iud621zbDszYr6t2wKOCrqVWAM2rRostM+gS7BRfcFrhAXjSaGy8cMu/4cB1V6WqXWFe09YcUAxAfrJ7g1IzchX0cpToRJHT0G5OoN+JyfAuLrKxT55XG4Uq5hABmpRyDoMx6o/nd5pxyD9KqUhgEIS8siomRUW6crjC+sQg/TlGMYpoDUjBOSUw5IlKC83JInWzE/VIMWjSBooBG8Jq84TzBvhExMh9BGJ9CnOK22/BnLyQCkCycxS87hx6geuiEoiE/w1Ge4W4uzAZQUaQgKJpe4Dm25dFZc6dPZAIqR7pS14fx+hOSFDLIvYzwjWM8xBuPLFn28JngrA9QFcpqb8eltDFyEq4/NFT1l+sNEgivd9k8TXg2AgTUKT5n8sIS+NySjlCUQw5bdXlISAZL/KttW2YrM/yu5Bb4DerorwNygw+YAAAAASUVORK5CYII=",es="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='8px'%20height='8px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-924%20-6237%20)'%3e%3cpath%20d='M%20928%206238%20C%20929.68%206238%20931%206239.32%20931%206241%20C%20931%206242.68%20929.68%206244%20928%206244%20C%20926.32%206244%20925%206242.68%20925%206241%20C%20925%206239.32%20926.32%206238%20928%206238%20Z%20'%20fill-rule='nonzero'%20fill='%23fddf6d'%20stroke='none'%20/%3e%3cpath%20d='M%20928%206238%20C%20929.68%206238%20931%206239.32%20931%206241%20C%20931%206242.68%20929.68%206244%20928%206244%20C%20926.32%206244%20925%206242.68%20925%206241%20C%20925%206239.32%20926.32%206238%20928%206238%20Z%20'%20stroke-width='2'%20stroke='%23aaaaaa'%20fill='none'%20/%3e%3c/g%3e%3c/svg%3e",ts="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='8px'%20height='8px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-963%20-6237%20)'%3e%3cpath%20d='M%20967%206238%20C%20968.68%206238%20970%206239.32%20970%206241%20C%20970%206242.68%20968.68%206244%20967%206244%20C%20965.32%206244%20964%206242.68%20964%206241%20C%20964%206239.32%20965.32%206238%20967%206238%20Z%20'%20fill-rule='nonzero'%20fill='%23d7d7d7'%20stroke='none'%20/%3e%3cpath%20d='M%20967%206238%20C%20968.68%206238%20970%206239.32%20970%206241%20C%20970%206242.68%20968.68%206244%20967%206244%20C%20965.32%206244%20964%206242.68%20964%206241%20C%20964%206239.32%20965.32%206238%20967%206238%20Z%20'%20stroke-width='2'%20stroke='%23aaaaaa'%20fill='none'%20/%3e%3c/g%3e%3c/svg%3e",Xc=""+new URL("empty-icon.DUxtcfqq.svg",import.meta.url).href,Cv="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='20px'%20height='20px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-1540%20-229%20)'%3e%3cpath%20d='M%201550%20229%20C%201555.6%20229%201560%20233.4%201560%20239%20C%201560%20244.6%201555.6%20249%201550%20249%20C%201544.4%20249%201540%20244.6%201540%20239%20C%201540%20233.4%201544.4%20229%201550%20229%20Z%20'%20fill-rule='nonzero'%20fill='%23ffffff'%20stroke='none'%20fill-opacity='0'%20/%3e%3cpath%20d='M%201550%20229.5%20C%201555.32%20229.5%201559.5%20233.68%201559.5%20239%20C%201559.5%20244.32%201555.32%20248.5%201550%20248.5%20C%201544.68%20248.5%201540.5%20244.32%201540.5%20239%20C%201540.5%20233.68%201544.68%20229.5%201550%20229.5%20Z%20'%20stroke-width='1'%20stroke='%23797979'%20fill='none'%20/%3e%3c/g%3e%3c/svg%3e",xv="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='13px'%20height='8px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-1296%20-538%20)'%3e%3cpath%20d='M%209.65206473214286%206.26736111111111%20C%2010.6217447916667%205.70486111111111%2011.4281994047619%204.94907407407407%2012.0714285714286%204%20C%2011.3363095238095%202.90740740740741%2010.4149925595238%202.09027777777778%209.30747767857143%201.54861111111111%20C%209.60249255952381%202.03009259259259%209.75%202.55092592592593%209.75%203.11111111111111%20C%209.75%203.96759259259259%209.43201264880952%204.70023148148148%208.79603794642857%205.30902777777778%20C%208.16006324404762%205.91782407407407%207.39471726190476%206.22222222222222%206.5%206.22222222222222%20C%205.60528273809524%206.22222222222222%204.83993675595238%205.91782407407407%204.20396205357143%205.30902777777778%20C%203.56798735119048%204.70023148148148%203.25%203.96759259259259%203.25%203.11111111111111%20C%203.25%202.55092592592593%203.39750744047619%202.03009259259259%203.69252232142857%201.54861111111111%20C%202.58500744047619%202.09027777777778%201.66369047619048%202.90740740740741%200.928571428571428%204%20C%201.5718005952381%204.94907407407407%202.37825520833333%205.70486111111111%203.34793526785714%206.26736111111111%20C%204.31761532738095%206.82986111111111%205.36830357142857%207.11111111111111%206.5%207.11111111111111%20C%207.63169642857143%207.11111111111111%208.68238467261905%206.82986111111111%209.65206473214286%206.26736111111111%20Z%20M%206.74665178571429%201.56944444444444%20C%206.81436011904762%201.50462962962963%206.84821428571429%201.42592592592593%206.84821428571429%201.33333333333333%20C%206.84821428571429%201.24074074074074%206.81436011904762%201.16203703703704%206.74665178571429%201.09722222222222%20C%206.67894345238095%201.03240740740741%206.59672619047619%200.999999999999999%206.5%201%20C%205.89546130952381%200.999999999999999%205.37676711309524%201.20717592592593%204.94391741071429%201.62152777777778%20C%204.51106770833333%202.03587962962963%204.29464285714286%202.53240740740741%204.29464285714286%203.11111111111111%20C%204.29464285714286%203.2037037037037%204.32849702380952%203.28240740740741%204.39620535714286%203.34722222222222%20C%204.46391369047619%203.41203703703704%204.54613095238095%203.44444444444444%204.64285714285714%203.44444444444444%20C%204.73958333333333%203.44444444444444%204.8218005952381%203.41203703703704%204.88950892857143%203.34722222222222%20C%204.95721726190476%203.28240740740741%204.99107142857143%203.2037037037037%204.99107142857143%203.11111111111111%20C%204.99107142857143%202.71296296296296%205.13857886904762%202.37268518518519%205.43359375%202.09027777777778%20C%205.72860863095238%201.80787037037037%206.08407738095238%201.66666666666667%206.5%201.66666666666667%20C%206.59672619047619%201.66666666666667%206.67894345238095%201.63425925925926%206.74665178571429%201.56944444444444%20Z%20M%2012.8549107142857%203.52083333333333%20C%2012.9516369047619%203.68287037037037%2013%203.84259259259259%2013%204%20C%2013%204.15740740740741%2012.9516369047619%204.31712962962963%2012.8549107142857%204.47916666666667%20C%2012.1778273809524%205.54398148148148%2011.2673921130952%206.39699074074074%2010.1236049107143%207.03819444444444%20C%208.97981770833333%207.67939814814815%207.77194940476191%208%206.5%208%20C%205.2280505952381%208%204.02018229166667%207.67824074074074%202.87639508928571%207.03472222222222%20C%201.73260788690476%206.3912037037037%200.822172619047619%205.53935185185185%200.145089285714286%204.47916666666667%20C%200.0483630952380952%204.31712962962963%200%204.15740740740741%200%204%20C%200%203.84259259259259%200.0483630952380952%203.68287037037037%200.145089285714286%203.52083333333333%20C%200.822172619047619%202.46064814814815%201.73260788690476%201.6087962962963%202.87639508928571%200.965277777777778%20C%204.02018229166667%200.321759259259259%205.2280505952381%200%206.5%200%20C%207.77194940476191%200%208.97981770833333%200.321759259259259%2010.1236049107143%200.965277777777778%20C%2011.2673921130952%201.6087962962963%2012.1778273809524%202.46064814814815%2012.8549107142857%203.52083333333333%20Z%20'%20fill-rule='nonzero'%20fill='%23333333'%20stroke='none'%20transform='matrix(1%200%200%201%201296%20538%20)'%20/%3e%3c/g%3e%3c/svg%3e",Sv="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAE8ElEQVR4Ae1a24tPURQexjAxuZVcm1FESqHc80CDkhIpCsULcnlQ3kSUFy9480L+BeWdPGBGQiPEw8wowjAz7nLn+6bZ0/7t+fb5/Y5z5sw+J6vWnHO+vfY+a3177cvZv6mqGjwZgVfvhV6BvoR+h76AXoJuhg6FFlZWILJW6J8IvYWyGdDCyVpE9AUaFbwpY2bMKhID0xBMZ4XBGxJaYF9TFBLOxQzekLCnCARw0vssCHgPbD90AZSBdkNN4ObaBCz3shQRmIDs61Ynso0euzGOXe4eN3gCq3Mi4Xi3CTL3ix27VB6zXGs5BFz5BYDDwpYfeODs78qArAZZEsAVwJVPANjDrrS5AJ5zT8B0EdRzgRHqEvhYgSWGsswA1YPPPBG8FXi1wBJDWRHAiW6l8PaJwAh9FfgwgSWGsiJgHTytFd7yQ0jJaAEOiK8D0qhwfqfA+PV3TeCEFAEdHttEcBYE8MtvvfCSn70fBU5ogsCfCix4aAg8vA41mxn7usrjPfcLZnm07Rs99kHDR+CdHYS5vwuc5ChhoMbOvjYo45CxNXDupyeY1RGOnxJ1nkbYB1nEAPmVZ/egub9cxuN7ot6FMnWCKt4JbzjDm4DtK2fySRHeLvTU2xJRJ1FRmpuLqfDkNNT9vDUO8sNnO/SVAcT1sMAI8ZD0XydBHr/x/PEa9AE0dalHiyegXNLs3rbvf6NsFzRKSKAvc+y2ktzzoHVJlBOVlE2GEcf4ISh3cuzZKKdYfhBaTvbAIKqdtMo4Me+2neE+nWd17dDuMvoO5XEcYVbwhKcSOQCjOG0nsWVGbjJOnR+gF99Bu3PNSyq4ToTNG2iSwOLU7cS7RnMz8hqqtp6A/0nY6yehZ6FMtzgyE8aHoTOgvo1SnPZoy3MEHrhW88ERvqvqGzQOcz5bEnkUOg4amsyHQ+xx1/erdDQpARxC3PWluaTSr7TlGBp0Ceik0yrVLgLnkmELWdxnA733B3EliaFLu3BwJDG19u4Qxpw1XQb5rE57RfVBhzg8Xf+7fOcBNHRFZQptlK1bN4TnZcKJFhLgC0zYSygPBDBG/jLlSlOcDHAr5+l5DpwdLxz2EiBscw0tF94zc5t9GSDsEw8V1WZWmBr/T/DyzjgE+JzNwxygMuAmA0pjEvQREwrOnels4UwTMV8G5KFXRUwSYu+rla4vA2StAoFq/L9DfI8Zoy8D4sQferao8c/055lALAJUGsUhajBs+a2zSLy4Z/wT902CofeqiElC84DWiZKe8U88jSEg2g8GUunPM8rbxsM0CAg5W9QEeB/Bf0iTANNWiFeVAX3jnw7HyYC8TYJTEF+D6JWKCAg5rUVMElK9T8O+CZAPvlWAZZVKqGSp8d+BoNrswOIMAbteHu5VBtxwHS8qASMQKH8LcKVk/LPQR4BK6zxNgtz9kQRXSsY/C30EuBWjnhVZUfZZlKnx/w0v5r/mlAgJyFPPljgf8aAIYPD9/gGTBITYgxGxlS2qgYWaAPuNf7aUxhAo61GGBsPxrjNQ/tLsiiSA6a8ygOvlZ6eFUXhWDZesq06dLB8ZB4+/1PE3U78eyp/f+wkrFl2ZFV7hyUiRCXiI+NSZQA8hnANae+6K+acZYTVC+a+3XtmGEh4SFCkL+K94x6G10EgxewAeHZEpLiF5FZ7/cbPzCHql9x6X//KfgSgG/gK9mIkzqc2oKwAAAABJRU5ErkJggg==",Ev="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAEk0lEQVRoBd2YW6hVVRSGzXtw8pJkYeU5aZqVIWKgYdDxAkUpYqGJgdhDEliKCYqYGfRi2YV6SBQUxKAbPYRXEMQEfSuULkIXFBMpE6zUvKX1/bLH4W+59t5rudfu7O2Af8855hxzjH/MOddcc+0uXZpcutWRf298TwTnwKk6xqmb6814/gecAG2gqWQSbEU+sL6p2EP2CyOvJC6Au0BTSDssY+a9XNsU7CG5q0wCWoU20NDyMOx81t9FP29taxqaPeR2GtnfqLeAddamZFpBQ8o4WPnsLymxFGFfhfcakj2ktoNIQGf/TUZ0g/WdpX679TVEdQwsLoNIYFmC1VD0i9b/TqK/09UtRu4k9b4pjDaajVZhUIpNpzSNJqrP/ooyLO6m3VfhzTJ2/3vz50SMrfM79X4VGHxgtmeoD6xgW9cuBR4PXgQ++6+iV5J76bwEIuGPqD8G9Ix0B7nlhgojbqZvWAnDS6W2gdrS9vgftOu+o2egkoj00ykG2l6HwA/g+1L5Y6k8QqmJukqUQE/wBBgJgqhIKoE88hrGr2QYcD82B0C3DLZhovfIT8AT08FxTAbbQCxp3vI0Y/eDt4EmIqvMxHA3+AXkjRn2fzL2Dq3AcXALKCfKPpZSyxtQ29Fyg3K098E2tmqU2gnargOq+Jms/hdAZBXlZ7Spsw10BZ0l2sZjwUvAH37x3AM6tuFiFD9NNOtPgkaQWyHxNYjJDfJ+VbnC83l+Pcu/0Z+50tN5P7cR+lvg5Hejt4BUeY7WZBJzUi3r3ziYEHrenPx29BurhZ6NwUUbqJV4ttqggvtb8adj08lvRe+dNc4sDD0JPR/zsw6u0U4n0c/AyW9G75XX7wwGXDBHSmJhXic57e/BXkezk/8YvUdOPx3mU6jpn7VwqCQWdfQWW9E9SW/WiKXyQ9Ad1CTJJOR4SU0erx48iiZ9Qzv59eiFvYMexdlfFkAroTtNUaLriJNfg65bQqEyDW8eZEKB3n3r6LaamXyeJTqVIHwwodeiui9dEDVRmSRPAg+YxxPUdZMsSvS2Dcm1NfMk4I6/iWgFlZ7ASHzWZQvJcUjRCbi/FoK0RqBqZdYV0IzcZ858xqz5mqtKwPe9T1ZFp1kTuBMvfc2Tz5g1/6f6ENpbYC6o9ibV97TewCGZE4gB1crHMfAjVB8a5UQr9QnQuyLGHKY+D3R8gFBPin/abkp21qrrzRtkdNFKk1Ya1wLdXsM2WWrrzQBpD+kbNu4r6oXKRrwFmR0Jz4PQ9eb0i1/YprWpbx9oBy5zUGLcWeo134Hc+ZfmfHWpQ9toFfArRhA4XerrTzkV6G+U6PNyJ+0PAskY4H26mRYi2rdOcj76UnASeEDV9S2tbaRPQRcdFto6yY+UGK9ExgLffk+hFyL6wIhAQdJ11RV4AxgMKkkvOheAX0Gaj0vWvpJ6ITIdL8lgoeuk+RSMyBlJL6uXgf4MDl/JUn4LkRV4STqXrodZ+7YW0XP0OjgDkjG+q8Wxj12ecL4X/RE3KKCuk+x94KdWlpdlptA6SfRduhVMyTTi2o2GMFSHwC7QDq5/+RffN6xPYNWQnAAAAABJRU5ErkJggg==",kv="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='16px'%20height='15px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-1406%20-827%20)'%3e%3cpath%20d='M%2015.4615384615385%205.37807183364839%20C%2015.8205128205128%205.43478260869565%2016%205.57971014492754%2016%205.81285444234405%20C%2016%205.95148078134846%2015.9166666666667%206.10270951480781%2015.75%206.26654064272212%20L%2012.2596153846154%209.6124763705104%20L%2013.0865384615385%2014.3383742911153%20C%2013.0929487179487%2014.3824826717076%2013.0961538461538%2014.4454946439824%2013.0961538461538%2014.5274102079395%20C%2013.0961538461538%2014.6597353497164%2013.0625%2014.7715816005041%2012.9951923076923%2014.8629489603025%20C%2012.9278846153846%2014.9543163201008%2012.8301282051282%2015%2012.7019230769231%2015%20C%2012.5801282051282%2015%2012.4519230769231%2014.9621928166352%2012.3173076923077%2014.8865784499055%20L%208%2012.65595463138%20L%203.68269230769231%2014.8865784499055%20C%203.54166666666667%2014.9621928166352%203.41346153846154%2015%203.29807692307692%2015%20C%203.16346153846154%2015%203.0625%2014.9543163201008%202.99519230769231%2014.8629489603025%20C%202.92788461538462%2014.7715816005041%202.89423076923077%2014.6597353497164%202.89423076923077%2014.5274102079395%20C%202.89423076923077%2014.4896030245747%202.90064102564103%2014.4265910522999%202.91346153846154%2014.3383742911153%20L%203.74038461538462%209.6124763705104%20L%200.240384615384615%206.26654064272212%20C%200.0801282051282051%206.09640831758034%200%205.94517958412098%200%205.81285444234405%20C%200%205.57971014492754%200.179487179487179%205.43478260869565%200.538461538461538%205.37807183364839%20L%205.36538461538461%204.68809073724008%20L%207.52884615384615%200.387523629489602%20C%207.65064102564103%200.1291745431632%207.80769230769231%200%208%200%20C%208.19230769230769%200%208.34935897435897%200.1291745431632%208.47115384615385%200.387523629489602%20L%2010.6346153846154%204.68809073724008%20L%2015.4615384615385%205.37807183364839%20Z%20'%20fill-rule='nonzero'%20fill='%23fa6b11'%20stroke='none'%20transform='matrix(1%200%200%201%201406%20827%20)'%20/%3e%3c/g%3e%3c/svg%3e",_v="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAADpUlEQVRoBe2ZO2gVQRSGTXxEo4UJYuEjGkHBoCjaKqIWViKIKFgJVkpANGlErGORSkUURBAFGy3FwkZFfKOJDxBBBG0EwfiM78f3x2wye+7c3b25s5uL5MB/d845M3P+M7MzO7u3blyyNCW7U72fqfE9tVa8wlRUtRuRTKFVJ+gBCvynSqiPE6AOpMlsKjwGinkJNIOKpIXaj0C1pH3t12Zg0m1iP0EXp0SpH/Rq5C+CJYm1R+5UUmnSbyq0od8AS43dq3Zg9Y1ctbZv9HsMZLmFplOv18OjD9sakCgP8Lpkr6FrBLSIq8Ek2lciSuIKcLmo/AVsAV7R6NgFu8hbsxjjZMKcBzaJX9jaLQWRbwR225qI7aetnJOu3UaLfCVYDLQbzQCtwCddGA8AJTggSsBmO2HQl9dFe/0OoFtVA2Xjp+mnaDMkRSYwjaj7wRuQRjLNvz7KoKgENhLwZQDiUWKbi0qggUDHU4g/x38S7AYbgNbDMnAQRITd623sQztcnjOgBXqzDAltHEfBCuCT7Rj1HHGJq6xjhm7FIckrgZlE8B1NtB1qRuQvJ/tw/AaW/Gls2iFjkkcCGqG7wBLQGlgVix5XtK13A9tO+iEgf4nkkcAFolgSt7Bpfy8n9TjOAttOM7anXCPZQyewiz4tCe332vuTZCtO2+4rtm1JjeQLmcAs+vsAXCI6FuuMkybtVHDbvUdfl9ZI/pAJnKE/l8Qn9DYFySBK8iFQ+xdgOcgkoRJYSDR7LOjMxGC40niKC0DJTjNcpbQUKgGd+93Rf1YpkVJq2SwhEtDT9i1wE9iZLXxFteZSWw+/I2BO1DJEApvozCX/Dl2vqaHlHh1Gce5EnYdI4LDTsQLEjrtRoCqvmmX36axygx4eIWS16eSy0UOoWuDuk1hl2areRjUI/SCaWl3ngdDiu1MaQ8yAFpN7vyuZV6HZl+svRALNpvPX6Lo/C5EQCWhqXfnoKnmXQyTwFJI6MkRyPSoUdfUtjkq/SuiMfw50Ab0L5CE+ngOz73NUmkAehG2fPp5BdiEbqFA9xBoolLANNpaAHZGi9bEZKHrEbbyxGbAjUrT+X8yAPh79MCPXYvRaUOcbEvpbTP+dDUgPv+4Lid6o8ngp+Ret8t9WmlwFLsf7bjcdxulWrNXyXjcBvVH5PoXXKvle+OrfzJjovo8+7dUqcfESeX0f8oqy0tToj2/fvyOjlZi46J4Xt9jIu58p8JVIU4lldAx95cL+BRfIP0NGsZjIAAAAAElFTkSuQmCC",$c="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAACWUlEQVRoBe2Zyy4sURSGm7QBI2dESI4WyTFhxuQ8BPEQLhPEROI2FzPxHNIJOZwnOE9gSjsuESNDA9f/a7WS1a2LiC69S/ZK/uy1V7H3vy5VvatWofBaumSaE/4KF8Kd8JSCBdk/K6yRtj57w+FQmBU6hTdlSlcvhbQF6+1ZO1C/H85MeA/a3WRJ+q7Q52yhqf0iVBYWjVhbohB5yNscc0XYS8ZbDA3kn2xHDewfMY3oj3+n/AMlMyhMCiXB5FEKnOFXoOZ92TxoviIUhVCkQ0RWBbhZWZ1Lr94T3LBmZIR8qLImYp7rDER52pjxWHpIkYefFzJREYzvATcxNWiyL+XeJgGOPFardZ9wG8WBHkf0zOmhqv8dsV4c8CUTcvSNt+dYxIFcS3Sg1emLGWh1Bjj7VH/NEiLNONtk7dNbZ6es947rxwjECMQI1EWAx+i4sCx0110LfXojgls4wAtCScijVDhK8HaTV3kiA2MCJfQjZ15QQps54xzpxgjECHy7CPAYzf0LjX2mY2zG9/6ss1zTEIkv9VmH+731Ywbei1DW179FBmq+9mYdsSasX/M1nQxcu0V/Oj1UteSIXaHTRLbfghPptHFCFbidCsb3D0TpgJuBkW5gqLIhYp7rNERpVV64C7Qy6QaGlAm4rAu+zXqmeSdnIYT2fVnwT6VTzWn60blsZaN7SPvDb0AwodGNrVpCZlyU4j30qUrTOZd8Vlgjbf1GdjjO26Y+4tsy0r6nnEIVuvNEfscIegew0YP9JXBjHwiXgv+d0PRLhb3hQKlw7B9OdA0v8gypmLKP2lSLggAAAABJRU5ErkJggg==",Tv="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='16px'%20height='16px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-1195%20-1486%20)'%3e%3cpath%20d='M%202.90909090909091%2011.6363636363636%20L%204.36363636363636%2011.6363636363636%20L%204.36363636363636%2013.0909090909091%20L%202.90909090909091%2013.0909090909091%20L%202.90909090909091%2011.6363636363636%20Z%20M%202.90909090909091%202.90909090909091%20L%204.36363636363636%202.90909090909091%20L%204.36363636363636%204.36363636363636%20L%202.90909090909091%204.36363636363636%20L%202.90909090909091%202.90909090909091%20Z%20M%2011.6363636363636%202.90909090909091%20L%2013.0909090909091%202.90909090909091%20L%2013.0909090909091%204.36363636363636%20L%2011.6363636363636%204.36363636363636%20L%2011.6363636363636%202.90909090909091%20Z%20M%201.45454545454545%2010.1818181818182%20L%201.45454545454545%2014.5340909090909%20L%205.81818181818182%2014.5340909090909%20L%205.81818181818182%2010.1818181818182%20L%201.45454545454545%2010.1818181818182%20Z%20M%201.45454545454545%201.45454545454546%20L%201.45454545454545%205.81818181818182%20L%205.81818181818182%205.81818181818182%20L%205.81818181818182%201.45454545454546%20L%201.45454545454545%201.45454545454546%20Z%20M%2010.1818181818182%201.45454545454546%20L%2010.1818181818182%205.81818181818182%20L%2014.5454545454545%205.81818181818182%20L%2014.5454545454545%201.45454545454546%20L%2010.1818181818182%201.45454545454546%20Z%20M%200%208.72727272727273%20L%207.27272727272727%208.72727272727273%20L%207.27272727272727%2016%20L%200%2016%20L%200%208.72727272727273%20Z%20M%2011.6363636363636%2014.5454545454545%20L%2013.0909090909091%2014.5454545454545%20L%2013.0909090909091%2016%20L%2011.6363636363636%2016%20L%2011.6363636363636%2014.5454545454545%20Z%20M%2014.5454545454545%2014.5454545454545%20L%2016%2014.5454545454545%20L%2016%2016%20L%2014.5454545454545%2016%20L%2014.5454545454545%2014.5454545454545%20Z%20M%2014.5454545454545%208.72727272727273%20L%2016%208.72727272727273%20L%2016%2013.0909090909091%20L%2011.6363636363636%2013.0909090909091%20L%2011.6363636363636%2011.6363636363636%20L%2010.1818181818182%2011.6363636363636%20L%2010.1818181818182%2016%20L%208.72727272727273%2016%20L%208.72727272727273%208.72727272727273%20L%2013.0909090909091%208.72727272727273%20L%2013.0909090909091%2010.1818181818182%20L%2014.5454545454545%2010.1818181818182%20L%2014.5454545454545%208.72727272727273%20Z%20M%200%200%20L%207.27272727272727%200%20L%207.27272727272727%207.27272727272727%20L%200%207.27272727272727%20L%200%200%20Z%20M%208.72727272727273%200%20L%2016%200%20L%2016%207.27272727272727%20L%208.72727272727273%207.27272727272727%20L%208.72727272727273%200%20Z%20'%20fill-rule='nonzero'%20fill='%23000000'%20stroke='none'%20transform='matrix(1%200%200%201%201195%201486%20)'%20/%3e%3c/g%3e%3c/svg%3e",eu=""+new URL("delete-icon.C00hnugk.svg",import.meta.url).href,tu="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='8px'%20height='5px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-33%20-8%20)'%3e%3cpath%20d='M%207.91983967935872%200.515463917525773%20C%207.97327989311957%200.572737686139747%208%200.638602520045818%208%200.713058419243986%20C%208%200.787514318442153%207.97327989311957%200.853379152348224%207.91983967935872%200.910652920962199%20L%204.18436873747495%204.91408934707904%20C%204.1309285237141%204.97136311569301%204.06947227788911%205%204%205%20C%203.93052772211089%205%203.86907147628591%204.97136311569301%203.81563126252505%204.91408934707904%20L%200.0801603206412826%200.910652920962199%20C%200.0267201068804276%200.853379152348224%200%200.787514318442153%200%200.713058419243986%20C%200%200.638602520045818%200.0267201068804276%200.572737686139747%200.0801603206412826%200.515463917525773%20L%200.480961923847695%200.0859106529209624%20C%200.534402137608551%200.0286368843069867%200.595858383433534%200%200.665330661322645%200%20C%200.734802939211757%200%200.79625918503674%200.0286368843069867%200.849699398797595%200.0859106529209624%20L%204%203.46219931271478%20L%207.1503006012024%200.0859106529209624%20C%207.20374081496326%200.0286368843069867%207.26519706078824%200%207.33466933867735%200%20C%207.40414161656647%200%207.46559786239145%200.0286368843069867%207.51903807615231%200.0859106529209624%20L%207.91983967935872%200.515463917525773%20Z%20'%20fill-rule='nonzero'%20fill='%23aaaaaa'%20stroke='none'%20transform='matrix(1%200%200%201%2033%208%20)'%20/%3e%3c/g%3e%3c/svg%3e",ko="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='11px'%20height='8px'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20transform='matrix(1%200%200%201%20-784%20-11798%20)'%3e%3cpath%20d='M%2010.8012903225806%201.1043771043771%20C%2010.9337634408602%201.2300785634119%2011%201.38271604938272%2011%201.56228956228956%20C%2011%201.74186307519641%2010.9337634408602%201.89450056116723%2010.8012903225806%202.02020202020202%20L%205.66322580645161%206.8956228956229%20L%204.69806451612903%207.81144781144781%20C%204.56559139784946%207.9371492704826%204.4047311827957%208%204.21548387096774%208%20C%204.02623655913979%208%203.86537634408602%207.9371492704826%203.73290322580645%207.81144781144781%20L%202.76774193548387%206.8956228956229%20L%200.198709677419355%204.45791245791246%20C%200.066236559139785%204.33221099887766%200%204.17957351290685%200%204%20C%200%203.82042648709315%200.066236559139785%203.66778900112233%200.198709677419355%203.54208754208754%20L%201.16387096774194%202.62626262626263%20C%201.29634408602151%202.50056116722783%201.45720430107527%202.43771043771044%201.64645161290323%202.43771043771044%20C%201.83569892473118%202.43771043771044%201.99655913978495%202.50056116722783%202.12903225806452%202.62626262626263%20L%204.21548387096774%204.61279461279461%20L%208.87096774193548%200.188552188552189%20C%209.00344086021505%200.0628507295173959%209.16430107526882%200%209.35354838709677%200%20C%209.54279569892473%200%209.7036559139785%200.0628507295173959%209.83612903225806%200.188552188552189%20L%2010.8012903225806%201.1043771043771%20Z%20'%20fill-rule='nonzero'%20fill='%23fa6b11'%20stroke='none'%20transform='matrix(1%200%200%201%20784%2011798%20)'%20/%3e%3c/g%3e%3c/svg%3e",Rv="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAECklEQVRoBe1YS2tTQRTOowmND1wYEl26Cc2jWVhXBUvEqlDqMq2KCzdaf4ArcSEIWlB3LkTpqq0IAQVRd2pUbFwY+kif2bRQKDTGhViTJsbE76QzdW7M497k5uaCGbg9Z+bOPef7zpyZnozB0G7tCPzfETC2mr7f73fk8/mbhUJhw+Px3AmFQr+VYGopAQb+DQD7GOiQ3W6/EA6Hc3JJmOVOVHteGfDkwptKpdxYiedra2t5OT5NciapPcfn8zmRNu9gl0c+I/gIJpPJ8WAwKCu4siYJxhtWKfLId0obLzP2E3LAaDTGIM+wMR9IyFoJTQmUSRsCPzg/Px9OJBIRp9P5QyAhK500I1ANPIu6gUg4HI4t9E+zsZokNCEgB3y9JJpOQAn4ekg0lQCdNtiwdNrwDbtlMpkGYrHYBw6WSyLa19e3vbi4WKAxlk5ZqCfZHEqnDMY/sn5RNO0YJfDw8BaPhzksgp+bm5MAoHder/c8jtX15eXlMTaXiwgUIsGbgytcdnBFTakUPI7Qcfg341nnOGAjAP0VHisbm83lcreYvitULyXK5HwKaTS4sLBAqSRpADmEgUk8FMgxHKdXIPOwcRwr8hr6PjzUZrPZbH88Hk/udP/+VZWA1uCJhmoEWgFeNQKtAq8KgVaCb5hAq8E3REAP4OsmoBfwdRHQE3jFBPQGXhEBPYInAlR/1GxdXV0HUa+8x0ReVf5EfwD/+mlM0iqVByjYTmAilQd72QczqG36V1ZWvkkMKOzIKubMZvNt2OVVJUqbwlmA/6ckrgYehF/Cxh6Grwge1WdD4MmWnHLaBOfDzDEJdI1XA4GAhDzA+/HuCZ4OvH8MgpehFwsz9F9A5+CpMDulBnjYrE0AwOjq4wBNFtoQbg0mRRJYlRSAbkI+wA+WEcwtYN/IrioF24rUmsVcd3f3CEA9ZFZXIY8IHibcbvelcteBlPMg1JS0EfzXXgGA7+UfANAN6Nd4H/Li0tKSZCXoHUUec8W0mVEzbQT/tQlgskgggty+jzGRxDDSaYKnU5m0KW7Ycj9GRCD16lVTyOVy2a1WawLGad4mwB/ijrA1iMRd3od8itV6xCLPf0mpdtoIfiRq1VPIYrFQ9DnJKfFLkLmH/nVh7BzA05WhZuDJt+QoFMBwdTd9MEA3BMXW09NjSafTRxHxNEBvYpBuIKhxsk2P/I47BQQAdj9OllF82JvJZI7hfsfGjZRIzcCTXx6xEgwGA0UZQL/jRSWgkm9AMI6BZ52dnaPRaJS+06RVTCGkiKtKlNMA/AXvI7j++ISNHpmenv6qCeISJxUJ2Gy21e3t7Thy3IVnA99NEVjURZ+xuRHk6K8SW/rrUhrhP+1h/SFrI2pHoB2BdgT0EoE/XD0Yrfi3Ps4AAAAASUVORK5CYII=",Lv="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='12px'%20height='12px'%20viewBox='656%208620%2012%2012'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M%20656.5%208620.5%20L%20667.5%208620.5%20L%20667.5%208631.5%20L%20656.5%208631.5%20L%20656.5%208620.5%20Z%20'%20fill-rule='nonzero'%20fill='%23ffffff'%20stroke='none'%20/%3e%3cpath%20d='M%20656.5%208620.5%20L%20667.5%208620.5%20L%20667.5%208631.5%20L%20656.5%208631.5%20L%20656.5%208620.5%20Z%20'%20stroke-width='1'%20stroke='%23797979'%20fill='none'%20/%3e%3c/svg%3e",Ov="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='12px'%20height='12px'%20viewBox='656%208620%2012%2012'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M%20656.5%208620.5%20L%20667.5%208620.5%20L%20667.5%208631.5%20L%20656.5%208631.5%20L%20656.5%208620.5%20Z%20'%20fill-rule='nonzero'%20fill='%23ffffff'%20stroke='none'%20/%3e%3cpath%20d='M%20656.5%208620.5%20L%20667.5%208620.5%20L%20667.5%208631.5%20L%20656.5%208631.5%20L%20656.5%208620.5%20Z%20'%20stroke-width='1'%20stroke='%23797979'%20fill='none'%20/%3e%3cpath%20d='M%20658.571428571429%208626%20L%20661.142857142857%208628.57142857143%20L%20665.428571428571%208622.57142857143%20'%20stroke-width='2.57142857142857'%20stroke='%23797979'%20fill='none'%20/%3e%3c/svg%3e",Bv=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},Iv={name:"#answer-app",async setup(){const e=(m,x)=>(m=m.indexOf("//")>-1?m:l+m,new Promise(function(G,$){Pe.post(m,x,{emulateJSON:!0,withCredentials:!0,headers:{authorization:!1}}).then(function(se){var ye=null;try{ye=typeof se.data=="string"?JSON.parse(se.data):se.data,ye.code==401&&o(),ye.code!=200&&Ye("error",ye.message||"报错了,请重试!!!")}catch{}G(ye)}).catch(se=>{se.response.status==401&&o(),G(se.response.data)})})),t=(m,x)=>(m=m.indexOf("//")>-1?m:l+m,new Promise(function(G,$){Pe.get(m,x,{emulateJSON:!0,withCredentials:!0,headers:{authorization:!1}}).then(function(se){var ye=null;try{ye=typeof se.data=="string"?JSON.parse(se.data):se.data,ye.code==401&&o(),ye.code!=200&&Ye("error",ye.message||"报错了,请重试!!!")}catch{}G(ye)}).catch(se=>{se.response.status==401&&o(),G(se.response.data)})}));Qe("$ajax",e),Qe("$ajaxGET",t);let n=H(!0);Qe("isNeedLogin",n);let s=H(!1);Qe("emojiMaskState",s);const o=()=>{typeof window>"u"||(Object.keys(window.userInfoWin).length!==0&&(window.userInfoWin.uid||window.userInfoWin.uin)?n.value=!1:document.querySelector("#append_parent #fwin_login")||ajax_login())};Qe("goLogin",o);const r=bl();let i=gv("detailsInfoData",()=>{});const l="https://ask.gter.net";let c=H("list");en(()=>{w(),kt(),window.addEventListener("scroll",re),g(),_r&&Tr(),h.value=window.location.origin,a(),i.value&&f(),ia.value++;const m=r.query;m.uniqid&&(c.value="details",W(m.uniqid)),setTimeout(()=>{m.ispublish&&Jl()},500)});const f=()=>{const m=r.query;c.value="details";let x=i.value;Ne.value=x.info||{},y.value=x.isanswered||0,b.value=x.iscollection||0,L.value=x.ismyself||0,N=x.token||"",D.value=x.share||{},c.value="details",E.value=[],v.value=1,Lr(),Ts({uniqid:m.uniqid}),Ls.value=x.seo,jr()};let u=!1;const a=()=>{window.addEventListener("popstate",function(m){const x=r.query;x.keyword&&(ae.value=x.keyword),x.tid&&(st.value=x.tid),x.uniqid?(u=!0,W(x.uniqid)):(c.value="list",_n(),Je.value=null,Ls.value={})})};let p=H({});Qe("user",p);const w=()=>{let m=0,x=setInterval(()=>{Object.keys(window.userInfoWin).length!==0&&(clearInterval(x),p.value=window.userInfoWin,(window.userInfoWin.uid||window.userInfoWin.uin)&&(n.value=!1)),m++,m>=10&&clearInterval(x)},100)};let h=H("");zt(()=>{window.removeEventListener("keydown",Mr),window.removeEventListener("scroll",re)});const A=()=>`${window.location.origin}?uniqid=${Ne.value.uniqid||""}`;let C=H({});const T=m=>{e("/api/user").then(x=>{if(x.code!=200)return;let G=x.data;C.value=G.count,je(m)})};let P=H(!1);const g=()=>{const m=localStorage.getItem("historical-Search");m?te.value=JSON.parse(m)||[]:te.value=[]},k=()=>{ae.value&&(te.value.unshift(ae.value),te.value=[...new Set(te.value)],te.value=te.value.slice(0,10),localStorage.setItem("historical-Search",JSON.stringify(te.value)))},_=()=>{k(),X=1,q.value=[],le=[],xn.value=0,c.value="list",Je.value=null,_n(),Nt.value=!1,En(["uniqid"]),Ts({keyword:ae.value}),V(),Et()},Q=()=>{te.value.length!=0&&(J.value=!0)},V=()=>{setTimeout(()=>J.value=!1,300)},ie=m=>{ae.value=m,_()},K=()=>{ae.value="",X=1,q.value=[],le=[],xn.value=0,c.value="list",_n(),Je.value=null,Et(),En(["keyword"])};let J=H(!1),te=H([]),j=H(!1);const re=()=>{const m=document.documentElement.scrollTop||document.body.scrollTop,x=document.documentElement.scrollHeight,G=document.documentElement.clientHeight;m+G>=x-40&&c.value=="list"&&Et(),m>115?j.value=!0:j.value=!1};let ae=H(""),he=H(""),q=H([]),le=[],X=1,Ce=H(0),dt=H(!1),He=H(!1),Fe=H(),At=H(0);const Et=()=>{X==0||dt.value||(dt.value=!0,e("/api/lists",{page:X,limit:20,keyword:ae.value,type:st.value,zeroreply:At.value}).then(m=>{if(m.code==401&&o(),m.code!=200)return;let x=m.data;x.data.forEach(G=>{G.content=G.content.replace(/<[^>]*>/g,""),G.content=G.content.replace(/ /g,"")}),q.value=q.value.concat(x.data||[]),le=le.concat(x.data||[]),Ce.value=x.count||0,he.value=ae.value||"",q.value.length>=x.count?X=0:X++,X==0&&q.value.length!=0?He.value=!0:He.value=!1,q.value.length==0?Fe.value=!0:Fe.value=!1,ae.value?P.value=!0:P.value=!1,c.value=="details"&&Ur(),q.value.length==0&&(c.value="list")}).finally(()=>dt.value=!1))};let on=H([]),st=H(null);const kt=()=>{on.value=[],t("/api/common/typeList").then(m=>{if(m.code!=200)return;let x=m.data;on.value=x,on.value.unshift([{id:null,name:"All"}]),Ge()})};let Bt=H(0),It=H(0);const Ge=()=>{let m=document.querySelector("#pageHeader");Bt.value=m.clientHeight+10,It.value=window.innerHeight-Bt.value};let pt=H(!1),Ne=H({}),y=H(0),b=H(0),L=H(0),N="",M=H(""),D=H({}),Z=H(!1);Qe("detailLoading",Z),Qe("detailsToken",M);const W=(m,x,G)=>{Z.value||(Z.value=!0,Ne.value={},E.value=[],v.value=0,e("/api/details",{uniqid:m}).then($=>{if($.code!=200){c.value="list",_n(),Je.value=null;return}let se=$.data;se.info.uniqid=m,Ne.value=se.info||{},y.value=se.isanswered||0,b.value=se.iscollection||0,L.value=se.ismyself||0,N=se.token||"",M.value=se.token||"",D.value=se.share||{},Hr.value=se.islike||0,c.value="details",jr(),x!=null?ao(x):U(se.info,m),E.value=[],v.value=1,Lr(),G&&openIAnswer(),u||Ts({uniqid:m}),u=!1,Ls.value=se.seo,Ao.value={text:"",anonymous:0},Xt(()=>Y()),Ur(m),pt.value=!0}).finally(()=>Z.value=!1))},Y=()=>{document.querySelector(".details-area-box").scrollTo({top:0,behavior:"smooth"})},U=(m,x)=>{var se;if([...q.value].length==0&&P.value==!1&&Nt.value==!1){setTimeout(()=>U(m,x),200);return}let $=!1;if(q.value.forEach((ye,ct)=>{ye.uniqid==x&&(ao(ct),Je.value=ct,$=!0)}),!$){let ye="";((se=m==null?void 0:m.content)==null?void 0:se.indexOf("]*>/g,""),ye=ye.replace(/ /g,"");const ct={answers:m.answers,content:ye,publicationdate:m.publicationdate,title:m.title,typename:m.typename,uniqid:x};q.value.unshift(ct),ao(0)}};let E=H([]),v=H(1);const S=()=>{if(n.value){o();return}e("/api/operate/like",{token:N}).then(m=>{if(m.code!=200)return;let x=m.data;Hr.value=x.status||0,Ne.value.likenum=x.count||0,Ye("success",m.message||"操作成功")})},I=(m=N,x)=>{if(n.value){o();return}e("/api/operate/collect",{token:m}).then(G=>{if(G.code!=200)return;let $=G.data;bn=1,De.value=[],$.type=="askquestioncollection"?(b.value=$.status,Ne.value.collectionnum=$.count):(E.value[x].iscollection=$.status,E.value[x].collectionnum=$.count),Ye("success",G.message||"操作成功"),$.status?C.value.collect++:C.value.collect--})};let ee=H(!1),fe=H(!1),ue=H({});const me=()=>{ue.value.anonymous=ue.value.anonymous==0?1:0},F=m=>{E.value[m].commentState?E.value[m].commentState=!1:E.value[m].commentState=!0,E.value[m].commentList.length==0&&E.value[m].commentnum!=0&&ve(m)},ve=m=>{Xe(m,2).then(x=>{let G=x.data;E.value[m].commentList=E.value[m].commentList.concat(G.data),E.value[m].commentCount=G.count})},Ue=m=>{answerCommentLimit=1e3,Xe(m,1e3).then(x=>{if(x.code!=200)return;let $=x.data.data.slice(1),se=[...E.value[m].commentList,...$.filter(ye=>!E.value[m].commentList.find(ct=>ct.id==ye.id))];E.value[m].commentList=se,E.value[m].showOneCommentState=!1})},Xe=(m,x)=>new Promise((G,$)=>{e("/api/comment/lists",{token:E.value[m].token,limit:x,childlimit:1}).then(se=>{se.code==200&&G(se)})});let vt=H("");const je=m=>{if(n.value){o();return}if(Object.keys(C.value).length===0){T(m);return}m=="collect"?(De.value=[],bn=1,xr()):m=="answers"?(Pt.value=[],xs=1,ql()):m=="questions"&&(Mt.value=[],Es=1,Vl())};let De=H([]),ge=H(0),bn=1,Cr=!1;const xr=()=>{bn==0||Cr||(Cr=!0,e("/api/user/collect",{limit:20,page:bn}).then(m=>{if(m.code!=200)return;let x=m.data;vt.value="collect",x.data.forEach(G=>{if(G.type=="askanswercollection"){let $=G.data.content;G.data.content=jl($)}}),De.value=De.value.concat(x.data),ge.value=x.count,De.value.length!=x.count?bn++:bn=0}).finally(()=>Cr=!1))},jl=m=>{var x=new DOMParser,G=x.parseFromString(m,"text/html"),$=G.querySelector("img");return $?``:G.body.textContent},J0=(m,x)=>{e("/api/user/deleteCollect",{token:m}).then(G=>{G.code==200&&(De.value.splice(x,1),ge.value--,C.value.collect--,Ye("success",G.message||"操作成功"))})},Y0=m=>{const x=m.target;x.scrollHeight-x.scrollTop>=x.clientHeight+10||xr()};let Pt=H([]),Ql=H(0),xs=1,Sr=!1;const ql=()=>{xs==0||Sr||(Sr=!0,e("/api/user/answer",{limit:20,page:xs}).then(m=>{if(m.code!=200)return;let x=m.data;x.data.forEach(G=>{G.popupState=!1}),x.data.forEach(G=>{let $=G.content;G.content=jl($)}),Pt.value=Pt.value.concat(x.data),Ql.value=x.count,Pt.value.length!=x.count?xs++:xs=0,vt.value="answers"}).finally(()=>Sr=!1))},Z0=m=>{const x=m.target;x.scrollHeight-x.scrollTop>=x.clientHeight+10||ql()};let Ss=null;const zl=m=>{Pt.value[m].popupState=!0,Ss==m?(Pt.value[m].popupState=!1,Ss=null):(Pt.value[m].popupState=!0,Ss!=null&&(Pt.value[Ss].popupState=!1),Ss=m)},X0=(m,x,G)=>{e("/api/publish/changeAnonymous",{token:m,anonymous:x}).then($=>{$.code==200&&($.data,Pt.value[G].anonymous=x,zl(G),Ye("success",$.message||"操作成功"))})};let Mt=H([]),Kl=H(0),Es=0,Er=!1;const Vl=()=>{Es==0||Er||(Er=!0,e("/api/user/questions",{limit:20,page:Es}).then(m=>{if(m.code!=200)return;let x=m.data;Mt.value=Mt.value.concat(x.data),Kl.value=x.count,vt.value="questions",Mt.value.length!=x.count?Es++:Es=0}).finally(()=>Er=!1))},$0=m=>{const x=m.target;x.scrollHeight-x.scrollTop>=x.clientHeight+10||Vl()};let ks=null;const Wl=m=>{Mt.value[m].popupState=!0,ks==m?(Mt.value[m].popupState=!1,ks=null):(Mt.value[m].popupState=!0,ks!=null&&(Mt.value[ks].popupState=!1),ks=m)},ed=(m,x,G)=>{e("/api/publish/changeAnonymous",{token:m,anonymous:x}).then($=>{$.code==200&&(Mt.value[G].anonymous=x,Wl(G),Ye("success",$.message||"操作成功"))})};let lo=H(0);const kr=m=>lo.value=m;let Gl=H([]),Cn=H({token:"",title:"",content:"",tags:"",tid:"",anonymous:0});const Jl=()=>{if(n.value){o();return}En(["ispublish"]),e("/api/publish/questions").then(m=>{if(m.code!=200)return;let x=m.data;Cn.value.token=x.token,Gl.value=x.typeList||[],kr(1)})},td=m=>{Cn.value.tid=m,kr(2)},nd=()=>{Cn.value.anonymous=Cn.value.anonymous==0?1:0},sd=()=>{if(n.value){o();return}e("/api/publish/questionsSubmit",Cn.value).then(m=>{if(m.code==200){C.value.questions++,lo.value=0,Cn.value={token:"",title:"",content:"",tags:"",tid:"",anonymous:0},Ye("success",m.message||"操作成功");let x=m.data;W(x.uniqid);return}Ye("error",m.message||"刷新重试!!!")})};let Je=H(null);const ao=m=>{Je.value=m,setTimeout(()=>Tr(),350)};let _r=!1;const Tr=()=>{if(typeof document>"u"){_r=!0;return}let m=document.querySelector(".list-box"),G=m.querySelector(`.item${Je.value}`).offsetTop-It.value/2+136;m.scrollTo({top:G,behavior:"smooth"}),_r=!1},od=()=>{const m=c.value;let x="",G="",$="";return m=="list"?(x="1200px",G="0 auto"):(x="calc((100vw - 1200px) / 2 + 512px)",G="initial"),{width:x,margin:G,height:$}};let xn=H(0),Sn=0,_s=0;const rd=(m,x,G)=>{m==0&&(Sn=0,_s=0);const $=c.value;let se={};return $=="list"?Sn<=_s?(se.top=Sn+"px",Sn+=x==""?107:137,se.left=0):(se.top=_s+"px",_s+=x==""?107:137,se.left="649px"):(se.position="relative",G?(Sn+=G=="vote"?170:137,se.height=G=="vote"?"170px":"137px"):(Sn+=x==""?107:137,se.height=x==""?"107px":"137px"),se.width="100%",se.paddingLeft="calc((100vw - 1210px) / 2)"),m+1==q.value.length&&(xn.value=Math.max(Sn,_s)),se},id=(m,x)=>{const G=c.value;let $={};return G=="list"||($.width="calc(50vw - 88px)",$.height=`calc(100vh - ${q.value.length*128}px - 268px)`,$.paddingLeft="calc((100vw - 1200px) / 2)",$.borderRight="1px solid #ebebeb",$.background="#fff"),$},ld=()=>{const m=c.value;let x={};return m=="list"?x.overflow="visible":x.height=It.value+"px",x},Yl=(m=new Date,x=!0)=>{m=m||null;var G=new Date(m);G=G.getTime();var $=1e3*60,se=$*60,ye=se*24,ct=new Date().getTime(),Yn=ct-G,Dt;if(Yn<0)return"刚刚";var Tn=Yn/ye,Zn=Yn/(se+1),ca=Yn/$;if(Tn>=7){let ht=new Date(G),ua=ht.getFullYear()+"-",fa=(ht.getMonth()+1<10?"0"+(ht.getMonth()+1):ht.getMonth()+1)+"-",da=(ht.getDate()<10?"0"+ht.getDate():ht.getDate())+" ",Od=(ht.getHours()<10?"0"+ht.getHours():ht.getHours())+":",Bd=ht.getMinutes()<10?"0"+ht.getMinutes():ht.getMinutes();x?Dt=""+ua+fa+da+Od+Bd:Dt=""+ua+fa+da}else Tn>=1?Dt=""+Math.round(Tn)+"天前":Zn>=1?Dt=""+Math.round(Zn)+"小时前":ca>=1?Dt=""+Math.round(ca)+"分钟前":Dt="刚刚";return Dt};Qe("handleDate",Yl);let Rr=H(!1),co=H(!1);const ad=()=>{Rr.value=!0,co.value=!0,Zl(N)},Lr=()=>{E.value.forEach(m=>{m.transmitState=!1}),Rr.value=!1,co.value=!1},cd=(m,x)=>{E.value[m].transmitState=!0,co.value=!0,Zl(E.value[m].token)},Zl=m=>{t("/api/operate/share?token="+m)},ud=()=>{if(En(["uniqid"]),Nt.value){ta();return}c.value="list",_n(),Je.value=null,Ls.value={},q.value=JSON.parse(JSON.stringify(le))},fd=m=>{const x=m.target;x.scrollHeight-x.scrollTop>=x.clientHeight+40||Nt.value||Et()},dd=(m,x)=>{const G=(m.clipboardData||m.originalEvent.clipboardData).items;for(const $ of G)if($.type.indexOf("image")===0){m.preventDefault(),Ye("warning","上传图片中");const se=$.getAsFile(),ye=new FileReader;ye.onload=ct=>{const Yn=ct.target.result;Xl(Yn).then(Dt=>{let Tn=null;x=="you"?Tn=document.querySelector(".your-answer-textarea"):Tn=document.querySelector(".question-textarea");let Zn=document.createElement("img");Zn.setAttribute("src",Dt.url),Zn.setAttribute("data-aid",Dt.aid),Tn.appendChild(Zn),x=="you"?$l():Ir(),Ye("success","上传成功")})},ye.readAsDataURL(se)}},Xl=m=>new Promise((x,G)=>{Z.value=!0,e("/api/common/upload",{data:m}).then($=>{if($.code!=200){Ye("error",$.message||"上传失败");return}let se=$.data;x(se)}).finally(()=>Z.value=!1)});Qe("uploadImg",Xl);let Or=H(!1),Br=H(!0);const Ir=()=>{document.querySelector(".question-textarea").innerHTML?Or.value=!1:Or.value=!0},$l=()=>{document.querySelector(".your-answer-textarea").innerHTML?Br.value=!1:Br.value=!0};let Jn=H({});const Ye=(m,x)=>{Jn.value.state=!0,Jn.value.type=m,Jn.value.text=x};Qe("handleMsg",Ye);const Ad=()=>(pd(),c?`box-item-${Jn.value.type}`:"");let ea=null;const pd=()=>{clearTimeout(ea),ea=setTimeout(()=>{Jn.value.state=!1},1e3)};let uo=m=>{navigator.clipboard?uo=()=>{navigator.clipboard.writeText(m),Ye("success","复制成功")}:uo=()=>{var x=document.createElement("input");x.value=m,document.body.appendChild(x),x.select(),document.execCommand("copy"),document.body.removeChild(x),Ye("success","复制成功")},uo()};const Ts=(m={})=>{if(typeof window>"u")return;let x=new URLSearchParams(window.location.search);for(const se in m)x.set(se,m[se]);window.location.pathname.indexOf("index.html")==-1?window.history.pushState({},"",`${window.location.pathname}index.html?${x}`):window.history.pushState({},"",`${window.location.pathname}?${x}`);let G=window.location,$=G.pathname+G.search;window._hmt&&window._hmt.push(["_trackPageview",$]),window._czc&&window._czc.push(["_trackPageview",$])},En=(m=[])=>{if(typeof window>"u")return;let x=new URLSearchParams(window.location.search);m.forEach(G=>{x.delete(G)}),window.history.pushState({},"",`${window.location.pathname}?${x}`)};let Nt=H(!1),Pr=H([]),Vt={};const hd=m=>{if(!m){Ye("error","没有找到相关提问");return}En(["keyword"]),Nt.value||(Vt={total:Ce.value,keywordText:he.value,isSearchMode:P.value,inTheEndState:He.value,type:c.value,pitchIndex:Je.value,listlist:JSON.parse(JSON.stringify(q.value))},P.value=!1,He.value=!1,ae.value="",q.value=JSON.parse(JSON.stringify(Pr.value)),Nt.value=!0,Je.value=null),W(m),vt.value=""},ta=()=>{if(Pr.value=JSON.parse(JSON.stringify(q.value)),P.value=Vt.isSearchMode,he.value=Vt.keywordText,ae.value=Vt.keywordText,Ce.value=Vt.total,c.value=Vt.type,Je.value=Vt.pitchIndex,He.value=Vt.inTheEndState,q.value=JSON.parse(JSON.stringify(Vt.listlist)),Nt.value=!1,Je.value!==null&&Je.value!==void 0){let m=q.value[Je.value].uniqid;W(m)}},gd=m=>{const x=m.target;x.scrollHeight-x.scrollTop,x.clientHeight};let fo=H("");const na=m=>{if(m.target.tagName==="IMG"){var x=m.target.getAttribute("src");fo.value=x,window.addEventListener("keydown",Mr)}};Qe("handleAnswerText",na);const Mr=m=>{m.key==="Escape"&&(fo.value="",window.removeEventListener("keydown",Mr))},md=m=>{st.value=m,X=1,q.value=[],le=[],xn.value=0,Nt.value=!1,c.value="list",_n(),Je.value=null,m!=null?(Ts({tid:m}),En(["uniqid"])):En(["tid","uniqid"]),Et(),xn.value=0},sa=m=>{Nr=m,Dr.value=!0};Qe("handleMenuState",sa);let Nr="";const yd=["广告","辱骂","重复发送","不良信息","其他"];let kn=H([]),Dr=H(!1),oa=H("");const vd=m=>{const x=kn.value.indexOf(m);x===-1?kn.value.push(m):kn.value.splice(x,1)},wd=()=>{kn.value.push(oa.value),e("/api/operate/report",{message:kn.value,token:Nr}).then(m=>{kn.value=[],Nr="",Dr.value=!1,Ye("success","举报成功")})};en(()=>{Af(()=>{lo.value||vt.value||fe.value||ee.value||fo.value?document.body.style.overflow="hidden":document.body.style.overflow="auto"})});let Rs=[],ra=1;const bd=m=>{e("/api/details/relatedlist",{page:ra,limit:20}).then(x=>{if(x.code!=200)return;let G={offer:"Offer",mj:"面经",vote:"投票",thread:"帖子"},$=x.data;$.forEach(se=>{se.typename=G[se.type],se.isrecom=!0}),Rs=Rs.concat($),ra++,Ur(m)})},Ur=m=>{if(Nt.value)return;let x=Math.ceil(le.length/5);if(Rs.length{m&&$.forEach((ye,ct)=>{ye.uniqid==m&&(Je.value=ct,Tr())})})},Cd=["①","②","③"];let Ls=H({}),ia=H(0),Hr=H(0);try{const m=r.query;m.keyword&&(ae.value=m.keyword),m.tid&&(st.value=m.tid),await e("/api/lists",{page:X,limit:20,keyword:ae.value,type:st.value}).then(x=>{if(x.code!=200)return;let G=x.data;G.data.forEach($=>{$.content=$.content.replace(/<[^>]*>/g,""),$.content=$.content.replace(/ /g,"")}),q.value=G.data,le=G.data,Ce.value=G.count||0,he.value=ae.value||"",q.value.length!=G.count?X++:X=0,X==0&&q.value.length!=0?He.value=!0:He.value=!1,q.value.length==0?Fe.value=!0:Fe.value=!1,ae.value?P.value=!0:P.value=!1,Xt(()=>{q.value.length==0&&(c.value="list")})})}catch(m){console.error(m)}pn(ia,(m,x)=>{m===2&&r.query});const xd=m=>{let x=`./index.html?uniqid=${m}`,G=r.query;for(const $ in G)$!="uniqid"&&(x+=`&${$}=${G[$]}`);return x},Sd=()=>{window.location.href=window.location.origin+window.location.pathname};let Ao=H({text:"",anonymous:0});const Ed=()=>{Ao.value.anonymous=Ao.value.anonymous?0:1},kd=m=>{if(n.value){o();return}let x=q.value[m];ue.value={title:x.title,content:x.content,token:x.token,uniqid:x.uniqid,anonymous:0,index:m},ee.value=!0,Xt(()=>Ir())};let Fr=H(!1);const _d=()=>{Ne.value.uin>0&&(Fr.value=!Fr.value)},Td=m=>{if(m&&typeof messagePrivateItem=="function"){messagePrivateItem({uin:m});return}else aa(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${m}`)},la=m=>{aa(`https://bbs.gter.net/home.php?mod=space&uid=${m}`)};Qe("TAHomePag",la);const aa=m=>{const x=document.createElement("a");x.href=m,x.target="_blank",x.click()},jr=()=>{const m=document.querySelector("body .index-footer");m?m.style.display="none":setTimeout(()=>jr(),1e3)},_n=()=>{const m=document.querySelector("body .index-footer");m?m.style.display="block":setTimeout(()=>_n(),1e3)},Rd=()=>{At.value=At.value==0?1:0,X=1,q.value=[],le=[],xn.value=0,Et()},Ld=H([]),Qr=H(null);return{handleUpdateAnswers:m=>{q.value.forEach(x=>{x.uniqid==Ne.value.uniqid&&(x.answers=m)}),le.forEach(x=>{x.uniqid==Ne.value.uniqid&&(x.answers=m)})},commentListRef:Qr,closeEmojiMask:()=>{Qr.value&&Qr.value.closeEmoji()},emojiMaskState:s,isCommentList:pt,commentList:Ld,islike:Hr,handleLookOnly:Rd,zeroreply:At,replaceNumberObj:Cd,closeMyModel:ta,myModelList:Pr,myModelState:Nt,listHeight:xn,bottomTpsStyle:id,TAHomePage:la,sendMessage:Td,avatarState:Fr,openUserInfo:_d,isNeedLogin:n,handleInputYou:$l,openListIAnswer:kd,isListEmptyState:Fe,cutYourAnswerAnonymous:Ed,yourAnswer:Ao,handleLogo:Sd,inTheEndState:He,setItemUrl:xd,seo:Ls,originUrl:h,handleMenuState:sa,reasonList:yd,checkList:kn,alertShow:Dr,alertText:oa,selectRadio:vd,alertSubmit:wd,cutType:md,dialogSrc:fo,answerPage:v,handleDetailsScroll:gd,replaceState:Ts,copyText:uo,boxClass:Ad,questionPlaceholderState:Or,yourAnswerPlaceholderState:Br,handleInput:Ir,handlePaste:dd,itemStyle:rd,listStyle:od,listBoxStyle:ld,myType:vt,type:c,pitchIndex:Je,cut:ao,list:q,keyword:ae,keywordText:he,getList:Et,total:Ce,typeList:on,typePitch:st,getDetails:W,detailsInfo:Ne,detailsIsanswered:y,detailsIscollection:b,detailsIsmyself:L,detailShare:D,detailLoading:Z,answerList:E,operateLike:S,operateCollect:I,IAnswerState:ee,IAnswerEditState:fe,IAnswerInfo:ue,amendIAnswer:me,openCommentState:F,handleAllComment:Ue,myCollectionList:De,myCollectionCount:ge,myQuestionsList:Mt,myQuestionsCount:Kl,myAnswerList:Pt,myAnswerCount:Ql,cutAnswerPopupState:zl,handleDate:Yl,handleCollectionScroll:Y0,handleAnswersScroll:Z0,handleQuestionsScroll:$0,cancelCollection:J0,getMyCollection:xr,questionsSetp:lo,questionsObj:Cn,cutAnonymous:nd,cutQuestionsSetp:kr,cutQuestionsPopupState:Wl,questionsTypeList:Gl,postingIssue:sd,choosingTheme:td,handleMy:je,changeAnonymous:X0,changeAnonymousQuestions:ed,pageHeaderHeight:Bt,pageListHeight:It,questionsTransmitState:Rr,questionsTransmitMaskState:co,closeAllTransmitState:Lr,closeTransmitState:ad,handleAnswerTransmitList:cd,closeDetailMode:ud,tabListFixeState:j,handleListScroll:fd,historicalSearchState:J,historicalSearchList:te,searchFocus:Q,searchBlur:V,searchClick:_,handleClickHistoricalItem:ie,handleClickClear:K,isSearchMode:P,questionsInit:Jl,myCount:C,msg:Jn,myOpenDetails:hd,handleAnswerText:na,getCurrentUrl:A,loading:dt}}},Pv={class:"",id:"answer-app"},Mv={class:"flexacenter",id:"pageHeader"},Nv={class:"flexacenter top"},Dv={href:"./index.html"},Uv={class:"right flexacenter flex1"},Hv={class:"searchInput flexacenter"},Fv={key:0,class:"clear-search flexacenter"},jv={class:"history-list"},Qv=["onClick"],qv={class:"btn-list flexacenter"},zv={class:"tab-list flexacenter"},Kv={key:0,class:"halving-line"},Vv=["onClick"],Wv={class:"flexacenter"},Gv={class:"ellipsis"},Jv=["href"],Yv={class:"issue-title flexcenter"},Zv={class:"issue ellipsis flex1"},Xv={key:0,class:"answer ellipsis"},$v={key:1,class:"answer",style:{height:"auto"}},e4={key:2,class:"answer ellipsis flexacenter"},t4={key:0,class:"value-value"},n4={key:1,class:"value-value"},s4={key:2,class:"value-value"},o4={key:3,class:"value-value"},r4={class:"bottom flexacenter"},i4={class:"typename flexcenter"},l4=["href","onClick"],a4={class:"issue-title flexcenter"},c4={key:0,class:"hot-icon",src:bv},u4={class:"issue ellipsis flex1"},f4={key:0,class:"answer ellipsis"},d4={class:"bottom flexacenter"},A4={key:0,class:"typename flexcenter"},p4={key:1},h4={class:"flexacenter"},g4={class:"quantity"},m4={class:"amount flexacenter"},y4={key:2,class:"empty-box flexcenter"},v4={key:0,class:"empty-hint"},w4={key:1,class:"empty-hint"},b4={class:"details-box flexflex"},C4={key:0,class:"loading-bj flexcenter"},x4={class:"close-box"},S4={class:"details-issue"},E4={key:0,class:"label"},k4={class:"titletitle"},_4=["innerHTML"],T4={class:"info-box flexacenter"},R4=["src"],L4={class:"user-name"},O4={key:1,class:"avatar-box flexflex"},B4={class:"time"},I4={class:"operate-item flexacenter",style:{cursor:"auto"}},P4={class:"operate-box flexacenter"},M4={class:"operate-list flexacenter"},N4={key:0,class:"operate-icon operate-like-icon",src:Sv},D4={key:1,class:"operate-icon operate-like-icon",src:Nl},U4={key:0,class:"operate-icon operate-collect-icon",src:Ev},H4={key:1,class:"operate-icon operate-collect-icon",src:kv},F4={class:"transmit-left transmit-web"},j4={class:"transmit-content"},Q4={class:"transmit-headline"},q4={class:"transmit-url"},z4={class:"transmit-right transmit-mini"},K4={class:"transmit-content flexcenter"},V4=["src"],W4={class:"mobile-phone-check flexcenter"},G4={class:"QRCode-pop flexcenter"},J4=["src"],Y4={key:0,class:"popover-mask my-popover flexcenter"},Z4={class:"popover-box flexflex"},X4={class:"tab-list flexcenter"},$4={class:"quantity"},e8={class:"quantity"},t8={key:0,class:"empty-box flexcenter"},n8=["onClick"],s8={class:"centre flexflex flex1"},o8=["innerHTML"],r8={class:"text ellipsis"},i8={class:"delete-box flexacenter"},l8=["onClick"],a8={class:"centre flexflex flex1"},c8={class:"titletitle ellipsis"},u8={class:"text ellipsis"},f8={class:"delete-box flexacenter"},d8=["onClick"],A8=["onClick"],p8={class:"centre flexflex flex1"},h8={class:"info flexacenter"},g8={class:"name"},m8={class:"time"},y8=["innerHTML"],v8={class:"text ellipsis"},w8={class:"operate-box flexacenter"},b8=["onClick"],C8={class:"text"},x8={key:0,class:"state-popup flexflex"},S8=["onClick"],E8=["onClick"],k8=["onClick"],_8=["onClick"],T8={class:"centre flexflex flex1"},R8={class:"info flexacenter"},L8={class:"name"},O8={class:"time"},B8={class:"titletitle ellipsis"},I8={class:"text flexacenter"},P8={key:0,class:"new-answer flexacenter"},M8={class:"operate-box flexacenter"},N8=["onClick"],D8={class:"text"},U8={key:0,class:"state-popup flexflex"},H8=["onClick"],F8=["onClick"],j8={class:"theme-list flexflex"},Q8=["onClick"],q8={class:"issue-input"},z8={class:"issue-bottom flexacenter"},K8={key:0,class:"option-icon",src:Lv},V8={key:1,class:"option-icon",src:Ov},W8={class:"msg-container"},G8={class:"detail-image flexcenter"},J8=["src"],Y8={class:"alert-form"},Z8={class:"comments reports"},X8={class:"head"},$8={class:"form"},e7={class:"radio-area flexacenter"},t7=["onClick"],n7={class:"text-box"},s7={class:"text-num"},o7={class:"footer"},r7=["disabled"];function i7(e,t,n,s,o,r){const i=Nm,l=Dm,c=Um,f=Fm,u=Hy;return R(),B(pe,null,[t[94]||(t[94]=d("div",{id:"append_parent"},null,-1)),t[95]||(t[95]=d("div",{id:"ajaxwaitid"},null,-1)),d("div",null,[xe(c,null,{default:qt(()=>[xe(i,null,{default:qt(()=>[Re(ne(`${s.seo.title||"问答"} - 寄托天下出国留学网`),1)]),_:1}),xe(l,{name:"keyword",content:s.seo.keyword},null,8,["content"]),xe(l,{name:"description",content:s.seo.description},null,8,["content"])]),_:1}),d("div",Pv,[d("header",Mv,[d("div",Nv,[d("a",Dv,[d("img",{class:"logo",onClick:t[0]||(t[0]=(...a)=>s.handleLogo&&s.handleLogo(...a)),alt:"寄托问答",src:mv})]),d("div",Uv,[d("div",Hv,[Ct(d("input",{class:"input flex1",placeholder:"输入搜索关键词","onUpdate:modelValue":t[1]||(t[1]=a=>s.keyword=a),onKeydown:t[2]||(t[2]=lp(a=>s.searchClick(),["enter"])),onFocus:t[3]||(t[3]=(...a)=>s.searchFocus&&s.searchFocus(...a)),onBlur:t[4]||(t[4]=(...a)=>s.searchBlur&&s.searchBlur(...a))},null,544),[[dn,s.keyword]]),s.isSearchMode?(R(),B("div",Fv,[d("img",{class:"cross-circle-black",onClick:t[5]||(t[5]=a=>s.handleClickClear()),src:yv}),t[49]||(t[49]=d("div",{class:"halving-line"},null,-1))])):oe("",!0),d("img",{class:"input-icon",src:vv,onClick:t[6]||(t[6]=a=>s.searchClick())}),s.historicalSearchState?(R(),B("div",{key:1,class:"history-box",onClick:t[7]||(t[7]=Ee(()=>{},["stop"]))},[t[50]||(t[50]=d("div",{class:"history-title"},"历史搜索",-1)),d("div",jv,[(R(!0),B(pe,null,Ze(s.historicalSearchList,(a,p)=>(R(),B("div",{class:"history-item ellipsis",key:p,onClick:Ee(w=>s.handleClickHistoricalItem(a),["stop"])},ne(a),9,Qv))),128))])])):oe("",!0)]),d("div",qv,[d("div",{class:"item flex1",onClick:t[8]||(t[8]=a=>s.handleMy("collect"))},"我的收藏"),d("div",{class:"item flex1",onClick:t[9]||(t[9]=a=>s.handleMy("questions"))},"我的提问")]),d("div",{class:"add-btn flexcenter",onClick:t[10]||(t[10]=a=>s.questionsInit())},t[51]||(t[51]=[d("img",{class:"add-icon",src:wv},null,-1),Re(" 我要提问 ")]))])]),d("div",{class:Se(["tab-box flexcenter",{"tab-list-fixed":s.tabListFixeState}])},[d("div",zv,[(R(!0),B(pe,null,Ze(s.typeList,(a,p)=>(R(),B(pe,{key:p},[p!==0?(R(),B("div",Kv,"|")):oe("",!0),(R(!0),B(pe,null,Ze(a,w=>(R(),B("div",{class:Se(["item flexcenter",{pitch:s.typePitch==w.id}]),key:w,onClick:h=>s.cutType(w.id)},ne(w.name),11,Vv))),128))],64))),128))])],2)]),d("div",{class:Se(["main flexflex",{"mode-list":s.type=="list"}])},[d("div",{class:"list-box",onScroll:t[15]||(t[15]=(...a)=>s.handleListScroll&&s.handleListScroll(...a)),style:rt({paddingRight:s.type=="list"?0:"15px"})},[d("div",{class:"main-header",style:rt({paddingLeft:s.type=="list"?0:"calc((100vw - 1210px) / 2)"})},[d("div",Wv,[s.myModelState?(R(),B("div",{key:0,class:"search-keyword flexacenter",onClick:t[11]||(t[11]=a=>s.closeMyModel())},t[52]||(t[52]=[d("div",{class:"ellipsis"},"我的收藏/提问",-1),d("img",{class:"search-keyword-cross",src:Yc},null,-1)]))):s.isSearchMode?(R(),B(pe,{key:1},[d("div",{class:"search-keyword flexacenter",onClick:t[12]||(t[12]=a=>s.handleClickClear())},[d("div",Gv,ne(s.keywordText),1),t[53]||(t[53]=d("img",{class:"search-keyword-cross",src:Yc},null,-1))]),d("div",{class:"total grid-item",onClick:t[13]||(t[13]=(...a)=>s.cut&&s.cut(...a))},"共 "+ne(s.total)+" 条搜索结果",1)],64)):(R(),B("div",{key:2,class:"total grid-item",onClick:t[14]||(t[14]=(...a)=>s.cut&&s.cut(...a))},"共 "+ne(s.total)+" 条问答",1))])],4),d("div",{class:"list",id:"list",style:rt([s.listStyle(),{height:s.listHeight+"px"}])},[(R(!0),B(pe,null,Ze(s.list,(a,p)=>(R(),B(pe,{key:a.uniqid},[a.isrecom&&s.type!="list"?(R(),B("a",{key:0,class:Se(["item grid-item flexflex",{pitch:p===s.pitchIndex,upLevel:p===s.pitchIndex-1}]),style:rt(s.itemStyle(p,a.content,a.type)),target:"_blank",href:a.url},[t[55]||(t[55]=d("img",{class:"dot",src:Zc},null,-1)),d("div",{class:"content",style:rt({width:s.type=="list"?"531px":"430px"})},[d("div",Yv,[t[54]||(t[54]=d("div",{class:"recommend flexcenter"},"推荐阅读",-1)),d("div",Zv,ne(a.title),1)]),a.type=="thread"?(R(),B(pe,{key:0},[a.message?(R(),B("div",Xv,ne(a.message),1)):oe("",!0)],64)):a.type=="vote"?(R(),B("div",$v,[(R(!0),B(pe,null,Ze(a.option.slice(0,2),(w,h)=>(R(),B("div",{key:h},ne(s.replaceNumberObj[h]+w),1))),128)),d("div",null,ne(s.replaceNumberObj[2])+" …",1)])):(R(),B("div",e4,[a.profession||a.professional?(R(),B("div",t4,ne(a.profession||a.professional),1)):oe("",!0),a.project||a.degree?(R(),B("div",n4,ne(a.project||a.degree),1)):oe("",!0),a.interviewtime||a.semester?(R(),B("div",s4,ne(a.interviewtime||a.semester),1)):oe("",!0),a.apply_results?(R(),B("div",o4,ne(a.apply_results),1)):oe("",!0)])),d("div",r4,[d("div",i4,ne(a.typename),1)])],4)],14,Jv)):(R(),B("a",{key:1,class:Se(["item grid-item flexflex",[{pitch:p===s.pitchIndex,upLevel:p===s.pitchIndex-1},`item${p}`]]),style:rt(s.itemStyle(p,a.content)),href:s.setItemUrl(a.uniqid),onClick:Ee(w=>s.getDetails(a.uniqid,p),["stop","prevent"])},[t[57]||(t[57]=d("img",{class:"dot",src:Zc},null,-1)),d("div",{class:"content",style:rt({width:s.type=="list"?"531px":"430px"})},[d("div",a4,[a.ishot==1?(R(),B("img",c4)):oe("",!0),d("div",u4,ne(a.title),1)]),a.content?(R(),B("div",f4,ne(a.content),1)):oe("",!0),d("div",d4,[a.typename?(R(),B("div",A4,ne(a.typename),1)):(R(),B("div",p4)),d("div",h4,[d("div",g4,ne(s.handleDate(a.publicationdate,!1))+"提问",1),d("div",m4,[t[56]||(t[56]=d("img",{class:"amount-icon",src:qi,alt:""},null,-1)),Re(" "+ne(a.answers),1)])])])],4)],14,l4))],64))),128))],4),s.inTheEndState?(R(),B("div",{key:0,class:"bottom-tps",style:rt(s.bottomTpsStyle())},"- 到底了 -",4)):oe("",!0),s.myModelState?(R(),B("div",{key:1,class:"bottom-tps",style:rt(s.bottomTpsStyle())},null,4)):oe("",!0),s.isListEmptyState&&s.list.length==0?(R(),B("div",y4,[t[58]||(t[58]=$r('
',2)),s.isSearchMode?(R(),B("div",v4,"没有找到相关结果,请更换搜索关键词")):(R(),B("div",w4,"暂无数据"))])):oe("",!0)],36),s.type=="details"?(R(),B("div",{key:0,class:"details-area-box flexflex",onScroll:t[29]||(t[29]=(...a)=>s.handleDetailsScroll&&s.handleDetailsScroll(...a))},[d("div",b4,[s.detailLoading?(R(),B("div",C4,t[59]||(t[59]=[d("svg",{t:"1642133548066",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2597",width:"200",height:"200"},[d("path",{d:"M512 249.5c-22.5 0-37.5-15-37.5-37.5V99.5c0-22.5 15-37.5 37.5-37.5s37.5 15 37.5 37.5V212c0 22.5-15 37.5-37.5 37.5z m0 712.5c-22.5 0-37.5-15-37.5-37.5V812c0-22.5 15-37.5 37.5-37.5s37.5 15 37.5 37.5v112.5c0 22.5-15 37.5-37.5 37.5zM212 549.5H99.5C77 549.5 62 534.5 62 512s15-37.5 37.5-37.5H212c22.5 0 37.5 15 37.5 37.5s-15 37.5-37.5 37.5z m712.5 0H812c-22.5 0-37.5-15-37.5-37.5s15-37.5 37.5-37.5h112.5c22.5 0 37.5 15 37.5 37.5s-15 37.5-37.5 37.5z m-153.75-150c-11.25 0-26.25-7.5-33.75-18.75-11.25-18.75-3.75-41.25 15-52.5L849.5 272c18.75-11.25 41.25-3.75 52.5 15s3.75 41.25-15 52.5l-97.5 56.25c-3.75 3.75-11.25 3.75-18.75 3.75z m-615 356.25c-11.25 0-26.25-7.5-33.75-18.75-11.25-18.75-3.75-41.25 15-52.5l97.5-56.25c18.75-11.25 41.25-3.75 52.5 15s3.75 41.25-15 52.5L174.5 752c-7.5 3.75-15 3.75-18.75 3.75z m506.25-465c-7.5 0-11.25 0-18.75-3.75-18.75-11.25-22.5-33.75-15-52.5L684.5 137c11.25-18.75 33.75-22.5 52.5-15 18.75 11.25 22.5 33.75 15 52.5L695.75 272c-7.5 11.25-22.5 18.75-33.75 18.75z m-356.25 615c-7.5 0-11.25 0-18.75-3.75-18.75-11.25-22.5-33.75-15-52.5l56.25-97.5c11.25-15 33.75-22.5 52.5-11.25s22.5 33.75 15 52.5L339.5 887c-7.5 11.25-22.5 18.75-33.75 18.75z m-52.5-506.25c-7.5 0-15 0-18.75-3.75L137 339.5c-18.75-11.25-26.25-33.75-15-52.5s33.75-22.5 52.5-15l97.5 56.25c18.75 11.25 22.5 33.75 11.25 52.5-3.75 11.25-18.75 18.75-30 18.75z m615 356.25c-7.5 0-11.25 0-18.75-3.75L752 695.75c-18.75-11.25-22.5-33.75-15-52.5 11.25-18.75 33.75-22.5 52.5-15L887 684.5c18.75 11.25 22.5 33.75 15 52.5-7.5 11.25-18.75 18.75-33.75 18.75zM362 290.75c-11.25 0-26.25-7.5-33.75-18.75L272 174.5c-7.5-18.75-3.75-41.25 15-52.5s41.25-3.75 52.5 15l56.25 97.5c7.5 18.75 3.75 41.25-15 48.75-7.5 3.75-11.25 7.5-18.75 7.5z m356.25 615c-11.25 0-26.25-7.5-33.75-18.75l-56.25-97.5c-11.25-18.75-3.75-41.25 15-52.5s41.25-3.75 52.5 15L752 849.5c11.25 18.75 3.75 41.25-15 52.5-7.5 3.75-11.25 3.75-18.75 3.75z","p-id":"2598",fill:"#26d79f"})],-1)]))):oe("",!0),s.emojiMaskState?(R(),B("div",{key:1,class:"emoji-box-mask",onClick:t[16]||(t[16]=a=>s.closeEmojiMask())})):oe("",!0),d("div",x4,[d("div",{class:"close-circle flexcenter",onClick:t[17]||(t[17]=a=>s.closeDetailMode())},t[60]||(t[60]=[d("img",{class:"close-icon",src:Cv},null,-1),d("img",{class:"details-cross-icon",src:rs},null,-1)]))]),d("div",S4,[s.detailsInfo.typename?(R(),B("div",E4,ne(s.detailsInfo.typename),1)):oe("",!0),d("div",k4,ne(s.detailsInfo.title),1),s.detailsInfo.content?(R(),B("div",{key:1,class:"hint",onClick:t[18]||(t[18]=(...a)=>s.handleAnswerText&&s.handleAnswerText(...a)),innerHTML:s.detailsInfo.content},null,8,_4)):oe("",!0),d("div",T4,[d("div",{class:"user-info flexacenter",onClick:t[21]||(t[21]=a=>s.openUserInfo())},[s.detailsInfo.avatar?(R(),B("img",{key:0,class:"avatar",src:s.detailsInfo.avatar},null,8,R4)):oe("",!0),d("div",L4,ne(s.detailsInfo.nickname),1),s.avatarState?(R(),B("div",O4,[d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:t[19]||(t[19]=Ee(a=>s.sendMessage(s.detailsInfo.uin),["prevent"]))},t[61]||(t[61]=[d("img",{class:"avatar-icon",src:ji},null,-1),Re(" 发送信息 ")])),d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:t[20]||(t[20]=Ee(a=>s.TAHomePage(s.detailsInfo.uin),["prevent"]))},t[62]||(t[62]=[d("img",{class:"avatar-icon",src:Qi},null,-1),Re(" TA的主页 ")])),t[63]||(t[63]=d("div",{class:"avatar-mask"},null,-1))])):oe("",!0),d("div",B4,ne(s.handleDate(s.detailsInfo.publicationdate)),1)]),d("div",I4,[t[64]||(t[64]=d("img",{class:"operate-icon operate-collect-icon",style:{width:"13px",height:"8px"},src:xv},null,-1)),Re(" "+ne(s.detailsInfo.viewnum||0),1)])]),d("div",P4,[d("div",M4,[d("div",{class:"operate-item flexacenter",onClick:t[22]||(t[22]=a=>s.operateLike())},[s.islike==0?(R(),B("img",N4)):(R(),B("img",D4)),Re(" "+ne(s.detailsInfo.likenum||"赞"),1)]),xe(f,null,{default:qt(()=>[d("div",{class:"operate-item flexacenter",onClick:t[23]||(t[23]=a=>s.operateCollect())},[s.detailsIscollection==0?(R(),B("img",U4)):(R(),B("img",H4)),Re(" "+ne(s.detailsInfo.collectionnum>0?s.detailsInfo.collectionnum:"收藏"),1)])]),_:1}),d("div",{class:"operate-item flexacenter operate-transmit",onMouseenter:t[27]||(t[27]=Ee(a=>s.closeTransmitState(),["stop"])),onMouseleave:t[28]||(t[28]=Ee(a=>s.closeAllTransmitState(),["stop"]))},[t[68]||(t[68]=d("img",{class:"operate-icon operate-transmit-icon",src:_v},null,-1)),t[69]||(t[69]=Re(" 转发 ")),s.questionsTransmitState?(R(),B("div",{key:0,class:"transmit-box flexflex",onClick:t[26]||(t[26]=Ee(()=>{},["stop"])),style:{"z-index":"10"}},[d("img",{class:"cross-icon",onClick:t[24]||(t[24]=Ee(a=>s.closeAllTransmitState(),["stop"])),src:rs}),d("div",F4,[t[65]||(t[65]=d("div",{class:"transmit-title"},"转发网页版",-1)),d("div",j4,[d("div",Q4,ne(s.detailsInfo.title),1),d("div",q4,ne(s.getCurrentUrl()),1)]),d("div",{class:"transmit-web-btn flexcenter",onClick:t[25]||(t[25]=a=>s.copyText(s.detailsInfo.title+s.getCurrentUrl()))},"复制链接")]),d("div",z4,[t[67]||(t[67]=d("div",{class:"transmit-title"},"转发小程序版",-1)),d("div",K4,[d("img",{class:"transmit-mini-img",src:s.detailShare.qrcode},null,8,V4),t[66]||(t[66]=d("div",{class:"flexcenter"},[d("img",{class:"give-sweep",src:$c}),Re(" 扫码转发该问答 ")],-1))])])])):oe("",!0)],32)])])]),s.isCommentList?(R(),at(u,{key:2,ref:"commentListRef",onUpdateAnswers:s.handleUpdateAnswers},null,8,["onUpdateAnswers"])):oe("",!0),d("div",W4,[t[71]||(t[71]=d("img",{class:"QRCode-icon",src:Tv,alt:""},null,-1)),t[72]||(t[72]=Re(" 手机查看该问答 ")),d("div",G4,[d("img",{class:"offer-mini-QRcode",src:s.detailShare.qrcode},null,8,J4),t[70]||(t[70]=d("div",{class:"QRCode-hint flexacenter"},[d("img",{class:"QRCode-img",src:$c}),Re(" 微信扫一扫 ")],-1))])])])],32)):oe("",!0)],2),s.myType?(R(),B("div",Y4,[d("div",Z4,[d("img",{class:"cross-icon",src:rs,onClick:t[30]||(t[30]=a=>s.myType="")}),d("div",X4,[d("div",{class:Se(["tab-item flexacenter",{pitch:s.myType=="collect"}]),onClick:t[31]||(t[31]=a=>s.handleMy("collect"))},[t[73]||(t[73]=Re(" 我的收藏 ")),d("div",$4,ne(s.myCollectionCount||s.myCount.collect||0),1)],2),t[75]||(t[75]=d("div",{class:"long-string"},null,-1)),d("div",{class:Se(["tab-item flexacenter",{pitch:s.myType=="questions"}]),onClick:t[32]||(t[32]=a=>s.handleMy("questions"))},[t[74]||(t[74]=Re(" 我的提问 ")),d("div",e8,ne(s.myQuestionsCount||s.myCount.questions||0),1)],2)]),s.myType=="collect"&&s.myCollectionList.length==0||s.myType=="answers"&&s.myAnswerList.length==0||s.myType=="questions"&&s.myQuestionsList.length==0?(R(),B("div",t8,t[76]||(t[76]=[$r('
暂无内容
',3)]))):oe("",!0),s.myType=="collect"&&s.myCollectionList.length!=0?(R(),B("div",{key:1,class:"content-box collect-list",onScroll:t[33]||(t[33]=(...a)=>s.handleCollectionScroll&&s.handleCollectionScroll(...a))},[(R(!0),B(pe,null,Ze(s.myCollectionList,(a,p)=>(R(),B("div",{class:"item flexflex",key:a,onClick:Ee(w=>s.myOpenDetails(a.data.uniqid),["stop"])},[a.type=="askanswercollection"?(R(),B(pe,{key:0},[t[77]||(t[77]=d("div",{class:"icon a flexcenter"},"A",-1)),d("div",s8,[d("div",{class:"titletitle ellipsis",innerHTML:a.data.content},null,8,o8),d("div",r8,"提问:"+ne(a.data.title),1)]),d("div",i8,[d("img",{class:"delete-icon",onClick:Ee(w=>s.cancelCollection(a.token,p),["stop"]),src:eu},null,8,l8)])],64)):(R(),B(pe,{key:1},[t[78]||(t[78]=d("div",{class:"icon q flexcenter"},"Q",-1)),d("div",a8,[d("div",c8,ne(a.data.title),1),d("div",u8,ne(a.data.answers>0?"共"+a.data.answers+"个回答&讨论":"暂无回答&讨论"),1)]),d("div",f8,[d("img",{class:"delete-icon",onClick:Ee(w=>s.cancelCollection(a.token,p),["stop"]),src:eu},null,8,d8)])],64))],8,n8))),128))],32)):oe("",!0),s.myType=="answers"&&s.myAnswerList.length!=0?(R(),B("div",{key:2,class:"content-box answers-list",onScroll:t[34]||(t[34]=(...a)=>s.handleAnswersScroll&&s.handleAnswersScroll(...a))},[(R(!0),B(pe,null,Ze(s.myAnswerList,(a,p)=>(R(),B("div",{class:"item flexflex",key:a,onClick:Ee(w=>s.myOpenDetails(a.uniqid),["stop"])},[t[82]||(t[82]=d("div",{class:"icon a flexcenter"},"A",-1)),d("div",p8,[d("div",h8,[d("div",g8,ne(a.nickname),1),d("div",m8,ne(s.handleDate(a.publicationdate)),1)]),d("div",{class:"titletitle ellipsis",innerHTML:a.content},null,8,y8),d("div",v8,"提问:"+ne(a.title),1)]),d("div",w8,[d("div",{class:"state-box flexacenter",onClick:Ee(w=>s.cutAnswerPopupState(p),["stop"])},[d("div",C8,ne(a.anonymous==0?"公开":"匿名"),1),t[81]||(t[81]=d("img",{class:"arrows",src:tu},null,-1)),a.popupState?(R(),B("div",x8,[d("div",{class:Se(["state-popup-item flexacenter flex1",{pitch:a.anonymous==0}]),onClick:Ee(w=>s.changeAnonymous(a.token,0,p),["stop"])},t[79]||(t[79]=[d("div",{class:""},"公开发表",-1),d("img",{class:"state-popup-icon",src:ko},null,-1)]),10,S8),d("div",{class:Se(["state-popup-item flexacenter flex1",{pitch:a.anonymous==1}]),onClick:Ee(w=>s.changeAnonymous(a.token,1,p),["stop"])},t[80]||(t[80]=[d("div",{class:""},"匿名发表",-1),d("img",{class:"state-popup-icon",src:ko},null,-1)]),10,E8)])):oe("",!0)],8,b8),d("img",{class:"edit-icon",onClick:Ee(w=>e.openIAnswer(p,"my"),["stop"]),src:Rv},null,8,k8)])],8,A8))),128))],32)):oe("",!0),s.myType=="questions"&&s.myQuestionsList.length!=0?(R(),B("div",{key:3,class:"content-box questions-list",onScroll:t[35]||(t[35]=(...a)=>s.handleQuestionsScroll&&s.handleQuestionsScroll(...a))},[(R(!0),B(pe,null,Ze(s.myQuestionsList,(a,p)=>(R(),B("div",{class:"item flexflex",key:a,onClick:Ee(w=>s.myOpenDetails(a.uniqid),["stop"])},[t[87]||(t[87]=d("div",{class:"icon q flexcenter"},"Q",-1)),d("div",T8,[d("div",R8,[d("div",L8,ne(a.nickname),1),d("div",O8,ne(s.handleDate(a.publicationdate)),1)]),d("div",B8,ne(a.title),1),d("div",I8,[a.authornewnum>0?(R(),B("div",P8,[Re(" 有"+ne(a.authornewnum)+"个新回答&讨论 ",1),t[83]||(t[83]=d("div",{class:"long-string"},null,-1))])):oe("",!0),Re(" "+ne(a.answers==0?"暂无回答&讨论":"共"+a.answers+"个回答&讨论"),1)])]),d("div",M8,[d("div",{class:"state-box flexacenter",onClick:Ee(w=>s.cutQuestionsPopupState(p),["stop"])},[d("div",D8,ne(a.anonymous==0?"公开":"匿名"),1),t[86]||(t[86]=d("img",{class:"arrows",src:tu},null,-1)),a.popupState?(R(),B("div",U8,[d("div",{class:Se(["state-popup-item flexacenter flex1",{pitch:a.anonymous==0}]),onClick:Ee(w=>s.changeAnonymousQuestions(a.token,0,p),["stop"])},t[84]||(t[84]=[d("div",{class:""},"公开发表",-1),d("img",{class:"state-popup-icon",src:ko},null,-1)]),10,H8),d("div",{class:Se(["state-popup-item flexacenter flex1",{pitch:a.anonymous==1}]),onClick:Ee(w=>s.changeAnonymousQuestions(a.token,1,p),["stop"])},t[85]||(t[85]=[d("div",{class:""},"匿名发表",-1),d("img",{class:"state-popup-icon",src:ko},null,-1)]),10,F8)])):oe("",!0)],8,N8)])],8,_8))),128))],32)):oe("",!0)])])):oe("",!0),s.questionsSetp?(R(),B("div",{key:1,class:"popover-mask flexcenter issue-box",onClick:t[43]||(t[43]=a=>s.cutQuestionsSetp(0))},[s.questionsSetp==1?(R(),B("div",{key:0,class:"choosing-theme",onClick:t[36]||(t[36]=Ee(()=>{},["stop"]))},[t[88]||(t[88]=d("div",{class:"titletitle"},"选择提问所属主题",-1)),d("div",j8,[(R(!0),B(pe,null,Ze(s.questionsTypeList,(a,p)=>(R(),B("div",{class:"theme-stair-box flexflex",key:p},[(R(!0),B(pe,null,Ze(a,w=>(R(),B("div",{class:"theme-item flexcenter",key:w.id,onClick:h=>s.choosingTheme(w.id)},ne(w.name),9,Q8))),128))]))),128))])])):(R(),B("div",{key:1,class:"issue-form",onClick:t[42]||(t[42]=Ee(()=>{},["stop"]))},[t[91]||(t[91]=$r('
Q
',2)),d("img",{class:"cross-icon",onClick:t[37]||(t[37]=a=>s.cutQuestionsSetp(0)),src:rs}),d("div",q8,[Ct(d("textarea",{"onUpdate:modelValue":t[38]||(t[38]=a=>s.questionsObj.title=a),placeholder:"一句话描述问题,以问号结尾"},null,512),[[dn,s.questionsObj.title]])]),Ct(d("textarea",{class:"issue-replenish","onUpdate:modelValue":t[39]||(t[39]=a=>s.questionsObj.content=a),placeholder:"欢迎补充,清晰表达问题的关键点,可获得更有效的解答(非必填)"},null,512),[[dn,s.questionsObj.content]]),d("div",z8,[d("div",{class:"option-box flexacenter",onClick:t[40]||(t[40]=(...a)=>s.cutAnonymous&&s.cutAnonymous(...a)),style:{color:"#333"}},[s.questionsObj.anonymous==0?(R(),B("img",K8)):(R(),B("img",V8)),t[89]||(t[89]=Re(" 匿名发表 ")),t[90]||(t[90]=d("div",{class:"",style:{color:"#aaa"}},"(发布后只能修改是否匿名)",-1))]),d("div",{class:"issue-btn flexcenter",onClick:t[41]||(t[41]=(...a)=>s.postingIssue&&s.postingIssue(...a))},"发布问题")])]))])):oe("",!0),Ct(xe(gl,{name:"msg",appear:""},{default:qt(()=>[d("div",{class:Se(["box-item",s.boxClass()]),style:{top:"20px"}},[d("div",W8,ne(s.msg.text),1)],2)]),_:1},512),[[Ko,s.msg.state]]),s.dialogSrc?(R(),B("div",{key:2,class:"detail-image-mask flexcenter",onClick:t[44]||(t[44]=a=>s.dialogSrc="")},[d("div",G8,[d("img",{class:"detail-img",src:s.dialogSrc},null,8,J8)])])):oe("",!0),Ct(d("div",Y8,[d("div",Z8,[d("div",X8,[t[92]||(t[92]=d("span",{style:{display:"flex","align-items":"center"}},[d("img",{style:{width:"25px","margin-right":"7px"},src:"//app.gter.net/image/gter/offer/img/exclamationpoint.png?v=4.2.08_331040000"}),Re(" 举报投诉 ")],-1)),d("div",{class:"close icon-close iconfont",onClick:t[45]||(t[45]=a=>s.alertShow=!1)})]),d("div",$8,[d("div",e7,[(R(!0),B(pe,null,Ze(s.reasonList,(a,p)=>(R(),B("div",{class:Se(["radio-area-item flexacenter",{pitch:s.checkList.includes(a)}]),key:p,onClick:w=>s.selectRadio(a)},[t[93]||(t[93]=d("div",{class:"radio-area-frame"},null,-1)),Re(" "+ne(a),1)],10,t7))),128))]),d("div",n7,[Ct(d("textarea",{placeholder:"请输入举报原因","onUpdate:modelValue":t[46]||(t[46]=a=>s.alertText=a),maxlength:"200"},null,512),[[dn,s.alertText]]),d("div",s7,ne(200-s.alertText.length),1)]),d("div",o7,[d("button",{type:"button",onClick:t[47]||(t[47]=a=>s.alertShow=!1)},"取消"),d("button",{type:"submit",disabled:s.checkList.length==0,onClick:t[48]||(t[48]=(...a)=>s.alertSubmit&&s.alertSubmit(...a))},"提交",8,r7)])])])],512),[[Ko,s.alertShow]])])])],64)}const l7=Bv(Iv,[["render",i7]]),a7={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;n.stack&&n.stack.split(` +`).splice(1).map(a=>({text:a.replace("webpack:/","").replace(".vue",".js").trim(),internal:a.includes("node_modules")&&!a.includes(".cache")||a.includes("internal")||a.includes("new Promise")})).map(a=>`${a.text}`).join(` +`);const s=Number(n.statusCode||500),o=s===404,r=n.statusMessage??(o?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),l=void 0,u=o?ba(()=>hc(()=>import("./D68ufz1E.js"),__vite__mapDeps([0,1]),import.meta.url)):ba(()=>hc(()=>import("./D8XG0MVX.js"),__vite__mapDeps([2,3]),import.meta.url));return(a,p)=>(R(),at(z(u),zd(Cf({statusCode:z(s),statusMessage:z(r),description:z(i),stack:z(l)})),null,16))}},c7={key:0},nu={__name:"nuxt-root",setup(e){const t=()=>null,n=We(),s=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",s);qn().beforeEach(c)}const o=!1;Qe(Xf,bl()),n.hooks.callHookWith(c=>c.map(f=>f()),"vue:setup");const r=Cl(),i=!1;zu((c,f,u)=>{if(n.hooks.callHook("vue:error",c,f,u).catch(a=>console.error("[nuxt] Error in `vue:error` hook",a)),Mh(c)&&(c.fatal||c.unhandled))return n.runWithContext(()=>Ih(c)),!1});const l=!1;return(c,f)=>(R(),at(gA,{onResolve:z(s)},{default:qt(()=>[z(i)?(R(),B("div",c7)):z(r)?(R(),at(z(a7),{key:1,error:z(r)},null,8,["error"])):z(l)?(R(),at(z(t),{key:2,context:z(l)},null,8,["context"])):z(o)?(R(),at(Wu(z(o)),{key:3})):(R(),at(z(l7),{key:4}))]),_:1},8,["onResolve"]))}};let su;{let e;su=async function(){var i,l;if(e)return e;const s=!!(((i=window.__NUXT__)==null?void 0:i.serverRendered)??((l=document.getElementById("__NUXT_DATA__"))==null?void 0:l.dataset.ssr)==="true")?up(nu):cp(nu),o=yh({vueApp:s});async function r(c){var f;await o.callHook("app:error",c),(f=o.payload).error||(f.error=xl(c))}s.config.errorHandler=r,o.hook("app:suspense:resolve",()=>{s.config.errorHandler===r&&(s.config.errorHandler=void 0)});try{await bh(o,Mm)}catch(c){r(c)}try{await o.hooks.callHook("app:created",s),await o.hooks.callHook("app:beforeMount",s),s.mount(hh),await o.hooks.callHook("app:mounted",s),await Xt()}catch(c){r(c)}return s},e=su().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{xe as A,qt as B,Re as C,Bv as _,We as a,_l as b,mc as c,Me as d,dl as e,h7 as f,A7 as g,kf as h,Bh as i,_e as j,ms as k,fr as l,Zs as m,Oh as n,en as o,yl as p,vl as q,H as r,p7 as s,b1 as t,qn as u,B as v,Li as w,R as x,d as y,ne as z}; diff --git a/.output/public/static/QRCode-icon.a105d5fc.svg b/.output/public/static/QRCode-icon.a105d5fc.svg deleted file mode 100644 index 8464970..0000000 --- a/.output/public/static/QRCode-icon.a105d5fc.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/public/static/add-icon.0b0b5313.svg b/.output/public/static/add-icon.0b0b5313.svg deleted file mode 100644 index 585cf1c..0000000 --- a/.output/public/static/add-icon.0b0b5313.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/public/static/arrows-icon.271dd0d3.svg b/.output/public/static/arrows-icon.271dd0d3.svg deleted file mode 100644 index f36972e..0000000 --- a/.output/public/static/arrows-icon.271dd0d3.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/public/static/builds/latest.json b/.output/public/static/builds/latest.json index 7243629..c79d9f1 100644 --- a/.output/public/static/builds/latest.json +++ b/.output/public/static/builds/latest.json @@ -1 +1 @@ -{"id":"fab4a5cc-9cfc-497f-9ee3-5ea7a6942142","timestamp":1740124560704} \ No newline at end of file +{"id":"a09a0e4f-e1ae-4b62-83ed-c95a7a6c55ee","timestamp":1742543707809} \ No newline at end of file diff --git a/.output/public/static/builds/meta/a09a0e4f-e1ae-4b62-83ed-c95a7a6c55ee.json b/.output/public/static/builds/meta/a09a0e4f-e1ae-4b62-83ed-c95a7a6c55ee.json new file mode 100644 index 0000000..65a1da9 --- /dev/null +++ b/.output/public/static/builds/meta/a09a0e4f-e1ae-4b62-83ed-c95a7a6c55ee.json @@ -0,0 +1 @@ +{"id":"a09a0e4f-e1ae-4b62-83ed-c95a7a6c55ee","timestamp":1742543707809,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]} \ No newline at end of file diff --git a/.output/public/static/builds/meta/fab4a5cc-9cfc-497f-9ee3-5ea7a6942142.json b/.output/public/static/builds/meta/fab4a5cc-9cfc-497f-9ee3-5ea7a6942142.json deleted file mode 100644 index 898b8cb..0000000 --- a/.output/public/static/builds/meta/fab4a5cc-9cfc-497f-9ee3-5ea7a6942142.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"fab4a5cc-9cfc-497f-9ee3-5ea7a6942142","timestamp":1740124560704,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]} \ No newline at end of file diff --git a/.output/public/static/close-icon.86743366.svg b/.output/public/static/close-icon.86743366.svg deleted file mode 100644 index 4fb9f94..0000000 --- a/.output/public/static/close-icon.86743366.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.output/public/static/collect-icon-colours.6d2ade7f.svg b/.output/public/static/collect-icon-colours.6d2ade7f.svg deleted file mode 100644 index 1a4057d..0000000 --- a/.output/public/static/collect-icon-colours.6d2ade7f.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/public/static/comment-icon-gray.2c8779f9.svg b/.output/public/static/comment-icon-gray.2c8779f9.svg deleted file mode 100644 index 1f5b9fa..0000000 --- a/.output/public/static/comment-icon-gray.2c8779f9.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.output/public/static/delete-icon.4d386dce.svg b/.output/public/static/delete-icon.C00hnugk.svg similarity index 100% rename from .output/public/static/delete-icon.4d386dce.svg rename to .output/public/static/delete-icon.C00hnugk.svg diff --git a/.output/public/static/dot-gray.86cdd7b5.svg b/.output/public/static/dot-gray.86cdd7b5.svg deleted file mode 100644 index 3351277..0000000 --- a/.output/public/static/dot-gray.86cdd7b5.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.output/public/static/dot-yellow.4b5e135b.svg b/.output/public/static/dot-yellow.4b5e135b.svg deleted file mode 100644 index 1bb33f7..0000000 --- a/.output/public/static/dot-yellow.4b5e135b.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.output/public/static/dot.1026a040.svg b/.output/public/static/dot.1026a040.svg deleted file mode 100644 index 2945c5b..0000000 --- a/.output/public/static/dot.1026a040.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.output/public/static/empty-icon.24a01ae2.svg b/.output/public/static/empty-icon.DUxtcfqq.svg similarity index 100% rename from .output/public/static/empty-icon.24a01ae2.svg rename to .output/public/static/empty-icon.DUxtcfqq.svg diff --git a/.output/public/static/entry.544a51c2.css b/.output/public/static/entry.544a51c2.css deleted file mode 100644 index 1a6d9af..0000000 --- a/.output/public/static/entry.544a51c2.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:hsla(0,0%,100%,.9);--el-mask-color-extra-light:hsla(0,0%,100%,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color);color-scheme:light}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;fill:currentColor;align-items:center;color:var(--color);display:inline-flex;font-size:inherit;height:1em;justify-content:center;line-height:1em;position:relative;width:1em}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:fit-content}.el-message.is-center{justify-content:center}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.register *{box-sizing:content-box}.index-footer{margin-top:0!important}header.page-header .box .tab-list .item.pitch{color:#fddf6d!important}header.page-header .box .tab-list .item.pitch:after{background-color:#fddf6d!important}body{-ms-overflow-style:none;scrollbar-width:none}body::-webkit-scrollbar{width:0!important}@font-face{font-family:emojifont;src:url(https://oss.x-php.com/static/riposte/emojifont-sbix.ttf?t=questions)}#answer-app *{box-sizing:border-box;font-family:PingFangSC-Regular,PingFang SC,sans-serif;margin:0;padding:0;word-break:break-all}a{text-decoration:none!important}::-webkit-scrollbar{background-color:transparent;width:8px}::-webkit-scrollbar-thumb{background-color:#d7d7d7;border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:#666}::-webkit-scrollbar-button{display:none}*{scrollbar-color:#d7d7d7 transparent;scrollbar-width:thin}::-moz-scrollbar-thumb{background-color:#d7d7d7}::-moz-scrollbar-thumb:hover{background-color:#666}.flexflex{display:flex}.flex1{flex:1}.flexcenter{justify-content:center}.flexacenter,.flexcenter{align-items:center;display:flex}.flexjcenter{display:flex;justify-content:center}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#answer-app{min-height:calc(100vh - 253px);min-width:1200px;overflow-x:hidden;word-break:break-all}#answer-app header{background:#f6f6f6;border:1px solid #ebebeb;flex-direction:column;height:150px;margin:0 auto;min-width:1200px;padding-top:24px}#answer-app header .top{margin-bottom:31px;width:1200px}#answer-app header .top .logo{cursor:pointer;width:73px}#answer-app header .top .right{justify-content:flex-end}#answer-app header .top .right .searchInput{background-color:#fff;border:1px solid #ebebeb;border-radius:104px;font-size:13px;height:32px;padding-right:16px;position:relative;width:320px}#answer-app header .top .right .searchInput input{border:none;border-radius:104px;height:100%;outline:none;padding-left:16px}#answer-app header .top .right .searchInput .input-icon{cursor:pointer;height:20px;width:20px}#answer-app header .top .right .searchInput .clear-search .cross-circle-black{cursor:pointer;height:14px;width:14px}#answer-app header .top .right .searchInput .clear-search .halving-line{background-color:#ebebeb;height:13px;margin:0 17px;width:1px}#answer-app header .top .right .searchInput .history-box{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;left:0;padding-bottom:14px;padding-top:15px;position:absolute;top:36px;width:320px;z-index:10}#answer-app header .top .right .searchInput .history-box .history-title{color:#aaa;font-size:13px;margin-bottom:9px;padding-left:16px}#answer-app header .top .right .searchInput .history-box .history-list .history-item{color:#333;cursor:pointer;font-size:14px;height:30px;line-height:30px;padding:0 16px}#answer-app header .top .right .btn-list{border:1px solid #ebebeb;border-radius:5px;color:#555;font-size:13px;height:30px;margin-left:20px;width:221px}#answer-app header .top .right .btn-list .item{cursor:pointer;position:relative;text-align:center}#answer-app header .top .right .btn-list .item:not(:last-of-type):before{color:#d7d7d7;content:"|";font-size:13px;position:absolute;right:0;top:50%;transform:translateY(-50%)}#answer-app header .top .right .add-btn{background-color:#fddf6d;border-radius:5px;color:#000;cursor:pointer;font-size:13px;height:30px;margin-left:20px;width:130px}#answer-app header .top .right .add-btn .add-icon{height:14px;margin-right:4px;width:14px}#answer-app header .tab-box{background-color:#f6f6f6;margin:0 auto;min-width:1200px;padding:5px 0;width:100%;z-index:1}#answer-app header .tab-box.tab-list-fixed{position:fixed;top:0}#answer-app header .tab-box .tab-list{width:1200px}#answer-app header .tab-box .tab-list .item{color:#333;cursor:pointer;font-size:14px;height:24px;text-align:center}#answer-app header .tab-box .tab-list .item:not(:last-of-type){margin-right:23px}#answer-app header .tab-box .tab-list .item.pitch{background-color:#fa6b11;border-radius:19px;color:#fff;font-weight:650;padding:0 11px}#answer-app header .tab-box .tab-list .halving-line{color:#d7d7d7;font-size:14px;margin-right:23px}#answer-app .main{background-color:#fbfbfb;height:calc(100vh - 167px);justify-content:center;margin:0 auto;min-width:1200px}#answer-app .main .transmit-mask{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}#answer-app .main.mode-list{background:#fff;height:auto}#answer-app .main.mode-list .main-header{border-right:none;width:100%}#answer-app .main.mode-list .list-box .list .item{border-right:none}#answer-app .main.mode-list .list-box .list .item:nth-child(2){border-top:1px solid #ebebeb}#answer-app .main .main-header{background:#fff;border-right:1px solid #ebebeb;display:inline-flex;display:flex;height:68px;justify-content:space-between;margin:0 auto;min-width:508px;padding-left:calc(50vw - 600px);padding-top:28px;width:calc(50vw - 88px)}#answer-app .main .main-header .search-keyword{border-right:1px solid #ebebeb;color:#fa6b11;cursor:pointer;font-size:14px;height:20px;margin-right:20px;max-width:400px;padding-right:20px}#answer-app .main .main-header .search-keyword .search-keyword-cross{height:14px;margin-left:8px;width:14px}#answer-app .main .main-header .total{color:#7f7f7f;font-size:13px;height:20px}#answer-app .main .main-header .look-only{color:#7f7f7f;cursor:pointer;font-size:13px;height:20px}#answer-app .main .main-header .look-only .look-icon{height:12px;margin-right:8px;width:12px}#answer-app .main .list-box{-ms-overflow-style:none;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}#answer-app .main .list-box::-webkit-scrollbar{width:0!important}#answer-app .main .list-box .list{display:flex;flex-wrap:wrap;justify-content:space-between;min-width:508px;position:relative}#answer-app .main .list-box .list .item{background-color:#fff;border-right:1px solid #ebebeb;cursor:pointer;padding:20px 0 0;position:absolute;transition-duration:.5s;transition-property:top,left,background}#answer-app .main .list-box .list .item:first-of-type{border-top:1px solid #ebebeb}#answer-app .main .list-box .list .item.upLevel .content{border:none}#answer-app .main .list-box .list .item.pitch{background-color:#fbfbfb;border-bottom:1px solid #ebebeb;border-top:1px solid #ebebeb;position:relative}#answer-app .main .list-box .list .item.pitch:after{background-color:#fddf6d;content:"";height:100%;position:absolute;right:-1px;top:0;width:4px}#answer-app .main .list-box .list .item.pitch:before{background-image:url(./triangle-icon.c39ff2e7.svg);content:"";height:10px;position:absolute;right:-5px;top:50%;transform:translateY(-50%);width:5px}#answer-app .main .list-box .list .item.pitch .content{border:none}#answer-app .main .list-box .list .item:hover .issue{text-decoration:underline}#answer-app .main .list-box .list .item .dot{height:6px;margin-right:14px;margin-top:8px;width:6px}#answer-app .main .list-box .list .item .content{border-bottom:1px dotted #ebebeb;padding-bottom:24px}#answer-app .main .list-box .list .item .content .issue-title .hot-icon{height:16px;margin-right:8px;width:16px}#answer-app .main .list-box .list .item .content .issue-title .issue{color:#000;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:14px;font-weight:650;line-height:22px}#answer-app .main .list-box .list .item .content .issue-title .issue em{color:red}#answer-app .main .list-box .list .item .content .issue-title .recommend{background-color:#72db861e;border-radius:5px;color:#72db86;font-size:12px;height:21px;margin-right:10px;padding:0 5px;text-align:center}#answer-app .main .list-box .list .item .content .answer{color:#555;font-size:13px;font-weight:400;height:22px;line-height:22px;margin-top:8px;text-decoration:none}#answer-app .main .list-box .list .item .content .answer *{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#answer-app .main .list-box .list .item .content .answer em{color:red}#answer-app .main .list-box .list .item .content .answer .halving-line{color:#d7d7d7;margin:0 10px}#answer-app .main .list-box .list .item .content .answer .value-value:not(:last-of-type){margin-right:10px;padding-right:10px;position:relative}#answer-app .main .list-box .list .item .content .answer .value-value:not(:last-of-type):after{color:#d7d7d7;content:"|";position:absolute;right:0;top:50%;transform:translateY(-50%)}#answer-app .main .list-box .list .item .content .bottom{font-size:12px;justify-content:space-between;margin-top:18px}#answer-app .main .list-box .list .item .content .bottom .typename{background-color:#f6f6f6;border:1px solid #ebebeb;border-radius:5px;color:#7f7f7f;font-size:12px;height:21px;padding:0 3px}#answer-app .main .list-box .list .item .content .bottom .quantity{color:#aaa}#answer-app .main .list-box .list .item .content .bottom .amount{color:#aaa;margin-left:20px}#answer-app .main .list-box .list .item .content .bottom .amount .amount-icon{height:13px;margin-right:5px;width:14px}#answer-app .main .list-box .list .item .content .bottom .longString{background-color:#d7d7d7;height:13px;margin:0 15px;width:1px}#answer-app .main .list-box .list .item .content .bottom .answer-btn{color:#72db86;cursor:pointer}#answer-app .main .list-box .empty-box{background-color:#fff;border-radius:6px;flex-direction:column;height:490px;margin:0 auto;width:690px}#answer-app .main .list-box .empty-box .dot-list .item{height:8px;width:8px}#answer-app .main .list-box .empty-box .dot-list .item:not(:last-of-type){margin-right:5px}#answer-app .main .list-box .empty-box .empty-icon{height:100px;margin-bottom:15px;margin-top:10px;width:100px}#answer-app .main .list-box .empty-box .empty-hint{color:#7f7f7f;font-size:13px;line-height:22px}#answer-app .main .details-area-box{background-color:#fbfbfb;display:flex;flex-direction:column;min-width:688px;overflow-x:hidden;overflow-y:auto;position:relative;width:calc(50vw + 88px)}#answer-app .main .details-area-box .loading-bj{background-color:#ffffff80;height:100%;left:0;padding-left:53px;position:absolute;top:0;width:100%;width:688px;z-index:1}#answer-app .main .details-area-box .loading-bj svg{animation:spin 2s linear infinite;position:fixed;top:50vh;width:60px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}#answer-app .main .details-area-box .details-box{flex:1;flex-direction:column;padding-bottom:200px;padding-left:53px;position:relative;width:688px}#answer-app .main .details-area-box .details-box .emoji-box-mask{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}#answer-app .main .details-area-box .details-box .close-box{display:flex;height:69px;justify-content:flex-end;padding-top:29px}#answer-app .main .details-area-box .details-box .close-box .close-circle{cursor:pointer;height:20px;position:relative;width:20px}#answer-app .main .details-area-box .details-box .close-box .close-circle .close-icon{height:20px;width:20px}#answer-app .main .details-area-box .details-box .close-box .close-circle .details-cross-icon{height:10px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:10px}#answer-app .main .details-area-box .details-box .label{background-color:#72db86;border-radius:5px;color:#fff;display:inline-block;font-size:12px;height:21px;line-height:21px;margin-bottom:12px;margin-left:23px;padding:0 4px}#answer-app .main .details-area-box .details-box .details-issue{background-color:#fff;border-radius:8px;box-shadow:0 0 11px #0000001a;margin-bottom:28px;padding-top:19px;position:relative;word-break:break-all}#answer-app .main .details-area-box .details-box .details-issue .icon{background-color:#72db86;border:4px solid #fbfbfb;border-radius:50%;color:#fff;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:13px;font-weight:650;height:28px;left:-4px;line-height:20px;position:absolute;top:-4px;width:28px}#answer-app .main .details-area-box .details-box .details-issue .qq{left:-5px;position:absolute;top:-5px;width:28px}#answer-app .main .details-area-box .details-box .details-issue .titletitle{color:#000;font-size:18px;font-weight:650;line-height:22px;margin-bottom:12px;padding:0 24px}#answer-app .main .details-area-box .details-box .details-issue .hint{color:#555;font-size:14px;line-height:24px;margin-bottom:20px;padding:0 24px;white-space:pre-line}#answer-app .main .details-area-box .details-box .details-issue .hint img{height:auto!important}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn{background-color:#f6f6f6;border-radius:43px;color:#555;cursor:pointer;font-size:14px;height:28px;line-height:20px;width:120px}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn.white{background-color:#62b1ff;color:#fff}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn.white .answer-icon-white{display:block}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn.white .answer-icon-edit{display:none}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn .answer-btn-icon{display:none;height:16px;margin-right:8px;width:16px}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn .answer-icon-edit{display:block}#answer-app .main .details-area-box .details-box .answer-discuss{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;padding:18px 22px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment{background-color:#00000080;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:12}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box{background:#fff;border-radius:10px;padding:20px 15px;width:650px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .text{color:#000;font-size:18px;font-weight:650;margin-bottom:15px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .input-box{margin-right:0}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .input-box .bottom{border-top:1px solid #ebebeb}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .btn-list{justify-content:flex-end;padding:15px 0}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .btn-list .btn{background-color:#fff;border:1px solid #ebebeb;border-radius:43px;color:#333;cursor:pointer;font-size:14px;height:28px;line-height:28px;margin-left:20px;text-align:center;width:80px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .btn-list .btn.send{background-color:#fddf6d;border:1px solid #fddf6d}#answer-app .main .details-area-box .details-box .answer-discuss .header{color:#000;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:16px;font-weight:650;margin-bottom:17px}#answer-app .main .details-area-box .details-box .answer-discuss .header .num{color:#555;font-family:PingFangSC-Regular,PingFang SC,sans-serif;font-weight:400;margin-left:6px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box{background-color:#f6f6f6;border-radius:10px;display:flex;flex-direction:column;justify-content:space-between;padding-top:11px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top{padding:0 14px;position:relative}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-placeholder{color:#7f7f7f;font-size:14px;left:14px;pointer-events:none;position:absolute;top:0}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .avatar{border-radius:50%;display:block;height:24px;margin-right:10px;width:24px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-textarea{background-color:transparent;border:none;font-size:14px;min-height:80px;outline:none;padding-bottom:11px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-textarea *{background:transparent!important;border:none!important;border-radius:0!important;color:#000!important;font-size:14px!important;height:auto!important;margin:0!important;outline:none!important;padding:0!important;width:auto!important}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-textarea img{display:none!important}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box{border-bottom:1px dotted hsla(0,0%,84%,.502);padding-bottom:10px;padding-left:14px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box .picture{position:relative;width:-moz-fit-content;width:fit-content}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box .picture .img{border-radius:5px;display:block;height:60px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box .picture .close{cursor:pointer;height:17px;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:17px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom{height:52px;justify-content:space-between;padding:0 14px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item{display:inline-flex;margin-right:20px;position:relative;z-index:1}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item.pitch .emoji-box{display:flex}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item.pitch:after{background-color:#fff;border-radius:5px;content:"";height:28px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:28px;z-index:-1}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .icon{cursor:pointer;height:16px;width:16px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .emoji-box{background-color:#fff;border:1px solid #ebebeb;border-radius:8px;display:none;filter:drop-shadow(0 0 11px rgba(0,0,0,.1));flex-wrap:wrap;font-size:22px;left:-14px;padding:8px;position:absolute;top:45px;width:581px;z-index:1}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .emoji-box:after{border-bottom:8px solid #fff;border-left:8px solid transparent;border-right:8px solid transparent;content:"";height:0;left:15px;position:absolute;top:-8px;width:0}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .emoji-box .emoji-icon{cursor:pointer;margin:5px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .file{background:transparent;border:none;cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .file:after{content:"";height:100%;left:0;position:absolute;top:0;width:100%}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item:hover .file-hint{display:inline-block}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .file-hint{background-color:#333;border-radius:137px;color:#fff;display:none;font-size:13px;font-weight:400;height:22px;line-height:22px;margin-left:9px;padding:0 8px;text-align:center}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .btn{background-color:#fddf6d;border-radius:43px;color:#333;cursor:pointer;font-size:14px;height:28px;line-height:28px;text-align:center;width:80px}#answer-app .main .details-area-box .details-box .answer-total-amount{color:#555;font-size:13px;line-height:22px;margin-bottom:20px}#answer-app .main .details-area-box .details-box .your-answer-box{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;margin-bottom:25px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-header{border-bottom:1px dotted #ebebeb;color:#000;font-size:18px;font-weight:650;height:67px;line-height:26px;padding-left:24px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-textarea{border:none;font-size:14px;height:224px;outline:none;overflow-x:hidden;overflow-y:auto;padding:20px 23px;resize:none;width:100%}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-textarea.placeholder:after{color:#999;content:"输入图文内容回答提问(支持直接粘贴图片)"}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-textarea img{max-width:100%}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom{background-color:#f6f6f6;border-radius:0 0 10px 10px;height:50px;justify-content:space-between;padding-left:25px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom .option-box{color:#7f7f7f;cursor:pointer;font-size:14px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom .option-box .option-icon{height:12px;margin-right:8px;width:12px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom .your-answer-submit{background-color:#fddf6d;border-radius:0 0 10px;color:#333;cursor:pointer;font-size:14px;height:50px;width:120px}#answer-app .main .details-area-box .details-box .answer-box-item{background-color:#fff;border-radius:8px;box-shadow:0 0 11px #0000001a;margin-bottom:21px;padding-top:24px;position:relative}#answer-app .main .details-area-box .details-box .answer-box-item .edit-btn{background-color:#f6f6f6;border-radius:50%;cursor:pointer;height:24px;position:absolute;right:10px;top:10px;width:24px}#answer-app .main .details-area-box .details-box .answer-box-item .edit-btn .edit-icon{height:16px;width:16px}#answer-app .main .details-area-box .details-box .answer-box-item *{white-space:break-spaces!important}#answer-app .main .details-area-box .details-box .answer-box-item .aa{left:-5px;position:absolute;top:-5px;width:28px}#answer-app .main .details-area-box .details-box .answer-box-item .icon-box{background-color:#62b1ff;border:4px solid #fbfbfb;border-radius:50%;color:#fff;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:13px;font-weight:650;height:28px;left:-4px;line-height:20px;position:absolute;top:-4px;width:28px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-text{color:#555;font-size:14px;margin-bottom:20px;padding:0 24px;word-break:break-all}#answer-app .main .details-area-box .details-box .answer-box-item .answer-text img{cursor:pointer;height:auto!important;max-width:100%}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box{background-color:#fbfbfb;padding:0 24px}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item{color:#555;cursor:pointer;font-family:PingFangSC-Regular,PingFang SC,sans-serif;font-size:13px;font-style:normal;font-weight:400;line-height:20px;position:relative}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item .amount{color:#555;font-weight:400}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item:not(:last-of-type){margin-right:40px}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item.pitch{color:#000;font-weight:650}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item.pitch:after{background-color:#fddf6d;border-radius:43px;content:"";height:4px;position:absolute;top:24px;width:100%}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins{background-color:#fbfbfb;border-radius:0 0 8px 8px;padding:22px 22px 40px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;height:56px;padding-left:20px;padding-right:8px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-icon{height:36px;margin-right:10px;width:31px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-text{color:#333;font-size:14px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-text .quantity{font-family:Arial-Black,Arial Black,sans-serif;font-weight:900}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-btn{background-color:#62b1ff;border-radius:150px;color:#fff;cursor:pointer;font-size:14px;height:40px;width:125px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;margin-top:20px;max-height:253px;overflow:auto}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item{padding:16px 20px 14px 32px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item:not(:last-of-type){border-bottom:1px dotted #f2f2f2}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .ranking{color:#333;font-family:Arial-BoldMT,Arial Bold,Arial,sans-serif;font-size:13px;font-weight:700;width:118px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .coins-user{cursor:pointer}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .coins-user .coins-user-img{border-radius:50%;height:24px;margin-right:18px;width:24px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .coins-user .coins-user-name{color:#555;font-size:13px;font-weight:400}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .bi{color:#000;font-size:13px;line-height:16px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .bi .bi-amount{font-size:16px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area{background-color:#fbfbfb;border-radius:0 0 8px 8px;display:flex;flex-wrap:wrap;padding:13px 24px 40px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-already-item{border:1px solid #d7d7d7;border-radius:8px;color:#555;cursor:pointer;font-size:12px;height:30px;line-height:30px;margin-bottom:10px;margin-right:10px;padding:0 6px;text-align:center;width:-moz-fit-content;width:fit-content}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-already-item.pitch{background:#f2f2f2;border:none}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-already-item .code{font-family:emojifont;font-size:15px;margin-right:4px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-select{background-color:#fff;border:1px solid #ebebeb;border-radius:6px 15px 15px 6px;height:30px;margin-right:10px;padding-left:16px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-select .respond-select-item{cursor:pointer;font-family:emojifont;font-size:15px;margin-right:16px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .plus-add{background-color:#62b1ff;border-radius:15px;height:30px;width:30px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .plus-add .plus-icon{height:14px;width:14px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-list-btn{align-items:center;border-radius:8px;color:#555;cursor:pointer;display:flex;font-size:13px;font-weight:400;justify-content:center;padding-top:10px;width:100%}#answer-app .main .details-area-box .details-box .answer-box-item .respond-list-btn .respond-list-btn-amount{color:#333;font-weight:650;margin:0 5px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-list-btn .respond-list-btn-icon{margin-left:5px;width:6px}#answer-app .main .details-area-box .details-box .answer-box-item .comments-area{background-color:#fbfbfb;border-radius:6px;padding-bottom:40px;padding-top:13px}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment-box{background-color:#fbfbfb;border-radius:6px}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment{background-color:#fff;border:1px solid #d7d7d7;border-radius:6px;margin:0 23px;position:relative;z-index:2}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-input{background-color:transparent;border:none;font-size:14px;height:60px;outline:none;padding:8px}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-input::-moz-placeholder{color:#aaa}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-input::placeholder{color:#aaa}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-ok{background-color:#62b1ff;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;height:60px;width:60px}#answer-app .main .details-area-box .details-box .answer-box-item .comments-empty-box{flex-direction:column;height:321px;justify-content:center}#answer-app .main .details-area-box .details-box .comments-box{border-radius:6px;padding:17px 0 0}#answer-app .main .details-area-box .details-box .comments-box.show-one-comment .reverl-all{display:none}#answer-app .main .details-area-box .details-box .comments-box .comments-item{padding:13px 0 0}#answer-app .main .details-area-box .details-box .comments-box .comments-item:not(:last-of-type) .child-comments,#answer-app .main .details-area-box .details-box .comments-box .comments-item:not(:last-of-type) .comments-content{border-bottom:1px dotted #ebebeb}#answer-app .main .details-area-box .details-box .comments-box .comments-item:last-of-type .child-comments{border-top:1px dotted #ebebeb}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header{justify-content:space-between;margin-bottom:9px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left{font-size:13px;position:relative}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-avatar{border-radius:50%;cursor:pointer;height:20px;margin-right:10px;width:20px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-username{color:#555;cursor:pointer;margin-right:10px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-time{color:#aaa;margin-right:8px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-identity{background-color:#f0f2f5;border:1px solid #d7d7d7;border-radius:5px;color:#7f7f7f;font-size:12px;height:20px;padding:0 3px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box{position:relative}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box:hover .operate-boxx{display:flex}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .menu-icon{cursor:pointer;height:14px;width:14px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx{background-color:#f6f6f6;border:1px solid #d7d7d7;border-radius:5px;color:#7f7f7f;cursor:pointer;display:none;flex-direction:column;font-size:12px;position:absolute;right:0;top:24px;width:60px;z-index:2}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx .item{height:24px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx .item:not(:last-of-type){border-bottom:1px solid #d7d7d7}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx:after{content:"";height:36px;position:absolute;right:0;top:-14px;width:58px;z-index:-1}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .comment-icon{cursor:pointer;height:13px;margin-left:40px;width:14px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .like-box{color:#aaa;cursor:pointer;font-size:12px;margin-left:40px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .like-box .like-icon{height:14px;width:14px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .like-box .like-quantity{margin-left:6px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content{margin-left:30px;padding-bottom:12px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content img{border-radius:5px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .input-box{margin-right:6px;position:relative}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .input-box .cross{cursor:pointer;height:12px;position:absolute;right:8px;top:5px;width:12px;z-index:2}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-text{color:#333;font-size:14px;line-height:22px;margin-bottom:13px;overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-text .comments-reply{color:#92a1bf;display:inline;margin-right:10px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-img{margin-bottom:13px;width:75px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box{margin-top:13px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input{border:1px solid #d7d7d7;border-radius:8px;height:60px;margin-right:16px;position:relative;width:519px;z-index:1}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input:after{background-color:#d7d7d7;content:"";display:block;height:20px;left:21px;position:absolute;top:-2px;transform:rotate(45deg);width:20px;z-index:-1}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input textarea{-ms-overflow-style:none;border:none;border-radius:7px 0 0 7px;outline:none;padding:11px 16px;resize:none;scrollbar-width:none}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input textarea::-webkit-scrollbar{width:0!important}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input .comments-btn{background-color:#72db86;border-radius:0 7px 7px 0;color:#fff;cursor:pointer;font-size:14px;height:58px;width:58px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .forkfork{cursor:pointer;height:12px;width:12px}#answer-app .main .details-area-box .details-box .comments-box .child-comments{margin-left:24px}#answer-app .main .details-area-box .details-box .comments-box .child-comments .comments-item:last-of-type .comments-content{border-bottom:none}#answer-app .main .details-area-box .details-box .comments-box .child-comments .comments-also{color:#62b1ff;cursor:pointer;font-size:13px;height:46px;line-height:22px;margin-left:30px}#answer-app .main .details-area-box .details-box .comments-box .child-comments .comments-also .also-icon{height:10px;margin-left:8px;width:10px}#answer-app .main .details-area-box .details-box .comments-box .reverl-all{border:1px solid #ebebeb;border-radius:43px;color:#555;cursor:pointer;font-size:13px;height:28px;line-height:20px;margin:16px auto 0;width:120px}#answer-app .main .details-area-box .details-box .comments-box .reverl-all .arrow-circular{height:10px;margin-left:10px;width:10px}#answer-app .main .details-area-box .details-box .comments-box .more-comments{border:1px solid #ebebeb;border-radius:43px;color:#555;cursor:pointer;height:28px;line-height:28px;margin:20px auto 0;width:120px}#answer-app .main .details-area-box .details-box .comments-box .more-comments .more-comments-icon{height:12px;margin-left:10px;width:12px}#answer-app .main .details-area-box .details-box .info-box{justify-content:space-between;margin-bottom:20px;padding:0 24px}#answer-app .main .details-area-box .details-box .info-box .user-info{cursor:pointer;position:relative}#answer-app .main .details-area-box .details-box .info-box .user-info .avatar{border-radius:50%;height:20px;margin-right:8px;width:20px}#answer-app .main .details-area-box .details-box .info-box .user-info .user-name{color:#7f7f7f;font-size:13px;margin-right:10px}#answer-app .main .details-area-box .details-box .info-box .user-info .homeShare{height:14px}#answer-app .main .details-area-box .details-box .info-box .time{color:#aaa;font-size:12px}#answer-app .main .details-area-box .details-box .info-box .operate-item{color:#7f7f7f;font-size:12px;margin-right:7px}#answer-app .main .details-area-box .details-box .info-box .operate-item .operate-icon{margin-right:7px}#answer-app .main .details-area-box .details-box .operate-box{border-top:1px dotted #ebebeb;flex:1;height:54px;justify-content:space-between;padding:0 24px;position:relative}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item{color:#7f7f7f;cursor:pointer;font-size:13px;height:53px;line-height:54px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item:not(:first-of-type){margin-left:36px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum{z-index:1}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum:after{background:inherit;background-color:#f6f6f6;content:"";height:100%;left:50%;position:absolute;top:0;transform:translate(-50%);width:80px;z-index:-1}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon{margin-right:5px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-transmit-icon{height:14px;width:14px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-comment-icon{height:13px;width:14px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-collect-icon,#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-like-icon{height:16px;width:16px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit:hover:after{content:"";height:100%;position:absolute;top:20px;width:100%;z-index:10}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box{background:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;justify-content:space-between;left:0;padding:40px 35px 42px;position:absolute;top:64px;width:635px;z-index:3}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .cross-icon{cursor:pointer;height:22px;padding:6px;position:absolute;right:6px;top:6px;width:22px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-title{color:#000;font-size:16px;font-weight:650;line-height:24px;margin-bottom:24px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-content{border:1px solid #f2f2f2;border-radius:16px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content{font-size:14px;line-height:24px;margin-bottom:32px;padding:14px 16px;width:300px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content .transmit-headline{color:#333}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content .transmit-url{word-wrap:break-word;color:#aaa}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-web-btn{background-color:#fddf6d;border-radius:8px;color:#000;font-size:14px;height:38px;width:120px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-mini .transmit-content{color:#555;flex-direction:column;font-size:13px;padding:22px 44px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-mini .transmit-content .transmit-mini-img{height:90px;margin-bottom:21px;width:90px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-mini .transmit-content .give-sweep{height:12px;margin-right:8px;width:12px}#answer-app .main .details-area-box .details-box .copyright{background-color:#f2f2f2;border-radius:4px;color:#aaa;font-size:13px;height:32px;margin-bottom:30px;margin-top:10px;text-align:center}#answer-app .main .details-area-box .details-box .mobile-phone-check{border:1px solid #ebebeb;border-radius:20px;color:#7f7f7f;cursor:pointer;font-size:13px;margin:39px auto 50px;padding:10px 0;position:relative;width:150px}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-icon{height:16px;margin-right:10px;width:16px}#answer-app .main .details-area-box .details-box .mobile-phone-check:hover .QRCode-pop{display:flex}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop{background-color:#fff;border-radius:17px;bottom:45px;box-shadow:0 0 5px #00000029;display:none;flex-direction:column;height:200px;position:absolute;width:200px;z-index:1}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop .offer-mini-QRcode{margin-bottom:18px;width:113px}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop .QRCode-hint{color:#333;font-size:13px}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop .QRCode-hint .QRCode-img{height:12px;margin-right:12px;width:12px}#answer-app .main .details-area-box .empty-box{flex-direction:column;margin-bottom:16px}#answer-app .main .details-area-box .empty-box .dot-list{margin-bottom:8px}#answer-app .main .details-area-box .empty-box .dot-list .dot-item{height:8px;width:8px}#answer-app .main .details-area-box .empty-box .dot-list .dot-item:not(:last-of-type){margin-right:5px}#answer-app .main .details-area-box .empty-box .empty-icon{height:100px;width:100px}#answer-app .main .details-area-box .empty-hint{color:#7f7f7f;font-size:13px;line-height:22px;text-align:center}#answer-app .issue-box .choosing-theme{background:inherit;background-color:#fff;border:none;border-radius:10px;box-shadow:0 0 3px #0000001e;padding:30px 36px 45px;width:530px}#answer-app .issue-box .choosing-theme .titletitle{color:#000;font-size:14px;font-weight:650;margin-bottom:30px;position:relative}#answer-app .issue-box .choosing-theme .titletitle:before{background-color:#72db86;border-radius:3px;content:"";height:12px;left:-15px;position:absolute;top:50%;transform:translateY(-50%);width:5px}#answer-app .issue-box .choosing-theme .theme-list,#answer-app .issue-box .choosing-theme .theme-list .theme-stair-box{flex-wrap:wrap}#answer-app .issue-box .choosing-theme .theme-list .theme-item{background-color:#f6f6f6;border-radius:5px;color:#333;cursor:pointer;font-size:14px;height:36px;margin-bottom:10px;width:106px}#answer-app .issue-box .choosing-theme .theme-list .theme-item:not(:nth-child(4n)){margin-right:11px}#answer-app .issue-box .choosing-theme .theme-list .theme-item:hover{background-color:#fddf6d;color:#000}#answer-app .issue-box .issue-form{background-position:-4px -3px;border-radius:10px;height:520px;padding-top:30px;position:relative;width:720px;z-index:1}#answer-app .issue-box .issue-form .issue-bj{height:526px;left:-4px;position:absolute;top:-3px;width:727px;z-index:-1}#answer-app .issue-box .issue-form .q{background-color:#72db86;border-radius:50%;color:#fff;font-size:13px;font-style:normal;font-weight:650;height:20px;left:-1px;position:absolute;top:-1px;width:20px}#answer-app .issue-box .issue-form .cross-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .issue-box .issue-form input,#answer-app .issue-box .issue-form textarea{border:none;outline:none}#answer-app .issue-box .issue-form .issue-input{border-bottom:1px dotted #ebebeb;height:80px;padding:0 30px;width:720px}#answer-app .issue-box .issue-form .issue-input textarea{font-size:18px;height:100%;resize:none;width:100%}#answer-app .issue-box .issue-form .issue-input textarea::-moz-placeholder{color:#aaa}#answer-app .issue-box .issue-form .issue-input textarea::placeholder{color:#aaa}#answer-app .issue-box .issue-form .issue-replenish{display:block;font-size:14px;height:360px;padding:20px 30px;resize:none;width:720px}#answer-app .issue-box .issue-form .issue-replenish::-moz-placeholder{color:#aaa}#answer-app .issue-box .issue-form .issue-replenish::placeholder{color:#aaa}#answer-app .issue-bottom{background-color:#f6f6f6;border-radius:0 0 10px 10px;height:50px;justify-content:space-between;padding-left:30px}#answer-app .issue-bottom .option-box{color:#7f7f7f;cursor:pointer;font-size:14px}#answer-app .issue-bottom .option-box .option-icon{height:12px;margin-right:6px;width:12px}#answer-app .issue-bottom .issue-btn{background-color:#fddf6d;border-radius:0 0 10px;color:#333;cursor:pointer;font-size:14px;height:50px;width:120px}#answer-app .i-answer-box{background-color:#fff;border-radius:10px;box-shadow:0 0 3px #0000001e;flex-direction:column;height:660px;max-height:92vh;position:relative;width:720px}#answer-app .i-answer-box .close-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .i-answer-box .question-header{border-bottom:1px solid #ebebeb;padding:25px 8px 25px 20px}#answer-app .i-answer-box .question-header .question-title{color:#000;font-size:18px;font-weight:650;margin-bottom:20px}#answer-app .i-answer-box .question-header .question-title .question-icon{background-color:#72db86;border-radius:50%;color:#fff;font-size:13px;font-weight:650;height:20px;margin-right:12px;margin-top:3px;width:20px}#answer-app .i-answer-box .question-header .question-replenish{color:#7f7f7f;font-size:13px;font-weight:400;line-height:24px;max-height:87px;overflow:auto;padding-left:33px}#answer-app .i-answer-box .question-middle{flex:1;height:calc(100% - 172px);padding:23px 20px}#answer-app .i-answer-box .question-middle .question-icon{background-color:#62b1ff;border-radius:50%;color:#fff;font-size:13px;font-weight:650;height:20px;margin-right:12px;width:20px}#answer-app .i-answer-box .question-middle .question-textarea{background-color:transparent;border:none;font-size:14px;outline:none;overflow:auto;resize:none;width:100%}#answer-app .i-answer-box .question-middle .question-textarea.placeholder:after{color:#999;content:"输入图文内容回答提问(支持直接粘贴图片)"}#answer-app .i-answer-box .question-middle .question-textarea img{max-width:100%}#answer-app .detail-image-mask{background-color:#fffc;border:none;height:100%;left:0;max-height:none;max-width:none;position:fixed;top:0;width:100%;z-index:100}#answer-app .detail-image-mask .detail-image{background-color:#111;border-radius:8px;height:80vh;width:80vw}#answer-app .detail-image-mask .detail-image .detail-img{max-height:100%;max-width:100%}#answer-app .box-item{align-items:center;background-color:#edf2fc;border:1px solid #ebeef5;border-radius:4px;display:flex;font-size:14px;justify-content:space-between;left:50%;min-width:380px;padding:15px 15px 15px 20px;position:fixed;transform:translate(-50%);transition:opacity .3s,transform .4s,top .4s;z-index:5000}#answer-app .box-item-success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}#answer-app .box-item-warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}#answer-app .box-item-error{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}#answer-app .alert-form{background-color:#000000b3;display:block;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:2100}#answer-app .alert-form *{box-sizing:border-box}#answer-app .alert-form .reports{height:440px}#answer-app .alert-form .reports .radio-area{margin-bottom:40px}#answer-app .alert-form .reports .radio-area .radio-area-item{color:#606266;cursor:pointer;font-size:14px;margin-right:10px}#answer-app .alert-form .reports .radio-area .radio-area-item.pitch .radio-area-frame{background-color:#50e3c2;border-color:#50e3c2}#answer-app .alert-form .reports .radio-area .radio-area-item.pitch .radio-area-frame:after{transform:rotate(45deg) scaleY(1)}#answer-app .alert-form .reports .radio-area .radio-area-item .radio-area-frame{border:1px solid #dcdfe6;border-radius:2px;height:14px;margin-right:10px;position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);width:14px}#answer-app .alert-form .reports .radio-area .radio-area-item .radio-area-frame:after{border:1px solid #fff;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}#answer-app .alert-form .el-checkbox-group{font-size:0}#answer-app .alert-form .comments{background-color:#fff;border:none;border-radius:8px 8px 6px 6px;display:block;height:440px;left:50%;max-height:90vh;max-width:90vw;position:fixed;top:50%;transform:translate(-50%,-50%);width:740px;z-index:11}#answer-app .alert-form .comments .text-box{position:relative}#answer-app .alert-form .comments .text-num{bottom:10px;color:#999;font-size:12px;position:absolute;right:10px}#answer-app .alert-form .comments .form{display:block;padding:34px 30px 40px;width:100%}#answer-app .alert-form .comments .form textarea{background:#f7f7f7;border:1px solid #f7f7f7;border-radius:5px;display:block;font-size:14px;height:172px;line-height:22px;margin-bottom:30px;outline:none;padding:18px;resize:none;width:100%}#answer-app .alert-form .head{align-items:center;background:#333;border-radius:6px 6px 0 0;color:#fff;display:flex;font-size:17px;height:56px;justify-content:space-between;padding:0 18px 0 30px}#answer-app .alert-form .head .close{color:#b3b3b3;cursor:pointer;font-size:14px}#answer-app .alert-form .footer{align-items:center;display:flex;justify-content:center}#answer-app .alert-form .footer button[type=button]{margin-right:20px}#answer-app .alert-form .footer button{background-color:#fff;border:1px solid #999;border-radius:5px;color:#333;cursor:pointer;font-size:14px;height:38px;outline:none;width:128px}#answer-app .alert-form .footer button[type=submit]{background-color:#50e3c2;border-color:#50e3c2;color:#fff}#answer-app .alert-form .el-checkbox__input.is-checked .el-checkbox__inner,#answer-app .alert-form .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#50e3c2;border-color:#50e3c2}#answer-app .alert-form .el-checkbox__inner:hover,#answer-app .alert-form .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#50e3c2}#answer-app .alert-form .el-checkbox__input.is-checked+.el-checkbox__label{color:#50e3c2}#answer-app .bottom-tps{color:#555;font-size:12px;font-weight:400;min-width:508px;padding:30px 0;text-align:center}#answer-app .avatar-box{background-color:#f4f8ff;border:1px solid #dce0ea;border-radius:10px;box-shadow:0 0 6px #00000034;flex-direction:column;height:101px;position:absolute;top:30px;width:140px;z-index:100}#answer-app .avatar-box .avatar-mask{cursor:auto;height:100%;left:0;position:fixed;top:0;width:100%;z-index:-1}#answer-app .avatar-box .avatar-item{color:#333;cursor:pointer;font-size:14px;height:50px}#answer-app .avatar-box .avatar-item:not(:last-of-type){border-bottom:1px dotted #d7d7d7}#answer-app .avatar-box .avatar-icon{height:16px;margin-right:5px;width:16px}#answer-app .edit-answers{background-color:#fff;border-radius:10px;box-shadow:0 0 3px #0000001e;display:flex;flex-direction:column;height:400px;position:relative;width:720px}#answer-app .edit-answers .close-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .edit-answers .titletitle{border-bottom:1px solid #ebebeb;color:#000;font-size:14px;font-weight:650;height:64px;padding-left:20px;padding-top:20px}#answer-app .edit-answers .question-textarea{border:none;color:#555;display:block;flex:1;font-size:14px;line-height:26px;outline:none;overflow:auto;padding:20px;resize:none;width:100%}#answer-app .edit-answers .question-textarea.placeholder:after{color:#999;content:"输入图文内容回答提问(支持直接粘贴图片)"}#answer-app .edit-answers .question-textarea img{max-width:100%}#answer-app .msg-container{align-items:center;display:flex;line-height:16px}#answer-app .msg-container .iconfont{margin-right:5px}#answer-app .msg-enter-active{animation:anim .5s}#answer-app .msg-leave-active{animation:anim .5s reverse}@keyframes anim{0%{opacity:0;transform:translate(-50%,-200%)}to{opacity:1;transform:translate(-50%)}}#answer-app .my-popover .popover-box{background-color:#fff;border-radius:10px;box-shadow:0 0 3px #0000001e;flex-direction:column;height:616px;max-height:92vh;padding-top:30px;position:relative;width:750px}#answer-app .my-popover .popover-box .cross-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .my-popover .popover-box .tab-list{color:#aaa;font-size:16px;margin-bottom:30px}#answer-app .my-popover .popover-box .tab-list .tab-item{cursor:pointer}#answer-app .my-popover .popover-box .tab-list .tab-item .quantity{margin-left:10px}#answer-app .my-popover .popover-box .tab-list .tab-item.pitch{color:#000;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-weight:650}#answer-app .my-popover .popover-box .tab-list .tab-item.pitch .quantity{color:#555;font-weight:400}#answer-app .my-popover .popover-box .tab-list .long-string{background-color:#d7d7d7;height:17px;margin:0 20px;width:1px}#answer-app .my-popover .popover-box .empty-box{background-color:#fff;border:1px solid #ebebeb;border-radius:6px;flex-direction:column;height:490px;margin:0 auto;width:690px}#answer-app .my-popover .popover-box .empty-box .dot-list .item{height:8px;width:8px}#answer-app .my-popover .popover-box .empty-box .dot-list .item:not(:last-of-type){margin-right:5px}#answer-app .my-popover .popover-box .empty-box .empty-icon{height:100px;margin-bottom:15px;margin-top:10px;width:100px}#answer-app .my-popover .popover-box .empty-box .empty-hint{color:#7f7f7f;font-size:13px;line-height:22px}#answer-app .my-popover .popover-box .content-box{height:490px;margin:0 auto;overflow:auto;padding-right:10px;width:690px}#answer-app .my-popover .popover-box .content-box .icon{border-radius:50%;color:#fff;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:13px;font-weight:650;height:20px;line-height:20px;margin-right:17px;width:20px}#answer-app .my-popover .popover-box .content-box .icon.q{background-color:#72db86}#answer-app .my-popover .popover-box .content-box .icon.a{background-color:#62b1ff}#answer-app .my-popover .popover-box .content-box .item{border-bottom:1px dotted #ebebeb;cursor:pointer;padding:20px 0}#answer-app .my-popover .popover-box .content-box .item .centre{flex-direction:column}#answer-app .my-popover .popover-box .content-box .item .centre .info{color:#555;font-size:12px;margin-bottom:10px}#answer-app .my-popover .popover-box .content-box .item .centre .info .time{color:#aaa;margin-left:8px}#answer-app .my-popover .popover-box .content-box .item .centre .titletitle{color:#333;font-size:14px;margin-bottom:10px;min-height:21px;width:532px}#answer-app .my-popover .popover-box .content-box .item .centre .titletitle img{height:80px}#answer-app .my-popover .popover-box .content-box .item .centre .text{color:#aaa;font-size:12px;width:532px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box{cursor:pointer;position:relative}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .text{color:#333;font-size:13px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .arrows{height:5px;margin-left:6px;width:8px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup{background-color:#fff;border-radius:10px;box-shadow:0 0 6px #00000034;flex-direction:column;height:101px;position:absolute;right:3px;top:28px;width:140px;z-index:1}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-mask{height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:-1}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item{color:#555;font-size:14px;justify-content:space-between;padding:0 10px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item:hover{color:#000}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item.pitch{color:#fa6b11}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item.pitch .state-popup-icon{display:block}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item:not(:last-of-type){border-bottom:1px dotted #e3e3e3}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item .state-popup-icon{display:none;height:8px;width:11px}#answer-app .my-popover .popover-box .content-box .item .operate-box .edit-icon{cursor:pointer;height:16px;margin-left:30px;width:16px}#answer-app .my-popover .popover-box .content-box.collect-list .item{border-bottom:1px dotted #ebebeb;padding:20px 0}#answer-app .my-popover .popover-box .content-box.collect-list .item .delete-box .delete-icon{cursor:pointer}#answer-app .my-popover .popover-box .content-box.questions-list .item .new-answer{color:#f95d5d}#answer-app .my-popover .popover-box .content-box.questions-list .item .new-answer .long-string{background-color:#d7d7d7;height:12px;margin:0 8px;width:1px}#answer-app .popover-mask{background-color:#00000080;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1000}#answer-app .respond-add{background-color:#62b1ff;border-radius:50%;cursor:pointer;height:30px;position:relative;width:30px}#answer-app .respond-add.angle:after{background:#f6f6f6;border:1px solid #e4e7ed;border-bottom-color:transparent!important;border-right-color:transparent!important;border-top-left-radius:2px;bottom:-17px;content:"";height:10px;left:50%;position:absolute;transform:translate(-50%) rotate(45deg);width:10px;z-index:3000}#answer-app .respond-add .respond-add-icon{height:14px;width:14px}#answer-app .respond-list-mask{height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1}#answer-app .respond-pop-mask{align-items:center;background:rgba(0,0,0,.6);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:10}#answer-app .respond-pop-mask .respond-pop{background-color:#fff;border:1px solid #e5e5e5;border-radius:20px;box-shadow:0 0 15px #00000036;-webkit-box-shadow:0 0 15px rgba(0,0,0,.21);height:500px;width:600px}#answer-app .respond-pop-mask .respond-pop .respond-pop-title{align-items:center;border-bottom:1px dotted hsla(0,0%,84%,.5);color:#555;display:flex;font-size:16px;height:50px;justify-content:center;position:relative}#answer-app .respond-pop-mask .respond-pop .respond-pop-title .respond-pop-amount{color:#000;font-weight:650;margin:0 8px}#answer-app .respond-pop-mask .respond-pop .respond-pop-title .respond-title-icon{cursor:pointer;position:absolute;right:20px;width:20px}#answer-app .respond-pop-mask .respond-pop .respond-list{height:450px;overflow:auto}#answer-app .respond-pop-mask .respond-pop .respond-list::-webkit-scrollbar-track{border-radius:10px}#answer-app .respond-pop-mask .respond-pop .respond-list::-webkit-scrollbar-thumb{background-color:#0003;border-radius:10px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#answer-app .respond-pop-mask .respond-pop .respond-list::-webkit-scrollbar{width:6px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item{display:flex;padding:20px 0 0 20px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item:not(:last-of-type) .respond-content{border-bottom:1px dotted hsla(0,0%,84%,.5)}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-code{align-items:center;background-color:#f6f6f6;border-radius:10px;box-sizing:border-box;cursor:pointer;display:flex;font-family:emojifont;font-size:25px;height:60px;justify-content:center;margin-right:20px;width:60px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-code.pitch{background-color:#f6f6bd;border:1px solid #ccd003}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content{padding-bottom:10px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content .respond-total{color:#7f7f7f;font-size:14px;margin-bottom:10px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content .user-item{align-items:center;color:#555;cursor:pointer;display:inline-flex;font-size:14px;margin-bottom:10px;margin-right:20px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content .user-item .user-avatar{border-radius:50%;height:26px;margin-right:10px;width:26px}#answer-app .respond-pop-mask .respond-pop .respond-pop-no{flex-direction:column;height:100%;position:relative;width:100%}#answer-app .respond-pop-mask .respond-pop .respond-pop-no .respond-title-icon{cursor:pointer;position:absolute;right:20px;top:20px;width:20px}#answer-app .respond-pop-mask .respond-pop .respond-pop-no .respond-pop-no-icon{margin-bottom:15px;width:90px}#answer-app .respond-pop-mask .respond-pop .respond-pop-no .respond-pop-no-text{color:#7f7f7f;font-size:13px;line-height:22px}#answer-app .slit-pop-mask{align-items:center;background:rgba(0,0,0,.6);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:10}#answer-app .slit-pop-box{background-color:#fff;border:1px solid #e5e5e5;border-radius:11px;box-shadow:0 0 15px #00000036;display:flex;padding:60px 50px 48px 38px;width:523px}#answer-app .slit-pop-box .slit-left{width:50px}#answer-app .slit-pop-box .slit-left .slit-left-icon{height:60px;margin-top:-8px;width:50px}#answer-app .slit-pop-box .slit-box{flex:1;margin-left:15px}#answer-app .slit-pop-box .slit-box .slit-head{align-items:flex-start;display:flex;flex:1;flex-direction:column;height:54px;justify-content:space-between}#answer-app .slit-pop-box .slit-box .slit-head .slit-head-title{color:#333;font-size:20px;font-weight:650;justify-content:space-between;width:100%}#answer-app .slit-pop-box .slit-box .slit-head .slit-head-title a{font-size:13px;font-weight:100;text-decoration:underline!important}#answer-app .slit-pop-box .slit-box .slit-head .in-all{color:#7f7f7f;font-size:13px}#answer-app .slit-pop-box .slit-box .slit-head .in-all>span{color:#000;font-weight:650}#answer-app .slit-pop-box .slit-box .coin-quantity{align-items:center;display:flex;margin-bottom:27px;margin-top:20px}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item{background-color:#f0f2f5;border:1px solid #d7d7d7;border-radius:5px;color:#000;cursor:pointer;font-size:20px;font-weight:650;height:46px;line-height:46px;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:78px}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item>span{color:#555;font-size:14px;font-weight:400}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item:not(:last-of-type){margin-right:16px}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item.coin-pitch{background-color:#333;border-color:#333;color:#fff}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item.coin-pitch>span{color:#fff}#answer-app .slit-pop-box .slit-box .slit-input{border:1px solid #d7d7d7;border-radius:8px;font-size:15px;height:38px;outline:none;overflow:hidden;padding-left:8px;width:360px}#answer-app .slit-pop-box .slit-box .slit-input::-webkit-inner-spin-button,#answer-app .slit-pop-box .slit-box .slit-input::-webkit-outer-spin-button{-webkit-appearance:none}#answer-app .slit-pop-box .slit-box .slit-input[type=number]{-moz-appearance:textfield}#answer-app .slit-pop-box .slit-box .slit-input .el-input__inner{border:none;margin:0;outline:none;padding:0 54px 0 0}#answer-app .slit-pop-box .slit-box .message-box{display:flex;flex-direction:column}#answer-app .slit-pop-box .slit-box .message-box .message-hint{color:#000;font-size:14px;margin-bottom:12px;margin-top:29px}#answer-app .slit-pop-box .slit-box .operation{display:flex;justify-content:flex-end;margin-top:48px}#answer-app .slit-pop-box .slit-box .operation .operation-item{border:1px solid #797979;border-radius:45px;color:#000;cursor:pointer;font-size:16px;height:41px;margin-left:16px;width:120px}#answer-app .slit-pop-box .slit-box .operation .operation-item.greenBj{background-color:#50e3c2;border-color:#50e3c2!important}#answer-app .no-jituobi-pop-box{background-color:#fff;border:1px solid #e5e5e5;border-radius:11px;box-shadow:0 0 15px #00000036;display:flex;flex-direction:column;padding-bottom:55px;width:520px}#answer-app .no-jituobi-pop-box .no-jituobi-close{align-self:flex-end;cursor:pointer;height:16px;margin:10px;width:16px}#answer-app .no-jituobi-pop-box .no-jituobi-head{color:#333;font-size:16px;margin:23px auto 42px}#answer-app .no-jituobi-pop-box .no-jituobi-head .bi-icon{height:60px;width:50px}#answer-app .no-jituobi-pop-box .strategy-btn{border-radius:100px;color:#000;cursor:pointer;font-size:16px;height:43px;margin:0 auto;width:198px}#answer-app .no-jituobi-pop-box .strategy-btn.greenBj{background-color:#50e3c2;border-color:#50e3c2!important}#answer-app .no-jituobi-pop-box .strategy-btn .strategy-icon{height:16px;margin-left:8px;width:16px}#answer-app .answer-empty-box{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;flex-direction:column;height:321px;height:300px;justify-content:center;margin-bottom:21px;width:626px}.el-popover.el-popper{border:1px solid #ebebeb;border-radius:10px;padding:0}.el-popper.is-light .el-popper__arrow:before,.respond-list-box{background:#f6f6f6}.respond-list-box{border-radius:10px;width:470px}.respond-list-box .respond-list-title{color:#333;font-size:14px;line-height:22px;padding-bottom:25px;padding-left:20px;padding-top:16px}.respond-list-box .respond-list{display:flex;display:grid;flex-wrap:wrap;grid-template-columns:repeat(10,1fr)}.respond-list-box .respond-list .respond-item{font-family:emojifont;font-size:20px;margin-bottom:20px;text-align:center}.respond-list-box .respond-list .respond-item .respond-item-key{cursor:pointer;font-family:emojifont;position:relative;z-index:1}.respond-list-box .respond-list .respond-item .respond-item-key:hover:after{background-color:#eee;border-radius:4px;content:"";display:block;height:35px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:35px;z-index:-1} diff --git a/.output/public/static/entry.5472f4d7.js b/.output/public/static/entry.5472f4d7.js deleted file mode 100644 index ea75d98..0000000 --- a/.output/public/static/entry.5472f4d7.js +++ /dev/null @@ -1,7 +0,0 @@ -function Ei(e,t){const n=Object.create(null),s=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const Be={},Un=[],kt=()=>{},sA=()=>!1,oA=/^on[^a-z]/,Ds=e=>oA.test(e),ki=e=>e.startsWith("onUpdate:"),Ue=Object.assign,xi=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},rA=Object.prototype.hasOwnProperty,ge=(e,t)=>rA.call(e,t),fe=Array.isArray,jn=e=>Mo(e)==="[object Map]",Rc=e=>Mo(e)==="[object Set]",ue=e=>typeof e=="function",Te=e=>typeof e=="string",No=e=>typeof e=="symbol",xe=e=>e!==null&&typeof e=="object",Bc=e=>(xe(e)||ue(e))&&ue(e.then)&&ue(e.catch),Ic=Object.prototype.toString,Mo=e=>Ic.call(e),iA=e=>Mo(e).slice(8,-1),Oc=e=>Mo(e)==="[object Object]",Si=e=>Te(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Cs=Ei(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Do=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},lA=/-(\w)/g,Mt=Do(e=>e.replace(lA,(t,n)=>n?n.toUpperCase():"")),aA=/\B([A-Z])/g,Pn=Do(e=>e.replace(aA,"-$1").toLowerCase()),Fo=Do(e=>e.charAt(0).toUpperCase()+e.slice(1)),xr=Do(e=>e?`on${Fo(e)}`:""),Rn=(e,t)=>!Object.is(e,t),ao=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},zr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Pc=e=>{const t=Te(e)?Number(e):NaN;return isNaN(t)?e:t};let ql;const Yr=()=>ql||(ql=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ze(e){if(fe(e)){const t={};for(let n=0;n{if(n){const s=n.split(uA);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ee(e){let t="";if(Te(e))t=e;else if(fe(e))for(let n=0;nTe(e)?e:e==null?"":fe(e)||xe(e)&&(e.toString===Ic||!ue(e.toString))?JSON.stringify(e,Nc,2):String(e),Nc=(e,t)=>t&&t.__v_isRef?Nc(e,t.value):jn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o])=>(n[`${s} =>`]=o,n),{})}:Rc(t)?{[`Set(${t.size})`]:[...t.values()]}:xe(t)&&!fe(t)&&!Oc(t)?String(t):t;let dt;class Mc{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=dt,!t&&dt&&(this.index=(dt.scopes||(dt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=dt;try{return dt=this,t()}finally{dt=n}}}on(){dt=this}off(){dt=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Fc=e=>(e.w&an)>0,Hc=e=>(e.n&an)>0,yA=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(u==="length"||!No(u)&&u>=c)&&l.push(f)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":fe(e)?Si(n)&&l.push(i.get("length")):(l.push(i.get(xn)),jn(e)&&l.push(i.get(Wr)));break;case"delete":fe(e)||(l.push(i.get(xn)),jn(e)&&l.push(i.get(Wr)));break;case"set":jn(e)&&l.push(i.get(xn));break}if(l.length===1)l[0]&&Vr(l[0]);else{const c=[];for(const f of l)f&&c.push(...f);Vr(Ti(c))}}function Vr(e,t){const n=fe(e)?e:[...e];for(const s of n)s.computed&&Yl(s);for(const s of n)s.computed||Yl(s)}function Yl(e,t){(e!==Ct||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function wA(e,t){var n;return(n=yo.get(e))==null?void 0:n.get(t)}const _A=Ei("__proto__,__v_isRef,__isVue"),Qc=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(No)),Jl=CA();function CA(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=ye(this);for(let r=0,i=this.length;r{e[t]=function(...n){ns();const s=ye(this)[t].apply(this,n);return ss(),s}}),e}function EA(e){const t=ye(this);return rt(t,"has",e),t.hasOwnProperty(e)}class Kc{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,s){const o=this._isReadonly,r=this._shallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw"&&s===(o?r?DA:Jc:r?Yc:zc).get(t))return t;const i=fe(t);if(!o){if(i&&ge(Jl,n))return Reflect.get(Jl,n,s);if(n==="hasOwnProperty")return EA}const l=Reflect.get(t,n,s);return(No(n)?Qc.has(n):_A(n))||(o||rt(t,"get",n),r)?l:Le(l)?i&&Si(n)?l:l.value:xe(l)?o?Pi(l):qt(l):l}}class qc extends Kc{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];if(Bn(r)&&Le(r)&&!Le(s))return!1;if(!this._shallow&&(!bo(s)&&!Bn(s)&&(r=ye(r),s=ye(s)),!fe(t)&&Le(r)&&!Le(s)))return r.value=s,!0;const i=fe(t)&&Si(n)?Number(n)e,Ho=e=>Reflect.getPrototypeOf(e);function Vs(e,t,n=!1,s=!1){e=e.__v_raw;const o=ye(e),r=ye(t);n||(Rn(t,r)&&rt(o,"get",t),rt(o,"get",r));const{has:i}=Ho(o),l=s?Bi:n?Ni:Ts;if(i.call(o,t))return l(e.get(t));if(i.call(o,r))return l(e.get(r));e!==o&&e.get(t)}function Gs(e,t=!1){const n=this.__v_raw,s=ye(n),o=ye(e);return t||(Rn(e,o)&&rt(s,"has",e),rt(s,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Xs(e,t=!1){return e=e.__v_raw,!t&&rt(ye(e),"iterate",xn),Reflect.get(e,"size",e)}function Wl(e){e=ye(e);const t=ye(this);return Ho(t).has.call(t,e)||(t.add(e),Qt(t,"add",e,e)),this}function Vl(e,t){t=ye(t);const n=ye(this),{has:s,get:o}=Ho(n);let r=s.call(n,e);r||(e=ye(e),r=s.call(n,e));const i=o.call(n,e);return n.set(e,t),r?Rn(t,i)&&Qt(n,"set",e,t):Qt(n,"add",e,t),this}function Gl(e){const t=ye(this),{has:n,get:s}=Ho(t);let o=n.call(t,e);o||(e=ye(e),o=n.call(t,e)),s&&s.call(t,e);const r=t.delete(e);return o&&Qt(t,"delete",e,void 0),r}function Xl(){const e=ye(this),t=e.size!==0,n=e.clear();return t&&Qt(e,"clear",void 0,void 0),n}function Zs(e,t){return function(s,o){const r=this,i=r.__v_raw,l=ye(i),c=t?Bi:e?Ni:Ts;return!e&&rt(l,"iterate",xn),i.forEach((f,u)=>s.call(o,c(f),c(u),r))}}function $s(e,t,n){return function(...s){const o=this.__v_raw,r=ye(o),i=jn(r),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=o[e](...s),u=n?Bi:t?Ni:Ts;return!t&&rt(r,"iterate",c?Wr:xn),{next(){const{value:a,done:A}=f.next();return A?{value:a,done:A}:{value:l?[u(a[0]),u(a[1])]:u(a),done:A}},[Symbol.iterator](){return this}}}}function Gt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function RA(){const e={get(r){return Vs(this,r)},get size(){return Xs(this)},has:Gs,add:Wl,set:Vl,delete:Gl,clear:Xl,forEach:Zs(!1,!1)},t={get(r){return Vs(this,r,!1,!0)},get size(){return Xs(this)},has:Gs,add:Wl,set:Vl,delete:Gl,clear:Xl,forEach:Zs(!1,!0)},n={get(r){return Vs(this,r,!0)},get size(){return Xs(this,!0)},has(r){return Gs.call(this,r,!0)},add:Gt("add"),set:Gt("set"),delete:Gt("delete"),clear:Gt("clear"),forEach:Zs(!0,!1)},s={get(r){return Vs(this,r,!0,!0)},get size(){return Xs(this,!0)},has(r){return Gs.call(this,r,!0)},add:Gt("add"),set:Gt("set"),delete:Gt("delete"),clear:Gt("clear"),forEach:Zs(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(r=>{e[r]=$s(r,!1,!1),n[r]=$s(r,!0,!1),t[r]=$s(r,!1,!0),s[r]=$s(r,!0,!0)}),[e,n,t,s]}const[BA,IA,OA,PA]=RA();function Ii(e,t){const n=t?e?PA:OA:e?IA:BA;return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ge(n,o)&&o in s?n:s,o,r)}const LA={get:Ii(!1,!1)},NA={get:Ii(!1,!0)},MA={get:Ii(!0,!1)},zc=new WeakMap,Yc=new WeakMap,Jc=new WeakMap,DA=new WeakMap;function FA(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function HA(e){return e.__v_skip||!Object.isExtensible(e)?0:FA(iA(e))}function qt(e){return Bn(e)?e:Li(e,!1,xA,LA,zc)}function Oi(e){return Li(e,!1,TA,NA,Yc)}function Pi(e){return Li(e,!0,SA,MA,Jc)}function Li(e,t,n,s,o){if(!xe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=o.get(e);if(r)return r;const i=HA(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return o.set(e,l),l}function Qn(e){return Bn(e)?Qn(e.__v_raw):!!(e&&e.__v_isReactive)}function Bn(e){return!!(e&&e.__v_isReadonly)}function bo(e){return!!(e&&e.__v_isShallow)}function Wc(e){return Qn(e)||Bn(e)}function ye(e){const t=e&&e.__v_raw;return t?ye(t):e}function Vc(e){return vo(e,"__v_skip",!0),e}const Ts=e=>xe(e)?qt(e):e,Ni=e=>xe(e)?Pi(e):e;function Gc(e){rn&&Ct&&(e=ye(e),jc(e.dep||(e.dep=Ti())))}function Xc(e,t){e=ye(e);const n=e.dep;n&&Vr(n)}function Le(e){return!!(e&&e.__v_isRef===!0)}function N(e){return Zc(e,!1)}function Zl(e){return Zc(e,!0)}function Zc(e,t){return Le(e)?e:new UA(e,t)}class UA{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ye(t),this._value=n?t:Ts(t)}get value(){return Gc(this),this._value}set value(t){const n=this.__v_isShallow||bo(t)||Bn(t);t=n?t:ye(t),Rn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Ts(t),Xc(this))}}function H(e){return Le(e)?e.value:e}const jA={get:(e,t,n)=>H(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Le(o)&&!Le(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function $c(e){return Qn(e)?e:new Proxy(e,jA)}class QA{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return wA(ye(this._object),this._key)}}class KA{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function eu(e,t,n){return Le(e)?e:ue(e)?new KA(e):xe(e)&&arguments.length>1?qA(e,t,n):N(e)}function qA(e,t,n){const s=e[t];return Le(s)?s:new QA(e,t,n)}class zA{constructor(t,n,s,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Ri(t,()=>{this._dirty||(this._dirty=!0,Xc(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=s}get value(){const t=ye(this);return Gc(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function YA(e,t,n=!1){let s,o;const r=ue(e);return r?(s=e,o=kt):(s=e.get,o=e.set),new zA(s,o,r||!o,n)}function JA(e,...t){}function ln(e,t,n,s){let o;try{o=s?e(...s):e()}catch(r){os(r,t,n)}return o}function yt(e,t,n,s){if(ue(e)){const r=ln(e,t,n,s);return r&&Bc(r)&&r.catch(i=>{os(i,t,n)}),r}const o=[];for(let r=0;r>>1,o=Ve[s],r=Bs(o);rIt&&Ve.splice(t,1)}function Xr(e){fe(e)?Kn.push(...e):(!Ut||!Ut.includes(e,e.allowRecurse?Cn+1:Cn))&&Kn.push(e),nu()}function $l(e,t=Rs?It+1:0){for(;tBs(n)-Bs(s)),Cn=0;Cne.id==null?1/0:e.id,XA=(e,t)=>{const n=Bs(e)-Bs(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function su(e){Gr=!1,Rs=!0,Ve.sort(XA);const t=kt;try{for(It=0;ItTe(m)?m.trim():m)),a&&(o=n.map(zr))}let l,c=s[l=xr(t)]||s[l=xr(Mt(t))];!c&&r&&(c=s[l=xr(Pn(t))]),c&&yt(c,e,6,o);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,yt(f,e,6,o)}}function ou(e,t,n=!1){const s=t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let i={},l=!1;if(!ue(e)){const c=f=>{const u=ou(f,t,!0);u&&(l=!0,Ue(i,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!r&&!l?(xe(e)&&s.set(e,null),null):(fe(r)?r.forEach(c=>i[c]=null):Ue(i,r),xe(e)&&s.set(e,i),i)}function jo(e,t){return!e||!Ds(t)?!1:(t=t.slice(2).replace(/Once$/,""),ge(e,t[0].toLowerCase()+t.slice(1))||ge(e,Pn(t))||ge(e,t))}let Qe=null,Qo=null;function _o(e){const t=Qe;return Qe=e,Qo=e&&e.type.__scopeId||null,t}function Wx(e){Qo=e}function Vx(){Qo=null}function Pt(e,t=Qe,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&Aa(-1);const r=_o(t);let i;try{i=e(...o)}finally{_o(r),s._d&&Aa(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Sr(e){const{type:t,vnode:n,proxy:s,withProxy:o,props:r,propsOptions:[i],slots:l,attrs:c,emit:f,render:u,renderCache:a,data:A,setupState:m,ctx:_,inheritAttrs:C}=e;let P,V;const Y=_o(e);try{if(n.shapeFlag&4){const k=o||s,M=k;P=mt(u.call(M,k,a,r,m,A,_)),V=c}else{const k=t;P=mt(k.length>1?k(r,{attrs:c,slots:l,emit:f}):k(r,null)),V=t.props?c:eh(c)}}catch(k){xs.length=0,os(k,e,1),P=_e($e)}let v=P;if(V&&C!==!1){const k=Object.keys(V),{shapeFlag:M}=v;k.length&&M&7&&(i&&k.some(ki)&&(V=th(V,i)),v=cn(v,V))}return n.dirs&&(v=cn(v),v.dirs=v.dirs?v.dirs.concat(n.dirs):n.dirs),n.transition&&(v.transition=n.transition),P=v,_o(Y),P}function $A(e){let t;for(let n=0;n{let t;for(const n in e)(n==="class"||n==="style"||Ds(n))&&((t||(t={}))[n]=e[n]);return t},th=(e,t)=>{const n={};for(const s in e)(!ki(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function nh(e,t,n){const{props:s,children:o,component:r}=e,{props:i,children:l,patchFlag:c}=t,f=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ea(s,i,f):!!i;if(c&8){const u=t.dynamicProps;for(let a=0;ae.__isSuspense,oh={name:"Suspense",__isSuspense:!0,process(e,t,n,s,o,r,i,l,c,f){e==null?ih(t,n,s,o,r,i,l,c,f):lh(e,t,n,s,o,i,l,c,f)},hydrate:ah,create:Hi,normalize:ch},rh=oh;function Is(e,t){const n=e.props&&e.props[t];ue(n)&&n()}function ih(e,t,n,s,o,r,i,l,c){const{p:f,o:{createElement:u}}=c,a=u("div"),A=e.suspense=Hi(e,o,s,t,a,n,r,i,l,c);f(null,A.pendingBranch=e.ssContent,a,null,s,A,r,i),A.deps>0?(Is(e,"onPending"),Is(e,"onFallback"),f(null,e.ssFallback,t,n,s,null,r,i),qn(A,e.ssFallback)):A.resolve(!1,!0)}function lh(e,t,n,s,o,r,i,l,{p:c,um:f,o:{createElement:u}}){const a=t.suspense=e.suspense;a.vnode=t,t.el=e.el;const A=t.ssContent,m=t.ssFallback,{activeBranch:_,pendingBranch:C,isInFallback:P,isHydrating:V}=a;if(C)a.pendingBranch=A,Ot(A,C)?(c(C,A,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0?a.resolve():P&&(c(_,m,n,s,o,null,r,i,l),qn(a,m))):(a.pendingId++,V?(a.isHydrating=!1,a.activeBranch=C):f(C,o,a),a.deps=0,a.effects.length=0,a.hiddenContainer=u("div"),P?(c(null,A,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0?a.resolve():(c(_,m,n,s,o,null,r,i,l),qn(a,m))):_&&Ot(A,_)?(c(_,A,n,s,o,a,r,i,l),a.resolve(!0)):(c(null,A,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0&&a.resolve()));else if(_&&Ot(A,_))c(_,A,n,s,o,a,r,i,l),qn(a,A);else if(Is(t,"onPending"),a.pendingBranch=A,a.pendingId++,c(null,A,a.hiddenContainer,null,o,a,r,i,l),a.deps<=0)a.resolve();else{const{timeout:Y,pendingId:v}=a;Y>0?setTimeout(()=>{a.pendingId===v&&a.fallback(m)},Y):Y===0&&a.fallback(m)}}function Hi(e,t,n,s,o,r,i,l,c,f,u=!1){const{p:a,m:A,um:m,n:_,o:{parentNode:C,remove:P}}=f;let V;const Y=uh(e);Y&&t!=null&&t.pendingBranch&&(V=t.pendingId,t.deps++);const v=e.props?Pc(e.props.timeout):void 0,k={vnode:e,parent:t,parentComponent:n,isSVG:i,container:s,hiddenContainer:o,anchor:r,deps:0,pendingId:0,timeout:typeof v=="number"?v:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:u,isUnmounted:!1,effects:[],resolve(M=!1,ne=!1){const{vnode:J,activeBranch:z,pendingBranch:$,pendingId:G,effects:ie,parentComponent:K,container:ae}=k;let de=!1;if(k.isHydrating)k.isHydrating=!1;else if(!M){de=z&&$.transition&&$.transition.mode==="out-in",de&&(z.transition.afterLeave=()=>{G===k.pendingId&&(A($,ae,le,0),Xr(ie))});let{anchor:le}=k;z&&(le=_(z),m(z,K,k,!0)),de||A($,ae,le,0)}qn(k,$),k.pendingBranch=null,k.isInFallback=!1;let pe=k.parent,F=!1;for(;pe;){if(pe.pendingBranch){pe.effects.push(...ie),F=!0;break}pe=pe.parent}!F&&!de&&Xr(ie),k.effects=[],Y&&t&&t.pendingBranch&&V===t.pendingId&&(t.deps--,t.deps===0&&!ne&&t.resolve()),Is(J,"onResolve")},fallback(M){if(!k.pendingBranch)return;const{vnode:ne,activeBranch:J,parentComponent:z,container:$,isSVG:G}=k;Is(ne,"onFallback");const ie=_(J),K=()=>{k.isInFallback&&(a(null,M,$,ie,z,null,G,l,c),qn(k,M))},ae=M.transition&&M.transition.mode==="out-in";ae&&(J.transition.afterLeave=K),k.isInFallback=!0,m(J,z,null,!0),ae||K()},move(M,ne,J){k.activeBranch&&A(k.activeBranch,M,ne,J),k.container=M},next(){return k.activeBranch&&_(k.activeBranch)},registerDep(M,ne){const J=!!k.pendingBranch;J&&k.deps++;const z=M.vnode.el;M.asyncDep.catch($=>{os($,M,0)}).then($=>{if(M.isUnmounted||k.isUnmounted||k.pendingId!==M.suspenseId)return;M.asyncResolved=!0;const{vnode:G}=M;oi(M,$,!1),z&&(G.el=z);const ie=!z&&M.subTree.el;ne(M,G,C(z||M.subTree.el),z?null:_(M.subTree),k,i,c),ie&&P(ie),Di(M,G.el),J&&--k.deps===0&&k.resolve()})},unmount(M,ne){k.isUnmounted=!0,k.activeBranch&&m(k.activeBranch,n,M,ne),k.pendingBranch&&m(k.pendingBranch,n,M,ne)}};return k}function ah(e,t,n,s,o,r,i,l,c){const f=t.suspense=Hi(t,s,n,e.parentNode,document.createElement("div"),null,o,r,i,l,!0),u=c(e,f.pendingBranch=t.ssContent,n,f,r,i);return f.deps===0&&f.resolve(!1,!0),u}function ch(e){const{shapeFlag:t,children:n}=e,s=t&32;e.ssContent=na(s?n.default:n),e.ssFallback=s?na(n.fallback):_e($e)}function na(e){let t;if(ue(e)){const n=Gn&&e._c;n&&(e._d=!1,S()),e=e(),n&&(e._d=!0,t=vt,Bu())}return fe(e)&&(e=$A(e)),e=mt(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function au(e,t){t&&t.pendingBranch?fe(e)?t.effects.push(...e):t.effects.push(e):Xr(e)}function qn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:s}=e,o=n.el=t.el;s&&s.subTree===n&&(s.vnode.el=o,Di(s,o))}function uh(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}function cu(e,t){return Ui(e,null,t)}const eo={};function Nt(e,t,n){return Ui(e,t,n)}function Ui(e,t,{immediate:n,deep:s,flush:o,onTrack:r,onTrigger:i}=Be){var l;const c=Dc()===((l=Ne)==null?void 0:l.scope)?Ne:null;let f,u=!1,a=!1;if(Le(e)?(f=()=>e.value,u=bo(e)):Qn(e)?(f=()=>e,s=!0):fe(e)?(a=!0,u=e.some(k=>Qn(k)||bo(k)),f=()=>e.map(k=>{if(Le(k))return k.value;if(Qn(k))return kn(k);if(ue(k))return ln(k,c,2)})):ue(e)?t?f=()=>ln(e,c,2):f=()=>{if(!(c&&c.isUnmounted))return A&&A(),yt(e,c,3,[m])}:f=kt,t&&s){const k=f;f=()=>kn(k())}let A,m=k=>{A=Y.onStop=()=>{ln(k,c,4),A=Y.onStop=void 0}},_;if(Zn)if(m=kt,t?n&&yt(t,c,3,[f(),a?[]:void 0,m]):f(),o==="sync"){const k=Xh();_=k.__watcherHandles||(k.__watcherHandles=[])}else return kt;let C=a?new Array(e.length).fill(eo):eo;const P=()=>{if(Y.active)if(t){const k=Y.run();(s||u||(a?k.some((M,ne)=>Rn(M,C[ne])):Rn(k,C)))&&(A&&A(),yt(t,c,3,[k,C===eo?void 0:a&&C[0]===eo?[]:C,m]),C=k)}else Y.run()};P.allowRecurse=!!t;let V;o==="sync"?V=P:o==="post"?V=()=>st(P,c&&c.suspense):(P.pre=!0,c&&(P.id=c.uid),V=()=>Uo(P));const Y=new Ri(f,V);t?n?P():C=Y.run():o==="post"?st(Y.run.bind(Y),c&&c.suspense):Y.run();const v=()=>{Y.stop(),c&&c.scope&&xi(c.scope.effects,Y)};return _&&_.push(v),v}function fh(e,t,n){const s=this.proxy,o=Te(e)?e.includes(".")?uu(s,e):()=>s[e]:e.bind(s,s);let r;ue(t)?r=t:(r=t.handler,n=t);const i=Ne;Xn(this);const l=Ui(o,r.bind(s),n);return i?Xn(i):Sn(),l}function uu(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o{kn(n,t)});else if(Oc(e))for(const n in e)kn(e[n],t);return e}function gt(e,t){const n=Qe;if(n===null)return e;const s=zo(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),ji(()=>{e.isUnmounting=!0}),e}const ht=[Function,Array],fu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ht,onEnter:ht,onAfterEnter:ht,onEnterCancelled:ht,onBeforeLeave:ht,onLeave:ht,onAfterLeave:ht,onLeaveCancelled:ht,onBeforeAppear:ht,onAppear:ht,onAfterAppear:ht,onAppearCancelled:ht},Ah={name:"BaseTransition",props:fu,setup(e,{slots:t}){const n=Yt(),s=dh();let o;return()=>{const r=t.default&&Au(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const C of r)if(C.type!==$e){i=C;break}}const l=ye(e),{mode:c}=l;if(s.isLeaving)return Tr(i);const f=sa(i);if(!f)return Tr(i);const u=Zr(f,l,s,n);$r(f,u);const a=n.subTree,A=a&&sa(a);let m=!1;const{getTransitionKey:_}=f.type;if(_){const C=_();o===void 0?o=C:C!==o&&(o=C,m=!0)}if(A&&A.type!==$e&&(!Ot(f,A)||m)){const C=Zr(A,l,s,n);if($r(A,C),c==="out-in")return s.isLeaving=!0,C.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},Tr(i);c==="in-out"&&f.type!==$e&&(C.delayLeave=(P,V,Y)=>{const v=du(s,A);v[String(A.key)]=A,P[nn]=()=>{V(),P[nn]=void 0,delete u.delayedLeave},u.delayedLeave=Y})}return i}}},hh=Ah;function du(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Zr(e,t,n,s){const{appear:o,mode:r,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:f,onEnterCancelled:u,onBeforeLeave:a,onLeave:A,onAfterLeave:m,onLeaveCancelled:_,onBeforeAppear:C,onAppear:P,onAfterAppear:V,onAppearCancelled:Y}=t,v=String(e.key),k=du(n,e),M=(z,$)=>{z&&yt(z,s,9,$)},ne=(z,$)=>{const G=$[1];M(z,$),fe(z)?z.every(ie=>ie.length<=1)&&G():z.length<=1&&G()},J={mode:r,persisted:i,beforeEnter(z){let $=l;if(!n.isMounted)if(o)$=C||l;else return;z[nn]&&z[nn](!0);const G=k[v];G&&Ot(e,G)&&G.el[nn]&&G.el[nn](),M($,[z])},enter(z){let $=c,G=f,ie=u;if(!n.isMounted)if(o)$=P||c,G=V||f,ie=Y||u;else return;let K=!1;const ae=z[to]=de=>{K||(K=!0,de?M(ie,[z]):M(G,[z]),J.delayedLeave&&J.delayedLeave(),z[to]=void 0)};$?ne($,[z,ae]):ae()},leave(z,$){const G=String(e.key);if(z[to]&&z[to](!0),n.isUnmounting)return $();M(a,[z]);let ie=!1;const K=z[nn]=ae=>{ie||(ie=!0,$(),ae?M(_,[z]):M(m,[z]),z[nn]=void 0,k[G]===e&&delete k[G])};k[G]=e,A?ne(A,[z,K]):K()},clone(z){return Zr(z,t,n,s)}};return J}function Tr(e){if(Fs(e))return e=cn(e),e.children=null,e}function sa(e){return Fs(e)?e.children?e.children[0]:void 0:e}function $r(e,t){e.shapeFlag&6&&e.component?$r(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Au(e,t=!1,n){let s=[],o=0;for(let r=0;r1)for(let r=0;rUe({name:e.name},t,{setup:e}))():e}const zn=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function oa(e){ue(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,timeout:r,suspensible:i=!0,onError:l}=e;let c=null,f,u=0;const a=()=>(u++,c=null,A()),A=()=>{let m;return c||(m=c=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),l)return new Promise((C,P)=>{l(_,()=>C(a()),()=>P(_),u+1)});throw _}).then(_=>m!==c&&c?c:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),f=_,_)))};return Ge({name:"AsyncComponentWrapper",__asyncLoader:A,get __asyncResolved(){return f},setup(){const m=Ne;if(f)return()=>Rr(f,m);const _=Y=>{c=null,os(Y,m,13,!s)};if(i&&m.suspense||Zn)return A().then(Y=>()=>Rr(Y,m)).catch(Y=>(_(Y),()=>s?_e(s,{error:Y}):null));const C=N(!1),P=N(),V=N(!!o);return o&&setTimeout(()=>{V.value=!1},o),r!=null&&setTimeout(()=>{if(!C.value&&!P.value){const Y=new Error(`Async component timed out after ${r}ms.`);_(Y),P.value=Y}},r),A().then(()=>{C.value=!0,m.parent&&Fs(m.parent.vnode)&&Uo(m.parent.update)}).catch(Y=>{_(Y),P.value=Y}),()=>{if(C.value&&f)return Rr(f,m);if(P.value&&s)return _e(s,{error:P.value});if(n&&!V.value)return _e(n)}}})}function Rr(e,t){const{ref:n,props:s,children:o,ce:r}=t.vnode,i=_e(e,s,o);return i.ref=n,i.ce=r,delete t.vnode.ce,i}const Fs=e=>e.type.__isKeepAlive;function hu(e,t){gu(e,"a",t)}function pu(e,t){gu(e,"da",t)}function gu(e,t,n=Ne){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Ko(t,s,n),n){let o=n.parent;for(;o&&o.parent;)Fs(o.parent.vnode)&&ph(s,t,n,o),o=o.parent}}function ph(e,t,n,s){const o=Ko(t,e,s,!0);Qi(()=>{xi(s[t],o)},n)}function Ko(e,t,n=Ne,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;ns(),Xn(n);const l=yt(t,n,e,i);return Sn(),ss(),l});return s?o.unshift(r):o.push(r),r}}const Jt=e=>(t,n=Ne)=>(!Zn||e==="sp")&&Ko(e,(...s)=>t(...s),n),gh=Jt("bm"),zt=Jt("m"),mh=Jt("bu"),vh=Jt("u"),ji=Jt("bum"),Qi=Jt("um"),yh=Jt("sp"),bh=Jt("rtg"),wh=Jt("rtc");function mu(e,t=Ne){Ko("ec",e,t)}function Ye(e,t,n,s){let o;const r=n&&n[s];if(fe(e)||Te(e)){o=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,r&&r[l]));else{const i=Object.keys(e);o=new Array(i.length);for(let l=0,c=i.length;lIn(t)?!(t.type===$e||t.type===he&&!vu(t.children)):!0)?e:null}const ei=e=>e?Mu(e)?zo(e)||e.proxy:ei(e.parent):null,Es=Ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ei(e.parent),$root:e=>ei(e.root),$emit:e=>e.emit,$options:e=>qi(e),$forceUpdate:e=>e.f||(e.f=()=>Uo(e.update)),$nextTick:e=>e.n||(e.n=jt.bind(e.proxy)),$watch:e=>fh.bind(e)}),Br=(e,t)=>e!==Be&&!e.__isScriptSetup&&ge(e,t),_h={get({_:e},t){const{ctx:n,setupState:s,data:o,props:r,accessCache:i,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const m=i[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(Br(s,t))return i[t]=1,s[t];if(o!==Be&&ge(o,t))return i[t]=2,o[t];if((f=e.propsOptions[0])&&ge(f,t))return i[t]=3,r[t];if(n!==Be&&ge(n,t))return i[t]=4,n[t];ti&&(i[t]=0)}}const u=Es[t];let a,A;if(u)return t==="$attrs"&&rt(e,"get",t),u(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(n!==Be&&ge(n,t))return i[t]=4,n[t];if(A=c.config.globalProperties,ge(A,t))return A[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return Br(o,t)?(o[t]=n,!0):s!==Be&&ge(s,t)?(s[t]=n,!0):ge(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,propsOptions:r}},i){let l;return!!n[i]||e!==Be&&ge(e,i)||Br(t,i)||(l=r[0])&&ge(l,i)||ge(s,i)||ge(Es,i)||ge(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ge(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ra(e){return fe(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ti=!0;function Ch(e){const t=qi(e),n=e.proxy,s=e.ctx;ti=!1,t.beforeCreate&&ia(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:l,provide:c,inject:f,created:u,beforeMount:a,mounted:A,beforeUpdate:m,updated:_,activated:C,deactivated:P,beforeDestroy:V,beforeUnmount:Y,destroyed:v,unmounted:k,render:M,renderTracked:ne,renderTriggered:J,errorCaptured:z,serverPrefetch:$,expose:G,inheritAttrs:ie,components:K,directives:ae,filters:de}=t;if(f&&Eh(f,s,null),i)for(const le in i){const X=i[le];ue(X)&&(s[le]=X.bind(n))}if(o){const le=o.call(n,n);xe(le)&&(e.data=qt(le))}if(ti=!0,r)for(const le in r){const X=r[le],Ie=ue(X)?X.bind(n,n):ue(X.get)?X.get.bind(n,n):kt,it=!ue(X)&&ue(X.set)?X.set.bind(n):kt,De=Ce({get:Ie,set:it});Object.defineProperty(s,le,{enumerable:!0,configurable:!0,get:()=>De.value,set:Fe=>De.value=Fe})}if(l)for(const le in l)yu(l[le],s,n,le);if(c){const le=ue(c)?c.call(n):c;Reflect.ownKeys(le).forEach(X=>{ze(X,le[X])})}u&&ia(u,e,"c");function F(le,X){fe(X)?X.forEach(Ie=>le(Ie.bind(n))):X&&le(X.bind(n))}if(F(gh,a),F(zt,A),F(mh,m),F(vh,_),F(hu,C),F(pu,P),F(mu,z),F(wh,ne),F(bh,J),F(ji,Y),F(Qi,k),F(yh,$),fe(G))if(G.length){const le=e.exposed||(e.exposed={});G.forEach(X=>{Object.defineProperty(le,X,{get:()=>n[X],set:Ie=>n[X]=Ie})})}else e.exposed||(e.exposed={});M&&e.render===kt&&(e.render=M),ie!=null&&(e.inheritAttrs=ie),K&&(e.components=K),ae&&(e.directives=ae)}function Eh(e,t,n=kt){fe(e)&&(e=ni(e));for(const s in e){const o=e[s];let r;xe(o)?"default"in o?r=Re(o.from||s,o.default,!0):r=Re(o.from||s):r=Re(o),Le(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[s]=r}}function ia(e,t,n){yt(fe(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function yu(e,t,n,s){const o=s.includes(".")?uu(n,s):()=>n[s];if(Te(e)){const r=t[e];ue(r)&&Nt(o,r)}else if(ue(e))Nt(o,e.bind(n));else if(xe(e))if(fe(e))e.forEach(r=>yu(r,t,n,s));else{const r=ue(e.handler)?e.handler.bind(n):t[e.handler];ue(r)&&Nt(o,r,e)}}function qi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let c;return l?c=l:!o.length&&!n&&!s?c=t:(c={},o.length&&o.forEach(f=>Co(c,f,i,!0)),Co(c,t,i)),xe(t)&&r.set(t,c),c}function Co(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Co(e,r,n,!0),o&&o.forEach(i=>Co(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=kh[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const kh={data:la,props:aa,emits:aa,methods:_s,computed:_s,beforeCreate:Xe,created:Xe,beforeMount:Xe,mounted:Xe,beforeUpdate:Xe,updated:Xe,beforeDestroy:Xe,beforeUnmount:Xe,destroyed:Xe,unmounted:Xe,activated:Xe,deactivated:Xe,errorCaptured:Xe,serverPrefetch:Xe,components:_s,directives:_s,watch:Sh,provide:la,inject:xh};function la(e,t){return t?e?function(){return Ue(ue(e)?e.call(this,this):e,ue(t)?t.call(this,this):t)}:t:e}function xh(e,t){return _s(ni(e),ni(t))}function ni(e){if(fe(e)){const t={};for(let n=0;n1)return n&&ue(t)?t.call(s&&s.proxy):t}}function wu(){return!!(Ne||Qe||Os)}function Bh(e,t,n,s=!1){const o={},r={};vo(r,qo,1),e.propsDefaults=Object.create(null),_u(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=s?o:Oi(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function Ih(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=ye(o),[c]=e.propsOptions;let f=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let a=0;a{c=!0;const[A,m]=Cu(a,t,!0);Ue(i,A),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!r&&!c)return xe(e)&&s.set(e,Un),Un;if(fe(r))for(let u=0;u-1,m[1]=C<0||_-1||ge(m,"default"))&&l.push(a)}}}const f=[i,l];return xe(e)&&s.set(e,f),f}function ca(e){return e[0]!=="$"}function ua(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function fa(e,t){return ua(e)===ua(t)}function da(e,t){return fe(t)?t.findIndex(n=>fa(n,e)):ue(t)&&fa(t,e)?0:-1}const Eu=e=>e[0]==="_"||e==="$stable",zi=e=>fe(e)?e.map(mt):[mt(e)],Oh=(e,t,n)=>{if(t._n)return t;const s=Pt((...o)=>zi(t(...o)),n);return s._c=!1,s},ku=(e,t,n)=>{const s=e._ctx;for(const o in e){if(Eu(o))continue;const r=e[o];if(ue(r))t[o]=Oh(o,r,s);else if(r!=null){const i=zi(r);t[o]=()=>i}}},xu=(e,t)=>{const n=zi(t);e.slots.default=()=>n},Ph=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ye(t),vo(t,"_",n)):ku(t,e.slots={})}else e.slots={},t&&xu(e,t);vo(e.slots,qo,1)},Lh=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,i=Be;if(s.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:(Ue(o,t),!n&&l===1&&delete o._):(r=!t.$stable,ku(t,o)),i=t}else t&&(xu(e,t),i={default:1});if(r)for(const l in o)!Eu(l)&&i[l]==null&&delete o[l]};function Eo(e,t,n,s,o=!1){if(fe(e)){e.forEach((A,m)=>Eo(A,t&&(fe(t)?t[m]:t),n,s,o));return}if(zn(s)&&!o)return;const r=s.shapeFlag&4?zo(s.component)||s.component.proxy:s.el,i=o?null:r,{i:l,r:c}=e,f=t&&t.r,u=l.refs===Be?l.refs={}:l.refs,a=l.setupState;if(f!=null&&f!==c&&(Te(f)?(u[f]=null,ge(a,f)&&(a[f]=null)):Le(f)&&(f.value=null)),ue(c))ln(c,l,12,[i,u]);else{const A=Te(c),m=Le(c);if(A||m){const _=()=>{if(e.f){const C=A?ge(a,c)?a[c]:u[c]:c.value;o?fe(C)&&xi(C,r):fe(C)?C.includes(r)||C.push(r):A?(u[c]=[r],ge(a,c)&&(a[c]=u[c])):(c.value=[r],e.k&&(u[e.k]=c.value))}else A?(u[c]=i,ge(a,c)&&(a[c]=i)):m&&(c.value=i,e.k&&(u[e.k]=i))};i?(_.id=-1,st(_,n)):_()}}}let Xt=!1;const no=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",so=e=>e.nodeType===8;function Nh(e){const{mt:t,p:n,o:{patchProp:s,createText:o,nextSibling:r,parentNode:i,remove:l,insert:c,createComment:f}}=e,u=(v,k)=>{if(!k.hasChildNodes()){n(null,v,k),wo(),k._vnode=v;return}Xt=!1,a(k.firstChild,v,null,null,null),wo(),k._vnode=v,Xt&&console.error("Hydration completed but contains mismatches.")},a=(v,k,M,ne,J,z=!1)=>{const $=so(v)&&v.data==="[",G=()=>C(v,k,M,ne,J,$),{type:ie,ref:K,shapeFlag:ae,patchFlag:de}=k;let pe=v.nodeType;k.el=v,de===-2&&(z=!1,k.dynamicChildren=null);let F=null;switch(ie){case Vn:pe!==3?k.children===""?(c(k.el=o(""),i(v),v),F=v):F=G():(v.data!==k.children&&(Xt=!0,v.data=k.children),F=r(v));break;case $e:Y(v)?(F=r(v),V(k.el=v.content.firstChild,v,M)):pe!==8||$?F=G():F=r(v);break;case ks:if($&&(v=r(v),pe=v.nodeType),pe===1||pe===3){F=v;const le=!k.children.length;for(let X=0;X{z=z||!!k.dynamicChildren;const{type:$,props:G,patchFlag:ie,shapeFlag:K,dirs:ae,transition:de}=k,pe=$==="input"||$==="option";if(pe||ie!==-1){if(ae&&Bt(k,null,M,"created"),G)if(pe||!z||ie&48)for(const X in G)(pe&&(X.endsWith("value")||X==="indeterminate")||Ds(X)&&!Cs(X)||X[0]===".")&&s(v,X,null,G[X],!1,void 0,M);else G.onClick&&s(v,"onClick",null,G.onClick,!1,void 0,M);let F;(F=G&&G.onVnodeBeforeMount)&&pt(F,M,k);let le=!1;if(Y(v)){le=Tu(ne,de)&&M&&M.vnode.props&&M.vnode.props.appear;const X=v.content.firstChild;le&&de.beforeEnter(X),V(X,v,M),k.el=v=X}if(ae&&Bt(k,null,M,"beforeMount"),((F=G&&G.onVnodeMounted)||ae||le)&&au(()=>{F&&pt(F,M,k),le&&de.enter(v),ae&&Bt(k,null,M,"mounted")},ne),K&16&&!(G&&(G.innerHTML||G.textContent))){let X=m(v.firstChild,k,v,M,ne,J,z);for(;X;){Xt=!0;const Ie=X;X=X.nextSibling,l(Ie)}}else K&8&&v.textContent!==k.children&&(Xt=!0,v.textContent=k.children)}return v.nextSibling},m=(v,k,M,ne,J,z,$)=>{$=$||!!k.dynamicChildren;const G=k.children,ie=G.length;for(let K=0;K{const{slotScopeIds:$}=k;$&&(J=J?J.concat($):$);const G=i(v),ie=m(r(v),k,G,M,ne,J,z);return ie&&so(ie)&&ie.data==="]"?r(k.anchor=ie):(Xt=!0,c(k.anchor=f("]"),G,ie),ie)},C=(v,k,M,ne,J,z)=>{if(Xt=!0,k.el=null,z){const ie=P(v);for(;;){const K=r(v);if(K&&K!==ie)l(K);else break}}const $=r(v),G=i(v);return l(v),n(null,k,G,$,M,ne,no(G),J),$},P=(v,k="[",M="]")=>{let ne=0;for(;v;)if(v=r(v),v&&so(v)&&(v.data===k&&ne++,v.data===M)){if(ne===0)return r(v);ne--}return v},V=(v,k,M)=>{const ne=k.parentNode;ne&&ne.replaceChild(v,k);let J=M;for(;J;)J.vnode.el===k&&(J.vnode.el=J.subTree.el=v),J=J.parent},Y=v=>v.nodeType===1&&v.tagName.toLowerCase()==="template";return[u,a]}const st=au;function Mh(e){return Su(e)}function Dh(e){return Su(e,Nh)}function Su(e,t){const n=Yr();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:i,createText:l,createComment:c,setText:f,setElementText:u,parentNode:a,nextSibling:A,setScopeId:m=kt,insertStaticContent:_}=e,C=(p,g,x,I=null,B=null,U=null,W=!1,D=null,Q=!!g.dynamicChildren)=>{if(p===g)return;p&&!Ot(p,g)&&(I=_t(p),Fe(p,B,U,!0),p=null),g.patchFlag===-2&&(Q=!1,g.dynamicChildren=null);const{type:L,ref:oe,shapeFlag:b}=g;switch(L){case Vn:P(p,g,x,I);break;case $e:V(p,g,x,I);break;case ks:p==null&&Y(g,x,I,W);break;case he:K(p,g,x,I,B,U,W,D,Q);break;default:b&1?M(p,g,x,I,B,U,W,D,Q):b&6?ae(p,g,x,I,B,U,W,D,Q):(b&64||b&128)&&L.process(p,g,x,I,B,U,W,D,Q,et)}oe!=null&&B&&Eo(oe,p&&p.ref,U,g||p,!g)},P=(p,g,x,I)=>{if(p==null)s(g.el=l(g.children),x,I);else{const B=g.el=p.el;g.children!==p.children&&f(B,g.children)}},V=(p,g,x,I)=>{p==null?s(g.el=c(g.children||""),x,I):g.el=p.el},Y=(p,g,x,I)=>{[p.el,p.anchor]=_(p.children,g,x,I,p.el,p.anchor)},v=({el:p,anchor:g},x,I)=>{let B;for(;p&&p!==g;)B=A(p),s(p,x,I),p=B;s(g,x,I)},k=({el:p,anchor:g})=>{let x;for(;p&&p!==g;)x=A(p),o(p),p=x;o(g)},M=(p,g,x,I,B,U,W,D,Q)=>{W=W||g.type==="svg",p==null?ne(g,x,I,B,U,W,D,Q):$(p,g,B,U,W,D,Q)},ne=(p,g,x,I,B,U,W,D)=>{let Q,L;const{type:oe,props:b,shapeFlag:y,transition:E,dirs:O}=p;if(Q=p.el=i(p.type,U,b&&b.is,b),y&8?u(Q,p.children):y&16&&z(p.children,Q,null,I,B,U&&oe!=="foreignObject",W,D),O&&Bt(p,null,I,"created"),J(Q,p,p.scopeId,W,I),b){for(const ce in b)ce!=="value"&&!Cs(ce)&&r(Q,ce,null,b[ce],U,p.children,I,B,He);"value"in b&&r(Q,"value",null,b.value),(L=b.onVnodeBeforeMount)&&pt(L,I,p)}O&&Bt(p,null,I,"beforeMount");const se=Tu(B,E);se&&E.beforeEnter(Q),s(Q,g,x),((L=b&&b.onVnodeMounted)||se||O)&&st(()=>{L&&pt(L,I,p),se&&E.enter(Q),O&&Bt(p,null,I,"mounted")},B)},J=(p,g,x,I,B)=>{if(x&&m(p,x),I)for(let U=0;U{for(let L=Q;L{const D=g.el=p.el;let{patchFlag:Q,dynamicChildren:L,dirs:oe}=g;Q|=p.patchFlag&16;const b=p.props||Be,y=g.props||Be;let E;x&&vn(x,!1),(E=y.onVnodeBeforeUpdate)&&pt(E,x,g,p),oe&&Bt(g,p,x,"beforeUpdate"),x&&vn(x,!0);const O=B&&g.type!=="foreignObject";if(L?G(p.dynamicChildren,L,D,x,I,O,U):W||X(p,g,D,null,x,I,O,U,!1),Q>0){if(Q&16)ie(D,g,b,y,x,I,B);else if(Q&2&&b.class!==y.class&&r(D,"class",null,y.class,B),Q&4&&r(D,"style",b.style,y.style,B),Q&8){const se=g.dynamicProps;for(let ce=0;ce{E&&pt(E,x,g,p),oe&&Bt(g,p,x,"updated")},I)},G=(p,g,x,I,B,U,W)=>{for(let D=0;D{if(x!==I){if(x!==Be)for(const D in x)!Cs(D)&&!(D in I)&&r(p,D,x[D],null,W,g.children,B,U,He);for(const D in I){if(Cs(D))continue;const Q=I[D],L=x[D];Q!==L&&D!=="value"&&r(p,D,L,Q,W,g.children,B,U,He)}"value"in I&&r(p,"value",x.value,I.value)}},K=(p,g,x,I,B,U,W,D,Q)=>{const L=g.el=p?p.el:l(""),oe=g.anchor=p?p.anchor:l("");let{patchFlag:b,dynamicChildren:y,slotScopeIds:E}=g;E&&(D=D?D.concat(E):E),p==null?(s(L,x,I),s(oe,x,I),z(g.children,x,oe,B,U,W,D,Q)):b>0&&b&64&&y&&p.dynamicChildren?(G(p.dynamicChildren,y,x,B,U,W,D),(g.key!=null||B&&g===B.subTree)&&Ru(p,g,!0)):X(p,g,x,oe,B,U,W,D,Q)},ae=(p,g,x,I,B,U,W,D,Q)=>{g.slotScopeIds=D,p==null?g.shapeFlag&512?B.ctx.activate(g,x,I,W,Q):de(g,x,I,B,U,W,Q):pe(p,g,Q)},de=(p,g,x,I,B,U,W)=>{const D=p.component=Kh(p,I,B);if(Fs(p)&&(D.ctx.renderer=et),qh(D),D.asyncDep){if(B&&B.registerDep(D,F),!p.el){const Q=D.subTree=_e($e);V(null,Q,g,x)}return}F(D,p,g,x,B,U,W)},pe=(p,g,x)=>{const I=g.component=p.component;if(nh(p,g,x))if(I.asyncDep&&!I.asyncResolved){le(I,g,x);return}else I.next=g,GA(I.update),I.update();else g.el=p.el,I.vnode=g},F=(p,g,x,I,B,U,W)=>{const D=()=>{if(p.isMounted){let{next:oe,bu:b,u:y,parent:E,vnode:O}=p,se=oe,ce;vn(p,!1),oe?(oe.el=O.el,le(p,oe,W)):oe=O,b&&ao(b),(ce=oe.props&&oe.props.onVnodeBeforeUpdate)&&pt(ce,E,oe,O),vn(p,!0);const Ae=Sr(p),be=p.subTree;p.subTree=Ae,C(be,Ae,a(be.el),_t(be),p,B,U),oe.el=Ae.el,se===null&&Di(p,Ae.el),y&&st(y,B),(ce=oe.props&&oe.props.onVnodeUpdated)&&st(()=>pt(ce,E,oe,O),B)}else{let oe;const{el:b,props:y}=g,{bm:E,m:O,parent:se}=p,ce=zn(g);if(vn(p,!1),E&&ao(E),!ce&&(oe=y&&y.onVnodeBeforeMount)&&pt(oe,se,g),vn(p,!0),b&&at){const Ae=()=>{p.subTree=Sr(p),at(b,p.subTree,p,B,null)};ce?g.type.__asyncLoader().then(()=>!p.isUnmounted&&Ae()):Ae()}else{const Ae=p.subTree=Sr(p);C(null,Ae,x,I,p,B,U),g.el=Ae.el}if(O&&st(O,B),!ce&&(oe=y&&y.onVnodeMounted)){const Ae=g;st(()=>pt(oe,se,Ae),B)}(g.shapeFlag&256||se&&zn(se.vnode)&&se.vnode.shapeFlag&256)&&p.a&&st(p.a,B),p.isMounted=!0,g=x=I=null}},Q=p.effect=new Ri(D,()=>Uo(L),p.scope),L=p.update=()=>Q.run();L.id=p.uid,vn(p,!0),L()},le=(p,g,x)=>{g.component=p;const I=p.vnode.props;p.vnode=g,p.next=null,Ih(p,g.props,I,x),Lh(p,g.children,x),ns(),$l(),ss()},X=(p,g,x,I,B,U,W,D,Q=!1)=>{const L=p&&p.children,oe=p?p.shapeFlag:0,b=g.children,{patchFlag:y,shapeFlag:E}=g;if(y>0){if(y&128){it(L,b,x,I,B,U,W,D,Q);return}else if(y&256){Ie(L,b,x,I,B,U,W,D,Q);return}}E&8?(oe&16&&He(L,B,U),b!==L&&u(x,b)):oe&16?E&16?it(L,b,x,I,B,U,W,D,Q):He(L,B,U,!0):(oe&8&&u(x,""),E&16&&z(b,x,I,B,U,W,D,Q))},Ie=(p,g,x,I,B,U,W,D,Q)=>{p=p||Un,g=g||Un;const L=p.length,oe=g.length,b=Math.min(L,oe);let y;for(y=0;yoe?He(p,B,U,!0,!1,b):z(g,x,I,B,U,W,D,Q,b)},it=(p,g,x,I,B,U,W,D,Q)=>{let L=0;const oe=g.length;let b=p.length-1,y=oe-1;for(;L<=b&&L<=y;){const E=p[L],O=g[L]=Q?sn(g[L]):mt(g[L]);if(Ot(E,O))C(E,O,x,null,B,U,W,D,Q);else break;L++}for(;L<=b&&L<=y;){const E=p[b],O=g[y]=Q?sn(g[y]):mt(g[y]);if(Ot(E,O))C(E,O,x,null,B,U,W,D,Q);else break;b--,y--}if(L>b){if(L<=y){const E=y+1,O=Ey)for(;L<=b;)Fe(p[L],B,U,!0),L++;else{const E=L,O=L,se=new Map;for(L=O;L<=y;L++){const Pe=g[L]=Q?sn(g[L]):mt(g[L]);Pe.key!=null&&se.set(Pe.key,L)}let ce,Ae=0;const be=y-O+1;let q=!1,Oe=0;const At=new Array(be);for(L=0;L=be){Fe(Pe,B,U,!0);continue}let Je;if(Pe.key!=null)Je=se.get(Pe.key);else for(ce=O;ce<=y;ce++)if(At[ce-O]===0&&Ot(Pe,g[ce])){Je=ce;break}Je===void 0?Fe(Pe,B,U,!0):(At[Je-O]=L+1,Je>=Oe?Oe=Je:q=!0,C(Pe,g[Je],x,null,B,U,W,D,Q),Ae++)}const ct=q?Fh(At):Un;for(ce=ct.length-1,L=be-1;L>=0;L--){const Pe=O+L,Je=g[Pe],ut=Pe+1{const{el:U,type:W,transition:D,children:Q,shapeFlag:L}=p;if(L&6){De(p.component.subTree,g,x,I);return}if(L&128){p.suspense.move(g,x,I);return}if(L&64){W.move(p,g,x,et);return}if(W===he){s(U,g,x);for(let b=0;bD.enter(U),B);else{const{leave:b,delayLeave:y,afterLeave:E}=D,O=()=>s(U,g,x),se=()=>{b(U,()=>{O(),E&&E()})};y?y(U,O,se):se()}else s(U,g,x)},Fe=(p,g,x,I=!1,B=!1)=>{const{type:U,props:W,ref:D,children:Q,dynamicChildren:L,shapeFlag:oe,patchFlag:b,dirs:y}=p;if(D!=null&&Eo(D,null,x,p,!0),oe&256){g.ctx.deactivate(p);return}const E=oe&1&&y,O=!zn(p);let se;if(O&&(se=W&&W.onVnodeBeforeUnmount)&&pt(se,g,p),oe&6)Vt(p.component,x,I);else{if(oe&128){p.suspense.unmount(x,I);return}E&&Bt(p,null,g,"beforeUnmount"),oe&64?p.type.remove(p,g,x,B,et,I):L&&(U!==he||b>0&&b&64)?He(L,g,x,!1,!0):(U===he&&b&384||!B&&oe&16)&&He(Q,g,x),I&<(p)}(O&&(se=W&&W.onVnodeUnmounted)||E)&&st(()=>{se&&pt(se,g,p),E&&Bt(p,null,g,"unmounted")},x)},lt=p=>{const{type:g,el:x,anchor:I,transition:B}=p;if(g===he){wt(x,I);return}if(g===ks){k(p);return}const U=()=>{o(x),B&&!B.persisted&&B.afterLeave&&B.afterLeave()};if(p.shapeFlag&1&&B&&!B.persisted){const{leave:W,delayLeave:D}=B,Q=()=>W(x,U);D?D(p.el,U,Q):Q()}else U()},wt=(p,g)=>{let x;for(;p!==g;)x=A(p),o(p),p=x;o(g)},Vt=(p,g,x)=>{const{bum:I,scope:B,update:U,subTree:W,um:D}=p;I&&ao(I),B.stop(),U&&(U.active=!1,Fe(W,p,g,x)),D&&st(D,g),st(()=>{p.isUnmounted=!0},g),g&&g.pendingBranch&&!g.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===g.pendingId&&(g.deps--,g.deps===0&&g.resolve())},He=(p,g,x,I=!1,B=!1,U=0)=>{for(let W=U;Wp.shapeFlag&6?_t(p.component.subTree):p.shapeFlag&128?p.suspense.next():A(p.anchor||p.el),Ft=(p,g,x)=>{p==null?g._vnode&&Fe(g._vnode,null,null,!0):C(g._vnode||null,p,g,null,null,null,x),$l(),wo(),g._vnode=p},et={p:C,um:Fe,m:De,r:lt,mt:de,mc:z,pc:X,pbc:G,n:_t,o:e};let tt,at;return t&&([tt,at]=t(et)),{render:Ft,hydrate:tt,createApp:Rh(Ft,tt)}}function vn({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Tu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ru(e,t,n=!1){const s=e.children,o=t.children;if(fe(s)&&fe(o))for(let r=0;r>1,e[n[l]]0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,i=n[r-1];r-- >0;)n[r]=i,i=t[i];return n}const Hh=e=>e.__isTeleport,he=Symbol.for("v-fgt"),Vn=Symbol.for("v-txt"),$e=Symbol.for("v-cmt"),ks=Symbol.for("v-stc"),xs=[];let vt=null;function S(e=!1){xs.push(vt=e?null:[])}function Bu(){xs.pop(),vt=xs[xs.length-1]||null}let Gn=1;function Aa(e){Gn+=e}function Iu(e){return e.dynamicChildren=Gn>0?vt||Un:null,Bu(),Gn>0&&vt&&vt.push(e),e}function T(e,t,n,s,o,r){return Iu(d(e,t,n,s,o,r,!0))}function ot(e,t,n,s,o){return Iu(_e(e,t,n,s,o,!0))}function In(e){return e?e.__v_isVNode===!0:!1}function Ot(e,t){return e.type===t.type&&e.key===t.key}const qo="__vInternal",Ou=({key:e})=>e??null,co=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Te(e)||Le(e)||ue(e)?{i:Qe,r:e,k:t,f:!!n}:e:null);function d(e,t=null,n=null,s=0,o=null,r=e===he?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ou(t),ref:t&&co(t),scopeId:Qo,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Qe};return l?(Yi(c,n),r&128&&e.normalize(c)):n&&(c.shapeFlag|=Te(n)?8:16),Gn>0&&!i&&vt&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&vt.push(c),c}const _e=Uh;function Uh(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===ru)&&(e=$e),In(e)){const l=cn(e,t,!0);return n&&Yi(l,n),Gn>0&&!r&&vt&&(l.shapeFlag&6?vt[vt.indexOf(e)]=l:vt.push(l)),l.patchFlag|=-2,l}if(Vh(e)&&(e=e.__vccOpts),t){t=Pu(t);let{class:l,style:c}=t;l&&!Te(l)&&(t.class=Ee(l)),xe(c)&&(Wc(c)&&!fe(c)&&(c=Ue({},c)),t.style=Ze(c))}const i=Te(e)?1:sh(e)?128:Hh(e)?64:xe(e)?4:ue(e)?2:0;return d(e,t,n,s,o,i,r,!0)}function Pu(e){return e?Wc(e)||qo in e?Ue({},e):e:null}function cn(e,t,n=!1){const{props:s,ref:o,patchFlag:r,children:i}=e,l=t?Nu(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Ou(l),ref:t&&t.ref?n&&o?fe(o)?o.concat(co(t)):[o,co(t)]:co(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==he?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&cn(e.ssContent),ssFallback:e.ssFallback&&cn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Se(e=" ",t=0){return _e(Vn,null,e,t)}function Lu(e,t){const n=_e(ks,null,e);return n.staticCount=t,n}function re(e="",t=!1){return t?(S(),ot($e,null,e)):_e($e,null,e)}function mt(e){return e==null||typeof e=="boolean"?_e($e):fe(e)?_e(he,null,e.slice()):typeof e=="object"?sn(e):_e(Vn,null,String(e))}function sn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:cn(e)}function Yi(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(fe(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),Yi(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(qo in t)?t._ctx=Qe:o===3&&Qe&&(Qe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ue(t)?(t={default:t,_ctx:Qe},n=32):(t=String(t),s&64?(n=16,t=[Se(t)]):n=8);e.children=t,e.shapeFlag|=n}function Nu(...e){const t={};for(let n=0;nNe||Qe;let Ji,Fn,ha="__VUE_INSTANCE_SETTERS__";(Fn=Yr()[ha])||(Fn=Yr()[ha]=[]),Fn.push(e=>Ne=e),Ji=e=>{Fn.length>1?Fn.forEach(t=>t(e)):Fn[0](e)};const Xn=e=>{Ji(e),e.scope.on()},Sn=()=>{Ne&&Ne.scope.off(),Ji(null)};function Mu(e){return e.vnode.shapeFlag&4}let Zn=!1;function qh(e,t=!1){Zn=t;const{props:n,children:s}=e.vnode,o=Mu(e);Bh(e,n,o,t),Ph(e,s);const r=o?zh(e,t):void 0;return Zn=!1,r}function zh(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Vc(new Proxy(e.ctx,_h));const{setup:s}=n;if(s){const o=e.setupContext=s.length>1?Jh(e):null;Xn(e),ns();const r=ln(s,e,0,[e.props,o]);if(ss(),Sn(),Bc(r)){if(r.then(Sn,Sn),t)return r.then(i=>{oi(e,i,t)}).catch(i=>{os(i,e,0)});e.asyncDep=r}else oi(e,r,t)}else Du(e,t)}function oi(e,t,n){ue(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xe(t)&&(e.setupState=$c(t)),Du(e,n)}let pa;function Du(e,t,n){const s=e.type;if(!e.render){if(!t&&pa&&!s.render){const o=s.template||qi(e).template;if(o){const{isCustomElement:r,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=Ue(Ue({isCustomElement:r,delimiters:l},i),c);s.render=pa(o,f)}}e.render=s.render||kt}{Xn(e),ns();try{Ch(e)}finally{ss(),Sn()}}}function Yh(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return rt(e,"get","$attrs"),t[n]}}))}function Jh(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Yh(e)},slots:e.slots,emit:e.emit,expose:t}}function zo(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy($c(Vc(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Es)return Es[n](e)},has(t,n){return n in t||n in Es}}))}function Wh(e,t=!0){return ue(e)?e.displayName||e.name:e.name||t&&e.__name}function Vh(e){return ue(e)&&"__vccOpts"in e}const Ce=(e,t)=>YA(e,t,Zn);function Fu(e,t,n){const s=arguments.length;return s===2?xe(t)&&!fe(t)?In(t)?_e(e,null,[t]):_e(e,t):_e(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&In(n)&&(n=[n]),_e(e,t,n))}const Gh=Symbol.for("v-scx"),Xh=()=>Re(Gh),Hu="3.3.9",Zh="http://www.w3.org/2000/svg",En=typeof document<"u"?document:null,ga=En&&En.createElement("template"),$h={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t?En.createElementNS(Zh,e):En.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>En.createTextNode(e),createComment:e=>En.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>En.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const i=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{ga.innerHTML=s?`${e}`:e;const l=ga.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Zt="transition",ms="animation",Ps=Symbol("_vtc"),Hs=(e,{slots:t})=>Fu(hh,ep(e),t);Hs.displayName="Transition";const Uu={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Hs.props=Ue({},fu,Uu);const yn=(e,t=[])=>{fe(e)?e.forEach(n=>n(...t)):e&&e(...t)},ma=e=>e?fe(e)?e.some(t=>t.length>1):e.length>1:!1;function ep(e){const t={};for(const K in e)K in Uu||(t[K]=e[K]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=r,appearActiveClass:f=i,appearToClass:u=l,leaveFromClass:a=`${n}-leave-from`,leaveActiveClass:A=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,_=tp(o),C=_&&_[0],P=_&&_[1],{onBeforeEnter:V,onEnter:Y,onEnterCancelled:v,onLeave:k,onLeaveCancelled:M,onBeforeAppear:ne=V,onAppear:J=Y,onAppearCancelled:z=v}=t,$=(K,ae,de)=>{bn(K,ae?u:l),bn(K,ae?f:i),de&&de()},G=(K,ae)=>{K._isLeaving=!1,bn(K,a),bn(K,m),bn(K,A),ae&&ae()},ie=K=>(ae,de)=>{const pe=K?J:Y,F=()=>$(ae,K,de);yn(pe,[ae,F]),va(()=>{bn(ae,K?c:r),$t(ae,K?u:l),ma(pe)||ya(ae,s,C,F)})};return Ue(t,{onBeforeEnter(K){yn(V,[K]),$t(K,r),$t(K,i)},onBeforeAppear(K){yn(ne,[K]),$t(K,c),$t(K,f)},onEnter:ie(!1),onAppear:ie(!0),onLeave(K,ae){K._isLeaving=!0;const de=()=>G(K,ae);$t(K,a),op(),$t(K,A),va(()=>{K._isLeaving&&(bn(K,a),$t(K,m),ma(k)||ya(K,s,P,de))}),yn(k,[K,de])},onEnterCancelled(K){$(K,!1),yn(v,[K])},onAppearCancelled(K){$(K,!0),yn(z,[K])},onLeaveCancelled(K){G(K),yn(M,[K])}})}function tp(e){if(e==null)return null;if(xe(e))return[Ir(e.enter),Ir(e.leave)];{const t=Ir(e);return[t,t]}}function Ir(e){return Pc(e)}function $t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ps]||(e[Ps]=new Set)).add(t)}function bn(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Ps];n&&(n.delete(t),n.size||(e[Ps]=void 0))}function va(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let np=0;function ya(e,t,n,s){const o=e._endId=++np,r=()=>{o===e._endId&&s()};if(n)return setTimeout(r,n);const{type:i,timeout:l,propCount:c}=sp(e,t);if(!i)return s();const f=i+"end";let u=0;const a=()=>{e.removeEventListener(f,A),r()},A=m=>{m.target===e&&++u>=c&&a()};setTimeout(()=>{u(n[_]||"").split(", "),o=s(`${Zt}Delay`),r=s(`${Zt}Duration`),i=ba(o,r),l=s(`${ms}Delay`),c=s(`${ms}Duration`),f=ba(l,c);let u=null,a=0,A=0;t===Zt?i>0&&(u=Zt,a=i,A=r.length):t===ms?f>0&&(u=ms,a=f,A=c.length):(a=Math.max(i,f),u=a>0?i>f?Zt:ms:null,A=u?u===Zt?r.length:c.length:0);const m=u===Zt&&/\b(transform|all)(,|$)/.test(s(`${Zt}Property`).toString());return{type:u,timeout:a,propCount:A,hasTransform:m}}function ba(e,t){for(;e.lengthwa(n)+wa(e[s])))}function wa(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function op(){return document.body.offsetHeight}function rp(e,t,n){const s=e[Ps];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Wi=Symbol("_vod"),ko={beforeMount(e,{value:t},{transition:n}){e[Wi]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):vs(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),vs(e,!0),s.enter(e)):s.leave(e,()=>{vs(e,!1)}):vs(e,t))},beforeUnmount(e,{value:t}){vs(e,t)}};function vs(e,t){e.style.display=t?e[Wi]:"none"}function ip(e,t,n){const s=e.style,o=Te(n);if(n&&!o){if(t&&!Te(t))for(const r in t)n[r]==null&&ri(s,r,"");for(const r in n)ri(s,r,n[r])}else{const r=s.display;o?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),Wi in e&&(s.display=r)}}const _a=/\s*!important$/;function ri(e,t,n){if(fe(n))n.forEach(s=>ri(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=lp(e,t);_a.test(n)?e.setProperty(Pn(s),n.replace(_a,""),"important"):e[s]=n}}const Ca=["Webkit","Moz","ms"],Or={};function lp(e,t){const n=Or[t];if(n)return n;let s=Mt(t);if(s!=="filter"&&s in e)return Or[t]=s;s=Fo(s);for(let o=0;oPr||(Ap.then(()=>Pr=0),Pr=Date.now());function pp(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;yt(gp(s,n.value),t,5,[s])};return n.value=e,n.attached=hp(),n}function gp(e,t){if(fe(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const Sa=/^on[a-z]/,mp=(e,t,n,s,o=!1,r,i,l,c)=>{t==="class"?rp(e,s,o):t==="style"?ip(e,n,s):Ds(t)?ki(t)||fp(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):vp(e,t,s,o))?cp(e,t,s,r,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ap(e,t,s,o))};function vp(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Sa.test(t)&&ue(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Sa.test(t)&&Te(n)?!1:t in e}const Ta=e=>{const t=e.props["onUpdate:modelValue"]||!1;return fe(t)?n=>ao(t,n):t};function yp(e){e.target.composing=!0}function Ra(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Lr=Symbol("_assign"),on={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[Lr]=Ta(o);const r=s||o.props&&o.props.type==="number";Hn(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),r&&(l=zr(l)),e[Lr](l)}),n&&Hn(e,"change",()=>{e.value=e.value.trim()}),t||(Hn(e,"compositionstart",yp),Hn(e,"compositionend",Ra),Hn(e,"change",Ra))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:o}},r){if(e[Lr]=Ta(r),e.composing)return;const i=o||e.type==="number"?zr(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===l)||(e.value=l))}},bp=["ctrl","shift","alt","meta"],wp={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>bp.some(n=>e[`${n}Key`]&&!t.includes(n))},ke=(e,t)=>(n,...s)=>{for(let o=0;on=>{if(!("key"in n))return;const s=Pn(n.key);if(t.some(o=>o===s||_p[o]===s))return e(n)},ju=Ue({patchProp:mp},$h);let Ss,Ba=!1;function Qu(){return Ss||(Ss=Mh(ju))}function Ep(){return Ss=Ba?Ss:Dh(ju),Ba=!0,Ss}const Ia=(...e)=>{Qu().render(...e)},kp=(...e)=>{const t=Qu().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Ku(s);if(!o)return;const r=t._component;!ue(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.innerHTML="";const i=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t},xp=(...e)=>{const t=Ep().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Ku(s);if(o)return n(o,!0,o instanceof SVGElement)},t};function Ku(e){return Te(e)?document.querySelector(e):e}const Sp=/#/g,Tp=/&/g,Rp=/\//g,Bp=/=/g,Vi=/\+/g,Ip=/%5e/gi,Op=/%60/gi,Pp=/%7c/gi,Lp=/%20/gi;function Np(e){return encodeURI(""+e).replace(Pp,"|")}function ii(e){return Np(typeof e=="string"?e:JSON.stringify(e)).replace(Vi,"%2B").replace(Lp,"+").replace(Sp,"%23").replace(Tp,"%26").replace(Op,"`").replace(Ip,"^").replace(Rp,"%2F")}function Nr(e){return ii(e).replace(Bp,"%3D")}function xo(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Mp(e){return xo(e.replace(Vi," "))}function Dp(e){return xo(e.replace(Vi," "))}function qu(e=""){const t={};e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const s=n.match(/([^=]+)=?(.*)/)||[];if(s.length<2)continue;const o=Mp(s[1]);if(o==="__proto__"||o==="constructor")continue;const r=Dp(s[2]||"");t[o]===void 0?t[o]=r:Array.isArray(t[o])?t[o].push(r):t[o]=[t[o],r]}return t}function Fp(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Nr(e)}=${ii(n)}`).join("&"):`${Nr(e)}=${ii(t)}`:Nr(e)}function zu(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>Fp(t,e[t])).filter(Boolean).join("&")}const Hp=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Up=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,jp=/^([/\\]\s*){2,}[^/\\]/,Qp=/^[\s\0]*(blob|data|javascript|vbscript):$/i,Kp=/\/$|\/\?|\/#/,qp=/^\.?\//;function Yo(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?Hp.test(e):Up.test(e)||(t.acceptRelative?jp.test(e):!1)}function zp(e){return!!e&&Qp.test(e)}function li(e="",t){return t?Kp.test(e):e.endsWith("/")}function Yu(e="",t){if(!t)return(li(e)?e.slice(0,-1):e)||"/";if(!li(e,!0))return e||"/";let n=e,s="";const o=e.indexOf("#");o>=0&&(n=e.slice(0,o),s=e.slice(o));const[r,...i]=n.split("?");return((r.endsWith("/")?r.slice(0,-1):r)||"/")+(i.length>0?`?${i.join("?")}`:"")+s}function ai(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(li(e,!0))return e||"/";let n=e,s="";const o=e.indexOf("#");if(o>=0&&(n=e.slice(0,o),s=e.slice(o),!n))return s;const[r,...i]=n.split("?");return r+"/"+(i.length>0?`?${i.join("?")}`:"")+s}function Yp(e=""){return e.startsWith("/")}function Oa(e=""){return Yp(e)?e:"/"+e}function Jp(e,t){if(Wu(t)||Yo(e))return e;const n=Yu(t);return e.startsWith(n)?e:rs(n,e)}function Wp(e,t){if(Wu(t))return e;const n=Yu(t);if(!e.startsWith(n))return e;const s=e.slice(n.length);return s[0]==="/"?s:"/"+s}function Ju(e,t){const n=Us(e),s={...qu(n.search),...t};return n.search=zu(s),Gu(n)}function Wu(e){return!e||e==="/"}function Vp(e){return e&&e!=="/"}function rs(e,...t){let n=e||"";for(const s of t.filter(o=>Vp(o)))if(n){const o=s.replace(qp,"");n=ai(n)+o}else n=s;return n}function Gp(e,t,n={}){return n.trailingSlash||(e=ai(e),t=ai(t)),n.leadingSlash||(e=Oa(e),t=Oa(t)),n.encoding||(e=xo(e),t=xo(t)),e===t}const Vu=Symbol.for("ufo:protocolRelative");function Us(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,a,A=""]=n;return{protocol:a.toLowerCase(),pathname:A,href:a+A,auth:"",host:"",search:"",hash:""}}if(!Yo(e,{acceptRelative:!0}))return t?Us(t+e):Pa(e);const[,s="",o,r=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",l=""]=r.match(/([^#/?]*)(.*)?/)||[];s==="file:"&&(l=l.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:c,search:f,hash:u}=Pa(l);return{protocol:s.toLowerCase(),auth:o?o.slice(0,Math.max(0,o.length-1)):"",host:i,pathname:c,search:f,hash:u,[Vu]:!s}}function Pa(e=""){const[t="",n="",s=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:s}}function Gu(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",s=e.hash||"",o=e.auth?e.auth+"@":"",r=e.host||"";return(e.protocol||e[Vu]?(e.protocol||"")+"//":"")+o+r+t+n+s}const Xp=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},So=Xp().app,Zp=()=>So.baseURL,$p=()=>So.buildAssetsDir,Gi=(...e)=>rs(Xu(),$p(),...e),Xu=(...e)=>{const t=So.cdnURL||So.baseURL;return e.length?rs(t,...e):t};globalThis.__buildAssetsURL=Gi,globalThis.__publicAssetsURL=Xu;const eg=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,tg=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,ng=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function sg(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){og(e);return}return t}function og(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function To(e,t={}){if(typeof e!="string")return e;const n=e.trim();if(e[0]==='"'&&e.endsWith('"')&&!e.includes("\\"))return n.slice(1,-1);if(n.length<=9){const s=n.toLowerCase();if(s==="true")return!0;if(s==="false")return!1;if(s==="undefined")return;if(s==="null")return null;if(s==="nan")return Number.NaN;if(s==="infinity")return Number.POSITIVE_INFINITY;if(s==="-infinity")return Number.NEGATIVE_INFINITY}if(!ng.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(eg.test(e)||tg.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,sg)}return JSON.parse(e)}catch(s){if(t.strict)throw s;return e}}class rg extends Error{constructor(t,n){super(t,n),this.name="FetchError",n!=null&&n.cause&&!this.cause&&(this.cause=n.cause)}}function ig(e){var c,f,u,a,A;const t=((c=e.error)==null?void 0:c.message)||((f=e.error)==null?void 0:f.toString())||"",n=((u=e.request)==null?void 0:u.method)||((a=e.options)==null?void 0:a.method)||"GET",s=((A=e.request)==null?void 0:A.url)||String(e.request)||"/",o=`[${n}] ${JSON.stringify(s)}`,r=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${o}: ${r}${t?` ${t}`:""}`,l=new rg(i,e.error?{cause:e.error}:void 0);for(const m of["request","options","response"])Object.defineProperty(l,m,{get(){return e[m]}});for(const[m,_]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(l,m,{get(){return e.response&&e.response[_]}});return l}const lg=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function La(e="GET"){return lg.has(e.toUpperCase())}function ag(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const cg=new Set(["image/svg","application/xml","application/xhtml","application/html"]),ug=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function fg(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return ug.test(t)?"json":cg.has(t)||t.startsWith("text/")?"text":"blob"}function dg(e,t,n=globalThis.Headers){const s={...t,...e};if(t!=null&&t.params&&(e!=null&&e.params)&&(s.params={...t==null?void 0:t.params,...e==null?void 0:e.params}),t!=null&&t.query&&(e!=null&&e.query)&&(s.query={...t==null?void 0:t.query,...e==null?void 0:e.query}),t!=null&&t.headers&&(e!=null&&e.headers)){s.headers=new n((t==null?void 0:t.headers)||{});for(const[o,r]of new n((e==null?void 0:e.headers)||{}))s.headers.set(o,r)}return s}const Ag=new Set([408,409,425,429,500,502,503,504]),hg=new Set([101,204,205,304]);function Zu(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:s=globalThis.AbortController}=e;async function o(l){const c=l.error&&l.error.name==="AbortError"&&!l.options.timeout||!1;if(l.options.retry!==!1&&!c){let u;typeof l.options.retry=="number"?u=l.options.retry:u=La(l.options.method)?0:1;const a=l.response&&l.response.status||500;if(u>0&&(Array.isArray(l.options.retryStatusCodes)?l.options.retryStatusCodes.includes(a):Ag.has(a))){const A=l.options.retryDelay||0;return A>0&&await new Promise(m=>setTimeout(m,A)),r(l.request,{...l.options,retry:u-1,timeout:l.options.timeout})}}const f=ig(l);throw Error.captureStackTrace&&Error.captureStackTrace(f,r),f}const r=async function(c,f={}){var A;const u={request:c,options:dg(f,e.defaults,n),response:void 0,error:void 0};if(u.options.method=(A=u.options.method)==null?void 0:A.toUpperCase(),u.options.onRequest&&await u.options.onRequest(u),typeof u.request=="string"&&(u.options.baseURL&&(u.request=Jp(u.request,u.options.baseURL)),(u.options.query||u.options.params)&&(u.request=Ju(u.request,{...u.options.params,...u.options.query}))),u.options.body&&La(u.options.method)&&(ag(u.options.body)?(u.options.body=typeof u.options.body=="string"?u.options.body:JSON.stringify(u.options.body),u.options.headers=new n(u.options.headers||{}),u.options.headers.has("content-type")||u.options.headers.set("content-type","application/json"),u.options.headers.has("accept")||u.options.headers.set("accept","application/json")):("pipeTo"in u.options.body&&typeof u.options.body.pipeTo=="function"||typeof u.options.body.pipe=="function")&&("duplex"in u.options||(u.options.duplex="half"))),!u.options.signal&&u.options.timeout){const m=new s;setTimeout(()=>m.abort(),u.options.timeout),u.options.signal=m.signal}try{u.response=await t(u.request,u.options)}catch(m){return u.error=m,u.options.onRequestError&&await u.options.onRequestError(u),await o(u)}if(u.response.body&&!hg.has(u.response.status)&&u.options.method!=="HEAD"){const m=(u.options.parseResponse?"json":u.options.responseType)||fg(u.response.headers.get("content-type")||"");switch(m){case"json":{const _=await u.response.text(),C=u.options.parseResponse||To;u.response._data=C(_);break}case"stream":{u.response._data=u.response.body;break}default:u.response._data=await u.response[m]()}}return u.options.onResponse&&await u.options.onResponse(u),!u.options.ignoreResponseError&&u.response.status>=400&&u.response.status<600?(u.options.onResponseError&&await u.options.onResponseError(u),await o(u)):u.response},i=async function(c,f){return(await r(c,f))._data};return i.raw=r,i.native=(...l)=>t(...l),i.create=(l={})=>Zu({...e,defaults:{...e.defaults,...l}}),i}const Xi=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),pg=Xi.fetch||(()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!"))),gg=Xi.Headers,mg=Xi.AbortController,vg=Zu({fetch:pg,Headers:gg,AbortController:mg}),yg=vg;globalThis.$fetch||(globalThis.$fetch=yg.create({baseURL:Zp()}));function ci(e,t={},n){for(const s in e){const o=e[s],r=n?`${n}:${s}`:s;typeof o=="object"&&o!==null?ci(o,t,r):typeof o=="function"&&(t[r]=o)}return t}const bg={run:e=>e()},wg=()=>bg,$u=typeof console.createTask<"u"?console.createTask:wg;function _g(e,t){const n=t.shift(),s=$u(n);return e.reduce((o,r)=>o.then(()=>s.run(()=>r(...t))),Promise.resolve())}function Cg(e,t){const n=t.shift(),s=$u(n);return Promise.all(e.map(o=>s.run(()=>o(...t))))}function Mr(e,t){for(const n of[...e])n(t)}class Eg{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,s={}){if(!t||typeof n!="function")return()=>{};const o=t;let r;for(;this._deprecatedHooks[t];)r=this._deprecatedHooks[t],t=r.to;if(r&&!s.allowDeprecated){let i=r.message;i||(i=`${o} hook has been deprecated`+(r.to?`, please use ${r.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let s,o=(...r)=>(typeof s=="function"&&s(),s=void 0,o=void 0,n(...r));return s=this.hook(t,o),s}removeHook(t,n){if(this._hooks[t]){const s=this._hooks[t].indexOf(n);s!==-1&&this._hooks[t].splice(s,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const s=this._hooks[t]||[];delete this._hooks[t];for(const o of s)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=ci(t),s=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{for(const o of s.splice(0,s.length))o()}}removeHooks(t){const n=ci(t);for(const s in n)this.removeHook(s,n[s])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(_g,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(Cg,t,...n)}callHookWith(t,n,...s){const o=this._before||this._after?{name:n,args:s,context:{}}:void 0;this._before&&Mr(this._before,o);const r=t(n in this._hooks?[...this._hooks[n]]:[],s);return r instanceof Promise?r.finally(()=>{this._after&&o&&Mr(this._after,o)}):(this._after&&o&&Mr(this._after,o),r)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function ef(){return new Eg}function kg(e={}){let t,n=!1;const s=i=>{if(t&&t!==i)throw new Error("Context conflict")};let o;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?o=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const r=()=>{if(o&&t===void 0){const i=o.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=r();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>r(),set:(i,l)=>{l||s(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,l)=>{s(i),t=i;try{return o?o.run(i,l):l()}finally{n||(t=void 0)}},async callAsync(i,l){t=i;const c=()=>{t=i},f=()=>t===i?c:void 0;ui.add(f);try{const u=o?o.run(i,l):l();return n||(t=void 0),await u}finally{ui.delete(f)}}}}function xg(e={}){const t={};return{get(n,s={}){return t[n]||(t[n]=kg({...e,...s})),t[n],t[n]}}}const Ro=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Na="__unctx__",Sg=Ro[Na]||(Ro[Na]=xg()),Tg=(e,t={})=>Sg.get(e,t),Ma="__unctx_async_handlers__",ui=Ro[Ma]||(Ro[Ma]=new Set);function tf(e){const t=[];for(const o of ui){const r=o();r&&t.push(r)}const n=()=>{for(const o of t)o()};let s=e();return s&&typeof s=="object"&&"catch"in s&&(s=s.catch(o=>{throw n(),o})),[s,n]}const nf=Tg("nuxt-app",{asyncContext:!1}),Rg="__nuxt_plugin";function Bg(e){let t=0;const n={_scope:gA(),provide:void 0,globalName:"nuxt",versions:{get nuxt(){return"3.8.2"},get vue(){return n.vueApp.version}},payload:qt({data:{},state:{},_errors:{},...window.__NUXT__??{}}),static:{data:{}},runWithContext:o=>n._scope.run(()=>Pg(n,o)),isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let o=!1;return()=>{if(!o&&(o=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:{},_payloadRevivers:{},...e};n.hooks=ef(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(o,r)=>{const i="$"+o;oo(n,i,r),oo(n.vueApp.config.globalProperties,i,r)},oo(n.vueApp,"$nuxt",n),oo(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener("nuxt.preloadError",r=>{n.callHook("app:chunkError",{error:r.payload})}),window.useNuxtApp=window.useNuxtApp||je;const o=n.hook("app:error",(...r)=>{console.error("[nuxt] error caught during app initialization",...r)});n.hook("app:mounted",o)}const s=qt(n.payload.config);return n.provide("config",s),n}async function Ig(e,t){if(t.hooks&&e.hooks.addHooks(t.hooks),typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const s in n)e.provide(s,n[s])}}async function Og(e,t){const n=[],s=[];for(const o of t){const r=Ig(e,o);o.parallel?n.push(r.catch(i=>s.push(i))):await r}if(await Promise.all(n),s.length)throw s[0]}/*! @__NO_SIDE_EFFECTS__ */function Wt(e){return typeof e=="function"?e:(delete e.name,Object.assign(e.setup||(()=>{}),e,{[Rg]:!0}))}function Pg(e,t,n){const s=()=>n?t(...n):t();return nf.set(e),e.vueApp.runWithContext(s)}/*! @__NO_SIDE_EFFECTS__ */function je(){var t;let e;if(wu()&&(e=(t=Yt())==null?void 0:t.appContext.app.$nuxt),e=e||nf.tryUse(),!e)throw new Error("[nuxt] instance unavailable");return e}/*! @__NO_SIDE_EFFECTS__ */function Bo(){return je().$config}function oo(e,t,n){Object.defineProperty(e,t,{get:()=>n})}const Lg="modulepreload",Ng=function(e,t){return e[0]==="."?new URL(e,t).href:e},Da={},Mg=function(t,n,s){if(!n||n.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(n.map(r=>{if(r=Ng(r,s),r in Da)return;Da[r]=!0;const i=r.endsWith(".css"),l=i?'[rel="stylesheet"]':"";if(!!s)for(let u=o.length-1;u>=0;u--){const a=o[u];if(a.href===r&&(!i||a.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${r}"]${l}`))return;const f=document.createElement("link");if(f.rel=i?"stylesheet":Lg,i||(f.as="script",f.crossOrigin=""),f.href=r,document.head.appendChild(f),i)return new Promise((u,a)=>{f.addEventListener("load",u),f.addEventListener("error",()=>a(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>t()).catch(r=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=r,window.dispatchEvent(i),!i.defaultPrevented)throw r})},Fa=(...e)=>Mg(...e).catch(t=>{const n=new Event("nuxt.preloadError");throw n.payload=t,window.dispatchEvent(n),t}),Dg=-1,Fg=-2,Hg=-3,Ug=-4,jg=-5,Qg=-6;function Kg(e,t){return qg(JSON.parse(e),t)}function qg(e,t){if(typeof e=="number")return o(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,s=Array(n.length);function o(r,i=!1){if(r===Dg)return;if(r===Hg)return NaN;if(r===Ug)return 1/0;if(r===jg)return-1/0;if(r===Qg)return-0;if(i)throw new Error("Invalid input");if(r in s)return s[r];const l=n[r];if(!l||typeof l!="object")s[r]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const c=l[0],f=t==null?void 0:t[c];if(f)return s[r]=f(o(l[1]));switch(c){case"Date":s[r]=new Date(l[1]);break;case"Set":const u=new Set;s[r]=u;for(let m=1;m>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Ha(e){return e._h||Zi(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function of(e,t){const{props:n,tag:s}=e;if(Wg.includes(s))return s;if(s==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const o=["id"];s==="meta"&&o.push("name","property","http-equiv");for(const r of o)if(typeof n[r]<"u"){const i=String(n[r]);return t&&!t(i)?!1:`${s}:${r}:${i}`}return!1}function Ua(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function Gg(e,t,n){const s={tag:e,props:await rf(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return sf.forEach(o=>{const r=typeof s.props[o]<"u"?s.props[o]:n[o];typeof r<"u"&&((!["innerHTML","textContent","children"].includes(o)||Yg.includes(s.tag))&&(s[o==="children"?"innerHTML":o]=r),delete s.props[o])}),s.props.body&&(s.tagPosition="bodyClose",delete s.props.body),s.tag==="script"&&typeof s.innerHTML=="object"&&(s.innerHTML=JSON.stringify(s.innerHTML),s.props.type=s.props.type||"application/json"),Array.isArray(s.props.content)?s.props.content.map(o=>({...s,props:{...s.props,content:o}})):s}function Xg(e){return typeof e=="object"&&!Array.isArray(e)&&(e=Object.keys(e).filter(t=>e[t])),(Array.isArray(e)?e.join(" "):e).split(" ").filter(t=>t.trim()).filter(Boolean).join(" ")}async function rf(e,t){for(const n of Object.keys(e)){if(n==="class"){e[n]=Xg(e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!sf.includes(n)){const s=String(e[n]),o=n.startsWith("data-");s==="true"||s===""?e[n]=o?"true":!0:e[n]||(o&&s==="false"?e[n]="false":delete e[n])}}return e}const Zg=10;async function $g(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,s])=>typeof s<"u"&&Jg.includes(n)).forEach(([n,s])=>{const o=zg(s);t.push(...o.map(r=>Gg(n,r,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,s)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<c&&c[f]||void 0,t):l=t[i],typeof l<"u"?(l||"").replace(/"/g,'\\"'):!1}let o=e;try{o=decodeURI(e)}catch{}return(o.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const l=s(i.slice(1));typeof l=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(c,f)=>`${l}${f}`).trim())}),e.includes(en)&&(e.endsWith(en)&&(e=e.slice(0,-en.length).trim()),e.startsWith(en)&&(e=e.slice(en.length).trim()),e=e.replace(new RegExp(`\\${en}\\s*\\${en}`,"g"),en),e=fo(e,{separator:n},n)),e}async function tm(e){const t={tag:e.tagName.toLowerCase(),props:await rf(e.getAttributeNames().reduce((n,s)=>({...n,[s]:e.getAttribute(s)}),{})),innerHTML:e.innerHTML};return t._d=of(t),t}async function af(e,t={}){var u;const n=t.document||e.resolvedOptions.document;if(!n)return;const s={shouldRender:e.dirty,tags:[]};if(await e.hooks.callHook("dom:beforeRender",s),!s.shouldRender)return;const o=(await e.resolveTags()).map(a=>({tag:a,id:uo.includes(a.tag)?Ha(a):a.tag,shouldRender:!0}));let r=e._dom;if(!r){r={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const a of["body","head"]){const A=(u=n==null?void 0:n[a])==null?void 0:u.children;for(const m of[...A].filter(_=>uo.includes(_.tagName.toLowerCase())))r.elMap[m.getAttribute("data-hid")||Ha(await tm(m))]=m}}r.pendingSideEffects={...r.sideEffects||{}},r.sideEffects={};function i(a,A,m){const _=`${a}:${A}`;r.sideEffects[_]=m,delete r.pendingSideEffects[_]}function l({id:a,$el:A,tag:m}){const _=m.tag.endsWith("Attrs");r.elMap[a]=A,_||(["textContent","innerHTML"].forEach(C=>{m[C]&&m[C]!==A[C]&&(A[C]=m[C])}),i(a,"el",()=>{r.elMap[a].remove(),delete r.elMap[a]})),Object.entries(m.props).forEach(([C,P])=>{const V=`attr:${C}`;if(C==="class")for(const Y of(P||"").split(" ").filter(Boolean))_&&i(a,`${V}:${Y}`,()=>A.classList.remove(Y)),!A.classList.contains(Y)&&A.classList.add(Y);else A.getAttribute(C)!==P&&A.setAttribute(C,P===!0?"":String(P)),_&&i(a,V,()=>A.removeAttribute(C))})}const c=[],f={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const a of o){const{tag:A,shouldRender:m,id:_}=a;if(m){if(A.tag==="title"){n.title=A.textContent;continue}a.$el=a.$el||r.elMap[_],a.$el?l(a):uo.includes(A.tag)&&c.push(a)}}for(const a of c){const A=a.tag.tagPosition||"head";a.$el=n.createElement(a.tag.tag),l(a),f[A]=f[A]||n.createDocumentFragment(),f[A].appendChild(a.$el)}for(const a of o)await e.hooks.callHook("dom:renderTag",a,n,i);f.head&&n.head.appendChild(f.head),f.bodyOpen&&n.body.insertBefore(f.bodyOpen,n.body.firstChild),f.bodyClose&&n.body.appendChild(f.bodyClose),Object.values(r.pendingSideEffects).forEach(a=>a()),e._dom=r,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:o})}async function nm(e,t={}){const n=t.delayFn||(s=>setTimeout(s,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(s=>n(async()=>{await af(e,t),delete e._domUpdatePromise,s()}))}function sm(e){return t=>{var s,o;const n=((o=(s=t.resolvedOptions.document)==null?void 0:s.head.querySelector('script[id="unhead:payload"]'))==null?void 0:o.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(r){nm(r,e)}}}}}const om=["templateParams","htmlAttrs","bodyAttrs"],rm={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(s=>{e.props[s]&&(e.key=e.props[s],delete e.props[s])});const n=of(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(s=>{const o=(s.key?`${s.tag}:${s.key}`:s._d)||s._p,r=t[o];if(r){let l=s==null?void 0:s.tagDuplicateStrategy;if(!l&&om.includes(s.tag)&&(l="merge"),l==="merge"){const c=r.props;["class","style"].forEach(f=>{s.props[f]&&c[f]&&(f==="style"&&!c[f].endsWith(";")&&(c[f]+=";"),s.props[f]=`${c[f]} ${s.props[f]}`)}),t[o].props={...c,...s.props};return}else if(s._e===r._e){r._duped=r._duped||[],s._d=`${r._d}:${r._duped.length+1}`,r._duped.push(s);return}else if(Io(s)>Io(r))return}const i=Object.keys(s.props).length+(s.innerHTML?1:0)+(s.textContent?1:0);if(uo.includes(s.tag)&&i===0){delete t[o];return}t[o]=s});const n=[];Object.values(t).forEach(s=>{const o=s._duped;delete s._duped,n.push(s),o&&n.push(...o)}),e.tags=n,e.tags=e.tags.filter(s=>!(s.tag==="meta"&&(s.props.name||s.props.property)&&!s.props.content))}}},im={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},lm=["script","link","bodyAttrs"];function am(e){const t={},n={};return Object.entries(e.props).forEach(([s,o])=>{s.startsWith("on")&&typeof o=="function"?(lf.includes(s)&&(t[s]=`this.dataset.${s} = true`),n[s]=o):t[s]=o}),{props:t,eventHandlers:n}}const cm=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags)if(lm.includes(n.tag)){const{props:s,eventHandlers:o}=am(n);n.props=s,Object.keys(o).length&&((n.props.src||n.props.href)&&(n.key=n.key||Zi(n.props.src||n.props.href)),n._eventHandlers=o)}},"dom:renderTag":function(t,n,s){if(!t.tag._eventHandlers)return;const o=t.tag.tag==="bodyAttrs"?n.defaultView:t.$el;Object.entries(t.tag._eventHandlers).forEach(([r,i])=>{const l=`${t.tag._d||t.tag._p}:${r}`,c=r.slice(2).toLowerCase(),f=`data-h-${c}`;if(s(t.id,l,()=>{}),t.$el.hasAttribute(f))return;t.$el.setAttribute(f,"");let u;const a=A=>{i(A),u==null||u.disconnect()};r in t.$el.dataset?a(new Event(r.replace("on",""))):lf.includes(r)&&typeof MutationObserver<"u"?(u=new MutationObserver(A=>{A.some(_=>_.attributeName===`data-${r}`)&&(a(new Event(r.replace("on",""))),u==null||u.disconnect())}),u.observe(t.$el,{attributes:!0})):o.addEventListener(c,a),s(t.id,l,()=>{u==null||u.disconnect(),o.removeEventListener(c,a),t.$el.removeAttribute(f)})})}}}),um=["link","style","script","noscript"],fm={hooks:{"tag:normalise":({tag:e})=>{e.key&&um.includes(e.tag)&&(e.props["data-hid"]=e._h=Zi(e.key))}}},dm={hooks:{"tags:resolve":e=>{const t=n=>{var s;return(s=e.tags.find(o=>o._d===n))==null?void 0:s._p};for(const{prefix:n,offset:s}of em)for(const o of e.tags.filter(r=>typeof r.tagPriority=="string"&&r.tagPriority.startsWith(n))){const r=t(o.tagPriority.replace(n,""));typeof r<"u"&&(o._p=r+s)}e.tags.sort((n,s)=>n._p-s._p).sort((n,s)=>Io(n)-Io(s))}}},Am={meta:"content",link:"href",htmlAttrs:"lang"},hm=e=>({hooks:{"tags:resolve":t=>{var l;const{tags:n}=t,s=(l=n.find(c=>c.tag==="title"))==null?void 0:l.textContent,o=n.findIndex(c=>c.tag==="templateParams"),r=o!==-1?n[o].props:{},i=r.separator||"|";delete r.separator,r.pageTitle=fo(r.pageTitle||s||"",r,i);for(const c of n.filter(f=>f.processTemplateParams!==!1)){const f=Am[c.tag];f&&typeof c.props[f]=="string"?c.props[f]=fo(c.props[f],r,i):(c.processTemplateParams===!0||["titleTemplate","title"].includes(c.tag))&&["innerHTML","textContent"].forEach(u=>{typeof c[u]=="string"&&(c[u]=fo(c[u],r,i))})}e._templateParams=r,e._separator=i,t.tags=n.filter(c=>c.tag!=="templateParams")}}}),pm={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(o=>o.tag==="titleTemplate");const s=t.findIndex(o=>o.tag==="title");if(s!==-1&&n!==-1){const o=Ua(t[n].textContent,t[s].textContent);o!==null?t[s].textContent=o||t[s].textContent:delete t[s]}else if(n!==-1){const o=Ua(t[n].textContent);o!==null&&(t[n].textContent=o,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},gm={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{l.dirty=!0,t.callHook("entries:updated",l)};let o=0,r=[];const i=[],l={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return r},use(c){const f=typeof c=="function"?c(l):c;(!f.key||!i.some(u=>u.key===f.key))&&(i.push(f),Ka(f.mode,n)&&t.addHooks(f.hooks||{}))},push(c,f){f==null||delete f.head;const u={_i:o++,input:c,...f};return Ka(u.mode,n)&&(r.push(u),s()),{dispose(){r=r.filter(a=>a._i!==u._i),t.callHook("entries:updated",l),s()},patch(a){r=r.map(A=>(A._i===u._i&&(A.input=u.input=a),A)),s()}}},async resolveTags(){const c={tags:[],entries:[...r]};await t.callHook("entries:resolve",c);for(const f of c.entries){const u=f.resolvedInput||f.input;if(f.resolvedInput=await(f.transform?f.transform(u):u),f.resolvedInput)for(const a of await $g(f)){const A={tag:a,entry:f,resolvedOptions:l.resolvedOptions};await t.callHook("tag:normalise",A),c.tags.push(A.tag)}}return await t.callHook("tags:beforeResolve",c),await t.callHook("tags:resolve",c),await t.callHook("tags:afterResolve",c),c.tags},ssr:n};return[rm,im,cm,fm,dm,hm,pm,gm,...(e==null?void 0:e.plugins)||[]].forEach(c=>l.use(c)),l.hooks.callHook("init",l),l}function ym(){return cf}const bm=Hu.startsWith("3");function wm(e){return typeof e=="function"?e():H(e)}function Oo(e,t=""){if(e instanceof Promise)return e;const n=wm(e);return!e||!n?n:Array.isArray(n)?n.map(s=>Oo(s,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([s,o])=>s==="titleTemplate"||s.startsWith("on")?[s,H(o)]:[s,Oo(o,s)])):n}const _m={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=Oo(t.input)}}},uf="usehead";function Cm(e){return{install(n){bm&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(uf,e))}}.install}function Em(e={}){e.domDelayFn=e.domDelayFn||(n=>jt(()=>setTimeout(()=>n(),0)));const t=mm(e);return t.use(_m),t.install=Cm(t),t}const fi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},di="__unhead_injection_handler__";function km(e){fi[di]=e}function xm(){if(di in fi)return fi[di]();const e=Re(uf);return e||ym()}function Sm(e,t={}){const n=t.head||xm();if(n)return n.ssr?n.push(e,t):Tm(n,e,t)}function Tm(e,t,n={}){const s=N(!1),o=N({});cu(()=>{o.value=s.value?{}:Oo(t)});const r=e.push(o.value,n);return Nt(o,l=>{r.patch(l)}),Yt()&&(ji(()=>{r.dispose()}),pu(()=>{s.value=!0}),hu(()=>{s.value=!1})),r}function Rm(e){return{ctx:{table:e},matchAll:t=>df(t,e)}}function ff(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([s,o])=>[s,ff(o)])):new Map(Object.entries(e[n]));return t}function Bm(e){return Rm(ff(e))}function df(e,t){const n=[];for(const[o,r]of qa(t.wildcard))e.startsWith(o)&&n.push(r);for(const[o,r]of qa(t.dynamic))if(e.startsWith(o+"/")){const i="/"+e.slice(o.length).split("/").splice(2).join("/");n.push(...df(i,r))}const s=t.static.get(e);return s&&n.push(s),n.filter(Boolean)}function qa(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function Dr(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function Ai(e,t,n=".",s){if(!Dr(t))return Ai(e,{},n,s);const o=Object.assign({},t);for(const r in e){if(r==="__proto__"||r==="constructor")continue;const i=e[r];i!=null&&(s&&s(o,r,i,n)||(Array.isArray(i)&&Array.isArray(o[r])?o[r]=[...i,...o[r]]:Dr(i)&&Dr(o[r])?o[r]=Ai(i,o[r],(n?`${n}.`:"")+r.toString(),s):o[r]=i))}return o}function Af(e){return(...t)=>t.reduce((n,s)=>Ai(n,s,"",e),{})}const Im=Af(),Om=Af((e,t,n)=>{if(e[t]!==void 0&&typeof n=="function")return e[t]=n(e[t]),!0});function Pm(e,t){try{return t in e}catch{return!1}}var Lm=Object.defineProperty,Nm=(e,t,n)=>t in e?Lm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_n=(e,t,n)=>(Nm(e,typeof t!="symbol"?t+"":t,n),n);class hi extends Error{constructor(t,n={}){super(t,n),_n(this,"statusCode",500),_n(this,"fatal",!1),_n(this,"unhandled",!1),_n(this,"statusMessage"),_n(this,"data"),_n(this,"cause"),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:pi(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=hf(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}_n(hi,"__h3_error__",!0);function Mm(e){if(typeof e=="string")return new hi(e);if(Dm(e))return e;const t=new hi(e.message??e.statusMessage??"",{cause:e.cause||e});if(Pm(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=pi(e.statusCode,t.statusCode):e.status&&(t.statusCode=pi(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;hf(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function Dm(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const Fm=/[^\u0009\u0020-\u007E]/g;function hf(e=""){return e.replace(Fm,"")}function pi(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const pf=Symbol("route"),$i=()=>eu(je().payload,"error"),Hm=e=>{const t=gf(e);try{const n=je(),s=$i();n.hooks.callHook("app:error",t),s.value=s.value||t}catch{throw t}return t},Um=async(e={})=>{const t=je(),n=$i();t.callHook("app:error:cleared",e),e.redirect&&await Jo().replace(e.redirect),n.value=null},jm=e=>!!(e&&typeof e=="object"&&"__nuxt_error"in e),gf=e=>{const t=Mm(e);return t.__nuxt_error=!0,t},Jo=()=>{var e;return(e=je())==null?void 0:e.$router},el=()=>wu()?Re(pf,je()._route):je()._route;/*! @__NO_SIDE_EFFECTS__ */const Qm=()=>{try{if(je()._processingMiddleware)return!0}catch{return!0}return!1},Km=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:Ju(e.path||"/",e.query||{})+(e.hash||"");if(t!=null&&t.open){{const{target:l="_blank",windowFeatures:c={}}=t.open,f=Object.entries(c).filter(([u,a])=>a!==void 0).map(([u,a])=>`${u.toLowerCase()}=${a}`).join(", ");open(n,l,f)}return Promise.resolve()}const s=(t==null?void 0:t.external)||Yo(n,{acceptRelative:!0});if(s){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const l=Us(n).protocol;if(l&&zp(l))throw new Error(`Cannot navigate to a URL with '${l}' protocol.`)}const o=Qm();if(!s&&o)return e;const r=Jo(),i=je();return s?(i._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,o?i.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?r.replace(e):r.push(e)},qm={nuxt:{buildId:"fab4a5cc-9cfc-497f-9ee3-5ea7a6942142"}},zm=Om(qm);function Ym(){const e=je();return e._appConfig||(e._appConfig=qt(zm)),e._appConfig}const Xx={componentName:"NuxtLink"},Jm="#__nuxt";let Ao,mf;function Wm(){var t;const e=(t=Ym().nuxt)==null?void 0:t.buildId;return Ao=$fetch(Gi(`builds/meta/${e}.json`)),Ao.then(n=>{mf=Bm(n.matcher)}),Ao}function Wo(){return Ao||Wm()}async function vf(e){return await Wo(),Im({},...mf.matchAll(e).reverse())}function za(e,t={}){const n=Vm(e,t),s=je(),o=s._payloadCache=s._payloadCache||{};return n in o||(o[n]=Gm(e).then(r=>r?yf(n).then(i=>i||(delete o[n],null)):(o[n]=null,null))),o[n]}const Ya="json";function Vm(e,t={}){const n=new URL(e,"http://localhost");if(n.search)throw new Error("Payload URL cannot contain search params: "+e);if(n.host!=="localhost"||Yo(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const s=t.hash||(t.fresh?Date.now():"");return rs(Bo().app.baseURL,n.pathname,s?`_payload.${s}.${Ya}`:`_payload.${Ya}`)}async function yf(e){const t=fetch(e).then(n=>n.text().then(bf));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function Gm(e=el().path){if((await Wo()).prerendered.includes(e))return!0;const n=await vf(e);return!!n.prerender&&!n.redirect}let ro=null;async function Xm(){if(ro)return ro;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=bf(e.textContent||""),n=e.dataset.src?await yf(e.dataset.src):void 0;return ro={...t,...n,...window.__NUXT__},ro}function bf(e){return Kg(e,je()._payloadRevivers)}function Zm(e,t){je()._payloadRevivers[e]=t}const Ja={NuxtError:e=>gf(e),EmptyShallowRef:e=>Zl(e==="_"?void 0:e==="0n"?BigInt(0):To(e)),EmptyRef:e=>N(e==="_"?void 0:e==="0n"?BigInt(0):To(e)),ShallowRef:e=>Zl(e),ShallowReactive:e=>Oi(e),Ref:e=>N(e),Reactive:e=>qt(e)},$m=Wt({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const s in Ja)Zm(s,Ja[s]);Object.assign(e.payload,([t,n]=tf(()=>e.runWithContext(Xm)),t=await t,n(),t)),window.__NUXT__=e.payload}}),ev=[],tv=Wt({name:"nuxt:head",enforce:"pre",setup(e){const t=Em({plugins:ev});km(()=>je().vueApp._context.provides.usehead),e.vueApp.use(t);{let n=!0;const s=async()=>{n=!1,await af(t)};t.hooks.hook("dom:beforeRender",o=>{o.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||s()}),e.hooks.hook("app:error",s),e.hooks.hook("app:suspense:resolve",s)}}}),nv=async e=>{let t,n;const s=([t,n]=tf(()=>vf(e.path)),t=await t,n(),t);if(s.redirect)return s.redirect},sv=[nv];function Fr(e){typeof e=="object"&&(e=Gu({pathname:e.path||"",search:zu(e.query||{}),hash:e.hash||""}));const t=Us(e.toString());return{path:t.pathname,fullPath:e,query:qu(t.search),hash:t.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:e}}const ov=Wt({name:"nuxt:router",enforce:"pre",setup(e){const t=Wp(window.location.pathname,Bo().app.baseURL)+window.location.search+window.location.hash,n=[],s={"navigate:before":[],"resolve:before":[],"navigate:after":[],error:[]},o=(u,a)=>(s[u].push(a),()=>s[u].splice(s[u].indexOf(a),1)),r=Bo().app.baseURL,i=qt(Fr(t));async function l(u,a){try{const A=Fr(u);for(const m of s["navigate:before"]){const _=await m(A,i);if(_===!1||_ instanceof Error)return;if(typeof _=="string"&&_.length)return l(_,!0)}for(const m of s["resolve:before"])await m(A,i);Object.assign(i,A),window.history[a?"replaceState":"pushState"]({},"",rs(r,A.fullPath)),e.isHydrating||await e.runWithContext(Um);for(const m of s["navigate:after"])await m(A,i)}catch(A){for(const m of s.error)await m(A)}}const c={currentRoute:i,isReady:()=>Promise.resolve(),options:{},install:()=>Promise.resolve(),push:u=>l(u,!1),replace:u=>l(u,!0),back:()=>window.history.go(-1),go:u=>window.history.go(u),forward:()=>window.history.go(1),beforeResolve:u=>o("resolve:before",u),beforeEach:u=>o("navigate:before",u),afterEach:u=>o("navigate:after",u),onError:u=>o("error",u),resolve:Fr,addRoute:(u,a)=>{n.push(a)},getRoutes:()=>n,hasRoute:u=>n.some(a=>a.name===u),removeRoute:u=>{const a=n.findIndex(A=>A.name===u);a!==-1&&n.splice(a,1)}};e.vueApp.component("RouterLink",{functional:!0,props:{to:String,custom:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:String},setup:(u,{slots:a})=>{const A=()=>l(u.to,u.replace);return()=>{var _;const m=c.resolve(u.to);return u.custom?(_=a.default)==null?void 0:_.call(a,{href:u.to,navigate:A,route:m}):Fu("a",{href:u.to,onClick:C=>(C.preventDefault(),A())},a)}}}),window.addEventListener("popstate",u=>{const a=u.target.location;c.replace(a.href.replace(a.origin,""))}),e._route=i,e._middleware=e._middleware||{global:[],named:{}};const f=e.payload.state._layout;return e.hooks.hookOnce("app:created",async()=>{c.beforeEach(async(u,a)=>{u.meta=qt(u.meta||{}),e.isHydrating&&f&&!Bn(u.meta.layout)&&(u.meta.layout=f),e._processingMiddleware=!0;{const A=new Set([...sv,...e._middleware.global]);for(const m of A){const _=await e.runWithContext(()=>m(u,a));if(_!==!0&&(_||_===!1))return _}}}),c.afterEach(()=>{delete e._processingMiddleware}),await c.replace(t),Gp(i.fullPath,t)||await e.runWithContext(()=>Km(i.fullPath))}),{provide:{route:i,router:c}}}}),Wa=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),Zx=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),wf=e=>{const t=je();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{Wa(e)}):Wa(e)},rv=Wt({name:"nuxt:payload",setup(e){Jo().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const s=await za(t.path);s&&Object.assign(e.static.data,s.data)}),wf(()=>{var t;e.hooks.hook("link:prefetch",async n=>{Us(n).protocol||await za(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(Wo,1e3)})}}),iv=Wt({name:"nuxt:global-components"}),lv=Wt(e=>{e.hook("app:rendered",t=>{var n;(n=t.ssrContext)!=null&&n.teleports&&(t.ssrContext.teleports=av(t.ssrContext.teleports))})});function av(e){const t=Object.entries(e).reduce((n,[s,o])=>s.startsWith("#el-popper-container-")||[].includes(s)?`${n}
${o}
`:n,e.body||"");return{...e,body:t}}var Va;const is=typeof window<"u",cv=e=>typeof e=="string",uv=()=>{};is&&((Va=window==null?void 0:window.navigator)!=null&&Va.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function tl(e){return typeof e=="function"?e():H(e)}function fv(e){return e}function nl(e){return Dc()?(vA(e),!0):!1}function dv(e,t=!0){Yt()?zt(e):t?e():jt(e)}function Av(e,t,n={}){const{immediate:s=!0}=n,o=N(!1);let r=null;function i(){r&&(clearTimeout(r),r=null)}function l(){o.value=!1,i()}function c(...f){i(),o.value=!0,r=setTimeout(()=>{o.value=!1,r=null,e(...f)},tl(t))}return s&&(o.value=!0,is&&c()),nl(l),{isPending:Pi(o),start:c,stop:l}}function _f(e){var t;const n=tl(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Cf=is?window:void 0;function hv(...e){let t,n,s,o;if(cv(e[0])||Array.isArray(e[0])?([n,s,o]=e,t=Cf):[t,n,s,o]=e,!t)return uv;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const r=[],i=()=>{r.forEach(u=>u()),r.length=0},l=(u,a,A,m)=>(u.addEventListener(a,A,m),()=>u.removeEventListener(a,A,m)),c=Nt(()=>[_f(t),tl(o)],([u,a])=>{i(),u&&r.push(...n.flatMap(A=>s.map(m=>l(u,A,m,a))))},{immediate:!0,flush:"post"}),f=()=>{c(),i()};return nl(f),f}function pv(e,t=!1){const n=N(),s=()=>n.value=!!e();return s(),dv(s,t),n}const Ga=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Xa="__vueuse_ssr_handlers__";Ga[Xa]=Ga[Xa]||{};var Za=Object.getOwnPropertySymbols,gv=Object.prototype.hasOwnProperty,mv=Object.prototype.propertyIsEnumerable,vv=(e,t)=>{var n={};for(var s in e)gv.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&Za)for(var s of Za(e))t.indexOf(s)<0&&mv.call(e,s)&&(n[s]=e[s]);return n};function yv(e,t,n={}){const s=n,{window:o=Cf}=s,r=vv(s,["window"]);let i;const l=pv(()=>o&&"ResizeObserver"in o),c=()=>{i&&(i.disconnect(),i=void 0)},f=Nt(()=>_f(e),a=>{c(),l.value&&o&&a&&(i=new ResizeObserver(t),i.observe(a,r))},{immediate:!0,flush:"post"}),u=()=>{c(),f()};return nl(u),{isSupported:l,stop:u}}var $a;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})($a||($a={}));var bv=Object.defineProperty,ec=Object.getOwnPropertySymbols,wv=Object.prototype.hasOwnProperty,_v=Object.prototype.propertyIsEnumerable,tc=(e,t,n)=>t in e?bv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Cv=(e,t)=>{for(var n in t||(t={}))wv.call(t,n)&&tc(e,n,t[n]);if(ec)for(var n of ec(t))_v.call(t,n)&&tc(e,n,t[n]);return e};const Ev={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};Cv({linear:fv},Ev);var kv=typeof global=="object"&&global&&global.Object===Object&&global;const xv=kv;var Sv=typeof self=="object"&&self&&self.Object===Object&&self,Tv=xv||Sv||Function("return this")();const sl=Tv;var Rv=sl.Symbol;const $n=Rv;var Ef=Object.prototype,Bv=Ef.hasOwnProperty,Iv=Ef.toString,ys=$n?$n.toStringTag:void 0;function Ov(e){var t=Bv.call(e,ys),n=e[ys];try{e[ys]=void 0;var s=!0}catch{}var o=Iv.call(e);return s&&(t?e[ys]=n:delete e[ys]),o}var Pv=Object.prototype,Lv=Pv.toString;function Nv(e){return Lv.call(e)}var Mv="[object Null]",Dv="[object Undefined]",nc=$n?$n.toStringTag:void 0;function kf(e){return e==null?e===void 0?Dv:Mv:nc&&nc in Object(e)?Ov(e):Nv(e)}function Fv(e){return e!=null&&typeof e=="object"}var Hv="[object Symbol]";function ol(e){return typeof e=="symbol"||Fv(e)&&kf(e)==Hv}function Uv(e,t){for(var n=-1,s=e==null?0:e.length,o=Array(s);++n-1}function By(e,t){var n=this.__data__,s=Vo(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this}function ls(e){var t=-1,n=e==null?0:e.length;for(this.clear();++te===void 0,Ns=e=>typeof e=="number",e0=e=>typeof Element>"u"?!1:e instanceof Element,t0=e=>Te(e)?!Number.isNaN(Number(e)):!1,ic=e=>Object.keys(e);function gi(e,t="px"){if(!e)return"";if(Ns(e)||t0(e))return`${e}${t}`;if(Te(e))return e}/*! Element Plus Icons Vue v2.3.1 */var n0=Ge({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(S(),T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),Rf=n0,s0=Ge({name:"Close",__name:"close",setup(e){return(t,n)=>(S(),T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),o0=s0,r0=Ge({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(S(),T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Bf=r0,i0=Ge({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(S(),T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),If=i0,l0=Ge({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(S(),T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[d("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),Of=l0;const Pf="__epPropKey",Tn=e=>e,a0=e=>xe(e)&&!!e[Pf],Lf=(e,t)=>{if(!xe(e)||a0(e))return e;const{values:n,required:s,default:o,type:r,validator:i}=e,c={type:r,required:!!s,validator:n||i?f=>{let u=!1,a=[];if(n&&(a=Array.from(n),ge(e,"default")&&a.push(o),u||(u=a.includes(f))),i&&(u||(u=i(f))),!u&&a.length>0){const A=[...new Set(a)].map(m=>JSON.stringify(m)).join(", ");JA(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${A}], got value ${JSON.stringify(f)}.`)}return u}:void 0,[Pf]:!0};return ge(e,"default")&&(c.default=o),c},Xo=e=>Zy(Object.entries(e).map(([t,n])=>[t,Lf(n,t)])),c0=Tn([String,Object,Function]),u0={Close:o0,SuccessFilled:If,InfoFilled:Bf,WarningFilled:Of,CircleCloseFilled:Rf},lc={success:If,warning:Of,error:Rf,info:Bf},Nf=(e,t)=>{if(e.install=n=>{for(const s of[e,...Object.values(t??{})])n.component(s.name,s)},t)for(const[n,s]of Object.entries(t))e[n]=s;return e},f0=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),d0={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},A0=["","default","small","large"],h0=e=>e,ac=({from:e,replacement:t,scope:n,version:s,ref:o,type:r="API"},i)=>{Nt(()=>H(i),l=>{},{immediate:!0})};var p0={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const g0=e=>(t,n)=>m0(t,n,H(e)),m0=(e,t,n)=>Xy(n,e,e).replace(/\{(\w+)\}/g,(s,o)=>{var r;return`${(r=t==null?void 0:t[o])!=null?r:`{${o}}`}`}),v0=e=>{const t=Ce(()=>H(e).name),n=Le(e)?e:N(e);return{lang:t,locale:n,t:g0(e)}},Mf=Symbol("localeContextKey"),y0=e=>{const t=e||Re(Mf,N());return v0(Ce(()=>t.value||p0))},ho="el",b0="is-",wn=(e,t,n,s,o)=>{let r=`${e}-${t}`;return n&&(r+=`-${n}`),s&&(r+=`__${s}`),o&&(r+=`--${o}`),r},Df=Symbol("namespaceContextKey"),w0=e=>{const t=e||(Yt()?Re(Df,N(ho)):N(ho));return Ce(()=>H(t)||ho)},ll=(e,t)=>{const n=w0(t);return{namespace:n,b:(C="")=>wn(n.value,e,C,"",""),e:C=>C?wn(n.value,e,"",C,""):"",m:C=>C?wn(n.value,e,"","",C):"",be:(C,P)=>C&&P?wn(n.value,e,C,P,""):"",em:(C,P)=>C&&P?wn(n.value,e,"",C,P):"",bm:(C,P)=>C&&P?wn(n.value,e,C,"",P):"",bem:(C,P,V)=>C&&P&&V?wn(n.value,e,C,P,V):"",is:(C,...P)=>{const V=P.length>=1?P[0]:!0;return C&&V?`${b0}${C}`:""},cssVar:C=>{const P={};for(const V in C)C[V]&&(P[`--${n.value}-${V}`]=C[V]);return P},cssVarName:C=>`--${n.value}-${C}`,cssVarBlock:C=>{const P={};for(const V in C)C[V]&&(P[`--${n.value}-${e}-${V}`]=C[V]);return P},cssVarBlockName:C=>`--${n.value}-${e}-${C}`}},_0=Symbol("elIdInjection"),cc={current:0},uc=N(0),Ff=2e3,mi=Symbol("elZIndexContextKey"),Hf=Symbol("zIndexContextKey"),C0=e=>{const t=Yt()?Re(mi,cc):cc,n=e||(Yt()?Re(Hf,void 0):void 0),s=Ce(()=>{const i=H(n);return Ns(i)?i:Ff}),o=Ce(()=>s.value+uc.value),r=()=>(t.current++,uc.value=t.current,o.value);return!is&&Re(mi),{initialZIndex:s,currentZIndex:o,nextZIndex:r}};Lf({type:String,values:A0,required:!1});const E0=Symbol("size"),k0=Symbol("emptyValuesContextKey");Xo({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>ue(e)?!e():!e}});const Uf=Symbol(),Po=N();function jf(e,t=void 0){const n=Yt()?Re(Uf,Po):Po;return e?Ce(()=>{var s,o;return(o=(s=n.value)==null?void 0:s[e])!=null?o:t}):n}function x0(e,t){const n=jf(),s=ll(e,Ce(()=>{var l;return((l=n.value)==null?void 0:l.namespace)||ho})),o=y0(Ce(()=>{var l;return(l=n.value)==null?void 0:l.locale})),r=C0(Ce(()=>{var l;return((l=n.value)==null?void 0:l.zIndex)||Ff})),i=Ce(()=>{var l;return H(t)||((l=n.value)==null?void 0:l.size)||""});return S0(Ce(()=>H(n)||{})),{ns:s,locale:o,zIndex:r,size:i}}const S0=(e,t,n=!1)=>{var s;const o=!!Yt(),r=o?jf():void 0,i=(s=t==null?void 0:t.provide)!=null?s:o?ze:void 0;if(!i)return;const l=Ce(()=>{const c=H(e);return r!=null&&r.value?T0(r.value,c):c});return i(Uf,l),i(Mf,Ce(()=>l.value.locale)),i(Df,Ce(()=>l.value.namespace)),i(Hf,Ce(()=>l.value.zIndex)),i(E0,{size:Ce(()=>l.value.size||"")}),i(k0,Ce(()=>({emptyValues:l.value.emptyValues,valueOnClear:l.value.valueOnClear}))),(n||!Po.value)&&(Po.value=l.value),l},T0=(e,t)=>{const n=[...new Set([...ic(e),...ic(t)])],s={};for(const o of n)s[o]=t[o]!==void 0?t[o]:e[o];return s},fc={};var al=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n};const R0=Xo({size:{type:Tn([Number,String])},color:{type:String}}),B0=Ge({name:"ElIcon",inheritAttrs:!1}),I0=Ge({...B0,props:R0,setup(e){const t=e,n=ll("icon"),s=Ce(()=>{const{size:o,color:r}=t;return!o&&!r?{}:{fontSize:$y(o)?void 0:gi(o),"--color":r}});return(o,r)=>(S(),T("i",Nu({class:H(n).b(),style:H(s)},o.$attrs),[Ki(o.$slots,"default")],16))}});var O0=al(I0,[["__file","icon.vue"]]);const dc=Nf(O0),P0=Xo({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,dotStyle:{type:Tn([String,Object,Array])},badgeStyle:{type:Tn([String,Object,Array])},offset:{type:Tn(Array),default:[0,0]},dotClass:{type:String},badgeClass:{type:String}}),L0=["textContent"],N0=Ge({name:"ElBadge"}),M0=Ge({...N0,props:P0,setup(e,{expose:t}){const n=e,s=ll("badge"),o=Ce(()=>n.isDot?"":Ns(n.value)&&Ns(n.max)?n.max{var i,l,c,f,u,a;return[{backgroundColor:n.color,marginRight:gi(-((l=(i=n.offset)==null?void 0:i[0])!=null?l:0)),marginTop:gi((f=(c=n.offset)==null?void 0:c[1])!=null?f:0)},(u=n.dotStyle)!=null?u:{},(a=n.badgeStyle)!=null?a:{}]});return ac({from:"dot-style",replacement:"badge-style",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},Ce(()=>!!n.dotStyle)),ac({from:"dot-class",replacement:"badge-class",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},Ce(()=>!!n.dotClass)),t({content:o}),(i,l)=>(S(),T("div",{class:Ee(H(s).b())},[Ki(i.$slots,"default"),_e(Hs,{name:`${H(s).namespace.value}-zoom-in-center`,persisted:""},{default:Pt(()=>[gt(d("sup",{class:Ee([H(s).e("content"),H(s).em("content",i.type),H(s).is("fixed",!!i.$slots.default),H(s).is("dot",i.isDot),i.dotClass,i.badgeClass]),style:Ze(H(r)),textContent:ee(H(o))},null,14,L0),[[ko,!i.hidden&&(H(o)||i.isDot)]])]),_:1},8,["name"])],2))}});var D0=al(M0,[["__file","badge.vue"]]);const F0=Nf(D0),Qf=["success","info","warning","error"],We=h0({customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",plain:!1,offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:is?document.body:void 0}),H0=Xo({customClass:{type:String,default:We.customClass},center:{type:Boolean,default:We.center},dangerouslyUseHTMLString:{type:Boolean,default:We.dangerouslyUseHTMLString},duration:{type:Number,default:We.duration},icon:{type:c0,default:We.icon},id:{type:String,default:We.id},message:{type:Tn([String,Object,Function]),default:We.message},onClose:{type:Tn(Function),default:We.onClose},showClose:{type:Boolean,default:We.showClose},type:{type:String,values:Qf,default:We.type},plain:{type:Boolean,default:We.plain},offset:{type:Number,default:We.offset},zIndex:{type:Number,default:We.zIndex},grouping:{type:Boolean,default:We.grouping},repeatNum:{type:Number,default:We.repeatNum}}),U0={destroy:()=>!0},Et=Oi([]),j0=e=>{const t=Et.findIndex(o=>o.id===e),n=Et[t];let s;return t>0&&(s=Et[t-1]),{current:n,prev:s}},Q0=e=>{const{prev:t}=j0(e);return t?t.vm.exposed.bottom.value:0},K0=(e,t)=>Et.findIndex(s=>s.id===e)>0?16:t,q0=["id"],z0=["innerHTML"],Y0=Ge({name:"ElMessage"}),J0=Ge({...Y0,props:H0,emits:U0,setup(e,{expose:t}){const n=e,{Close:s}=u0,{ns:o,zIndex:r}=x0("message"),{currentZIndex:i,nextZIndex:l}=r,c=N(),f=N(!1),u=N(0);let a;const A=Ce(()=>n.type?n.type==="error"?"danger":n.type:"info"),m=Ce(()=>{const J=n.type;return{[o.bm("icon",J)]:J&&lc[J]}}),_=Ce(()=>n.icon||lc[n.type]||""),C=Ce(()=>Q0(n.id)),P=Ce(()=>K0(n.id,n.offset)+C.value),V=Ce(()=>u.value+P.value),Y=Ce(()=>({top:`${P.value}px`,zIndex:i.value}));function v(){n.duration!==0&&({stop:a}=Av(()=>{M()},n.duration))}function k(){a==null||a()}function M(){f.value=!1}function ne({code:J}){J===d0.esc&&M()}return zt(()=>{v(),l(),f.value=!0}),Nt(()=>n.repeatNum,()=>{k(),v()}),hv(document,"keydown",ne),yv(c,()=>{u.value=c.value.getBoundingClientRect().height}),t({visible:f,bottom:V,close:M}),(J,z)=>(S(),ot(Hs,{name:H(o).b("fade"),onBeforeLeave:J.onClose,onAfterLeave:z[0]||(z[0]=$=>J.$emit("destroy")),persisted:""},{default:Pt(()=>[gt(d("div",{id:J.id,ref_key:"messageRef",ref:c,class:Ee([H(o).b(),{[H(o).m(J.type)]:J.type},H(o).is("center",J.center),H(o).is("closable",J.showClose),H(o).is("plain",J.plain),J.customClass]),style:Ze(H(Y)),role:"alert",onMouseenter:k,onMouseleave:v},[J.repeatNum>1?(S(),ot(H(F0),{key:0,value:J.repeatNum,type:H(A),class:Ee(H(o).e("badge"))},null,8,["value","type","class"])):re("v-if",!0),H(_)?(S(),ot(H(dc),{key:1,class:Ee([H(o).e("icon"),H(m)])},{default:Pt(()=>[(S(),ot(iu(H(_))))]),_:1},8,["class"])):re("v-if",!0),Ki(J.$slots,"default",{},()=>[J.dangerouslyUseHTMLString?(S(),T(he,{key:1},[re(" Caution here, message could've been compromised, never use user's input as message "),d("p",{class:Ee(H(o).e("content")),innerHTML:J.message},null,10,z0)],2112)):(S(),T("p",{key:0,class:Ee(H(o).e("content"))},ee(J.message),3))]),J.showClose?(S(),ot(H(dc),{key:2,class:Ee(H(o).e("closeBtn")),onClick:ke(M,["stop"])},{default:Pt(()=>[_e(H(s))]),_:1},8,["class","onClick"])):re("v-if",!0)],46,q0),[[ko,f.value]])]),_:3},8,["name","onBeforeLeave"]))}});var W0=al(J0,[["__file","message.vue"]]);let V0=1;const Kf=e=>{const t=!e||Te(e)||In(e)||ue(e)?{message:e}:e,n={...We,...t};if(!n.appendTo)n.appendTo=document.body;else if(Te(n.appendTo)){let s=document.querySelector(n.appendTo);e0(s)||(s=document.body),n.appendTo=s}return n},G0=e=>{const t=Et.indexOf(e);if(t===-1)return;Et.splice(t,1);const{handler:n}=e;n.close()},X0=({appendTo:e,...t},n)=>{const s=`message_${V0++}`,o=t.onClose,r=document.createElement("div"),i={...t,id:s,onClose:()=>{o==null||o(),G0(u)},onDestroy:()=>{Ia(null,r)}},l=_e(W0,i,ue(i.message)||In(i.message)?{default:ue(i.message)?i.message:()=>i.message}:null);l.appContext=n||es._context,Ia(l,r),e.appendChild(r.firstElementChild);const c=l.component,u={id:s,vnode:l,vm:c,handler:{close:()=>{c.exposed.visible.value=!1}},props:l.component.props};return u},es=(e={},t)=>{if(!is)return{close:()=>{}};if(Ns(fc.max)&&Et.length>=fc.max)return{close:()=>{}};const n=Kf(e);if(n.grouping&&Et.length){const o=Et.find(({vnode:r})=>{var i;return((i=r.props)==null?void 0:i.message)===n.message});if(o)return o.props.repeatNum+=1,o.props.type=n.type,o.handler}const s=X0(n,t);return Et.push(s),s.handler};Qf.forEach(e=>{es[e]=(t={},n)=>{const s=Kf(t);return es({...s,type:e},n)}});function Z0(e){for(const t of Et)(!e||e===t.props.type)&&t.handler.close()}es.closeAll=Z0;es._context=null;const Ur=f0(es,"$message"),$0=Wt(e=>{e.vueApp.provide(_0,{prefix:1024,current:0}).provide(mi,{current:0})});function e1(e={}){const t=e.path||window.location.pathname;let n={};try{n=To(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){s.clear()}),e.hook("app:chunkError",({error:r})=>{s.add(r)});function o(r){const l="href"in r&&r.href.startsWith("#")?n.app.baseURL+r.href:rs(n.app.baseURL,r.fullPath);e1({path:l,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(o)}),t.onError((r,i)=>{s.has(r)&&o(i)})}}),n1=Wt(e=>{let t;async function n(){const s=await Wo();t&&clearTimeout(t),t=setTimeout(n,1e3*60*60);const o=await $fetch(Gi("builds/latest.json"));o.id!==s.id&&e.hooks.callHook("app:manifest:update",o)}wf(()=>{t=setTimeout(n,1e3*60*60)})}),s1=[$m,tv,ov,rv,iv,lv,$0,t1,n1],o1=e=>Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0)),qf=(e,t)=>(n,s)=>(Sm(()=>e({...o1(n),...s.attrs},s)),()=>{var o,r;return t?(r=(o=s.slots).default)==null?void 0:r.call(o):null}),r1={accesskey:String,autocapitalize:String,autofocus:{type:Boolean,default:void 0},class:[String,Object,Array],contenteditable:{type:Boolean,default:void 0},contextmenu:String,dir:String,draggable:{type:Boolean,default:void 0},enterkeyhint:String,exportparts:String,hidden:{type:Boolean,default:void 0},id:String,inputmode:String,is:String,itemid:String,itemprop:String,itemref:String,itemscope:String,itemtype:String,lang:String,nonce:String,part:String,slot:String,spellcheck:{type:Boolean,default:void 0},style:String,tabindex:String,title:String,translate:String},i1=Ge({name:"Title",inheritAttrs:!1,setup:qf((e,{slots:t})=>{var n,s,o;return{title:((o=(s=(n=t.default)==null?void 0:n.call(t))==null?void 0:s[0])==null?void 0:o.children)||null}})}),l1=Ge({name:"Meta",inheritAttrs:!1,props:{...r1,charset:String,content:String,httpEquiv:String,name:String,body:Boolean,renderPriority:[String,Number]},setup:qf(e=>{const t={...e};return t.httpEquiv&&(t["http-equiv"]=t.httpEquiv,delete t.httpEquiv),{meta:[t]}})}),a1=Ge({name:"Head",inheritAttrs:!1,setup:(e,t)=>()=>{var n,s;return(s=(n=t.slots).default)==null?void 0:s.call(n)}}),c1=Ge({name:"ClientOnly",inheritAttrs:!1,props:["fallback","placeholder","placeholderTag","fallbackTag"],setup(e,{slots:t,attrs:n}){const s=N(!1);return zt(()=>{s.value=!0}),o=>{var c;if(s.value)return(c=t.default)==null?void 0:c.call(t);const r=t.fallback||t.placeholder;if(r)return r();const i=o.fallback||o.placeholder||"",l=o.fallbackTag||o.placeholderTag||"span";return T(l,n,i)}}});const io="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAALmklEQVR4nO2d7VnbSBeGZ6QF9l+cCkIqwFsBpIKQAgC5gpAKcCoIWwEKFBBvBXEqCFQQbwXr999CXkl7jywRA/6Q7fmS0H1d55ojIHA055lvyZGigWRRtPv/JHmVSNnlBjsiy3YzIXYFSCnVdRf3AZmUI74+EgVSiDE/fE05knz9tzC8kXE85luNgvurNyS7c5em+7jdLMsOuKEufgczwTgT4jrAEMxwOwi+1V0U1Ff9+Hl0tE8iDknCAa22y5fcoXqJLBtSkYOtq6tvfKVWSKwW3EVRN0uS97iHWAfzkTE2kGH453YcX+N7j9cCoHvfpXs/obVHtLJdUSPonUZUbsww8ZlhYiQ8hRj942cUHaRJcoIbiWYQB2H4eSuOh8IzJOYNKvFJkpwR1IFoIJkQwzAMP/okBIk5p+mJf4xPQpCYM9QYf5skFwRxIJ4ng+0w/OByjkDdu+H2+PiMJdwpbgd7zqgNp/Ody8uP+NaRmFXy7j5NL+o2qzeNWjWEQdCzPSxIzBp3R0efGP9OcVvmQELOt6+uPuBagb9nHjXWs57/Qpff5bJlGewusn/wzsbcwLgAaPURrf4Tbgdrqc5YhGFvJ44H+MYwKoBiotcXLWtDgowOCfx+/dDld+6SRLX6SLToIC6Wi2N8rWgXQJ78NP1Ky+9y2aKLybzgjW4RaBVAm3zDGBCBNgG0ybeD2i8IWCHoOm7WIoA2+XZRItgJgj909AQbC6BNviM0DQcbCaBNvmM0iGAjAdweHV1QRKLFJfHO1VWPci0kthZ3x8fnWZa9x21xjJTyz+3Ly1PclVlLALdRdCiS5Atuiy+E4bt1to1XFgDj/i67fN9xO1iLP4zZLVQrg5FYgZUEQPLbSZ/PMCncubz8A68yKwmgHff9Z9X5QGUBqCd50iT5itviOUEYvtmq+GSRxCrB0e73tuuvB2qn8PfLy9e4S5HYUkh+n+Sf4bbUBSk/Mh/oiyUsFQATPzXr/4HbUi8qrQqWCoDdvi8Uh1jLfG4Yd0/TNB3QU77g2hcG7BK+o5zLQgF4M/GT8n8yy04Z2849q2DFDS3tgJY2zt9gTtOhTzEizDeLJoQSm8u/R0df+YED4RKV/CA4UOffqoIR5ICYXvEdH7hPPn6ObzFmQgx/v7p6gzsTic3Ei9Y/lXyucpiTqOcNh0KIPcwdM2Ir8SbGgkW9gMRm4rz1+1zBC2IrcR7jFNmCXkBiT/Ch9RNYb/vqKhZzcFbBFZJf4izGGczrBST2BNb9MROZE1wnENTC5JdYr+AVkl9iPcZ5SPmZfYFIPEJiDyBgp+t+AqqU/BLiVRUcCyHeYkaRrKtXSf40rhuVggnrayasIzEF9f0QAu0T6BmudQimt0rypyHumLhPcI2wSWwlpmNcyozdQe7rIf8eH/9gzb0rLJMJ8YGJyjnu2piqYCpp4+SXmIqxCuyjPDkjkNg9ag2bTR72sMuc8WkddFew1Jj8Et0xroJ8NIxxf79wEpjG5Jfoug9pIPkKttcvKCLhgMfPC3CPvyCwfyg6mBUyIb7R7R8IA7CPcSonr6Wvx4zxUgfU8QVFJNwx5nzgJWUOdTTB4do/JqAepXaKzya4wF0NA72SwoPk50zvCUgsh26zT7d5huuC2BsRNDz5OVO9m8RyEIDrJ37ci8BQ8iv/fUtkU0OvxMrNlH9wXWNWBIuOk59J8kvYFHrJptBY4vv2oseA4HoqOHyt5MvcGef12VSL0Imvyc8pXiSRuP497i3lxi89zmOGCJ6c6evA6+RDuRzMBcCSaYizj+sPdkQwMpJ89fsnK6oO5iVZ0euRd4YAy+v/yhgWwZb6/4A0/271e31PfkG+HyCZADo9/VuKQRHopkbJz6H3eykdbgCtwliyeTG9h+0bdUu+Qm0ISdb/fcbCM659x1sR0IvW8qVZxv9enQSg8E4EdU1+DjuC0ssVwGK8EUGtkz/hrzoKQGHlg5QX0YDk50tB6eoJIB0g3J6J8/oqsHS+oIhEjcmUALgRyvriQgTU2QVFJGpO1gQBKGyKgPq6oIhEA+BwbNQIAShsiIC6uqCIRINojAAKYrY3e5TaKSZ9IyZ9L7hsDM0SgKEz/ZJ8t29yiNQYETRHAIaTX9I0ETRDAJaSX9IkETRBAEYe6FhGLoLJO4l7WC0h8WwEHR2NpCefZrEGTpJfkk8MfXjzd02yQgBDBLDPdd1wmvySOosgq7EAvEh+SW1FwNypbsfBKuiVP6TBBrUUgToOrpUAPE1+SSGCWFj4sAodZEJ8kJ69EzAfz5M/DY0qplGd4HpN/kgYqvX7oVBFjZJfUgcRMI96yfwvD3ZMsC9wvYQgtR/0KOHfpunXMAh6W8WbsrqhXmPq1U8R0KjYPOtIXOHzSoC4TCRfHezcP81j4m+U+CqCjCXg/Ysh3r0aVkBw2hPzOPklJv5WiZf1ywqAHqDPfROgh++xZcxQUeg5rjbmJb+EyjAnAt/qePrlUCrGr4kgGxSoMxKaoTte+hkI8pmIIJ8AspHG/U7gUOiaYg9zi6nkr/Y0T2zqwRJPRHDD/XUphcRyvBin/Eh+SXNFUIz/AiSW48E7gn9R4YeUWlkz+SVmRbDoE0sMojaAtoqlr8TuYYwcuwgIjBzuaOrVYmMiUM8U2H6wpFj/4+VI7B4EEBPMCa5NzCRftTB93az1j60xhSw+GQQ354EAHAwDdUj+BIOfU0DD6yOAM1zjyEUfFatgV3DEF1/hGiUT4u+dMOzqrlAjyS8xIAKj8T4io87ZW9kVU5DrhyCAU774Cdc0A8bWd5TasNKDaRSBzeTnTM3+S8j1QyxvCmmbYOVj6ST5HcwsExG8QwQjsSbWkw8Mt68fxyyxJ7B0GlC8xWywsQisJv8Xa39OQRHvd1x7zNljkdgTrHSlD1lbBEVlqlg7mG1WFoGreKfX/tNIbCbMBYZ8cx/XDpNu9Q1d1JirSjBcqUewfuB2MFdUFoGr5GfF0a+YgcRm4qAXIJrqIsiTv+BkzzJLReAq+Yp5rV8hsblY7wUUFUTgWfLvoa56s04SiVdNrNWY38Gski1o/QqJzcVJL6BYIAIq08vkl1ChD0TgOt5FrV8hsYVYXhH8AhHIIOg97lbpldz+l7YVIL5cBK6Tny1p/QqJLYSb2OUmrrmJF1za5sHYihgvKCJRAzjpUxtqEfXW5dI+HPrQi6qd1pFYADEux+Ze9QxyETCBeo8fiZZqzNj1m0UlAShofdcUe1iL52Qz9vznUVkAziaELSuzbOI3jcQqo+kBixaTVOz6S1YSgKIdCrzmhi31LmVlVhaA41VByzwqzvofs7IAFLV5o/gZQSJ7au9BrAj/bj3a+YBHrDjuT7O2ABTsD8QMBSe4La6Yc85fFYltRDspdMrGD9VuLAAmhepMfihaEdhm4+QrNhaAohWBdbQkX6FFAApEoM68B7itCMyiLfkKbQJQIIK2JzCL1uQrtApA0YrAGNqTr9AugJJ2iaiRDZd6i5CYMdrNos15/DKnbowKQJFvG6ep6g1ecNlSFfb2RRBE6nN8uDKGcQEomBe0K4TVUOP9IeP9SBjGigBK2iFhOaa7/MdYFYCieLLoHHcPa/nFjQzDqHwA1hbWBVDCKqEvhDht5wawwWnepjgTgKKYG5zjvsWeHyzvtoOgb2Osn4dTAZSoYSFJkj7B7HPZeDIhvoVh2K/64KZJqHN/aLoQMo8SX0Jd+4cSAhPFU9xmDA109TIIzm1P8KrgpQBK1BzhNkkOcdVrVq8oa0MmxN8U5zthOHA5xi9DYrUg7xXSNBJCHHq7cmD3jgqN2cGLfWztsyDe+pF/2EKaKiEccrmHueSGxA+CIBhueTS2V6WWApiGYaLzk2Eik3KXXcYDdtK6wlQPQQvnb1zzN4a08uttIYZ072O+U1sk1jgQxe6dEF2Rpl0u0UN2IICb7VDsYYu4Yfwe87NjEn7NNbkOhr8JcV33ZM/iP99/T4+xGHCrAAAAAElFTkSuQmCC",lo="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAIiklEQVR4nO2bj13iSBTH33gFkKtArMBQAbECsQKhgTPhCtAtYCFWYKxAtgJjBeYqMFuB2QLOue8EiCQESAK4uLffz2d23oTMm/d+8yeB3VWyZ8bjcftI664o1dYitmhtcdmmWJRFYjFFqUSJRNwXvSn15HlewvW9wVi7h6RtHF+SRI9mW7YjQpQQ8e4RI6K9UxRlJ5C0dSRypbXui0hb9kOsRHxWhhEjob01+NuOhcRdmhblI0iUUv6byK23pRBbCXA7Gl2xNG+kQuLc90Rl9nYiR0ehlPH25rDc2yLSViJd6k0k3OdeDYf32I1QlNow67bS+g7TppSiRb5TTUhowiyF0gDGcRCsh9lXIi3qVYRaqQHjxFIT/NZj06zz2RNJ+wQzobkzEKOHGC4Bd2mWkSACw3qB1AB/1fHH4zuC6EsJepq4SwARzb2BEDYx+ATepbmMUgFBDLAqoSgbYVCLJf+A6UgBbZb6NPEJzQ+DmHozIY5p5kEELUJImw9I+q+HgUzyj5g2JYcW+cZg/SoD7QMTGyIEJHFOs0jEljjbFBt91+OPRs9UNiUHzvHt+Zg/HYToM0l3mHk4gFmaF1grWSvAqj1P8gOSD+SAQASHWCck1KL5DtsBEQZYpShKKTh0UXWMmYPkO96eD7qmELONCCFJtWhmEPPKCePeZYwjkn/EtCgZ6xwdCsTuzGJfJCH2M2KPsHOUClC273FA/8PY85tAhD4i3GEuErnDYYc6x5IAdHbpPMbM0Jz23nDYw/w0jEejgOQuMTPKJpF73iF5i+RfMC1Kip4+5206JjQ/DSYXzoOIBI9pzjFb4WQxFz5/Z/z16w3fsq4xM+hw4X3wS86uQIQeE/qAmcG31i/e33/fyIxMAG62uPkF06KkaF5vWfqOfGLYCiFJdjEzmFSzCmIBPpuyYvY7XsnJ+ZlgYm0m9hkzY3EVZAJw8r9QtWWG/gVmf07JKoh5IpxQi6KUq7TF3sef9YfWp/8q9cPbwQra1h/9e+T3gJkxz28qwGjkY1xhpmhOfma/LTVhIAs/16wxl+aciMEGDBZh14bX8fEu/JFjTGzHmCna/Mg6HPa5xiCFFx8+vOVDF7MWDOLj8AqzSEzQHW/h8VOFsnNpRm1/JbElbIM/FQJbLI9XLmTg/AznodQEITVVKfgc4DOQGmzwh7v8S806yNMhz0fMDHx0jAA9PnignYEyiFUP/CwNsMjiyVsF/Nn4e8YsRTdYpUVBEcBTxWWmG57+BGwR8CtmKWYw8DErUwx4kbqCGtgGITPbxUzRnAOKixMuntNO4WJtZecUfc3B5w9Rqo0ACc3KbPBnXs9jqQH+AvxdYqZoJtsIEHKxSzulibJzzCrAgfF3SjNFT4PtEWwoNZn5MyJ0aaboqT8Xf4HUpLjaDYpl9kptUVJYqmc4D2ULCNxJ/5Lj6CgWkQn+EurGFPyF+IulAfjpsU0fMDOMAJo6YxcCHCoIsHRQ/xbgtwD/dwF4CiScsi3slF9cgD4C3GFmGAHMY6uLnbLNY/DQKT4GNY9UI8AEAc5pp3Cx8YvQoVOSKy9Cy6o0ehX+DHDePVPZlBRyvd/Zl6FDhzwt8nzFzOC8GxgByj745Q5C8uyR5wNmBnmepDPN3ogwTjFTWBqNzgEGsajaiBdR7wXGaAswRiw1IMeAHC8xU/TsVy+upR/6GFeYc2K2wQl1ZQjMRuFHTAtlO94eRCiMMWCMQCrC/n+lsigpejbJCnvu+BkzgwEuPH40xKwEA5j+NsWQ0P+M/hH2TiBG8wwfY1qUFMY4YYxYNjDre4eZQd+OR3ypAAZWQUzjGHNOyCo4o64EAmiqRYwIF96WZwnBW2r5h9YU/J9V8U9sj1SOzNCz5S+A7ynFx6Gh6gCGsv4pSvla5At+Elq1uB2NLul7IyJtKcD1J5JwZAMI6DD7j5gZ5EU401+nFCWFG82PDzEXWjTn1FoFrKJQLbxVLjD/l533DBzLGkwcR1qf6xWJG/jsCWF7+EporoXZf6ayKSn0NT+otOd9FSWjbBZR68KreBaY4BFxgtMuzVVEjDH1x9/e8idRKJs/aab/KNKmrESzMJh5F3MjxNNn9u8wMxgj96pPrO/QwSQQc7FFc06MCB1vplgVWAk+Pq4wd4Zm3yKUSxwTmhsxuZD8C6ZFSdGF2TcoSg46unQcY77DjDHyBVZl8OMgphHilGZj0qDxw89h/mLgm2DpP1I5sgATeeEVBCS+ZZjBiA9ygdOZvtODow4zIVxMB58t6kro6T4PGDOQmpRuZfyxdRwpQEzLELRN0CEf5gJGhEGTgObgd/rjpmG67y2KIWG8iFqY6ZAxQmkIYyzve7OKGA+/sRQgx3JwtLwVABE6Hi8QmAcHMS8lbyDmM2IOpYSVAhjYCgE3XGLmwOEAh4EcECuTL5z6RchvPYgQclMXMwfXzH9UuMX86dyOx9da6xspoM17B38FLmsgj/WgrIWMITee0szD04FBzGpIaH04JjZm/QHTkQLEtTF5A3ltxgyECBNu7tIsErMl0CD/eNk3s9dkH9Oi5OB6peQN5FQdtkNAh0vMMkKE+IIQoewRJsNh1q8xHSmBGAih+uOafOpBAC6r4YaOLZplhHzmcz58w94ZzLj5fuBiOlICn5lHXY/kQ6kBsdYHEWxECOh8SnMVMQFN+GIz+Ws4fKJdC8aw6NtlRnuM1eOSRSmF5M1Lk0k+oVkLRWkMQboEd4OTFs1NhAQZc2/MEg6lAElYfG5Tt/Fpc8mUtXDvd/q4JD6h2QhF2QpEsHi7c00gOKsixNaQeKPvB2UQ825YEKKP02Mu7Rwt8g/+fczJtonPIdbdgxg2M9QXDiwGOKVuTJr0dPsEJB1h7xTi2y+IYVGZL0E2SdjYFqXNwMfUGdrsZ84HMYXfJFjeEXZI0gn13vgPpzOTBSef2gIAAAAASUVORK5CYII=",Zo="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAEMklEQVRoBdVYXVLbMBCOM4FnjpCeAB8hPUHbE+CcoGSGn0fcR+AhuQHmBMAJQk9AeoK2N2hfgSH9PlXrWcuycUKsGM0oK63k1fdJ2pWiqKfSxcXFV1QT5Fipu1Rc9Pv92dHR0bWAiliYTqd7T09PcxS7Clzwilzs7Ox8nEwmf/rUvDPwhBxbzL3o8vLycLlcTqllQvnb7u5uBna/jKIjP9glw8fHxySKojMFaRxh3z9AYbYOwZ+enqaqQ+eK5+fnqSKx4BbK9z1nvnOIHUAOxpgrsJQ+JycnxqmlLtITnUrRQPqGkBrzoG7AmugUv7y8ZDB0KNGgzk6bbSYKVQ3QIDrl0aDKRtv6SgKMThg89w84zgSz/YGZzq6AxViJRNWDFiu3EEAeCBKCPz4+nkkdMkU06KlowBM8U+3BipUrAAT57A8GgxI4NxoEQ+wMVEfA6drNaiUBbI8fAhknIP2hkHgqikL3FV0oWekDAJAhmysG9zqceomtdE1gz8/PB/CR/EhHWfsHuwRLlStAp9UzC5ApwupPZpYFIfvgAMykHlpWEiAQzPhIk3DBsY19XH3Iet0W6vG+DTAmzgMsb637BEfgKM+wShnr20y1BASY3SKZ1NuSOBBj2sZ4i6ZjNCLQ1Ni6/SzwG3w/pA3U7yEmTYjU+gCNtZ0s+DnGGaqxRijPZUWUvlTcKgEFfq+ErNej7lUSWyPgAX+HF4cvzAB+ZwkJicTWS2IrPuABP3bOklv0IegrZJK4Qp3OnaFcSMFXoAF4A9CCHSu0JMFbbyEFJdAUvCD0kJjBBlclT8EIrApeEHpIJNJGuZYP8I0GFzpzKuMq8d2e2NpuobwueDFCErDBamH2qVh5BWAowYXuAVeJW2Ze7qijMV+ybYzzEipdh/V9VtJ5VsL0WYkAwHAGmAUMjZgogev2GSs6WfC6/1rgxaaPRGMCFnwixlyJ1UhtH9OkwEvXN4EXI5aEVF/3Ac/b0F/cRlNYWNAKgB9CfGIZKQHwIdrvoJ/+V5nfjYBX9vJirRPTWbHHb9A7tl/8hvyMa7QBb3X3zmyPAH5k2yhaA0/jlVsIoPho9YA+Bjz/A+BNKMYSavC0ISekPnSMHt/wRpmZSks/XgJwyBHGmyPvcVyC5z+vunDpczCsxAG3IG20lUoEuB0wsAZ/jS0T14EXcB4S5umxTRIFAjYUMuyZhJkn+MRWG4nQJAoEMPOpQjleFbx8G5JEgYAAgHxz5AhFwiXAGP/RDq74rFcMQcIlMMK2uV8Prv+rtkkUCGCwUoz3w1pN2yaJAoE2w92mSPB2oKevz0NKFL5XaGnbhNwECfdVnCuQCTiQ4Sv0mctS2jchK0jwvlWbiInYiFE6IuzPIlbQsEBlXxreg+TO4Q3B+MBrr9BdI0Tw8ipuVkAA8h6ExvwVWvRdkQTObWO3oYH1D6b3GS95f85qAAAAAElFTkSuQmCC",cl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEZ0lEQVR4nO2ZUU4bMRCGvUi8gcgNmp6giwCJN8wJmp6g9AQNJ0h6AsIJGk7Q9ARZ3pAAZTkBuUGD4A3B9rMW0kzWXhaSTRPiTxrNLHhizx/biZ1ALTleAGyp8QJgS00hAXZ3d6v39/d7QRBU1QKQJEl/dXX19OzsrK9eIMCc7OzshLzYEabVAsIbFmGH5+fnMY9WnAJQ/MHj4+NPwoVnZWXlGyK0lQWrAFtbWzXcL+w98eXy8rKDF2QE0FpXbm9vrwkr2HtisL6+/jGKogHxkIwA29vbddb8EeG7w+wHFxcXLcIhNgF6CBASjnPCWmqxlmLiuYW9K2TvqhN+xQQIECPAJuGQjACs/wQ3zhXrJ8QvDNQR4z5hAuoQNYsHA4k2AY5JrOMXBupo4b5jAuoQNYsHA4kZAZg6P5g6TbVAsJSbLOUGocAL4AXwAoiaxYPBC+AF8AIkOIEXwAvgBfACuASgfY3/f6czjY+xNifGY/7lRKd3DkeENWyARZzVD8fP6qPofzlapXcVEfd+h657v5kIQCeuuwPn4UmnhVwTVrBRrBcWBp3m9AirSjJAhE2bCIytfAFo+wdXwTJwd7DJTIgJBeS0leWs/sQJAzxQY1CMS2gztt+MrUYoIKdcAehA00GX0Ao5h+S0CAXk9cgLCTOQk7mwMJATkbNHaKNPUR/xAnKa5DQIBbQNcEPEg6GoAE83Lz1CK8wA600sA4sY2B5hBvo5pR+txiCnQ85nQhtXFJURlJwmOQ1CAW1FzeLBUFQAA237SqkP2Dg3rM3wNWvT4OoHsfOu6I8pqo4XuPqhrahZPBgoKsEJXAOjE00nHcINbIjr3X+GPmLcJ2yUKwYX4q3Ql20WXLFx6siycdK+SfsGoYA+RM3iwcDgEpzAJYDh6WezOm1COuzj27SN1AswwDpOq5SInBY+FzMT6KNGWME6eTm8fpO2DULB1AWYV7wAXgAvgBfAC+AF8AI0CAVeAC/AGwQA6zl9nkGADgKMnx0KCTDAbWCjDDjg7HPAiYnnHs4M5qjeJaxgo9wggPibTYC2st/YDLAOy6GvCkA70/50UtFMMbZ30gVtqyq9a6xg42RmckYApo7mRbqEUwEhWmtraz9sR9Y8NPeAd3d3vxiLVlOCseyzl0VqhIwABkTo0HFh1V+CjmNE2C8qgk6L7yaOq7O3wBh+U3yNUGAVQDMAbmEjlb20mIQ20+8bPhdN39MuHpwXJwFmRacDaTOQzzxOi1wRdNpnN5li8eadZ/YdRJbiDQGWC8tBM6ADlW4sG9ikWEXQ0y3+BjMbdptpH6kcAmzqmJ2bj6FIuQXLiIDQvZzib/gY1pN+otgIsFIoIgJFHeM3KLyJaWWntOINpQlgQIS86+wilFq8oVQBDBOIUHrxhtIFMLxBhJkUb5iJAIZXiDCz4g0zE8CACCGbXQvb49HGCT+pNW0/qZXFTAV4xvya9PDwoBGiqgAf802N7yr2Lytl8l8EmCe8ANhS4wXAlpq/sWppbrWv2fQAAAAASUVORK5CYII=",ul="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAE40lEQVR4nO3ZjVHbSBiH8f9WEKeCiAoiKshSQZwKTq4gpgJMBZgKMBXEVwFSBSgVRK7gTAV7j27ZwQLklWTMx8Ez8xvPxF/xK61XgNE772MAeNd9DADvuqEDSPEdibyXrJL3N0r0yqBPVtIFEr3O6gEcI1fHDLqWyX/4t9AEC3XIoEuZ3s6HD02wUCSDWCP8QX0bWmEmf8rVXrL01hyfEFrjAPVtawaxpjhD6DesIi/8Ao2QS/qK0DHmaK3LAHJJ3xA6RInXWIprhApYbckglkNohUSvu0rSF4QMWtt6520OoQJWr7slviNk0NrWO2977gEk8ksu0V2V/HtXijfGL9SdY4rWDGI5hApY7acUJxijrVzSKXJtL721xBqtGcRyCBWwevpOMFP3FvL7/M4ZxHIIFbB62i6QqX8lDrFTBrEcQgWsfCnqtZaoe3McIzSTP/qbrVA/rkQl//oppviCzc5R//vgDGI5hApY+RaS/kLfDlEikb/C3OwSU6zxWDM9HNgRcg3MIJZDqICVb46f6NsBKj0c4CUyxZupOYRcfgiDMojlECpg5UvkhzBC15aYo+4fjFB3g0TtR/5+lZrL4QCVBmQQyyFUwGr3UlwjdI4pulY/9gyhCRYakEGsfQxgjF8I/cASXbOSrhA6xUwDMojlECpgtXuZ/PYXOkKu7qW4RugUMw3IIJZDqIDV7lk1j+AEC3XPqvn8U8w0IINYDqECVruXqLkFXiJT96Y4Q+gIuQZkEMshVMDKZ+XX8QhtVfL7/hr3qzTsm3yEP6hvQ5+xRu8MYjmEClj5Fmru421NsNDDZmru5yUOEesCme66RKaBGcRyCBWw8s3xE7F+YIn7jVCp+Xu8EvXjKz1shDNkanaASgMziNU2gPo/NEei9nL5I92WVfPLLLSQf24l/z7jWyNsdow5BmcQyyFUwOppy+RP675dItOOGcRyCBWwerqs/DIao2+5/PaXa4cMYu1jACOcYIpdW2KCNXpnEMshVMBqt1JcoL59rBUqNY+slZSouW1utsYRSvTKIJZDqIDV8FJcYYTNbrCQ/0Kr1F4iv+4zPT6MCRbqkUEsh1ABq2GluMIIm51jJn8UuzbCFCe43xFydcwglkOogFX/RrhCitANxsg1vBS5mtcSaxyiUocMYjmEClj1b46fCN3AasCafaREfghfEMrlz4RoBrEcQgWs+mXlj/5mR8j1dKXI1TwTJlgokkEsh1ABq35dwequU8z09GXyu0uokr9M3ppBLIdQAavuJfI/uYVWqI/WGvuoxFeEfmCJ1gxiOYQKWHVvijOEjjHHvsrUPAsukWlLBrEcQgWsupfL/6Ez9Blr7LP69T+hrlJkGRjEcggVsOperrsBlDjEvst19551Bq1tvfM2h1ABq+4t8R2hCRbaXymuEVoh0ZYMYu0ygEzNNfncnWKmLRnEcggVsOpXia947m6QyH8ntGYQa9cBjLDENzxXK4xRYmsGsRxCBayGlck/N9H+WmN5a41oBrGeagCvMoNYmwOoFNlX31oGsXI11+8hSvwv6jKAKc4QKnGENd58BrFGqHR3eVlXye+vv1HizdZlAHWZXvaCpksTLNQzg65lev1D6PN5/qvvE6z8lL/gtbVCop4ZDCnFGIm8l66S/z1DiV4ZvOs+BoB33ccA8K77F/DNI1Ad1eJHAAAAAElFTkSuQmCC",zf=""+new URL("menu-icon-gray.d61f02b1.svg",import.meta.url).href,vi=""+new URL("comment-icon-gray.2c8779f9.svg",import.meta.url).href,Yf="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAFFklEQVRoBdWZW2icRRTHdze7MVsviblYRVEbr4iihnjpmnuCxEARtQYFxZc+ircHfUygUkXQPlnQKuibBEEkNRISkxDazUNDQLBREW0pPtikmsqa2N1ks/5OzLecmb0k+/ml+zkw7DlnZs78/zNn5puZDQZ2KI2MjFwVjUZfxf1+8q3ki+STmUzm/a6uri+RPUlBT7xYTsbHx+8Kh8NfA/ZGq8hRP0U40NnZueYY3P6G3DYs1G5ycrKmoqLiqyLgpekL5DcL+SjF7jkBOn+ZfLMF4i90e7RfGxsbKzRDVvPC6k4QeFp3FwwGjywuLtYRUtcgx1VZBJtRV5VtW/ScACBv070TSgf7+/tTra2tS+vr6+/qMuT7LL1k1VMCs7OzEQBHFIo0C/U3R2dtfO/I8gvZ27XuRvaUwPLy8g2CSwFZUnIAAr9qHbI3ad2N7CkBQuQWDYIRPqv1lpaWBLaUslUq2ZXoKQEQ9GoUjLARMlKGLUsAMhW6vhvZMwKDg4Pi60kLxJjWh4aGBPDljg0yq47s9tczAu3t7c8CYo8CcjGdTh9TeqChoeFqdL1GzupyN7InBEZHR2VUD1oAPu/p6fld21gjTVonhE5r3Y3sCYHKysqP6FyPfprweNsGFAqFHrVs31l6yWq45BaqASCDU1NThzA9o8wiHuXEecqyiWoQIMS+yVOnJJNrAsPDw7sA/wG9PWf1+FMkEnndsgUmJiYewnaPsieqq6tnlO5KLJmA7DZtbW1PEA7vMQP2YewCo7qfr2/CRkO8v2LZrkwkEilOr3LQ285uJPeJefJn5E+co7jeEbDnT3RyLSV3k9vJz5PzfUETEHqM0DlBuZHkiAHYPzFGjQL3yixN98kxRWK4lY6PYLi+gD9Z6NUFyjbMjO4v+Hgch3kXZTwej6ZSqfPU2VXMTyll9Dm3sLCwN4TTj2kooyt7dL5cDHwGRx+urq42FQIvoGKx2N/08xJ1/xDdi4S/pvr6+gNBwkPir9S1kKbNF+zrb3V3d89tF5CsH+oXG5CCrpLJ5HXcHw4DXO9kM24IvMhClY/UuYK97VABd+3dnGizx3O6SeR8yIjV3TCtdTKVZLSzidvV0XKAFwCAT2aB/CtEJHSMnaiurm6pubk5u60RYkabxsbGjGG4hApr6H5CSPd4OmcG2O6MGjQwCNrl2ttOy2B5xOrjRA4Bq4KvVGZgrwYEoRnZRo0RJsaNGdANyilv4nxYY2BNzPxvZmB6evpOSNQqAkuszx+3JMC0+WKG+ObEFHgR43xX1rckYDUqp2rEP0A2TrI5BObn5325BgBszACBEZfRzCEgxmKpHASJ9Rri/w6FS258J0UP2zGuKvlGBGwMnNnBRv62o6ND7hGlz0A5WAHYiH8IbYRPXgIDAwO+WwMQMOIfAtmraHZaioyssY1eaoLyGAbgBzU+CBWeAV3RDzKHy3vBcYXCco7L0xlH384MOHXL8svjgRH/gDiugQgBI0SYnqJrYKty7dwj2SaQjX/x7/sZAKOxgHX8+56AXCEBuUeAbqbkysqKcQf37QzwR/llXGsPOcg3f+f6+vqS2pbzGsE70c+6AluYVgN2uVHooUK/teQa7RL9mNZFziFApUa7kta3Ktd1PZZ/qKqqOmz7lBA6bxt9qJ/hKecpeSCzscmV8g2M8nDqu8SOs0B+B2AP8JQjD7s5aeMbIE/lpAbI/Oc/3XJ6cGlYW1u70Nvb69lTpEsYO9/sHwHIu0q4cL20AAAAAElFTkSuQmCC",fl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAD30lEQVR4AeVa7XXaMBSVDANkBDxB6QRxJmg6QVmANp2gZAOaDBCYoGwQugGZAGUD+F9Q7zPIxxAZy7ZkG0vn5Ejoy/fe954+7HDWgrRbf/8FGPeMySFyIRmf9MOneR3QeB0PufQMkJ+AOAlwlvgqYMEdD6ebswarPwOrs5WaTP7QD5PDPdu/6tvs1bZAAHaTTUcODx6S3aNqS6MhINcP0Z7tcq0csF6IUBBVyerGt8EDdLhO6iASFkg3qVEBEOORGS3+zaxf8V6NCmAOVw4RLhfWCvOZzns2KoBkMjoHdOH38EJb6abGBCCLYgW+NUW+Y7uBad8i/RoTACCjIkA544Mi/U37NiYALDoyBemyXyMCwP0HcP8vLomZzt2IANj+JqYAXferXQCyPi4/zvb1ooLVLgBi/6UoSOqPLVOUGZc3plYBYP17xH6UB0rX3mM9oauvWlebAOT6ONOXsv6R5KYqWd342gQ4un7p4yxugysdgap1/aoTmIzfrcdk+cikb0aft4z6ytXOPeDfejwCSvqrkLgT6xMgpwIQeSx6VeJeiSZUwXbuTACL5GGlYGmbuJoPBrKfbJIndL3w2QlOmtu6B9gmLxn7S0BdpRNl5Xp8a/ogHj5/AIa9/gZ7/RpzlN7uNM+fwUozTX3pqjT2WAA6oR0PKQWA81UvfPqcRnGc50+6rqVlgTfNX+lsEQA0PkDsCHQB8kQrfk8XUUkl3PKGqtzynE6lr+A+CHBCm7QcrCt4CNf9JEAMGMe9KyQNzvuJdoGCrt8gXOuPlpwEeLc+79VMiC/Q2GfF1eC1DlTiE7zHCVvhCosgF75qgHPAkjzASwEQ+vFJ1tsQgOcvyfOxCLp520qTtznhir0ifIGrt61tJn/EtqTcyxCg+McCuFECCCr4lFT8E+cASgifyMekWbBQnH0MgS2MHi+ABzEOUnh0H+CJ9RMBfLoPYPv7KICKBw/yLTgu0zzjNcCf+wBfqO1PiaAWQaEqupyfuz9xVQJ0mbfiRqv/SfwnAvhxH+AzpUQ6jz3Ah/sA3H+aJq7KvoTAW9aJVwkglCJdzHHO0VqfuMYCZKnTETG2/fB5lsVFeUBWewfqeab1iVxagE7eB7D4zS5ZMRGgm/cBPs8L70SASypda1vW1pfmkwjQtfvA8bXXKk1WV04EQKPQdbjWOhzuHkywJwJ06zjMHxH7udYngRIBoNgSv+m+fOWJz/GvOxNTEokAtFoibozcJjX5JlWGmoePDem6GstkvJ8gPyryzEQAGkQnJnwxvaMFJGeS+GHnbobfC8b475yxNpvfD1j5I3AP8P+E06KT/wdPOffX7me6UQAAAABJRU5ErkJggg==",Yn="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAgKADAAQAAAABAAAAgAAAAABIjgR3AAAGo0lEQVR4Ae2dTW8bVRSGEydOihDEUSW2ICQ2wBJERSLRDaJlwc8obBI5ShQkVl4SN5aVOEIgfgb9QioqCxcWXSLY0ILKjkWkuBVK4yQO5ygzMHbjyXzcO3PPue9Iluf73vu8z1zPxJnxxAQGEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABPQQmbTVlZWXl9cFg8GalUnk2MzPzYGNjo2erLI37rdfrtZOTk3epbbPE8Ld2u/2HjXYaF2B5efkNqvC3VNkPIhXuT05Ofj03N/d5o9F4FpmP0RECxOdCr9e7TuFfo0Uz4WKavkevT7e3t38P55l4NypAEP7PVLGLYyrXpd7g42az+XTMcq9nr6+vv9Tv928RhMUxIHbpQLpEvcHDMctTz66k3iJmg+DIHxc+b7lIDbzNDY3ZjZeLgvBvM6MYABepF/gmZnnqRcZ6AP7Mp8o9SliD+9QTXEVPcEorEv5CEn5TU1OvtVqtx0nWPW8dYz0An/CdV1hk+QJ6glMaacPnrQ4PD9+KsMw1akwAPttPWRPvJcgSPjPOwHpsNMYE4Es9KqU/tqSzF3grQdbwCeNBwPpsoinnGhOAr/P5Ui9l+by6dxLkCH+CzrO+MnnuZEwATpKv8+mty+MpB28kyBM+Me3Oz89/kZJt7OrGrgLCUtbW1l48Ojq6QdOXw3lJ36kH+Ym2vdrpdJ4k3UbSegGbm1Tn6B/JEjWB2VSr1Ssmj34u2LgAvFNIwBSGBxfD5xpaEYB3DAmYwungavhcO2sC8M4hwX8MnOr2OZtwsCoAF+KzBC4f+YUJ4KsEEsLnbKz3AKFpPvUEUsIvVAAuzAcJJIVfuADaJZAWfikCaJVAYvilCaBNAqnhlyqAFgkkh1+6ANIlkB6+EwJIlUBD+M4IIE0CLeE7JYAUCTSF75wArkugLXwnBXBVAo3hOyuAaxJoDd9pAVyRQHP4zgtQtgTawxchQFkS+BC+GAGKlsCX8EUJUJQEPoUvTgDbEvgWvkgBbEngY/hiBTAtga/hixbAlASzs7PHdDuas/+3z+20ORT2X8G2GpHzZsv7Qb0SPZljpA0qnnIiXgAOJejCM92QOhJqoklbN2omKtzwSioEYCZFSaApfOamRoAiJNAWvjoBbEqgMXyVAtiQQGv4agUwKYHm8FULYEIC7eEzI6MPieIdOjjkOtHd39/Ptb2DPIaqpLZxef68GyXEvYDmB1epFMBU+KEImiVQJ4Dp8LVLoEoAW+FrlkCNALbD1yqBCgGKCl+jBOIvA/nrYDpL/57CSf34VdqGvw4OvxIO8z33nR7Y/D79aMMtLvvclR1fQbQAfOTTD098R4xTf5/PZ/b8qyXT09Mf0fY/ZshpgX644c7S0tLLGbZ1ZhOxHwF5uv3Rv/AF+8r0/wTSLxFFCmAy/PBQ9FUCcQLYCN9nCUQJYDN8XyUQI0AR4fsogQgBigzfNwmcF6CM8H2SwGkBygzfFwmcFcCF8H2QwEkBXApfuwTOCeBi+JolcEoAl8PXKoEzAkgIX6METgggKXxtEpQugMTwNUlQqgCSw9ciQWkCaAhfgwSlCKApfOkSFC6AxvAlS1CoAJrDlypBYQL4EL5ECQoRwKfwpUlgXQAfw5ckgVUBfA5figTWBED4oQL5HmFn+74DKwIg/P/DD8cCJs7dfGJcAIQfRv78u4sSGL03sNFoXKAbNe9Q0zPdqFmtVq80m82nz6PTMWdzc/Mfuh/xE2pN1htSbzJjkzSMCtDr9a5T5RYzVFDFg5eTtJsF55tSad3UEjDbvb29L5OUk3QdYx8B9Xq9RoX+Ta+ZpIUH63kTfpRLjqecHxwfH7/S6XSeRPeXddxYD0Bnq+9QJRB+wiRy9ASz9GwCZm1kMCbAYDBI+9nk5ZEfTS2rBBlYR4sdGjcmAHVLvw7tOX7C+/BDPFkkoJPlNKzDos58NybAzs7On/TolHtnljI8E+EP85hIKcHdVqv1eGQXmSeNCcA1qFQq1+htN6Y2XT4D5gbHrOPloogE3RgAu9TTfhazPPUiowK02+2HdDJ4iV4/jNTkgHqHdq1W+xDhj5CJTDIbZkSztuh1EFnEo3cp/Pfo7P/RyPxck8YuA0drsbq6+ipV+G2av09H/QMEP0oofpofPhWc7b9AB88vW1tbf8VvgaUgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIg8C9yNG0zv/zA5QAAAABJRU5ErkJggg==",u1="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAIA0lEQVRoBc2aaWxVVRDHea9FEtomZXFBqlEj4DdDCsgXE+GDxqqIdGWTBAUUUInBxBijQYx8QAOBogIqhKVQyiYqrrEuiYIC+pGCSiLiVqlgW6SUtv7+l3tv553e9+hroXWS4ZyZc2bOf86Zs9xXYn0uAW3btu0a3IyPxWK3tbW13UL9JngQnA2LGuCT8E/0Odza2rqPsrqkpOR3NXaHYl013rlz56Dm5uapAJmOj1Fd9PMt9hszMjIqJk2apADTprQD2LFjR15LS8tCRpoF9097xGiDRlZuLcG8zKqciO4Sre10AKtXr+47YMCAubh5EQ5SI9pr17VnCGRpTk7OkoKCgqbOuOlUAOT4CJxVwrcmcdqC/hvlNeVBypqmpqZfGyD1z4b69et3LeDkJ59yPOUYOA5H0ffsk9KysrIjUY1Wd9EAKisrCwG0HqOoWT8OmFW0b0p36f1UnIbfeXAe7FI9ihn43eU2WDllAIB/BHDlGGRYI+q18LPwegY457SlJbK6VzAJMxlnMYaDHWOt7FzGWOPoQzFpAD7418Ke7ZUKqo/htK5d1f2af6qVE0hZhLc5yYKIDMBPG+W8nflmnM8tLi5+I2KAS6aqqqqaw4qsxGFf47QFXVFpaeluo/OqHQLwN+wBWm3OnwF8EeDfdx1cDpkJLGC8KnzbY7o+Ho/nFxUVHbVjJpwCykcaNfMWvGa+x8ALHDO9l6IEbpbsUw4nU6WO80ChMiEA5CfhhKPST5semXkBCoicf4+0eTyQ/XIkd9ECqwtTiNkfSkMNnBV0wMFmZkNHXa8RuLYyeKkB0MDTY3hhYeFv0tkVeAo5BE/9JE+GhGhl0Auk2/8vM262/5TxVF4AOsKQ9Lax9MyUKVOsoW3rsbqOa9L4eWfAOT7mCyugVyUd7I7/BXm9Y9RrIqmso/tnAyALzN594a0AEepJHBIG5UTerRs2dHYJKj6WhEsVzA/KdZw3yRDKfDNOa2Zm5mYj/1+qGwGip0VAoysqKq7OPH/+/B1EE55GtO5nhyuFQuIkuAdhNdwGP86MpHxghYZpVhjnAUx0C5MEbXP8+8DzwpgnaD+IoFesKMZE38HlFh97Qb7wL7HoSeySwOuYzYOrcDTF7dBd2fep29cbBxwa06VPrYIgx8b5R9+wISEfCIX2yvn2qvc+2sCACfvGtKdd9X1twNC+veyYgU+tQEgEOUKb+OZQQ4UVOWJl1en4KIXd1BpoHW+WGWrvDvk+1uHDgj/HmDr/XapxFMMUQK5V8t7wbjir0yMOhxPRnTX6DHTrmD0F1yUCvL4D3sLYBV8S9XBkv7rYchWAfbgJiPcZqIol36E2mQ1Cm38VT+Co2bLmHeoE/hDg19IgDAFplRmq+O1AYcvc3Nx6K1PPscZOW0eRk+AD9oi7EjF05czmvI4W0RoCfpiWNbAd/xx+ihhjT7RVtFYO3Bl3VyTBkqPtQ2bufpT/mgZUsZXM6nyji6wS6CyA6oSx4JuwL8T3O5FGvvLUqVM5Tnu9nPxtlWziIVaOqrPEH6G/G2407UqnFQB0n8BhFwKcDVAXvCbiPny+G3ZMUuHcd7GdUgA/2v5s4uFWTlZnqT9nJgtotyuolVgO0CdcO30qonsdtpemfgeagK+P3f5J5BGO/micAQ9bJQ5HWzlVnSX/AvsOQWCjIJ4ObAG/AL96yySAx3YCPj4J+l2spP8o2wefNZnMuH5oDZed+jjb6WJ1lv5LwCqd9Bloc3QJ6aQJOstArzh+ziArbRJuVqdPBxE/4x3l1zHvQZSZqfM1mJ1WPhhumDx58nGnc0qRWb6dARREykOA9gaCKlDgKR06jUzS9aiOwcHmb+NeGBLno+UPlAdM/zifbFON3KmqAAHsLjr/k8KgkT6a+bTAyx92whSAl2q/sHsKGjdKY2geEesXirQIYF/hS+l0OsLwNG130ueziLaUqr179/ZjdRPumQCzF4B+n8eDPRLzMJiZ0muSRgXhv3C300WpKdYr8za1UaZN/Easz92hxrARzJWSg7zvw4ZbRlT2I76OHBvR29/F+vYFh07KwUEATO4rnF4LJYc5BfiXke0qDCRKfVz0KgFex28Innq9j9XDFQbAZXKChhcsWuQy/wKy6h6rkxXK+2I7IJgWgTX821oYgDrV1dUto/jOGrBcK3Gky6pHiYm7F7DLnUEPgXGF1YV7IFBu3bp1OJtQx6q9lHTlF5N3OucvOwk842mT9jeD6XjOZ/Z/MLr2PRAo/T/r6EvL/gLQn9nYzUo8EvS7XKXSBvC78G/BC8t0F7wwdFgBKUXcA7Mp9HJ0qZKNNf9Sn06MdyUDrYITch6ZeLxfKNa6QCQnDUCNfhCvUs2QbOgkK/JcVlbWm539a6KxTajqkvLP+UU0DExoJAsA/yipGwlefVMGoA4s6UTAbqBq94SaRCfgct5Om9N9O23ZsuU63vfTAKiTxl5S8itSzitt9nhSkn8uGoDstm/fPkx/XKA6MomfVvTa+HpdHoRrYAXXAIuyORjy9K3BZIwC9Hh0+XDCKaiOPh2iLI3K+aBDUHYqAHWurq7OrK2t1WwthqNWQ926S94fugnyJcDbn3GS+u10AIEH/ZbKTD7FLGqTZwX6bpaN2OvAWArw8JLqjM+0Awic+m+UycjT4DFwur7asNnPRGxixrcAvA45bUp30MgBCOYqjtZxgBkLGP1UeSOsYzHbN9BeqIWP0ecwffaxgav5Hyp/+u1dLv4D4SL5jJQdUmEAAAAASUVORK5CYII=",f1={class:"answer-discuss"},d1={key:0,class:"edit-comment flexcenter"},A1={class:"box"},h1=d("div",{class:"text"},"编辑评论",-1),p1={class:"input-box"},g1={class:"top flexflex"},m1={key:0,class:"picture-box"},v1={class:"picture"},y1=["src"],b1={class:"bottom flexacenter"},w1={class:"operate flexacenter"},_1={class:"emoji-box"},C1=["onClick"],E1=d("img",{class:"icon",style:{"border-radius":"0"},src:Zo,alt:""},null,-1),k1=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1),x1={class:"btn-list flexacenter"},S1={class:"header flexacenter"},T1={class:"num"},R1={class:"input-box"},B1={class:"top flexflex"},I1=["src"],O1={key:0,class:"picture-box"},P1={class:"picture"},L1=["src"],N1={class:"bottom flexacenter"},M1={class:"operate flexacenter"},D1={class:"emoji-box"},F1=["onClick"],H1=d("img",{class:"icon",style:{"border-radius":"0"},src:Zo,alt:""},null,-1),U1=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1),j1={class:"comments-box"},Q1={class:"comments-header flexacenter"},K1={class:"comments-header-left flexacenter"},q1=["onClick","src"],z1=["onClick"],Y1={class:"comments-time"},J1={key:0,class:"comments-identity"},W1={key:1,class:"avatar-box flexflex"},V1=["onClick"],G1=d("img",{class:"avatar-icon",src:cl},null,-1),X1=["onClick"],Z1=d("img",{class:"avatar-icon",src:ul},null,-1),$1=["onClick"],eb={class:"comments-header-right flexacenter"},tb={class:"menu-box flexacenter"},nb=d("img",{class:"menu-icon",src:zf},null,-1),sb={class:"operate-boxx"},ob=["onClick"],rb=["onClick"],ib=["onClick"],lb=["onClick"],ab=["onClick"],cb={key:0,class:"like-icon",src:Yf},ub={key:1,class:"like-icon",src:fl},fb={class:"like-quantity"},db={class:"comments-content"},Ab=["innerHTML"],hb=["src"],pb={key:1,class:"input-box"},gb=["onClick"],mb={class:"top flexflex"},vb=["onUpdate:modelValue","onPaste"],yb={key:0,class:"picture-box"},bb={class:"picture"},wb=["onClick"],_b=["src"],Cb={class:"bottom flexacenter"},Eb={class:"operate flexacenter"},kb=["onClick"],xb={class:"emoji-box"},Sb=["onClick"],Tb=["onChange"],Rb=d("img",{class:"icon",style:{"border-radius":"0"},src:Zo,alt:""},null,-1),Bb=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1),Ib=["onClick"],Ob={key:0,class:"child-comments"},Pb={class:"comments-header flexacenter"},Lb={class:"comments-header-left flexacenter"},Nb=["onClick","src"],Mb=["onClick"],Db={class:"comments-time"},Fb={key:0,class:"comments-identity"},Hb={key:1,class:"avatar-box flexflex"},Ub=["onClick"],jb=d("img",{class:"avatar-icon",src:cl},null,-1),Qb=["onClick"],Kb=d("img",{class:"avatar-icon",src:ul},null,-1),qb=["onClick"],zb={class:"comments-header-right flexacenter"},Yb={class:"menu-box flexacenter"},Jb=d("img",{class:"menu-icon",src:zf},null,-1),Wb={class:"operate-boxx"},Vb=["onClick"],Gb=["onClick"],Xb=["onClick"],Zb=["onClick"],$b=["onClick"],ew={key:0,class:"like-icon",src:Yf},tw={key:1,class:"like-icon",src:fl},nw={class:"like-quantity"},sw={class:"comments-content"},ow={class:"comments-text"},rw={key:0,class:"comments-reply"},iw=["innerHTML"],lw=["src"],aw={key:1,class:"input-box"},cw=["onClick"],uw={class:"top flexflex"},fw=["onUpdate:modelValue","placeholder","onPaste"],dw={key:0,class:"picture-box"},Aw={class:"picture"},hw=["onClick"],pw=["src"],gw={class:"bottom flexacenter"},mw={class:"operate flexacenter"},vw=["onClick"],yw={class:"emoji-box"},bw=["onClick"],ww=["onChange"],_w=d("img",{class:"icon",style:{"border-radius":"0"},src:Zo,alt:""},null,-1),Cw=d("span",{class:"file-hint"},"最多可上传1张图片,支持在输入框中直接粘贴图片。",-1),Ew=["onClick"],kw=["onClick"],xw={class:""},Sw=d("img",{class:"also-icon",src:u1},null,-1),Ac=20*1024*1024,Tw={__name:"commentList",props:{token:String},setup(e,{expose:t,emit:n}){zt(()=>{});let s=N([]);zt(()=>{});const o=n,r=Re("$ajax");Re("$ajaxGET");const i=Re("detailsToken"),l=Re("handleDate"),c=Re("isNeedLogin"),f=Re("handleMsg"),u=Re("uploadImg"),a=Re("handleAnswerText"),A=Re("emojiMaskState"),m=Re("user"),_=Re("goLogin"),C=Re("detailLoading"),P=b=>{Y(`https://bbs.gter.net/home.php?mod=space&uid=${b}`)},V=b=>{if(b&&typeof messagePrivateItem=="function"){messagePrivateItem({uin:b});return}else Y(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${b}`)},Y=b=>{const y=document.createElement("a");y.href=b,y.target="_blank",y.click()},v=N([]);let k=N(0),M=N(0),ne=N(1),J=!1;const z=()=>{ne.value==0||J||(J=!0,r("/api/comment/lists",{token:i.value,page:ne.value,limit:1500}).then(b=>{if(b.code!=200)return;let y=b.data;if(y.data.forEach((E,O)=>{E.isReplyBoxShow=0,E.child.length>0&&E.child.forEach(se=>{se.isReplyBoxShow=0})}),ne.value>1){let E=E;for(let O=0;Ov.length?ne.value+1:0}).finally(()=>{J=!1}))};let $=N({});Nt(i,(b,y)=>{b!==y&&(ne.value=1,v.value=[],$.value={},M.value=0,k.value=0,z())},{immediate:!0});const G=(b,y,E)=>{if(c.value){_();return}pe();const O=b.target.files[0];if(!O)return;if(O.size>Ac){f("error","文件大小不能超过 20MB");return}const se=new FileReader;se.onload=ce=>{const Ae=ce.target.result;u(Ae).then(be=>{const q={base64:Ae,...be};at.value?g.value=q:E!=null?v.value[y].child[E].picture=q:y!=null?v.value[y].picture=q:$.value=q,f("success","上传成功")})},se.readAsDataURL(O)},ie=(b,y)=>{y!=null?v.value[b].child[y].picture={}:b!=null?v.value[b].picture={}:$.value={}};let K=N(!1);const ae=["😀","😁","😆","😅","😂","😉","😍","🥰","😋","😜","🤪","😎","🤩","🥳","😔","🙁","😭","😡","😳","🤗","🤔","🤭","🤫","😯","😵","🙄","🥴","🤢","🤑","🤠","👌","✌️","🤟","🤘","🤙","👍","👎","✊","👏","🤝","🙏","💪","❤️","💔","🌹","🥀","🎉","🎁","🧧","🌙","⭐","🌍","💌","📬","🚗","🚕","🚲","🛵","🚀","🚁","⛵","🚢","🍎","🍐","🍊","🍉","🍓","🍑","🍔","🍟","🍕","🥪","🍜","🍡","🍨","🍦","🎂","🍰","🍭","🍿","🍩","🧃","🍹"],de=(b,y)=>{if(c.value){_();return}y!=null?v.value[b].child[y].emojiState=!0:b!=null?v.value[b].emojiState=!0:(pe(),lt(),K.value=!0),A.value=!0},pe=(b,y)=>{v.value.forEach(E=>{E.emojiState=!1,E.child&&E.child.length!=0&&E.child.forEach(O=>{O.emojiState=!1})}),K.value=!1,A.value=!1,I.value=!1};t({closeEmoji:pe});const F=(b,y,E)=>{pe(),E!=null?(v.value[y].child[E].commentInput||(v.value[y].child[E].commentInput=""),v.value[y].child[E].commentInput+=b):y!=null?(v.value[y].commentInput||(v.value[y].commentInput=""),v.value[y].commentInput+=b):Ie.value+=b},le=b=>{b.target.style.height="auto",b.target.style.height=`${b.target.scrollHeight}px`},X=(b,y,E)=>{if(c.value){_();return}const O=b.clipboardData.items;for(let se=0;seAc){f("error","文件大小不能超过 20MB");return}const be=new FileReader;be.onload=q=>{const Oe=q.target.result;u(Oe).then(At=>{const ct={base64:Oe,...At};at.value?g.value=ct:E!=null?v.value[y].child[E].picture=ct:y!=null?v.value[y].picture=ct:$.value=ct,f("success","上传成功")})},be.readAsDataURL(Ae)}}};let Ie=N("");const it=(b,y)=>{if(c.value){_();return}let E="",O=null,se=i.value,ce={};y!=null?(E=v.value[b].child[y].commentInput,O=v.value[b].child[y].id,ce=v.value[b].child[y].picture):b!=null?(E=v.value[b].commentInput,O=v.value[b].id,ce=v.value[b].picture):(E=Ie.value,ce=$.value),C.value=!0,r("/api/comment/submit",{content:E,token:se,parentid:O,image:ce?{aid:ce.aid,url:ce.url}:null}).then(Ae=>{if(Ae.code!=200){f("error",Ae.message);return}let be=Ae.data;if(y!=null){let q={id:be.commentid,content:E,isauthor:1,islike:0,likenum:0,reply:{nickname:v.value[b].child[y].nickname},...be,image:ce};v.value[b].child.push(q),v.value[b].childnum++}else if(b!=null){let q={id:be.commentid,content:E,isauthor:1,islike:0,likenum:0,reply:[],...be,image:ce};v.value[b].child.unshift(q),v.value[b].childnum++}else{let q={id:be.commentid,content:E,isauthor:1,islike:0,likenum:0,...be,child:[],image:ce};v.value.unshift(q),Ie.value="",$.value={}}M.value=be.count||0,o("updateAnswers",be.count),lt(),f("success",Ae.message||"操作成功")}).finally(()=>{C.value=!1})},De=(b,y,E)=>{if(c.value){_();return}r("/api/comment/like",{token:b}).then(O=>{if(O.code!=200)return;let se=O.data;E!=null?(v.value[y].child[E].islike=se.status,v.value[y].child[E].likenum=se.likenum):(v.value[y].islike=se.status,v.value[y].likenum=se.likenum),f("success",O.message||"操作成功")})},Fe=(b,y)=>{if(c.value){_();return}lt(),y==null?v.value[b].childState=!0:v.value[b].child[y].childState=!0},lt=()=>{v.value.forEach(b=>{b.childState=!1,b.commentInput="",b.child&&b.child.length!=0&&b.child.forEach(y=>{y.childState=!1,y.commentInput=""})})},wt=(b,y)=>{const E=v.value[b].id,O=i.value;r("/api/comment/childrenList",{token:O,parentid:E,limit:2e3,page:1,childlimit:3}).then(se=>{if(se.code!=200)return;let ce=se.data,Ae=[...v.value[b].child,...ce.data.filter(be=>!v.value[b].child.find(q=>q.id==be.id))];v.value[b].child=Ae})},Vt=Re("handleMenuState"),He=(b,y)=>{if(c.value){_();return}let E="";y===void 0?E=v.value[b].token:E=v.value[b].child[y].token,Vt(E)},_t=(b,y)=>{y!=null&&v.value[b].child[y].uin>0?v.value[b].child[y].avatarState=!0:y==null&&b!=null&&v.value[b].uin>0&&(v.value[b].avatarState=!0)},Ft=(b,y)=>{y!=null?v.value[b].child[y].avatarState=!1:b!=null&&(v.value[b].avatarState=!1)},et=(b,y,E)=>{r("/api/comment/commentDelete",{token:b}).then(O=>{if(O.code!=200){Ur.error(O.message);return}E>=0?(v.value[y].child.splice(E,1),v.value[y].childnum-=1):(M.value-=v.value[y].childnum,v.value.splice(y,1)),M.value-=1})},tt=()=>{if(c.value){_();return}};let at=N(!1),p="",g=N({}),x=N(""),I=N(!1);const B=N(null),U=(b,y,E)=>{const O=JSON.parse(JSON.stringify(v.value));let se={};E!=null?se=O[y].child[E]:se=O[y],console.log(b,y,E,se),p=se.token||"",x.value=se.content||"",g.value=se.image||{},at.value=!0,jt(()=>{console.log("editInput.value",B.value),B.value.style.height=`${B.value.scrollHeight}px`})},W=()=>{g.value={},p="",x.value="",at.value=!1},D=(b,y)=>{if(c.value){_();return}I.value=!0},Q=b=>{pe(),x.value+=b},L=()=>{if(c.value){_();return}const b=g.value;r("/api/comment/commentsEditSubmit",{content:x.value,token:p,image:b?{aid:b.aid,url:b.url}:null}).then(y=>{if(y.code!=200){Ur.error(y.message);return}v.value.forEach(E=>{E.token==p&&(E.content=x.value,E.image=b),E.child&&E.child.forEach(O=>{O.token==p&&(O.content=x.value,O.image=b)})}),g.value={},p="",at.value=!1,I.value=!1,Ur.success(y.message)})},oe=()=>g.value={};return(b,y)=>(S(),T("div",f1,[H(at)?(S(),T("div",d1,[d("div",A1,[h1,d("div",p1,[d("div",g1,[gt(d("textarea",{ref_key:"editInputRef",ref:B,class:"input-textarea flex1",maxlength:"500","onUpdate:modelValue":y[0]||(y[0]=E=>Le(x)?x.value=E:x=E),onFocus:tt,onInput:le,onPaste:X,placeholder:"说说你的想法或疑问…"},null,544),[[on,H(x)]])]),H(g).url?(S(),T("div",m1,[d("div",v1,[d("img",{class:"close",onClick:y[1]||(y[1]=E=>oe()),src:io}),d("img",{class:"img",onClick:y[2]||(y[2]=(...E)=>H(a)&&H(a)(...E)),src:H(g).base64||H(g).url},null,8,y1)])])):re("",!0),d("div",b1,[d("div",w1,[d("div",{class:Ee(["item",{pitch:H(I)}])},[d("img",{class:"icon",src:lo,onClick:y[3]||(y[3]=E=>D()),alt:""}),d("div",_1,[(S(),T(he,null,Ye(ae,E=>d("div",{class:"emoji-icon",key:E,onClick:O=>Q(E)},ee(E),9,C1)),64))])],2),d("div",{class:"item flexacenter",onClick:y[5]||(y[5]=E=>tt())},[d("input",{class:"file",type:"file",onChange:y[4]||(y[4]=E=>G(E)),accept:".png, .jpg, .jpeg"},null,32),E1,k1])])])]),d("div",x1,[d("div",{class:"btn",onClick:y[6]||(y[6]=E=>W())},"取消"),d("div",{class:"btn send",onClick:y[7]||(y[7]=E=>L())},"发送")])])])):re("",!0),d("div",S1,[Se(" 回答&讨论 "),d("span",T1,ee(H(M)||""),1)]),d("div",R1,[d("div",B1,[H(m).avatar?(S(),T("img",{key:0,class:"avatar",src:H(m).avatar},null,8,I1)):re("",!0),gt(d("textarea",{class:"input-textarea flex1",maxlength:"500","onUpdate:modelValue":y[8]||(y[8]=E=>Le(Ie)?Ie.value=E:Ie=E),onFocus:tt,onInput:le,onPaste:X,placeholder:"说说你的看法…"},null,544),[[on,H(Ie)]])]),H($).url?(S(),T("div",O1,[d("div",P1,[d("img",{class:"close",onClick:y[9]||(y[9]=E=>ie()),src:io}),d("img",{class:"img",onClick:y[10]||(y[10]=(...E)=>H(a)&&H(a)(...E)),src:H($).base64||H($).url},null,8,L1)])])):re("",!0),d("div",N1,[d("div",M1,[d("div",{class:Ee(["item",{pitch:H(K)}])},[d("img",{class:"icon",src:lo,onClick:y[11]||(y[11]=E=>de()),alt:""}),d("div",D1,[(S(),T(he,null,Ye(ae,E=>d("div",{class:"emoji-icon",key:E,onClick:O=>F(E)},ee(E),9,F1)),64))])],2),d("div",{class:"item flexacenter",onClick:y[13]||(y[13]=E=>tt())},[d("input",{class:"file",type:"file",onChange:y[12]||(y[12]=E=>G(E)),accept:".png, .jpg, .jpeg"},null,32),H1,U1])]),d("div",{class:"btn",onClick:y[14]||(y[14]=E=>it())},"发送")])]),d("div",j1,[(S(!0),T(he,null,Ye(H(v),(E,O)=>{var se,ce,Ae,be;return S(),T("div",{class:"comments-item",key:O},[d("div",Q1,[d("div",K1,[d("img",{class:"comments-avatar",onClick:q=>_t(O),src:E.avatar},null,8,q1),d("div",{class:"comments-username",onClick:q=>_t(O)},ee(E.nickname||"匿名用户"),9,z1),d("div",Y1,ee(H(l)(E.timestamp)),1),E.isauthor==1?(S(),T("div",J1,"提问者")):re("",!0),E.avatarState?(S(),T("div",W1,[d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:ke(q=>V(E.uin),["prevent"])},[G1,Se(" 发送信息 ")],8,V1),d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:ke(q=>P(E.uin),["prevent"])},[Z1,Se(" TA的主页 ")],8,X1),d("div",{class:"avatar-mask",onClick:q=>Ft(O)},null,8,$1)])):re("",!0)]),d("div",eb,[d("div",tb,[nb,d("div",sb,[d("div",{class:"item flexcenter",onClick:q=>He(O)},"举报",8,ob),H(s).includes("comment.edit")?(S(),T("div",{key:0,class:"item flexcenter",onClick:q=>U(E.token,O)},"编辑",8,rb)):re("",!0),H(s).includes("comment.delete")?(S(),T("div",{key:1,class:"item flexcenter",onClick:q=>et(E.token,O)},"删除",8,ib)):re("",!0)])]),d("img",{class:"comment-icon",onClick:q=>Fe(O),src:vi},null,8,lb),d("div",{class:"flexacenter like-box",onClick:q=>De(E.token,O)},[E.islike==0?(S(),T("img",cb)):(S(),T("img",ub)),d("div",fb,ee(E.likenum||""),1)],8,ab)])]),d("div",db,[d("div",{class:"comments-text",innerHTML:E.content},null,8,Ab),(se=E.image)!=null&&se.url?(S(),T("img",{key:0,class:"comments-img",onClick:y[15]||(y[15]=(...q)=>H(a)&&H(a)(...q)),src:((ce=E.image)==null?void 0:ce.base64)||((Ae=E.image)==null?void 0:Ae.url)},null,8,hb)):re("",!0),E.childState?(S(),T("div",pb,[d("img",{class:"cross",onClick:q=>lt(),src:Yn},null,8,gb),d("div",mb,[gt(d("textarea",{class:"input-textarea flex1",maxlength:"500",placeholder:"说说你的看法…","onUpdate:modelValue":q=>E.commentInput=q,onFocus:tt,onInput:le,onPaste:q=>X(q,O)},null,40,vb),[[on,E.commentInput]])]),(be=E.picture)!=null&&be.url?(S(),T("div",yb,[d("div",bb,[d("img",{class:"close",onClick:q=>ie(O),src:io},null,8,wb),d("img",{class:"img",onClick:y[16]||(y[16]=(...q)=>H(a)&&H(a)(...q)),src:E.picture.base64||E.picture.url},null,8,_b)])])):re("",!0),d("div",Cb,[d("div",Eb,[d("div",{class:Ee(["item",{pitch:E.emojiState}])},[d("img",{class:"icon",src:lo,onClick:q=>de(O),alt:""},null,8,kb),d("div",xb,[(S(),T(he,null,Ye(ae,q=>d("div",{class:"emoji-icon",key:q,onClick:Oe=>F(q,O)},ee(q),9,Sb)),64))])],2),d("div",{class:"item flexacenter",onClick:y[17]||(y[17]=q=>tt())},[d("input",{class:"file",type:"file",onChange:q=>G(q,O),accept:".png, .jpg, .jpeg"},null,40,Tb),Rb,Bb])]),d("div",{class:"btn",onClick:q=>it(O)},"发送",8,Ib)])])):re("",!0)]),E.child.length!=0?(S(),T("div",Ob,[(S(!0),T(he,null,Ye(E.child,(q,Oe)=>{var At,ct,Pe,Je,ut;return S(),T("div",{class:"comments-item",key:q.id},[d("div",Pb,[d("div",Lb,[d("img",{class:"comments-avatar",onClick:we=>_t(O,Oe),src:q.avatar},null,8,Nb),d("div",{class:"comments-username",onClick:we=>_t(O,Oe)},ee(q.nickname||"匿名用户"),9,Mb),d("div",Db,ee(H(l)(q.timestamp)),1),q.isauthor==1?(S(),T("div",Fb,"提问者")):re("",!0),q.avatarState?(S(),T("div",Hb,[d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:ke(we=>V(q.uin),["prevent"])},[jb,Se(" 发送信息 ")],8,Ub),d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:ke(we=>P(q.uin),["prevent"])},[Kb,Se(" TA的主页 ")],8,Qb),d("div",{class:"avatar-mask",onClick:we=>Ft(O,Oe)},null,8,qb)])):re("",!0)]),d("div",zb,[d("div",Yb,[Jb,d("div",Wb,[d("div",{class:"item flexcenter",onClick:we=>He(O,Oe)},"举报",8,Vb),H(s).includes("comment.edit")?(S(),T("div",{key:0,class:"item flexcenter",onClick:we=>U(q.token,O,Oe)},"编辑",8,Gb)):re("",!0),H(s).includes("comment.delete")?(S(),T("div",{key:1,class:"item flexcenter",onClick:we=>et(q.token,O,Oe)},"删除",8,Xb)):re("",!0)])]),d("img",{class:"comment-icon",onClick:we=>Fe(O,Oe),src:vi},null,8,Zb),d("div",{class:"flexacenter like-box",onClick:we=>De(q.token,O,Oe)},[q.islike==0?(S(),T("img",ew)):(S(),T("img",tw)),d("div",nw,ee(q.likenum||""),1)],8,$b)])]),d("div",sw,[d("div",ow,[(At=q==null?void 0:q.reply)!=null&&At.nickname?(S(),T("div",rw,"@"+ee(q.reply.nickname||"匿名用户"),1)):re("",!0),d("span",{innerHTML:q.content},null,8,iw)]),(ct=q.image)!=null&&ct.url?(S(),T("img",{key:0,class:"comments-img",onClick:y[18]||(y[18]=(...we)=>H(a)&&H(a)(...we)),src:((Pe=q.image)==null?void 0:Pe.base64)||((Je=q.image)==null?void 0:Je.url)},null,8,lw)):re("",!0),q.childState?(S(),T("div",aw,[d("img",{class:"cross",onClick:we=>lt(),src:Yn},null,8,cw),d("div",uw,[gt(d("textarea",{class:"input-textarea flex1",maxlength:"500","onUpdate:modelValue":we=>q.commentInput=we,placeholder:"回复“"+(q.nickname||"匿名用户")+"”:",onFocus:tt,onInput:le,onPaste:we=>X(we,O,Oe)},null,40,fw),[[on,q.commentInput]])]),(ut=q.picture)!=null&&ut.url?(S(),T("div",dw,[d("div",Aw,[d("img",{class:"close",onClick:we=>ie(O,Oe),src:io},null,8,hw),d("img",{class:"img",onClick:y[19]||(y[19]=(...we)=>H(a)&&H(a)(...we)),src:q.picture.base64||q.picture.url},null,8,pw)])])):re("",!0),d("div",gw,[d("div",mw,[d("div",{class:Ee(["item",{pitch:q.emojiState}])},[d("img",{class:"icon",src:lo,onClick:we=>de(O,Oe),alt:""},null,8,vw),d("div",yw,[(S(),T(he,null,Ye(ae,we=>d("div",{class:"emoji-icon",key:we,onClick:un=>F(we,O,Oe)},ee(we),9,bw)),64))])],2),d("div",{class:"item flexacenter",onClick:y[20]||(y[20]=we=>tt())},[d("input",{class:"file",type:"file",onChange:we=>G(we,O,Oe),accept:".png, .jpg, .jpeg"},null,40,ww),_w,Cw])]),d("div",{class:"btn",onClick:we=>it(O,Oe)},"发送",8,Ew)])])):re("",!0)])])}),128)),E.childnum>E.child.length?(S(),T("div",{key:0,class:"comments-also flexacenter",onClick:q=>wt(O,b.i)},[d("div",xw,"还有"+ee(E.childnum-E.child.length)+"条回复",1),Sw],8,kw)):re("",!0)])):re("",!0)])}),128))])]))}},Rw=Tw,Bw="$s";function Iw(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);const[n,s]=e;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(s!==void 0&&typeof s!="function")throw new Error("[nuxt] [useState] init must be a function: "+s);const o=Bw+n,r=je(),i=eu(r.payload.state,o);if(i.value===void 0&&s){const l=s();if(Le(l))return r.payload.state[o]=l,l;i.value=l}return i}function Jf(e,t){return function(){return e.apply(t,arguments)}}const{toString:Ow}=Object.prototype,{getPrototypeOf:dl}=Object,$o=(e=>t=>{const n=Ow.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Dt=e=>(e=e.toLowerCase(),t=>$o(t)===e),er=e=>t=>typeof t===e,{isArray:as}=Array,Ms=er("undefined");function Pw(e){return e!==null&&!Ms(e)&&e.constructor!==null&&!Ms(e.constructor)&&bt(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Wf=Dt("ArrayBuffer");function Lw(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Wf(e.buffer),t}const Nw=er("string"),bt=er("function"),Vf=er("number"),tr=e=>e!==null&&typeof e=="object",Mw=e=>e===!0||e===!1,po=e=>{if($o(e)!=="object")return!1;const t=dl(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Dw=Dt("Date"),Fw=Dt("File"),Hw=Dt("Blob"),Uw=Dt("FileList"),jw=e=>tr(e)&&bt(e.pipe),Qw=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||bt(e.append)&&((t=$o(e))==="formdata"||t==="object"&&bt(e.toString)&&e.toString()==="[object FormData]"))},Kw=Dt("URLSearchParams"),qw=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function js(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let s,o;if(typeof e!="object"&&(e=[e]),as(e))for(s=0,o=e.length;s0;)if(o=n[s],t===o.toLowerCase())return o;return null}const Xf=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),Zf=e=>!Ms(e)&&e!==Xf;function yi(){const{caseless:e}=Zf(this)&&this||{},t={},n=(s,o)=>{const r=e&&Gf(t,o)||o;po(t[r])&&po(s)?t[r]=yi(t[r],s):po(s)?t[r]=yi({},s):as(s)?t[r]=s.slice():t[r]=s};for(let s=0,o=arguments.length;s(js(t,(o,r)=>{n&&bt(o)?e[r]=Jf(o,n):e[r]=o},{allOwnKeys:s}),e),Yw=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Jw=(e,t,n,s)=>{e.prototype=Object.create(t.prototype,s),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Ww=(e,t,n,s)=>{let o,r,i;const l={};if(t=t||{},e==null)return t;do{for(o=Object.getOwnPropertyNames(e),r=o.length;r-- >0;)i=o[r],(!s||s(i,e,t))&&!l[i]&&(t[i]=e[i],l[i]=!0);e=n!==!1&&dl(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Vw=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const s=e.indexOf(t,n);return s!==-1&&s===n},Gw=e=>{if(!e)return null;if(as(e))return e;let t=e.length;if(!Vf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Xw=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&dl(Uint8Array)),Zw=(e,t)=>{const s=(e&&e[Symbol.iterator]).call(e);let o;for(;(o=s.next())&&!o.done;){const r=o.value;t.call(e,r[0],r[1])}},$w=(e,t)=>{let n;const s=[];for(;(n=e.exec(t))!==null;)s.push(n);return s},e_=Dt("HTMLFormElement"),t_=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,s,o){return s.toUpperCase()+o}),hc=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),n_=Dt("RegExp"),$f=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),s={};js(n,(o,r)=>{let i;(i=t(o,r,e))!==!1&&(s[r]=i||o)}),Object.defineProperties(e,s)},s_=e=>{$f(e,(t,n)=>{if(bt(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const s=e[n];if(bt(s)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},o_=(e,t)=>{const n={},s=o=>{o.forEach(r=>{n[r]=!0})};return as(e)?s(e):s(String(e).split(t)),n},r_=()=>{},i_=(e,t)=>(e=+e,Number.isFinite(e)?e:t),jr="abcdefghijklmnopqrstuvwxyz",pc="0123456789",ed={DIGIT:pc,ALPHA:jr,ALPHA_DIGIT:jr+jr.toUpperCase()+pc},l_=(e=16,t=ed.ALPHA_DIGIT)=>{let n="";const{length:s}=t;for(;e--;)n+=t[Math.random()*s|0];return n};function a_(e){return!!(e&&bt(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const c_=e=>{const t=new Array(10),n=(s,o)=>{if(tr(s)){if(t.indexOf(s)>=0)return;if(!("toJSON"in s)){t[o]=s;const r=as(s)?[]:{};return js(s,(i,l)=>{const c=n(i,o+1);!Ms(c)&&(r[l]=c)}),t[o]=void 0,r}}return s};return n(e,0)},u_=Dt("AsyncFunction"),f_=e=>e&&(tr(e)||bt(e))&&bt(e.then)&&bt(e.catch),R={isArray:as,isArrayBuffer:Wf,isBuffer:Pw,isFormData:Qw,isArrayBufferView:Lw,isString:Nw,isNumber:Vf,isBoolean:Mw,isObject:tr,isPlainObject:po,isUndefined:Ms,isDate:Dw,isFile:Fw,isBlob:Hw,isRegExp:n_,isFunction:bt,isStream:jw,isURLSearchParams:Kw,isTypedArray:Xw,isFileList:Uw,forEach:js,merge:yi,extend:zw,trim:qw,stripBOM:Yw,inherits:Jw,toFlatObject:Ww,kindOf:$o,kindOfTest:Dt,endsWith:Vw,toArray:Gw,forEachEntry:Zw,matchAll:$w,isHTMLForm:e_,hasOwnProperty:hc,hasOwnProp:hc,reduceDescriptors:$f,freezeMethods:s_,toObjectSet:o_,toCamelCase:t_,noop:r_,toFiniteNumber:i_,findKey:Gf,global:Xf,isContextDefined:Zf,ALPHABET:ed,generateString:l_,isSpecCompliantForm:a_,toJSONObject:c_,isAsyncFn:u_,isThenable:f_};function ve(e,t,n,s,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),s&&(this.request=s),o&&(this.response=o)}R.inherits(ve,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:R.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const td=ve.prototype,nd={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{nd[e]={value:e}});Object.defineProperties(ve,nd);Object.defineProperty(td,"isAxiosError",{value:!0});ve.from=(e,t,n,s,o,r)=>{const i=Object.create(td);return R.toFlatObject(e,i,function(c){return c!==Error.prototype},l=>l!=="isAxiosError"),ve.call(i,e.message,t,n,s,o),i.cause=e,i.name=e.name,r&&Object.assign(i,r),i};const d_=null;function bi(e){return R.isPlainObject(e)||R.isArray(e)}function sd(e){return R.endsWith(e,"[]")?e.slice(0,-2):e}function gc(e,t,n){return e?e.concat(t).map(function(o,r){return o=sd(o),!n&&r?"["+o+"]":o}).join(n?".":""):t}function A_(e){return R.isArray(e)&&!e.some(bi)}const h_=R.toFlatObject(R,{},null,function(t){return/^is[A-Z]/.test(t)});function nr(e,t,n){if(!R.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=R.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(C,P){return!R.isUndefined(P[C])});const s=n.metaTokens,o=n.visitor||u,r=n.dots,i=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&R.isSpecCompliantForm(t);if(!R.isFunction(o))throw new TypeError("visitor must be a function");function f(_){if(_===null)return"";if(R.isDate(_))return _.toISOString();if(!c&&R.isBlob(_))throw new ve("Blob is not supported. Use a Buffer instead.");return R.isArrayBuffer(_)||R.isTypedArray(_)?c&&typeof Blob=="function"?new Blob([_]):Buffer.from(_):_}function u(_,C,P){let V=_;if(_&&!P&&typeof _=="object"){if(R.endsWith(C,"{}"))C=s?C:C.slice(0,-2),_=JSON.stringify(_);else if(R.isArray(_)&&A_(_)||(R.isFileList(_)||R.endsWith(C,"[]"))&&(V=R.toArray(_)))return C=sd(C),V.forEach(function(v,k){!(R.isUndefined(v)||v===null)&&t.append(i===!0?gc([C],k,r):i===null?C:C+"[]",f(v))}),!1}return bi(_)?!0:(t.append(gc(P,C,r),f(_)),!1)}const a=[],A=Object.assign(h_,{defaultVisitor:u,convertValue:f,isVisitable:bi});function m(_,C){if(!R.isUndefined(_)){if(a.indexOf(_)!==-1)throw Error("Circular reference detected in "+C.join("."));a.push(_),R.forEach(_,function(V,Y){(!(R.isUndefined(V)||V===null)&&o.call(t,V,R.isString(Y)?Y.trim():Y,C,A))===!0&&m(V,C?C.concat(Y):[Y])}),a.pop()}}if(!R.isObject(e))throw new TypeError("data must be an object");return m(e),t}function mc(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(s){return t[s]})}function Al(e,t){this._pairs=[],e&&nr(e,this,t)}const od=Al.prototype;od.append=function(t,n){this._pairs.push([t,n])};od.toString=function(t){const n=t?function(s){return t.call(this,s,mc)}:mc;return this._pairs.map(function(o){return n(o[0])+"="+n(o[1])},"").join("&")};function p_(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function rd(e,t,n){if(!t)return e;const s=n&&n.encode||p_,o=n&&n.serialize;let r;if(o?r=o(t,n):r=R.isURLSearchParams(t)?t.toString():new Al(t,n).toString(s),r){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+r}return e}class g_{constructor(){this.handlers=[]}use(t,n,s){return this.handlers.push({fulfilled:t,rejected:n,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){R.forEach(this.handlers,function(s){s!==null&&t(s)})}}const vc=g_,id={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},m_=typeof URLSearchParams<"u"?URLSearchParams:Al,v_=typeof FormData<"u"?FormData:null,y_=typeof Blob<"u"?Blob:null,b_={isBrowser:!0,classes:{URLSearchParams:m_,FormData:v_,Blob:y_},protocols:["http","https","file","blob","url","data"]},ld=typeof window<"u"&&typeof document<"u",w_=(e=>ld&&["ReactNative","NativeScript","NS"].indexOf(e)<0)(typeof navigator<"u"&&navigator.product),__=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),C_=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:ld,hasStandardBrowserEnv:w_,hasStandardBrowserWebWorkerEnv:__},Symbol.toStringTag,{value:"Module"})),Lt={...C_,...b_};function E_(e,t){return nr(e,new Lt.classes.URLSearchParams,Object.assign({visitor:function(n,s,o,r){return Lt.isNode&&R.isBuffer(n)?(this.append(s,n.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}function k_(e){return R.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function x_(e){const t={},n=Object.keys(e);let s;const o=n.length;let r;for(s=0;s=n.length;return i=!i&&R.isArray(o)?o.length:i,c?(R.hasOwnProp(o,i)?o[i]=[o[i],s]:o[i]=s,!l):((!o[i]||!R.isObject(o[i]))&&(o[i]=[]),t(n,s,o[i],r)&&R.isArray(o[i])&&(o[i]=x_(o[i])),!l)}if(R.isFormData(e)&&R.isFunction(e.entries)){const n={};return R.forEachEntry(e,(s,o)=>{t(k_(s),o,n,0)}),n}return null}function S_(e,t,n){if(R.isString(e))try{return(t||JSON.parse)(e),R.trim(e)}catch(s){if(s.name!=="SyntaxError")throw s}return(n||JSON.stringify)(e)}const hl={transitional:id,adapter:["xhr","http"],transformRequest:[function(t,n){const s=n.getContentType()||"",o=s.indexOf("application/json")>-1,r=R.isObject(t);if(r&&R.isHTMLForm(t)&&(t=new FormData(t)),R.isFormData(t))return o&&o?JSON.stringify(ad(t)):t;if(R.isArrayBuffer(t)||R.isBuffer(t)||R.isStream(t)||R.isFile(t)||R.isBlob(t))return t;if(R.isArrayBufferView(t))return t.buffer;if(R.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(r){if(s.indexOf("application/x-www-form-urlencoded")>-1)return E_(t,this.formSerializer).toString();if((l=R.isFileList(t))||s.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return nr(l?{"files[]":t}:t,c&&new c,this.formSerializer)}}return r||o?(n.setContentType("application/json",!1),S_(t)):t}],transformResponse:[function(t){const n=this.transitional||hl.transitional,s=n&&n.forcedJSONParsing,o=this.responseType==="json";if(t&&R.isString(t)&&(s&&!this.responseType||o)){const i=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(t)}catch(l){if(i)throw l.name==="SyntaxError"?ve.from(l,ve.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Lt.classes.FormData,Blob:Lt.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};R.forEach(["delete","get","head","post","put","patch"],e=>{hl.headers[e]={}});const pl=hl,T_=R.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),R_=e=>{const t={};let n,s,o;return e&&e.split(` -`).forEach(function(i){o=i.indexOf(":"),n=i.substring(0,o).trim().toLowerCase(),s=i.substring(o+1).trim(),!(!n||t[n]&&T_[n])&&(n==="set-cookie"?t[n]?t[n].push(s):t[n]=[s]:t[n]=t[n]?t[n]+", "+s:s)}),t},yc=Symbol("internals");function bs(e){return e&&String(e).trim().toLowerCase()}function go(e){return e===!1||e==null?e:R.isArray(e)?e.map(go):String(e)}function B_(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=n.exec(e);)t[s[1]]=s[2];return t}const I_=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Qr(e,t,n,s,o){if(R.isFunction(s))return s.call(this,t,n);if(o&&(t=n),!!R.isString(t)){if(R.isString(s))return t.indexOf(s)!==-1;if(R.isRegExp(s))return s.test(t)}}function O_(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,s)=>n.toUpperCase()+s)}function P_(e,t){const n=R.toCamelCase(" "+t);["get","set","has"].forEach(s=>{Object.defineProperty(e,s+n,{value:function(o,r,i){return this[s].call(this,t,o,r,i)},configurable:!0})})}class sr{constructor(t){t&&this.set(t)}set(t,n,s){const o=this;function r(l,c,f){const u=bs(c);if(!u)throw new Error("header name must be a non-empty string");const a=R.findKey(o,u);(!a||o[a]===void 0||f===!0||f===void 0&&o[a]!==!1)&&(o[a||c]=go(l))}const i=(l,c)=>R.forEach(l,(f,u)=>r(f,u,c));return R.isPlainObject(t)||t instanceof this.constructor?i(t,n):R.isString(t)&&(t=t.trim())&&!I_(t)?i(R_(t),n):t!=null&&r(n,t,s),this}get(t,n){if(t=bs(t),t){const s=R.findKey(this,t);if(s){const o=this[s];if(!n)return o;if(n===!0)return B_(o);if(R.isFunction(n))return n.call(this,o,s);if(R.isRegExp(n))return n.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=bs(t),t){const s=R.findKey(this,t);return!!(s&&this[s]!==void 0&&(!n||Qr(this,this[s],s,n)))}return!1}delete(t,n){const s=this;let o=!1;function r(i){if(i=bs(i),i){const l=R.findKey(s,i);l&&(!n||Qr(s,s[l],l,n))&&(delete s[l],o=!0)}}return R.isArray(t)?t.forEach(r):r(t),o}clear(t){const n=Object.keys(this);let s=n.length,o=!1;for(;s--;){const r=n[s];(!t||Qr(this,this[r],r,t,!0))&&(delete this[r],o=!0)}return o}normalize(t){const n=this,s={};return R.forEach(this,(o,r)=>{const i=R.findKey(s,r);if(i){n[i]=go(o),delete n[r];return}const l=t?O_(r):String(r).trim();l!==r&&delete n[r],n[l]=go(o),s[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return R.forEach(this,(s,o)=>{s!=null&&s!==!1&&(n[o]=t&&R.isArray(s)?s.join(", "):s)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const s=new this(t);return n.forEach(o=>s.set(o)),s}static accessor(t){const s=(this[yc]=this[yc]={accessors:{}}).accessors,o=this.prototype;function r(i){const l=bs(i);s[l]||(P_(o,i),s[l]=!0)}return R.isArray(t)?t.forEach(r):r(t),this}}sr.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);R.reduceDescriptors(sr.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(s){this[n]=s}}});R.freezeMethods(sr);const Kt=sr;function Kr(e,t){const n=this||pl,s=t||n,o=Kt.from(s.headers);let r=s.data;return R.forEach(e,function(l){r=l.call(n,r,o.normalize(),t?t.status:void 0)}),o.normalize(),r}function cd(e){return!!(e&&e.__CANCEL__)}function Qs(e,t,n){ve.call(this,e??"canceled",ve.ERR_CANCELED,t,n),this.name="CanceledError"}R.inherits(Qs,ve,{__CANCEL__:!0});function L_(e,t,n){const s=n.config.validateStatus;!n.status||!s||s(n.status)?e(n):t(new ve("Request failed with status code "+n.status,[ve.ERR_BAD_REQUEST,ve.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const N_=Lt.hasStandardBrowserEnv?{write(e,t,n,s,o,r){const i=[e+"="+encodeURIComponent(t)];R.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),R.isString(s)&&i.push("path="+s),R.isString(o)&&i.push("domain="+o),r===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function M_(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function D_(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function ud(e,t){return e&&!M_(t)?D_(e,t):t}const F_=Lt.hasStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let s;function o(r){let i=r;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return s=o(window.location.href),function(i){const l=R.isString(i)?o(i):i;return l.protocol===s.protocol&&l.host===s.host}}():function(){return function(){return!0}}();function H_(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function U_(e,t){e=e||10;const n=new Array(e),s=new Array(e);let o=0,r=0,i;return t=t!==void 0?t:1e3,function(c){const f=Date.now(),u=s[r];i||(i=f),n[o]=c,s[o]=f;let a=r,A=0;for(;a!==o;)A+=n[a++],a=a%e;if(o=(o+1)%e,o===r&&(r=(r+1)%e),f-i{const r=o.loaded,i=o.lengthComputable?o.total:void 0,l=r-n,c=s(l),f=r<=i;n=r;const u={loaded:r,total:i,progress:i?r/i:void 0,bytes:l,rate:c||void 0,estimated:c&&i&&f?(i-r)/c:void 0,event:o};u[t?"download":"upload"]=!0,e(u)}}const j_=typeof XMLHttpRequest<"u",Q_=j_&&function(e){return new Promise(function(n,s){let o=e.data;const r=Kt.from(e.headers).normalize();let{responseType:i,withXSRFToken:l}=e,c;function f(){e.cancelToken&&e.cancelToken.unsubscribe(c),e.signal&&e.signal.removeEventListener("abort",c)}let u;if(R.isFormData(o)){if(Lt.hasStandardBrowserEnv||Lt.hasStandardBrowserWebWorkerEnv)r.setContentType(!1);else if((u=r.getContentType())!==!1){const[C,...P]=u?u.split(";").map(V=>V.trim()).filter(Boolean):[];r.setContentType([C||"multipart/form-data",...P].join("; "))}}let a=new XMLHttpRequest;if(e.auth){const C=e.auth.username||"",P=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";r.set("Authorization","Basic "+btoa(C+":"+P))}const A=ud(e.baseURL,e.url);a.open(e.method.toUpperCase(),rd(A,e.params,e.paramsSerializer),!0),a.timeout=e.timeout;function m(){if(!a)return;const C=Kt.from("getAllResponseHeaders"in a&&a.getAllResponseHeaders()),V={data:!i||i==="text"||i==="json"?a.responseText:a.response,status:a.status,statusText:a.statusText,headers:C,config:e,request:a};L_(function(v){n(v),f()},function(v){s(v),f()},V),a=null}if("onloadend"in a?a.onloadend=m:a.onreadystatechange=function(){!a||a.readyState!==4||a.status===0&&!(a.responseURL&&a.responseURL.indexOf("file:")===0)||setTimeout(m)},a.onabort=function(){a&&(s(new ve("Request aborted",ve.ECONNABORTED,e,a)),a=null)},a.onerror=function(){s(new ve("Network Error",ve.ERR_NETWORK,e,a)),a=null},a.ontimeout=function(){let P=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const V=e.transitional||id;e.timeoutErrorMessage&&(P=e.timeoutErrorMessage),s(new ve(P,V.clarifyTimeoutError?ve.ETIMEDOUT:ve.ECONNABORTED,e,a)),a=null},Lt.hasStandardBrowserEnv&&(l&&R.isFunction(l)&&(l=l(e)),l||l!==!1&&F_(A))){const C=e.xsrfHeaderName&&e.xsrfCookieName&&N_.read(e.xsrfCookieName);C&&r.set(e.xsrfHeaderName,C)}o===void 0&&r.setContentType(null),"setRequestHeader"in a&&R.forEach(r.toJSON(),function(P,V){a.setRequestHeader(V,P)}),R.isUndefined(e.withCredentials)||(a.withCredentials=!!e.withCredentials),i&&i!=="json"&&(a.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&a.addEventListener("progress",bc(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&a.upload&&a.upload.addEventListener("progress",bc(e.onUploadProgress)),(e.cancelToken||e.signal)&&(c=C=>{a&&(s(!C||C.type?new Qs(null,e,a):C),a.abort(),a=null)},e.cancelToken&&e.cancelToken.subscribe(c),e.signal&&(e.signal.aborted?c():e.signal.addEventListener("abort",c)));const _=H_(A);if(_&&Lt.protocols.indexOf(_)===-1){s(new ve("Unsupported protocol "+_+":",ve.ERR_BAD_REQUEST,e));return}a.send(o||null)})},wi={http:d_,xhr:Q_};R.forEach(wi,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const wc=e=>`- ${e}`,K_=e=>R.isFunction(e)||e===null||e===!1,fd={getAdapter:e=>{e=R.isArray(e)?e:[e];const{length:t}=e;let n,s;const o={};for(let r=0;r`adapter ${l} `+(c===!1?"is not supported by the environment":"is not available in the build"));let i=t?r.length>1?`since : -`+r.map(wc).join(` -`):" "+wc(r[0]):"as no adapter specified";throw new ve("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return s},adapters:wi};function qr(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Qs(null,e)}function _c(e){return qr(e),e.headers=Kt.from(e.headers),e.data=Kr.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),fd.getAdapter(e.adapter||pl.adapter)(e).then(function(s){return qr(e),s.data=Kr.call(e,e.transformResponse,s),s.headers=Kt.from(s.headers),s},function(s){return cd(s)||(qr(e),s&&s.response&&(s.response.data=Kr.call(e,e.transformResponse,s.response),s.response.headers=Kt.from(s.response.headers))),Promise.reject(s)})}const Cc=e=>e instanceof Kt?e.toJSON():e;function ts(e,t){t=t||{};const n={};function s(f,u,a){return R.isPlainObject(f)&&R.isPlainObject(u)?R.merge.call({caseless:a},f,u):R.isPlainObject(u)?R.merge({},u):R.isArray(u)?u.slice():u}function o(f,u,a){if(R.isUndefined(u)){if(!R.isUndefined(f))return s(void 0,f,a)}else return s(f,u,a)}function r(f,u){if(!R.isUndefined(u))return s(void 0,u)}function i(f,u){if(R.isUndefined(u)){if(!R.isUndefined(f))return s(void 0,f)}else return s(void 0,u)}function l(f,u,a){if(a in t)return s(f,u);if(a in e)return s(void 0,f)}const c={url:r,method:r,data:r,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:l,headers:(f,u)=>o(Cc(f),Cc(u),!0)};return R.forEach(Object.keys(Object.assign({},e,t)),function(u){const a=c[u]||o,A=a(e[u],t[u],u);R.isUndefined(A)&&a!==l||(n[u]=A)}),n}const dd="1.6.2",gl={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{gl[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}});const Ec={};gl.transitional=function(t,n,s){function o(r,i){return"[Axios v"+dd+"] Transitional option '"+r+"'"+i+(s?". "+s:"")}return(r,i,l)=>{if(t===!1)throw new ve(o(i," has been removed"+(n?" in "+n:"")),ve.ERR_DEPRECATED);return n&&!Ec[i]&&(Ec[i]=!0,console.warn(o(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(r,i,l):!0}};function q_(e,t,n){if(typeof e!="object")throw new ve("options must be an object",ve.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let o=s.length;for(;o-- >0;){const r=s[o],i=t[r];if(i){const l=e[r],c=l===void 0||i(l,r,e);if(c!==!0)throw new ve("option "+r+" must be "+c,ve.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ve("Unknown option "+r,ve.ERR_BAD_OPTION)}}const _i={assertOptions:q_,validators:gl},tn=_i.validators;class Lo{constructor(t){this.defaults=t,this.interceptors={request:new vc,response:new vc}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=ts(this.defaults,n);const{transitional:s,paramsSerializer:o,headers:r}=n;s!==void 0&&_i.assertOptions(s,{silentJSONParsing:tn.transitional(tn.boolean),forcedJSONParsing:tn.transitional(tn.boolean),clarifyTimeoutError:tn.transitional(tn.boolean)},!1),o!=null&&(R.isFunction(o)?n.paramsSerializer={serialize:o}:_i.assertOptions(o,{encode:tn.function,serialize:tn.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=r&&R.merge(r.common,r[n.method]);r&&R.forEach(["delete","get","head","post","put","patch","common"],_=>{delete r[_]}),n.headers=Kt.concat(i,r);const l=[];let c=!0;this.interceptors.request.forEach(function(C){typeof C.runWhen=="function"&&C.runWhen(n)===!1||(c=c&&C.synchronous,l.unshift(C.fulfilled,C.rejected))});const f=[];this.interceptors.response.forEach(function(C){f.push(C.fulfilled,C.rejected)});let u,a=0,A;if(!c){const _=[_c.bind(this),void 0];for(_.unshift.apply(_,l),_.push.apply(_,f),A=_.length,u=Promise.resolve(n);a{if(!s._listeners)return;let r=s._listeners.length;for(;r-- >0;)s._listeners[r](o);s._listeners=null}),this.promise.then=o=>{let r;const i=new Promise(l=>{s.subscribe(l),r=l}).then(o);return i.cancel=function(){s.unsubscribe(r)},i},t(function(r,i,l){s.reason||(s.reason=new Qs(r,i,l),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new ml(function(o){t=o}),cancel:t}}}const z_=ml;function Y_(e){return function(n){return e.apply(null,n)}}function J_(e){return R.isObject(e)&&e.isAxiosError===!0}const Ci={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ci).forEach(([e,t])=>{Ci[t]=e});const W_=Ci;function Ad(e){const t=new mo(e),n=Jf(mo.prototype.request,t);return R.extend(n,mo.prototype,t,{allOwnKeys:!0}),R.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return Ad(ts(e,o))},n}const Me=Ad(pl);Me.Axios=mo;Me.CanceledError=Qs;Me.CancelToken=z_;Me.isCancel=cd;Me.VERSION=dd;Me.toFormData=nr;Me.AxiosError=ve;Me.Cancel=Me.CanceledError;Me.all=function(t){return Promise.all(t)};Me.spread=Y_;Me.isAxiosError=J_;Me.mergeConfig=ts;Me.AxiosHeaders=Kt;Me.formToJSON=e=>ad(R.isHTMLForm(e)?new FormData(e):e);Me.getAdapter=fd.getAdapter;Me.HttpStatusCode=W_;Me.default=Me;const kc=Me,V_=""+new URL("logo.6622f82d.png",import.meta.url).href,G_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFqUlEQVR4nN2a200jSxCGa1bwBGh9IlgTAUaAxBtNBGsiWBMBJgJMBGsiYIgAbwQ7vCEBwkSAieCA4I3L7FdmxjK+zaVnBuxPKlWZNUXXP9Xd7vY6UgAbGxtbvu8brOI4Tokfica4EhbS4d86/Pwe3+Z1e3Fx8czzvHvi3MhFgM3NzfLLy8seoaGgCj41gRge/uTi4kLjTMlMAGNM6fHx8ScDrdsWPYHOt2/fmgsLCydZdUYmAqyvrx/4vl8nLGFFoNOkyRQ5shXCSoC1tbVfuIaIlOVz0OLrV1dXJ/hUOFhigjl+7LOwyReAbvDm5uZ2z8/PO5KQxALQ7rqwnRKWsK/EPbZLN7TwsUkkAMUf+L7fkC8M3dC8vLzcJ4xFbAGY78e4mkwHLp2wi4/EwSKZsuJDWoiwg59IpABTWnxIZCc42Fgovonbw6aZI0So40cyVgCKr+JOsVlgBxFa+CFGCmDeP9beEpawWeB+fn5+ddTnhJECsN399b/Ih5ysYHv02B63CT/gYB/g6Fp7e3s7Jpw5OEjtcqJ0pY8hAZj7t7iyzCb3S0tLy/0HKAfrkcHTv6HVWnhhCtVE5AeWBXeO47gC5K3iVrBUkOeQqdCQgJ4A5n3huyYsSwoGEyt0kysivzAbTljBa9KHZd4PXeBgXVj46qj7mzANNwyygh+CwbZxK1gacsnLw9rnYTUJPwhwjQAVwsSQcOjph5j3zvIk+WBveFLGC57UIIy3wXgPCBPDeNuMd5XwXQA93z8/P98SpoKEYwVQTHIRJhav2AigsCOssiO0uwKQzKb9lQ6tuowfi4kvQmTxClPgFleW9Bwx5rpDoAKkbv8+XBLu4sdiokWIW/wxriYW0LXdaeDYtn8/mpSLyu1JBZjxIkQWb/jdp6env779w+rC3/vPQc0q8SmWCSlFKLz4gB2H9rdaTEaRUAR9EsaLeG8Oxes4D1UAj8RbvM4UkscSASdexHvyKD7gRKfA/wQlLHPiiDAJk2/xOr4zFcAnzg3+SCoRTM7FB3RyF0BJKoIppvguhQigxBXBFFi8UpgAELnVKQYBgt1hBcudogSIVXyIKU6EhyIESFR8iClABKZl7rtAquJDTM4idAXI64MQRBZvKBAnXsR78hIBAf5oB7iS/nppHLGK19WeUKJ2B8N78xABAQ6dDC5CB4ldvB9sdQwkcos0/E7WIvB3t1WACgJc8zoLEhcfwmAKF4H7C8fB6wVDR+yvsIdubwcxFDCq+JA4IiiM1xX7aXvDeCuhAK7YJbwjWVkmYCKKD0kgQkfsHtoRY66HAlRxp1gqGHTkpWic4kPIFykCu1eDfAeEqeDL0mX9srQrgIIIHUmpKAMeK4BJWHwIOSeKYCMAuc8YrxHoCUDC1DfDJOxeMBIOQd7UF6555eVKvPclaU8Aw5Nihe2IyHcsMQy2yWD3CXvQVce4mtjhMld38T0s8z6wU5W9oLMcrAeqpm4rBRHauBYm5KmJSFmyoUNuV96pkruCTwV5DnlQDQlwsB7GsgumgKHd6oMACl1QR+HfhLPIDgK08D2GBFAQwUOELcKZgdY/o/WNDDBSgODbojbhd2wWeGDfr+i+LwOMFEBhpa3iTrGph6e/zdP3ZARjBVAQoYnbw6YWij+k+IaMYaIACiK4YndO+ExOWPRqMoFIARQWxRaL4k/CaSKyeCWWAMqUdUKs4pXYAiiIMA1rwhHF1/GxSCSAgghVnCtfb4t8wGoU38LHJrEAin5OeHl5cVkXtnj56bDS/+HoXPOCA04SUgkQwuJYR4SGfF433HG0bYRH2zRYCaAYDlBceKgQdV4WJYR14SHWAoSYdyFqgRA/sDy4ofBmFoWHZCZAP8FVe004u2O2Yuh/wHbn5uZaoz7L25KLAP3ogvn6+moQxFBImQ7Z4sfjeOA9bbzH+9ocYNp5FN3PP2o7eJ3ygAdFAAAAAElFTkSuQmCC",X_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAkBQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03KISwAAAL90Uk5TAA9Ne6PBzN3Qxa2GWxwTbMb82oQnIJH3xA2O+9yfdlNENUFMa5PLtSNA49l5EGHA9m4BUgIzr64MA5nybUXbyhXOJaXWkLMJ/sgLYKoEoir1uwZ/4vEZ/TsR5aFYK130FKCNSyRmdLe2czHwMuw2G/oFXteFVLx4YqZlrKtanIcp2M1cGozz5GMiGPmS6+pDOfidX+nTL+Ys4H25HQp13yYImB/UgEJvsrrVeqhpx2ipLTQHEpfeg+cu7j9PVmTFnY/3AAAAAWJLR0QAiAUdSAAAAAlwSFlzAAAASAAAAEgARslrPgAAAxFJREFUWMPtV/k7VVEUPc/QMxQqUppkKGWI50bPEBqfR+QpLw00oEGZSjRKESGlVCTNc5rncf1r7Xsf38cdj9dvfe2f7l37rHXO3Wefs/dl7L9pmsnD08t7itnH189/6rRJswMCg6ZjnM2YGTwZesisUChstgcvfU7YXIkxb/6CheGLIiKjohe7VrMkhou/dJk4ODYuZBwWn7BcBBOTLMZ8T3E2n2RBjq9IESVSVxrQrWk0Kj3DqubLXEW+rGxdvuBFY3JWawVnDXnXBugJrKMR6zfofJ8NyLVr+/OIn79Rb4YoGlGg6S3cBBQ59INUTAoJGj4LbdXmAH0+s6QCW0o0P8C5lRlZ6TZgu6rHSruUZshnbAfNs1PNUQaU7+IQYEHAbjXcF9jDw2d7gdB4JVxhg43vsLBYoFKJVgHefHxxK/cp0f3AAU6BgxQtRbpYqoFDnALCYaBGDtYCdfWcAqwIaJBjEcARXj6LBo7KsUbgGLdAk0rKNQMp3AKBwHE5dgI4yS1QCZySY6dV91bDKGfOyDHKzyxugRYgTI6dBaq5BfyADDnmoGLCXQFbgUwFeA44z8lvs8GZrUDb9W7LiUZXV44SDQcu2PkEKJNblKi1A+jk4l90Amp3mj9VVCuPAFW/XDW8K5FvCcHdQLKqpwe4ZFQWXBHwUa/ypb1UGA0bgCTAdlnD10Blq8qAf6UPuKrpLSD1a7r8in5quEya7jnX6WIr0+HfuEnZMqAzoHaQ1nBL0HJH0s3bl8n0rMJMcRi6reobbqf2AncMgtRFhwrlTcqkFhrvSr1e/z0DhfsPxGG9xQ8noKbOR2MN52CtgQLzkKZy+j5+4mokTDVPnyWKUPpzSeGFYbYNv+wdna28wzxYPfrc3ZMtjEhPucan1v7qtaxTbo0TV+4Ykl6GHIYKjMW8GYmtc5E7/KrGSqHdJfxW4FAgqw95936g5MN46KMrmJ/4BNSs7bOk8MV9hZivkgJvM6Fi376LArZm9xV+SP8zdYXuK/yUfml+uS/A8uhY5XAWAXX7bc6P/xv+P2Z/AEq6ab7rDxu3AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA4LTE4VDE1OjIwOjM1KzA4OjAwHpcN9AAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wOC0xOFQxNToyMDozNSswODowMG/KtUgAAABJdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2kyYzV4MjJydTJsL3NvdXN1by5zdmfTYjJrAAAAAElFTkSuQmCC",Z_=""+new URL("add-icon.0b0b5313.svg",import.meta.url).href,hd="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAED0lEQVRYCe2Wu09UQRTGdwlYWWMAIzEhWhCJhRgVAbHzAWil1sT/gKcKLAqG159AYimVgIFSeVOglSYmRhPFEEiIlTQ2sP6+y5zr3OUuLFDqJLPnzHce883MmdmbSPzrLXmQDRgaGjqNfyO9Op1OFyFPuvjVZDK5Dja3tbU10dHR8d3h+4qcCDDxdZL3ku3yvhlxgMwS4nFLS8vMfv57Eujr6zuRn5//goQ3vESf0Sch9BW55vBifMrA6pFnPN9Jxk0Q2fCwiJqVwODg4Hk8J+inXMQYyVIk+xDJkDFgtyogkgK+60wrxDVki4sloMkJmifRcZJsoN/LZTvdhIEYGBioI26UQSF9E/1qHIldBLTtBQUFywRp5Z/y8vJuNjc3r6AfuA0PD5dub29PEVhOX4HERUhEjiMvM6vOHEyTbxxlcuUVcXLcUi56KTs6ItxvEQKqdlgGBYfz/cOu3J9AOcj5wGH1HG+tb48QYNI+Zxxra2ub9h2lc64XSFCVidtYNvnY2CTb/hZ9XGPIPDdcMiTgHplLAnFKSfqN86wEV20s4Nvp26Q7bEE+cSTAu+XHIq+oNqSrhQQw3NmBEl/iqpViOoY9KFp8n7LaLuefkC7MjZPo8o00l1NviEjoNQ1aSACGVx322smIaG1tXSSw1QN7WHU3q20D6zGcPF3t7e1LNvYl8boRatU7IroDwbtOgi9mzJTUxZBPAj2Ff7/5aXJW+szGMTLITVyJ2cIdAChy4JoZ42QmCfPJYfIEV3Ld+RdbnE8gLZCz3vU4mbMn/TiD4zCzBdLLHcwl0A+ylYfsItFuoDP3t918dByqCRvHSeKCXUbaXH8JGIgsiwsWpmrHHp45kK5jeCVFwr8divEbdsu9mwDGOTkzQXhF/GASq3LDakfv5Gb0qkv3fHv6+/vtRnlwoN7WL0cxa4bwCPQlI1As2coKczBJAf2WWWNIPnETB2bpwoIBPujyjTTlBD8DyBTp8KqHBPQZhcOSonBISfqNN/0dJCphX8VVsyc7dBEmm3y4Ke9Dg1PIGewecyzyTvwwe6TiYXkNx2kZkdfj/g8s8CCSvPqke+NiatixeYsPd0AAq5hBTEqH6aj/Zgs7TFMOJn/pYsf9yYVFCAhg4ibECr2QLZ06CgnFKody0b9xPA+RkbaLALugT7AGvDbp5SRY1tFEonIY8F7UKVY56L/QG6mjn5mhkRrwjapatk7VWiocUq+4KSkK6KPvl6lzBc+xUhWcfZR+0+TZ4rISUGJIFEJiBLVeY9f0l6rPbf2xBA8KE5Qw1iOje36Wbm1c2x63cnPYk4A58QjVouvqVRm2l4TMAsQfZRZcXExOBCzQVXQjyWuYpAhpf+Gr6Pqnm2U3Jvx7brH/ZbYd+APZxM/2zgvhdQAAAABJRU5ErkJggg==",pd=""+new URL("dot.1026a040.svg",import.meta.url).href,$_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAG+ElEQVR4Ae1bXXLbNhAG/aPX8AZRTxD6BGZOEOUE9nN/JuoJrJ7A6kzbV6snsHwCsycwfYI6J6j8qiRivl0CJEiCECiBkuwpZigusD/ALheLBUgJcUAlG0dh9mMU7XJIJ7vsTO+LlBVfxAeRiRjtpHQklkxxxr87+tm5AbKfo1isxCcoOzLo+HvwV5oa2ntr2pkBWPFMXEH5uFWbgZi04npC9G4AdvWluIHipideqhWIv4NpuigbdgP1agB+6ktxC1XCteoEYraWpgeCoAeZLBLR/BLAjaP8z5j7Q0dar2RHXqVJYdlP0Rigq/LENZesO795NwA/+Uxcd9LkSCSd6D0SezVAR7cv1TjZnwG8xQCZwT2UWjlDe5v/NEKfHkDRfpPytAmTLx4vy6B0/eGGg0pd+ZBTDJE+U3BNRSDugj/SxJW3jc6XB1y1deDQvnCgYRIkSk/YO5zhGiOxuofh/0WuMXLlN9FtbQA5gKFJeE9tiSZ3CEPcYtm9Z+/QEK7g1gaw5vauo+hG15wytKNciodNvGF7AwhsabcrYSf2QLRNmZC9Ic9AnUX6MMDQuTczYWRubmkNEADt5UYGZTuVxPowgFNHFqJ3FtymKGcjbGUA3upuOsSSL+RdY1m3QysxtBMU2BsXuWsNQNFVZnmFZAV427/TQYl7cZ8ytELQ0ZulWA3AiiO6Il+0CXm2yHdDIYqjr7W7R6nMhZtQpqJzR2uG2moA2RkxU3RdWDpNLbguqEvbes7jWYp7Hk8XqblxJ20srZshPJEpmD4RIw4rbHQTkHRxYRJpLwHvDlNkfLnhAzyETFyCKbQzWrAD8QNnkjUS416Agwed3MoC6w9NzIw+wrK0UpSe7vlReVxIywpoc2DJZxQf6wLMU6AelL5aIu/J2nW53ue+6iPTqtAwABPlT0AfaKvrtXqGzn0o8Kp5UtUwANz5ujHerP1Iu22JbMg4jIao7gUVAwA5wjijxlgz8UGuCg0UGvwGQFMPPtvyYFpIrBgAkZYMYCohdlu05SymApasCzz9BxC38Zjk7L8tExcU1NVAiuWNlVuK/xTCck+Biyz4l4D6DUv7hAZaesAXXmddBv/SlScdL5SipQHa3V/RvqZ7sb8pDSDE+WvS0EEXjl2cCfLSYM7mPkPQkyaM3P+NVi/BQDwWqWve2k6b42kTlRYC8nT3XVGvA035dYp19foDjokhT4Xb39nPVLAgYkT9BLe6IEJhwyDGwZ/lMXUrLV6Dw1BTyC2VzyUIGYhHqE5wvZXN+a0mv4JzqGA8WY2M9VB7gbiG7KNK3jSCkRqKq87k+cIMhphjGzuFoS4Uro87eb4eA/roQ8kkdx+Znroi0O9kCBjqEm13ert3GKdLygPa556fXscm5bNfzs7FtyxGFwsxwJseevGhlwGW5iXHoDeUoiP5WuhogmGo93obnSno9QKuT4AcURggLAj9A/Tyc6aLlXP9HspHRftSTDH4KRT6VbWRJ2DuTlG/whVhSqwvzY2cjSfsfwrkhxvVQdD8NmWTeOUl9yM6/VyveIYjNQVc5c5AmBiJTyrLpU6S6hWGsblqtKmGFWekhdI0deAFCuv93skAdVd2Gk3tRYbMOUILrw1nYdsM1f8U6D6u8+4sG3OkygNomTJneJpsuGIkjgMz3XH2KNdxjQNg/UUGHaHln8RW6craPyXYO7RQHpA4djVF5E6M19fWLXJlAksjUVJkLkE1lmDFGJoJPbTiQFcZIPUgrk1E06WP8IGDuTyLUzGpoJYirtR9VuCNygBzn3JrshrncPi0ZY6TiI/YPzxqtHeA40Yy1NeRG/qmvjgGyKWG3PKtNiB/IGVx4+i9HiPYCGs+kERiNEbyM/Q3EE1Sli/nygMIM9PQvkH6LwAZIXQVzAlR1w8uXYUT3YCTMe1ILG+g1aCvQnn9PecBlh4o6GG1oa/Lby1k26HyL9OfSEigS5Iud621zbDszYr6t2wKOCrqVWAM2rRostM+gS7BRfcFrhAXjSaGy8cMu/4cB1V6WqXWFe09YcUAxAfrJ7g1IzchX0cpToRJHT0G5OoN+JyfAuLrKxT55XG4Uq5hABmpRyDoMx6o/nd5pxyD9KqUhgEIS8siomRUW6crjC+sQg/TlGMYpoDUjBOSUw5IlKC83JInWzE/VIMWjSBooBG8Jq84TzBvhExMh9BGJ9CnOK22/BnLyQCkCycxS87hx6geuiEoiE/w1Ge4W4uzAZQUaQgKJpe4Dm25dFZc6dPZAIqR7pS14fx+hOSFDLIvYzwjWM8xBuPLFn28JngrA9QFcpqb8eltDFyEq4/NFT1l+sNEgivd9k8TXg2AgTUKT5n8sIS+NySjlCUQw5bdXlISAZL/KttW2YrM/yu5Bb4DerorwNygw+YAAAAASUVORK5CYII=",Jn=""+new URL("dot-yellow.4b5e135b.svg",import.meta.url).href,Wn=""+new URL("dot-gray.86cdd7b5.svg",import.meta.url).href,gd=""+new URL("empty-icon.24a01ae2.svg",import.meta.url).href,eC=""+new URL("close-icon.86743366.svg",import.meta.url).href,tC=""+new URL("view-icon.da7fef35.svg",import.meta.url).href,nC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAE8ElEQVR4Ae1a24tPURQexjAxuZVcm1FESqHc80CDkhIpCsULcnlQ3kSUFy9480L+BeWdPGBGQiPEw8wowjAz7nLn+6bZ0/7t+fb5/Y5z5sw+J6vWnHO+vfY+a3177cvZv6mqGjwZgVfvhV6BvoR+h76AXoJuhg6FFlZWILJW6J8IvYWyGdDCyVpE9AUaFbwpY2bMKhID0xBMZ4XBGxJaYF9TFBLOxQzekLCnCARw0vssCHgPbD90AZSBdkNN4ObaBCz3shQRmIDs61Ynso0euzGOXe4eN3gCq3Mi4Xi3CTL3ix27VB6zXGs5BFz5BYDDwpYfeODs78qArAZZEsAVwJVPANjDrrS5AJ5zT8B0EdRzgRHqEvhYgSWGsswA1YPPPBG8FXi1wBJDWRHAiW6l8PaJwAh9FfgwgSWGsiJgHTytFd7yQ0jJaAEOiK8D0qhwfqfA+PV3TeCEFAEdHttEcBYE8MtvvfCSn70fBU5ogsCfCix4aAg8vA41mxn7usrjPfcLZnm07Rs99kHDR+CdHYS5vwuc5ChhoMbOvjYo45CxNXDupyeY1RGOnxJ1nkbYB1nEAPmVZ/egub9cxuN7ot6FMnWCKt4JbzjDm4DtK2fySRHeLvTU2xJRJ1FRmpuLqfDkNNT9vDUO8sNnO/SVAcT1sMAI8ZD0XydBHr/x/PEa9AE0dalHiyegXNLs3rbvf6NsFzRKSKAvc+y2ktzzoHVJlBOVlE2GEcf4ISh3cuzZKKdYfhBaTvbAIKqdtMo4Me+2neE+nWd17dDuMvoO5XEcYVbwhKcSOQCjOG0nsWVGbjJOnR+gF99Bu3PNSyq4ToTNG2iSwOLU7cS7RnMz8hqqtp6A/0nY6yehZ6FMtzgyE8aHoTOgvo1SnPZoy3MEHrhW88ERvqvqGzQOcz5bEnkUOg4amsyHQ+xx1/erdDQpARxC3PWluaTSr7TlGBp0Ceik0yrVLgLnkmELWdxnA733B3EliaFLu3BwJDG19u4Qxpw1XQb5rE57RfVBhzg8Xf+7fOcBNHRFZQptlK1bN4TnZcKJFhLgC0zYSygPBDBG/jLlSlOcDHAr5+l5DpwdLxz2EiBscw0tF94zc5t9GSDsEw8V1WZWmBr/T/DyzjgE+JzNwxygMuAmA0pjEvQREwrOnels4UwTMV8G5KFXRUwSYu+rla4vA2StAoFq/L9DfI8Zoy8D4sQferao8c/055lALAJUGsUhajBs+a2zSLy4Z/wT902CofeqiElC84DWiZKe8U88jSEg2g8GUunPM8rbxsM0CAg5W9QEeB/Bf0iTANNWiFeVAX3jnw7HyYC8TYJTEF+D6JWKCAg5rUVMElK9T8O+CZAPvlWAZZVKqGSp8d+BoNrswOIMAbteHu5VBtxwHS8qASMQKH8LcKVk/LPQR4BK6zxNgtz9kQRXSsY/C30EuBWjnhVZUfZZlKnx/w0v5r/mlAgJyFPPljgf8aAIYPD9/gGTBITYgxGxlS2qgYWaAPuNf7aUxhAo61GGBsPxrjNQ/tLsiiSA6a8ygOvlZ6eFUXhWDZesq06dLB8ZB4+/1PE3U78eyp/f+wkrFl2ZFV7hyUiRCXiI+NSZQA8hnANae+6K+acZYTVC+a+3XtmGEh4SFCkL+K94x6G10EgxewAeHZEpLiF5FZ7/cbPzCHql9x6X//KfgSgG/gK9mIkzqc2oKwAAAABJRU5ErkJggg==",sC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAEk0lEQVRoBd2YW6hVVRSGzXtw8pJkYeU5aZqVIWKgYdDxAkUpYqGJgdhDEliKCYqYGfRi2YV6SBQUxKAbPYRXEMQEfSuULkIXFBMpE6zUvKX1/bLH4W+59t5rudfu7O2Af8855hxzjH/MOddcc+0uXZpcutWRf298TwTnwKk6xqmb6814/gecAG2gqWQSbEU+sL6p2EP2CyOvJC6Au0BTSDssY+a9XNsU7CG5q0wCWoU20NDyMOx81t9FP29taxqaPeR2GtnfqLeAddamZFpBQ8o4WPnsLymxFGFfhfcakj2ktoNIQGf/TUZ0g/WdpX679TVEdQwsLoNIYFmC1VD0i9b/TqK/09UtRu4k9b4pjDaajVZhUIpNpzSNJqrP/ooyLO6m3VfhzTJ2/3vz50SMrfM79X4VGHxgtmeoD6xgW9cuBR4PXgQ++6+iV5J76bwEIuGPqD8G9Ix0B7nlhgojbqZvWAnDS6W2gdrS9vgftOu+o2egkoj00ykG2l6HwA/g+1L5Y6k8QqmJukqUQE/wBBgJgqhIKoE88hrGr2QYcD82B0C3DLZhovfIT8AT08FxTAbbQCxp3vI0Y/eDt4EmIqvMxHA3+AXkjRn2fzL2Dq3AcXALKCfKPpZSyxtQ29Fyg3K098E2tmqU2gnargOq+Jms/hdAZBXlZ7Spsw10BZ0l2sZjwUvAH37x3AM6tuFiFD9NNOtPgkaQWyHxNYjJDfJ+VbnC83l+Pcu/0Z+50tN5P7cR+lvg5Hejt4BUeY7WZBJzUi3r3ziYEHrenPx29BurhZ6NwUUbqJV4ttqggvtb8adj08lvRe+dNc4sDD0JPR/zsw6u0U4n0c/AyW9G75XX7wwGXDBHSmJhXic57e/BXkezk/8YvUdOPx3mU6jpn7VwqCQWdfQWW9E9SW/WiKXyQ9Ad1CTJJOR4SU0erx48iiZ9Qzv59eiFvYMexdlfFkAroTtNUaLriJNfg65bQqEyDW8eZEKB3n3r6LaamXyeJTqVIHwwodeiui9dEDVRmSRPAg+YxxPUdZMsSvS2Dcm1NfMk4I6/iWgFlZ7ASHzWZQvJcUjRCbi/FoK0RqBqZdYV0IzcZ858xqz5mqtKwPe9T1ZFp1kTuBMvfc2Tz5g1/6f6ENpbYC6o9ibV97TewCGZE4gB1crHMfAjVB8a5UQr9QnQuyLGHKY+D3R8gFBPin/abkp21qrrzRtkdNFKk1Ya1wLdXsM2WWrrzQBpD+kbNu4r6oXKRrwFmR0Jz4PQ9eb0i1/YprWpbx9oBy5zUGLcWeo134Hc+ZfmfHWpQ9toFfArRhA4XerrTzkV6G+U6PNyJ+0PAskY4H26mRYi2rdOcj76UnASeEDV9S2tbaRPQRcdFto6yY+UGK9ExgLffk+hFyL6wIhAQdJ11RV4AxgMKkkvOheAX0Gaj0vWvpJ6ITIdL8lgoeuk+RSMyBlJL6uXgf4MDl/JUn4LkRV4STqXrodZ+7YW0XP0OjgDkjG+q8Wxj12ecL4X/RE3KKCuk+x94KdWlpdlptA6SfRduhVMyTTi2o2GMFSHwC7QDq5/+RffN6xPYNWQnAAAAABJRU5ErkJggg==",oC=""+new URL("collect-icon-colours.6d2ade7f.svg",import.meta.url).href,rC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAADpUlEQVRoBe2ZO2gVQRSGTXxEo4UJYuEjGkHBoCjaKqIWViKIKFgJVkpANGlErGORSkUURBAFGy3FwkZFfKOJDxBBBG0EwfiM78f3x2wye+7c3b25s5uL5MB/d845M3P+M7MzO7u3blyyNCW7U72fqfE9tVa8wlRUtRuRTKFVJ+gBCvynSqiPE6AOpMlsKjwGinkJNIOKpIXaj0C1pH3t12Zg0m1iP0EXp0SpH/Rq5C+CJYm1R+5UUmnSbyq0od8AS43dq3Zg9Y1ctbZv9HsMZLmFplOv18OjD9sakCgP8Lpkr6FrBLSIq8Ek2lciSuIKcLmo/AVsAV7R6NgFu8hbsxjjZMKcBzaJX9jaLQWRbwR225qI7aetnJOu3UaLfCVYDLQbzQCtwCddGA8AJTggSsBmO2HQl9dFe/0OoFtVA2Xjp+mnaDMkRSYwjaj7wRuQRjLNvz7KoKgENhLwZQDiUWKbi0qggUDHU4g/x38S7AYbgNbDMnAQRITd623sQztcnjOgBXqzDAltHEfBCuCT7Rj1HHGJq6xjhm7FIckrgZlE8B1NtB1qRuQvJ/tw/AaW/Gls2iFjkkcCGqG7wBLQGlgVix5XtK13A9tO+iEgf4nkkcAFolgSt7Bpfy8n9TjOAttOM7anXCPZQyewiz4tCe332vuTZCtO2+4rtm1JjeQLmcAs+vsAXCI6FuuMkybtVHDbvUdfl9ZI/pAJnKE/l8Qn9DYFySBK8iFQ+xdgOcgkoRJYSDR7LOjMxGC40niKC0DJTjNcpbQUKgGd+93Rf1YpkVJq2SwhEtDT9i1wE9iZLXxFteZSWw+/I2BO1DJEApvozCX/Dl2vqaHlHh1Gce5EnYdI4LDTsQLEjrtRoCqvmmX36axygx4eIWS16eSy0UOoWuDuk1hl2areRjUI/SCaWl3ngdDiu1MaQ8yAFpN7vyuZV6HZl+svRALNpvPX6Lo/C5EQCWhqXfnoKnmXQyTwFJI6MkRyPSoUdfUtjkq/SuiMfw50Ab0L5CE+ngOz73NUmkAehG2fPp5BdiEbqFA9xBoolLANNpaAHZGi9bEZKHrEbbyxGbAjUrT+X8yAPh79MCPXYvRaUOcbEvpbTP+dDUgPv+4Lid6o8ngp+Ret8t9WmlwFLsf7bjcdxulWrNXyXjcBvVH5PoXXKvle+OrfzJjovo8+7dUqcfESeX0f8oqy0tToj2/fvyOjlZi46J4Xt9jIu58p8JVIU4lldAx95cL+BRfIP0NGsZjIAAAAAElFTkSuQmCC",md="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAACWUlEQVRoBe2Zyy4sURSGm7QBI2dESI4WyTFhxuQ8BPEQLhPEROI2FzPxHNIJOZwnOE9gSjsuESNDA9f/a7WS1a2LiC69S/ZK/uy1V7H3vy5VvatWofBaumSaE/4KF8Kd8JSCBdk/K6yRtj57w+FQmBU6hTdlSlcvhbQF6+1ZO1C/H85MeA/a3WRJ+q7Q52yhqf0iVBYWjVhbohB5yNscc0XYS8ZbDA3kn2xHDewfMY3oj3+n/AMlMyhMCiXB5FEKnOFXoOZ92TxoviIUhVCkQ0RWBbhZWZ1Lr94T3LBmZIR8qLImYp7rDER52pjxWHpIkYefFzJREYzvATcxNWiyL+XeJgGOPFardZ9wG8WBHkf0zOmhqv8dsV4c8CUTcvSNt+dYxIFcS3Sg1emLGWh1Bjj7VH/NEiLNONtk7dNbZ6es947rxwjECMQI1EWAx+i4sCx0110LfXojgls4wAtCScijVDhK8HaTV3kiA2MCJfQjZ15QQps54xzpxgjECHy7CPAYzf0LjX2mY2zG9/6ss1zTEIkv9VmH+731Ywbei1DW179FBmq+9mYdsSasX/M1nQxcu0V/Oj1UteSIXaHTRLbfghPptHFCFbidCsb3D0TpgJuBkW5gqLIhYp7rNERpVV64C7Qy6QaGlAm4rAu+zXqmeSdnIYT2fVnwT6VTzWn60blsZaN7SPvDb0AwodGNrVpCZlyU4j30qUrTOZd8Vlgjbf1GdjjO26Y+4tsy0r6nnEIVuvNEfscIegew0YP9JXBjHwiXgv+d0PRLhb3hQKlw7B9OdA0v8gypmLKP2lSLggAAAABJRU5ErkJggg==",iC=""+new URL("QRCode-icon.a105d5fc.svg",import.meta.url).href,xc=""+new URL("delete-icon.4d386dce.svg",import.meta.url).href,vd=""+new URL("arrows-icon.271dd0d3.svg",import.meta.url).href,or=""+new URL("tick-orange.233abc69.svg",import.meta.url).href,lC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAECklEQVRoBe1YS2tTQRTOowmND1wYEl26Cc2jWVhXBUvEqlDqMq2KCzdaf4ArcSEIWlB3LkTpqq0IAQVRd2pUbFwY+kif2bRQKDTGhViTJsbE76QzdW7M497k5uaCGbg9Z+bOPef7zpyZnozB0G7tCPzfETC2mr7f73fk8/mbhUJhw+Px3AmFQr+VYGopAQb+DQD7GOiQ3W6/EA6Hc3JJmOVOVHteGfDkwptKpdxYiedra2t5OT5NciapPcfn8zmRNu9gl0c+I/gIJpPJ8WAwKCu4siYJxhtWKfLId0obLzP2E3LAaDTGIM+wMR9IyFoJTQmUSRsCPzg/Px9OJBIRp9P5QyAhK500I1ANPIu6gUg4HI4t9E+zsZokNCEgB3y9JJpOQAn4ekg0lQCdNtiwdNrwDbtlMpkGYrHYBw6WSyLa19e3vbi4WKAxlk5ZqCfZHEqnDMY/sn5RNO0YJfDw8BaPhzksgp+bm5MAoHder/c8jtX15eXlMTaXiwgUIsGbgytcdnBFTakUPI7Qcfg341nnOGAjAP0VHisbm83lcreYvitULyXK5HwKaTS4sLBAqSRpADmEgUk8FMgxHKdXIPOwcRwr8hr6PjzUZrPZbH88Hk/udP/+VZWA1uCJhmoEWgFeNQKtAq8KgVaCb5hAq8E3REAP4OsmoBfwdRHQE3jFBPQGXhEBPYInAlR/1GxdXV0HUa+8x0ReVf5EfwD/+mlM0iqVByjYTmAilQd72QczqG36V1ZWvkkMKOzIKubMZvNt2OVVJUqbwlmA/6ckrgYehF/Cxh6Grwge1WdD4MmWnHLaBOfDzDEJdI1XA4GAhDzA+/HuCZ4OvH8MgpehFwsz9F9A5+CpMDulBnjYrE0AwOjq4wBNFtoQbg0mRRJYlRSAbkI+wA+WEcwtYN/IrioF24rUmsVcd3f3CEA9ZFZXIY8IHibcbvelcteBlPMg1JS0EfzXXgGA7+UfANAN6Nd4H/Li0tKSZCXoHUUec8W0mVEzbQT/tQlgskgggty+jzGRxDDSaYKnU5m0KW7Ycj9GRCD16lVTyOVy2a1WawLGad4mwB/ijrA1iMRd3od8itV6xCLPf0mpdtoIfiRq1VPIYrFQ9DnJKfFLkLmH/nVh7BzA05WhZuDJt+QoFMBwdTd9MEA3BMXW09NjSafTRxHxNEBvYpBuIKhxsk2P/I47BQQAdj9OllF82JvJZI7hfsfGjZRIzcCTXx6xEgwGA0UZQL/jRSWgkm9AMI6BZ52dnaPRaJS+06RVTCGkiKtKlNMA/AXvI7j++ISNHpmenv6qCeISJxUJ2Gy21e3t7Thy3IVnA99NEVjURZ+xuRHk6K8SW/rrUhrhP+1h/SFrI2pHoB2BdgT0EoE/XD0Yrfi3Ps4AAAAASUVORK5CYII=",aC=""+new URL("tick-no.179037b3.svg",import.meta.url).href,cC=""+new URL("tick-option.e092d22f.svg",import.meta.url).href;const uC=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},fC={name:"#answer-app",async setup(){const e=(h,w)=>(h=h.indexOf("//")>-1?h:l+h,new Promise(function(j,Z){kc.post(h,w,{emulateJSON:!0,withCredentials:!0,headers:{authorization:!1}}).then(function(te){var me=null;try{me=typeof te.data=="string"?JSON.parse(te.data):te.data,me.code==401&&o(),me.code!=200&&qe("error",me.message||"报错了,请重试!!!")}catch{}j(me)}).catch(te=>{te.response.status==401&&o(),j(te.response.data)})})),t=(h,w)=>(h=h.indexOf("//")>-1?h:l+h,new Promise(function(j,Z){kc.get(h,w,{emulateJSON:!0,withCredentials:!0,headers:{authorization:!1}}).then(function(te){var me=null;try{me=typeof te.data=="string"?JSON.parse(te.data):te.data,me.code==401&&o(),me.code!=200&&qe("error",me.message||"报错了,请重试!!!")}catch{}j(me)}).catch(te=>{te.response.status==401&&o(),j(te.response.data)})}));ze("$ajax",e),ze("$ajaxGET",t);let n=N(!0);ze("isNeedLogin",n);let s=N(!1);ze("emojiMaskState",s);const o=()=>{typeof window>"u"||(Object.keys(window.userInfoWin).length!==0&&(window.userInfoWin.uid||window.userInfoWin.uin)?n.value=!1:document.querySelector("#append_parent #fwin_login")||ajax_login())};ze("goLogin",o);const r=el();let i=Iw("detailsInfoData",()=>{});const l="https://ask.gter.net";let c=N("list");zt(()=>{m(),_t(),window.addEventListener("scroll",ae),v(),ur&&fr(),_.value=window.location.origin,a(),i.value&&f(),Dl.value++;const h=r.query;h.uniqid&&(c.value="details",Q(h.uniqid)),setTimeout(()=>{h.ispublish&&xl()},500)});const f=()=>{const h=r.query;c.value="details";let w=i.value;p.value=w.info||{},g.value=w.isanswered||0,x.value=w.iscollection||0,I.value=w.ismyself||0,B=w.token||"",W.value=w.share||{},c.value="details",b.value=[],y.value=1,Ar(),hs({uniqid:h.uniqid}),gs.value=w.seo,Er()};let u=!1;const a=()=>{window.addEventListener("popstate",function(h){const w=r.query;w.keyword&&(de.value=w.keyword),w.tid&&(He.value=w.tid),w.uniqid?(u=!0,Q(w.uniqid)):(c.value="list",gn(),Ke.value=null,gs.value={})})};let A=N({});ze("user",A);const m=()=>{let h=0,w=setInterval(()=>{Object.keys(window.userInfoWin).length!==0&&(clearInterval(w),A.value=window.userInfoWin,(window.userInfoWin.uid||window.userInfoWin.uin)&&(n.value=!1)),h++,h>=10&&clearInterval(w)},100)};let _=N("");Qi(()=>{window.removeEventListener("keydown",vr),window.removeEventListener("scroll",ae)});const C=()=>`${window.location.origin}?uniqid=${p.value.uniqid||""}`;let P=N({});const V=h=>{e("/api/user").then(w=>{if(w.code!=200)return;let j=w.data;P.value=j.count,Je(h)})};let Y=N(!1);const v=()=>{const h=localStorage.getItem("historical-Search");h?ie.value=JSON.parse(h)||[]:ie.value=[]},k=()=>{de.value&&(ie.value.unshift(de.value),ie.value=[...new Set(ie.value)],ie.value=ie.value.slice(0,10),localStorage.setItem("historical-Search",JSON.stringify(ie.value)))},M=()=>{k(),X=1,F.value=[],le=[],dn.value=0,c.value="list",Ke.value=null,gn(),Tt.value=!1,hn(["uniqid"]),hs({keyword:de.value}),J(),wt()},ne=()=>{ie.value.length!=0&&(G.value=!0)},J=()=>{setTimeout(()=>G.value=!1,300)},z=h=>{de.value=h,M()},$=()=>{de.value="",X=1,F.value=[],le=[],dn.value=0,c.value="list",gn(),Ke.value=null,wt(),hn(["keyword"])};let G=N(!1),ie=N([]),K=N(!1);const ae=()=>{const h=document.documentElement.scrollTop||document.body.scrollTop,w=document.documentElement.scrollHeight,j=document.documentElement.clientHeight;h+j>=w-40&&c.value=="list"&&wt(),h>115?K.value=!0:K.value=!1};let de=N(""),pe=N(""),F=N([]),le=[],X=1,Ie=N(0),it=N(!1),De=N(!1),Fe=N(),lt=N(0);const wt=()=>{X==0||it.value||(it.value=!0,e("/api/lists",{page:X,limit:20,keyword:de.value,type:He.value,zeroreply:lt.value}).then(h=>{if(h.code==401&&o(),h.code!=200)return;let w=h.data;w.data.forEach(j=>{j.content=j.content.replace(/<[^>]*>/g,""),j.content=j.content.replace(/ /g,"")}),F.value=F.value.concat(w.data||[]),le=le.concat(w.data||[]),Ie.value=w.count||0,pe.value=de.value||"",F.value.length>=w.count?X=0:X++,X==0&&F.value.length!=0?De.value=!0:De.value=!1,F.value.length==0?Fe.value=!0:Fe.value=!1,de.value?Y.value=!0:Y.value=!1,c.value=="details"&&wr(),F.value.length==0&&(c.value="list")}).finally(()=>it.value=!1))};let Vt=N([]),He=N(null);const _t=()=>{Vt.value=[],t("/api/common/typeList").then(h=>{if(h.code!=200)return;let w=h.data;Vt.value=w,Vt.value.unshift([{id:null,name:"All"}]),tt()})};let Ft=N(0),et=N(0);const tt=()=>{let h=document.querySelector("#pageHeader");Ft.value=h.clientHeight+10,et.value=window.innerHeight-Ft.value};let at=N(!1),p=N({}),g=N(0),x=N(0),I=N(0),B="",U=N(""),W=N({}),D=N(!1);ze("detailLoading",D),ze("detailsToken",U);const Q=(h,w,j)=>{D.value||(D.value=!0,p.value={},b.value=[],y.value=0,e("/api/details",{uniqid:h}).then(Z=>{if(Z.code!=200){c.value="list",gn(),Ke.value=null;return}let te=Z.data;te.info.uniqid=h,p.value=te.info||{},g.value=te.isanswered||0,x.value=te.iscollection||0,I.value=te.ismyself||0,B=te.token||"",U.value=te.token||"",W.value=te.share||{},_r.value=te.islike||0,c.value="details",Er(),w!=null?qs(w):oe(te.info,h),b.value=[],y.value=1,Ar(),j&&openIAnswer(),u||hs({uniqid:h}),u=!1,gs.value=te.seo,Ws.value={text:"",anonymous:0},jt(()=>L()),wr(h),at.value=!0}).finally(()=>D.value=!1))},L=()=>{document.querySelector(".details-area-box").scrollTo({top:0,behavior:"smooth"})},oe=(h,w)=>{var te;if([...F.value].length==0&&Y.value==!1&&Tt.value==!1){setTimeout(()=>oe(h,w),200);return}let Z=!1;if(F.value.forEach((me,nt)=>{me.uniqid==w&&(qs(nt),Ke.value=nt,Z=!0)}),!Z){let me="";((te=h==null?void 0:h.content)==null?void 0:te.indexOf("]*>/g,""),me=me.replace(/ /g,"");const nt={answers:h.answers,content:me,publicationdate:h.publicationdate,title:h.title,typename:h.typename,uniqid:w};F.value.unshift(nt),qs(0)}};let b=N([]),y=N(1);const E=()=>{if(n.value){o();return}e("/api/operate/like",{token:B}).then(h=>{if(h.code!=200)return;let w=h.data;_r.value=w.status||0,p.value.likenum=w.count||0,qe("success",h.message||"操作成功")})},O=(h=B,w)=>{if(n.value){o();return}e("/api/operate/collect",{token:h}).then(j=>{if(j.code!=200)return;let Z=j.data;un=1,ut.value=[],Z.type=="askquestioncollection"?(x.value=Z.status,p.value.collectionnum=Z.count):(b.value[w].iscollection=Z.status,b.value[w].collectionnum=Z.count),qe("success",j.message||"操作成功"),Z.status?P.value.collect++:P.value.collect--})};let se=N(!1),ce=N(!1),Ae=N({});const be=()=>{Ae.value.anonymous=Ae.value.anonymous==0?1:0},q=h=>{b.value[h].commentState?b.value[h].commentState=!1:b.value[h].commentState=!0,b.value[h].commentList.length==0&&b.value[h].commentnum!=0&&Oe(h)},Oe=h=>{ct(h,2).then(w=>{let j=w.data;b.value[h].commentList=b.value[h].commentList.concat(j.data),b.value[h].commentCount=j.count})},At=h=>{answerCommentLimit=1e3,ct(h,1e3).then(w=>{if(w.code!=200)return;let Z=w.data.data.slice(1),te=[...b.value[h].commentList,...Z.filter(me=>!b.value[h].commentList.find(nt=>nt.id==me.id))];b.value[h].commentList=te,b.value[h].showOneCommentState=!1})},ct=(h,w)=>new Promise((j,Z)=>{e("/api/comment/lists",{token:b.value[h].token,limit:w,childlimit:1}).then(te=>{te.code==200&&j(te)})});let Pe=N("");const Je=h=>{if(n.value){o();return}if(Object.keys(P.value).length===0){V(h);return}h=="collect"?(ut.value=[],un=1,ir()):h=="answers"?(xt.value=[],cs=1,bl()):h=="questions"&&(St.value=[],fs=1,Cl())};let ut=N([]),we=N(0),un=1,rr=!1;const ir=()=>{un==0||rr||(rr=!0,e("/api/user/collect",{limit:20,page:un}).then(h=>{if(h.code!=200)return;let w=h.data;Pe.value="collect",w.data.forEach(j=>{if(j.type=="askanswercollection"){let Z=j.data.content;j.data.content=vl(Z)}}),ut.value=ut.value.concat(w.data),we.value=w.count,ut.value.length!=w.count?un++:un=0}).finally(()=>rr=!1))},vl=h=>{var w=new DOMParser,j=w.parseFromString(h,"text/html"),Z=j.querySelector("img");return Z?``:j.body.textContent},yd=(h,w)=>{e("/api/user/deleteCollect",{token:h}).then(j=>{j.code==200&&(ut.value.splice(w,1),we.value--,P.value.collect--,qe("success",j.message||"操作成功"))})},bd=h=>{const w=h.target;w.scrollHeight-w.scrollTop>=w.clientHeight+10||ir()};let xt=N([]),yl=N(0),cs=1,lr=!1;const bl=()=>{cs==0||lr||(lr=!0,e("/api/user/answer",{limit:20,page:cs}).then(h=>{if(h.code!=200)return;let w=h.data;w.data.forEach(j=>{j.popupState=!1}),w.data.forEach(j=>{let Z=j.content;j.content=vl(Z)}),xt.value=xt.value.concat(w.data),yl.value=w.count,xt.value.length!=w.count?cs++:cs=0,Pe.value="answers"}).finally(()=>lr=!1))},wd=h=>{const w=h.target;w.scrollHeight-w.scrollTop>=w.clientHeight+10||bl()};let us=null;const wl=h=>{xt.value[h].popupState=!0,us==h?(xt.value[h].popupState=!1,us=null):(xt.value[h].popupState=!0,us!=null&&(xt.value[us].popupState=!1),us=h)},_d=(h,w,j)=>{e("/api/publish/changeAnonymous",{token:h,anonymous:w}).then(Z=>{Z.code==200&&(Z.data,xt.value[j].anonymous=w,wl(j),qe("success",Z.message||"操作成功"))})};let St=N([]),_l=N(0),fs=0,ar=!1;const Cl=()=>{fs==0||ar||(ar=!0,e("/api/user/questions",{limit:20,page:fs}).then(h=>{if(h.code!=200)return;let w=h.data;St.value=St.value.concat(w.data),_l.value=w.count,Pe.value="questions",St.value.length!=w.count?fs++:fs=0}).finally(()=>ar=!1))},Cd=h=>{const w=h.target;w.scrollHeight-w.scrollTop>=w.clientHeight+10||Cl()};let ds=null;const El=h=>{St.value[h].popupState=!0,ds==h?(St.value[h].popupState=!1,ds=null):(St.value[h].popupState=!0,ds!=null&&(St.value[ds].popupState=!1),ds=h)},Ed=(h,w,j)=>{e("/api/publish/changeAnonymous",{token:h,anonymous:w}).then(Z=>{Z.code==200&&(St.value[j].anonymous=w,El(j),qe("success",Z.message||"操作成功"))})};let Ks=N(0);const cr=h=>Ks.value=h;let kl=N([]),fn=N({token:"",title:"",content:"",tags:"",tid:"",anonymous:0});const xl=()=>{if(n.value){o();return}hn(["ispublish"]),e("/api/publish/questions").then(h=>{if(h.code!=200)return;let w=h.data;fn.value.token=w.token,kl.value=w.typeList||[],cr(1)})},kd=h=>{fn.value.tid=h,cr(2)},xd=()=>{fn.value.anonymous=fn.value.anonymous==0?1:0},Sd=()=>{if(n.value){o();return}e("/api/publish/questionsSubmit",fn.value).then(h=>{if(h.code==200){P.value.questions++,Ks.value=0,fn.value={token:"",title:"",content:"",tags:"",tid:"",anonymous:0},qe("success",h.message||"操作成功");let w=h.data;Q(w.uniqid);return}qe("error",h.message||"刷新重试!!!")})};let Ke=N(null);const qs=h=>{Ke.value=h,setTimeout(()=>fr(),350)};let ur=!1;const fr=()=>{if(typeof document>"u"){ur=!0;return}let h=document.querySelector(".list-box"),j=h.querySelector(`.item${Ke.value}`).offsetTop-et.value/2+136;h.scrollTo({top:j,behavior:"smooth"}),ur=!1},Td=()=>{const h=c.value;let w="",j="",Z="";return h=="list"?(w="1200px",j="0 auto"):(w="calc((100vw - 1200px) / 2 + 512px)",j="initial"),{width:w,margin:j,height:Z}};let dn=N(0),An=0,As=0;const Rd=(h,w,j)=>{h==0&&(An=0,As=0);const Z=c.value;let te={};return Z=="list"?An<=As?(te.top=An+"px",An+=w==""?107:137,te.left=0):(te.top=As+"px",As+=w==""?107:137,te.left="649px"):(te.position="relative",j?(An+=j=="vote"?170:137,te.height=j=="vote"?"170px":"137px"):(An+=w==""?107:137,te.height=w==""?"107px":"137px"),te.width="100%",te.paddingLeft="calc((100vw - 1210px) / 2)"),h+1==F.value.length&&(dn.value=Math.max(An,As)),te},Bd=(h,w)=>{const j=c.value;let Z={};return j=="list"||(Z.width="calc(50vw - 88px)",Z.height=`calc(100vh - ${F.value.length*128}px - 268px)`,Z.paddingLeft="calc((100vw - 1200px) / 2)",Z.borderRight="1px solid #ebebeb",Z.background="#fff"),Z},Id=()=>{const h=c.value;let w={};return h=="list"?w.overflow="visible":w.height=et.value+"px",w},Sl=(h=new Date,w=!0)=>{h=h||null;var j=new Date(h);j=j.getTime();var Z=1e3*60,te=Z*60,me=te*24,nt=new Date().getTime(),Mn=nt-j,Rt;if(Mn<0)return"刚刚";var mn=Mn/me,Dn=Mn/(te+1),Ul=Mn/Z;if(mn>=7){let ft=new Date(j),jl=ft.getFullYear()+"-",Ql=(ft.getMonth()+1<10?"0"+(ft.getMonth()+1):ft.getMonth()+1)+"-",Kl=(ft.getDate()<10?"0"+ft.getDate():ft.getDate())+" ",tA=(ft.getHours()<10?"0"+ft.getHours():ft.getHours())+":",nA=ft.getMinutes()<10?"0"+ft.getMinutes():ft.getMinutes();w?Rt=""+jl+Ql+Kl+tA+nA:Rt=""+jl+Ql+Kl}else mn>=1?Rt=""+Math.round(mn)+"天前":Dn>=1?Rt=""+Math.round(Dn)+"小时前":Ul>=1?Rt=""+Math.round(Ul)+"分钟前":Rt="刚刚";return Rt};ze("handleDate",Sl);let dr=N(!1),zs=N(!1);const Od=()=>{dr.value=!0,zs.value=!0,Tl(B)},Ar=()=>{b.value.forEach(h=>{h.transmitState=!1}),dr.value=!1,zs.value=!1},Pd=(h,w)=>{b.value[h].transmitState=!0,zs.value=!0,Tl(b.value[h].token)},Tl=h=>{t("/api/operate/share?token="+h)},Ld=()=>{if(hn(["uniqid"]),Tt.value){Ol();return}c.value="list",gn(),Ke.value=null,gs.value={},F.value=JSON.parse(JSON.stringify(le))},Nd=h=>{const w=h.target;w.scrollHeight-w.scrollTop>=w.clientHeight+40||Tt.value||wt()},Md=(h,w)=>{const j=(h.clipboardData||h.originalEvent.clipboardData).items;for(const Z of j)if(Z.type.indexOf("image")===0){h.preventDefault(),qe("warning","上传图片中");const te=Z.getAsFile(),me=new FileReader;me.onload=nt=>{const Mn=nt.target.result;Rl(Mn).then(Rt=>{let mn=null;w=="you"?mn=document.querySelector(".your-answer-textarea"):mn=document.querySelector(".question-textarea");let Dn=document.createElement("img");Dn.setAttribute("src",Rt.url),Dn.setAttribute("data-aid",Rt.aid),mn.appendChild(Dn),w=="you"?Bl():gr(),qe("success","上传成功")})},me.readAsDataURL(te)}},Rl=h=>new Promise((w,j)=>{D.value=!0,e("/api/common/upload",{data:h}).then(Z=>{if(Z.code!=200){qe("error",Z.message||"上传失败");return}let te=Z.data;w(te)}).finally(()=>D.value=!1)});ze("uploadImg",Rl);let hr=N(!1),pr=N(!0);const gr=()=>{document.querySelector(".question-textarea").innerHTML?hr.value=!1:hr.value=!0},Bl=()=>{document.querySelector(".your-answer-textarea").innerHTML?pr.value=!1:pr.value=!0};let Nn=N({});const qe=(h,w)=>{Nn.value.state=!0,Nn.value.type=h,Nn.value.text=w};ze("handleMsg",qe);const Dd=()=>(Fd(),c?`box-item-${Nn.value.type}`:"");let Il=null;const Fd=()=>{clearTimeout(Il),Il=setTimeout(()=>{Nn.value.state=!1},1e3)};let Ys=h=>{navigator.clipboard?Ys=()=>{navigator.clipboard.writeText(h),qe("success","复制成功")}:Ys=()=>{var w=document.createElement("input");w.value=h,document.body.appendChild(w),w.select(),document.execCommand("copy"),document.body.removeChild(w),qe("success","复制成功")},Ys()};const hs=(h={})=>{if(typeof window>"u")return;let w=new URLSearchParams(window.location.search);for(const te in h)w.set(te,h[te]);window.location.pathname.indexOf("index.html")==-1?window.history.pushState({},"",`${window.location.pathname}index.html?${w}`):window.history.pushState({},"",`${window.location.pathname}?${w}`);let j=window.location,Z=j.pathname+j.search;window._hmt&&window._hmt.push(["_trackPageview",Z]),window._czc&&window._czc.push(["_trackPageview",Z])},hn=(h=[])=>{if(typeof window>"u")return;let w=new URLSearchParams(window.location.search);h.forEach(j=>{w.delete(j)}),window.history.pushState({},"",`${window.location.pathname}?${w}`)};let Tt=N(!1),mr=N([]),Ht={};const Hd=h=>{if(!h){qe("error","没有找到相关提问");return}hn(["keyword"]),Tt.value||(Ht={total:Ie.value,keywordText:pe.value,isSearchMode:Y.value,inTheEndState:De.value,type:c.value,pitchIndex:Ke.value,listlist:JSON.parse(JSON.stringify(F.value))},Y.value=!1,De.value=!1,de.value="",F.value=JSON.parse(JSON.stringify(mr.value)),Tt.value=!0,Ke.value=null),Q(h),Pe.value=""},Ol=()=>{if(mr.value=JSON.parse(JSON.stringify(F.value)),Y.value=Ht.isSearchMode,pe.value=Ht.keywordText,de.value=Ht.keywordText,Ie.value=Ht.total,c.value=Ht.type,Ke.value=Ht.pitchIndex,De.value=Ht.inTheEndState,F.value=JSON.parse(JSON.stringify(Ht.listlist)),Tt.value=!1,Ke.value!==null&&Ke.value!==void 0){let h=F.value[Ke.value].uniqid;Q(h)}},Ud=h=>{const w=h.target;w.scrollHeight-w.scrollTop,w.clientHeight};let Js=N("");const Pl=h=>{if(h.target.tagName==="IMG"){var w=h.target.getAttribute("src");Js.value=w,window.addEventListener("keydown",vr)}};ze("handleAnswerText",Pl);const vr=h=>{h.key==="Escape"&&(Js.value="",window.removeEventListener("keydown",vr))},jd=h=>{He.value=h,X=1,F.value=[],le=[],dn.value=0,Tt.value=!1,c.value="list",gn(),Ke.value=null,h!=null?(hs({tid:h}),hn(["uniqid"])):hn(["tid","uniqid"]),wt(),dn.value=0},Ll=h=>{yr=h,br.value=!0};ze("handleMenuState",Ll);let yr="";const Qd=["广告","辱骂","重复发送","不良信息","其他"];let pn=N([]),br=N(!1),Nl=N("");const Kd=h=>{const w=pn.value.indexOf(h);w===-1?pn.value.push(h):pn.value.splice(w,1)},qd=()=>{pn.value.push(Nl.value),e("/api/operate/report",{message:pn.value,token:yr}).then(h=>{pn.value=[],yr="",br.value=!1,qe("success","举报成功")})};zt(()=>{cu(()=>{Ks.value||Pe.value||ce.value||se.value||Js.value?document.body.style.overflow="hidden":document.body.style.overflow="auto"})});let ps=[],Ml=1;const zd=h=>{e("/api/details/relatedlist",{page:Ml,limit:20}).then(w=>{if(w.code!=200)return;let j={offer:"Offer",mj:"面经",vote:"投票",thread:"帖子"},Z=w.data;Z.forEach(te=>{te.typename=j[te.type],te.isrecom=!0}),ps=ps.concat(Z),Ml++,wr(h)})},wr=h=>{if(Tt.value)return;let w=Math.ceil(le.length/5);if(ps.length{h&&Z.forEach((me,nt)=>{me.uniqid==h&&(Ke.value=nt,fr())})})},Yd=["①","②","③"];let gs=N({}),Dl=N(0),_r=N(0);try{const h=r.query;h.keyword&&(de.value=h.keyword),h.tid&&(He.value=h.tid),await e("/api/lists",{page:X,limit:20,keyword:de.value,type:He.value}).then(w=>{if(w.code!=200)return;let j=w.data;j.data.forEach(Z=>{Z.content=Z.content.replace(/<[^>]*>/g,""),Z.content=Z.content.replace(/ /g,"")}),F.value=j.data,le=j.data,Ie.value=j.count||0,pe.value=de.value||"",F.value.length!=j.count?X++:X=0,X==0&&F.value.length!=0?De.value=!0:De.value=!1,F.value.length==0?Fe.value=!0:Fe.value=!1,de.value?Y.value=!0:Y.value=!1,jt(()=>{F.value.length==0&&(c.value="list")})})}catch(h){console.error(h)}Nt(Dl,(h,w)=>{h===2&&r.query});const Jd=h=>{let w=`./index.html?uniqid=${h}`,j=r.query;for(const Z in j)Z!="uniqid"&&(w+=`&${Z}=${j[Z]}`);return w},Wd=()=>{window.location.href=window.location.origin+window.location.pathname};let Ws=N({text:"",anonymous:0});const Vd=()=>{Ws.value.anonymous=Ws.value.anonymous?0:1},Gd=h=>{if(n.value){o();return}let w=F.value[h];Ae.value={title:w.title,content:w.content,token:w.token,uniqid:w.uniqid,anonymous:0,index:h},se.value=!0,jt(()=>gr())};let Cr=N(!1);const Xd=()=>{p.value.uin>0&&(Cr.value=!Cr.value)},Zd=h=>{if(h&&typeof messagePrivateItem=="function"){messagePrivateItem({uin:h});return}else Hl(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${h}`)},Fl=h=>{Hl(`https://bbs.gter.net/home.php?mod=space&uid=${h}`)};ze("TAHomePag",Fl);const Hl=h=>{const w=document.createElement("a");w.href=h,w.target="_blank",w.click()},Er=()=>{const h=document.querySelector("body .index-footer");h?h.style.display="none":setTimeout(()=>Er(),1e3)},gn=()=>{const h=document.querySelector("body .index-footer");h?h.style.display="block":setTimeout(()=>gn(),1e3)},$d=()=>{lt.value=lt.value==0?1:0,X=1,F.value=[],le=[],dn.value=0,wt()},eA=N([]),kr=N(null);return{handleUpdateAnswers:h=>{F.value.forEach(w=>{w.uniqid==p.value.uniqid&&(w.answers=h)}),le.forEach(w=>{w.uniqid==p.value.uniqid&&(w.answers=h)})},commentListRef:kr,closeEmojiMask:()=>{kr.value&&kr.value.closeEmoji()},emojiMaskState:s,isCommentList:at,commentList:eA,islike:_r,handleLookOnly:$d,zeroreply:lt,replaceNumberObj:Yd,closeMyModel:Ol,myModelList:mr,myModelState:Tt,listHeight:dn,bottomTpsStyle:Bd,TAHomePage:Fl,sendMessage:Zd,avatarState:Cr,openUserInfo:Xd,isNeedLogin:n,handleInputYou:Bl,openListIAnswer:Gd,isListEmptyState:Fe,cutYourAnswerAnonymous:Vd,yourAnswer:Ws,handleLogo:Wd,inTheEndState:De,setItemUrl:Jd,seo:gs,originUrl:_,handleMenuState:Ll,reasonList:Qd,checkList:pn,alertShow:br,alertText:Nl,selectRadio:Kd,alertSubmit:qd,cutType:jd,dialogSrc:Js,answerPage:y,handleDetailsScroll:Ud,replaceState:hs,copyText:Ys,boxClass:Dd,questionPlaceholderState:hr,yourAnswerPlaceholderState:pr,handleInput:gr,handlePaste:Md,itemStyle:Rd,listStyle:Td,listBoxStyle:Id,myType:Pe,type:c,pitchIndex:Ke,cut:qs,list:F,keyword:de,keywordText:pe,getList:wt,total:Ie,typeList:Vt,typePitch:He,getDetails:Q,detailsInfo:p,detailsIsanswered:g,detailsIscollection:x,detailsIsmyself:I,detailShare:W,detailLoading:D,answerList:b,operateLike:E,operateCollect:O,IAnswerState:se,IAnswerEditState:ce,IAnswerInfo:Ae,amendIAnswer:be,openCommentState:q,handleAllComment:At,myCollectionList:ut,myCollectionCount:we,myQuestionsList:St,myQuestionsCount:_l,myAnswerList:xt,myAnswerCount:yl,cutAnswerPopupState:wl,handleDate:Sl,handleCollectionScroll:bd,handleAnswersScroll:wd,handleQuestionsScroll:Cd,cancelCollection:yd,getMyCollection:ir,questionsSetp:Ks,questionsObj:fn,cutAnonymous:xd,cutQuestionsSetp:cr,cutQuestionsPopupState:El,questionsTypeList:kl,postingIssue:Sd,choosingTheme:kd,handleMy:Je,changeAnonymous:_d,changeAnonymousQuestions:Ed,pageHeaderHeight:Ft,pageListHeight:et,questionsTransmitState:dr,questionsTransmitMaskState:zs,closeAllTransmitState:Ar,closeTransmitState:Od,handleAnswerTransmitList:Pd,closeDetailMode:Ld,tabListFixeState:K,handleListScroll:Nd,historicalSearchState:G,historicalSearchList:ie,searchFocus:ne,searchBlur:J,searchClick:M,handleClickHistoricalItem:z,handleClickClear:$,isSearchMode:Y,questionsInit:xl,myCount:P,msg:Nn,myOpenDetails:Hd,handleAnswerText:Pl,getCurrentUrl:C,loading:it}}},dC=d("div",{id:"append_parent"},null,-1),AC=d("div",{id:"ajaxwaitid"},null,-1),hC={class:"",id:"answer-app"},pC={class:"flexacenter",id:"pageHeader"},gC={class:"flexacenter top"},mC={href:"./index.html"},vC={class:"right flexacenter flex1"},yC={class:"searchInput flexacenter"},bC={key:0,class:"clear-search flexacenter"},wC=d("div",{class:"halving-line"},null,-1),_C=d("div",{class:"history-title"},"历史搜索",-1),CC={class:"history-list"},EC=["onClick"],kC={class:"btn-list flexacenter"},xC=d("img",{class:"add-icon",src:Z_},null,-1),SC={class:"tab-list flexacenter"},TC={key:0,class:"halving-line"},RC=["onClick"],BC={class:"flexacenter"},IC=d("div",{class:"ellipsis"},"我的收藏/提问",-1),OC=d("img",{class:"search-keyword-cross",src:hd},null,-1),PC=[IC,OC],LC={class:"ellipsis"},NC=d("img",{class:"search-keyword-cross",src:hd},null,-1),MC=["href"],DC=d("img",{class:"dot",src:pd},null,-1),FC={class:"issue-title flexcenter"},HC=d("div",{class:"recommend flexcenter"},"推荐阅读",-1),UC={class:"issue ellipsis flex1"},jC={key:0,class:"answer ellipsis"},QC={key:1,class:"answer",style:{height:"auto"}},KC={key:2,class:"answer ellipsis flexacenter"},qC={key:0,class:"value-value"},zC={key:1,class:"value-value"},YC={key:2,class:"value-value"},JC={key:3,class:"value-value"},WC={class:"bottom flexacenter"},VC={class:"typename flexcenter"},GC=["href","onClick"],XC=d("img",{class:"dot",src:pd},null,-1),ZC={class:"issue-title flexcenter"},$C={key:0,class:"hot-icon",src:$_},eE={class:"issue ellipsis flex1"},tE={key:0,class:"answer ellipsis"},nE={class:"bottom flexacenter"},sE={key:0,class:"typename flexcenter"},oE={key:1},rE={class:"flexacenter"},iE={class:"quantity"},lE={class:"amount flexacenter"},aE=d("img",{class:"amount-icon",src:vi,alt:""},null,-1),cE={key:2,class:"empty-box flexcenter"},uE=Lu('
',2),fE={key:0,class:"empty-hint"},dE={key:1,class:"empty-hint"},AE={class:"details-box flexflex"},hE={key:0,class:"loading-bj flexcenter"},pE=d("svg",{t:"1642133548066",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2597",width:"200",height:"200"},[d("path",{d:"M512 249.5c-22.5 0-37.5-15-37.5-37.5V99.5c0-22.5 15-37.5 37.5-37.5s37.5 15 37.5 37.5V212c0 22.5-15 37.5-37.5 37.5z m0 712.5c-22.5 0-37.5-15-37.5-37.5V812c0-22.5 15-37.5 37.5-37.5s37.5 15 37.5 37.5v112.5c0 22.5-15 37.5-37.5 37.5zM212 549.5H99.5C77 549.5 62 534.5 62 512s15-37.5 37.5-37.5H212c22.5 0 37.5 15 37.5 37.5s-15 37.5-37.5 37.5z m712.5 0H812c-22.5 0-37.5-15-37.5-37.5s15-37.5 37.5-37.5h112.5c22.5 0 37.5 15 37.5 37.5s-15 37.5-37.5 37.5z m-153.75-150c-11.25 0-26.25-7.5-33.75-18.75-11.25-18.75-3.75-41.25 15-52.5L849.5 272c18.75-11.25 41.25-3.75 52.5 15s3.75 41.25-15 52.5l-97.5 56.25c-3.75 3.75-11.25 3.75-18.75 3.75z m-615 356.25c-11.25 0-26.25-7.5-33.75-18.75-11.25-18.75-3.75-41.25 15-52.5l97.5-56.25c18.75-11.25 41.25-3.75 52.5 15s3.75 41.25-15 52.5L174.5 752c-7.5 3.75-15 3.75-18.75 3.75z m506.25-465c-7.5 0-11.25 0-18.75-3.75-18.75-11.25-22.5-33.75-15-52.5L684.5 137c11.25-18.75 33.75-22.5 52.5-15 18.75 11.25 22.5 33.75 15 52.5L695.75 272c-7.5 11.25-22.5 18.75-33.75 18.75z m-356.25 615c-7.5 0-11.25 0-18.75-3.75-18.75-11.25-22.5-33.75-15-52.5l56.25-97.5c11.25-15 33.75-22.5 52.5-11.25s22.5 33.75 15 52.5L339.5 887c-7.5 11.25-22.5 18.75-33.75 18.75z m-52.5-506.25c-7.5 0-15 0-18.75-3.75L137 339.5c-18.75-11.25-26.25-33.75-15-52.5s33.75-22.5 52.5-15l97.5 56.25c18.75 11.25 22.5 33.75 11.25 52.5-3.75 11.25-18.75 18.75-30 18.75z m615 356.25c-7.5 0-11.25 0-18.75-3.75L752 695.75c-18.75-11.25-22.5-33.75-15-52.5 11.25-18.75 33.75-22.5 52.5-15L887 684.5c18.75 11.25 22.5 33.75 15 52.5-7.5 11.25-18.75 18.75-33.75 18.75zM362 290.75c-11.25 0-26.25-7.5-33.75-18.75L272 174.5c-7.5-18.75-3.75-41.25 15-52.5s41.25-3.75 52.5 15l56.25 97.5c7.5 18.75 3.75 41.25-15 48.75-7.5 3.75-11.25 7.5-18.75 7.5z m356.25 615c-11.25 0-26.25-7.5-33.75-18.75l-56.25-97.5c-11.25-18.75-3.75-41.25 15-52.5s41.25-3.75 52.5 15L752 849.5c11.25 18.75 3.75 41.25-15 52.5-7.5 3.75-11.25 3.75-18.75 3.75z","p-id":"2598",fill:"#26d79f"})],-1),gE=[pE],mE={class:"close-box"},vE=d("img",{class:"close-icon",src:eC},null,-1),yE=d("img",{class:"details-cross-icon",src:Yn},null,-1),bE=[vE,yE],wE={class:"details-issue"},_E={key:0,class:"label"},CE={class:"titletitle"},EE=["innerHTML"],kE={class:"info-box flexacenter"},xE=["src"],SE={class:"user-name"},TE={key:1,class:"avatar-box flexflex"},RE=d("img",{class:"avatar-icon",src:cl},null,-1),BE=d("img",{class:"avatar-icon",src:ul},null,-1),IE=d("div",{class:"avatar-mask"},null,-1),OE={class:"time"},PE={class:"operate-item flexacenter",style:{cursor:"auto"}},LE=d("img",{class:"operate-icon operate-collect-icon",style:{width:"13px",height:"8px"},src:tC},null,-1),NE={class:"operate-box flexacenter"},ME={class:"operate-list flexacenter"},DE={key:0,class:"operate-icon operate-like-icon",src:nC},FE={key:1,class:"operate-icon operate-like-icon",src:fl},HE={key:0,class:"operate-icon operate-collect-icon",src:sC},UE={key:1,class:"operate-icon operate-collect-icon",src:oC},jE=d("img",{class:"operate-icon operate-transmit-icon",src:rC},null,-1),QE={class:"transmit-left transmit-web"},KE=d("div",{class:"transmit-title"},"转发网页版",-1),qE={class:"transmit-content"},zE={class:"transmit-headline"},YE={class:"transmit-url"},JE={class:"transmit-right transmit-mini"},WE=d("div",{class:"transmit-title"},"转发小程序版",-1),VE={class:"transmit-content flexcenter"},GE=["src"],XE=d("div",{class:"flexcenter"},[d("img",{class:"give-sweep",src:md}),Se(" 扫码转发该问答 ")],-1),ZE={class:"mobile-phone-check flexcenter"},$E=d("img",{class:"QRCode-icon",src:iC,alt:""},null,-1),ek={class:"QRCode-pop flexcenter"},tk=["src"],nk=d("div",{class:"QRCode-hint flexacenter"},[d("img",{class:"QRCode-img",src:md}),Se(" 微信扫一扫 ")],-1),sk={key:0,class:"popover-mask my-popover flexcenter"},ok={class:"popover-box flexflex"},rk={class:"tab-list flexcenter"},ik={class:"quantity"},lk=d("div",{class:"long-string"},null,-1),ak={class:"quantity"},ck={key:0,class:"empty-box flexcenter"},uk=Lu('
暂无内容
',3),fk=[uk],dk=["onClick"],Ak=d("div",{class:"icon a flexcenter"},"A",-1),hk={class:"centre flexflex flex1"},pk=["innerHTML"],gk={class:"text ellipsis"},mk={class:"delete-box flexacenter"},vk=["onClick"],yk=d("div",{class:"icon q flexcenter"},"Q",-1),bk={class:"centre flexflex flex1"},wk={class:"titletitle ellipsis"},_k={class:"text ellipsis"},Ck={class:"delete-box flexacenter"},Ek=["onClick"],kk=["onClick"],xk=d("div",{class:"icon a flexcenter"},"A",-1),Sk={class:"centre flexflex flex1"},Tk={class:"info flexacenter"},Rk={class:"name"},Bk={class:"time"},Ik=["innerHTML"],Ok={class:"text ellipsis"},Pk={class:"operate-box flexacenter"},Lk=["onClick"],Nk={class:"text"},Mk=d("img",{class:"arrows",src:vd},null,-1),Dk={key:0,class:"state-popup flexflex"},Fk=["onClick"],Hk=d("div",{class:""},"公开发表",-1),Uk=d("img",{class:"state-popup-icon",src:or},null,-1),jk=[Hk,Uk],Qk=["onClick"],Kk=d("div",{class:""},"匿名发表",-1),qk=d("img",{class:"state-popup-icon",src:or},null,-1),zk=[Kk,qk],Yk=["onClick"],Jk=["onClick"],Wk=d("div",{class:"icon q flexcenter"},"Q",-1),Vk={class:"centre flexflex flex1"},Gk={class:"info flexacenter"},Xk={class:"name"},Zk={class:"time"},$k={class:"titletitle ellipsis"},ex={class:"text flexacenter"},tx={key:0,class:"new-answer flexacenter"},nx=d("div",{class:"long-string"},null,-1),sx={class:"operate-box flexacenter"},ox=["onClick"],rx={class:"text"},ix=d("img",{class:"arrows",src:vd},null,-1),lx={key:0,class:"state-popup flexflex"},ax=["onClick"],cx=d("div",{class:""},"公开发表",-1),ux=d("img",{class:"state-popup-icon",src:or},null,-1),fx=[cx,ux],dx=["onClick"],Ax=d("div",{class:""},"匿名发表",-1),hx=d("img",{class:"state-popup-icon",src:or},null,-1),px=[Ax,hx],gx=d("div",{class:"titletitle"},"选择提问所属主题",-1),mx={class:"theme-list flexflex"},vx=["onClick"],yx=d("div",{class:"issue-bj"},[d("svg",{version:"1.1","xmlns:xlink":"http://www.w3.org/1999/xlink",width:"727px",height:"526px",xmlns:"http://www.w3.org/2000/svg"},[d("defs",null,[d("mask",{fill:"white",id:"clip598"},[d("path",{d:"M 1 510 L 0.999871317552845 19.7966825002877 C 3.4185524978235 21.8045610459778 6.54626184609054 23 10 23 C 17.84 23 24 16.8399999999999 24 9 C 24 5.54542319048073 22.8039804094246 2.41703354202741 20.7929431454809 0 L 711 0 C 716.6 0 721 4.40000000000009 721 10 L 721 510 C 721 515.6 716.6 520 711 520 L 11 520 C 5.39999999999998 520 1 515.6 1 510 Z ","fill-rule":"evenodd"})]),d("filter",{x:"1126px",y:"8991px",width:"727px",height:"526px",filterUnits:"userSpaceOnUse",id:"filter599"},[d("feOffset",{dx:"0",dy:"0",in:"SourceAlpha",result:"shadowOffsetInner"}),d("feGaussianBlur",{stdDeviation:"1.5",in:"shadowOffsetInner",result:"shadowGaussian"}),d("feComposite",{in2:"shadowGaussian",operator:"atop",in:"SourceAlpha",result:"shadowComposite"}),d("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.117647058823529 0 ",in:"shadowComposite"})]),d("g",{id:"widget600"},[d("path",{d:"M 1 510 L 0.999871317552845 19.7966825002877 C 3.4185524978235 21.8045610459778 6.54626184609054 23 10 23 C 17.84 23 24 16.8399999999999 24 9 C 24 5.54542319048073 22.8039804094246 2.41703354202741 20.7929431454809 0 L 711 0 C 716.6 0 721 4.40000000000009 721 10 L 721 510 C 721 515.6 716.6 520 711 520 L 11 520 C 5.39999999999998 520 1 515.6 1 510 Z ","fill-rule":"nonzero",fill:"#ffffff",stroke:"none",transform:"matrix(1 0 0 1 1129 8994 )"}),d("path",{d:"M 1 510 L 0.999871317552845 19.7966825002877 C 3.4185524978235 21.8045610459778 6.54626184609054 23 10 23 C 17.84 23 24 16.8399999999999 24 9 C 24 5.54542319048073 22.8039804094246 2.41703354202741 20.7929431454809 0 L 711 0 C 716.6 0 721 4.40000000000009 721 10 L 721 510 C 721 515.6 716.6 520 711 520 L 11 520 C 5.39999999999998 520 1 515.6 1 510 Z ","stroke-width":"2",stroke:"#ebebeb",fill:"none",transform:"matrix(1 0 0 1 1129 8994 )",mask:"url(#clip598)"})])]),d("g",{transform:"matrix(1 0 0 1 -1126 -8991 )"},[d("use",{"xlink:href":"#widget600",filter:"url(#filter599)"}),d("use",{"xlink:href":"#widget600"})])])],-1),bx=d("div",{class:"flexcenter q"},"Q",-1),wx={class:"issue-input"},_x={class:"issue-bottom flexacenter"},Cx={key:0,class:"option-icon",src:aC},Ex={key:1,class:"option-icon",src:cC},kx=d("div",{class:"",style:{color:"#aaa"}},"(发布后只能修改是否匿名)",-1),xx={class:"msg-container"},Sx={class:"detail-image flexcenter"},Tx=["src"],Rx={class:"alert-form"},Bx={class:"comments reports"},Ix={class:"head"},Ox=d("span",{style:{display:"flex","align-items":"center"}},[d("img",{style:{width:"25px","margin-right":"7px"},src:"//app.gter.net/image/gter/offer/img/exclamationpoint.png?v=4.2.08_331040000"}),Se(" 举报投诉 ")],-1),Px={class:"form"},Lx={class:"radio-area flexacenter"},Nx=["onClick"],Mx=d("div",{class:"radio-area-frame"},null,-1),Dx={class:"text-box"},Fx={class:"text-num"},Hx={class:"footer"},Ux=["disabled"];function jx(e,t,n,s,o,r){const i=i1,l=l1,c=a1,f=c1,u=Rw;return S(),T(he,null,[dC,AC,d("div",null,[_e(c,null,{default:Pt(()=>[_e(i,null,{default:Pt(()=>[Se(ee(`${s.seo.title||"问答"} - 寄托天下出国留学网`),1)]),_:1}),_e(l,{name:"keyword",content:s.seo.keyword},null,8,["content"]),_e(l,{name:"description",content:s.seo.description},null,8,["content"])]),_:1}),d("div",hC,[d("header",pC,[d("div",gC,[d("a",mC,[d("img",{class:"logo",onClick:t[0]||(t[0]=(...a)=>s.handleLogo&&s.handleLogo(...a)),alt:"寄托问答",src:V_})]),d("div",vC,[d("div",yC,[gt(d("input",{class:"input flex1",placeholder:"输入搜索关键词","onUpdate:modelValue":t[1]||(t[1]=a=>s.keyword=a),onKeydown:t[2]||(t[2]=Cp(a=>s.searchClick(),["enter"])),onFocus:t[3]||(t[3]=(...a)=>s.searchFocus&&s.searchFocus(...a)),onBlur:t[4]||(t[4]=(...a)=>s.searchBlur&&s.searchBlur(...a))},null,544),[[on,s.keyword]]),s.isSearchMode?(S(),T("div",bC,[d("img",{class:"cross-circle-black",onClick:t[5]||(t[5]=a=>s.handleClickClear()),src:G_}),wC])):re("",!0),d("img",{class:"input-icon",src:X_,onClick:t[6]||(t[6]=a=>s.searchClick())}),s.historicalSearchState?(S(),T("div",{key:1,class:"history-box",onClick:t[7]||(t[7]=ke(()=>{},["stop"]))},[_C,d("div",CC,[(S(!0),T(he,null,Ye(s.historicalSearchList,(a,A)=>(S(),T("div",{class:"history-item ellipsis",key:A,onClick:ke(m=>s.handleClickHistoricalItem(a),["stop"])},ee(a),9,EC))),128))])])):re("",!0)]),d("div",kC,[d("div",{class:"item flex1",onClick:t[8]||(t[8]=a=>s.handleMy("collect"))},"我的收藏"),d("div",{class:"item flex1",onClick:t[9]||(t[9]=a=>s.handleMy("questions"))},"我的提问")]),d("div",{class:"add-btn flexcenter",onClick:t[10]||(t[10]=a=>s.questionsInit())},[xC,Se(" 我要提问 ")])])]),d("div",{class:Ee(["tab-box flexcenter",{"tab-list-fixed":s.tabListFixeState}])},[d("div",SC,[(S(!0),T(he,null,Ye(s.typeList,(a,A)=>(S(),T(he,{key:A},[A!==0?(S(),T("div",TC,"|")):re("",!0),(S(!0),T(he,null,Ye(a,m=>(S(),T("div",{class:Ee(["item flexcenter",{pitch:s.typePitch==m.id}]),key:m,onClick:_=>s.cutType(m.id)},ee(m.name),11,RC))),128))],64))),128))])],2)]),d("div",{class:Ee(["main flexflex",{"mode-list":s.type=="list"}])},[d("div",{class:"list-box",onScroll:t[15]||(t[15]=(...a)=>s.handleListScroll&&s.handleListScroll(...a)),style:Ze({paddingRight:s.type=="list"?0:"15px"})},[d("div",{class:"main-header",style:Ze({paddingLeft:s.type=="list"?0:"calc((100vw - 1210px) / 2)"})},[d("div",BC,[s.myModelState?(S(),T("div",{key:0,class:"search-keyword flexacenter",onClick:t[11]||(t[11]=a=>s.closeMyModel())},PC)):s.isSearchMode?(S(),T(he,{key:1},[d("div",{class:"search-keyword flexacenter",onClick:t[12]||(t[12]=a=>s.handleClickClear())},[d("div",LC,ee(s.keywordText),1),NC]),d("div",{class:"total grid-item",onClick:t[13]||(t[13]=(...a)=>s.cut&&s.cut(...a))},"共 "+ee(s.total)+" 条搜索结果",1)],64)):(S(),T("div",{key:2,class:"total grid-item",onClick:t[14]||(t[14]=(...a)=>s.cut&&s.cut(...a))},"共 "+ee(s.total)+" 条问答",1))])],4),d("div",{class:"list",id:"list",style:Ze([s.listStyle(),{height:s.listHeight+"px"}])},[(S(!0),T(he,null,Ye(s.list,(a,A)=>(S(),T(he,{key:a.uniqid},[a.isrecom&&s.type!="list"?(S(),T("a",{key:0,class:Ee(["item grid-item flexflex",{pitch:A===s.pitchIndex,upLevel:A===s.pitchIndex-1}]),style:Ze(s.itemStyle(A,a.content,a.type)),target:"_blank",href:a.url},[DC,d("div",{class:"content",style:Ze({width:s.type=="list"?"531px":"430px"})},[d("div",FC,[HC,d("div",UC,ee(a.title),1)]),a.type=="thread"?(S(),T(he,{key:0},[a.message?(S(),T("div",jC,ee(a.message),1)):re("",!0)],64)):a.type=="vote"?(S(),T("div",QC,[(S(!0),T(he,null,Ye(a.option.slice(0,2),(m,_)=>(S(),T("div",{key:_},ee(s.replaceNumberObj[_]+m),1))),128)),d("div",null,ee(s.replaceNumberObj[2])+" …",1)])):(S(),T("div",KC,[a.profession||a.professional?(S(),T("div",qC,ee(a.profession||a.professional),1)):re("",!0),a.project||a.degree?(S(),T("div",zC,ee(a.project||a.degree),1)):re("",!0),a.interviewtime||a.semester?(S(),T("div",YC,ee(a.interviewtime||a.semester),1)):re("",!0),a.apply_results?(S(),T("div",JC,ee(a.apply_results),1)):re("",!0)])),d("div",WC,[d("div",VC,ee(a.typename),1)])],4)],14,MC)):(S(),T("a",{key:1,class:Ee(["item grid-item flexflex",[{pitch:A===s.pitchIndex,upLevel:A===s.pitchIndex-1},`item${A}`]]),style:Ze(s.itemStyle(A,a.content)),href:s.setItemUrl(a.uniqid),onClick:ke(m=>s.getDetails(a.uniqid,A),["stop","prevent"])},[XC,d("div",{class:"content",style:Ze({width:s.type=="list"?"531px":"430px"})},[d("div",ZC,[a.ishot==1?(S(),T("img",$C)):re("",!0),d("div",eE,ee(a.title),1)]),a.content?(S(),T("div",tE,ee(a.content),1)):re("",!0),d("div",nE,[a.typename?(S(),T("div",sE,ee(a.typename),1)):(S(),T("div",oE)),d("div",rE,[d("div",iE,ee(s.handleDate(a.publicationdate,!1))+"提问",1),d("div",lE,[aE,Se(" "+ee(a.answers),1)])])])],4)],14,GC))],64))),128))],4),s.inTheEndState?(S(),T("div",{key:0,class:"bottom-tps",style:Ze(s.bottomTpsStyle())},"- 到底了 -",4)):re("",!0),s.myModelState?(S(),T("div",{key:1,class:"bottom-tps",style:Ze(s.bottomTpsStyle())},null,4)):re("",!0),s.isListEmptyState&&s.list.length==0?(S(),T("div",cE,[uE,s.isSearchMode?(S(),T("div",fE,"没有找到相关结果,请更换搜索关键词")):(S(),T("div",dE,"暂无数据"))])):re("",!0)],36),s.type=="details"?(S(),T("div",{key:0,class:"details-area-box flexflex",onScroll:t[29]||(t[29]=(...a)=>s.handleDetailsScroll&&s.handleDetailsScroll(...a))},[d("div",AE,[s.detailLoading?(S(),T("div",hE,gE)):re("",!0),s.emojiMaskState?(S(),T("div",{key:1,class:"emoji-box-mask",onClick:t[16]||(t[16]=a=>s.closeEmojiMask())})):re("",!0),d("div",mE,[d("div",{class:"close-circle flexcenter",onClick:t[17]||(t[17]=a=>s.closeDetailMode())},bE)]),d("div",wE,[s.detailsInfo.typename?(S(),T("div",_E,ee(s.detailsInfo.typename),1)):re("",!0),d("div",CE,ee(s.detailsInfo.title),1),s.detailsInfo.content?(S(),T("div",{key:1,class:"hint",onClick:t[18]||(t[18]=(...a)=>s.handleAnswerText&&s.handleAnswerText(...a)),innerHTML:s.detailsInfo.content},null,8,EE)):re("",!0),d("div",kE,[d("div",{class:"user-info flexacenter",onClick:t[21]||(t[21]=a=>s.openUserInfo())},[s.detailsInfo.avatar?(S(),T("img",{key:0,class:"avatar",src:s.detailsInfo.avatar},null,8,xE)):re("",!0),d("div",SE,ee(s.detailsInfo.nickname),1),s.avatarState?(S(),T("div",TE,[d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:t[19]||(t[19]=ke(a=>s.sendMessage(s.detailsInfo.uin),["prevent"]))},[RE,Se(" 发送信息 ")]),d("a",{class:"avatar-item flexcenter",target:"_blank",onClick:t[20]||(t[20]=ke(a=>s.TAHomePage(s.detailsInfo.uin),["prevent"]))},[BE,Se(" TA的主页 ")]),IE])):re("",!0),d("div",OE,ee(s.handleDate(s.detailsInfo.publicationdate)),1)]),d("div",PE,[LE,Se(" "+ee(s.detailsInfo.viewnum||0),1)])]),d("div",NE,[d("div",ME,[d("div",{class:"operate-item flexacenter",onClick:t[22]||(t[22]=a=>s.operateLike())},[s.islike==0?(S(),T("img",DE)):(S(),T("img",FE)),Se(" "+ee(s.detailsInfo.likenum||"赞"),1)]),_e(f,null,{default:Pt(()=>[d("div",{class:"operate-item flexacenter",onClick:t[23]||(t[23]=a=>s.operateCollect())},[s.detailsIscollection==0?(S(),T("img",HE)):(S(),T("img",UE)),Se(" "+ee(s.detailsInfo.collectionnum>0?s.detailsInfo.collectionnum:"收藏"),1)])]),_:1}),d("div",{class:"operate-item flexacenter operate-transmit",onMouseenter:t[27]||(t[27]=ke(a=>s.closeTransmitState(),["stop"])),onMouseleave:t[28]||(t[28]=ke(a=>s.closeAllTransmitState(),["stop"]))},[jE,Se(" 转发 "),s.questionsTransmitState?(S(),T("div",{key:0,class:"transmit-box flexflex",onClick:t[26]||(t[26]=ke(()=>{},["stop"])),style:{"z-index":"10"}},[d("img",{class:"cross-icon",onClick:t[24]||(t[24]=ke(a=>s.closeAllTransmitState(),["stop"])),src:Yn}),d("div",QE,[KE,d("div",qE,[d("div",zE,ee(s.detailsInfo.title),1),d("div",YE,ee(s.getCurrentUrl()),1)]),d("div",{class:"transmit-web-btn flexcenter",onClick:t[25]||(t[25]=a=>s.copyText(s.detailsInfo.title+s.getCurrentUrl()))},"复制链接")]),d("div",JE,[WE,d("div",VE,[d("img",{class:"transmit-mini-img",src:s.detailShare.qrcode},null,8,GE),XE])])])):re("",!0)],32)])])]),s.isCommentList?(S(),ot(u,{key:2,ref:"commentListRef",onUpdateAnswers:s.handleUpdateAnswers},null,8,["onUpdateAnswers"])):re("",!0),d("div",ZE,[$E,Se(" 手机查看该问答 "),d("div",ek,[d("img",{class:"offer-mini-QRcode",src:s.detailShare.qrcode},null,8,tk),nk])])])],32)):re("",!0)],2),s.myType?(S(),T("div",sk,[d("div",ok,[d("img",{class:"cross-icon",src:Yn,onClick:t[30]||(t[30]=a=>s.myType="")}),d("div",rk,[d("div",{class:Ee(["tab-item flexacenter",{pitch:s.myType=="collect"}]),onClick:t[31]||(t[31]=a=>s.handleMy("collect"))},[Se(" 我的收藏 "),d("div",ik,ee(s.myCollectionCount||s.myCount.collect||0),1)],2),lk,d("div",{class:Ee(["tab-item flexacenter",{pitch:s.myType=="questions"}]),onClick:t[32]||(t[32]=a=>s.handleMy("questions"))},[Se(" 我的提问 "),d("div",ak,ee(s.myQuestionsCount||s.myCount.questions||0),1)],2)]),s.myType=="collect"&&s.myCollectionList.length==0||s.myType=="answers"&&s.myAnswerList.length==0||s.myType=="questions"&&s.myQuestionsList.length==0?(S(),T("div",ck,fk)):re("",!0),s.myType=="collect"&&s.myCollectionList.length!=0?(S(),T("div",{key:1,class:"content-box collect-list",onScroll:t[33]||(t[33]=(...a)=>s.handleCollectionScroll&&s.handleCollectionScroll(...a))},[(S(!0),T(he,null,Ye(s.myCollectionList,(a,A)=>(S(),T("div",{class:"item flexflex",key:a,onClick:ke(m=>s.myOpenDetails(a.data.uniqid),["stop"])},[a.type=="askanswercollection"?(S(),T(he,{key:0},[Ak,d("div",hk,[d("div",{class:"titletitle ellipsis",innerHTML:a.data.content},null,8,pk),d("div",gk,"提问:"+ee(a.data.title),1)]),d("div",mk,[d("img",{class:"delete-icon",onClick:ke(m=>s.cancelCollection(a.token,A),["stop"]),src:xc},null,8,vk)])],64)):(S(),T(he,{key:1},[yk,d("div",bk,[d("div",wk,ee(a.data.title),1),d("div",_k,ee(a.data.answers>0?"共"+a.data.answers+"个回答&讨论":"暂无回答&讨论"),1)]),d("div",Ck,[d("img",{class:"delete-icon",onClick:ke(m=>s.cancelCollection(a.token,A),["stop"]),src:xc},null,8,Ek)])],64))],8,dk))),128))],32)):re("",!0),s.myType=="answers"&&s.myAnswerList.length!=0?(S(),T("div",{key:2,class:"content-box answers-list",onScroll:t[34]||(t[34]=(...a)=>s.handleAnswersScroll&&s.handleAnswersScroll(...a))},[(S(!0),T(he,null,Ye(s.myAnswerList,(a,A)=>(S(),T("div",{class:"item flexflex",key:a,onClick:ke(m=>s.myOpenDetails(a.uniqid),["stop"])},[xk,d("div",Sk,[d("div",Tk,[d("div",Rk,ee(a.nickname),1),d("div",Bk,ee(s.handleDate(a.publicationdate)),1)]),d("div",{class:"titletitle ellipsis",innerHTML:a.content},null,8,Ik),d("div",Ok,"提问:"+ee(a.title),1)]),d("div",Pk,[d("div",{class:"state-box flexacenter",onClick:ke(m=>s.cutAnswerPopupState(A),["stop"])},[d("div",Nk,ee(a.anonymous==0?"公开":"匿名"),1),Mk,a.popupState?(S(),T("div",Dk,[d("div",{class:Ee(["state-popup-item flexacenter flex1",{pitch:a.anonymous==0}]),onClick:ke(m=>s.changeAnonymous(a.token,0,A),["stop"])},jk,10,Fk),d("div",{class:Ee(["state-popup-item flexacenter flex1",{pitch:a.anonymous==1}]),onClick:ke(m=>s.changeAnonymous(a.token,1,A),["stop"])},zk,10,Qk)])):re("",!0)],8,Lk),d("img",{class:"edit-icon",onClick:ke(m=>e.openIAnswer(A,"my"),["stop"]),src:lC},null,8,Yk)])],8,kk))),128))],32)):re("",!0),s.myType=="questions"&&s.myQuestionsList.length!=0?(S(),T("div",{key:3,class:"content-box questions-list",onScroll:t[35]||(t[35]=(...a)=>s.handleQuestionsScroll&&s.handleQuestionsScroll(...a))},[(S(!0),T(he,null,Ye(s.myQuestionsList,(a,A)=>(S(),T("div",{class:"item flexflex",key:a,onClick:ke(m=>s.myOpenDetails(a.uniqid),["stop"])},[Wk,d("div",Vk,[d("div",Gk,[d("div",Xk,ee(a.nickname),1),d("div",Zk,ee(s.handleDate(a.publicationdate)),1)]),d("div",$k,ee(a.title),1),d("div",ex,[a.authornewnum>0?(S(),T("div",tx,[Se(" 有"+ee(a.authornewnum)+"个新回答&讨论 ",1),nx])):re("",!0),Se(" "+ee(a.answers==0?"暂无回答&讨论":"共"+a.answers+"个回答&讨论"),1)])]),d("div",sx,[d("div",{class:"state-box flexacenter",onClick:ke(m=>s.cutQuestionsPopupState(A),["stop"])},[d("div",rx,ee(a.anonymous==0?"公开":"匿名"),1),ix,a.popupState?(S(),T("div",lx,[d("div",{class:Ee(["state-popup-item flexacenter flex1",{pitch:a.anonymous==0}]),onClick:ke(m=>s.changeAnonymousQuestions(a.token,0,A),["stop"])},fx,10,ax),d("div",{class:Ee(["state-popup-item flexacenter flex1",{pitch:a.anonymous==1}]),onClick:ke(m=>s.changeAnonymousQuestions(a.token,1,A),["stop"])},px,10,dx)])):re("",!0)],8,ox)])],8,Jk))),128))],32)):re("",!0)])])):re("",!0),s.questionsSetp?(S(),T("div",{key:1,class:"popover-mask flexcenter issue-box",onClick:t[43]||(t[43]=a=>s.cutQuestionsSetp(0))},[s.questionsSetp==1?(S(),T("div",{key:0,class:"choosing-theme",onClick:t[36]||(t[36]=ke(()=>{},["stop"]))},[gx,d("div",mx,[(S(!0),T(he,null,Ye(s.questionsTypeList,(a,A)=>(S(),T("div",{class:"theme-stair-box flexflex",key:A},[(S(!0),T(he,null,Ye(a,m=>(S(),T("div",{class:"theme-item flexcenter",key:m.id,onClick:_=>s.choosingTheme(m.id)},ee(m.name),9,vx))),128))]))),128))])])):(S(),T("div",{key:1,class:"issue-form",onClick:t[42]||(t[42]=ke(()=>{},["stop"]))},[yx,bx,d("img",{class:"cross-icon",onClick:t[37]||(t[37]=a=>s.cutQuestionsSetp(0)),src:Yn}),d("div",wx,[gt(d("textarea",{"onUpdate:modelValue":t[38]||(t[38]=a=>s.questionsObj.title=a),placeholder:"一句话描述问题,以问号结尾"},null,512),[[on,s.questionsObj.title]])]),gt(d("textarea",{class:"issue-replenish","onUpdate:modelValue":t[39]||(t[39]=a=>s.questionsObj.content=a),placeholder:"欢迎补充,清晰表达问题的关键点,可获得更有效的解答(非必填)"},null,512),[[on,s.questionsObj.content]]),d("div",_x,[d("div",{class:"option-box flexacenter",onClick:t[40]||(t[40]=(...a)=>s.cutAnonymous&&s.cutAnonymous(...a)),style:{color:"#333"}},[s.questionsObj.anonymous==0?(S(),T("img",Cx)):(S(),T("img",Ex)),Se(" 匿名发表 "),kx]),d("div",{class:"issue-btn flexcenter",onClick:t[41]||(t[41]=(...a)=>s.postingIssue&&s.postingIssue(...a))},"发布问题")])]))])):re("",!0),gt(_e(Hs,{name:"msg",appear:""},{default:Pt(()=>[d("div",{class:Ee(["box-item",s.boxClass()]),style:{top:"20px"}},[d("div",xx,ee(s.msg.text),1)],2)]),_:1},512),[[ko,s.msg.state]]),s.dialogSrc?(S(),T("div",{key:2,class:"detail-image-mask flexcenter",onClick:t[44]||(t[44]=a=>s.dialogSrc="")},[d("div",Sx,[d("img",{class:"detail-img",src:s.dialogSrc},null,8,Tx)])])):re("",!0),gt(d("div",Rx,[d("div",Bx,[d("div",Ix,[Ox,d("div",{class:"close icon-close iconfont",onClick:t[45]||(t[45]=a=>s.alertShow=!1)})]),d("div",Px,[d("div",Lx,[(S(!0),T(he,null,Ye(s.reasonList,(a,A)=>(S(),T("div",{class:Ee(["radio-area-item flexacenter",{pitch:s.checkList.includes(a)}]),key:A,onClick:m=>s.selectRadio(a)},[Mx,Se(" "+ee(a),1)],10,Nx))),128))]),d("div",Dx,[gt(d("textarea",{placeholder:"请输入举报原因","onUpdate:modelValue":t[46]||(t[46]=a=>s.alertText=a),maxlength:"200"},null,512),[[on,s.alertText]]),d("div",Fx,ee(200-s.alertText.length),1)]),d("div",Hx,[d("button",{type:"button",onClick:t[47]||(t[47]=a=>s.alertShow=!1)},"取消"),d("button",{type:"submit",disabled:s.checkList.length==0,onClick:t[48]||(t[48]=(...a)=>s.alertSubmit&&s.alertSubmit(...a))},"提交",8,Ux)])])])],512),[[ko,s.alertShow]])])])],64)}const Qx=uC(fC,[["render",jx]]),Kx={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;(n.stack||"").split(` -`).splice(1).map(a=>({text:a.replace("webpack:/","").replace(".vue",".js").trim(),internal:a.includes("node_modules")&&!a.includes(".cache")||a.includes("internal")||a.includes("new Promise")})).map(a=>`${a.text}`).join(` -`);const s=Number(n.statusCode||500),o=s===404,r=n.statusMessage??(o?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),l=void 0,u=o?oa(()=>Fa(()=>import("./error-404.e25a8fb9.js"),["./error-404.e25a8fb9.js","./error-404.7fc72018.css"],import.meta.url).then(a=>a.default||a)):oa(()=>Fa(()=>import("./error-500.00e01ec2.js"),["./error-500.00e01ec2.js","./error-500.c5df6088.css"],import.meta.url).then(a=>a.default||a));return(a,A)=>(S(),ot(H(u),AA(Pu({statusCode:H(s),statusMessage:H(r),description:H(i),stack:H(l)})),null,16))}},qx=Kx,zx={__name:"nuxt-root",setup(e){const t=()=>null,n=je(),s=n.deferHydration(),o=!1;ze(pf,el()),n.hooks.callHookWith(l=>l.map(c=>c()),"vue:setup");const r=$i();mu((l,c,f)=>{if(n.hooks.callHook("vue:error",l,c,f).catch(u=>console.error("[nuxt] Error in `vue:error` hook",u)),jm(l)&&(l.fatal||l.unhandled))return n.runWithContext(()=>Hm(l)),!1});const i=!1;return(l,c)=>(S(),ot(rh,{onResolve:H(s)},{default:Pt(()=>[H(r)?(S(),ot(H(qx),{key:0,error:H(r)},null,8,["error"])):H(i)?(S(),ot(H(t),{key:1,context:H(i)},null,8,["context"])):H(o)?(S(),ot(iu(H(o)),{key:2})):(S(),ot(H(Qx),{key:3}))]),_:1},8,["onResolve"]))}},Sc=zx;let Tc;{let e;Tc=async function(){var i,l;if(e)return e;const s=!!((i=window.__NUXT__)!=null&&i.serverRendered||((l=document.getElementById("__NUXT_DATA__"))==null?void 0:l.dataset.ssr)==="true")?xp(Sc):kp(Sc),o=Bg({vueApp:s});async function r(c){await o.callHook("app:error",c),o.payload.error=o.payload.error||c}s.config.errorHandler=r;try{await Og(o,s1)}catch(c){r(c)}try{await o.hooks.callHook("app:created",s),await o.hooks.callHook("app:beforeMount",s),s.mount(Jm),await o.hooks.callHook("app:mounted",s),await jt()}catch(c){r(c)}return s.config.errorHandler===r&&(s.config.errorHandler=void 0),s},e=Tc().catch(t=>{console.error("Error while mounting app:",t)})}export{_e as A,Pt as B,Se as C,Wx as D,Vx as E,uC as _,wf as a,Wa as b,Ce as c,Ge as d,ji as e,Zx as f,Fu as g,Yo as h,Gx as i,rs as j,qu as k,Yu as l,Bo as m,Xx as n,zt as o,Us as p,je as q,N as r,Km as s,Sm as t,Jo as u,S as v,ai as w,T as x,d as y,ee as z}; diff --git a/.output/public/static/entry.VRf8S3Qj.css b/.output/public/static/entry.VRf8S3Qj.css new file mode 100644 index 0000000..9bc1268 --- /dev/null +++ b/.output/public/static/entry.VRf8S3Qj.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px #0000000a,0px 8px 20px #00000014;--el-box-shadow-light:0px 0px 12px #0000001f;--el-box-shadow-lighter:0px 0px 6px #0000001f;--el-box-shadow-dark:0px 16px 48px 16px #00000014,0px 12px 32px #0000001f,0px 8px 16px -8px #00000029;--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:#000c;--el-overlay-color-light:#000000b3;--el-overlay-color-lighter:#00000080;--el-mask-color:#ffffffe6;--el-mask-color-extra-light:#ffffff4d;--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:fit-content}.el-message.is-center{justify-content:center}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.register *{box-sizing:content-box}.index-footer{margin-top:0!important}header.page-header .box .tab-list .item.pitch{color:#fddf6d!important}header.page-header .box .tab-list .item.pitch:after{background-color:#fddf6d!important}body{scrollbar-width:none;-ms-overflow-style:none}body::-webkit-scrollbar{width:0!important}@font-face{font-family:emojifont;src:url(https://oss.x-php.com/static/riposte/emojifont-sbix.ttf?t=questions)}#answer-app *{box-sizing:border-box;font-family:PingFangSC-Regular,PingFang SC,sans-serif;margin:0;padding:0;word-break:break-all}a{text-decoration:none!important}::-webkit-scrollbar{background-color:transparent;width:8px}::-webkit-scrollbar-thumb{background-color:#d7d7d7;border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:#666}::-webkit-scrollbar-button{display:none}*{scrollbar-color:#d7d7d7 transparent;scrollbar-width:thin}::-moz-scrollbar-thumb{background-color:#d7d7d7}::-moz-scrollbar-thumb:hover{background-color:#666}.flexflex{display:flex}.flex1{flex:1}.flexcenter{justify-content:center}.flexacenter,.flexcenter{align-items:center;display:flex}.flexjcenter{display:flex;justify-content:center}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#answer-app{min-height:calc(100vh - 253px);min-width:1200px;overflow-x:hidden;word-break:break-all}#answer-app header{background:#f6f6f6;border:1px solid #ebebeb;flex-direction:column;height:150px;margin:0 auto;min-width:1200px;padding-top:24px}#answer-app header .top{margin-bottom:31px;width:1200px}#answer-app header .top .logo{cursor:pointer;width:73px}#answer-app header .top .right{justify-content:flex-end}#answer-app header .top .right .searchInput{background-color:#fff;border:1px solid #ebebeb;border-radius:104px;font-size:13px;height:32px;padding-right:16px;position:relative;width:320px}#answer-app header .top .right .searchInput input{border:none;border-radius:104px;height:100%;outline:none;padding-left:16px}#answer-app header .top .right .searchInput .input-icon{cursor:pointer;height:20px;width:20px}#answer-app header .top .right .searchInput .clear-search .cross-circle-black{cursor:pointer;height:14px;width:14px}#answer-app header .top .right .searchInput .clear-search .halving-line{background-color:#ebebeb;height:13px;margin:0 17px;width:1px}#answer-app header .top .right .searchInput .history-box{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;left:0;padding-bottom:14px;padding-top:15px;position:absolute;top:36px;width:320px;z-index:10}#answer-app header .top .right .searchInput .history-box .history-title{color:#aaa;font-size:13px;margin-bottom:9px;padding-left:16px}#answer-app header .top .right .searchInput .history-box .history-list .history-item{color:#333;cursor:pointer;font-size:14px;height:30px;line-height:30px;padding:0 16px}#answer-app header .top .right .btn-list{border:1px solid #ebebeb;border-radius:5px;color:#555;font-size:13px;height:30px;margin-left:20px;width:221px}#answer-app header .top .right .btn-list .item{cursor:pointer;position:relative;text-align:center}#answer-app header .top .right .btn-list .item:not(:last-of-type):before{color:#d7d7d7;content:"|";font-size:13px;position:absolute;right:0;top:50%;transform:translateY(-50%)}#answer-app header .top .right .add-btn{background-color:#fddf6d;border-radius:5px;color:#000;cursor:pointer;font-size:13px;height:30px;margin-left:20px;width:130px}#answer-app header .top .right .add-btn .add-icon{height:14px;margin-right:4px;width:14px}#answer-app header .tab-box{background-color:#f6f6f6;margin:0 auto;min-width:1200px;padding:5px 0;width:100%;z-index:1}#answer-app header .tab-box.tab-list-fixed{position:fixed;top:0}#answer-app header .tab-box .tab-list{width:1200px}#answer-app header .tab-box .tab-list .item{color:#333;cursor:pointer;font-size:14px;height:24px;text-align:center}#answer-app header .tab-box .tab-list .item:not(:last-of-type){margin-right:23px}#answer-app header .tab-box .tab-list .item.pitch{background-color:#fa6b11;border-radius:19px;color:#fff;font-weight:650;padding:0 11px}#answer-app header .tab-box .tab-list .halving-line{color:#d7d7d7;font-size:14px;margin-right:23px}#answer-app .main{background-color:#fbfbfb;height:calc(100vh - 167px);justify-content:center;margin:0 auto;min-width:1200px}#answer-app .main .transmit-mask{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}#answer-app .main.mode-list{background:#fff;height:auto}#answer-app .main.mode-list .main-header{border-right:none;width:100%}#answer-app .main.mode-list .list-box .list .item{border-right:none}#answer-app .main.mode-list .list-box .list .item:nth-child(2){border-top:1px solid #ebebeb}#answer-app .main .main-header{background:#fff;border-right:1px solid #ebebeb;display:inline-flex;display:flex;height:68px;justify-content:space-between;margin:0 auto;min-width:508px;padding-left:calc(50vw - 600px);padding-top:28px;width:calc(50vw - 88px)}#answer-app .main .main-header .search-keyword{border-right:1px solid #ebebeb;color:#fa6b11;cursor:pointer;font-size:14px;height:20px;margin-right:20px;max-width:400px;padding-right:20px}#answer-app .main .main-header .search-keyword .search-keyword-cross{height:14px;margin-left:8px;width:14px}#answer-app .main .main-header .total{color:#7f7f7f;font-size:13px;height:20px}#answer-app .main .main-header .look-only{color:#7f7f7f;cursor:pointer;font-size:13px;height:20px}#answer-app .main .main-header .look-only .look-icon{height:12px;margin-right:8px;width:12px}#answer-app .main .list-box{overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}#answer-app .main .list-box::-webkit-scrollbar{width:0!important}#answer-app .main .list-box .list{display:flex;flex-wrap:wrap;justify-content:space-between;min-width:508px;position:relative}#answer-app .main .list-box .list .item{background-color:#fff;border-right:1px solid #ebebeb;cursor:pointer;padding:20px 0 0;position:absolute;transition-duration:.5s;transition-property:top,left,background}#answer-app .main .list-box .list .item:first-of-type{border-top:1px solid #ebebeb}#answer-app .main .list-box .list .item.upLevel .content{border:none}#answer-app .main .list-box .list .item.pitch{background-color:#fbfbfb;border-bottom:1px solid #ebebeb;border-top:1px solid #ebebeb;position:relative}#answer-app .main .list-box .list .item.pitch:after{background-color:#fddf6d;content:"";height:100%;position:absolute;right:-1px;top:0;width:4px}#answer-app .main .list-box .list .item.pitch:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='10'%3E%3Cpath fill='%23fddf6d' d='M4.835 4.56A.64.64 0 0 1 5 5a.64.64 0 0 1-.165.44L.946 9.813a.5.5 0 0 1-.39.186.5.5 0 0 1-.391-.186A.64.64 0 0 1 0 9.375V.625a.64.64 0 0 1 .165-.44A.5.5 0 0 1 .555 0q.226 0 .391.186z'/%3E%3C/svg%3E");content:"";height:10px;position:absolute;right:-5px;top:50%;transform:translateY(-50%);width:5px}#answer-app .main .list-box .list .item.pitch .content{border:none}#answer-app .main .list-box .list .item:hover .issue{text-decoration:underline}#answer-app .main .list-box .list .item .dot{height:6px;margin-right:14px;margin-top:8px;width:6px}#answer-app .main .list-box .list .item .content{border-bottom:1px dotted #ebebeb;padding-bottom:24px}#answer-app .main .list-box .list .item .content .issue-title .hot-icon{height:16px;margin-right:8px;width:16px}#answer-app .main .list-box .list .item .content .issue-title .issue{color:#000;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:14px;font-weight:650;line-height:22px}#answer-app .main .list-box .list .item .content .issue-title .issue em{color:red}#answer-app .main .list-box .list .item .content .issue-title .recommend{background-color:#72db861e;border-radius:5px;color:#72db86;font-size:12px;height:21px;margin-right:10px;padding:0 5px;text-align:center}#answer-app .main .list-box .list .item .content .answer{color:#555;font-size:13px;font-weight:400;height:22px;line-height:22px;margin-top:8px;text-decoration:none}#answer-app .main .list-box .list .item .content .answer *{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#answer-app .main .list-box .list .item .content .answer em{color:red}#answer-app .main .list-box .list .item .content .answer .halving-line{color:#d7d7d7;margin:0 10px}#answer-app .main .list-box .list .item .content .answer .value-value:not(:last-of-type){margin-right:10px;padding-right:10px;position:relative}#answer-app .main .list-box .list .item .content .answer .value-value:not(:last-of-type):after{color:#d7d7d7;content:"|";position:absolute;right:0;top:50%;transform:translateY(-50%)}#answer-app .main .list-box .list .item .content .bottom{font-size:12px;justify-content:space-between;margin-top:18px}#answer-app .main .list-box .list .item .content .bottom .typename{background-color:#f6f6f6;border:1px solid #ebebeb;border-radius:5px;color:#7f7f7f;font-size:12px;height:21px;padding:0 3px}#answer-app .main .list-box .list .item .content .bottom .quantity{color:#aaa}#answer-app .main .list-box .list .item .content .bottom .amount{color:#aaa;margin-left:20px}#answer-app .main .list-box .list .item .content .bottom .amount .amount-icon{height:13px;margin-right:5px;width:14px}#answer-app .main .list-box .list .item .content .bottom .longString{background-color:#d7d7d7;height:13px;margin:0 15px;width:1px}#answer-app .main .list-box .list .item .content .bottom .answer-btn{color:#72db86;cursor:pointer}#answer-app .main .list-box .empty-box{background-color:#fff;border-radius:6px;flex-direction:column;height:490px;margin:0 auto;width:690px}#answer-app .main .list-box .empty-box .dot-list .item{height:8px;width:8px}#answer-app .main .list-box .empty-box .dot-list .item:not(:last-of-type){margin-right:5px}#answer-app .main .list-box .empty-box .empty-icon{height:100px;margin-bottom:15px;margin-top:10px;width:100px}#answer-app .main .list-box .empty-box .empty-hint{color:#7f7f7f;font-size:13px;line-height:22px}#answer-app .main .details-area-box{background-color:#fbfbfb;display:flex;flex-direction:column;min-width:688px;overflow-x:hidden;overflow-y:auto;position:relative;width:calc(50vw + 88px)}#answer-app .main .details-area-box .loading-bj{background-color:#ffffff80;height:100%;left:0;padding-left:53px;position:absolute;top:0;width:100%;width:688px;z-index:1}#answer-app .main .details-area-box .loading-bj svg{animation:spin 2s linear infinite;position:fixed;top:50vh;width:60px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}#answer-app .main .details-area-box .details-box{flex:1;flex-direction:column;padding-bottom:200px;padding-left:53px;position:relative;width:688px}#answer-app .main .details-area-box .details-box .emoji-box-mask{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}#answer-app .main .details-area-box .details-box .close-box{display:flex;height:69px;justify-content:flex-end;padding-top:29px}#answer-app .main .details-area-box .details-box .close-box .close-circle{cursor:pointer;height:20px;position:relative;width:20px}#answer-app .main .details-area-box .details-box .close-box .close-circle .close-icon{height:20px;width:20px}#answer-app .main .details-area-box .details-box .close-box .close-circle .details-cross-icon{height:10px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:10px}#answer-app .main .details-area-box .details-box .label{background-color:#72db86;border-radius:5px;color:#fff;display:inline-block;font-size:12px;height:21px;line-height:21px;margin-bottom:12px;margin-left:23px;padding:0 4px}#answer-app .main .details-area-box .details-box .details-issue{background-color:#fff;border-radius:8px;box-shadow:0 0 11px #0000001a;margin-bottom:28px;padding-top:19px;position:relative;word-break:break-all}#answer-app .main .details-area-box .details-box .details-issue .icon{background-color:#72db86;border:4px solid #fbfbfb;border-radius:50%;color:#fff;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:13px;font-weight:650;height:28px;left:-4px;line-height:20px;position:absolute;top:-4px;width:28px}#answer-app .main .details-area-box .details-box .details-issue .qq{left:-5px;position:absolute;top:-5px;width:28px}#answer-app .main .details-area-box .details-box .details-issue .titletitle{color:#000;font-size:18px;font-weight:650;line-height:22px;margin-bottom:12px;padding:0 24px}#answer-app .main .details-area-box .details-box .details-issue .hint{color:#555;font-size:14px;line-height:24px;margin-bottom:20px;padding:0 24px;white-space:pre-line}#answer-app .main .details-area-box .details-box .details-issue .hint img{height:auto!important}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn{background-color:#f6f6f6;border-radius:43px;color:#555;cursor:pointer;font-size:14px;height:28px;line-height:20px;width:120px}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn.white{background-color:#62b1ff;color:#fff}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn.white .answer-icon-white{display:block}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn.white .answer-icon-edit{display:none}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn .answer-btn-icon{display:none;height:16px;margin-right:8px;width:16px}#answer-app .main .details-area-box .details-box .details-issue .operate-box .answer-btn .answer-icon-edit{display:block}#answer-app .main .details-area-box .details-box .answer-discuss{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;padding:18px 22px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment{background-color:#00000080;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:12}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box{background:#fff;border-radius:10px;padding:20px 15px;width:650px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .text{color:#000;font-size:18px;font-weight:650;margin-bottom:15px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .input-box{margin-right:0}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .input-box .bottom{border-top:1px solid #ebebeb}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .btn-list{justify-content:flex-end;padding:15px 0}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .btn-list .btn{background-color:#fff;border:1px solid #ebebeb;border-radius:43px;color:#333;cursor:pointer;font-size:14px;height:28px;line-height:28px;margin-left:20px;text-align:center;width:80px}#answer-app .main .details-area-box .details-box .answer-discuss .edit-comment .box .btn-list .btn.send{background-color:#fddf6d;border:1px solid #fddf6d}#answer-app .main .details-area-box .details-box .answer-discuss .header{color:#000;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:16px;font-weight:650;margin-bottom:17px}#answer-app .main .details-area-box .details-box .answer-discuss .header .num{color:#555;font-family:PingFangSC-Regular,PingFang SC,sans-serif;font-weight:400;margin-left:6px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box{background-color:#f6f6f6;border-radius:10px;display:flex;flex-direction:column;justify-content:space-between;padding-top:11px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top{padding:0 14px;position:relative}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-placeholder{color:#7f7f7f;font-size:14px;left:14px;pointer-events:none;position:absolute;top:0}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .avatar{border-radius:50%;display:block;height:24px;margin-right:10px;width:24px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-textarea{background-color:transparent;border:none;font-size:14px;min-height:80px;outline:none;padding-bottom:11px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-textarea *{background:transparent!important;border:none!important;border-radius:0!important;color:#000!important;font-size:14px!important;height:auto!important;margin:0!important;outline:none!important;padding:0!important;width:auto!important}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .top .input-textarea img{display:none!important}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box{border-bottom:1px dotted hsla(0,0%,84%,.502);padding-bottom:10px;padding-left:14px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box .picture{position:relative;width:-moz-fit-content;width:fit-content}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box .picture .img{border-radius:5px;display:block;height:60px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .picture-box .picture .close{cursor:pointer;height:17px;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:17px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom{height:52px;justify-content:space-between;padding:0 14px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item{display:inline-flex;margin-right:20px;position:relative;z-index:1}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item.pitch .emoji-box{display:flex}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item.pitch:after{background-color:#fff;border-radius:5px;content:"";height:28px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:28px;z-index:-1}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .icon{cursor:pointer;height:16px;width:16px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .emoji-box{background-color:#fff;border:1px solid #ebebeb;border-radius:8px;display:none;filter:drop-shadow(0 0 11px rgba(0,0,0,.1));flex-wrap:wrap;font-size:22px;left:-14px;padding:8px;position:absolute;top:45px;width:581px;z-index:1}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .emoji-box:after{border-bottom:8px solid #fff;border-left:8px solid transparent;border-right:8px solid transparent;content:"";height:0;left:15px;position:absolute;top:-8px;width:0}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .emoji-box .emoji-icon{cursor:pointer;margin:5px}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .file{background:transparent;border:none;cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .file:after{content:"";height:100%;left:0;position:absolute;top:0;width:100%}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item:hover .file-hint{display:inline-block}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .operate .item .file-hint{background-color:#333;border-radius:137px;color:#fff;display:none;font-size:13px;font-weight:400;height:22px;line-height:22px;margin-left:9px;padding:0 8px;text-align:center}#answer-app .main .details-area-box .details-box .answer-discuss .input-box .bottom .btn{background-color:#fddf6d;border-radius:43px;color:#333;cursor:pointer;font-size:14px;height:28px;line-height:28px;text-align:center;width:80px}#answer-app .main .details-area-box .details-box .answer-total-amount{color:#555;font-size:13px;line-height:22px;margin-bottom:20px}#answer-app .main .details-area-box .details-box .your-answer-box{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;margin-bottom:25px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-header{border-bottom:1px dotted #ebebeb;color:#000;font-size:18px;font-weight:650;height:67px;line-height:26px;padding-left:24px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-textarea{border:none;font-size:14px;height:224px;outline:none;overflow-x:hidden;overflow-y:auto;padding:20px 23px;resize:none;width:100%}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-textarea.placeholder:after{color:#999;content:"输入图文内容回答提问(支持直接粘贴图片)"}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-textarea img{max-width:100%}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom{background-color:#f6f6f6;border-radius:0 0 10px 10px;height:50px;justify-content:space-between;padding-left:25px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom .option-box{color:#7f7f7f;cursor:pointer;font-size:14px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom .option-box .option-icon{height:12px;margin-right:8px;width:12px}#answer-app .main .details-area-box .details-box .your-answer-box .your-answer-bottom .your-answer-submit{background-color:#fddf6d;border-radius:0 0 10px;color:#333;cursor:pointer;font-size:14px;height:50px;width:120px}#answer-app .main .details-area-box .details-box .answer-box-item{background-color:#fff;border-radius:8px;box-shadow:0 0 11px #0000001a;margin-bottom:21px;padding-top:24px;position:relative}#answer-app .main .details-area-box .details-box .answer-box-item .edit-btn{background-color:#f6f6f6;border-radius:50%;cursor:pointer;height:24px;position:absolute;right:10px;top:10px;width:24px}#answer-app .main .details-area-box .details-box .answer-box-item .edit-btn .edit-icon{height:16px;width:16px}#answer-app .main .details-area-box .details-box .answer-box-item *{white-space:break-spaces!important}#answer-app .main .details-area-box .details-box .answer-box-item .aa{left:-5px;position:absolute;top:-5px;width:28px}#answer-app .main .details-area-box .details-box .answer-box-item .icon-box{background-color:#62b1ff;border:4px solid #fbfbfb;border-radius:50%;color:#fff;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:13px;font-weight:650;height:28px;left:-4px;line-height:20px;position:absolute;top:-4px;width:28px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-text{color:#555;font-size:14px;margin-bottom:20px;padding:0 24px;word-break:break-all}#answer-app .main .details-area-box .details-box .answer-box-item .answer-text img{cursor:pointer;height:auto!important;max-width:100%}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box{background-color:#fbfbfb;padding:0 24px}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item{color:#555;cursor:pointer;font-family:PingFangSC-Regular,PingFang SC,sans-serif;font-size:13px;font-style:normal;font-weight:400;line-height:20px;position:relative}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item .amount{color:#555;font-weight:400}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item:not(:last-of-type){margin-right:40px}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item.pitch{color:#000;font-weight:650}#answer-app .main .details-area-box .details-box .answer-box-item .operate-box .interaction-box .interaction-item.pitch:after{background-color:#fddf6d;border-radius:43px;content:"";height:4px;position:absolute;top:24px;width:100%}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins{background-color:#fbfbfb;border-radius:0 0 8px 8px;padding:22px 22px 40px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;height:56px;padding-left:20px;padding-right:8px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-icon{height:36px;margin-right:10px;width:31px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-text{color:#333;font-size:14px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-text .quantity{font-family:Arial-Black,Arial Black,sans-serif;font-weight:900}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .coins-show .coins-btn{background-color:#62b1ff;border-radius:150px;color:#fff;cursor:pointer;font-size:14px;height:40px;width:125px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;margin-top:20px;max-height:253px;overflow:auto}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item{padding:16px 20px 14px 32px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item:not(:last-of-type){border-bottom:1px dotted #f2f2f2}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .ranking{color:#333;font-family:Arial-BoldMT,Arial Bold,Arial,sans-serif;font-size:13px;font-weight:700;width:118px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .coins-user{cursor:pointer}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .coins-user .coins-user-img{border-radius:50%;height:24px;margin-right:18px;width:24px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .coins-user .coins-user-name{color:#555;font-size:13px;font-weight:400}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .bi{color:#000;font-size:13px;line-height:16px}#answer-app .main .details-area-box .details-box .answer-box-item .answer-coins .answer-coins-list .answer-coins-item .bi .bi-amount{font-size:16px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area{background-color:#fbfbfb;border-radius:0 0 8px 8px;display:flex;flex-wrap:wrap;padding:13px 24px 40px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-already-item{border:1px solid #d7d7d7;border-radius:8px;color:#555;cursor:pointer;font-size:12px;height:30px;line-height:30px;margin-bottom:10px;margin-right:10px;padding:0 6px;text-align:center;width:-moz-fit-content;width:fit-content}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-already-item.pitch{background:#f2f2f2;border:none}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-already-item .code{font-family:emojifont;font-size:15px;margin-right:4px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-select{background-color:#fff;border:1px solid #ebebeb;border-radius:6px 15px 15px 6px;height:30px;margin-right:10px;padding-left:16px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .respond-select .respond-select-item{cursor:pointer;font-family:emojifont;font-size:15px;margin-right:16px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .plus-add{background-color:#62b1ff;border-radius:15px;height:30px;width:30px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-area .plus-add .plus-icon{height:14px;width:14px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-list-btn{align-items:center;border-radius:8px;color:#555;cursor:pointer;display:flex;font-size:13px;font-weight:400;justify-content:center;padding-top:10px;width:100%}#answer-app .main .details-area-box .details-box .answer-box-item .respond-list-btn .respond-list-btn-amount{color:#333;font-weight:650;margin:0 5px}#answer-app .main .details-area-box .details-box .answer-box-item .respond-list-btn .respond-list-btn-icon{margin-left:5px;width:6px}#answer-app .main .details-area-box .details-box .answer-box-item .comments-area{background-color:#fbfbfb;border-radius:6px;padding-bottom:40px;padding-top:13px}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment-box{background-color:#fbfbfb;border-radius:6px}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment{background-color:#fff;border:1px solid #d7d7d7;border-radius:6px;margin:0 23px;position:relative;z-index:2}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-input{background-color:transparent;border:none;font-size:14px;height:60px;outline:none;padding:8px}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-input::-moz-placeholder{color:#aaa}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-input::placeholder{color:#aaa}#answer-app .main .details-area-box .details-box .answer-box-item .post-comment .post-ok{background-color:#62b1ff;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;height:60px;width:60px}#answer-app .main .details-area-box .details-box .answer-box-item .comments-empty-box{flex-direction:column;height:321px;justify-content:center}#answer-app .main .details-area-box .details-box .comments-box{border-radius:6px;padding:17px 0 0}#answer-app .main .details-area-box .details-box .comments-box.show-one-comment .reverl-all{display:none}#answer-app .main .details-area-box .details-box .comments-box .comments-item{padding:13px 0 0}#answer-app .main .details-area-box .details-box .comments-box .comments-item:not(:last-of-type) .child-comments,#answer-app .main .details-area-box .details-box .comments-box .comments-item:not(:last-of-type) .comments-content{border-bottom:1px dotted #ebebeb}#answer-app .main .details-area-box .details-box .comments-box .comments-item:last-of-type .child-comments{border-top:1px dotted #ebebeb}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header{justify-content:space-between;margin-bottom:9px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left{font-size:13px;position:relative}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-avatar{border-radius:50%;cursor:pointer;height:20px;margin-right:10px;width:20px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-username{color:#555;cursor:pointer;margin-right:10px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-time{color:#aaa;margin-right:8px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-left .comments-identity{background-color:#f0f2f5;border:1px solid #d7d7d7;border-radius:5px;color:#7f7f7f;font-size:12px;height:20px;padding:0 3px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box{position:relative}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box:hover .operate-boxx{display:flex}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .menu-icon{cursor:pointer;height:14px;width:14px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx{background-color:#f6f6f6;border:1px solid #d7d7d7;border-radius:5px;color:#7f7f7f;cursor:pointer;display:none;flex-direction:column;font-size:12px;position:absolute;right:0;top:24px;width:60px;z-index:2}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx .item{height:24px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx .item:not(:last-of-type){border-bottom:1px solid #d7d7d7}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .menu-box .operate-boxx:after{content:"";height:36px;position:absolute;right:0;top:-14px;width:58px;z-index:-1}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .comment-icon{cursor:pointer;height:13px;margin-left:40px;width:14px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .like-box{color:#aaa;cursor:pointer;font-size:12px;margin-left:40px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .like-box .like-icon{height:14px;width:14px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-header .comments-header-right .like-box .like-quantity{margin-left:6px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content{margin-left:30px;padding-bottom:12px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content img{border-radius:5px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .input-box{margin-right:6px;position:relative}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .input-box .cross{cursor:pointer;height:12px;position:absolute;right:8px;top:5px;width:12px;z-index:2}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-text{color:#333;font-size:14px;line-height:22px;margin-bottom:13px;overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-text .comments-reply{color:#92a1bf;display:inline;margin-right:10px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-img{margin-bottom:13px;width:75px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box{margin-top:13px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input{border:1px solid #d7d7d7;border-radius:8px;height:60px;margin-right:16px;position:relative;width:519px;z-index:1}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input:after{background-color:#d7d7d7;content:"";display:block;height:20px;left:21px;position:absolute;top:-2px;transform:rotate(45deg);width:20px;z-index:-1}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input textarea{border:none;border-radius:7px 0 0 7px;outline:none;padding:11px 16px;resize:none;scrollbar-width:none;-ms-overflow-style:none}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input textarea::-webkit-scrollbar{width:0!important}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .comments-input .comments-btn{background-color:#72db86;border-radius:0 7px 7px 0;color:#fff;cursor:pointer;font-size:14px;height:58px;width:58px}#answer-app .main .details-area-box .details-box .comments-box .comments-item .comments-content .comments-input-box .forkfork{cursor:pointer;height:12px;width:12px}#answer-app .main .details-area-box .details-box .comments-box .child-comments{margin-left:24px}#answer-app .main .details-area-box .details-box .comments-box .child-comments .comments-item:last-of-type .comments-content{border-bottom:none}#answer-app .main .details-area-box .details-box .comments-box .child-comments .comments-also{color:#62b1ff;cursor:pointer;font-size:13px;height:46px;line-height:22px;margin-left:30px}#answer-app .main .details-area-box .details-box .comments-box .child-comments .comments-also .also-icon{height:10px;margin-left:8px;width:10px}#answer-app .main .details-area-box .details-box .comments-box .reverl-all{border:1px solid #ebebeb;border-radius:43px;color:#555;cursor:pointer;font-size:13px;height:28px;line-height:20px;margin:16px auto 0;width:120px}#answer-app .main .details-area-box .details-box .comments-box .reverl-all .arrow-circular{height:10px;margin-left:10px;width:10px}#answer-app .main .details-area-box .details-box .comments-box .more-comments{border:1px solid #ebebeb;border-radius:43px;color:#555;cursor:pointer;height:28px;line-height:28px;margin:20px auto 0;width:120px}#answer-app .main .details-area-box .details-box .comments-box .more-comments .more-comments-icon{height:12px;margin-left:10px;width:12px}#answer-app .main .details-area-box .details-box .info-box{justify-content:space-between;margin-bottom:20px;padding:0 24px}#answer-app .main .details-area-box .details-box .info-box .user-info{cursor:pointer;position:relative}#answer-app .main .details-area-box .details-box .info-box .user-info .avatar{border-radius:50%;height:20px;margin-right:8px;width:20px}#answer-app .main .details-area-box .details-box .info-box .user-info .user-name{color:#7f7f7f;font-size:13px;margin-right:10px}#answer-app .main .details-area-box .details-box .info-box .user-info .homeShare{height:14px}#answer-app .main .details-area-box .details-box .info-box .time{color:#aaa;font-size:12px}#answer-app .main .details-area-box .details-box .info-box .operate-item{color:#7f7f7f;font-size:12px;margin-right:7px}#answer-app .main .details-area-box .details-box .info-box .operate-item .operate-icon{margin-right:7px}#answer-app .main .details-area-box .details-box .operate-box{border-top:1px dotted #ebebeb;flex:1;height:54px;justify-content:space-between;padding:0 24px;position:relative}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item{color:#7f7f7f;cursor:pointer;font-size:13px;height:53px;line-height:54px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item:not(:first-of-type){margin-left:36px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum{z-index:1}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum:after{background:inherit;background-color:#f6f6f6;content:"";height:100%;left:50%;position:absolute;top:0;transform:translate(-50%);width:80px;z-index:-1}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon{margin-right:5px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-transmit-icon{height:14px;width:14px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-comment-icon{height:13px;width:14px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-collect-icon,#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item .operate-icon.operate-like-icon{height:16px;width:16px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit:hover:after{content:"";height:100%;position:absolute;top:20px;width:100%;z-index:10}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box{background:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;justify-content:space-between;left:0;padding:40px 35px 42px;position:absolute;top:64px;width:635px;z-index:3}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .cross-icon{cursor:pointer;height:22px;padding:6px;position:absolute;right:6px;top:6px;width:22px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-title{color:#000;font-size:16px;font-weight:650;line-height:24px;margin-bottom:24px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-content{border:1px solid #f2f2f2;border-radius:16px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content{font-size:14px;line-height:24px;margin-bottom:32px;padding:14px 16px;width:300px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content .transmit-headline{color:#333}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content .transmit-url{color:#aaa;word-wrap:break-word}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-web-btn{background-color:#fddf6d;border-radius:8px;color:#000;font-size:14px;height:38px;width:120px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-mini .transmit-content{color:#555;flex-direction:column;font-size:13px;padding:22px 44px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-mini .transmit-content .transmit-mini-img{height:90px;margin-bottom:21px;width:90px}#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-mini .transmit-content .give-sweep{height:12px;margin-right:8px;width:12px}#answer-app .main .details-area-box .details-box .copyright{background-color:#f2f2f2;border-radius:4px;color:#aaa;font-size:13px;height:32px;margin-bottom:30px;margin-top:10px;text-align:center}#answer-app .main .details-area-box .details-box .mobile-phone-check{border:1px solid #ebebeb;border-radius:20px;color:#7f7f7f;cursor:pointer;font-size:13px;margin:39px auto 50px;padding:10px 0;position:relative;width:150px}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-icon{height:16px;margin-right:10px;width:16px}#answer-app .main .details-area-box .details-box .mobile-phone-check:hover .QRCode-pop{display:flex}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop{background-color:#fff;border-radius:17px;bottom:45px;box-shadow:0 0 5px #00000029;display:none;flex-direction:column;height:200px;position:absolute;width:200px;z-index:1}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop .offer-mini-QRcode{margin-bottom:18px;width:113px}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop .QRCode-hint{color:#333;font-size:13px}#answer-app .main .details-area-box .details-box .mobile-phone-check .QRCode-pop .QRCode-hint .QRCode-img{height:12px;margin-right:12px;width:12px}#answer-app .main .details-area-box .empty-box{flex-direction:column;margin-bottom:16px}#answer-app .main .details-area-box .empty-box .dot-list{margin-bottom:8px}#answer-app .main .details-area-box .empty-box .dot-list .dot-item{height:8px;width:8px}#answer-app .main .details-area-box .empty-box .dot-list .dot-item:not(:last-of-type){margin-right:5px}#answer-app .main .details-area-box .empty-box .empty-icon{height:100px;width:100px}#answer-app .main .details-area-box .empty-hint{color:#7f7f7f;font-size:13px;line-height:22px;text-align:center}#answer-app .issue-box .choosing-theme{background:inherit;background-color:#fff;border:none;border-radius:10px;box-shadow:0 0 3px #0000001e;padding:30px 36px 45px;width:530px}#answer-app .issue-box .choosing-theme .titletitle{color:#000;font-size:14px;font-weight:650;margin-bottom:30px;position:relative}#answer-app .issue-box .choosing-theme .titletitle:before{background-color:#72db86;border-radius:3px;content:"";height:12px;left:-15px;position:absolute;top:50%;transform:translateY(-50%);width:5px}#answer-app .issue-box .choosing-theme .theme-list,#answer-app .issue-box .choosing-theme .theme-list .theme-stair-box{flex-wrap:wrap}#answer-app .issue-box .choosing-theme .theme-list .theme-item{background-color:#f6f6f6;border-radius:5px;color:#333;cursor:pointer;font-size:14px;height:36px;margin-bottom:10px;width:106px}#answer-app .issue-box .choosing-theme .theme-list .theme-item:not(:nth-child(4n)){margin-right:11px}#answer-app .issue-box .choosing-theme .theme-list .theme-item:hover{background-color:#fddf6d;color:#000}#answer-app .issue-box .issue-form{background-position:-4px -3px;border-radius:10px;height:520px;padding-top:30px;position:relative;width:720px;z-index:1}#answer-app .issue-box .issue-form .issue-bj{height:526px;left:-4px;position:absolute;top:-3px;width:727px;z-index:-1}#answer-app .issue-box .issue-form .q{background-color:#72db86;border-radius:50%;color:#fff;font-size:13px;font-style:normal;font-weight:650;height:20px;left:-1px;position:absolute;top:-1px;width:20px}#answer-app .issue-box .issue-form .cross-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .issue-box .issue-form input,#answer-app .issue-box .issue-form textarea{border:none;outline:none}#answer-app .issue-box .issue-form .issue-input{border-bottom:1px dotted #ebebeb;height:80px;padding:0 30px;width:720px}#answer-app .issue-box .issue-form .issue-input textarea{font-size:18px;height:100%;resize:none;width:100%}#answer-app .issue-box .issue-form .issue-input textarea::-moz-placeholder{color:#aaa}#answer-app .issue-box .issue-form .issue-input textarea::placeholder{color:#aaa}#answer-app .issue-box .issue-form .issue-replenish{display:block;font-size:14px;height:360px;padding:20px 30px;resize:none;width:720px}#answer-app .issue-box .issue-form .issue-replenish::-moz-placeholder{color:#aaa}#answer-app .issue-box .issue-form .issue-replenish::placeholder{color:#aaa}#answer-app .issue-bottom{background-color:#f6f6f6;border-radius:0 0 10px 10px;height:50px;justify-content:space-between;padding-left:30px}#answer-app .issue-bottom .option-box{color:#7f7f7f;cursor:pointer;font-size:14px}#answer-app .issue-bottom .option-box .option-icon{height:12px;margin-right:6px;width:12px}#answer-app .issue-bottom .issue-btn{background-color:#fddf6d;border-radius:0 0 10px;color:#333;cursor:pointer;font-size:14px;height:50px;width:120px}#answer-app .i-answer-box{background-color:#fff;border-radius:10px;box-shadow:0 0 3px #0000001e;flex-direction:column;height:660px;max-height:92vh;position:relative;width:720px}#answer-app .i-answer-box .close-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .i-answer-box .question-header{border-bottom:1px solid #ebebeb;padding:25px 8px 25px 20px}#answer-app .i-answer-box .question-header .question-title{color:#000;font-size:18px;font-weight:650;margin-bottom:20px}#answer-app .i-answer-box .question-header .question-title .question-icon{background-color:#72db86;border-radius:50%;color:#fff;font-size:13px;font-weight:650;height:20px;margin-right:12px;margin-top:3px;width:20px}#answer-app .i-answer-box .question-header .question-replenish{color:#7f7f7f;font-size:13px;font-weight:400;line-height:24px;max-height:87px;overflow:auto;padding-left:33px}#answer-app .i-answer-box .question-middle{flex:1;height:calc(100% - 172px);padding:23px 20px}#answer-app .i-answer-box .question-middle .question-icon{background-color:#62b1ff;border-radius:50%;color:#fff;font-size:13px;font-weight:650;height:20px;margin-right:12px;width:20px}#answer-app .i-answer-box .question-middle .question-textarea{background-color:transparent;border:none;font-size:14px;outline:none;overflow:auto;resize:none;width:100%}#answer-app .i-answer-box .question-middle .question-textarea.placeholder:after{color:#999;content:"输入图文内容回答提问(支持直接粘贴图片)"}#answer-app .i-answer-box .question-middle .question-textarea img{max-width:100%}#answer-app .detail-image-mask{background-color:#fffc;border:none;height:100%;left:0;max-height:none;max-width:none;position:fixed;top:0;width:100%;z-index:100}#answer-app .detail-image-mask .detail-image{background-color:#111;border-radius:8px;height:80vh;width:80vw}#answer-app .detail-image-mask .detail-image .detail-img{max-height:100%;max-width:100%}#answer-app .box-item{align-items:center;background-color:#edf2fc;border:1px solid #ebeef5;border-radius:4px;display:flex;font-size:14px;justify-content:space-between;left:50%;min-width:380px;padding:15px 15px 15px 20px;position:fixed;transform:translate(-50%);transition:opacity .3s,transform .4s,top .4s;z-index:5000}#answer-app .box-item-success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}#answer-app .box-item-warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}#answer-app .box-item-error{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}#answer-app .alert-form{background-color:#000000b3;display:block;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:2100}#answer-app .alert-form *{box-sizing:border-box}#answer-app .alert-form .reports{height:440px}#answer-app .alert-form .reports .radio-area{margin-bottom:40px}#answer-app .alert-form .reports .radio-area .radio-area-item{color:#606266;cursor:pointer;font-size:14px;margin-right:10px}#answer-app .alert-form .reports .radio-area .radio-area-item.pitch .radio-area-frame{background-color:#50e3c2;border-color:#50e3c2}#answer-app .alert-form .reports .radio-area .radio-area-item.pitch .radio-area-frame:after{transform:rotate(45deg) scaleY(1)}#answer-app .alert-form .reports .radio-area .radio-area-item .radio-area-frame{border:1px solid #dcdfe6;border-radius:2px;height:14px;margin-right:10px;position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);width:14px}#answer-app .alert-form .reports .radio-area .radio-area-item .radio-area-frame:after{border:1px solid #fff;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}#answer-app .alert-form .el-checkbox-group{font-size:0}#answer-app .alert-form .comments{background-color:#fff;border:none;border-radius:8px 8px 6px 6px;display:block;height:440px;left:50%;max-height:90vh;max-width:90vw;position:fixed;top:50%;transform:translate(-50%,-50%);width:740px;z-index:11}#answer-app .alert-form .comments .text-box{position:relative}#answer-app .alert-form .comments .text-num{bottom:10px;color:#999;font-size:12px;position:absolute;right:10px}#answer-app .alert-form .comments .form{display:block;padding:34px 30px 40px;width:100%}#answer-app .alert-form .comments .form textarea{background:#f7f7f7;border:1px solid #f7f7f7;border-radius:5px;display:block;font-size:14px;height:172px;line-height:22px;margin-bottom:30px;outline:none;padding:18px;resize:none;width:100%}#answer-app .alert-form .head{align-items:center;background:#333;border-radius:6px 6px 0 0;color:#fff;display:flex;font-size:17px;height:56px;justify-content:space-between;padding:0 18px 0 30px}#answer-app .alert-form .head .close{color:#b3b3b3;cursor:pointer;font-size:14px}#answer-app .alert-form .footer{align-items:center;display:flex;justify-content:center}#answer-app .alert-form .footer button[type=button]{margin-right:20px}#answer-app .alert-form .footer button{background-color:#fff;border:1px solid #999;border-radius:5px;color:#333;cursor:pointer;font-size:14px;height:38px;outline:none;width:128px}#answer-app .alert-form .footer button[type=submit]{background-color:#50e3c2;border-color:#50e3c2;color:#fff}#answer-app .alert-form .el-checkbox__input.is-checked .el-checkbox__inner,#answer-app .alert-form .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#50e3c2;border-color:#50e3c2}#answer-app .alert-form .el-checkbox__inner:hover,#answer-app .alert-form .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#50e3c2}#answer-app .alert-form .el-checkbox__input.is-checked+.el-checkbox__label{color:#50e3c2}#answer-app .bottom-tps{color:#555;font-size:12px;font-weight:400;min-width:508px;padding:30px 0;text-align:center}#answer-app .avatar-box{background-color:#f4f8ff;border:1px solid #dce0ea;border-radius:10px;box-shadow:0 0 6px #00000034;flex-direction:column;height:101px;position:absolute;top:30px;width:140px;z-index:100}#answer-app .avatar-box .avatar-mask{cursor:auto;height:100%;left:0;position:fixed;top:0;width:100%;z-index:-1}#answer-app .avatar-box .avatar-item{color:#333;cursor:pointer;font-size:14px;height:50px}#answer-app .avatar-box .avatar-item:not(:last-of-type){border-bottom:1px dotted #d7d7d7}#answer-app .avatar-box .avatar-icon{height:16px;margin-right:5px;width:16px}#answer-app .edit-answers{background-color:#fff;border-radius:10px;box-shadow:0 0 3px #0000001e;display:flex;flex-direction:column;height:400px;position:relative;width:720px}#answer-app .edit-answers .close-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .edit-answers .titletitle{border-bottom:1px solid #ebebeb;color:#000;font-size:14px;font-weight:650;height:64px;padding-left:20px;padding-top:20px}#answer-app .edit-answers .question-textarea{border:none;color:#555;display:block;flex:1;font-size:14px;line-height:26px;outline:none;overflow:auto;padding:20px;resize:none;width:100%}#answer-app .edit-answers .question-textarea.placeholder:after{color:#999;content:"输入图文内容回答提问(支持直接粘贴图片)"}#answer-app .edit-answers .question-textarea img{max-width:100%}#answer-app .msg-container{align-items:center;display:flex;line-height:16px}#answer-app .msg-container .iconfont{margin-right:5px}#answer-app .msg-enter-active{animation:anim .5s}#answer-app .msg-leave-active{animation:anim .5s reverse}@keyframes anim{0%{opacity:0;transform:translate(-50%,-200%)}to{opacity:1;transform:translate(-50%)}}#answer-app .my-popover .popover-box{background-color:#fff;border-radius:10px;box-shadow:0 0 3px #0000001e;flex-direction:column;height:616px;max-height:92vh;padding-top:30px;position:relative;width:750px}#answer-app .my-popover .popover-box .cross-icon{cursor:pointer;height:12px;position:absolute;right:12px;top:12px;width:12px}#answer-app .my-popover .popover-box .tab-list{color:#aaa;font-size:16px;margin-bottom:30px}#answer-app .my-popover .popover-box .tab-list .tab-item{cursor:pointer}#answer-app .my-popover .popover-box .tab-list .tab-item .quantity{margin-left:10px}#answer-app .my-popover .popover-box .tab-list .tab-item.pitch{color:#000;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-weight:650}#answer-app .my-popover .popover-box .tab-list .tab-item.pitch .quantity{color:#555;font-weight:400}#answer-app .my-popover .popover-box .tab-list .long-string{background-color:#d7d7d7;height:17px;margin:0 20px;width:1px}#answer-app .my-popover .popover-box .empty-box{background-color:#fff;border:1px solid #ebebeb;border-radius:6px;flex-direction:column;height:490px;margin:0 auto;width:690px}#answer-app .my-popover .popover-box .empty-box .dot-list .item{height:8px;width:8px}#answer-app .my-popover .popover-box .empty-box .dot-list .item:not(:last-of-type){margin-right:5px}#answer-app .my-popover .popover-box .empty-box .empty-icon{height:100px;margin-bottom:15px;margin-top:10px;width:100px}#answer-app .my-popover .popover-box .empty-box .empty-hint{color:#7f7f7f;font-size:13px;line-height:22px}#answer-app .my-popover .popover-box .content-box{height:490px;margin:0 auto;overflow:auto;padding-right:10px;width:690px}#answer-app .my-popover .popover-box .content-box .icon{border-radius:50%;color:#fff;font-family:PingFangSC-Semibold,PingFang SC Semibold,PingFang SC,sans-serif;font-size:13px;font-weight:650;height:20px;line-height:20px;margin-right:17px;width:20px}#answer-app .my-popover .popover-box .content-box .icon.q{background-color:#72db86}#answer-app .my-popover .popover-box .content-box .icon.a{background-color:#62b1ff}#answer-app .my-popover .popover-box .content-box .item{border-bottom:1px dotted #ebebeb;cursor:pointer;padding:20px 0}#answer-app .my-popover .popover-box .content-box .item .centre{flex-direction:column}#answer-app .my-popover .popover-box .content-box .item .centre .info{color:#555;font-size:12px;margin-bottom:10px}#answer-app .my-popover .popover-box .content-box .item .centre .info .time{color:#aaa;margin-left:8px}#answer-app .my-popover .popover-box .content-box .item .centre .titletitle{color:#333;font-size:14px;margin-bottom:10px;min-height:21px;width:532px}#answer-app .my-popover .popover-box .content-box .item .centre .titletitle img{height:80px}#answer-app .my-popover .popover-box .content-box .item .centre .text{color:#aaa;font-size:12px;width:532px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box{cursor:pointer;position:relative}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .text{color:#333;font-size:13px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .arrows{height:5px;margin-left:6px;width:8px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup{background-color:#fff;border-radius:10px;box-shadow:0 0 6px #00000034;flex-direction:column;height:101px;position:absolute;right:3px;top:28px;width:140px;z-index:1}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-mask{height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:-1}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item{color:#555;font-size:14px;justify-content:space-between;padding:0 10px}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item:hover{color:#000}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item.pitch{color:#fa6b11}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item.pitch .state-popup-icon{display:block}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item:not(:last-of-type){border-bottom:1px dotted #e3e3e3}#answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup .state-popup-item .state-popup-icon{display:none;height:8px;width:11px}#answer-app .my-popover .popover-box .content-box .item .operate-box .edit-icon{cursor:pointer;height:16px;margin-left:30px;width:16px}#answer-app .my-popover .popover-box .content-box.collect-list .item{border-bottom:1px dotted #ebebeb;padding:20px 0}#answer-app .my-popover .popover-box .content-box.collect-list .item .delete-box .delete-icon{cursor:pointer}#answer-app .my-popover .popover-box .content-box.questions-list .item .new-answer{color:#f95d5d}#answer-app .my-popover .popover-box .content-box.questions-list .item .new-answer .long-string{background-color:#d7d7d7;height:12px;margin:0 8px;width:1px}#answer-app .popover-mask{background-color:#00000080;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1000}#answer-app .respond-add{background-color:#62b1ff;border-radius:50%;cursor:pointer;height:30px;position:relative;width:30px}#answer-app .respond-add.angle:after{background:#f6f6f6;border:1px solid #e4e7ed;border-bottom-color:transparent!important;border-right-color:transparent!important;border-top-left-radius:2px;bottom:-17px;content:"";height:10px;left:50%;position:absolute;transform:translate(-50%) rotate(45deg);width:10px;z-index:3000}#answer-app .respond-add .respond-add-icon{height:14px;width:14px}#answer-app .respond-list-mask{height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1}#answer-app .respond-pop-mask{align-items:center;background:#0009;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:10}#answer-app .respond-pop-mask .respond-pop{background-color:#fff;border:1px solid #e5e5e5;border-radius:20px;box-shadow:0 0 15px #00000036;-webkit-box-shadow:0 0 15px rgba(0,0,0,.21);height:500px;width:600px}#answer-app .respond-pop-mask .respond-pop .respond-pop-title{align-items:center;border-bottom:1px dotted hsla(0,0%,84%,.5);color:#555;display:flex;font-size:16px;height:50px;justify-content:center;position:relative}#answer-app .respond-pop-mask .respond-pop .respond-pop-title .respond-pop-amount{color:#000;font-weight:650;margin:0 8px}#answer-app .respond-pop-mask .respond-pop .respond-pop-title .respond-title-icon{cursor:pointer;position:absolute;right:20px;width:20px}#answer-app .respond-pop-mask .respond-pop .respond-list{height:450px;overflow:auto}#answer-app .respond-pop-mask .respond-pop .respond-list::-webkit-scrollbar-track{border-radius:10px}#answer-app .respond-pop-mask .respond-pop .respond-list::-webkit-scrollbar-thumb{background-color:#0003;border-radius:10px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#answer-app .respond-pop-mask .respond-pop .respond-list::-webkit-scrollbar{width:6px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item{display:flex;padding:20px 0 0 20px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item:not(:last-of-type) .respond-content{border-bottom:1px dotted hsla(0,0%,84%,.5)}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-code{align-items:center;background-color:#f6f6f6;border-radius:10px;box-sizing:border-box;cursor:pointer;display:flex;font-family:emojifont;font-size:25px;height:60px;justify-content:center;margin-right:20px;width:60px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-code.pitch{background-color:#f6f6bd;border:1px solid #ccd003}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content{padding-bottom:10px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content .respond-total{color:#7f7f7f;font-size:14px;margin-bottom:10px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content .user-item{align-items:center;color:#555;cursor:pointer;display:inline-flex;font-size:14px;margin-bottom:10px;margin-right:20px}#answer-app .respond-pop-mask .respond-pop .respond-list .respond-item .respond-content .user-item .user-avatar{border-radius:50%;height:26px;margin-right:10px;width:26px}#answer-app .respond-pop-mask .respond-pop .respond-pop-no{flex-direction:column;height:100%;position:relative;width:100%}#answer-app .respond-pop-mask .respond-pop .respond-pop-no .respond-title-icon{cursor:pointer;position:absolute;right:20px;top:20px;width:20px}#answer-app .respond-pop-mask .respond-pop .respond-pop-no .respond-pop-no-icon{margin-bottom:15px;width:90px}#answer-app .respond-pop-mask .respond-pop .respond-pop-no .respond-pop-no-text{color:#7f7f7f;font-size:13px;line-height:22px}#answer-app .slit-pop-mask{align-items:center;background:#0009;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:10}#answer-app .slit-pop-box{background-color:#fff;border:1px solid #e5e5e5;border-radius:11px;box-shadow:0 0 15px #00000036;display:flex;padding:60px 50px 48px 38px;width:523px}#answer-app .slit-pop-box .slit-left{width:50px}#answer-app .slit-pop-box .slit-left .slit-left-icon{height:60px;margin-top:-8px;width:50px}#answer-app .slit-pop-box .slit-box{flex:1;margin-left:15px}#answer-app .slit-pop-box .slit-box .slit-head{align-items:flex-start;display:flex;flex:1;flex-direction:column;height:54px;justify-content:space-between}#answer-app .slit-pop-box .slit-box .slit-head .slit-head-title{color:#333;font-size:20px;font-weight:650;justify-content:space-between;width:100%}#answer-app .slit-pop-box .slit-box .slit-head .slit-head-title a{font-size:13px;font-weight:100;text-decoration:underline!important}#answer-app .slit-pop-box .slit-box .slit-head .in-all{color:#7f7f7f;font-size:13px}#answer-app .slit-pop-box .slit-box .slit-head .in-all>span{color:#000;font-weight:650}#answer-app .slit-pop-box .slit-box .coin-quantity{align-items:center;display:flex;margin-bottom:27px;margin-top:20px}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item{background-color:#f0f2f5;border:1px solid #d7d7d7;border-radius:5px;color:#000;cursor:pointer;font-size:20px;font-weight:650;height:46px;line-height:46px;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:78px}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item>span{color:#555;font-size:14px;font-weight:400}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item:not(:last-of-type){margin-right:16px}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item.coin-pitch{background-color:#333;border-color:#333;color:#fff}#answer-app .slit-pop-box .slit-box .coin-quantity .coin-quantity-item.coin-pitch>span{color:#fff}#answer-app .slit-pop-box .slit-box .slit-input{border:1px solid #d7d7d7;border-radius:8px;font-size:15px;height:38px;outline:none;overflow:hidden;padding-left:8px;width:360px}#answer-app .slit-pop-box .slit-box .slit-input::-webkit-inner-spin-button,#answer-app .slit-pop-box .slit-box .slit-input::-webkit-outer-spin-button{-webkit-appearance:none}#answer-app .slit-pop-box .slit-box .slit-input[type=number]{-moz-appearance:textfield}#answer-app .slit-pop-box .slit-box .slit-input .el-input__inner{border:none;margin:0;outline:none;padding:0 54px 0 0}#answer-app .slit-pop-box .slit-box .message-box{display:flex;flex-direction:column}#answer-app .slit-pop-box .slit-box .message-box .message-hint{color:#000;font-size:14px;margin-bottom:12px;margin-top:29px}#answer-app .slit-pop-box .slit-box .operation{display:flex;justify-content:flex-end;margin-top:48px}#answer-app .slit-pop-box .slit-box .operation .operation-item{border:1px solid #797979;border-radius:45px;color:#000;cursor:pointer;font-size:16px;height:41px;margin-left:16px;width:120px}#answer-app .slit-pop-box .slit-box .operation .operation-item.greenBj{background-color:#50e3c2;border-color:#50e3c2!important}#answer-app .no-jituobi-pop-box{background-color:#fff;border:1px solid #e5e5e5;border-radius:11px;box-shadow:0 0 15px #00000036;display:flex;flex-direction:column;padding-bottom:55px;width:520px}#answer-app .no-jituobi-pop-box .no-jituobi-close{align-self:flex-end;cursor:pointer;height:16px;margin:10px;width:16px}#answer-app .no-jituobi-pop-box .no-jituobi-head{color:#333;font-size:16px;margin:23px auto 42px}#answer-app .no-jituobi-pop-box .no-jituobi-head .bi-icon{height:60px;width:50px}#answer-app .no-jituobi-pop-box .strategy-btn{border-radius:100px;color:#000;cursor:pointer;font-size:16px;height:43px;margin:0 auto;width:198px}#answer-app .no-jituobi-pop-box .strategy-btn.greenBj{background-color:#50e3c2;border-color:#50e3c2!important}#answer-app .no-jituobi-pop-box .strategy-btn .strategy-icon{height:16px;margin-left:8px;width:16px}#answer-app .answer-empty-box{background-color:#fff;border:1px solid #ebebeb;border-radius:10px;box-shadow:0 0 3px #0000001e;flex-direction:column;height:321px;height:300px;justify-content:center;margin-bottom:21px;width:626px}.el-popover.el-popper{border:1px solid #ebebeb;border-radius:10px;padding:0}.el-popper.is-light .el-popper__arrow:before,.respond-list-box{background:#f6f6f6}.respond-list-box{border-radius:10px;width:470px}.respond-list-box .respond-list-title{color:#333;font-size:14px;line-height:22px;padding-bottom:25px;padding-left:20px;padding-top:16px}.respond-list-box .respond-list{display:flex;display:grid;flex-wrap:wrap;grid-template-columns:repeat(10,1fr)}.respond-list-box .respond-list .respond-item{font-family:emojifont;font-size:20px;margin-bottom:20px;text-align:center}.respond-list-box .respond-list .respond-item .respond-item-key{cursor:pointer;font-family:emojifont;position:relative;z-index:1}.respond-list-box .respond-list .respond-item .respond-item-key:hover:after{background-color:#eee;border-radius:4px;content:"";display:block;height:35px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:35px;z-index:-1} diff --git a/.output/public/static/error-404.7fc72018.css b/.output/public/static/error-404.7fc72018.css deleted file mode 100644 index cfabbe5..0000000 --- a/.output/public/static/error-404.7fc72018.css +++ /dev/null @@ -1 +0,0 @@ -.spotlight[data-v-ccd3db62]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-ccd3db62]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-ccd3db62]{background-color:#ffffff4d}.gradient-border[data-v-ccd3db62]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-ccd3db62]{background-color:#1414144d}.gradient-border[data-v-ccd3db62]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}.gradient-border[data-v-ccd3db62]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-ccd3db62]:hover:before{background-position:-50% 0;opacity:1}.bg-white[data-v-ccd3db62]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.cursor-pointer[data-v-ccd3db62]{cursor:pointer}.flex[data-v-ccd3db62]{display:flex}.grid[data-v-ccd3db62]{display:grid}.place-content-center[data-v-ccd3db62]{place-content:center}.items-center[data-v-ccd3db62]{align-items:center}.justify-center[data-v-ccd3db62]{justify-content:center}.font-sans[data-v-ccd3db62]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-medium[data-v-ccd3db62]{font-weight:500}.font-light[data-v-ccd3db62]{font-weight:300}.text-8xl[data-v-ccd3db62]{font-size:6rem;line-height:1}.text-xl[data-v-ccd3db62]{font-size:1.25rem;line-height:1.75rem}.leading-tight[data-v-ccd3db62]{line-height:1.25}.mb-8[data-v-ccd3db62]{margin-bottom:2rem}.mb-16[data-v-ccd3db62]{margin-bottom:4rem}.max-w-520px[data-v-ccd3db62]{max-width:520px}.min-h-screen[data-v-ccd3db62]{min-height:100vh}.overflow-hidden[data-v-ccd3db62]{overflow:hidden}.px-8[data-v-ccd3db62]{padding-left:2rem;padding-right:2rem}.py-2[data-v-ccd3db62]{padding-bottom:.5rem;padding-top:.5rem}.px-4[data-v-ccd3db62]{padding-left:1rem;padding-right:1rem}.fixed[data-v-ccd3db62]{position:fixed}.left-0[data-v-ccd3db62]{left:0}.right-0[data-v-ccd3db62]{right:0}.text-center[data-v-ccd3db62]{text-align:center}.text-black[data-v-ccd3db62]{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.antialiased[data-v-ccd3db62]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-full[data-v-ccd3db62]{width:100%}.z-10[data-v-ccd3db62]{z-index:10}.z-20[data-v-ccd3db62]{z-index:20}@media (min-width:640px){.sm\:text-4xl[data-v-ccd3db62]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-ccd3db62]{font-size:1.25rem;line-height:1.75rem}.sm\:text-10xl[data-v-ccd3db62]{font-size:10rem;line-height:1}.sm\:px-0[data-v-ccd3db62]{padding-left:0;padding-right:0}.sm\:py-3[data-v-ccd3db62]{padding-bottom:.75rem;padding-top:.75rem}.sm\:px-6[data-v-ccd3db62]{padding-left:1.5rem;padding-right:1.5rem}}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-ccd3db62]{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.dark\:text-white[data-v-ccd3db62]{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}} diff --git a/.output/public/static/error-404.CZkObG7r.css b/.output/public/static/error-404.CZkObG7r.css new file mode 100644 index 0000000..75edfc5 --- /dev/null +++ b/.output/public/static/error-404.CZkObG7r.css @@ -0,0 +1 @@ +.spotlight[data-v-075d74b5]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-075d74b5]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-075d74b5]{background-color:#ffffff4d}.gradient-border[data-v-075d74b5]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-075d74b5]{background-color:#1414144d}.gradient-border[data-v-075d74b5]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-075d74b5]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-075d74b5]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-075d74b5]{position:fixed}.left-0[data-v-075d74b5]{left:0}.right-0[data-v-075d74b5]{right:0}.z-10[data-v-075d74b5]{z-index:10}.z-20[data-v-075d74b5]{z-index:20}.grid[data-v-075d74b5]{display:grid}.mb-16[data-v-075d74b5]{margin-bottom:4rem}.mb-8[data-v-075d74b5]{margin-bottom:2rem}.max-w-520px[data-v-075d74b5]{max-width:520px}.min-h-screen[data-v-075d74b5]{min-height:100vh}.w-full[data-v-075d74b5]{width:100%}.flex[data-v-075d74b5]{display:flex}.cursor-pointer[data-v-075d74b5]{cursor:pointer}.place-content-center[data-v-075d74b5]{place-content:center}.items-center[data-v-075d74b5]{align-items:center}.justify-center[data-v-075d74b5]{justify-content:center}.overflow-hidden[data-v-075d74b5]{overflow:hidden}.bg-white[data-v-075d74b5]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-075d74b5]{padding-left:1rem;padding-right:1rem}.px-8[data-v-075d74b5]{padding-left:2rem;padding-right:2rem}.py-2[data-v-075d74b5]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-075d74b5]{text-align:center}.text-8xl[data-v-075d74b5]{font-size:6rem;line-height:1}.text-xl[data-v-075d74b5]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-075d74b5]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-075d74b5]{font-weight:300}.font-medium[data-v-075d74b5]{font-weight:500}.leading-tight[data-v-075d74b5]{line-height:1.25}.font-sans[data-v-075d74b5]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-075d74b5]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-075d74b5]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-075d74b5]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-075d74b5]{padding-left:0;padding-right:0}.sm\:px-6[data-v-075d74b5]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-075d74b5]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-075d74b5]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-075d74b5]{font-size:1.25rem;line-height:1.75rem}} diff --git a/.output/public/static/error-404.e25a8fb9.js b/.output/public/static/error-404.e25a8fb9.js deleted file mode 100644 index a77a088..0000000 --- a/.output/public/static/error-404.e25a8fb9.js +++ /dev/null @@ -1 +0,0 @@ -import{u as C,d as R,c as y,h as q,r as S,o as A,a as B,b as E,e as z,f as I,g as w,i as L,j as T,p as j,k as U,n as V,w as D,l as H,m as M,q as k,s as O,_ as $,t as F,v as G,x as Q,y as g,z as _,A as X,B as J,C as K,D as W,E as Y}from"./entry.5472f4d7.js";async function N(t,a=C()){const{path:l,matched:e}=a.resolve(t);if(!e.length||(a._routePreloaded||(a._routePreloaded=new Set),a._routePreloaded.has(l)))return;const r=a._preloadPromises=a._preloadPromises||[];if(r.length>4)return Promise.all(r).then(()=>N(t,a));a._routePreloaded.add(l);const s=e.map(i=>{var n;return(n=i.components)==null?void 0:n.default}).filter(i=>typeof i=="function");for(const i of s){const n=Promise.resolve(i()).catch(()=>{}).finally(()=>r.splice(r.indexOf(n)));r.push(n)}await Promise.all(r)}const Z=(...t)=>t.find(a=>a!==void 0),ee="noopener noreferrer";/*! @__NO_SIDE_EFFECTS__ */function te(t){const a=t.componentName||"NuxtLink",l=(e,r)=>{if(!e||t.trailingSlash!=="append"&&t.trailingSlash!=="remove")return e;const s=t.trailingSlash==="append"?D:H;if(typeof e=="string")return s(e,!0);const i="path"in e?e.path:r(e).path;return{...e,name:void 0,path:s(i,!0)}};return R({name:a,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},setup(e,{slots:r}){const s=C(),i=M(),n=y(()=>{const o=e.to||e.href||"";return l(o,s.resolve)}),f=y(()=>typeof n.value=="string"&&q(n.value,{acceptRelative:!0})),h=y(()=>e.external||e.target&&e.target!=="_self"?!0:typeof n.value=="object"?!1:n.value===""||f.value),b=S(!1),v=S(null),P=o=>{var d;v.value=e.custom?(d=o==null?void 0:o.$el)==null?void 0:d.nextElementSibling:o==null?void 0:o.$el};if(e.prefetch!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!re()){const d=k();let m,c=null;A(()=>{const x=ne();B(()=>{m=E(()=>{var p;(p=v==null?void 0:v.value)!=null&&p.tagName&&(c=x.observe(v.value,async()=>{c==null||c(),c=null;const u=typeof n.value=="string"?n.value:s.resolve(n.value).fullPath;await Promise.all([d.hooks.callHook("link:prefetch",u).catch(()=>{}),!h.value&&N(n.value,s).catch(()=>{})]),b.value=!0}))})})}),z(()=>{m&&I(m),c==null||c(),c=null})}return()=>{var x,p;if(!h.value){const u={ref:P,to:n.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(b.value&&(u.class=e.prefetchedClass||t.prefetchedClass),u.rel=e.rel),w(L("RouterLink"),u,r.default)}const o=typeof n.value=="object"?((x=s.resolve(n.value))==null?void 0:x.href)??null:n.value&&!e.external&&!f.value?l(T(i.app.baseURL,n.value),s.resolve):n.value||null,d=e.target||null,m=e.noRel?null:Z(e.rel,t.externalRelAttribute,o?ee:"")||null,c=()=>O(o,{replace:e.replace});return e.custom?r.default?r.default({href:o,navigate:c,get route(){if(!o)return;const u=j(o);return{path:u.pathname,fullPath:u.pathname,get query(){return U(u.search)},hash:u.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:o}},rel:m,target:d,isExternal:h.value,isActive:!1,isExactActive:!1}):null:w("a",{ref:v,href:o,rel:m,target:d},(p=r.default)==null?void 0:p.call(r))}}})}const ae=te(V);function ne(){const t=k();if(t._observer)return t._observer;let a=null;const l=new Map,e=(s,i)=>(a||(a=new IntersectionObserver(n=>{for(const f of n){const h=l.get(f.target);(f.isIntersecting||f.intersectionRatio>0)&&h&&h()}})),l.set(s,i),a.observe(s),()=>{l.delete(s),a.unobserve(s),l.size===0&&(a.disconnect(),a=null)});return t._observer={observe:e}}function re(){const t=navigator.connection;return!!(t&&(t.saveData||/2g/.test(t.effectiveType)))}const oe=t=>(W("data-v-ccd3db62"),t=t(),Y(),t),se={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},le=oe(()=>g("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),ie={class:"max-w-520px text-center z-20"},ce=["textContent"],ue=["textContent"],de={class:"w-full flex items-center justify-center"},fe={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const a=t;return F({title:`${a.statusCode} - ${a.statusMessage} | ${a.appName}`,script:[],style:[{children:'*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e0e0e0}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}a{color:inherit;text-decoration:inherit}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}'}]}),(l,e)=>{const r=ae;return G(),Q("div",se,[le,g("div",ie,[g("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:_(t.statusCode)},null,8,ce),g("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:_(t.description)},null,8,ue),g("div",de,[X(r,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:J(()=>[K(_(t.backHome),1)]),_:1})])])])}}},ve=$(fe,[["__scopeId","data-v-ccd3db62"]]);export{ve as default}; diff --git a/.output/public/static/error-500.00e01ec2.js b/.output/public/static/error-500.00e01ec2.js deleted file mode 100644 index efec47b..0000000 --- a/.output/public/static/error-500.00e01ec2.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,t as a,v as r,x as n,y as e,z as s,D as l,E as d}from"./entry.5472f4d7.js";const c=t=>(l("data-v-df79c84d"),t=t(),d(),t),p={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},f=c(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),h={class:"max-w-520px text-center"},g=["textContent"],m=["textContent"],x={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const o=t;return a({title:`${o.statusCode} - ${o.statusMessage} | ${o.appName}`,script:[],style:[{children:'*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e0e0e0}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}'}]}),(u,b)=>(r(),n("div",p,[f,e("div",h,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:s(t.statusCode)},null,8,g),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:s(t.description)},null,8,m)])]))}},w=i(x,[["__scopeId","data-v-df79c84d"]]);export{w as default}; diff --git a/.output/public/static/error-500.BFrSi6nG.css b/.output/public/static/error-500.BFrSi6nG.css new file mode 100644 index 0000000..6ee7a65 --- /dev/null +++ b/.output/public/static/error-500.BFrSi6nG.css @@ -0,0 +1 @@ +.spotlight[data-v-84d937c0]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-84d937c0]{position:fixed}.-bottom-1\/2[data-v-84d937c0]{bottom:-50%}.left-0[data-v-84d937c0]{left:0}.right-0[data-v-84d937c0]{right:0}.grid[data-v-84d937c0]{display:grid}.mb-16[data-v-84d937c0]{margin-bottom:4rem}.mb-8[data-v-84d937c0]{margin-bottom:2rem}.h-1\/2[data-v-84d937c0]{height:50%}.max-w-520px[data-v-84d937c0]{max-width:520px}.min-h-screen[data-v-84d937c0]{min-height:100vh}.place-content-center[data-v-84d937c0]{place-content:center}.overflow-hidden[data-v-84d937c0]{overflow:hidden}.bg-white[data-v-84d937c0]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-84d937c0]{padding-left:2rem;padding-right:2rem}.text-center[data-v-84d937c0]{text-align:center}.text-8xl[data-v-84d937c0]{font-size:6rem;line-height:1}.text-xl[data-v-84d937c0]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-84d937c0]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-84d937c0]{font-weight:300}.font-medium[data-v-84d937c0]{font-weight:500}.leading-tight[data-v-84d937c0]{line-height:1.25}.font-sans[data-v-84d937c0]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-84d937c0]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-84d937c0]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-84d937c0]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-84d937c0]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-84d937c0]{font-size:2.25rem;line-height:2.5rem}} diff --git a/.output/public/static/error-500.c5df6088.css b/.output/public/static/error-500.c5df6088.css deleted file mode 100644 index 27ea077..0000000 --- a/.output/public/static/error-500.c5df6088.css +++ /dev/null @@ -1 +0,0 @@ -.spotlight[data-v-df79c84d]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.bg-white[data-v-df79c84d]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.grid[data-v-df79c84d]{display:grid}.place-content-center[data-v-df79c84d]{place-content:center}.font-sans[data-v-df79c84d]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-medium[data-v-df79c84d]{font-weight:500}.font-light[data-v-df79c84d]{font-weight:300}.h-1\/2[data-v-df79c84d]{height:50%}.text-8xl[data-v-df79c84d]{font-size:6rem;line-height:1}.text-xl[data-v-df79c84d]{font-size:1.25rem;line-height:1.75rem}.leading-tight[data-v-df79c84d]{line-height:1.25}.mb-8[data-v-df79c84d]{margin-bottom:2rem}.mb-16[data-v-df79c84d]{margin-bottom:4rem}.max-w-520px[data-v-df79c84d]{max-width:520px}.min-h-screen[data-v-df79c84d]{min-height:100vh}.overflow-hidden[data-v-df79c84d]{overflow:hidden}.px-8[data-v-df79c84d]{padding-left:2rem;padding-right:2rem}.fixed[data-v-df79c84d]{position:fixed}.left-0[data-v-df79c84d]{left:0}.right-0[data-v-df79c84d]{right:0}.-bottom-1\/2[data-v-df79c84d]{bottom:-50%}.text-center[data-v-df79c84d]{text-align:center}.text-black[data-v-df79c84d]{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.antialiased[data-v-df79c84d]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (min-width:640px){.sm\:text-4xl[data-v-df79c84d]{font-size:2.25rem;line-height:2.5rem}.sm\:text-10xl[data-v-df79c84d]{font-size:10rem;line-height:1}.sm\:px-0[data-v-df79c84d]{padding-left:0;padding-right:0}}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-df79c84d]{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.dark\:text-white[data-v-df79c84d]{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}} diff --git a/.output/public/static/logo.6622f82d.png b/.output/public/static/logo.DlviZpxD.png similarity index 100% rename from .output/public/static/logo.6622f82d.png rename to .output/public/static/logo.DlviZpxD.png diff --git a/.output/public/static/menu-icon-gray.d61f02b1.svg b/.output/public/static/menu-icon-gray.d61f02b1.svg deleted file mode 100644 index 1abc84a..0000000 --- a/.output/public/static/menu-icon-gray.d61f02b1.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.output/public/static/tick-no.179037b3.svg b/.output/public/static/tick-no.179037b3.svg deleted file mode 100644 index 987610a..0000000 --- a/.output/public/static/tick-no.179037b3.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.output/public/static/tick-option.e092d22f.svg b/.output/public/static/tick-option.e092d22f.svg deleted file mode 100644 index 3149e3d..0000000 --- a/.output/public/static/tick-option.e092d22f.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/public/static/tick-orange.233abc69.svg b/.output/public/static/tick-orange.233abc69.svg deleted file mode 100644 index c31fcfa..0000000 --- a/.output/public/static/tick-orange.233abc69.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/public/static/triangle-icon.c39ff2e7.svg b/.output/public/static/triangle-icon.c39ff2e7.svg deleted file mode 100644 index b66289b..0000000 --- a/.output/public/static/triangle-icon.c39ff2e7.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/public/static/view-icon.da7fef35.svg b/.output/public/static/view-icon.da7fef35.svg deleted file mode 100644 index 69e469c..0000000 --- a/.output/public/static/view-icon.da7fef35.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.output/server/chunks/_/error-500.mjs b/.output/server/chunks/_/error-500.mjs new file mode 100644 index 0000000..4220293 --- /dev/null +++ b/.output/server/chunks/_/error-500.mjs @@ -0,0 +1,8 @@ +const _messages = { "appName": "Nuxt", "version": "", "statusCode": 500, "statusMessage": "Server error", "description": "This page is temporarily unavailable." }; +const template = (messages) => { + messages = { ..._messages, ...messages }; + return '' + messages.statusCode + " - " + messages.statusMessage + " | " + messages.appName + `

' + -((__t = ( messages.statusCode )) == null ? '' : __t) + -'

' + -((__t = ( messages.description )) == null ? '' : __t) + -'

'; -return __p -}; -const _template = (messages) => _render({ messages: { ..._messages, ...messages } }); -const template = _template; - -export { template }; -//# sourceMappingURL=error-500.mjs.map diff --git a/.output/server/chunks/error-500.mjs.map b/.output/server/chunks/error-500.mjs.map deleted file mode 100644 index 5520258..0000000 --- a/.output/server/chunks/error-500.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error-500.mjs","sources":["../../../node_modules/@nuxt/ui-templates/dist/templates/error-500.mjs"],"sourcesContent":null,"names":[],"mappings":"","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/.output/server/chunks/handlers/renderer.mjs b/.output/server/chunks/handlers/renderer.mjs deleted file mode 100644 index 25914b9..0000000 --- a/.output/server/chunks/handlers/renderer.mjs +++ /dev/null @@ -1,384 +0,0 @@ -import { getRequestDependencies, getPreloadLinks, getPrefetchLinks, createRenderer } from 'vue-bundle-renderer/runtime'; -import { e as eventHandler, s as setResponseHeader, a as send, g as getResponseStatus, b as setResponseStatus, c as setResponseHeaders, u as useNitroApp, j as joinURL, d as useRuntimeConfig, f as getQuery, h as createError, i as getRouteRules, k as getResponseStatusText } from '../nitro/node-server.mjs'; -import { stringify, uneval } from 'devalue'; -import { renderToString } from 'vue/server-renderer'; -import { renderSSRHead } from '@unhead/ssr'; -import { version, unref } from 'vue'; -import { createServerHead as createServerHead$1 } from 'unhead'; -import { defineHeadPlugin } from '@unhead/shared'; - -function defineRenderHandler(handler) { - return eventHandler(async (event) => { - if (event.path.endsWith("/favicon.ico")) { - setResponseHeader(event, "Content-Type", "image/x-icon"); - return send( - event, - "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" - ); - } - const response = await handler(event); - if (!response) { - const _currentStatus = getResponseStatus(event); - setResponseStatus(event, _currentStatus === 200 ? 500 : _currentStatus); - return send( - event, - "No response returned from render handler: " + event.path - ); - } - const nitroApp = useNitroApp(); - await nitroApp.hooks.callHook("render:response", response, { event }); - if (response.headers) { - setResponseHeaders(event, response.headers); - } - if (response.statusCode || response.statusMessage) { - setResponseStatus(event, response.statusCode, response.statusMessage); - } - return response.body; - }); -} - -const Vue3 = version.startsWith("3"); - -function resolveUnref(r) { - return typeof r === "function" ? r() : unref(r); -} -function resolveUnrefHeadInput(ref, lastKey = "") { - if (ref instanceof Promise) - return ref; - const root = resolveUnref(ref); - if (!ref || !root) - return root; - if (Array.isArray(root)) - return root.map((r) => resolveUnrefHeadInput(r, lastKey)); - if (typeof root === "object") { - return Object.fromEntries( - Object.entries(root).map(([k, v]) => { - if (k === "titleTemplate" || k.startsWith("on")) - return [k, unref(v)]; - return [k, resolveUnrefHeadInput(v, k)]; - }) - ); - } - return root; -} - -const VueReactivityPlugin = defineHeadPlugin({ - hooks: { - "entries:resolve": function(ctx) { - for (const entry of ctx.entries) - entry.resolvedInput = resolveUnrefHeadInput(entry.input); - } - } -}); - -const headSymbol = "usehead"; -function vueInstall(head) { - const plugin = { - install(app) { - if (Vue3) { - app.config.globalProperties.$unhead = head; - app.config.globalProperties.$head = head; - app.provide(headSymbol, head); - } - } - }; - return plugin.install; -} -function createServerHead(options = {}) { - const head = createServerHead$1(options); - head.use(VueReactivityPlugin); - head.install = vueInstall(head); - return head; -} - -const unheadPlugins = []; - -const appHead = {"meta":[{"name":"viewport","content":"width=device-width, initial-scale=1"},{"charset":"utf-8"}],"link":[{"rel":"stylesheet","href":"//bbs.gter.net/data/cache/style_2_common.css?Z62"}],"style":[],"script":[{"src":"https://app.gter.net/bottom?tpl=header&menukey=ask"},{"src":"https://app.gter.net/bottom?tpl=footer,popupnotification","body":true},{"src":"//bbs.gter.net/static/js/common.js","body":true,"charset":"gb2312"},{"innerHTML":"\n window.userInfoWin = {}\n STYLEID = \"2\";\n STATICURL = \"static/\";\n IMGDIR = \"https://bbs.gter.net/template/archy_plt8/image\";\n VERHASH = \"Z62\";\n charset = \"gbk\";\n discuz_uid = \"0\";\n cookiepre = \"4B5x_c0ae_\";\n cookiedomain = \"gter.net\";\n cookiepath = \"/\";\n showusercard = \"1\";\n attackevasive = \"0\";\n disallowfloat = \"\";\n creditnotice = \",\";\n defaultstyle = \"\";\n REPORTURL = \"aHR0cDovL2Jicy5ndGVyLm5ldC9mb3J1bS5waHA/dGlkPTI0MDYzNTYmZ290bz1sYXN0cG9zdA==\";\n SITEURL = \"https://ask.gter.net/\";\n JSPATH = \"static/js/\";","type":"text/javascript","charset":"utf-8"}],"noscript":[]}; - -const appRootId = "__nuxt"; - -const appRootTag = "div"; - -function buildAssetsDir() { - return useRuntimeConfig().app.buildAssetsDir; -} -function buildAssetsURL(...path) { - return joinURL(publicAssetsURL(), buildAssetsDir(), ...path); -} -function publicAssetsURL(...path) { - const publicBase = useRuntimeConfig().app.cdnURL || useRuntimeConfig().app.baseURL; - return path.length ? joinURL(publicBase, ...path) : publicBase; -} - -globalThis.__buildAssetsURL = buildAssetsURL; -globalThis.__publicAssetsURL = publicAssetsURL; -const getClientManifest = () => import('../app/client.manifest.mjs').then((r) => r.default || r).then((r) => typeof r === "function" ? r() : r); -const getEntryIds = () => getClientManifest().then((r) => Object.values(r).filter( - (r2) => ( - // @ts-expect-error internal key set by CSS inlining configuration - r2._globalCSS - ) -).map((r2) => r2.src)); -const getServerEntry = () => import('../app/server.mjs').then((r) => r.default || r); -const getSSRStyles = lazyCachedFunction(() => import('../app/styles.mjs').then((r) => r.default || r)); -const getSSRRenderer = lazyCachedFunction(async () => { - const manifest = await getClientManifest(); - if (!manifest) { - throw new Error("client.manifest is not available"); - } - const createSSRApp = await getServerEntry(); - if (!createSSRApp) { - throw new Error("Server bundle is not available"); - } - const options = { - manifest, - renderToString: renderToString$1, - buildAssetsURL - }; - const renderer = createRenderer(createSSRApp, options); - async function renderToString$1(input, context) { - const html = await renderToString(input, context); - return `<${appRootTag}${` id="${appRootId}"` }>${html}`; - } - return renderer; -}); -const getSPARenderer = lazyCachedFunction(async () => { - const manifest = await getClientManifest(); - const spaTemplate = await import('../rollup/_virtual_spa-template.mjs').then((r) => r.template).catch(() => ""); - const options = { - manifest, - renderToString: () => `<${appRootTag}${` id="${appRootId}"` }>${spaTemplate}`, - buildAssetsURL - }; - const renderer = createRenderer(() => () => { - }, options); - const result = await renderer.renderToString({}); - const renderToString = (ssrContext) => { - const config = useRuntimeConfig(); - ssrContext.modules = ssrContext.modules || /* @__PURE__ */ new Set(); - ssrContext.payload = { - _errors: {}, - serverRendered: false, - data: {}, - state: {} - }; - ssrContext.config = { - public: config.public, - app: config.app - }; - return Promise.resolve(result); - }; - return { - rendererContext: renderer.rendererContext, - renderToString - }; -}); -const PAYLOAD_URL_RE = /\/_payload(\.[a-zA-Z0-9]+)?.json(\?.*)?$/ ; -const renderer = defineRenderHandler(async (event) => { - const nitroApp = useNitroApp(); - const ssrError = event.path.startsWith("/__nuxt_error") ? getQuery(event) : null; - if (ssrError && ssrError.statusCode) { - ssrError.statusCode = parseInt(ssrError.statusCode); - } - if (ssrError && !("__unenv__" in event.node.req)) { - throw createError({ - statusCode: 404, - statusMessage: "Page Not Found: /__nuxt_error" - }); - } - const islandContext = void 0; - let url = ssrError?.url || islandContext?.url || event.path; - const isRenderingPayload = PAYLOAD_URL_RE.test(url) && !islandContext; - if (isRenderingPayload) { - url = url.substring(0, url.lastIndexOf("/")) || "/"; - event._path = url; - event.node.req.url = url; - } - const routeOptions = getRouteRules(event); - const head = createServerHead({ - plugins: unheadPlugins - }); - const headEntryOptions = { mode: "server" }; - head.push(appHead, headEntryOptions); - const ssrContext = { - url, - event, - runtimeConfig: useRuntimeConfig(), - noSSR: event.context.nuxt?.noSSR || routeOptions.ssr === false && !islandContext || (false), - head, - error: !!ssrError, - nuxt: void 0, - /* NuxtApp */ - payload: ssrError ? { error: ssrError } : {}, - _payloadReducers: {}, - islandContext - }; - const renderer = ssrContext.noSSR ? await getSPARenderer() : await getSSRRenderer(); - const _rendered = await renderer.renderToString(ssrContext).catch(async (error) => { - if (ssrContext._renderResponse && error.message === "skipping render") { - return {}; - } - const _err = !ssrError && ssrContext.payload?.error || error; - await ssrContext.nuxt?.hooks.callHook("app:error", _err); - throw _err; - }); - await ssrContext.nuxt?.hooks.callHook("app:rendered", { ssrContext, renderResult: _rendered }); - if (ssrContext._renderResponse) { - return ssrContext._renderResponse; - } - if (ssrContext.payload?.error && !ssrError) { - throw ssrContext.payload.error; - } - if (isRenderingPayload) { - const response2 = renderPayloadResponse(ssrContext); - return response2; - } - { - const source = ssrContext.modules ?? ssrContext._registeredComponents; - if (source) { - for (const id of await getEntryIds()) { - source.add(id); - } - } - } - const inlinedStyles = await renderInlineStyles(ssrContext.modules ?? ssrContext._registeredComponents ?? []) ; - const NO_SCRIPTS = routeOptions.experimentalNoScripts; - const { styles, scripts } = getRequestDependencies(ssrContext, renderer.rendererContext); - head.push({ style: inlinedStyles }); - head.push({ - link: Object.values(styles).map( - (resource) => ({ rel: "stylesheet", href: renderer.rendererContext.buildAssetsURL(resource.file) }) - ) - }, headEntryOptions); - if (!NO_SCRIPTS) { - head.push({ - link: getPreloadLinks(ssrContext, renderer.rendererContext) - }, headEntryOptions); - head.push({ - link: getPrefetchLinks(ssrContext, renderer.rendererContext) - }, headEntryOptions); - head.push({ - script: renderPayloadJsonScript({ id: "__NUXT_DATA__", ssrContext, data: ssrContext.payload }) - }, { - ...headEntryOptions, - // this should come before another end of body scripts - tagPosition: "bodyClose", - tagPriority: "high" - }); - } - if (!routeOptions.experimentalNoScripts) { - head.push({ - script: Object.values(scripts).map((resource) => ({ - type: resource.module ? "module" : null, - src: renderer.rendererContext.buildAssetsURL(resource.file), - defer: resource.module ? null : true, - crossorigin: "" - })) - }, headEntryOptions); - } - const { headTags, bodyTags, bodyTagsOpen, htmlAttrs, bodyAttrs } = await renderSSRHead(head); - const htmlContext = { - island: Boolean(islandContext), - htmlAttrs: [htmlAttrs], - head: normalizeChunks([headTags, ssrContext.styles]), - bodyAttrs: [bodyAttrs], - bodyPrepend: normalizeChunks([bodyTagsOpen, ssrContext.teleports?.body]), - body: [_rendered.html], - bodyAppend: [bodyTags] - }; - await nitroApp.hooks.callHook("render:html", htmlContext, { event }); - const response = { - body: renderHTMLDocument(htmlContext), - statusCode: getResponseStatus(event), - statusMessage: getResponseStatusText(event), - headers: { - "content-type": "text/html;charset=utf-8", - "x-powered-by": "Nuxt" - } - }; - return response; -}); -function lazyCachedFunction(fn) { - let res = null; - return () => { - if (res === null) { - res = fn().catch((err) => { - res = null; - throw err; - }); - } - return res; - }; -} -function normalizeChunks(chunks) { - return chunks.filter(Boolean).map((i) => i.trim()); -} -function joinTags(tags) { - return tags.join(""); -} -function joinAttrs(chunks) { - return chunks.join(" "); -} -function renderHTMLDocument(html) { - return ` - -${joinTags(html.head)} -${joinTags(html.bodyPrepend)}${joinTags(html.body)}${joinTags(html.bodyAppend)} -`; -} -async function renderInlineStyles(usedModules) { - const styleMap = await getSSRStyles(); - const inlinedStyles = /* @__PURE__ */ new Set(); - for (const mod of usedModules) { - if (mod in styleMap) { - for (const style of await styleMap[mod]()) { - inlinedStyles.add(style); - } - } - } - return Array.from(inlinedStyles).map((style) => ({ innerHTML: style })); -} -function renderPayloadResponse(ssrContext) { - return { - body: stringify(splitPayload(ssrContext).payload, ssrContext._payloadReducers) , - statusCode: getResponseStatus(ssrContext.event), - statusMessage: getResponseStatusText(ssrContext.event), - headers: { - "content-type": "application/json;charset=utf-8" , - "x-powered-by": "Nuxt" - } - }; -} -function renderPayloadJsonScript(opts) { - const contents = opts.data ? stringify(opts.data, opts.ssrContext._payloadReducers) : ""; - const payload = { - type: "application/json", - id: opts.id, - innerHTML: contents, - "data-ssr": !(opts.ssrContext.noSSR) - }; - if (opts.src) { - payload["data-src"] = opts.src; - } - return [ - payload, - { - innerHTML: `window.__NUXT__={};window.__NUXT__.config=${uneval(opts.ssrContext.config)}` - } - ]; -} -function splitPayload(ssrContext) { - const { data, prerenderedAt, ...initial } = ssrContext.payload; - return { - initial: { ...initial, prerenderedAt }, - payload: { data, prerenderedAt } - }; -} - -const renderer$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - default: renderer -}); - -export { buildAssetsURL as b, renderer$1 as r }; -//# sourceMappingURL=renderer.mjs.map diff --git a/.output/server/chunks/handlers/renderer.mjs.map b/.output/server/chunks/handlers/renderer.mjs.map deleted file mode 100644 index d558b28..0000000 --- a/.output/server/chunks/handlers/renderer.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"renderer.mjs","sources":["../../../../node_modules/nitropack/dist/runtime/renderer.mjs","../../../../node_modules/@unhead/vue/dist/shared/vue.cf295fb1.mjs","../../../../node_modules/nuxt/dist/core/runtime/nitro/paths.js","../../../../node_modules/nuxt/dist/core/runtime/nitro/renderer.js"],"sourcesContent":null,"names":["renderToString","_renderToString"],"mappings":"","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file diff --git a/.output/server/chunks/nitro/node-server.mjs.map b/.output/server/chunks/nitro/node-server.mjs.map deleted file mode 100644 index 3573b94..0000000 --- a/.output/server/chunks/nitro/node-server.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"node-server.mjs","sources":["../../../../node_modules/destr/dist/index.mjs","../../../../node_modules/ufo/dist/index.mjs","../../../../node_modules/radix3/dist/index.mjs","../../../../node_modules/defu/dist/defu.mjs","../../../../node_modules/unenv/runtime/_internal/utils.mjs","../../../../node_modules/unenv/runtime/node/events/_events.mjs","../../../../node_modules/unenv/runtime/node/events/index.mjs","../../../../node_modules/unenv/runtime/node/stream/readable.mjs","../../../../node_modules/unenv/runtime/node/stream/writable.mjs","../../../../node_modules/unenv/runtime/node/stream/duplex.mjs","../../../../node_modules/unenv/runtime/node/net/socket.mjs","../../../../node_modules/unenv/runtime/node/http/_request.mjs","../../../../node_modules/unenv/runtime/node/http/_response.mjs","../../../../node_modules/h3/dist/index.mjs","../../../../node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/ofetch/dist/shared/ofetch.00501375.mjs","../../../../node_modules/ofetch/dist/node.mjs","../../../../node_modules/unenv/runtime/fetch/call.mjs","../../../../node_modules/unenv/runtime/fetch/index.mjs","../../../../node_modules/hookable/dist/index.mjs","../../../../node_modules/scule/dist/index.mjs","../../../../node_modules/klona/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/config.mjs","../../../../node_modules/ohash/dist/index.mjs","../../../../node_modules/unstorage/dist/shared/unstorage.8581f561.mjs","../../../../node_modules/unstorage/dist/index.mjs","../../../../node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/nitropack/dist/runtime/storage.mjs","../../../../node_modules/nitropack/dist/runtime/cache.mjs","../../../../node_modules/nitropack/dist/runtime/utils.mjs","../../../../node_modules/nitropack/dist/runtime/route-rules.mjs","../../../../node_modules/nuxt/dist/core/runtime/nitro/error.js","../../../../node_modules/pathe/dist/shared/pathe.ff20891b.mjs","../../../../node_modules/nitropack/dist/runtime/static.mjs","../../../../node_modules/nitropack/dist/runtime/app.mjs","../../../../node_modules/nitropack/dist/runtime/lib/http-graceful-shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/entries/node-server.mjs"],"sourcesContent":null,"names":["getQuery","createRouter","EventEmitter","_EventEmitter","createError","nullBodyResponses","createFetch","nodeFetch","Headers","Headers$1","AbortController$1","_inlineAppConfig","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","createRadixRouter","createLocalFetch","gracefulShutdown","HttpsServer","HttpServer"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]} \ No newline at end of file diff --git a/.output/server/chunks/routes/renderer.mjs b/.output/server/chunks/routes/renderer.mjs new file mode 100644 index 0000000..a41683d --- /dev/null +++ b/.output/server/chunks/routes/renderer.mjs @@ -0,0 +1,409 @@ +import { createRenderer, getRequestDependencies, getPreloadLinks, getPrefetchLinks } from 'vue-bundle-renderer/runtime'; +import { j as joinRelativeURL, u as useRuntimeConfig, g as getResponseStatusText, c as getResponseStatus, e as defineRenderHandler, f as getQuery, h as createError, i as getRouteRules, b as useNitroApp } from '../_/nitro.mjs'; +import { createHead as createHead$1, propsToString, renderSSRHead } from 'unhead/server'; +import { walkResolver } from 'unhead/utils'; +import { toValue, isRef, hasInjectionContext, inject, ref, watchEffect, getCurrentInstance, onBeforeUnmount, onDeactivated, onActivated } from 'vue'; +import { renderToString } from 'vue/server-renderer'; +import { stringify, uneval } from 'devalue'; +import { DeprecationsPlugin, PromisesPlugin, TemplateParamsPlugin, AliasSortingPlugin } from 'unhead/plugins'; + +const VueResolver = (_, value) => { + return isRef(value) ? toValue(value) : value; +}; + +const headSymbol = "usehead"; +function vueInstall(head) { + const plugin = { + install(app) { + app.config.globalProperties.$unhead = head; + app.config.globalProperties.$head = head; + app.provide(headSymbol, head); + } + }; + return plugin.install; +} + +function injectHead() { + if (hasInjectionContext()) { + const instance = inject(headSymbol); + if (!instance) { + throw new Error("useHead() was called without provide context, ensure you call it through the setup() function."); + } + return instance; + } + throw new Error("useHead() was called without provide context, ensure you call it through the setup() function."); +} +function useHead(input, options = {}) { + const head = options.head || injectHead(); + return head.ssr ? head.push(input || {}, options) : clientUseHead(head, input, options); +} +function clientUseHead(head, input, options = {}) { + const deactivated = ref(false); + let entry; + watchEffect(() => { + const i = deactivated.value ? {} : walkResolver(input, VueResolver); + if (entry) { + entry.patch(i); + } else { + entry = head.push(i, options); + } + }); + const vm = getCurrentInstance(); + if (vm) { + onBeforeUnmount(() => { + entry.dispose(); + }); + onDeactivated(() => { + deactivated.value = true; + }); + onActivated(() => { + deactivated.value = false; + }); + } + return entry; +} + +function createHead(options = {}) { + const head = createHead$1({ + ...options, + propResolvers: [VueResolver] + }); + head.install = vueInstall(head); + return head; +} + +const appHead = {"meta":[{"name":"viewport","content":"width=device-width, initial-scale=1"},{"charset":"utf-8"}],"link":[{"rel":"stylesheet","href":"//bbs.gter.net/data/cache/style_2_common.css?Z62"}],"style":[],"script":[{"src":"https://app.gter.net/bottom?tpl=header&menukey=ask"},{"src":"https://app.gter.net/bottom?tpl=footer,popupnotification","body":true},{"src":"//bbs.gter.net/static/js/common.js","body":true,"charset":"gb2312"},{"innerHTML":"\n window.userInfoWin = {}\n STYLEID = \"2\";\n STATICURL = \"static/\";\n IMGDIR = \"https://bbs.gter.net/template/archy_plt8/image\";\n VERHASH = \"Z62\";\n charset = \"gbk\";\n discuz_uid = \"0\";\n cookiepre = \"4B5x_c0ae_\";\n cookiedomain = \"gter.net\";\n cookiepath = \"/\";\n showusercard = \"1\";\n attackevasive = \"0\";\n disallowfloat = \"\";\n creditnotice = \",\";\n defaultstyle = \"\";\n REPORTURL = \"aHR0cDovL2Jicy5ndGVyLm5ldC9mb3J1bS5waHA/dGlkPTI0MDYzNTYmZ290bz1sYXN0cG9zdA==\";\n SITEURL = \"https://ask.gter.net/\";\n JSPATH = \"static/js/\";","type":"text/javascript","charset":"utf-8"}],"noscript":[]}; + +const appRootTag = "div"; + +const appRootAttrs = {"id":"__nuxt"}; + +const appTeleportTag = "div"; + +const appTeleportAttrs = {"id":"teleports"}; + +const componentIslands = false; + +const appId = "nuxt-app"; + +function buildAssetsDir() { + return useRuntimeConfig().app.buildAssetsDir; +} +function buildAssetsURL(...path) { + return joinRelativeURL(publicAssetsURL(), buildAssetsDir(), ...path); +} +function publicAssetsURL(...path) { + const app = useRuntimeConfig().app; + const publicBase = app.cdnURL || app.baseURL; + return path.length ? joinRelativeURL(publicBase, ...path) : publicBase; +} + +const APP_ROOT_OPEN_TAG = `<${appRootTag}${propsToString(appRootAttrs)}>`; +const APP_ROOT_CLOSE_TAG = ``; +const getClientManifest = () => import('../build/client.manifest.mjs').then((r) => r.default || r).then((r) => typeof r === "function" ? r() : r); +const getEntryIds = () => getClientManifest().then((r) => Object.values(r).filter( + (r2) => ( + // @ts-expect-error internal key set by CSS inlining configuration + r2._globalCSS + ) +).map((r2) => r2.src)); +const getServerEntry = () => import('../build/server.mjs').then(function (n) { return n.s; }).then((r) => r.default || r); +const getSSRStyles = lazyCachedFunction(() => import('../build/styles.mjs').then((r) => r.default || r)); +const getSSRRenderer = lazyCachedFunction(async () => { + const manifest = await getClientManifest(); + if (!manifest) { + throw new Error("client.manifest is not available"); + } + const createSSRApp = await getServerEntry(); + if (!createSSRApp) { + throw new Error("Server bundle is not available"); + } + const options = { + manifest, + renderToString: renderToString$1, + buildAssetsURL + }; + const renderer = createRenderer(createSSRApp, options); + async function renderToString$1(input, context) { + const html = await renderToString(input, context); + return APP_ROOT_OPEN_TAG + html + APP_ROOT_CLOSE_TAG; + } + return renderer; +}); +const getSPARenderer = lazyCachedFunction(async () => { + const manifest = await getClientManifest(); + const spaTemplate = await import('../virtual/_virtual_spa-template.mjs').then((r) => r.template).catch(() => "").then((r) => { + { + return APP_ROOT_OPEN_TAG + r + APP_ROOT_CLOSE_TAG; + } + }); + const options = { + manifest, + renderToString: () => spaTemplate, + buildAssetsURL + }; + const renderer = createRenderer(() => () => { + }, options); + const result = await renderer.renderToString({}); + const renderToString = (ssrContext) => { + const config = useRuntimeConfig(ssrContext.event); + ssrContext.modules ||= /* @__PURE__ */ new Set(); + ssrContext.payload.serverRendered = false; + ssrContext.config = { + public: config.public, + app: config.app + }; + return Promise.resolve(result); + }; + return { + rendererContext: renderer.rendererContext, + renderToString + }; +}); +function lazyCachedFunction(fn) { + let res = null; + return () => { + if (res === null) { + res = fn().catch((err) => { + res = null; + throw err; + }); + } + return res; + }; +} + +function renderPayloadResponse(ssrContext) { + return { + body: stringify(splitPayload(ssrContext).payload, ssrContext._payloadReducers) , + statusCode: getResponseStatus(ssrContext.event), + statusMessage: getResponseStatusText(ssrContext.event), + headers: { + "content-type": "application/json;charset=utf-8" , + "x-powered-by": "Nuxt" + } + }; +} +function renderPayloadJsonScript(opts) { + const contents = opts.data ? stringify(opts.data, opts.ssrContext._payloadReducers) : ""; + const payload = { + "type": "application/json", + "innerHTML": contents, + "data-nuxt-data": appId, + "data-ssr": !(opts.ssrContext.noSSR) + }; + { + payload.id = "__NUXT_DATA__"; + } + if (opts.src) { + payload["data-src"] = opts.src; + } + const config = uneval(opts.ssrContext.config); + return [ + payload, + { + innerHTML: `window.__NUXT__={};window.__NUXT__.config=${config}` + } + ]; +} +function splitPayload(ssrContext) { + const { data, prerenderedAt, ...initial } = ssrContext.payload; + return { + initial: { ...initial, prerenderedAt }, + payload: { data, prerenderedAt } + }; +} + +const unheadOptions = { + disableDefaults: true, + disableCapoSorting: false, + plugins: [DeprecationsPlugin, PromisesPlugin, TemplateParamsPlugin, AliasSortingPlugin], +}; + +const renderSSRHeadOptions = {"omitLineBreaks":false}; + +globalThis.__buildAssetsURL = buildAssetsURL; +globalThis.__publicAssetsURL = publicAssetsURL; +const HAS_APP_TELEPORTS = !!(appTeleportAttrs.id); +const APP_TELEPORT_OPEN_TAG = HAS_APP_TELEPORTS ? `<${appTeleportTag}${propsToString(appTeleportAttrs)}>` : ""; +const APP_TELEPORT_CLOSE_TAG = HAS_APP_TELEPORTS ? `` : ""; +const PAYLOAD_URL_RE = /^[^?]*\/_payload.json(?:\?.*)?$/ ; +const renderer = defineRenderHandler(async (event) => { + const nitroApp = useNitroApp(); + const ssrError = event.path.startsWith("/__nuxt_error") ? getQuery(event) : null; + if (ssrError && ssrError.statusCode) { + ssrError.statusCode = Number.parseInt(ssrError.statusCode); + } + if (ssrError && !("__unenv__" in event.node.req)) { + throw createError({ + statusCode: 404, + statusMessage: "Page Not Found: /__nuxt_error" + }); + } + const isRenderingIsland = componentIslands; + const islandContext = void 0; + let url = ssrError?.url || islandContext?.url || event.path; + const isRenderingPayload = PAYLOAD_URL_RE.test(url); + if (isRenderingPayload) { + url = url.substring(0, url.lastIndexOf("/")) || "/"; + event._path = url; + event.node.req.url = url; + } + const routeOptions = getRouteRules(event); + const head = createHead(unheadOptions); + const headEntryOptions = { mode: "server" }; + { + head.push(appHead, headEntryOptions); + } + const ssrContext = { + url, + event, + runtimeConfig: useRuntimeConfig(event), + noSSR: event.context.nuxt?.noSSR || routeOptions.ssr === false && true || (false), + head, + error: !!ssrError, + nuxt: void 0, + /* NuxtApp */ + payload: ssrError ? { error: ssrError } : {}, + _payloadReducers: /* @__PURE__ */ Object.create(null), + modules: /* @__PURE__ */ new Set(), + islandContext + }; + const renderer = ssrContext.noSSR ? await getSPARenderer() : await getSSRRenderer(); + { + for (const id of await getEntryIds()) { + ssrContext.modules.add(id); + } + } + const _rendered = await renderer.renderToString(ssrContext).catch(async (error) => { + if (ssrContext._renderResponse && error.message === "skipping render") { + return {}; + } + const _err = !ssrError && ssrContext.payload?.error || error; + await ssrContext.nuxt?.hooks.callHook("app:error", _err); + throw _err; + }); + await ssrContext.nuxt?.hooks.callHook("app:rendered", { ssrContext, renderResult: _rendered }); + if (ssrContext._renderResponse) { + return ssrContext._renderResponse; + } + if (ssrContext.payload?.error && !ssrError) { + throw ssrContext.payload.error; + } + if (isRenderingPayload) { + const response2 = renderPayloadResponse(ssrContext); + return response2; + } + const inlinedStyles = await renderInlineStyles(ssrContext.modules ?? []) ; + const NO_SCRIPTS = routeOptions.noScripts; + const { styles, scripts } = getRequestDependencies(ssrContext, renderer.rendererContext); + if (ssrContext._preloadManifest) { + head.push({ + link: [ + { rel: "preload", as: "fetch", fetchpriority: "low", crossorigin: "anonymous", href: buildAssetsURL(`builds/meta/${ssrContext.runtimeConfig.app.buildId}.json`) } + ] + }, { ...headEntryOptions, tagPriority: "low" }); + } + if (inlinedStyles.length) { + head.push({ style: inlinedStyles }); + } + { + const link = []; + for (const resource of Object.values(styles)) { + { + link.push({ rel: "stylesheet", href: renderer.rendererContext.buildAssetsURL(resource.file), crossorigin: "" }); + } + } + if (link.length) { + head.push({ link }, headEntryOptions); + } + } + if (!NO_SCRIPTS) { + head.push({ + link: getPreloadLinks(ssrContext, renderer.rendererContext) + }, headEntryOptions); + head.push({ + link: getPrefetchLinks(ssrContext, renderer.rendererContext) + }, headEntryOptions); + head.push({ + script: renderPayloadJsonScript({ ssrContext, data: ssrContext.payload }) + }, { + ...headEntryOptions, + // this should come before another end of body scripts + tagPosition: "bodyClose", + tagPriority: "high" + }); + } + if (!routeOptions.noScripts) { + head.push({ + script: Object.values(scripts).map((resource) => ({ + type: resource.module ? "module" : null, + src: renderer.rendererContext.buildAssetsURL(resource.file), + defer: resource.module ? null : true, + // if we are rendering script tag payloads that import an async payload + // we need to ensure this resolves before executing the Nuxt entry + tagPosition: "head", + crossorigin: "" + })) + }, headEntryOptions); + } + const { headTags, bodyTags, bodyTagsOpen, htmlAttrs, bodyAttrs } = await renderSSRHead(head, renderSSRHeadOptions); + const htmlContext = { + island: isRenderingIsland, + htmlAttrs: htmlAttrs ? [htmlAttrs] : [], + head: normalizeChunks([headTags]), + bodyAttrs: bodyAttrs ? [bodyAttrs] : [], + bodyPrepend: normalizeChunks([bodyTagsOpen, ssrContext.teleports?.body]), + body: [ + _rendered.html, + APP_TELEPORT_OPEN_TAG + (HAS_APP_TELEPORTS ? joinTags([ssrContext.teleports?.[`#${appTeleportAttrs.id}`]]) : "") + APP_TELEPORT_CLOSE_TAG + ], + bodyAppend: [bodyTags] + }; + await nitroApp.hooks.callHook("render:html", htmlContext, { event }); + const response = { + body: renderHTMLDocument(htmlContext), + statusCode: getResponseStatus(event), + statusMessage: getResponseStatusText(event), + headers: { + "content-type": "text/html;charset=utf-8", + "x-powered-by": "Nuxt" + } + }; + return response; +}); +function normalizeChunks(chunks) { + return chunks.filter(Boolean).map((i) => i.trim()); +} +function joinTags(tags) { + return tags.join(""); +} +function joinAttrs(chunks) { + if (chunks.length === 0) { + return ""; + } + return " " + chunks.join(" "); +} +function renderHTMLDocument(html) { + return `${joinTags(html.head)}${joinTags(html.bodyPrepend)}${joinTags(html.body)}${joinTags(html.bodyAppend)}`; +} +async function renderInlineStyles(usedModules) { + const styleMap = await getSSRStyles(); + const inlinedStyles = /* @__PURE__ */ new Set(); + for (const mod of usedModules) { + if (mod in styleMap && styleMap[mod]) { + for (const style of await styleMap[mod]()) { + inlinedStyles.add(style); + } + } + } + return Array.from(inlinedStyles).map((style) => ({ innerHTML: style })); +} + +const renderer$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + default: renderer +}); + +export { headSymbol as h, renderer$1 as r, useHead as u }; +//# sourceMappingURL=renderer.mjs.map diff --git a/.output/server/chunks/routes/renderer.mjs.map b/.output/server/chunks/routes/renderer.mjs.map new file mode 100644 index 0000000..864a9b9 --- /dev/null +++ b/.output/server/chunks/routes/renderer.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"renderer.mjs","sources":["../../../../node_modules/.store/@unhead+vue@2.0.0-rc.10/node_modules/@unhead/vue/dist/shared/vue.N9zWjxoK.mjs","../../../../node_modules/.store/@unhead+vue@2.0.0-rc.10/node_modules/@unhead/vue/dist/shared/vue.BYLJNEcq.mjs","../../../../node_modules/.store/@unhead+vue@2.0.0-rc.10/node_modules/@unhead/vue/dist/server.mjs","../../../../node_modules/.store/nuxt@3.16.0/node_modules/nuxt/dist/core/runtime/nitro/utils/paths.js","../../../../node_modules/.store/nuxt@3.16.0/node_modules/nuxt/dist/core/runtime/nitro/utils/build-files.js","../../../../node_modules/.store/nuxt@3.16.0/node_modules/nuxt/dist/core/runtime/nitro/utils/payload.js","../../../../node_modules/.store/nuxt@3.16.0/node_modules/nuxt/dist/core/runtime/nitro/handlers/renderer.js"],"sourcesContent":null,"names":["renderToString","_renderToString"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6]} \ No newline at end of file diff --git a/.output/server/chunks/rollup/_virtual_spa-template.mjs b/.output/server/chunks/virtual/_virtual_spa-template.mjs similarity index 100% rename from .output/server/chunks/rollup/_virtual_spa-template.mjs rename to .output/server/chunks/virtual/_virtual_spa-template.mjs diff --git a/.output/server/chunks/rollup/_virtual_spa-template.mjs.map b/.output/server/chunks/virtual/_virtual_spa-template.mjs.map similarity index 100% rename from .output/server/chunks/rollup/_virtual_spa-template.mjs.map rename to .output/server/chunks/virtual/_virtual_spa-template.mjs.map diff --git a/.output/server/index.mjs b/.output/server/index.mjs index 2e7254d..a67e638 100644 --- a/.output/server/index.mjs +++ b/.output/server/index.mjs @@ -1,8 +1,38 @@ -globalThis._importMeta_={url:import.meta.url,env:process.env};import 'node:http'; -import 'node:https'; -export { z as default } from './chunks/nitro/node-server.mjs'; -import 'fs'; -import 'path'; +import process from 'node:process';globalThis._importMeta_={url:import.meta.url,env:process.env};import { Server as Server$1 } from 'node:http'; +import { Server } from 'node:https'; +import { t as toNodeListener, d as destr, u as useRuntimeConfig, a as trapUnhandledNodeErrors, s as setupGracefulShutdown, b as useNitroApp } from './chunks/_/nitro.mjs'; +import 'node:events'; +import 'node:buffer'; import 'node:fs'; import 'node:url'; +import 'node:path'; +import 'node:crypto'; + +const cert = process.env.NITRO_SSL_CERT; +const key = process.env.NITRO_SSL_KEY; +const nitroApp = useNitroApp(); +const server = cert && key ? new Server({ key, cert }, toNodeListener(nitroApp.h3App)) : new Server$1(toNodeListener(nitroApp.h3App)); +const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3e3; +const host = process.env.NITRO_HOST || process.env.HOST; +const path = process.env.NITRO_UNIX_SOCKET; +const listener = server.listen(path ? { path } : { port, host }, (err) => { + if (err) { + console.error(err); + process.exit(1); + } + const protocol = cert && key ? "https" : "http"; + const addressInfo = listener.address(); + if (typeof addressInfo === "string") { + console.log(`Listening on unix socket ${addressInfo}`); + return; + } + const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, ""); + const url = `${protocol}://${addressInfo.family === "IPv6" ? `[${addressInfo.address}]` : addressInfo.address}:${addressInfo.port}${baseURL}`; + console.log(`Listening on ${url}`); +}); +trapUnhandledNodeErrors(); +setupGracefulShutdown(listener, nitroApp); +const nodeServer = {}; + +export { nodeServer as default }; //# sourceMappingURL=index.mjs.map diff --git a/.output/server/index.mjs.map b/.output/server/index.mjs.map index 52e8828..d679092 100644 --- a/.output/server/index.mjs.map +++ b/.output/server/index.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index.mjs","sources":[],"sourcesContent":null,"names":[],"mappings":";;;;;;"} \ No newline at end of file +{"version":3,"file":"index.mjs","sources":["../../node_modules/.store/nitropack@2.11.6/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"sourcesContent":null,"names":["HttpsServer","HttpServer"],"mappings":"","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/.output/server/node_modules/@babel/parser/lib/index.js b/.output/server/node_modules/@babel/parser/lib/index.js index 3162c10..62311a0 100644 --- a/.output/server/node_modules/@babel/parser/lib/index.js +++ b/.output/server/node_modules/@babel/parser/lib/index.js @@ -3,17 +3,14 @@ Object.defineProperty(exports, '__esModule', { value: true }); -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (-1 !== e.indexOf(n)) continue; + t[n] = r[n]; } - return target; + return t; } class Position { constructor(line, col, index) { @@ -142,14 +139,11 @@ var StandardErrors = { }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", IllegalReturn: "'return' outside of function.", - ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedAssertSyntax: true` option in the import attributes plugin to suppress this error.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.", ImportBindingIsString: ({ importName }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, - ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.", - ImportCallArity: ({ - maxArgumentCount - }) => `\`import()\` requires exactly ${maxArgumentCount === 1 ? "one argument" : "one or two arguments"}.`, + ImportCallArity: `\`import()\` requires exactly one or two arguments.`, ImportCallNotNewExpression: "Cannot use new with import(...).", ImportCallSpreadArgument: "`...` is not allowed in `import()`.", ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", @@ -313,7 +307,7 @@ var StrictModeErrors = { StrictWith: "'with' in strict mode." }; const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); -var PipelineOperatorErrors = { +var PipelineOperatorErrors = Object.assign({ PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", @@ -325,14 +319,15 @@ var PipelineOperatorErrors = { type }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ type - })}; please wrap it in parentheses.`, + })}; please wrap it in parentheses.` +}, { PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' -}; +}); const _excluded = ["message"]; function defineHidden(obj, key, value) { Object.defineProperty(obj, key, { @@ -348,6 +343,19 @@ function toParseErrorConstructor({ syntaxPlugin }) { const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins"; + { + const oldReasonCodes = { + AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter", + AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference", + SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter", + SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter", + SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType" + }; + if (oldReasonCodes[reasonCode]) { + reasonCode = oldReasonCodes[reasonCode]; + } + } return function constructor(loc, details) { const error = new SyntaxError(); error.code = code; @@ -413,6 +421,54 @@ function ParseErrorEnum(argument, syntaxPlugin) { return ParseErrorConstructors; } const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); +function createDefaultOptions() { + return { + sourceType: "script", + sourceFilename: undefined, + startIndex: 0, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true + }; +} +function getOptions(opts) { + const options = createDefaultOptions(); + if (opts == null) { + return options; + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + for (const key of Object.keys(options)) { + if (opts[key] != null) options[key] = opts[key]; + } + if (options.startLine === 1) { + if (opts.startIndex == null && options.startColumn > 0) { + options.startIndex = options.startColumn; + } else if (opts.startColumn == null && options.startIndex > 0) { + options.startColumn = options.startIndex; + } + } else if (opts.startColumn == null || opts.startIndex == null) { + if (opts.startIndex != null) { + throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`."); + } + } + return options; +} const { defineProperty } = Object; @@ -432,7 +488,7 @@ function toESTreeLocation(node) { var estree = superClass => class ESTreeParserMixin extends superClass { parse() { const file = toESTreeLocation(super.parse()); - if (this.options.tokens) { + if (this.optionFlags & 128) { file.tokens = file.tokens.map(toESTreeLocation); } return file; @@ -521,14 +577,6 @@ var estree = superClass => class ESTreeParserMixin extends superClass { node.body = directiveStatements.concat(node.body); delete node.directives; } - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); - if (method.typeParameters) { - method.value.typeParameters = method.typeParameters; - delete method.typeParameters; - } - classBody.body.push(method); - } parsePrivateName() { const node = super.parsePrivateName(); { @@ -579,6 +627,14 @@ var estree = superClass => class ESTreeParserMixin extends superClass { funcNode.type = "FunctionExpression"; delete funcNode.kind; node.value = funcNode; + const { + typeParameters + } = node; + if (typeParameters) { + delete node.typeParameters; + funcNode.typeParameters = typeParameters; + this.resetStartLocationFromNode(funcNode, typeParameters); + } if (type === "ClassPrivateMethod") { node.computed = false; } @@ -595,7 +651,9 @@ var estree = superClass => class ESTreeParserMixin extends superClass { return propertyNode; } } - propertyNode.type = "PropertyDefinition"; + { + propertyNode.type = "PropertyDefinition"; + } return propertyNode; } parseClassPrivateProperty(...args) { @@ -605,7 +663,9 @@ var estree = superClass => class ESTreeParserMixin extends superClass { return propertyNode; } } - propertyNode.type = "PropertyDefinition"; + { + propertyNode.type = "PropertyDefinition"; + } propertyNode.computed = false; return propertyNode; } @@ -663,13 +723,11 @@ var estree = superClass => class ESTreeParserMixin extends superClass { finishCallExpression(unfinished, optional) { const node = super.finishCallExpression(unfinished, optional); if (node.callee.type === "Import") { + var _ref, _ref2; node.type = "ImportExpression"; node.source = node.arguments[0]; - if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { - var _ref, _ref2; - node.options = (_ref = node.arguments[1]) != null ? _ref : null; - node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null; - } + node.options = (_ref = node.arguments[1]) != null ? _ref : null; + node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null; delete node.arguments; delete node.callee; } @@ -1211,6 +1269,9 @@ const tt = { name: createToken("name", { startsExpr }), + placeholder: createToken("%%", { + startsExpr: true + }), string: createToken("string", { startsExpr }), @@ -1237,22 +1298,19 @@ const tt = { jsxTagStart: createToken("jsxTagStart", { startsExpr: true }), - jsxTagEnd: createToken("jsxTagEnd"), - placeholder: createToken("%%", { - startsExpr: true - }) + jsxTagEnd: createToken("jsxTagEnd") }; function tokenIsIdentifier(token) { - return token >= 93 && token <= 132; + return token >= 93 && token <= 133; } function tokenKeywordOrIdentifierIsKeyword(token) { return token <= 92; } function tokenIsKeywordOrIdentifier(token) { - return token >= 58 && token <= 132; + return token >= 58 && token <= 133; } function tokenIsLiteralPropertyName(token) { - return token >= 58 && token <= 136; + return token >= 58 && token <= 137; } function tokenComesBeforeExpression(token) { return tokenBeforeExprs[token]; @@ -1316,17 +1374,17 @@ function getExportedToken(token) { context.push(types.template); } }; - tokenTypes[142].updateContext = context => { + tokenTypes[143].updateContext = context => { context.push(types.j_expr, types.j_oTag); }; } -let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; -const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; -const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; function isInAstralSet(code, set) { let pos = 0x10000; for (let i = 0, length = set.length; i < length; i += 2) { @@ -1582,6 +1640,12 @@ class BaseParser { this.sawUnambiguousESM = false; this.ambiguousScriptDifferentAst = false; } + sourceToOffsetPos(sourcePos) { + return sourcePos + this.startIndex; + } + offsetToSourcePos(offsetPos) { + return offsetPos - this.startIndex; + } hasPlugin(pluginConfig) { if (typeof pluginConfig === "string") { return this.plugins.has(pluginConfig); @@ -1695,7 +1759,7 @@ class CommentsParser extends BaseParser { containingNode: node, start: commentStart } = commentWS; - if (this.input.charCodeAt(commentStart - 1) === 44) { + if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) { switch (node.type) { case "ObjectExpression": case "ObjectPattern": @@ -1723,6 +1787,14 @@ class CommentsParser extends BaseParser { case "ImportDeclaration": adjustInnerComments(node, node.specifiers, commentWS); break; + case "TSEnumDeclaration": + { + adjustInnerComments(node, node.members, commentWS); + } + break; + case "TSEnumBody": + adjustInnerComments(node, node.members, commentWS); + break; default: { setInnerComments(node, comments); @@ -1844,6 +1916,7 @@ function isWhitespace(code) { class State { constructor() { this.flags = 1024; + this.startIndex = void 0; this.curLine = void 0; this.lineStart = void 0; this.startLoc = void 0; @@ -1860,7 +1933,7 @@ class State { this.commentsLen = 0; this.commentStack = []; this.pos = 0; - this.type = 139; + this.type = 140; this.value = null; this.start = 0; this.end = 0; @@ -1880,13 +1953,15 @@ class State { init({ strictMode, sourceType, + startIndex, startLine, startColumn }) { this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.startIndex = startIndex; this.curLine = startLine; this.lineStart = -startColumn; - this.startLoc = this.endLoc = new Position(startLine, startColumn, 0); + this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex); } get maybeInArrowParameters() { return (this.flags & 2) > 0; @@ -1961,11 +2036,12 @@ class State { if (v) this.flags |= 4096;else this.flags &= -4097; } curPosition() { - return new Position(this.curLine, this.pos - this.lineStart, this.pos); + return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex); } clone() { const state = new State(); state.flags = this.flags; + state.startIndex = this.startIndex; state.curLine = this.curLine; state.lineStart = this.lineStart; state.startLoc = this.startLoc; @@ -2283,10 +2359,11 @@ function buildPosition(pos, lineStart, curLine) { const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); class Token { constructor(state) { + const startIndex = state.startIndex || 0; this.type = state.type; this.value = state.value; - this.start = state.start; - this.end = state.end; + this.start = startIndex + state.start; + this.end = startIndex + state.end; this.loc = new SourceLocation(state.startLoc, state.endLoc); } } @@ -2297,7 +2374,7 @@ class Tokenizer extends CommentsParser { this.tokens = []; this.errorHandlers_readInt = { invalidDigit: (pos, lineStart, curLine, radix) => { - if (!this.options.errorRecovery) return false; + if (!(this.optionFlags & 1024)) return false; this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), { radix }); @@ -2338,7 +2415,7 @@ class Tokenizer extends CommentsParser { } next() { this.checkKeywordEscapes(); - if (this.options.tokens) { + if (this.optionFlags & 128) { this.pushToken(new Token(this.state)); } this.state.lastTokEndLoc = this.state.endLoc; @@ -2427,7 +2504,7 @@ class Tokenizer extends CommentsParser { this.state.start = this.state.pos; if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); if (this.state.pos >= this.length) { - this.finishToken(139); + this.finishToken(140); return; } this.getTokenFromCode(this.codePointAtPos(this.state.pos)); @@ -2450,11 +2527,11 @@ class Tokenizer extends CommentsParser { const comment = { type: "CommentBlock", value: this.input.slice(start + 2, end), - start, - end: end + commentEnd.length, + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end + commentEnd.length), loc: new SourceLocation(startLoc, this.state.curPosition()) }; - if (this.options.tokens) this.pushToken(comment); + if (this.optionFlags & 128) this.pushToken(comment); return comment; } skipLineComment(startSkip) { @@ -2473,16 +2550,16 @@ class Tokenizer extends CommentsParser { const comment = { type: "CommentLine", value, - start, - end, + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end), loc: new SourceLocation(startLoc, this.state.curPosition()) }; - if (this.options.tokens) this.pushToken(comment); + if (this.optionFlags & 128) this.pushToken(comment); return comment; } skipSpace() { const spaceStart = this.state.pos; - const comments = []; + const comments = this.optionFlags & 2048 ? [] : null; loop: while (this.state.pos < this.length) { const ch = this.input.charCodeAt(this.state.pos); switch (ch) { @@ -2509,7 +2586,7 @@ class Tokenizer extends CommentsParser { const comment = this.skipBlockComment("*/"); if (comment !== undefined) { this.addComment(comment); - if (this.options.attachComment) comments.push(comment); + comments == null || comments.push(comment); } break; } @@ -2518,7 +2595,7 @@ class Tokenizer extends CommentsParser { const comment = this.skipLineComment(2); if (comment !== undefined) { this.addComment(comment); - if (this.options.attachComment) comments.push(comment); + comments == null || comments.push(comment); } break; } @@ -2529,24 +2606,24 @@ class Tokenizer extends CommentsParser { default: if (isWhitespace(ch)) { ++this.state.pos; - } else if (ch === 45 && !this.inModule && this.options.annexB) { + } else if (ch === 45 && !this.inModule && this.optionFlags & 4096) { const pos = this.state.pos; if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { const comment = this.skipLineComment(3); if (comment !== undefined) { this.addComment(comment); - if (this.options.attachComment) comments.push(comment); + comments == null || comments.push(comment); } } else { break loop; } - } else if (ch === 60 && !this.inModule && this.options.annexB) { + } else if (ch === 60 && !this.inModule && this.optionFlags & 4096) { const pos = this.state.pos; if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { const comment = this.skipLineComment(4); if (comment !== undefined) { this.addComment(comment); - if (this.options.attachComment) comments.push(comment); + comments == null || comments.push(comment); } } else { break loop; @@ -2556,11 +2633,11 @@ class Tokenizer extends CommentsParser { } } } - if (comments.length > 0) { + if ((comments == null ? void 0 : comments.length) > 0) { const end = this.state.pos; const commentWhitespace = { - start: spaceStart, - end, + start: this.sourceToOffsetPos(spaceStart), + end: this.sourceToOffsetPos(end), comments, leadingNode: null, trailingNode: null, @@ -2605,10 +2682,10 @@ class Tokenizer extends CommentsParser { } } else if (isIdentifierStart(next)) { ++this.state.pos; - this.finishToken(138, this.readWord1(next)); + this.finishToken(139, this.readWord1(next)); } else if (next === 92) { ++this.state.pos; - this.finishToken(138, this.readWord1()); + this.finishToken(139, this.readWord1()); } else { this.finishOp(27, 1); } @@ -3020,7 +3097,7 @@ class Tokenizer extends CommentsParser { mods += char; } this.state.pos = pos; - this.finishToken(137, { + this.finishToken(138, { pattern: content, flags: mods }); @@ -3034,6 +3111,7 @@ class Tokenizer extends CommentsParser { return n; } readRadixNumber(radix) { + const start = this.state.pos; const startLoc = this.state.curPosition(); let isBigInt = false; this.state.pos += 2; @@ -3054,18 +3132,17 @@ class Tokenizer extends CommentsParser { throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); } if (isBigInt) { - const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, ""); - this.finishToken(135, str); + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(136, str); return; } - this.finishToken(134, val); + this.finishToken(135, val); } readNumber(startsWithDot) { const start = this.state.pos; const startLoc = this.state.curPosition(); let isFloat = false; let isBigInt = false; - let isDecimal = false; let hasExponent = false; let isOctal = false; if (!startsWithDot && this.readInt(10) === null) { @@ -3115,22 +3192,22 @@ class Tokenizer extends CommentsParser { this.raise(Errors.InvalidDecimal, startLoc); } ++this.state.pos; - isDecimal = true; + var isDecimal = true; } if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); } const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); if (isBigInt) { - this.finishToken(135, str); - return; - } - if (isDecimal) { this.finishToken(136, str); return; } + if (isDecimal) { + this.finishToken(137, str); + return; + } const val = isOctal ? parseInt(str, 8) : parseFloat(str); - this.finishToken(134, val); + this.finishToken(135, val); } readCodePoint(throwOnInvalid) { const { @@ -3150,7 +3227,7 @@ class Tokenizer extends CommentsParser { this.state.pos = pos + 1; this.state.lineStart = lineStart; this.state.curLine = curLine; - this.finishToken(133, str); + this.finishToken(134, str); } readTemplateContinuation() { if (!this.match(8)) { @@ -3172,7 +3249,7 @@ class Tokenizer extends CommentsParser { this.state.lineStart = lineStart; this.state.curLine = curLine; if (firstInvalidLoc) { - this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, firstInvalidLoc.pos); + this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos)); } if (this.input.codePointAt(pos) === 96) { this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); @@ -3248,7 +3325,7 @@ class Tokenizer extends CommentsParser { raise(toParseError, at, details = {}) { const loc = at instanceof Position ? at : at.loc.start; const error = toParseError(loc, details); - if (!this.options.errorRecovery) throw error; + if (!(this.optionFlags & 1024)) throw error; if (!this.isLookahead) this.state.errors.push(error); return error; } @@ -3560,10 +3637,10 @@ class UtilParser extends Tokenizer { } } canInsertSemicolon() { - return this.match(139) || this.match(8) || this.hasPrecedingLineBreak(); + return this.match(140) || this.match(8) || this.hasPrecedingLineBreak(); } hasPrecedingLineBreak() { - return hasNewLine(this.input, this.state.lastTokEndLoc.index, this.state.start); + return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start); } hasFollowingLineBreak() { return hasNewLine(this.input, this.state.end, this.nextTokenStart()); @@ -3732,7 +3809,7 @@ class Node { this.start = pos; this.end = 0; this.loc = new SourceLocation(loc); - if (parser != null && parser.options.ranges) this.range = [pos, 0]; + if ((parser == null ? void 0 : parser.optionFlags) & 64) this.range = [pos, 0]; if (parser != null && parser.filename) this.loc.filename = parser.filename; } } @@ -3820,19 +3897,21 @@ class NodeUtils extends UtilParser { node.type = type; node.end = endLoc.index; node.loc.end = endLoc; - if (this.options.ranges) node.range[1] = endLoc.index; - if (this.options.attachComment) this.processComment(node); + if (this.optionFlags & 64) node.range[1] = endLoc.index; + if (this.optionFlags & 2048) { + this.processComment(node); + } return node; } resetStartLocation(node, startLoc) { node.start = startLoc.index; node.loc.start = startLoc; - if (this.options.ranges) node.range[0] = startLoc.index; + if (this.optionFlags & 64) node.range[0] = startLoc.index; } resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { node.end = endLoc.index; node.loc.end = endLoc; - if (this.options.ranges) node.range[1] = endLoc.index; + if (this.optionFlags & 64) node.range[1] = endLoc.index; } resetStartLocationFromNode(node, locationNode) { this.resetStartLocation(node, locationNode.loc.start); @@ -3964,11 +4043,8 @@ var flow = superClass => class FlowParserMixin extends superClass { shouldParseTypes() { return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; } - shouldParseEnums() { - return !!this.getPluginOption("flow", "enums"); - } finishToken(type, val) { - if (type !== 133 && type !== 13 && type !== 28) { + if (type !== 134 && type !== 13 && type !== 28) { if (this.flowPragma === undefined) { this.flowPragma = null; } @@ -4096,7 +4172,7 @@ var flow = superClass => class FlowParserMixin extends superClass { } flowParseDeclareModule(node) { this.scope.enter(0); - if (this.match(133)) { + if (this.match(134)) { node.id = super.parseExprAtom(); } else { node.id = this.parseIdentifier(); @@ -4323,7 +4399,7 @@ var flow = superClass => class FlowParserMixin extends superClass { const node = this.startNode(); node.params = []; this.state.inType = true; - if (this.match(47) || this.match(142)) { + if (this.match(47) || this.match(143)) { this.next(); } else { this.unexpected(); @@ -4343,26 +4419,49 @@ var flow = superClass => class FlowParserMixin extends superClass { this.state.inType = oldInType; return this.finishNode(node, "TypeParameterDeclaration"); } + flowInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + flowParseTypeParameterInstantiationInExpression() { + if (this.reScan_lt() !== 47) return; + return this.flowParseTypeParameterInstantiation(); + } flowParseTypeParameterInstantiation() { const node = this.startNode(); const oldInType = this.state.inType; - node.params = []; this.state.inType = true; - this.expect(47); - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - this.state.noAnonFunctionType = false; - while (!this.match(48)) { - node.params.push(this.flowParseType()); - if (!this.match(48)) { - this.expect(12); + node.params = []; + this.flowInTopLevelContext(() => { + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } } - } - this.state.noAnonFunctionType = oldNoAnonFunctionType; - this.expect(48); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + }); this.state.inType = oldInType; + if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); return this.finishNode(node, "TypeParameterInstantiation"); } flowParseTypeParameterInstantiationCallOrNew() { + if (this.reScan_lt() !== 47) return; const node = this.startNode(); const oldInType = this.state.inType; node.params = []; @@ -4397,7 +4496,7 @@ var flow = superClass => class FlowParserMixin extends superClass { return this.finishNode(node, "InterfaceTypeAnnotation"); } flowParseObjectPropertyKey() { - return this.match(134) || this.match(133) ? super.parseExprAtom() : this.parseIdentifier(true); + return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true); } flowParseObjectTypeIndexer(node, isStatic, variance) { node.static = isStatic; @@ -4642,8 +4741,7 @@ var flow = superClass => class FlowParserMixin extends superClass { } } flowParseQualifiedTypeIdentifier(startLoc, id) { - var _startLoc; - (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; + startLoc != null ? startLoc : startLoc = this.state.startLoc; let node = id || this.flowParseRestrictedIdentifier(true); while (this.eat(16)) { const node2 = this.startNodeAt(startLoc); @@ -4841,7 +4939,7 @@ var flow = superClass => class FlowParserMixin extends superClass { node.typeParameters = null; return this.finishNode(node, "FunctionTypeAnnotation"); } - case 133: + case 134: return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); case 85: case 86: @@ -4851,19 +4949,19 @@ var flow = superClass => class FlowParserMixin extends superClass { case 53: if (this.state.value === "-") { this.next(); - if (this.match(134)) { + if (this.match(135)) { return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); } - if (this.match(135)) { + if (this.match(136)) { return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); } throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc); } this.unexpected(); return; - case 134: - return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); case 135: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 136: return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); case 88: this.next(); @@ -5033,7 +5131,7 @@ var flow = superClass => class FlowParserMixin extends superClass { this.next(); return this.flowParseInterface(node); } - } else if (this.shouldParseEnums() && this.isContextual(126)) { + } else if (this.isContextual(126)) { const node = this.startNode(); this.next(); return this.flowParseEnumDeclaration(node); @@ -5066,7 +5164,7 @@ var flow = superClass => class FlowParserMixin extends superClass { const { type } = this.state; - if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) { + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { return !this.state.containsEsc; } return super.shouldParseExportDeclaration(); @@ -5075,13 +5173,13 @@ var flow = superClass => class FlowParserMixin extends superClass { const { type } = this.state; - if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) { + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { return this.state.containsEsc; } return super.isExportDefaultSpecifier(); } parseExportDefaultExpression() { - if (this.shouldParseEnums() && this.isContextual(126)) { + if (this.isContextual(126)) { const node = this.startNode(); this.next(); return this.flowParseEnumDeclaration(node); @@ -5183,7 +5281,7 @@ var flow = superClass => class FlowParserMixin extends superClass { } forwardNoArrowParamsConversionAt(node, parse) { let result; - if (this.state.noArrowParamsConversionAt.includes(node.start)) { + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { this.state.noArrowParamsConversionAt.push(this.state.start); result = parse(); this.state.noArrowParamsConversionAt.pop(); @@ -5234,7 +5332,7 @@ var flow = superClass => class FlowParserMixin extends superClass { const declarationNode = this.startNode(); this.next(); return this.flowParseInterface(declarationNode); - } else if (this.shouldParseEnums() && this.isContextual(126)) { + } else if (this.isContextual(126)) { node.exportKind = "value"; const declarationNode = this.startNode(); this.next(); @@ -5416,8 +5514,10 @@ var flow = superClass => class FlowParserMixin extends superClass { } parseClassSuper(node) { super.parseClassSuper(node); - if (node.superClass && this.match(47)) { - node.superTypeParameters = this.flowParseTypeParameterInstantiation(); + if (node.superClass && (this.match(47) || this.match(51))) { + { + node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression(); + } } if (this.isContextual(113)) { this.next(); @@ -5465,7 +5565,7 @@ var flow = superClass => class FlowParserMixin extends superClass { } return result; } - parseAssignableListItemTypes(param) { + parseFunctionParamType(param) { if (this.eat(17)) { if (param.type !== "Identifier") { this.raise(FlowErrors.PatternIsOptional, param); @@ -5616,7 +5716,7 @@ var flow = superClass => class FlowParserMixin extends superClass { var _jsx; let state = null; let jsx; - if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) { + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { state = this.state.clone(); jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); if (!jsx.error) return jsx.node; @@ -5693,14 +5793,14 @@ var flow = superClass => class FlowParserMixin extends superClass { return this.match(14) || super.shouldParseArrow(params); } setArrowFunctionParameters(node, params) { - if (this.state.noArrowParamsConversionAt.includes(node.start)) { + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { node.params = params; } else { super.setArrowFunctionParameters(node, params); } } checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { - if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(node.start)) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { return; } for (let i = 0; i < node.params.length; i++) { @@ -5711,14 +5811,14 @@ var flow = superClass => class FlowParserMixin extends superClass { super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); } parseParenAndDistinguishExpression(canBeArrow) { - return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.state.start)); + return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start))); } parseSubscripts(base, startLoc, noCalls) { if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) { this.next(); const node = this.startNodeAt(startLoc); node.callee = base; - node.arguments = super.parseCallExpressionArguments(11, false); + node.arguments = super.parseCallExpressionArguments(11); base = this.finishNode(node, "CallExpression"); } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { const state = this.state.clone(); @@ -5748,18 +5848,18 @@ var flow = superClass => class FlowParserMixin extends superClass { this.next(); const node = this.startNodeAt(startLoc); node.callee = base; - node.typeArguments = this.flowParseTypeParameterInstantiation(); + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); this.expect(10); - node.arguments = this.parseCallExpressionArguments(11, false); + node.arguments = this.parseCallExpressionArguments(11); node.optional = true; return this.finishCallExpression(node, true); - } else if (!noCalls && this.shouldParseTypes() && this.match(47)) { + } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) { const node = this.startNodeAt(startLoc); node.callee = base; const result = this.tryParse(() => { node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); this.expect(10); - node.arguments = super.parseCallExpressionArguments(11, false); + node.arguments = super.parseCallExpressionArguments(11); if (subscriptState.optionalChainMember) { node.optional = false; } @@ -5875,7 +5975,7 @@ var flow = superClass => class FlowParserMixin extends superClass { const startLoc = this.state.startLoc; const endOfInit = () => this.match(12) || this.match(8); switch (this.state.type) { - case 134: + case 135: { const literal = this.parseNumericLiteral(this.state.value); if (endOfInit()) { @@ -5890,7 +5990,7 @@ var flow = superClass => class FlowParserMixin extends superClass { loc: startLoc }; } - case 133: + case 134: { const literal = this.parseStringLiteral(this.state.value); if (endOfInit()) { @@ -6182,6 +6282,14 @@ var flow = superClass => class FlowParserMixin extends superClass { node.body = this.flowEnumBody(this.startNode(), id); return this.finishNode(node, "EnumDeclaration"); } + jsxParseOpeningElementAfterName(node) { + if (this.shouldParseTypes()) { + if (this.match(47) || this.match(51)) { + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + } + } + return super.jsxParseOpeningElementAfterName(node); + } isLookaheadToken_lt() { const next = this.nextTokenStart(); if (this.input.charCodeAt(next) === 60) { @@ -6190,6 +6298,29 @@ var flow = superClass => class FlowParserMixin extends superClass { } return false; } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } maybeUnwrapTypeCastExpression(node) { return node.type === "TypeCastExpression" ? node.expression : node; } @@ -6495,14 +6626,14 @@ var jsx = superClass => class JSXParserMixin extends superClass { if (this.state.pos === this.state.start) { if (ch === 60 && this.state.canStartJSXElement) { ++this.state.pos; - this.finishToken(142); + this.finishToken(143); } else { super.getTokenFromCode(ch); } return; } out += this.input.slice(chunkStart, this.state.pos); - this.finishToken(141, out); + this.finishToken(142, out); return; case 38: out += this.input.slice(chunkStart, this.state.pos); @@ -6558,7 +6689,7 @@ var jsx = superClass => class JSXParserMixin extends superClass { } } out += this.input.slice(chunkStart, this.state.pos++); - this.finishToken(133, out); + this.finishToken(134, out); } jsxReadEntity() { const startPos = ++this.state.pos; @@ -6598,11 +6729,11 @@ var jsx = superClass => class JSXParserMixin extends superClass { do { ch = this.input.charCodeAt(++this.state.pos); } while (isIdentifierChar(ch) || ch === 45); - this.finishToken(140, this.input.slice(start, this.state.pos)); + this.finishToken(141, this.input.slice(start, this.state.pos)); } jsxParseIdentifier() { const node = this.startNode(); - if (this.match(140)) { + if (this.match(141)) { node.name = this.state.value; } else if (tokenIsKeyword(this.state.type)) { node.name = tokenLabelName(this.state.type); @@ -6647,8 +6778,8 @@ var jsx = superClass => class JSXParserMixin extends superClass { this.raise(JsxErrors.AttributeIsEmpty, node); } return node; - case 142: - case 133: + case 143: + case 134: return this.parseExprAtom(); default: throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc); @@ -6696,7 +6827,7 @@ var jsx = superClass => class JSXParserMixin extends superClass { } jsxParseOpeningElementAt(startLoc) { const node = this.startNodeAt(startLoc); - if (this.eat(143)) { + if (this.eat(144)) { return this.finishNode(node, "JSXOpeningFragment"); } node.name = this.jsxParseElementName(); @@ -6704,21 +6835,21 @@ var jsx = superClass => class JSXParserMixin extends superClass { } jsxParseOpeningElementAfterName(node) { const attributes = []; - while (!this.match(56) && !this.match(143)) { + while (!this.match(56) && !this.match(144)) { attributes.push(this.jsxParseAttribute()); } node.attributes = attributes; node.selfClosing = this.eat(56); - this.expect(143); + this.expect(144); return this.finishNode(node, "JSXOpeningElement"); } jsxParseClosingElementAt(startLoc) { const node = this.startNodeAt(startLoc); - if (this.eat(143)) { + if (this.eat(144)) { return this.finishNode(node, "JSXClosingFragment"); } node.name = this.jsxParseElementName(); - this.expect(143); + this.expect(144); return this.finishNode(node, "JSXClosingElement"); } jsxParseElementAt(startLoc) { @@ -6729,7 +6860,7 @@ var jsx = superClass => class JSXParserMixin extends superClass { if (!openingElement.selfClosing) { contents: for (;;) { switch (this.state.type) { - case 142: + case 143: startLoc = this.state.startLoc; this.next(); if (this.eat(56)) { @@ -6738,7 +6869,7 @@ var jsx = superClass => class JSXParserMixin extends superClass { } children.push(this.jsxParseElementAt(startLoc)); break; - case 141: + case 142: children.push(this.parseLiteral(this.state.value, "JSXText")); break; case 5: @@ -6796,10 +6927,10 @@ var jsx = superClass => class JSXParserMixin extends superClass { context[context.length - 1] = newContext; } parseExprAtom(refExpressionErrors) { - if (this.match(142)) { + if (this.match(143)) { return this.jsxParseElement(); } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { - this.replaceToken(142); + this.replaceToken(143); return this.jsxParseElement(); } else { return super.parseExprAtom(refExpressionErrors); @@ -6822,7 +6953,7 @@ var jsx = superClass => class JSXParserMixin extends superClass { } if (code === 62) { ++this.state.pos; - this.finishToken(143); + this.finishToken(144); return; } if ((code === 34 || code === 39) && context === types.j_oTag) { @@ -6832,7 +6963,7 @@ var jsx = superClass => class JSXParserMixin extends superClass { } if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { ++this.state.pos; - this.finishToken(142); + this.finishToken(143); return; } super.getTokenFromCode(code); @@ -6842,12 +6973,12 @@ var jsx = superClass => class JSXParserMixin extends superClass { context, type } = this.state; - if (type === 56 && prevType === 142) { + if (type === 56 && prevType === 143) { context.splice(-2, 2, types.j_cTag); this.state.canStartJSXElement = false; - } else if (type === 142) { - context.push(types.j_oTag); } else if (type === 143) { + context.push(types.j_oTag); + } else if (type === 144) { const out = context[context.length - 1]; if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { context.pop(); @@ -7066,14 +7197,7 @@ class LValParser extends NodeUtils { for (let i = 0; i <= end; i++) { const elt = exprList[i]; if (!elt) continue; - if (elt.type === "SpreadElement") { - elt.type = "RestElement"; - const arg = elt.argument; - this.checkToRestConversion(arg, true); - this.toAssignable(arg, isLHS); - } else { - this.toAssignable(elt, isLHS); - } + this.toAssignableListItem(exprList, i, isLHS); if (elt.type === "RestElement") { if (i < end) { this.raise(Errors.RestTrailingComma, elt); @@ -7083,6 +7207,17 @@ class LValParser extends NodeUtils { } } } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "SpreadElement") { + node.type = "RestElement"; + const arg = node.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(node, isLHS); + } + } isAssignable(node, isBinding) { switch (node.type) { case "Identifier": @@ -7167,20 +7302,26 @@ class LValParser extends NodeUtils { } else if (this.eat(close)) { break; } else if (this.match(21)) { - elts.push(this.parseAssignableListItemTypes(this.parseRestBinding(), flags)); + let rest = this.parseRestBinding(); + if (this.hasPlugin("flow") || flags & 2) { + rest = this.parseFunctionParamType(rest); + } + elts.push(rest); if (!this.checkCommaAfterRest(closeCharCode)) { this.expect(close); break; } } else { const decorators = []; - if (this.match(26) && this.hasPlugin("decorators")) { - this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc); + if (flags & 2) { + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } } - while (this.match(26)) { - decorators.push(this.parseDecorator()); - } - elts.push(this.parseAssignableListItem(flags, decorators)); + elts.push(this.parseBindingElement(flags, decorators)); } } return elts; @@ -7200,7 +7341,7 @@ class LValParser extends NodeUtils { return this.parseBindingRestProperty(this.startNode()); } const prop = this.startNode(); - if (type === 138) { + if (type === 139) { this.expectPlugin("destructuringPrivate", startLoc); this.classScope.usePrivateName(this.state.value, startLoc); prop.key = this.parsePrivateName(); @@ -7210,22 +7351,23 @@ class LValParser extends NodeUtils { prop.method = false; return this.parseObjPropValue(prop, startLoc, false, false, true, false); } - parseAssignableListItem(flags, decorators) { + parseBindingElement(flags, decorators) { const left = this.parseMaybeDefault(); - this.parseAssignableListItemTypes(left, flags); + if (this.hasPlugin("flow") || flags & 2) { + this.parseFunctionParamType(left); + } const elt = this.parseMaybeDefault(left.loc.start, left); if (decorators.length) { left.decorators = decorators; } return elt; } - parseAssignableListItemTypes(param, flags) { + parseFunctionParamType(param) { return param; } parseMaybeDefault(startLoc, left) { - var _startLoc, _left; - (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; - left = (_left = left) != null ? _left : this.parseBindingAtom(); + startLoc != null ? startLoc : startLoc = this.state.startLoc; + left = left != null ? left : this.parseBindingAtom(); if (!this.eat(29)) return left; const node = this.startNodeAt(startLoc); node.left = left; @@ -7378,12 +7520,12 @@ const TSErrors = ParseErrorEnum`typescript`({ AbstractPropertyHasInitializer: ({ propertyName }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, - AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", - AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.", AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.", ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", - ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", DeclareAccessor: ({ kind @@ -7415,6 +7557,9 @@ const TSErrors = ParseErrorEnum`typescript`({ IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidHeritageClauseType: ({ + token + }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`, InvalidModifierOnTypeMember: ({ modifier }) => `'${modifier}' modifier cannot appear on a type member.`, @@ -7442,9 +7587,9 @@ const TSErrors = ParseErrorEnum`typescript`({ ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.", ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", - SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", - SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", - SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", SingleTypeParameterWithoutTrailingComma: ({ typeParameterName }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, @@ -7522,11 +7667,21 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return tokenIsIdentifier(this.state.type); } tsTokenCanFollowModifier() { - return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(138) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak(); + return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName(); + } + tsNextTokenOnSameLineAndCanFollowModifier() { + this.next(); + if (this.hasPrecedingLineBreak()) { + return false; + } + return this.tsTokenCanFollowModifier(); } tsNextTokenCanFollowModifier() { - this.next(); - return this.tsTokenCanFollowModifier(); + if (this.match(106)) { + this.next(); + return this.tsTokenCanFollowModifier(); + } + return this.tsNextTokenOnSameLineAndCanFollowModifier(); } tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) { if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { @@ -7683,44 +7838,61 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { const node = this.startNode(); this.expect(83); this.expect(10); - if (!this.match(133)) { + if (!this.match(134)) { this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc); - } - node.argument = super.parseExprAtom(); - if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { - node.options = null; - } - if (this.eat(12)) { - this.expectImportAttributesPlugin(); - if (!this.match(11)) { - node.options = super.parseMaybeAssignAllowIn(); - this.eat(12); + { + node.argument = super.parseExprAtom(); } + } else { + { + node.argument = this.parseStringLiteral(this.state.value); + } + } + if (this.eat(12) && !this.match(11)) { + node.options = super.parseMaybeAssignAllowIn(); + this.eat(12); + } else { + node.options = null; } this.expect(11); if (this.eat(16)) { - node.qualifier = this.tsParseEntityName(); + node.qualifier = this.tsParseEntityName(1 | 2); } if (this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); + { + node.typeParameters = this.tsParseTypeArguments(); + } } return this.finishNode(node, "TSImportType"); } - tsParseEntityName(allowReservedWords = true) { - let entity = this.parseIdentifier(allowReservedWords); + tsParseEntityName(flags) { + let entity; + if (flags & 1 && this.match(78)) { + if (flags & 2) { + entity = this.parseIdentifier(true); + } else { + const node = this.startNode(); + this.next(); + entity = this.finishNode(node, "ThisExpression"); + } + } else { + entity = this.parseIdentifier(!!(flags & 1)); + } while (this.eat(16)) { const node = this.startNodeAtNode(entity); node.left = entity; - node.right = this.parseIdentifier(allowReservedWords); + node.right = this.parseIdentifier(!!(flags & 1)); entity = this.finishNode(node, "TSQualifiedName"); } return entity; } tsParseTypeReference() { const node = this.startNode(); - node.typeName = this.tsParseEntityName(); + node.typeName = this.tsParseEntityName(1); if (!this.hasPrecedingLineBreak() && this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); + { + node.typeParameters = this.tsParseTypeArguments(); + } } return this.finishNode(node, "TSTypeReference"); } @@ -7743,10 +7915,14 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { if (this.match(83)) { node.exprName = this.tsParseImportType(); } else { - node.exprName = this.tsParseEntityName(); + { + node.exprName = this.tsParseEntityName(1 | 2); + } } if (!this.hasPrecedingLineBreak() && this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); + { + node.typeParameters = this.tsParseTypeArguments(); + } } return this.finishNode(node, "TSTypeQuery"); } @@ -7765,7 +7941,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } tsParseTypeParameters(parseModifiers) { const node = this.startNode(); - if (this.match(47) || this.match(142)) { + if (this.match(47) || this.match(143)) { this.next(); } else { this.unexpected(); @@ -7851,7 +8027,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } const method = nodeAny; if (method.kind && this.match(47)) { - this.raise(TSErrors.AccesorCannotHaveTypeParameters, this.state.curPosition()); + this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition()); } this.tsFillSignature(14, method); this.tsParseTypeMemberSemicolon(); @@ -7861,7 +8037,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { if (method[paramsKey].length > 0) { this.raise(Errors.BadGetterArity, this.state.curPosition()); if (this.isThisParam(method[paramsKey][0])) { - this.raise(TSErrors.AccesorCannotDeclareThisParameter, this.state.curPosition()); + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); } } } else if (method.kind === "set") { @@ -7870,17 +8046,17 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } else { const firstParameter = method[paramsKey][0]; if (this.isThisParam(firstParameter)) { - this.raise(TSErrors.AccesorCannotDeclareThisParameter, this.state.curPosition()); + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); } if (firstParameter.type === "Identifier" && firstParameter.optional) { - this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, this.state.curPosition()); + this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition()); } if (firstParameter.type === "RestElement") { - this.raise(TSErrors.SetAccesorCannotHaveRestParameter, this.state.curPosition()); + this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition()); } } if (method[returnTypeKey]) { - this.raise(TSErrors.SetAccesorCannotHaveReturnType, method[returnTypeKey]); + this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]); } } else { method.kind = "method"; @@ -7954,12 +8130,6 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { this.next(); return this.match(58); } - tsParseMappedTypeParameter() { - const node = this.startNode(); - node.name = this.tsParseTypeParameterName(); - node.constraint = this.tsExpectThenParseType(58); - return this.finishNode(node, "TSTypeParameter"); - } tsParseMappedType() { const node = this.startNode(); this.expect(5); @@ -7971,7 +8141,12 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { node.readonly = true; } this.expect(0); - node.typeParameter = this.tsParseMappedTypeParameter(); + { + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsExpectThenParseType(58); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + } node.nameType = this.eatContextual(93) ? this.tsParseType() : null; this.expect(3); if (this.match(53)) { @@ -8002,10 +8177,11 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return this.finishNode(node, "TSTupleType"); } tsParseTupleElementType() { + const restStartLoc = this.state.startLoc; + const rest = this.eat(21); const { startLoc } = this.state; - const rest = this.eat(21); let labeled; let label; let optional; @@ -8020,7 +8196,6 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { type = this.tsParseType(); } else if (chAfterWord === 63) { optional = true; - const startLoc = this.state.startLoc; const wordName = this.state.value; const typeOrLabel = this.tsParseNonArrayType(); if (this.lookaheadCharCode() === 58) { @@ -8042,7 +8217,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { if (labeled) { let labeledNode; if (label) { - labeledNode = this.startNodeAtNode(label); + labeledNode = this.startNodeAt(startLoc); labeledNode.optional = optional; labeledNode.label = label; labeledNode.elementType = type; @@ -8051,7 +8226,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc); } } else { - labeledNode = this.startNodeAtNode(type); + labeledNode = this.startNodeAt(startLoc); labeledNode.optional = optional; this.raise(TSErrors.InvalidTupleMemberLabel, type); labeledNode.label = type; @@ -8059,12 +8234,12 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } type = this.finishNode(labeledNode, "TSNamedTupleMember"); } else if (optional) { - const optionalTypeNode = this.startNodeAtNode(type); + const optionalTypeNode = this.startNodeAt(startLoc); optionalTypeNode.typeAnnotation = type; type = this.finishNode(optionalTypeNode, "TSOptionalType"); } if (rest) { - const restNode = this.startNodeAt(startLoc); + const restNode = this.startNodeAt(restStartLoc); restNode.typeAnnotation = type; type = this.finishNode(restNode, "TSRestType"); } @@ -8090,9 +8265,9 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { tsParseLiteralTypeNode() { const node = this.startNode(); switch (this.state.type) { - case 134: case 135: - case 133: + case 136: + case 134: case 85: case 86: node.literal = super.parseExprAtom(); @@ -8103,9 +8278,11 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return this.finishNode(node, "TSLiteralType"); } tsParseTemplateLiteralType() { - const node = this.startNode(); - node.literal = super.parseTemplate(false); - return this.finishNode(node, "TSLiteralType"); + { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } } parseTemplateSubstitution() { if (this.state.inType) return this.tsParseType(); @@ -8121,9 +8298,9 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } tsParseNonArrayType() { switch (this.state.type) { - case 133: case 134: case 135: + case 136: case 85: case 86: return this.tsParseLiteralTypeNode(); @@ -8131,7 +8308,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { if (this.state.value === "-") { const node = this.startNode(); const nextToken = this.lookahead(); - if (nextToken.type !== 134 && nextToken.type !== 135) { + if (nextToken.type !== 135 && nextToken.type !== 136) { this.unexpected(); } node.literal = this.parseMaybeUnary(); @@ -8172,15 +8349,18 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { this.unexpected(); } tsParseArrayTypeOrHigher() { + const { + startLoc + } = this.state; let type = this.tsParseNonArrayType(); while (!this.hasPrecedingLineBreak() && this.eat(0)) { if (this.match(3)) { - const node = this.startNodeAtNode(type); + const node = this.startNodeAt(startLoc); node.elementType = type; this.expect(3); type = this.finishNode(node, "TSArrayType"); } else { - const node = this.startNodeAtNode(type); + const node = this.startNodeAt(startLoc); node.objectType = type; node.indexType = this.tsParseType(); this.expect(3); @@ -8432,12 +8612,14 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { tsParseHeritageClause(token) { const originalStartLoc = this.state.startLoc; const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { - const node = this.startNode(); - node.expression = this.tsParseEntityName(); - if (this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); + { + const node = this.startNode(); + node.expression = this.tsParseEntityName(1 | 2); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); } - return this.finishNode(node, "TSExpressionWithTypeArguments"); }); if (!delimitedList.length) { this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, { @@ -8482,13 +8664,17 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { this.semicolon(); return this.finishNode(node, "TSTypeAliasDeclaration"); } - tsInNoContext(cb) { - const oldContext = this.state.context; - this.state.context = [oldContext[0]]; - try { + tsInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { return cb(); - } finally { - this.state.context = oldContext; } } tsInType(cb) { @@ -8537,7 +8723,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } tsParseEnumMember() { const node = this.startNode(); - node.id = this.match(133) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); if (this.eat(29)) { node.initializer = super.parseMaybeAssignAllowIn(); } @@ -8549,10 +8735,19 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { this.expectContextual(126); node.id = this.parseIdentifier(); this.checkIdentifier(node.id, node.const ? 8971 : 8459); + { + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + } + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseEnumBody() { + const node = this.startNode(); this.expect(5); node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); this.expect(8); - return this.finishNode(node, "TSEnumDeclaration"); + return this.finishNode(node, "TSEnumBody"); } tsParseModuleBlock() { const node = this.startNode(); @@ -8582,9 +8777,13 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } tsParseAmbientExternalModuleDeclaration(node) { if (this.isContextual(112)) { - node.global = true; + node.kind = "global"; + { + node.global = true; + } node.id = this.parseIdentifier(); - } else if (this.match(133)) { + } else if (this.match(134)) { + node.kind = "module"; node.id = super.parseStringLiteral(this.state.value); } else { this.unexpected(); @@ -8601,7 +8800,9 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return this.finishNode(node, "TSModuleDeclaration"); } tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { - node.isExport = isExport || false; + { + node.isExport = isExport || false; + } node.id = maybeDefaultIdentifier || this.parseIdentifier(); this.checkIdentifier(node.id, 4096); this.expect(29); @@ -8617,13 +8818,13 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return this.isContextual(119) && this.lookaheadCharCode() === 40; } tsParseModuleReference() { - return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0); } tsParseExternalModuleReference() { const node = this.startNode(); this.expectContextual(119); this.expect(10); - if (!this.match(133)) { + if (!this.match(134)) { this.unexpected(); } node.expression = super.parseExprAtom(); @@ -8718,7 +8919,10 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { this.scope.enter(256); this.prodParam.enter(0); const mod = node; - mod.global = true; + mod.kind = "global"; + { + node.global = true; + } mod.id = expr; mod.body = this.tsParseModuleBlock(); this.scope.exit(); @@ -8739,15 +8943,17 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { break; case "module": if (this.tsCheckLineTerminator(next)) { - if (this.match(133)) { + if (this.match(134)) { return this.tsParseAmbientExternalModuleDeclaration(node); } else if (tokenIsIdentifier(this.state.type)) { + node.kind = "module"; return this.tsParseModuleOrNamespaceDeclaration(node); } } break; case "namespace": if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + node.kind = "namespace"; return this.tsParseModuleOrNamespaceDeclaration(node); } break; @@ -8788,7 +8994,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } tsParseTypeArguments() { const node = this.startNode(); - node.params = this.tsInType(() => this.tsInNoContext(() => { + node.params = this.tsInType(() => this.tsInTopLevelContext(() => { this.expect(47); return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); })); @@ -8807,7 +9013,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { if (this.tsIsDeclarationStart()) return false; return super.isExportDefaultSpecifier(); } - parseAssignableListItem(flags, decorators) { + parseBindingElement(flags, decorators) { const startLoc = this.state.startLoc; const modified = {}; this.tsParseModifiers({ @@ -8820,7 +9026,9 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { this.raise(TSErrors.UnexpectedParameterModifier, startLoc); } const left = this.parseMaybeDefault(); - this.parseAssignableListItemTypes(left, flags); + if (flags & 2) { + this.parseFunctionParamType(left); + } const elt = this.parseMaybeDefault(left.loc.start, left); if (accessibility || readonly || override) { const pp = this.startNodeAt(startLoc); @@ -8931,15 +9139,19 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } if (tokenIsTemplate(this.state.type)) { const result = super.parseTaggedTemplateExpression(base, startLoc, state); - result.typeParameters = typeArguments; + { + result.typeParameters = typeArguments; + } return result; } if (!noCalls && this.eat(10)) { const node = this.startNodeAt(startLoc); node.callee = base; - node.arguments = this.parseCallExpressionArguments(11, false); + node.arguments = this.parseCallExpressionArguments(11); this.tsCheckForInvalidTypeCasts(node.arguments); - node.typeParameters = typeArguments; + { + node.typeParameters = typeArguments; + } if (state.optionalChainMember) { node.optional = isOptionalCall; } @@ -8951,7 +9163,9 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } const node = this.startNodeAt(startLoc); node.expression = base; - node.typeParameters = typeArguments; + { + node.typeParameters = typeArguments; + } return this.finishNode(node, "TSInstantiationExpression"); }); if (missingParenErrorLoc) { @@ -8973,7 +9187,9 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { callee } = node; if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { - node.typeParameters = callee.typeParameters; + { + node.typeParameters = callee.typeParameters; + } node.callee = callee.expression; } } @@ -9029,7 +9245,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } } parseImport(node) { - if (this.match(133)) { + if (this.match(134)) { node.importKind = "value"; return super.parseImport(node); } @@ -9054,15 +9270,18 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } parseExport(node, decorators) { if (this.match(83)) { - this.next(); const nodeImportEquals = node; + this.next(); let maybeDefaultIdentifier = null; if (this.isContextual(130) && this.isPotentialImportPhase(false)) { maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false); } else { nodeImportEquals.importKind = "value"; } - return this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true); + const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true); + { + return declaration; + } } else if (this.eat(29)) { const assign = node; assign.expression = super.parseExpression(); @@ -9109,7 +9328,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { if (kind !== "const" || !!id.typeAnnotation) { this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init); } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { - this.raise(TSErrors.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, init); + this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init); } } return declaration; @@ -9220,18 +9439,15 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return super.shouldParseExportDeclaration(); } parseConditional(expr, startLoc, refExpressionErrors) { - if (!this.state.maybeInArrowParameters || !this.match(17)) { - return super.parseConditional(expr, startLoc, refExpressionErrors); - } - const result = this.tryParse(() => super.parseConditional(expr, startLoc)); - if (!result.node) { - if (result.error) { - super.setOptionalParametersError(refExpressionErrors, result.error); + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; } - return expr; } - if (result.error) this.state = result.failState; - return result.node; + return super.parseConditional(expr, startLoc, refExpressionErrors); } parseParenItem(node, startLoc) { const newNode = super.parseParenItem(node, startLoc); @@ -9262,7 +9478,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { node.exportKind = "type"; } - if (isDeclare) { + if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") { this.resetStartLocation(declaration, startLoc); declaration.declare = true; } @@ -9297,7 +9513,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { key } = node; this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, { - propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` }); } return super.parseClassProperty(node); @@ -9353,7 +9569,9 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { parseClassSuper(node) { super.parseClassSuper(node); if (node.superClass && (this.match(47) || this.match(51))) { - node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } } if (this.eatContextual(113)) { node.implements = this.tsParseHeritageClause("implements"); @@ -9391,7 +9609,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { let state; let jsx; let typeCast; - if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) { + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { state = this.state.clone(); jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); if (!jsx.error) return jsx.node; @@ -9446,8 +9664,8 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); } reportReservedArrowTypeParam(node) { - var _node$extra; - if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + var _node$extra2; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { this.raise(TSErrors.ReservedArrowTypeParam, node); } } @@ -9472,8 +9690,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } return super.parseArrow(node); } - parseAssignableListItemTypes(param, flags) { - if (!(flags & 2)) return param; + parseFunctionParamType(param) { if (this.eat(17)) { param.optional = true; } @@ -9548,7 +9765,6 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { case "TSParameterProperty": return "parameter"; case "TSNonNullExpression": - case "TSInstantiationExpression": return "expression"; case "TSAsExpression": case "TSSatisfiesExpression": @@ -9564,17 +9780,19 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } return super.parseBindingAtom(); } - parseMaybeDecoratorArguments(expr) { + parseMaybeDecoratorArguments(expr, startLoc) { if (this.match(47) || this.match(51)) { const typeArguments = this.tsParseTypeArgumentsInExpression(); if (this.match(10)) { - const call = super.parseMaybeDecoratorArguments(expr); - call.typeParameters = typeArguments; + const call = super.parseMaybeDecoratorArguments(expr, startLoc); + { + call.typeParameters = typeArguments; + } return call; } this.unexpected(null, 10); } - return super.parseMaybeDecoratorArguments(expr); + return super.parseMaybeDecoratorArguments(expr, startLoc); } checkCommaAfterRest(close) { if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { @@ -9632,14 +9850,12 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } return type; } - toAssignableList(exprList, trailingCommaLoc, isLHS) { - for (let i = 0; i < exprList.length; i++) { - const expr = exprList[i]; - if ((expr == null ? void 0 : expr.type) === "TSTypeCastExpression") { - exprList[i] = this.typeCastToParameter(expr); - } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "TSTypeCastExpression") { + exprList[index] = this.typeCastToParameter(node); } - super.toAssignableList(exprList, trailingCommaLoc, isLHS); + super.toAssignableListItem(exprList, index, isLHS); } typeCastToParameter(node) { node.expression.typeAnnotation = node.typeAnnotation; @@ -9661,7 +9877,11 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { jsxParseOpeningElementAfterName(node) { if (this.match(47) || this.match(51)) { const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); - if (typeArguments) node.typeParameters = typeArguments; + if (typeArguments) { + { + node.typeParameters = typeArguments; + } + } } return super.jsxParseOpeningElementAfterName(node); } @@ -9721,13 +9941,14 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); if (method.abstract) { - const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body; - if (hasBody) { + const hasEstreePlugin = this.hasPlugin("estree"); + const methodFn = hasEstreePlugin ? method.value : method; + if (methodFn.body) { const { key } = method; this.raise(TSErrors.AbstractMethodHasImplementation, method, { - methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` }); } } @@ -9900,13 +10121,13 @@ const PlaceholderErrors = ParseErrorEnum`placeholders`({ }); var placeholders = superClass => class PlaceholdersParserMixin extends superClass { parsePlaceholder(expectedNode) { - if (this.match(144)) { + if (this.match(133)) { const node = this.startNode(); this.next(); this.assertNoSpace(); node.name = super.parseIdentifier(true); this.assertNoSpace(); - this.expect(144); + this.expect(133); return this.finishPlaceholder(node, expectedNode); } } @@ -9920,7 +10141,7 @@ var placeholders = superClass => class PlaceholdersParserMixin extends superClas } getTokenFromCode(code) { if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { - this.finishOp(144, 2); + this.finishOp(133, 2); } else { super.getTokenFromCode(code); } @@ -9954,7 +10175,7 @@ var placeholders = superClass => class PlaceholdersParserMixin extends superClas return true; } const nextToken = this.lookahead(); - if (nextToken.type === 144) { + if (nextToken.type === 133) { return true; } return false; @@ -9992,7 +10213,7 @@ var placeholders = superClass => class PlaceholdersParserMixin extends superClas const oldStrict = this.state.strict; const placeholder = this.parsePlaceholder("Identifier"); if (placeholder) { - if (this.match(81) || this.match(144) || this.match(5)) { + if (this.match(81) || this.match(133) || this.match(5)) { node.id = placeholder; } else if (optionalId || !isStatement) { node.id = null; @@ -10028,7 +10249,7 @@ var placeholders = superClass => class PlaceholdersParserMixin extends superClas if (this.match(65)) { const next = this.nextTokenStart(); if (this.isUnparsedContextual(next, "from")) { - if (this.input.startsWith(tokenLabelName(144), this.nextTokenStartSince(next + 4))) { + if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) { return true; } } @@ -10077,7 +10298,7 @@ var placeholders = superClass => class PlaceholdersParserMixin extends superClas return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); } assertNoSpace() { - if (this.state.start > this.state.lastTokEndLoc.index) { + if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) { this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc); } } @@ -10154,8 +10375,8 @@ function validatePlugins(pluginsMap) { } if (pluginsMap.has("moduleAttributes")) { { - if (pluginsMap.has("importAttributes") || pluginsMap.has("importAssertions")) { - throw new Error("Cannot combine importAssertions, importAttributes and moduleAttributes plugins."); + if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) { + throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins."); } const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version; if (moduleAttributesVersionPluginOption !== "may-2020") { @@ -10163,8 +10384,15 @@ function validatePlugins(pluginsMap) { } } } - if (pluginsMap.has("importAttributes") && pluginsMap.has("importAssertions")) { - throw new Error("Cannot combine importAssertions and importAttributes plugins."); + if (pluginsMap.has("importAssertions")) { + if (pluginsMap.has("deprecatedImportAssert")) { + throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins."); + } + } + if (!pluginsMap.has("deprecatedImportAssert") && pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) { + { + pluginsMap.set("deprecatedImportAssert", {}); + } } if (pluginsMap.has("recordAndTuple")) { const syntaxType = pluginsMap.get("recordAndTuple").syntaxType; @@ -10195,54 +10423,19 @@ const mixinPlugins = { placeholders }; const mixinPluginNames = Object.keys(mixinPlugins); -const defaultOptions = { - sourceType: "script", - sourceFilename: undefined, - startColumn: 0, - startLine: 1, - allowAwaitOutsideFunction: false, - allowReturnOutsideFunction: false, - allowNewTargetOutsideFunction: false, - allowImportExportEverywhere: false, - allowSuperOutsideMethod: false, - allowUndeclaredExports: false, - plugins: [], - strictMode: null, - ranges: false, - tokens: false, - createImportExpressions: false, - createParenthesizedExpressions: false, - errorRecovery: false, - attachComment: true, - annexB: true -}; -function getOptions(opts) { - if (opts == null) { - return Object.assign({}, defaultOptions); - } - if (opts.annexB != null && opts.annexB !== false) { - throw new Error("The `annexB` option can only be set to `false`."); - } - const options = {}; - for (const key of Object.keys(defaultOptions)) { - var _opts$key; - options[key] = (_opts$key = opts[key]) != null ? _opts$key : defaultOptions[key]; - } - return options; -} class ExpressionParser extends LValParser { - checkProto(prop, isRecord, protoRef, refExpressionErrors) { + checkProto(prop, isRecord, sawProto, refExpressionErrors) { if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { - return; + return sawProto; } const key = prop.key; const name = key.type === "Identifier" ? key.name : key.value; if (name === "__proto__") { if (isRecord) { this.raise(Errors.RecordNoProto, key); - return; + return true; } - if (protoRef.used) { + if (sawProto) { if (refExpressionErrors) { if (refExpressionErrors.doubleProtoLoc === null) { refExpressionErrors.doubleProtoLoc = key.loc.start; @@ -10251,23 +10444,24 @@ class ExpressionParser extends LValParser { this.raise(Errors.DuplicateProto, key); } } - protoRef.used = true; + return true; } + return sawProto; } shouldExitDescending(expr, potentialArrowAt) { - return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt; + return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt; } getExpression() { this.enterInitialScopes(); this.nextToken(); const expr = this.parseExpression(); - if (!this.match(139)) { + if (!this.match(140)) { this.unexpected(); } this.finalizeRemainingComments(); expr.comments = this.comments; expr.errors = this.state.errors; - if (this.options.tokens) { + if (this.optionFlags & 128) { expr.tokens = this.tokens; } return expr; @@ -10298,9 +10492,8 @@ class ExpressionParser extends LValParser { parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); } - setOptionalParametersError(refExpressionErrors, resultError) { - var _resultError$loc; - refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc; + setOptionalParametersError(refExpressionErrors) { + refExpressionErrors.optionalParametersLoc = this.state.startLoc; } parseMaybeAssign(refExpressionErrors, afterLeftParse) { const startLoc = this.state.startLoc; @@ -10381,7 +10574,7 @@ class ExpressionParser extends LValParser { return expr; } parseMaybeUnaryOrPrivate(refExpressionErrors) { - return this.match(138) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); } parseExprOps(refExpressionErrors) { const startLoc = this.state.startLoc; @@ -10449,18 +10642,19 @@ class ExpressionParser extends LValParser { return this.withTopicBindingContext(() => { return this.parseHackPipeBody(); }); - case "smart": - return this.withTopicBindingContext(() => { - if (this.prodParam.hasYield && this.isContextual(108)) { - throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc); - } - return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); - }); case "fsharp": return this.withSoloAwaitPermittingContext(() => { return this.parseFSharpPipelineBody(prec); }); } + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + } default: return this.parseExprOpBaseRightExpr(op, prec); } @@ -10620,7 +10814,7 @@ class ExpressionParser extends LValParser { if (computed) { node.property = this.parseExpression(); this.expect(3); - } else if (this.match(138)) { + } else if (this.match(139)) { if (base.type === "Super") { this.raise(Errors.SuperPrivateField, startLoc); } @@ -10665,7 +10859,7 @@ class ExpressionParser extends LValParser { if (optional) { node.arguments = this.parseCallExpressionArguments(11); } else { - node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors); + node.arguments = this.parseCallExpressionArguments(11, base.type !== "Super", node, refExpressionErrors); } let finishedNode = this.finishCallExpression(node, optionalChainMember); if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { @@ -10697,26 +10891,12 @@ class ExpressionParser extends LValParser { return this.finishNode(node, "TaggedTemplateExpression"); } atPossibleAsyncArrow(base) { - return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt; - } - expectImportAttributesPlugin() { - if (!this.hasPlugin("importAssertions")) { - this.expectPlugin("importAttributes"); - } + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt; } finishCallExpression(node, optional) { if (node.callee.type === "Import") { - if (node.arguments.length === 2) { - { - if (!this.hasPlugin("moduleAttributes")) { - this.expectImportAttributesPlugin(); - } - } - } if (node.arguments.length === 0 || node.arguments.length > 2) { - this.raise(Errors.ImportCallArity, node, { - maxArgumentCount: this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1 - }); + this.raise(Errors.ImportCallArity, node); } else { for (const arg of node.arguments) { if (arg.type === "SpreadElement") { @@ -10727,7 +10907,7 @@ class ExpressionParser extends LValParser { } return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); } - parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) { + parseCallExpressionArguments(close, allowPlaceholder, nodeForExtra, refExpressionErrors) { const elts = []; let first = true; const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; @@ -10738,9 +10918,6 @@ class ExpressionParser extends LValParser { } else { this.expect(12); if (this.match(close)) { - if (dynamicImport && !this.hasPlugin("importAttributes") && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) { - this.raise(Errors.ImportCallArgumentTrailingComma, this.state.lastTokStartLoc); - } if (nodeForExtra) { this.addTrailingCommaExtraToNode(nodeForExtra); } @@ -10789,7 +10966,7 @@ class ExpressionParser extends LValParser { return this.parseImportMetaProperty(node); } if (this.match(10)) { - if (this.options.createImportExpressions) { + if (this.optionFlags & 256) { return this.parseImportCall(node); } else { return this.finishNode(node, "Import"); @@ -10812,13 +10989,11 @@ class ExpressionParser extends LValParser { this.readRegexp(); return this.parseRegExpLiteral(this.state.value); } - case 134: - return this.parseNumericLiteral(this.state.value); case 135: - return this.parseBigIntLiteral(this.state.value); + return this.parseNumericLiteral(this.state.value); case 136: - return this.parseDecimalLiteral(this.state.value); - case 133: + return this.parseBigIntLiteral(this.state.value); + case 134: return this.parseStringLiteral(this.state.value); case 84: return this.parseNullLiteral(); @@ -10872,7 +11047,7 @@ class ExpressionParser extends LValParser { throw this.raise(Errors.UnsupportedBind, callee); } } - case 138: + case 139: { this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, { identifierName: this.state.value @@ -10914,6 +11089,9 @@ class ExpressionParser extends LValParser { break; } default: + if (type === 137) { + return this.parseDecimalLiteral(this.state.value); + } if (tokenIsIdentifier(type)) { if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { return this.parseModuleExpression(); @@ -10972,12 +11150,19 @@ class ExpressionParser extends LValParser { } finishTopicReference(node, startLoc, pipeProposal, tokenType) { if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { - const nodeType = pipeProposal === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference"; - if (!this.topicReferenceIsAllowedInCurrentContext()) { - this.raise(pipeProposal === "smart" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, startLoc); + if (pipeProposal === "hack") { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PipeTopicUnbound, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "TopicReference"); + } else { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PrimaryTopicNotAllowed, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "PipelinePrimaryTopicReference"); } - this.registerTopicReference(); - return this.finishNode(node, nodeType); } else { throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, { token: tokenLabelName(tokenType) @@ -11030,9 +11215,9 @@ class ExpressionParser extends LValParser { parseSuper() { const node = this.startNode(); this.next(); - if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { + if (this.match(10) && !this.scope.allowDirectSuper && !(this.optionFlags & 16)) { this.raise(Errors.SuperNotAllowed, node); - } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { + } else if (!this.scope.allowSuper && !(this.optionFlags & 16)) { this.raise(Errors.UnexpectedSuper, node); } if (!this.match(10) && !this.match(0) && !this.match(16)) { @@ -11085,9 +11270,8 @@ class ExpressionParser extends LValParser { this.sawUnambiguousESM = true; } else if (this.isContextual(105) || this.isContextual(97)) { const isSource = this.isContextual(105); - if (!isSource) this.unexpected(); this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); - if (!this.options.createImportExpressions) { + if (!(this.optionFlags & 256)) { throw this.raise(Errors.DynamicImportPhaseRequiresImportExpressions, this.state.startLoc, { phase: this.state.value }); @@ -11100,7 +11284,7 @@ class ExpressionParser extends LValParser { } parseLiteralAtNode(value, type, node) { this.addExtra(node, "rawValue", value); - this.addExtra(node, "raw", this.input.slice(node.start, this.state.end)); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); node.value = value; this.next(); return this.finishNode(node, type); @@ -11123,7 +11307,7 @@ class ExpressionParser extends LValParser { } parseRegExpLiteral(value) { const node = this.startNode(); - this.addExtra(node, "raw", this.input.slice(node.start, this.state.end)); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); node.pattern = value.pattern; node.flags = value.flags; this.next(); @@ -11207,7 +11391,7 @@ class ExpressionParser extends LValParser { return this.wrapParenthesis(startLoc, val); } wrapParenthesis(startLoc, expression) { - if (!this.options.createParenthesizedExpressions) { + if (!(this.optionFlags & 512)) { this.addExtra(expression, "parenthesized", true); this.addExtra(expression, "parenStart", startLoc.index); this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); @@ -11235,7 +11419,7 @@ class ExpressionParser extends LValParser { const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); this.next(); const metaProp = this.parseMetaProperty(node, meta, "target"); - if (!this.scope.inNonArrowFunction && !this.scope.inClass && !this.options.allowNewTargetOutsideFunction) { + if (!this.scope.inNonArrowFunction && !this.scope.inClass && !(this.optionFlags & 4)) { this.raise(Errors.UnexpectedNewTarget, metaProp); } return metaProp; @@ -11311,7 +11495,7 @@ class ExpressionParser extends LValParser { } const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; this.state.inFSharpPipelineDirectBody = false; - const propHash = Object.create(null); + let sawProto = false; let first = true; const node = this.startNode(); node.properties = []; @@ -11331,7 +11515,7 @@ class ExpressionParser extends LValParser { prop = this.parseBindingProperty(); } else { prop = this.parsePropertyDefinition(refExpressionErrors); - this.checkProto(prop, isRecord, propHash, refExpressionErrors); + sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors); } if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { this.raise(Errors.InvalidRecordProperty, prop); @@ -11494,19 +11678,16 @@ class ExpressionParser extends LValParser { key = this.parseIdentifier(true); } else { switch (type) { - case 134: + case 135: key = this.parseNumericLiteral(value); break; - case 133: + case 134: key = this.parseStringLiteral(value); break; - case 135: + case 136: key = this.parseBigIntLiteral(value); break; - case 136: - key = this.parseDecimalLiteral(value); - break; - case 138: + case 139: { const privateKeyLoc = this.state.startLoc; if (refExpressionErrors != null) { @@ -11520,11 +11701,15 @@ class ExpressionParser extends LValParser { break; } default: + if (type === 137) { + key = this.parseDecimalLiteral(value); + break; + } this.unexpected(); } } prop.key = key; - if (type !== 138) { + if (type !== 139) { prop.computed = false; } } @@ -11749,7 +11934,7 @@ class ExpressionParser extends LValParser { } } recordAwaitIfAllowed() { - const isAwaitAllowed = this.prodParam.hasAwait || this.options.allowAwaitOutsideFunction && !this.scope.inFunction; + const isAwaitAllowed = this.prodParam.hasAwait || this.optionFlags & 1 && !this.scope.inFunction; if (isAwaitAllowed && !this.scope.inFunction) { this.state.hasTopLevelAwait = true; } @@ -11761,7 +11946,7 @@ class ExpressionParser extends LValParser { if (this.eat(55)) { this.raise(Errors.ObsoleteAwaitStar, node); } - if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) { + if (!this.scope.inFunction && !(this.optionFlags & 1)) { if (this.isAmbiguousAwait()) { this.ambiguousScriptDifferentAst = true; } else { @@ -11778,7 +11963,7 @@ class ExpressionParser extends LValParser { const { type } = this.state; - return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 137 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; } parseYield() { const node = this.startNode(); @@ -11790,7 +11975,7 @@ class ExpressionParser extends LValParser { delegating = this.eat(55); switch (this.state.type) { case 13: - case 139: + case 140: case 8: case 11: case 3: @@ -11809,14 +11994,16 @@ class ExpressionParser extends LValParser { parseImportCall(node) { this.next(); node.source = this.parseMaybeAssignAllowIn(); - if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { - node.options = null; - } + node.options = null; if (this.eat(12)) { - this.expectImportAttributesPlugin(); if (!this.match(11)) { node.options = this.parseMaybeAssignAllowIn(); - this.eat(12); + if (this.eat(12) && !this.match(11)) { + do { + this.parseMaybeAssignAllowIn(); + } while (this.eat(12) && !this.match(11)); + this.raise(Errors.ImportCallArity, node); + } } } this.expect(11); @@ -11972,7 +12159,7 @@ const loopLabel = { }; const loneSurrogate = /[\uD800-\uDFFF]/u; const keywordRelationalOperator = /in(?:stanceof)?/y; -function babel7CompatTokens(tokens, input) { +function babel7CompatTokens(tokens, input, startIndex) { for (let i = 0; i < tokens.length; i++) { const token = tokens[i]; const { @@ -11980,7 +12167,7 @@ function babel7CompatTokens(tokens, input) { } = token; if (typeof type === "number") { { - if (type === 138) { + if (type === 139) { const { loc, start, @@ -12017,7 +12204,7 @@ function babel7CompatTokens(tokens, input) { const backquoteEnd = start + 1; const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); let startToken; - if (input.charCodeAt(start) === 96) { + if (input.charCodeAt(start - startIndex) === 96) { startToken = new Token({ type: getExportedToken(22), value: "`", @@ -12083,17 +12270,17 @@ class StatementParser extends ExpressionParser { parseTopLevel(file, program) { file.program = this.parseProgram(program); file.comments = this.comments; - if (this.options.tokens) { - file.tokens = babel7CompatTokens(this.tokens, this.input); + if (this.optionFlags & 128) { + file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex); } return this.finishNode(file, "File"); } - parseProgram(program, end = 139, sourceType = this.options.sourceType) { + parseProgram(program, end = 140, sourceType = this.options.sourceType) { program.sourceType = sourceType; program.interpreter = this.parseInterpreterDirective(); this.parseBlockBody(program, true, true, end); if (this.inModule) { - if (!this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) { + if (!(this.optionFlags & 32) && this.scope.undefinedExports.size > 0) { for (const [localName, at] of Array.from(this.scope.undefinedExports)) { this.raise(Errors.ModuleExportUndefined, at, { localName @@ -12103,7 +12290,7 @@ class StatementParser extends ExpressionParser { this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait); } let finishedProgram; - if (end === 139) { + if (end === 140) { finishedProgram = this.finishNode(program, "Program"); } else { finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); @@ -12117,7 +12304,7 @@ class StatementParser extends ExpressionParser { delete directive.expression; const directiveLiteral = directive.value; const expressionValue = directiveLiteral.value; - const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end); + const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end)); const val = directiveLiteral.value = raw.slice(1, -1); this.addExtra(directiveLiteral, "raw", raw); this.addExtra(directiveLiteral, "rawValue", val); @@ -12319,21 +12506,15 @@ class StatementParser extends ExpressionParser { } case 82: { - if (!this.options.allowImportExportEverywhere && !topLevel) { + if (!(this.optionFlags & 8) && !topLevel) { this.raise(Errors.UnexpectedImportExport, this.state.startLoc); } this.next(); let result; if (startType === 83) { result = this.parseImport(node); - if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) { - this.sawUnambiguousESM = true; - } } else { result = this.parseExport(node, decorators); - if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") { - this.sawUnambiguousESM = true; - } } this.assertModuleNodeAllowed(result); return result; @@ -12358,7 +12539,7 @@ class StatementParser extends ExpressionParser { } } assertModuleNodeAllowed(node) { - if (!this.options.allowImportExportEverywhere && !this.inModule) { + if (!(this.optionFlags & 8) && !this.inModule) { this.raise(Errors.ImportOutsideModule, node); } } @@ -12368,7 +12549,8 @@ class StatementParser extends ExpressionParser { } maybeTakeDecorators(maybeDecorators, classNode, exportNode) { if (maybeDecorators) { - if (classNode.decorators && classNode.decorators.length > 0) { + var _classNode$decorators; + if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) { if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]); } @@ -12415,7 +12597,7 @@ class StatementParser extends ExpressionParser { this.expect(11); expr = this.wrapParenthesis(startLoc, expr); const paramsStartLoc = this.state.startLoc; - node.expression = this.parseMaybeDecoratorArguments(expr); + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc); } @@ -12424,7 +12606,7 @@ class StatementParser extends ExpressionParser { while (this.eat(16)) { const node = this.startNodeAt(startLoc); node.object = expr; - if (this.match(138)) { + if (this.match(139)) { this.classScope.usePrivateName(this.state.value, this.state.startLoc); node.property = this.parsePrivateName(); } else { @@ -12433,18 +12615,18 @@ class StatementParser extends ExpressionParser { node.computed = false; expr = this.finishNode(node, "MemberExpression"); } - node.expression = this.parseMaybeDecoratorArguments(expr); + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); } } else { node.expression = this.parseExprSubscripts(); } return this.finishNode(node, "Decorator"); } - parseMaybeDecoratorArguments(expr) { + parseMaybeDecoratorArguments(expr, startLoc) { if (this.eat(10)) { - const node = this.startNodeAtNode(expr); + const node = this.startNodeAt(startLoc); node.callee = expr; - node.arguments = this.parseCallExpressionArguments(11, false); + node.arguments = this.parseCallExpressionArguments(11); this.toReferencedList(node.arguments); return this.finishNode(node, "CallExpression"); } @@ -12589,7 +12771,7 @@ class StatementParser extends ExpressionParser { return this.finishNode(node, "IfStatement"); } parseReturnStatement(node) { - if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) { + if (!this.prodParam.hasReturn && !(this.optionFlags & 2)) { this.raise(Errors.IllegalReturn, this.state.startLoc); } this.next(); @@ -12721,7 +12903,7 @@ class StatementParser extends ExpressionParser { for (let i = this.state.labels.length - 1; i >= 0; i--) { const label = this.state.labels[i]; if (label.statementStart === node.start) { - label.statementStart = this.state.start; + label.statementStart = this.sourceToOffsetPos(this.state.start); label.kind = kind; } else { break; @@ -12730,7 +12912,7 @@ class StatementParser extends ExpressionParser { this.state.labels.push({ name: maybeName, kind: kind, - statementStart: this.state.start + statementStart: this.sourceToOffsetPos(this.state.start) }); node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); this.state.labels.pop(); @@ -13027,7 +13209,7 @@ class StatementParser extends ExpressionParser { this.parsePropertyNamePrefixOperator(member); if (this.eat(55)) { method.kind = "method"; - const isPrivateName = this.match(138); + const isPrivateName = this.match(139); this.parseClassElementName(method); if (isPrivateName) { this.pushClassPrivateMethod(classBody, privateMethod, true, false); @@ -13078,7 +13260,7 @@ class StatementParser extends ExpressionParser { this.unexpected(maybeQuestionTokenStartLoc); } method.kind = "method"; - const isPrivate = this.match(138); + const isPrivate = this.match(139); this.parseClassElementName(method); this.parsePostMemberNameModifiers(publicMember); if (isPrivate) { @@ -13092,7 +13274,7 @@ class StatementParser extends ExpressionParser { } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) { this.resetPreviousNodeTrailingComments(key); method.kind = maybeContextualKw; - const isPrivate = this.match(138); + const isPrivate = this.match(139); this.parseClassElementName(publicMethod); if (isPrivate) { this.pushClassPrivateMethod(classBody, privateMethod, false, false); @@ -13106,7 +13288,7 @@ class StatementParser extends ExpressionParser { } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) { this.expectPlugin("decoratorAutoAccessors"); this.resetPreviousNodeTrailingComments(key); - const isPrivate = this.match(138); + const isPrivate = this.match(139); this.parseClassElementName(publicProp); this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); } else if (this.isLineTerminator()) { @@ -13124,10 +13306,10 @@ class StatementParser extends ExpressionParser { type, value } = this.state; - if ((type === 132 || type === 133) && member.static && value === "prototype") { + if ((type === 132 || type === 134) && member.static && value === "prototype") { this.raise(Errors.StaticPrototype, this.state.startLoc); } - if (type === 138) { + if (type === 139) { if (value === "constructor") { this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc); } @@ -13243,6 +13425,7 @@ class StatementParser extends ExpressionParser { throw this.raise(Errors.UnsupportedDecoratorExport, node); } this.parseExportFrom(node, true); + this.sawUnambiguousESM = true; return this.finishNode(node, "ExportAllDeclaration"); } const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); @@ -13271,6 +13454,7 @@ class StatementParser extends ExpressionParser { } else if (decorators) { throw this.raise(Errors.UnsupportedDecoratorExport, node); } + this.sawUnambiguousESM = true; return this.finishNode(node2, "ExportNamedDeclaration"); } if (this.eat(65)) { @@ -13283,6 +13467,7 @@ class StatementParser extends ExpressionParser { throw this.raise(Errors.UnsupportedDecoratorExport, node); } this.checkExport(node2, true, true); + this.sawUnambiguousESM = true; return this.finishNode(node2, "ExportDefaultDeclaration"); } this.unexpected(null, 5); @@ -13320,10 +13505,12 @@ class StatementParser extends ExpressionParser { const isTypeExport = node2.exportKind === "type"; node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); node2.source = null; - node2.declaration = null; if (this.hasPlugin("importAssertions")) { node2.assertions = []; + } else { + node2.attributes = []; } + node2.declaration = null; return true; } return false; @@ -13334,6 +13521,8 @@ class StatementParser extends ExpressionParser { node.source = null; if (this.hasPlugin("importAssertions")) { node.assertions = []; + } else { + node.attributes = []; } node.declaration = this.parseExportDeclaration(node); return true; @@ -13538,7 +13727,7 @@ class StatementParser extends ExpressionParser { if (this.eat(8)) break; } const isMaybeTypeOnly = this.isContextual(130); - const isString = this.match(133); + const isString = this.match(134); const node = this.startNode(); node.local = this.parseModuleExportName(); nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); @@ -13556,7 +13745,7 @@ class StatementParser extends ExpressionParser { return this.finishNode(node, "ExportSpecifier"); } parseModuleExportName() { - if (this.match(133)) { + if (this.match(134)) { const result = this.parseStringLiteral(this.state.value); const surrogate = loneSurrogate.exec(result.value); if (surrogate) { @@ -13675,7 +13864,7 @@ class StatementParser extends ExpressionParser { return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; } parseImport(node) { - if (this.match(133)) { + if (this.match(134)) { return this.parseImportSourceAndAttributes(node); } return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); @@ -13697,10 +13886,11 @@ class StatementParser extends ExpressionParser { this.checkImportReflection(node); this.checkJSONModuleImport(node); this.semicolon(); + this.sawUnambiguousESM = true; return this.finishNode(node, "ImportDeclaration"); } parseImportSource() { - if (!this.match(133)) this.unexpected(); + if (!this.match(134)) this.unexpected(); return this.parseExprAtom(); } parseImportSpecifierLocal(node, specifier, type) { @@ -13729,13 +13919,13 @@ class StatementParser extends ExpressionParser { }); } attrNames.add(keyName); - if (this.match(133)) { + if (this.match(134)) { node.key = this.parseStringLiteral(keyName); } else { node.key = this.parseIdentifier(true); } this.expect(14); - if (!this.match(133)) { + if (!this.match(134)) { throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); } node.value = this.parseStringLiteral(this.state.value); @@ -13760,7 +13950,7 @@ class StatementParser extends ExpressionParser { } attributes.add(node.key.name); this.expect(14); - if (!this.match(133)) { + if (!this.match(134)) { throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); } node.value = this.parseStringLiteral(this.state.value); @@ -13770,38 +13960,33 @@ class StatementParser extends ExpressionParser { } maybeParseImportAttributes(node) { let attributes; - let useWith = false; + { + var useWith = false; + } if (this.match(76)) { if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { return; } this.next(); - { - if (this.hasPlugin("moduleAttributes")) { - attributes = this.parseModuleAttributes(); - } else { - this.expectImportAttributesPlugin(); - attributes = this.parseImportAttributes(); - } - } - useWith = true; - } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { - if (this.hasPlugin("importAttributes")) { - if (this.getPluginOption("importAttributes", "deprecatedAssertSyntax") !== true) { - this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc); - } - this.addExtra(node, "deprecatedAssertSyntax", true); + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); } else { - this.expectOnePlugin(["importAttributes", "importAssertions"]); + attributes = this.parseImportAttributes(); + } + { + useWith = true; + } + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) { + this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc); + } + if (!this.hasPlugin("importAssertions")) { + this.addExtra(node, "deprecatedAssertSyntax", true); } this.next(); attributes = this.parseImportAttributes(); - } else if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { - attributes = []; } else { - if (this.hasPlugin("moduleAttributes")) { - attributes = []; - } else return; + attributes = []; } if (!useWith && this.hasPlugin("importAssertions")) { node.assertions = attributes; @@ -13845,7 +14030,7 @@ class StatementParser extends ExpressionParser { if (this.eat(8)) break; } const specifier = this.startNode(); - const importedIsString = this.match(133); + const importedIsString = this.match(134); const isMaybeTypeOnly = this.isContextual(130); specifier.imported = this.parseModuleExportName(); const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); @@ -13883,6 +14068,48 @@ class Parser extends StatementParser { this.initializeScopes(); this.plugins = pluginsMap; this.filename = options.sourceFilename; + this.startIndex = options.startIndex; + let optionFlags = 0; + if (options.allowAwaitOutsideFunction) { + optionFlags |= 1; + } + if (options.allowReturnOutsideFunction) { + optionFlags |= 2; + } + if (options.allowImportExportEverywhere) { + optionFlags |= 8; + } + if (options.allowSuperOutsideMethod) { + optionFlags |= 16; + } + if (options.allowUndeclaredExports) { + optionFlags |= 32; + } + if (options.allowNewTargetOutsideFunction) { + optionFlags |= 4; + } + if (options.ranges) { + optionFlags |= 64; + } + if (options.tokens) { + optionFlags |= 128; + } + if (options.createImportExpressions) { + optionFlags |= 256; + } + if (options.createParenthesizedExpressions) { + optionFlags |= 512; + } + if (options.errorRecovery) { + optionFlags |= 1024; + } + if (options.attachComment) { + optionFlags |= 2048; + } + if (options.annexB) { + optionFlags |= 4096; + } + this.optionFlags = optionFlags; } getScopeHandler() { return ScopeHandler; diff --git a/.output/server/node_modules/@babel/parser/package.json b/.output/server/node_modules/@babel/parser/package.json index a45dca1..83ceac3 100644 --- a/.output/server/node_modules/@babel/parser/package.json +++ b/.output/server/node_modules/@babel/parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/parser", - "version": "7.25.0", + "version": "7.26.10", "description": "A JavaScript parser", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-parser", @@ -33,15 +33,21 @@ "engines": { "node": ">=6.0.0" }, + "# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.", + "dependencies": { + "@babel/types": "^7.26.10" + }, "devDependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/helper-check-duplicate-nodes": "^7.24.7", - "@babel/helper-fixtures": "^7.24.8", - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/types": "^7.25.0", + "@babel/code-frame": "^7.26.2", + "@babel/helper-check-duplicate-nodes": "^7.25.9", + "@babel/helper-fixtures": "^7.26.0", + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", "charcodes": "^0.2.0" }, "bin": "./bin/babel-parser.js", - "type": "commonjs" + "type": "commonjs", + "__npminstall_done": true, + "_from": "@babel/parser@7.26.10", + "_resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.10.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@unhead/dom/dist/index.mjs b/.output/server/node_modules/@unhead/dom/dist/index.mjs deleted file mode 100644 index 5fd97f6..0000000 --- a/.output/server/node_modules/@unhead/dom/dist/index.mjs +++ /dev/null @@ -1,133 +0,0 @@ -import { HasElementTags, hashTag, normaliseProps, tagDedupeKey, defineHeadPlugin } from '@unhead/shared'; - -async function elementToTag($el) { - const tag = { - tag: $el.tagName.toLowerCase(), - props: await normaliseProps( - $el.getAttributeNames().reduce((props, name) => ({ ...props, [name]: $el.getAttribute(name) }), {}) - ), - innerHTML: $el.innerHTML - }; - tag._d = tagDedupeKey(tag); - return tag; -} -async function renderDOMHead(head, options = {}) { - const dom = options.document || head.resolvedOptions.document; - if (!dom) - return; - const beforeRenderCtx = { shouldRender: head.dirty, tags: [] }; - await head.hooks.callHook("dom:beforeRender", beforeRenderCtx); - if (!beforeRenderCtx.shouldRender) - return; - const tags = (await head.resolveTags()).map((tag) => ({ - tag, - id: HasElementTags.includes(tag.tag) ? hashTag(tag) : tag.tag, - shouldRender: true - })); - let state = head._dom; - if (!state) { - state = { - elMap: { htmlAttrs: dom.documentElement, bodyAttrs: dom.body } - }; - for (const key of ["body", "head"]) { - const children = dom?.[key]?.children; - for (const c of [...children].filter((c2) => HasElementTags.includes(c2.tagName.toLowerCase()))) - state.elMap[c.getAttribute("data-hid") || hashTag(await elementToTag(c))] = c; - } - } - state.pendingSideEffects = { ...state.sideEffects || {} }; - state.sideEffects = {}; - function track(id, scope, fn) { - const k = `${id}:${scope}`; - state.sideEffects[k] = fn; - delete state.pendingSideEffects[k]; - } - function trackCtx({ id, $el, tag }) { - const isAttrTag = tag.tag.endsWith("Attrs"); - state.elMap[id] = $el; - if (!isAttrTag) { - ["textContent", "innerHTML"].forEach((k) => { - tag[k] && tag[k] !== $el[k] && ($el[k] = tag[k]); - }); - track(id, "el", () => { - state.elMap[id].remove(); - delete state.elMap[id]; - }); - } - Object.entries(tag.props).forEach(([k, value]) => { - const ck = `attr:${k}`; - if (k === "class") { - for (const c of (value || "").split(" ").filter(Boolean)) { - isAttrTag && track(id, `${ck}:${c}`, () => $el.classList.remove(c)); - !$el.classList.contains(c) && $el.classList.add(c); - } - } else { - $el.getAttribute(k) !== value && $el.setAttribute(k, value === true ? "" : String(value)); - isAttrTag && track(id, ck, () => $el.removeAttribute(k)); - } - }); - } - const pending = []; - const frag = { - bodyClose: void 0, - bodyOpen: void 0, - head: void 0 - }; - for (const ctx of tags) { - const { tag, shouldRender, id } = ctx; - if (!shouldRender) - continue; - if (tag.tag === "title") { - dom.title = tag.textContent; - continue; - } - ctx.$el = ctx.$el || state.elMap[id]; - if (ctx.$el) - trackCtx(ctx); - else - HasElementTags.includes(tag.tag) && pending.push(ctx); - } - for (const ctx of pending) { - const pos = ctx.tag.tagPosition || "head"; - ctx.$el = dom.createElement(ctx.tag.tag); - trackCtx(ctx); - frag[pos] = frag[pos] || dom.createDocumentFragment(); - frag[pos].appendChild(ctx.$el); - } - for (const ctx of tags) - await head.hooks.callHook("dom:renderTag", ctx, dom, track); - frag.head && dom.head.appendChild(frag.head); - frag.bodyOpen && dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild); - frag.bodyClose && dom.body.appendChild(frag.bodyClose); - Object.values(state.pendingSideEffects).forEach((fn) => fn()); - head._dom = state; - head.dirty = false; - await head.hooks.callHook("dom:rendered", { renders: tags }); -} - -async function debouncedRenderDOMHead(head, options = {}) { - const fn = options.delayFn || ((fn2) => setTimeout(fn2, 10)); - return head._domUpdatePromise = head._domUpdatePromise || new Promise((resolve) => fn(async () => { - await renderDOMHead(head, options); - delete head._domUpdatePromise; - resolve(); - })); -} - -// @__NO_SIDE_EFFECTS__ -function DomPlugin(options) { - return defineHeadPlugin((head) => { - const initialPayload = head.resolvedOptions.document?.head.querySelector('script[id="unhead:payload"]')?.innerHTML || false; - initialPayload && head.push(JSON.parse(initialPayload)); - return { - mode: "client", - hooks: { - "entries:updated": function(head2) { - debouncedRenderDOMHead(head2, options); - } - } - }; - }); -} - -export { DomPlugin, debouncedRenderDOMHead, renderDOMHead }; diff --git a/.output/server/node_modules/@unhead/dom/package.json b/.output/server/node_modules/@unhead/dom/package.json deleted file mode 100644 index 988cd09..0000000 --- a/.output/server/node_modules/@unhead/dom/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "@unhead/dom", - "type": "module", - "version": "1.8.8", - "author": "Harlan Wilton ", - "license": "MIT", - "funding": "https://github.com/sponsors/harlan-zw", - "homepage": "https://unhead.unjs.io", - "repository": { - "type": "git", - "url": "git+https://github.com/unjs/unhead.git", - "directory": "packages/dom" - }, - "bugs": { - "url": "https://github.com/unjs/unhead/issues" - }, - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "dependencies": { - "@unhead/shared": "1.8.8", - "@unhead/schema": "1.8.8" - }, - "scripts": { - "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" - } -} \ No newline at end of file diff --git a/.output/server/node_modules/@unhead/shared/dist/index.mjs b/.output/server/node_modules/@unhead/shared/dist/index.mjs deleted file mode 100644 index 1485155..0000000 --- a/.output/server/node_modules/@unhead/shared/dist/index.mjs +++ /dev/null @@ -1,640 +0,0 @@ -function asArray$1(value) { - return Array.isArray(value) ? value : [value]; -} - -const SelfClosingTags = ["meta", "link", "base"]; -const TagsWithInnerContent = ["title", "titleTemplate", "script", "style", "noscript"]; -const HasElementTags = [ - "base", - "meta", - "link", - "style", - "script", - "noscript" -]; -const ValidHeadTags = [ - "title", - "titleTemplate", - "templateParams", - "base", - "htmlAttrs", - "bodyAttrs", - "meta", - "link", - "style", - "script", - "noscript" -]; -const UniqueTags = ["base", "title", "titleTemplate", "bodyAttrs", "htmlAttrs", "templateParams"]; -const TagConfigKeys = ["tagPosition", "tagPriority", "tagDuplicateStrategy", "children", "innerHTML", "textContent", "processTemplateParams"]; -const IsBrowser = typeof window !== "undefined"; -const composableNames = [ - "getActiveHead", - "useHead", - "useSeoMeta", - "useHeadSafe", - "useServerHead", - "useServerSeoMeta", - "useServerHeadSafe" -]; - -function defineHeadPlugin(plugin) { - return plugin; -} - -function hashCode(s) { - let h = 9; - for (let i = 0; i < s.length; ) - h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9); - return ((h ^ h >>> 9) + 65536).toString(16).substring(1, 8).toLowerCase(); -} -function hashTag(tag) { - return tag._h || hashCode(tag._d ? tag._d : `${tag.tag}:${tag.textContent || tag.innerHTML || ""}:${Object.entries(tag.props).map(([key, value]) => `${key}:${String(value)}`).join(",")}`); -} - -function tagDedupeKey(tag, fn) { - const { props, tag: tagName } = tag; - if (UniqueTags.includes(tagName)) - return tagName; - if (tagName === "link" && props.rel === "canonical") - return "canonical"; - if (props.charset) - return "charset"; - const name = ["id"]; - if (tagName === "meta") - name.push(...["name", "property", "http-equiv"]); - for (const n of name) { - if (typeof props[n] !== "undefined") { - const val = String(props[n]); - if (fn && !fn(val)) - return false; - return `${tagName}:${n}:${val}`; - } - } - return false; -} - -function resolveTitleTemplate(template, title) { - if (template == null) - return title || null; - if (typeof template === "function") - return template(title); - return template; -} - -function asArray(input) { - return Array.isArray(input) ? input : [input]; -} -const InternalKeySymbol = "_$key"; -function packObject(input, options) { - const keys = Object.keys(input); - let [k, v] = keys; - options = options || {}; - options.key = options.key || k; - options.value = options.value || v; - options.resolveKey = options.resolveKey || ((k2) => k2); - const resolveKey = (index) => { - const arr = asArray(options?.[index]); - return arr.find((k2) => { - if (typeof k2 === "string" && k2.includes(".")) { - return k2; - } - return k2 && keys.includes(k2); - }); - }; - const resolveValue = (k2, input2) => { - if (k2.includes(".")) { - const paths = k2.split("."); - let val = input2; - for (const path of paths) - val = val[path]; - return val; - } - return input2[k2]; - }; - k = resolveKey("key") || k; - v = resolveKey("value") || v; - const dedupeKeyPrefix = input.key ? `${InternalKeySymbol}${input.key}-` : ""; - let keyValue = resolveValue(k, input); - keyValue = options.resolveKey(keyValue); - return { - [`${dedupeKeyPrefix}${keyValue}`]: resolveValue(v, input) - }; -} - -function packArray(input, options) { - const packed = {}; - for (const i of input) { - const packedObj = packObject(i, options); - const pKey = Object.keys(packedObj)[0]; - const isDedupeKey = pKey.startsWith(InternalKeySymbol); - if (!isDedupeKey && packed[pKey]) { - packed[pKey] = Array.isArray(packed[pKey]) ? packed[pKey] : [packed[pKey]]; - packed[pKey].push(Object.values(packedObj)[0]); - } else { - packed[isDedupeKey ? pKey.split("-").slice(1).join("-") || pKey : pKey] = packedObj[pKey]; - } - } - return packed; -} - -function unpackToArray(input, options) { - const unpacked = []; - const kFn = options.resolveKeyData || ((ctx) => ctx.key); - const vFn = options.resolveValueData || ((ctx) => ctx.value); - for (const [k, v] of Object.entries(input)) { - unpacked.push(...(Array.isArray(v) ? v : [v]).map((i) => { - const ctx = { key: k, value: i }; - const val = vFn(ctx); - if (typeof val === "object") - return unpackToArray(val, options); - if (Array.isArray(val)) - return val; - return { - [typeof options.key === "function" ? options.key(ctx) : options.key]: kFn(ctx), - [typeof options.value === "function" ? options.value(ctx) : options.value]: val - }; - }).flat()); - } - return unpacked; -} - -function unpackToString(value, options) { - return Object.entries(value).map(([key, value2]) => { - if (typeof value2 === "object") - value2 = unpackToString(value2, options); - if (options.resolve) { - const resolved = options.resolve({ key, value: value2 }); - if (resolved) - return resolved; - } - if (typeof value2 === "number") - value2 = value2.toString(); - if (typeof value2 === "string" && options.wrapValue) { - value2 = value2.replace(new RegExp(options.wrapValue, "g"), `\\${options.wrapValue}`); - value2 = `${options.wrapValue}${value2}${options.wrapValue}`; - } - return `${key}${options.keyValueSeparator || ""}${value2}`; - }).join(options.entrySeparator || ""); -} - -const p = (p2) => ({ keyValue: p2, metaKey: "property" }); -const k = (p2) => ({ keyValue: p2 }); -const MetaPackingSchema = { - appleItunesApp: { - unpack: { - entrySeparator: ", ", - resolve({ key, value }) { - return `${fixKeyCase(key)}=${value}`; - } - } - }, - articleExpirationTime: p("article:expiration_time"), - articleModifiedTime: p("article:modified_time"), - articlePublishedTime: p("article:published_time"), - bookReleaseDate: p("book:release_date"), - charset: { - metaKey: "charset" - }, - contentSecurityPolicy: { - unpack: { - entrySeparator: "; ", - resolve({ key, value }) { - return `${fixKeyCase(key)} ${value}`; - } - }, - metaKey: "http-equiv" - }, - contentType: { - metaKey: "http-equiv" - }, - defaultStyle: { - metaKey: "http-equiv" - }, - fbAppId: p("fb:app_id"), - msapplicationConfig: k("msapplication-Config"), - msapplicationTileColor: k("msapplication-TileColor"), - msapplicationTileImage: k("msapplication-TileImage"), - ogAudioSecureUrl: p("og:audio:secure_url"), - ogAudioUrl: p("og:audio"), - ogImageSecureUrl: p("og:image:secure_url"), - ogImageUrl: p("og:image"), - ogSiteName: p("og:site_name"), - ogVideoSecureUrl: p("og:video:secure_url"), - ogVideoUrl: p("og:video"), - profileFirstName: p("profile:first_name"), - profileLastName: p("profile:last_name"), - profileUsername: p("profile:username"), - refresh: { - metaKey: "http-equiv", - unpack: { - entrySeparator: ";", - resolve({ key, value }) { - if (key === "seconds") - return `${value}`; - } - } - }, - robots: { - unpack: { - entrySeparator: ", ", - resolve({ key, value }) { - if (typeof value === "boolean") - return `${fixKeyCase(key)}`; - else - return `${fixKeyCase(key)}:${value}`; - } - } - }, - xUaCompatible: { - metaKey: "http-equiv" - } -}; -const openGraphNamespaces = [ - "og", - "book", - "article", - "profile" -]; -function resolveMetaKeyType(key) { - const fKey = fixKeyCase(key).split(":")[0]; - if (openGraphNamespaces.includes(fKey)) - return "property"; - return MetaPackingSchema[key]?.metaKey || "name"; -} -function resolveMetaKeyValue(key) { - return MetaPackingSchema[key]?.keyValue || fixKeyCase(key); -} -function fixKeyCase(key) { - const updated = key.replace(/([A-Z])/g, "-$1").toLowerCase(); - const fKey = updated.split("-")[0]; - if (openGraphNamespaces.includes(fKey) || fKey === "twitter") - return key.replace(/([A-Z])/g, ":$1").toLowerCase(); - return updated; -} -function changeKeyCasingDeep(input) { - if (Array.isArray(input)) { - return input.map((entry) => changeKeyCasingDeep(entry)); - } - if (typeof input !== "object" || Array.isArray(input)) - return input; - const output = {}; - for (const [key, value] of Object.entries(input)) - output[fixKeyCase(key)] = changeKeyCasingDeep(value); - return output; -} -function resolvePackedMetaObjectValue(value, key) { - const definition = MetaPackingSchema[key]; - if (key === "refresh") - return `${value.seconds};url=${value.url}`; - return unpackToString( - changeKeyCasingDeep(value), - { - keyValueSeparator: "=", - entrySeparator: ", ", - resolve({ value: value2, key: key2 }) { - if (value2 === null) - return ""; - if (typeof value2 === "boolean") - return `${key2}`; - }, - ...definition?.unpack - } - ); -} -const ObjectArrayEntries = ["og:image", "og:video", "og:audio", "twitter:image"]; -function sanitize(input) { - const out = {}; - Object.entries(input).forEach(([k2, v]) => { - if (String(v) !== "false" && k2) - out[k2] = v; - }); - return out; -} -function handleObjectEntry(key, v) { - const value = sanitize(v); - const fKey = fixKeyCase(key); - const attr = resolveMetaKeyType(fKey); - if (ObjectArrayEntries.includes(fKey)) { - const input = {}; - Object.entries(value).forEach(([k2, v2]) => { - input[`${key}${k2 === "url" ? "" : `${k2.charAt(0).toUpperCase()}${k2.slice(1)}`}`] = v2; - }); - return unpackMeta(input).sort((a, b) => (a[attr]?.length || 0) - (b[attr]?.length || 0)); - } - return [{ [attr]: fKey, ...value }]; -} -function unpackMeta(input) { - const extras = []; - const primitives = {}; - Object.entries(input).forEach(([key, value]) => { - if (!Array.isArray(value)) { - if (typeof value === "object" && value) { - if (ObjectArrayEntries.includes(fixKeyCase(key))) { - extras.push(...handleObjectEntry(key, value)); - return; - } - primitives[key] = sanitize(value); - } else { - primitives[key] = value; - } - return; - } - value.forEach((v) => { - extras.push(...typeof v === "string" ? unpackMeta({ [key]: v }) : handleObjectEntry(key, v)); - }); - }); - const meta = unpackToArray(primitives, { - key({ key }) { - return resolveMetaKeyType(key); - }, - value({ key }) { - return key === "charset" ? "charset" : "content"; - }, - resolveKeyData({ key }) { - return resolveMetaKeyValue(key); - }, - resolveValueData({ value, key }) { - if (value === null) - return "_null"; - if (typeof value === "object") - return resolvePackedMetaObjectValue(value, key); - return typeof value === "number" ? value.toString() : value; - } - }); - return [...extras, ...meta].map((m) => { - if (m.content === "_null") - m.content = null; - return m; - }); -} -function packMeta(inputs) { - const mappedPackingSchema = Object.entries(MetaPackingSchema).map(([key, value]) => [key, value.keyValue]); - return packArray(inputs, { - key: ["name", "property", "httpEquiv", "http-equiv", "charset"], - value: ["content", "charset"], - resolveKey(k2) { - let key = mappedPackingSchema.filter((sk) => sk[1] === k2)?.[0]?.[0] || k2; - const replacer = (_, letter) => letter?.toUpperCase(); - key = key.replace(/:([a-z])/g, replacer).replace(/-([a-z])/g, replacer); - return key; - } - }); -} - -const WhitelistAttributes = { - htmlAttrs: ["id", "class", "lang", "dir"], - bodyAttrs: ["id", "class"], - meta: ["id", "name", "property", "charset", "content"], - noscript: ["id", "textContent"], - script: ["id", "type", "textContent"], - link: ["id", "color", "crossorigin", "fetchpriority", "href", "hreflang", "imagesrcset", "imagesizes", "integrity", "media", "referrerpolicy", "rel", "sizes", "type"] -}; -function acceptDataAttrs(value) { - const filtered = {}; - Object.keys(value || {}).filter((a) => a.startsWith("data-")).forEach((a) => { - filtered[a] = value[a]; - }); - return filtered; -} -function whitelistSafeInput(input) { - const filtered = {}; - Object.keys(input).forEach((key) => { - const tagValue = input[key]; - if (!tagValue) - return; - switch (key) { - case "title": - case "titleTemplate": - case "templateParams": - filtered[key] = tagValue; - break; - case "htmlAttrs": - case "bodyAttrs": - filtered[key] = acceptDataAttrs(tagValue); - WhitelistAttributes[key].forEach((a) => { - if (tagValue[a]) - filtered[key][a] = tagValue[a]; - }); - break; - case "meta": - if (Array.isArray(tagValue)) { - filtered[key] = tagValue.map((meta) => { - const safeMeta = acceptDataAttrs(meta); - WhitelistAttributes.meta.forEach((key2) => { - if (meta[key2]) - safeMeta[key2] = meta[key2]; - }); - return safeMeta; - }).filter((meta) => Object.keys(meta).length > 0); - } - break; - case "link": - if (Array.isArray(tagValue)) { - filtered[key] = tagValue.map((meta) => { - const link = acceptDataAttrs(meta); - WhitelistAttributes.link.forEach((key2) => { - const val = meta[key2]; - if (key2 === "rel" && ["stylesheet", "canonical", "modulepreload", "prerender", "preload", "prefetch"].includes(val)) - return; - if (key2 === "href") { - if (val.includes("javascript:") || val.includes("data:")) - return; - link[key2] = val; - } else if (val) { - link[key2] = val; - } - }); - return link; - }).filter((link) => Object.keys(link).length > 1 && !!link.rel); - } - break; - case "noscript": - if (Array.isArray(tagValue)) { - filtered[key] = tagValue.map((meta) => { - const noscript = acceptDataAttrs(meta); - WhitelistAttributes.noscript.forEach((key2) => { - if (meta[key2]) - noscript[key2] = meta[key2]; - }); - return noscript; - }).filter((meta) => Object.keys(meta).length > 0); - } - break; - case "script": - if (Array.isArray(tagValue)) { - filtered[key] = tagValue.map((script) => { - const safeScript = acceptDataAttrs(script); - WhitelistAttributes.script.forEach((s) => { - if (script[s]) { - if (s === "textContent") { - try { - const jsonVal = typeof script[s] === "string" ? JSON.parse(script[s]) : script[s]; - safeScript[s] = JSON.stringify(jsonVal, null, 0); - } catch (e) { - } - } else { - safeScript[s] = script[s]; - } - } - }); - return safeScript; - }).filter((meta) => Object.keys(meta).length > 0); - } - break; - } - }); - return filtered; -} - -async function normaliseTag(tagName, input, e) { - const tag = { - tag: tagName, - props: await normaliseProps( - // explicitly check for an object - // @ts-expect-error untyped - typeof input === "object" && typeof input !== "function" && !(input instanceof Promise) ? { ...input } : { [["script", "noscript", "style"].includes(tagName) ? "innerHTML" : "textContent"]: input }, - ["templateParams", "titleTemplate"].includes(tagName) - ) - }; - TagConfigKeys.forEach((k) => { - const val = typeof tag.props[k] !== "undefined" ? tag.props[k] : e[k]; - if (typeof val !== "undefined") { - if (!["innerHTML", "textContent", "children"].includes(k) || TagsWithInnerContent.includes(tag.tag)) { - tag[k === "children" ? "innerHTML" : k] = val; - } - delete tag.props[k]; - } - }); - if (tag.props.body) { - tag.tagPosition = "bodyClose"; - delete tag.props.body; - } - if (tag.tag === "script") { - if (typeof tag.innerHTML === "object") { - tag.innerHTML = JSON.stringify(tag.innerHTML); - tag.props.type = tag.props.type || "application/json"; - } - } - return Array.isArray(tag.props.content) ? tag.props.content.map((v) => ({ ...tag, props: { ...tag.props, content: v } })) : tag; -} -function normaliseClassProp(v) { - if (typeof v === "object" && !Array.isArray(v)) { - v = Object.keys(v).filter((k) => v[k]); - } - return (Array.isArray(v) ? v.join(" ") : v).split(" ").filter((c) => c.trim()).filter(Boolean).join(" "); -} -async function normaliseProps(props, virtual) { - for (const k of Object.keys(props)) { - if (k === "class") { - props[k] = normaliseClassProp(props[k]); - continue; - } - if (props[k] instanceof Promise) - props[k] = await props[k]; - if (!virtual && !TagConfigKeys.includes(k)) { - const v = String(props[k]); - const isDataKey = k.startsWith("data-"); - if (v === "true" || v === "") { - props[k] = isDataKey ? "true" : true; - } else if (!props[k]) { - if (isDataKey && v === "false") - props[k] = "false"; - else - delete props[k]; - } - } - } - return props; -} -const TagEntityBits = 10; -async function normaliseEntryTags(e) { - const tagPromises = []; - Object.entries(e.resolvedInput).filter(([k, v]) => typeof v !== "undefined" && ValidHeadTags.includes(k)).forEach(([k, value]) => { - const v = asArray$1(value); - tagPromises.push(...v.map((props) => normaliseTag(k, props, e)).flat()); - }); - return (await Promise.all(tagPromises)).flat().filter(Boolean).map((t, i) => { - t._e = e._i; - e.mode && (t._m = e.mode); - t._p = (e._i << TagEntityBits) + i; - return t; - }); -} - -const TAG_WEIGHTS = { - // tags - base: -10, - title: 10 -}; -const TAG_ALIASES = { - // relative scores to their default values - critical: -80, - high: -10, - low: 20 -}; -function tagWeight(tag) { - let weight = 100; - const priority = tag.tagPriority; - if (typeof priority === "number") - return priority; - if (tag.tag === "meta") { - if (tag.props["http-equiv"] === "content-security-policy") - weight = -30; - if (tag.props.charset) - weight = -20; - if (tag.props.name === "viewport") - weight = -15; - } else if (tag.tag === "link" && tag.props.rel === "preconnect") { - weight = 20; - } else if (tag.tag in TAG_WEIGHTS) { - weight = TAG_WEIGHTS[tag.tag]; - } - if (typeof priority === "string" && priority in TAG_ALIASES) { - return weight + TAG_ALIASES[priority]; - } - return weight; -} -const SortModifiers = [{ prefix: "before:", offset: -1 }, { prefix: "after:", offset: 1 }]; - -const NetworkEvents = ["onload", "onerror", "onabort", "onprogress", "onloadstart"]; - -const sepSub = "%separator"; -function processTemplateParams(s, p, sep) { - if (typeof s !== "string" || !s.includes("%")) - return s; - function sub(token) { - let val; - if (["s", "pageTitle"].includes(token)) { - val = p.pageTitle; - } else if (token.includes(".")) { - val = token.split(".").reduce((acc, key) => acc ? acc[key] || void 0 : void 0, p); - } else { - val = p[token]; - } - return typeof val !== "undefined" ? (val || "").replace(/"/g, '\\"') : false; - } - let decoded = s; - try { - decoded = decodeURI(s); - } catch { - } - const tokens = (decoded.match(/%(\w+\.+\w+)|%(\w+)/g) || []).sort().reverse(); - tokens.forEach((token) => { - const re = sub(token.slice(1)); - if (typeof re === "string") { - s = s.replace(new RegExp(`\\${token}(\\W|$)`, "g"), (_, args) => `${re}${args}`).trim(); - } - }); - if (s.includes(sepSub)) { - if (s.endsWith(sepSub)) - s = s.slice(0, -sepSub.length).trim(); - if (s.startsWith(sepSub)) - s = s.slice(sepSub.length).trim(); - s = s.replace(new RegExp(`\\${sepSub}\\s*\\${sepSub}`, "g"), sepSub); - s = processTemplateParams(s, { separator: sep }, sep); - } - return s; -} - -export { HasElementTags, IsBrowser, NetworkEvents, SelfClosingTags, SortModifiers, TAG_ALIASES, TAG_WEIGHTS, TagConfigKeys, TagEntityBits, TagsWithInnerContent, UniqueTags, ValidHeadTags, asArray$1 as asArray, composableNames, defineHeadPlugin, hashCode, hashTag, normaliseClassProp, normaliseEntryTags, normaliseProps, normaliseTag, packMeta, processTemplateParams, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, resolveTitleTemplate, tagDedupeKey, tagWeight, unpackMeta, whitelistSafeInput }; diff --git a/.output/server/node_modules/@unhead/shared/package.json b/.output/server/node_modules/@unhead/shared/package.json deleted file mode 100644 index 6943aa6..0000000 --- a/.output/server/node_modules/@unhead/shared/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "@unhead/shared", - "type": "module", - "version": "1.8.8", - "author": "Harlan Wilton ", - "license": "MIT", - "funding": "https://github.com/sponsors/harlan-zw", - "homepage": "https://unhead.unjs.io", - "repository": { - "type": "git", - "url": "git+https://github.com/unjs/unhead.git", - "directory": "packages/schema" - }, - "bugs": { - "url": "https://github.com/unjs/unhead/issues" - }, - "keywords": [ - "head", - "meta tags", - "types" - ], - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "dependencies": { - "@unhead/schema": "1.8.8" - }, - "devDependencies": { - "packrup": "^0.1.0" - }, - "scripts": { - "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" - } -} \ No newline at end of file diff --git a/.output/server/node_modules/@unhead/ssr/dist/index.mjs b/.output/server/node_modules/@unhead/ssr/dist/index.mjs deleted file mode 100644 index 732a57c..0000000 --- a/.output/server/node_modules/@unhead/ssr/dist/index.mjs +++ /dev/null @@ -1,84 +0,0 @@ -import { TagsWithInnerContent, SelfClosingTags } from '@unhead/shared'; - -function encodeAttribute(value) { - return String(value).replace(/"/g, """); -} -function propsToString(props) { - const attrs = []; - for (const [key, value] of Object.entries(props)) { - if (value !== false && value !== null) - attrs.push(value === true ? key : `${key}="${encodeAttribute(value)}"`); - } - return `${attrs.length > 0 ? " " : ""}${attrs.join(" ")}`; -} - -function escapeHtml(str) { - return str.replace(/[&<>"'/]/g, (char) => { - switch (char) { - case "&": - return "&"; - case "<": - return "<"; - case ">": - return ">"; - case '"': - return """; - case "'": - return "'"; - case "/": - return "/"; - default: - return char; - } - }); -} -function tagToString(tag) { - const attrs = propsToString(tag.props); - const openTag = `<${tag.tag}${attrs}>`; - if (!TagsWithInnerContent.includes(tag.tag)) - return SelfClosingTags.includes(tag.tag) ? openTag : `${openTag}`; - let content = String(tag.innerHTML || ""); - if (tag.textContent) - content = escapeHtml(String(tag.textContent)); - return SelfClosingTags.includes(tag.tag) ? openTag : `${openTag}${content}`; -} - -function ssrRenderTags(tags) { - const schema = { htmlAttrs: {}, bodyAttrs: {}, tags: { head: [], bodyClose: [], bodyOpen: [] } }; - for (const tag of tags) { - if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") { - schema[tag.tag] = { ...schema[tag.tag], ...tag.props }; - continue; - } - schema.tags[tag.tagPosition || "head"].push(tagToString(tag)); - } - return { - headTags: schema.tags.head.join("\n"), - bodyTags: schema.tags.bodyClose.join("\n"), - bodyTagsOpen: schema.tags.bodyOpen.join("\n"), - htmlAttrs: propsToString(schema.htmlAttrs), - bodyAttrs: propsToString(schema.bodyAttrs) - }; -} - -async function renderSSRHead(head) { - const beforeRenderCtx = { shouldRender: true }; - await head.hooks.callHook("ssr:beforeRender", beforeRenderCtx); - if (!beforeRenderCtx.shouldRender) { - return { - headTags: "", - bodyTags: "", - bodyTagsOpen: "", - htmlAttrs: "", - bodyAttrs: "" - }; - } - const ctx = { tags: await head.resolveTags() }; - await head.hooks.callHook("ssr:render", ctx); - const html = ssrRenderTags(ctx.tags); - const renderCtx = { tags: ctx.tags, html }; - await head.hooks.callHook("ssr:rendered", renderCtx); - return renderCtx.html; -} - -export { escapeHtml, propsToString, renderSSRHead, ssrRenderTags, tagToString }; diff --git a/.output/server/node_modules/@unhead/ssr/package.json b/.output/server/node_modules/@unhead/ssr/package.json deleted file mode 100644 index c5940a1..0000000 --- a/.output/server/node_modules/@unhead/ssr/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "@unhead/ssr", - "type": "module", - "version": "1.8.8", - "author": "Harlan Wilton ", - "license": "MIT", - "funding": "https://github.com/sponsors/harlan-zw", - "homepage": "https://unhead.unjs.io", - "repository": { - "type": "git", - "url": "git+https://github.com/unjs/unhead.git", - "directory": "packages/ssr" - }, - "bugs": { - "url": "https://github.com/unjs/unhead/issues" - }, - "sideEffects": false, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "dependencies": { - "@unhead/schema": "1.8.8", - "@unhead/shared": "1.8.8" - }, - "scripts": { - "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" - } -} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js b/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js deleted file mode 100644 index e3dd2ab..0000000 --- a/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js +++ /dev/null @@ -1,5505 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var shared = require('@vue/shared'); -var parser = require('@babel/parser'); -var sourceMapJs = require('source-map-js'); -var estreeWalker = require('estree-walker'); - -function defaultOnError(error) { - throw error; -} -function defaultOnWarn(msg) { - console.warn(`[Vue warn] ${msg.message}`); -} -function createCompilerError(code, loc, messages, additionalMessage) { - const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; - const error = new SyntaxError(String(msg)); - error.code = code; - error.loc = loc; - return error; -} -const errorMessages = { - // parse errors - [0]: "Illegal comment.", - [1]: "CDATA section is allowed only in XML context.", - [2]: "Duplicate attribute.", - [3]: "End tag cannot have attributes.", - [4]: "Illegal '/' in tags.", - [5]: "Unexpected EOF in tag.", - [6]: "Unexpected EOF in CDATA section.", - [7]: "Unexpected EOF in comment.", - [8]: "Unexpected EOF in script.", - [9]: "Unexpected EOF in tag.", - [10]: "Incorrectly closed comment.", - [11]: "Incorrectly opened comment.", - [12]: "Illegal tag name. Use '<' to print '<'.", - [13]: "Attribute value was expected.", - [14]: "End tag name was expected.", - [15]: "Whitespace was expected.", - [16]: "Unexpected '` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // ` this.emitCodePoint(cp, consumed) + ); + } + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || false) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } else if (c === 38) { + this.startEntity(); + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else if (c === 38) { + this.startEntity(); + } + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + { + this.baseState = this.state; + this.state = 33; + this.entityStart = this.index; + this.entityDecoder.startEntity( + this.baseState === 1 || this.baseState === 32 ? decode_js.DecodingMode.Legacy : decode_js.DecodingMode.Attribute + ); + } + } + stateInEntity() { + { + const length = this.entityDecoder.write(this.buffer, this.index); + if (length >= 0) { + this.state = this.baseState; + if (length === 0) { + this.index = this.entityStart; + } + } else { + this.index = this.buffer.length - 1; + } + } + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + if (this.state === 33) { + this.entityDecoder.end(); + this.state = this.baseState; + } + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + { + if (this.baseState !== 1 && this.baseState !== 32) { + if (this.sectionStart < this.entityStart) { + this.cbs.onattribdata(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.onattribentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } else { + if (this.sectionStart < this.entityStart) { + this.cbs.ontext(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.ontextentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } + } } } -const nonIdentifierRE = /^\d|[^\$\w]/; + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 52, + "52": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 53, + "53": "__EXTEND_POINT__" +}; +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [52]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [53]: `` +}; + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" ? root.body[0].type === "ExpressionStatement" && root.body[0].expression : root; + estreeWalker.walk(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && // eslint-disable-next-line no-restricted-syntax + (parent == null ? void 0 : parent.type) === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkFunctionParams( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "BlockStatement") { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "CatchClause" && node.param) { + for (const id of extractIdentifiers(node.param)) { + markScopeIdentifier(node, id, knownIds); + } + } else if (isForStatement(node)) { + walkForStatement( + node, + false, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent)) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectPattern": + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } + } +} +function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; +} +function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +function markKnownIds(name, knownIds) { + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + markKnownIds(name, knownIds); + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + // yes: PARENT[NODE] + // yes: NODE.child + // no: parent.NODE + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + // no: let NODE = init; + // yes: let id = NODE; + case "VariableDeclarator": + return parent.init === node; + // yes: () => NODE + // no: (NODE) => {} + case "ArrowFunctionExpression": + return parent.body === node; + // no: class { #NODE; } + // no: class { get #NODE() {} } + // no: class { #NODE() {} } + // no: class { fn() { return this.#NODE; } } + case "PrivateName": + return false; + // no: class { NODE() {} } + // yes: class { [NODE]() {} } + // no: class { foo(NODE) {} } + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + // yes: { [NODE]: "" } + // no: { NODE: "" } + // depends: { NODE } + // depends: { key: NODE } + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent; + // no: class { NODE = value; } + // yes: class { [NODE] = value; } + // yes: class { key = NODE; } + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + // no: class NODE {} + // yes: class Foo extends NODE {} + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + // yes: left = NODE; + // no: NODE = right; + case "AssignmentExpression": + return parent.right === node; + // no: [NODE = foo] = []; + // yes: [foo = NODE] = []; + case "AssignmentPattern": + return parent.right === node; + // no: NODE: for (;;) {} + case "LabeledStatement": + return false; + // no: try {} catch (NODE) {} + case "CatchClause": + return false; + // no: function foo(...NODE) {} + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + // no: function NODE() {} + // no: function foo(NODE) {} + case "FunctionDeclaration": + case "FunctionExpression": + return false; + // no: export NODE from "foo"; + // no: export * as NODE from "foo"; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + // no: export { foo as NODE }; + // yes: export { NODE as foo }; + // no: export { NODE as foo } from "foo"; + case "ExportSpecifier": + return parent.local === node; + // no: import NODE from "foo"; + // no: import * as NODE from "foo"; + // no: import { NODE as foo } from "foo"; + // no: import { foo as NODE } from "foo"; + // no: import NODE from "bar"; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + // no: import "foo" assert { NODE: "json" } + case "ImportAttribute": + return false; + // no: <div NODE="foo" /> + case "JSXAttribute": + return false; + // no: [NODE] = []; + // no: ({ NODE }) = []; + case "ObjectPattern": + case "ArrayPattern": + return false; + // no: new.NODE + // no: NODE.target + case "MetaProperty": + return false; + // yes: type X = { someProperty: NODE } + // no: type X = { NODE: OtherType } + case "ObjectTypeProperty": + return parent.key !== node; + // yes: enum X { Foo = NODE } + // no: enum X { NODE } + case "TSEnumMember": + return parent.id !== node; + // yes: { [NODE]: value } + // no: { NODE: value } + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^\d|[^\$\w\xA0-\uFFFF]/; const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; -const isMemberExpressionBrowser = (path) => { - path = path.trim().replace(whitespaceRE, (s) => s.trim()); +const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; +const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); let state = 0 /* inMemberExp */; let stateStack = []; let currentOpenBracketCount = 0; @@ -439,39 +1976,45 @@ const isMemberExpressionBrowser = (path) => { } return !currentOpenBracketCount && !currentOpenParensCount; }; -const isMemberExpressionNode = (path, context) => { +const isMemberExpressionNode = (exp, context) => { try { - let ret = parser.parseExpression(path, { - plugins: context.expressionPlugins + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] }); - if (ret.type === "TSAsExpression" || ret.type === "TSTypeAssertion") { - ret = ret.expression; - } - return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier"; + ret = unwrapTSNode(ret); + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined"; } catch (e) { return false; } }; const isMemberExpression = isMemberExpressionNode; -function getInnerRange(loc, offset, length) { - const source = loc.source.slice(offset, offset + length); - const newLoc = { - source, - start: advancePositionWithClone(loc.start, loc.source, offset), - end: loc.end - }; - if (length != null) { - newLoc.end = advancePositionWithClone( - loc.start, - loc.source, - offset + length - ); +const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); +const isFnExpressionNode = (exp, context) => { + try { + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + if (ret.type === "Program") { + ret = ret.body[0]; + if (ret.type === "ExpressionStatement") { + ret = ret.expression; + } + } + ret = unwrapTSNode(ret); + return ret.type === "FunctionExpression" || ret.type === "ArrowFunctionExpression"; + } catch (e) { + return false; } - return newLoc; -} +}; +const isFnExpression = isFnExpressionNode; function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { return advancePositionWithMutation( - shared.extend({}, pos), + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, source, numberOfCharacters ); @@ -507,8 +2050,7 @@ function findProp(node, name, dynamicOnly = false, allowEmpty = false) { for (let i = 0; i < node.props.length; i++) { const p = node.props[i]; if (p.type === 6) { - if (dynamicOnly) - continue; + if (dynamicOnly) continue; if (p.name === name && (p.value || allowEmpty)) { return p; } @@ -660,6 +2202,7 @@ function hasScopeRef(node, ids) { return hasScopeRef(node.content, ids); case 2: case 3: + case 20: return false; default: return false; @@ -672,439 +2215,539 @@ function getMemoedVNodeCall(node) { return node; } } -const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; -const deprecationData = { - ["COMPILER_IS_ON_ELEMENT"]: { - message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, - link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` - }, - ["COMPILER_V_BIND_SYNC"]: { - message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, - link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` - }, - ["COMPILER_V_BIND_PROP"]: { - message: `.prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate.` - }, - ["COMPILER_V_BIND_OBJECT_ORDER"]: { - message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, - link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` - }, - ["COMPILER_V_ON_NATIVE"]: { - message: `.native modifier for v-on has been removed as is no longer necessary.`, - link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` - }, - ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { - message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, - link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` - }, - ["COMPILER_NATIVE_TEMPLATE"]: { - message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` - }, - ["COMPILER_INLINE_TEMPLATE"]: { - message: `"inline-template" has been removed in Vue 3.`, - link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` - }, - ["COMPILER_FILTER"]: { - message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, - link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` - } -}; -function getCompatValue(key, context) { - const config = context.options ? context.options.compatConfig : context.compatConfig; - const value = config && config[key]; - if (key === "MODE") { - return value || 3; - } else { - return value; - } -} -function isCompatEnabled(key, context) { - const mode = getCompatValue("MODE", context); - const value = getCompatValue(key, context); - return mode === 3 ? value === true : value !== false; -} -function checkCompatEnabled(key, context, loc, ...args) { - const enabled = isCompatEnabled(key, context); - return enabled; -} -function warnDeprecation(key, context, loc, ...args) { - const val = getCompatValue(key, context); - if (val === "suppress-warning") { - return; - } - const { message, link } = deprecationData[key]; - const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` - Details: ${link}` : ``}`; - const err = new SyntaxError(msg); - err.code = key; - if (loc) - err.loc = loc; - context.onWarn(err); -} - -const decodeRE = /&(gt|lt|amp|apos|quot);/g; -const decodeMap = { - gt: ">", - lt: "<", - amp: "&", - apos: "'", - quot: '"' -}; const defaultParserOptions = { + parseMode: "base", + ns: 0, delimiters: [`{{`, `}}`], getNamespace: () => 0, - getTextMode: () => 0, isVoidTag: shared.NO, isPreTag: shared.NO, + isIgnoreNewlineTag: shared.NO, isCustomElement: shared.NO, - decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]), onError: defaultOnError, onWarn: defaultOnWarn, - comments: false + comments: false, + prefixIdentifiers: false }; -function baseParse(content, options = {}) { - const context = createParserContext(content, options); - const start = getCursor(context); - return createRoot( - parseChildren(context, 0, []), - getSelection(context, start) - ); -} -function createParserContext(content, rawOptions) { - const options = shared.extend({}, defaultParserOptions); - let key; - for (key in rawOptions) { - options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key]; - } - return { - options, - column: 1, - line: 1, - offset: 0, - originalSource: content, - source: content, - inPre: false, - inVPre: false, - onWarn: options.onWarn - }; -} -function parseChildren(context, mode, ancestors) { - const parent = last(ancestors); - const ns = parent ? parent.ns : 0; - const nodes = []; - while (!isEnd(context, mode, ancestors)) { - const s = context.source; - let node = void 0; - if (mode === 0 || mode === 1) { - if (!context.inVPre && startsWith(s, context.options.delimiters[0])) { - node = parseInterpolation(context, mode); - } else if (mode === 0 && s[0] === "<") { - if (s.length === 1) { - emitError(context, 5, 1); - } else if (s[1] === "!") { - if (startsWith(s, "<!--")) { - node = parseComment(context); - } else if (startsWith(s, "<!DOCTYPE")) { - node = parseBogusComment(context); - } else if (startsWith(s, "<![CDATA[")) { - if (ns !== 0) { - node = parseCDATA(context, ancestors); - } else { - emitError(context, 1); - node = parseBogusComment(context); - } - } else { - emitError(context, 11); - node = parseBogusComment(context); +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = decode_js.decodeHTML(exp); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); } - } else if (s[1] === "/") { - if (s.length === 2) { - emitError(context, 5, 2); - } else if (s[2] === ">") { - emitError(context, 14, 2); - advanceBy(context, 3); - continue; - } else if (/[a-z]/i.test(s[2])) { - emitError(context, 23); - parseTag(context, 1 /* End */, parent); - continue; - } else { - emitError( - context, - 12, - 2 - ); - node = parseBogusComment(context); + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); } - } else if (/[a-z]/i.test(s[1])) { - node = parseElement(context, ancestors); - if (isCompatEnabled( - "COMPILER_NATIVE_TEMPLATE", - context - ) && node && node.tag === "template" && !node.props.some( - (p) => p.type === 7 && isSpecialTemplateDirective(p.name) - )) { - node = node.children; + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); } - } else if (s[1] === "?") { - emitError( - context, - 21, - 1 - ); - node = parseBogusComment(context); - } else { - emitError(context, 12, 1); } } } - if (!node) { - node = parseText(context, mode); + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); } - if (shared.isArray(node)) { - for (let i = 0; i < node.length; i++) { - pushNode(nodes, node[i]); + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); } } else { - pushNode(nodes, node); + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); } - } - let removedWhitespace = false; - if (mode !== 2 && mode !== 1) { - const shouldCondense = context.options.whitespace !== "preserve"; - for (let i = 0; i < nodes.length; i++) { - const node = nodes[i]; - if (node.type === 2) { - if (!context.inPre) { - if (!/[^\t\r\n\f ]/.test(node.content)) { - const prev = nodes[i - 1]; - const next = nodes[i + 1]; - if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\r\n]/.test(node.content))) { - removedWhitespace = true; - nodes[i] = null; - } else { - node.content = " "; - } - } else if (shouldCondense) { - node.content = node.content.replace(/[\t\r\n\f ]+/g, " "); + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); } } else { - node.content = node.content.replace(/\r\n/g, "\n"); + let expParseMode = 0 /* Normal */; + { + if (currentProp.name === "for") { + expParseMode = 3 /* Skip */; + } else if (currentProp.name === "slot") { + expParseMode = 1 /* Params */; + } else if (currentProp.name === "on" && currentAttrValue.includes(";")) { + expParseMode = 2 /* Statements */; + } + } + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( + (mod) => mod.content === "sync" + )) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.rawName + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } } - } else if (node.type === 3 && !context.options.comments) { - removedWhitespace = true; - nodes[i] = null; + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); } } - if (context.inPre && parent && context.options.isPreTag(parent.tag)) { - const first = nodes[0]; - if (first && first.type === 2) { - first.content = first.content.replace(/^\r?\n/, ""); + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; } } - } - return removedWhitespace ? nodes.filter(Boolean) : nodes; -} -function pushNode(nodes, node) { - if (node.type === 2) { - const prev = last(nodes); - if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) { - prev.content += node.content; - prev.loc.end = node.loc.end; - prev.loc.source += node.loc.source; - return; + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); } } - nodes.push(node); -} -function parseCDATA(context, ancestors) { - advanceBy(context, 9); - const nodes = parseChildren(context, 3, ancestors); - if (context.source.length === 0) { - emitError(context, 6); - } else { - advanceBy(context, 3); - } - return nodes; -} -function parseComment(context) { - const start = getCursor(context); - let content; - const match = /--(\!)?>/.exec(context.source); - if (!match) { - content = context.source.slice(4); - advanceBy(context, context.source.length); - emitError(context, 7); - } else { - if (match.index <= 3) { - emitError(context, 0); - } - if (match[1]) { - emitError(context, 10); - } - content = context.source.slice(4, match.index); - const s = context.source.slice(0, match.index); - let prevIndex = 1, nestedIndex = 0; - while ((nestedIndex = s.indexOf("<!--", prevIndex)) !== -1) { - advanceBy(context, nestedIndex - prevIndex + 1); - if (nestedIndex + 4 < s.length) { - emitError(context, 16); - } - prevIndex = nestedIndex + 1; - } - advanceBy(context, match.index + match[0].length - prevIndex + 1); - } - return { - type: 3, - content, - loc: getSelection(context, start) +}); +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); }; -} -function parseBogusComment(context) { - const start = getCursor(context); - const contentStart = context.source[1] === "?" ? 1 : 2; - let content; - const closeIndex = context.source.indexOf(">"); - if (closeIndex === -1) { - content = context.source.slice(contentStart); - advanceBy(context, context.source.length); - } else { - content = context.source.slice(contentStart, closeIndex); - advanceBy(context, closeIndex + 1); - } - return { - type: 3, - content, - loc: getSelection(context, start) + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false }; -} -function parseElement(context, ancestors) { - const wasInPre = context.inPre; - const wasInVPre = context.inVPre; - const parent = last(ancestors); - const element = parseTag(context, 0 /* Start */, parent); - const isPreBoundary = context.inPre && !wasInPre; - const isVPreBoundary = context.inVPre && !wasInVPre; - if (element.isSelfClosing || context.options.isVoidTag(element.tag)) { - if (isPreBoundary) { - context.inPre = false; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); } - if (isVPreBoundary) { - context.inVPre = false; + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } } - return element; } - ancestors.push(element); - const mode = context.options.getTextMode(element, parent); - const children = parseChildren(context, mode, ancestors); - ancestors.pop(); + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = shared.extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = shared.extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } { - const inlineTemplateProp = element.props.find( + const props = el.props; + if (!tokenizer.inSFCRoot && isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( (p) => p.type === 6 && p.name === "inline-template" ); if (inlineTemplateProp && checkCompatEnabled( "COMPILER_INLINE_TEMPLATE", - context, + currentOptions, inlineTemplateProp.loc - )) { - const loc = getSelection(context, element.loc.end); + ) && el.children.length) { inlineTemplateProp.value = { type: 2, - content: loc.source, - loc + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc }; } } - element.children = children; - if (startsWithEndTagOpen(context.source, element.tag)) { - parseTag(context, 1 /* End */, parent); - } else { - emitError(context, 24, 0, element.loc.start); - if (context.source.length === 0 && element.tag.toLowerCase() === "script") { - const first = children[0]; - if (first && startsWith(first.loc.source, "<!--")) { - emitError(context, 8); +} +function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; } } } - element.loc = getSelection(context, element.loc.start); - if (isPreBoundary) { - context.inPre = false; - } - if (isVPreBoundary) { - context.inVPre = false; - } - return element; + return false; } -const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap( - `if,else,else-if,for,slot` -); -function parseTag(context, type, parent) { - const start = getCursor(context); - const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source); - const tag = match[1]; - const ns = context.options.getNamespace(tag, parent); - advanceBy(context, match[0].length); - advanceSpaces(context); - const cursor = getCursor(context); - const currentSource = context.source; - if (context.options.isPreTag(tag)) { - context.inPre = true; - } - let props = parseAttributes(context, type); - if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === "pre")) { - context.inVPre = true; - shared.extend(context, cursor); - context.source = currentSource; - props = parseAttributes(context, type).filter((p) => p.name !== "v-pre"); - } - let isSelfClosing = false; - if (context.source.length === 0) { - emitError(context, 9); - } else { - isSelfClosing = startsWith(context.source, "/>"); - if (type === 1 /* End */ && isSelfClosing) { - emitError(context, 4); - } - advanceBy(context, isSelfClosing ? 2 : 1); - } - if (type === 1 /* End */) { - return; - } - let tagType = 0; - if (!context.inVPre) { - if (tag === "slot") { - tagType = 2; - } else if (tag === "template") { - if (props.some( - (p) => p.type === 7 && isSpecialTemplateDirective(p.name) - )) { - tagType = 3; - } - } else if (isComponent(tag, props, context)) { - tagType = 1; - } - } - return { - type: 1, - ns, - tag, - tagType, - props, - isSelfClosing, - children: [], - loc: getSelection(context, start), - codegenNode: void 0 - // to be created during transform phase - }; -} -function isComponent(tag, props, context) { - const options = context.options; - if (options.isCustomElement(tag)) { +function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { return false; } - if (tag === "component" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) { + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { return true; } for (let i = 0; i < props.length; i++) { @@ -1115,372 +2758,203 @@ function isComponent(tag, props, context) { return true; } else if (checkCompatEnabled( "COMPILER_IS_ON_ELEMENT", - context, + currentOptions, p.loc )) { return true; } } - } else { - if (p.name === "is") { - return true; - } else if ( - // :is on plain element - only treat as component in compat mode - p.name === "bind" && isStaticArgOf(p.arg, "is") && true && checkCompatEnabled( - "COMPILER_IS_ON_ELEMENT", - context, - p.loc - ) - ) { - return true; - } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; } } + return false; } -function parseAttributes(context, type) { - const props = []; - const attributeNames = /* @__PURE__ */ new Set(); - while (context.source.length > 0 && !startsWith(context.source, ">") && !startsWith(context.source, "/>")) { - if (startsWith(context.source, "/")) { - emitError(context, 22); - advanceBy(context, 1); - advanceSpaces(context); - continue; - } - if (type === 1 /* End */) { - emitError(context, 3); - } - const attr = parseAttribute(context, attributeNames); - if (attr.type === 6 && attr.value && attr.name === "class") { - attr.value.content = attr.value.content.replace(/\s+/g, " ").trim(); - } - if (type === 0 /* Start */) { - props.push(attr); - } - if (/^[^\t\r\n\f />]/.test(context.source)) { - emitError(context, 15); - } - advanceSpaces(context); - } - return props; +function isUpperCase(c) { + return c > 64 && c < 91; } -function parseAttribute(context, nameSet) { - var _a; - const start = getCursor(context); - const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source); - const name = match[0]; - if (nameSet.has(name)) { - emitError(context, 2); - } - nameSet.add(name); - if (name[0] === "=") { - emitError(context, 19); - } - { - const pattern = /["'<]/g; - let m; - while (m = pattern.exec(name)) { - emitError( - context, - 17, - m.index - ); - } - } - advanceBy(context, name.length); - let value = void 0; - if (/^[\t\r\n\f ]*=/.test(context.source)) { - advanceSpaces(context); - advanceBy(context, 1); - advanceSpaces(context); - value = parseAttributeValue(context); - if (!value) { - emitError(context, 13); - } - } - const loc = getSelection(context, start); - if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) { - const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec( - name - ); - let isPropShorthand = startsWith(name, "."); - let dirName = match2[1] || (isPropShorthand || startsWith(name, ":") ? "bind" : startsWith(name, "@") ? "on" : "slot"); - let arg; - if (match2[2]) { - const isSlot = dirName === "slot"; - const startOffset = name.lastIndexOf( - match2[2], - name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0) - ); - const loc2 = getSelection( - context, - getNewPosition(context, start, startOffset), - getNewPosition( - context, - start, - startOffset + match2[2].length + (isSlot && match2[3] || "").length - ) - ); - let content = match2[2]; - let isStatic = true; - if (content.startsWith("[")) { - isStatic = false; - if (!content.endsWith("]")) { - emitError( - context, - 27 - ); - content = content.slice(1); - } else { - content = content.slice(1, content.length - 1); +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes, tag) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); } - } else if (isSlot) { - content += match2[3] || ""; - } - arg = { - type: 4, - content, - isStatic, - constType: isStatic ? 3 : 0, - loc: loc2 - }; - } - if (value && value.isQuoted) { - const valueLoc = value.loc; - valueLoc.start.offset++; - valueLoc.start.column++; - valueLoc.end = advancePositionWithClone(valueLoc.start, value.content); - valueLoc.source = valueLoc.source.slice(1, -1); - } - const modifiers = match2[3] ? match2[3].slice(1).split(".") : []; - if (isPropShorthand) - modifiers.push("prop"); - if (dirName === "bind" && arg) { - if (modifiers.includes("sync") && checkCompatEnabled( - "COMPILER_V_BIND_SYNC", - context, - loc, - arg.loc.source - )) { - dirName = "model"; - modifiers.splice(modifiers.indexOf("sync"), 1); + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); } } - return { - type: 7, - name: dirName, - exp: value && { - type: 4, - content: value.content, - isStatic: false, - // Treat as non-constant by default. This can be potentially set to - // other values by `transformExpression` to make it eligible for hoisting. - constType: 0, - loc: value.loc - }, - arg, - modifiers, + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, loc }; } - if (!context.inVPre && startsWith(name, "v-")) { - emitError(context, 26); - } - return { - type: 6, - name, - value: value && { - type: 2, - content: value.content, - loc: value.loc - }, - loc - }; + return attr; } -function parseAttributeValue(context) { - const start = getCursor(context); - let content; - const quote = context.source[0]; - const isQuoted = quote === `"` || quote === `'`; - if (isQuoted) { - advanceBy(context, 1); - const endIndex = context.source.indexOf(quote); - if (endIndex === -1) { - content = parseTextData( - context, - context.source.length, - 4 - ); - } else { - content = parseTextData(context, endIndex, 4); - advanceBy(context, 1); +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + if (!isStatic && currentOptions.prefixIdentifiers && parseMode !== 3 /* Skip */ && content.trim()) { + if (isSimpleIdentifier(content)) { + exp.ast = null; + return exp; } - } else { - const match = /^[^\t\r\n\f >]+/.exec(context.source); - if (!match) { - return void 0; - } - const unexpectedChars = /["'<=`]/g; - let m; - while (m = unexpectedChars.exec(match[0])) { - emitError( - context, - 18, - m.index - ); - } - content = parseTextData(context, match[0].length, 4); - } - return { content, isQuoted, loc: getSelection(context, start) }; -} -function parseInterpolation(context, mode) { - const [open, close] = context.options.delimiters; - const closeIndex = context.source.indexOf(close, open.length); - if (closeIndex === -1) { - emitError(context, 25); - return void 0; - } - const start = getCursor(context); - advanceBy(context, open.length); - const innerStart = getCursor(context); - const innerEnd = getCursor(context); - const rawContentLength = closeIndex - open.length; - const rawContent = context.source.slice(0, rawContentLength); - const preTrimContent = parseTextData(context, rawContentLength, mode); - const content = preTrimContent.trim(); - const startOffset = preTrimContent.indexOf(content); - if (startOffset > 0) { - advancePositionWithMutation(innerStart, rawContent, startOffset); - } - const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset); - advancePositionWithMutation(innerEnd, rawContent, endOffset); - advanceBy(context, close.length); - return { - type: 5, - content: { - type: 4, - isStatic: false, - // Set `isConstant` to false by default and will decide in transformExpression - constType: 0, - content, - loc: getSelection(context, innerStart, innerEnd) - }, - loc: getSelection(context, start) - }; -} -function parseText(context, mode) { - const endTokens = mode === 3 ? ["]]>"] : ["<", context.options.delimiters[0]]; - let endIndex = context.source.length; - for (let i = 0; i < endTokens.length; i++) { - const index = context.source.indexOf(endTokens[i], 1); - if (index !== -1 && endIndex > index) { - endIndex = index; + try { + const plugins = currentOptions.expressionPlugins; + const options = { + plugins: plugins ? [...plugins, "typescript"] : ["typescript"] + }; + if (parseMode === 2 /* Statements */) { + exp.ast = parser.parse(` ${content} `, options).program; + } else if (parseMode === 1 /* Params */) { + exp.ast = parser.parseExpression(`(${content})=>{}`, options); + } else { + exp.ast = parser.parseExpression(`(${content})`, options); + } + } catch (e) { + exp.ast = false; + emitError(45, loc.start.offset, e.message); } } - const start = getCursor(context); - const content = parseTextData(context, endIndex, mode); - return { - type: 2, - content, - loc: getSelection(context, start) - }; + return exp; } -function parseTextData(context, length, mode) { - const rawText = context.source.slice(0, length); - advanceBy(context, length); - if (mode === 2 || mode === 3 || !rawText.includes("&")) { - return rawText; - } else { - return context.options.decodeEntities( - rawText, - mode === 4 - ); - } -} -function getCursor(context) { - const { column, line, offset } = context; - return { column, line, offset }; -} -function getSelection(context, start, end) { - end = end || getCursor(context); - return { - start, - end, - source: context.originalSource.slice(start.offset, end.offset) - }; -} -function last(xs) { - return xs[xs.length - 1]; -} -function startsWith(source, searchString) { - return source.startsWith(searchString); -} -function advanceBy(context, numberOfCharacters) { - const { source } = context; - advancePositionWithMutation(context, source, numberOfCharacters); - context.source = source.slice(numberOfCharacters); -} -function advanceSpaces(context) { - const match = /^[\t\r\n\f ]+/.exec(context.source); - if (match) { - advanceBy(context, match[0].length); - } -} -function getNewPosition(context, start, numberOfCharacters) { - return advancePositionWithClone( - start, - context.originalSource.slice(start.offset, numberOfCharacters), - numberOfCharacters +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) ); } -function emitError(context, code, offset, loc = getCursor(context)) { - if (offset) { - loc.offset += offset; - loc.column += offset; - } - context.options.onError( - createCompilerError(code, { - start: loc, - end: loc, - source: "" - }) - ); +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; } -function isEnd(context, mode, ancestors) { - const s = context.source; - switch (mode) { - case 0: - if (startsWith(s, "</")) { - for (let i = ancestors.length - 1; i >= 0; --i) { - if (startsWithEndTagOpen(s, ancestors[i].tag)) { - return true; - } - } +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = shared.extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; } - break; - case 1: - case 2: { - const parent = last(ancestors); - if (parent && startsWithEndTagOpen(s, parent.tag)) { - return true; - } - break; } - case 3: - if (startsWith(s, "]]>")) { - return true; - } - break; } - return !s; -} -function startsWithEndTagOpen(source, tag) { - return startsWith(source, "</") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\t\r\n\f />]/.test(source[2 + tag.length] || ">"); + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; } -function hoistStatic(root, context) { +function cacheStatic(root, context) { walk( root, + void 0, context, // Root node is unfortunately non-hoistable due to potential parent // fallthrough attributes. @@ -1491,26 +2965,24 @@ function isSingleElementRoot(root, child) { const { children } = root; return children.length === 1 && child.type === 1 && !isSlotOutlet(child); } -function walk(node, context, doNotHoistNode = false) { +function walk(node, parent, context, doNotHoistNode = false, inFor = false) { const { children } = node; - const originalCount = children.length; - let hoistedCount = 0; + const toCache = []; for (let i = 0; i < children.length; i++) { const child = children[i]; if (child.type === 1 && child.tagType === 0) { const constantType = doNotHoistNode ? 0 : getConstantType(child, context); if (constantType > 0) { if (constantType >= 2) { - child.codegenNode.patchFlag = -1 + (``); - child.codegenNode = context.hoist(child.codegenNode); - hoistedCount++; + child.codegenNode.patchFlag = -1; + toCache.push(child); continue; } } else { const codegenNode = child.codegenNode; if (codegenNode.type === 13) { - const flag = getPatchFlag(codegenNode); - if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { const props = getNodeProps(child); if (props) { codegenNode.props = context.hoist(props); @@ -1521,39 +2993,84 @@ function walk(node, context, doNotHoistNode = false) { } } } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + toCache.push(child); + continue; + } } if (child.type === 1) { const isComponent = child.tagType === 1; if (isComponent) { context.scopes.vSlot++; } - walk(child, context); + walk(child, node, context, false, inFor); if (isComponent) { context.scopes.vSlot--; } } else if (child.type === 11) { - walk(child, context, child.children.length === 1); + walk(child, node, context, child.children.length === 1, true); } else if (child.type === 9) { for (let i2 = 0; i2 < child.branches.length; i2++) { walk( child.branches[i2], + node, context, - child.branches[i2].children.length === 1 + child.branches[i2].children.length === 1, + inFor ); } } } - if (hoistedCount && context.transformHoist) { - context.transformHoist(children, context, node); - } - if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { - const hoisted = context.hoist( - createArrayExpression(node.codegenNode.children) - ); - if (context.hmr) { - hoisted.content = `[...${hoisted.content}]`; + let cachedAsArray = false; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } } - node.codegenNode.children = hoisted; + } + if (!cachedAsArray) { + for (const child of toCache) { + child.codegenNode = context.cache(child.codegenNode); + } + } + function getCacheExpression(value) { + const exp = context.cache(value); + if (inFor && context.hmr) { + exp.needArraySpread = true; + } + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !shared.isArray(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); } } function getConstantType(node, context) { @@ -1571,11 +3088,10 @@ function getConstantType(node, context) { if (codegenNode.type !== 13) { return 0; } - if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") { + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { return 0; } - const flag = getPatchFlag(codegenNode); - if (!flag) { + if (codegenNode.patchFlag === void 0) { let returnType2 = 3; const generatedPropsType = getGeneratedPropsConstantType(node, context); if (generatedPropsType === 0) { @@ -1658,6 +3174,8 @@ function getConstantType(node, context) { } } return returnType; + case 20: + return 2; default: return 0; } @@ -1717,15 +3235,11 @@ function getNodeProps(node) { return codegenNode.props; } } -function getPatchFlag(node) { - const flag = node.patchFlag; - return flag ? parseInt(flag, 10) : void 0; -} function createTransformContext(root, { filename = "", prefixIdentifiers = false, - hoistStatic: hoistStatic2 = false, + hoistStatic = false, hmr = false, cacheHandlers = false, nodeTransforms = [], @@ -1749,9 +3263,10 @@ function createTransformContext(root, { const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); const context = { // options + filename, selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), prefixIdentifiers, - hoistStatic: hoistStatic2, + hoistStatic, hmr, cacheHandlers, nodeTransforms, @@ -1778,9 +3293,9 @@ function createTransformContext(root, { directives: /* @__PURE__ */ new Set(), hoists: [], imports: [], + cached: [], constantCache: /* @__PURE__ */ new WeakMap(), temps: 0, - cached: 0, identifiers: /* @__PURE__ */ Object.create(null), scopes: { vFor: 0, @@ -1789,6 +3304,7 @@ function createTransformContext(root, { vOnce: 0 }, parent: null, + grandParent: null, currentNode: root, childIndex: 0, inVOnce: false, @@ -1829,8 +3345,7 @@ function createTransformContext(root, { } context.parent.children.splice(removalIndex, 1); }, - onNodeRemoved: () => { - }, + onNodeRemoved: shared.NOOP, addIdentifiers(exp) { { if (shared.isString(exp)) { @@ -1854,8 +3369,7 @@ function createTransformContext(root, { } }, hoist(exp) { - if (shared.isString(exp)) - exp = createSimpleExpression(exp); + if (shared.isString(exp)) exp = createSimpleExpression(exp); context.hoists.push(exp); const identifier = createSimpleExpression( `_hoisted_${context.hoists.length}`, @@ -1866,8 +3380,15 @@ function createTransformContext(root, { identifier.hoisted = exp; return identifier; }, - cache(exp, isVNode = false) { - return createCacheExpression(context.cached++, exp, isVNode); + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; } }; { @@ -1889,7 +3410,7 @@ function transform(root, options) { const context = createTransformContext(root, options); traverseNode(root, context); if (options.hoistStatic) { - hoistStatic(root, context); + cacheStatic(root, context); } if (!options.ssr) { createRootCodegen(root, context); @@ -1901,6 +3422,7 @@ function transform(root, options) { root.hoists = context.hoists; root.temps = context.temps; root.cached = context.cached; + root.transformed = true; { root.filters = [...context.filters]; } @@ -1921,19 +3443,17 @@ function createRootCodegen(root, context) { } } else if (children.length > 1) { let patchFlag = 64; - shared.PatchFlagNames[64]; root.codegenNode = createVNodeCall( context, helper(FRAGMENT), void 0, root.children, - patchFlag + (``), + patchFlag, void 0, void 0, true, void 0, false - /* isComponent */ ); } else ; } @@ -1944,8 +3464,8 @@ function traverseChildren(parent, context) { }; for (; i < parent.children.length; i++) { const child = parent.children[i]; - if (shared.isString(child)) - continue; + if (shared.isString(child)) continue; + context.grandParent = context.parent; context.parent = parent; context.childIndex = i; context.onNodeRemoved = nodeRemoved; @@ -1982,6 +3502,7 @@ function traverseNode(node, context) { context.helper(TO_DISPLAY_STRING); } break; + // for container types, further traverse downwards case 9: for (let i2 = 0; i2 < node.branches.length; i2++) { traverseNode(node.branches[i2], context); @@ -2015,8 +3536,7 @@ function createStructuralDirectiveTransform(name, fn) { props.splice(i, 1); i--; const onExit = fn(node, prop, context); - if (onExit) - exitFns.push(onExit); + if (onExit) exitFns.push(onExit); } } return exitFns; @@ -2024,7 +3544,7 @@ function createStructuralDirectiveTransform(name, fn) { }; } -const PURE_ANNOTATION = `/*#__PURE__*/`; +const PURE_ANNOTATION = `/*@__PURE__*/`; const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; function createCodegenContext(ast, { mode = "function", @@ -2053,7 +3573,7 @@ function createCodegenContext(ast, { ssr, isTS, inSSR, - source: ast.loc.source, + source: ast.source, code: ``, column: 1, line: 1, @@ -2064,7 +3584,7 @@ function createCodegenContext(ast, { helper(key) { return `_${helperNameMap[key]}`; }, - push(code, node) { + push(code, newlineIndex = -2 /* None */, node) { context.code += code; if (context.map) { if (node) { @@ -2077,7 +3597,20 @@ function createCodegenContext(ast, { } addMapping(node.loc.start, name); } - advancePositionWithMutation(context, code); + if (newlineIndex === -3 /* Unknown */) { + advancePositionWithMutation(context, code); + } else { + context.offset += code.length; + if (newlineIndex === -2 /* None */) { + context.column += code.length; + } else { + if (newlineIndex === -1 /* End */) { + newlineIndex = code.length - 1; + } + context.line++; + context.column = code.length - newlineIndex; + } + } if (node && node.loc !== locStub) { addMapping(node.loc.end); } @@ -2098,33 +3631,31 @@ function createCodegenContext(ast, { } }; function newline(n) { - context.push("\n" + ` `.repeat(n)); + context.push("\n" + ` `.repeat(n), 0 /* Start */); } - function addMapping(loc, name) { - context.map.addMapping({ - name, - source: context.filename, - original: { - line: loc.line, - column: loc.column - 1 - // source-map column is 0 based - }, - generated: { - line: context.line, - column: context.column - 1 - } + function addMapping(loc, name = null) { + const { _names, _mappings } = context.map; + if (name !== null && !_names.has(name)) _names.add(name); + _mappings.add({ + originalLine: loc.line, + originalColumn: loc.column - 1, + // source-map column is 0 based + generatedLine: context.line, + generatedColumn: context.column - 1, + source: filename, + name }); } if (sourceMap) { context.map = new sourceMapJs.SourceMapGenerator(); context.map.setSourceContent(filename, context.source); + context.map._sources.add(filename); } return context; } function generate(ast, options = {}) { const context = createCodegenContext(ast, options); - if (options.onContextCreated) - options.onContextCreated(context); + if (options.onContextCreated) options.onContextCreated(context); const { mode, push, @@ -2162,9 +3693,11 @@ function generate(ast, options = {}) { push(`with (_ctx) {`); indent(); if (hasHelpers) { - push(`const { ${helpers.map(aliasHelper).join(", ")} } = _Vue`); - push(` -`); + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); newline(); } } @@ -2193,7 +3726,7 @@ function generate(ast, options = {}) { } if (ast.components.length || ast.directives.length || ast.temps) { push(` -`); +`, 0 /* Start */); newline(); } if (!ssr) { @@ -2214,7 +3747,6 @@ function generate(ast, options = {}) { ast, code: context.code, preamble: isSetupInlined ? preambleContext.code : ``, - // SourceMapGenerator does have toJSON() method but it's not in the types map: context.map ? context.map.toJSON() : void 0 }; } @@ -2232,11 +3764,14 @@ function genFunctionPreamble(ast, context) { const helpers = Array.from(ast.helpers); if (helpers.length > 0) { if (prefixIdentifiers) { - push(`const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} -`); + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`, + -1 /* End */ + ); } else { push(`const _Vue = ${VueBinding} -`); +`, -1 /* End */); if (ast.hoists.length) { const staticHelpers = [ CREATE_VNODE, @@ -2246,14 +3781,15 @@ function genFunctionPreamble(ast, context) { CREATE_STATIC ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); push(`const { ${staticHelpers} } = _Vue -`); +`, -1 /* End */); } } } if (ast.ssrHelpers && ast.ssrHelpers.length) { push( `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") -` +`, + -1 /* End */ ); } genHoists(ast.hoists, context); @@ -2268,34 +3804,34 @@ function genModulePreamble(ast, context, genScopeId, inline) { runtimeModuleName, ssrRuntimeModuleName } = context; - if (genScopeId && ast.hoists.length) { - ast.helpers.add(PUSH_SCOPE_ID); - ast.helpers.add(POP_SCOPE_ID); - } if (ast.helpers.size) { const helpers = Array.from(ast.helpers); if (optimizeImports) { push( `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} -` +`, + -1 /* End */ ); push( ` // Binding optimization for webpack code-split const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} -` +`, + -1 /* End */ ); } else { push( `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} -` +`, + -1 /* End */ ); } } if (ast.ssrHelpers && ast.ssrHelpers.length) { push( `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" -` +`, + -1 /* End */ ); } if (ast.imports.length) { @@ -2331,28 +3867,13 @@ function genHoists(hoists, context) { return; } context.pure = true; - const { push, newline, helper, scopeId, mode } = context; - const genScopeId = scopeId != null && mode !== "function"; + const { push, newline } = context; newline(); - if (genScopeId) { - push( - `const _withScopeId = n => (${helper( - PUSH_SCOPE_ID - )}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)` - ); - newline(); - } for (let i = 0; i < hoists.length; i++) { const exp = hoists[i]; if (exp) { - const needScopeIdWrapper = genScopeId && exp.type === 13; - push( - `const _hoisted_${i + 1} = ${needScopeIdWrapper ? `${PURE_ANNOTATION} _withScopeId(() => ` : ``}` - ); + push(`const _hoisted_${i + 1} = `); genNode(exp, context); - if (needScopeIdWrapper) { - push(`)`); - } newline(); } } @@ -2385,7 +3906,7 @@ function genNodeList(nodes, context, multilines = false, comma = true) { for (let i = 0; i < nodes.length; i++) { const node = nodes[i]; if (shared.isString(node)) { - push(node); + push(node, -3 /* Unknown */); } else if (shared.isArray(node)) { genNodeListAsArray(node, context); } else { @@ -2403,7 +3924,7 @@ function genNodeList(nodes, context, multilines = false, comma = true) { } function genNode(node, context) { if (shared.isString(node)) { - context.push(node); + context.push(node, -3 /* Unknown */); return; } if (shared.isSymbol(node)) { @@ -2458,6 +3979,7 @@ function genNode(node, context) { case 21: genNodeList(node.body, context, true, false); break; + // SSR only types case 22: genTemplateLiteral(node, context); break; @@ -2476,16 +3998,19 @@ function genNode(node, context) { } } function genText(node, context) { - context.push(JSON.stringify(node.content), node); + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); } function genExpression(node, context) { const { content, isStatic } = node; - context.push(isStatic ? JSON.stringify(content) : content, node); + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); } function genInterpolation(node, context) { const { push, helper, pure } = context; - if (pure) - push(PURE_ANNOTATION); + if (pure) push(PURE_ANNOTATION); push(`${helper(TO_DISPLAY_STRING)}(`); genNode(node.content, context); push(`)`); @@ -2494,7 +4019,7 @@ function genCompoundExpression(node, context) { for (let i = 0; i < node.children.length; i++) { const child = node.children[i]; if (shared.isString(child)) { - context.push(child); + context.push(child, -3 /* Unknown */); } else { genNode(child, context); } @@ -2508,9 +4033,9 @@ function genExpressionAsPropertyKey(node, context) { push(`]`); } else if (node.isStatic) { const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); - push(text, node); + push(text, -2 /* None */, node); } else { - push(`[${node.content}]`, node); + push(`[${node.content}]`, -3 /* Unknown */, node); } } function genComment(node, context) { @@ -2518,7 +4043,11 @@ function genComment(node, context) { if (pure) { push(PURE_ANNOTATION); } - push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node); + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); } function genVNodeCall(node, context) { const { push, helper, pure } = context; @@ -2533,6 +4062,12 @@ function genVNodeCall(node, context) { disableTracking, isComponent } = node; + let patchFlagString; + if (patchFlag) { + { + patchFlagString = String(patchFlag); + } + } if (directives) { push(helper(WITH_DIRECTIVES) + `(`); } @@ -2543,9 +4078,9 @@ function genVNodeCall(node, context) { push(PURE_ANNOTATION); } const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); - push(helper(callHelper) + `(`, node); + push(helper(callHelper) + `(`, -2 /* None */, node); genNodeList( - genNullableArgs([tag, props, children, patchFlag, dynamicProps]), + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), context ); push(`)`); @@ -2561,8 +4096,7 @@ function genVNodeCall(node, context) { function genNullableArgs(args) { let i = args.length; while (i--) { - if (args[i] != null) - break; + if (args[i] != null) break; } return args.slice(0, i + 1).map((arg) => arg || `null`); } @@ -2572,7 +4106,7 @@ function genCallExpression(node, context) { if (pure) { push(PURE_ANNOTATION); } - push(callee + `(`, node); + push(callee + `(`, -2 /* None */, node); genNodeList(node.arguments, context); push(`)`); } @@ -2580,7 +4114,7 @@ function genObjectExpression(node, context) { const { push, indent, deindent, newline } = context; const { properties } = node; if (!properties.length) { - push(`{}`, node); + push(`{}`, -2 /* None */, node); return; } const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); @@ -2608,7 +4142,7 @@ function genFunctionExpression(node, context) { if (isSlot) { push(`_${helperNameMap[WITH_CTX]}(`); } - push(`(`, node); + push(`(`, -2 /* None */, node); if (shared.isArray(params)) { genNodeList(params, context); } else if (params) { @@ -2679,16 +4213,23 @@ function genConditionalExpression(node, context) { } function genCacheExpression(node, context) { const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } push(`_cache[${node.index}] || (`); - if (node.isVNode) { + if (needPauseTracking) { indent(); - push(`${helper(SET_BLOCK_TRACKING)}(-1),`); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); newline(); + push(`(`); } push(`_cache[${node.index}] = `); genNode(node.value, context); - if (node.isVNode) { - push(`,`); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); newline(); push(`${helper(SET_BLOCK_TRACKING)}(1),`); newline(); @@ -2696,6 +4237,9 @@ function genCacheExpression(node, context) { deindent(); } push(`)`); + if (needArraySpread) { + push(`)]`); + } } function genTemplateLiteral(node, context) { const { push, indent, deindent } = context; @@ -2705,14 +4249,12 @@ function genTemplateLiteral(node, context) { for (let i = 0; i < l; i++) { const e = node.elements[i]; if (shared.isString(e)) { - push(e.replace(/(`|\$|\\)/g, "\\$1")); + push(e.replace(/(`|\$|\\)/g, "\\$1"), -3 /* Unknown */); } else { push("${"); - if (multilines) - indent(); + if (multilines) indent(); genNode(e, context); - if (multilines) - deindent(); + if (multilines) deindent(); push("}"); } } @@ -2760,266 +4302,7 @@ function genReturnStatement({ returns }, context) { } } -function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { - const rootExp = root.type === "Program" && root.body[0].type === "ExpressionStatement" && root.body[0].expression; - estreeWalker.walk(root, { - enter(node, parent) { - parent && parentStack.push(parent); - if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { - return this.skip(); - } - if (node.type === "Identifier") { - const isLocal = !!knownIds[node.name]; - const isRefed = isReferencedIdentifier(node, parent, parentStack); - if (includeAll || isRefed && !isLocal) { - onIdentifier(node, parent, parentStack, isRefed, isLocal); - } - } else if (node.type === "ObjectProperty" && parent.type === "ObjectPattern") { - node.inPattern = true; - } else if (isFunctionType(node)) { - walkFunctionParams(node, (id) => markScopeIdentifier(node, id, knownIds)); - } else if (node.type === "BlockStatement") { - walkBlockDeclarations( - node, - (id) => markScopeIdentifier(node, id, knownIds) - ); - } - }, - leave(node, parent) { - parent && parentStack.pop(); - if (node !== rootExp && node.scopeIds) { - for (const id of node.scopeIds) { - knownIds[id]--; - if (knownIds[id] === 0) { - delete knownIds[id]; - } - } - } - } - }); -} -function isReferencedIdentifier(id, parent, parentStack) { - if (!parent) { - return true; - } - if (id.name === "arguments") { - return false; - } - if (isReferenced(id, parent)) { - return true; - } - switch (parent.type) { - case "AssignmentExpression": - case "AssignmentPattern": - return true; - case "ObjectPattern": - case "ArrayPattern": - return isInDestructureAssignment(parent, parentStack); - } - return false; -} -function isInDestructureAssignment(parent, parentStack) { - if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { - let i = parentStack.length; - while (i--) { - const p = parentStack[i]; - if (p.type === "AssignmentExpression") { - return true; - } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { - break; - } - } - } - return false; -} -function walkFunctionParams(node, onIdent) { - for (const p of node.params) { - for (const id of extractIdentifiers(p)) { - onIdent(id); - } - } -} -function walkBlockDeclarations(block, onIdent) { - for (const stmt of block.body) { - if (stmt.type === "VariableDeclaration") { - if (stmt.declare) - continue; - for (const decl of stmt.declarations) { - for (const id of extractIdentifiers(decl.id)) { - onIdent(id); - } - } - } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { - if (stmt.declare || !stmt.id) - continue; - onIdent(stmt.id); - } else if (stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement") { - const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; - if (variable && variable.type === "VariableDeclaration") { - for (const decl of variable.declarations) { - for (const id of extractIdentifiers(decl.id)) { - onIdent(id); - } - } - } - } - } -} -function extractIdentifiers(param, nodes = []) { - switch (param.type) { - case "Identifier": - nodes.push(param); - break; - case "MemberExpression": - let object = param; - while (object.type === "MemberExpression") { - object = object.object; - } - nodes.push(object); - break; - case "ObjectPattern": - for (const prop of param.properties) { - if (prop.type === "RestElement") { - extractIdentifiers(prop.argument, nodes); - } else { - extractIdentifiers(prop.value, nodes); - } - } - break; - case "ArrayPattern": - param.elements.forEach((element) => { - if (element) - extractIdentifiers(element, nodes); - }); - break; - case "RestElement": - extractIdentifiers(param.argument, nodes); - break; - case "AssignmentPattern": - extractIdentifiers(param.left, nodes); - break; - } - return nodes; -} -function markScopeIdentifier(node, child, knownIds) { - const { name } = child; - if (node.scopeIds && node.scopeIds.has(name)) { - return; - } - if (name in knownIds) { - knownIds[name]++; - } else { - knownIds[name] = 1; - } - (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); -} -const isFunctionType = (node) => { - return /Function(?:Expression|Declaration)$|Method$/.test(node.type); -}; -const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; -const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; -function isReferenced(node, parent, grandparent) { - switch (parent.type) { - case "MemberExpression": - case "OptionalMemberExpression": - if (parent.property === node) { - return !!parent.computed; - } - return parent.object === node; - case "JSXMemberExpression": - return parent.object === node; - case "VariableDeclarator": - return parent.init === node; - case "ArrowFunctionExpression": - return parent.body === node; - case "PrivateName": - return false; - case "ClassMethod": - case "ClassPrivateMethod": - case "ObjectMethod": - if (parent.key === node) { - return !!parent.computed; - } - return false; - case "ObjectProperty": - if (parent.key === node) { - return !!parent.computed; - } - return !grandparent || grandparent.type !== "ObjectPattern"; - case "ClassProperty": - if (parent.key === node) { - return !!parent.computed; - } - return true; - case "ClassPrivateProperty": - return parent.key !== node; - case "ClassDeclaration": - case "ClassExpression": - return parent.superClass === node; - case "AssignmentExpression": - return parent.right === node; - case "AssignmentPattern": - return parent.right === node; - case "LabeledStatement": - return false; - case "CatchClause": - return false; - case "RestElement": - return false; - case "BreakStatement": - case "ContinueStatement": - return false; - case "FunctionDeclaration": - case "FunctionExpression": - return false; - case "ExportNamespaceSpecifier": - case "ExportDefaultSpecifier": - return false; - case "ExportSpecifier": - if (grandparent == null ? void 0 : grandparent.source) { - return false; - } - return parent.local === node; - case "ImportDefaultSpecifier": - case "ImportNamespaceSpecifier": - case "ImportSpecifier": - return false; - case "ImportAttribute": - return false; - case "JSXAttribute": - return false; - case "ObjectPattern": - case "ArrayPattern": - return false; - case "MetaProperty": - return false; - case "ObjectTypeProperty": - return parent.key !== node; - case "TSEnumMember": - return parent.id !== node; - case "TSPropertySignature": - if (parent.key === node) { - return !!parent.computed; - } - return true; - } - return true; -} -const TS_NODE_TYPES = [ - "TSAsExpression", - // foo as number - "TSTypeAssertion", - // (<number>foo) - "TSNonNullExpression", - // foo! - "TSInstantiationExpression", - // foo<string> - "TSSatisfiesExpression" - // foo satisfies T -]; - const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this"); -const constantBailRE = /\w\s*\(|\.[^\d]/; const transformExpression = (node, context) => { if (node.type === 5) { node.content = processExpression( @@ -3027,12 +4310,14 @@ const transformExpression = (node, context) => { context ); } else if (node.type === 1) { + const memo = findDir(node, "memo"); for (let i = 0; i < node.props.length; i++) { const dir = node.props[i]; if (dir.type === 7 && dir.name !== "for") { const exp = dir.exp; const arg = dir.arg; - if (exp && exp.type === 4 && !(dir.name === "on" && arg)) { + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && arg && arg.type === 4 && arg.content === "key")) { dir.exp = processExpression( exp, context, @@ -3058,12 +4343,17 @@ function processExpression(node, context, asParams = false, asRawStatements = fa const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + const isNewExpression = parent && isInNewExpression(parentStack); + const wrapWithUnref = (raw2) => { + const wrapped = `${context.helperString(UNREF)}(${raw2})`; + return isNewExpression ? `(${wrapped})` : wrapped; + }; if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { return raw; } else if (type === "setup-ref") { return `${raw}.value`; } else if (type === "setup-maybe-ref") { - return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : `${context.helperString(UNREF)}(${raw})`; + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : wrapWithUnref(raw); } else if (type === "setup-let") { if (isAssignmentLVal) { const { right: rVal, operator } = parent; @@ -3090,7 +4380,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa } else if (isDestructureAssignment) { return raw; } else { - return `${context.helperString(UNREF)}(${raw})`; + return wrapWithUnref(raw); } } else if (type === "props") { return shared.genPropsAccessExp(raw); @@ -3109,8 +4399,11 @@ function processExpression(node, context, asParams = false, asRawStatements = fa return `_ctx.${raw}`; }; const rawExp = node.content; - const bailConstant = constantBailRE.test(rawExp); - if (isSimpleIdentifier(rawExp)) { + let ast = node.ast; + if (ast === false) { + return node; + } + if (ast === null || !ast && isSimpleIdentifier(rawExp)) { const isScopeVarReference = context.identifiers[rawExp]; const isAllowedGlobal = shared.isGloballyAllowed(rawExp); const isLiteral = isLiteralWhitelisted(rawExp); @@ -3128,22 +4421,24 @@ function processExpression(node, context, asParams = false, asRawStatements = fa } return node; } - let ast; - const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; - try { - ast = parser.parse(source, { - plugins: context.expressionPlugins - }).program; - } catch (e) { - context.onError( - createCompilerError( - 45, - node.loc, - void 0, - e.message - ) - ); - return node; + if (!ast) { + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = parser.parseExpression(source, { + sourceType: "module", + plugins: context.expressionPlugins + }); + } catch (e) { + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + e.message + ) + ); + return node; + } } const ids = []; const parentStack = []; @@ -3165,7 +4460,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa node2.name = rewriteIdentifier(node2.name, parent, node2); ids.push(node2); } else { - if (!(needPrefix && isLocal) && !bailConstant) { + if (!(needPrefix && isLocal) && (!parent || parent.type !== "CallExpression" && parent.type !== "NewExpression" && parent.type !== "MemberExpression")) { node2.isConstant = true; } ids.push(node2); @@ -3186,15 +4481,15 @@ function processExpression(node, context, asParams = false, asRawStatements = fa if (leadingText.length || id.prefix) { children.push(leadingText + (id.prefix || ``)); } - const source2 = rawExp.slice(start, end); + const source = rawExp.slice(start, end); children.push( createSimpleExpression( id.name, false, { - source: source2, - start: advancePositionWithClone(node.loc.start, source2, start), - end: advancePositionWithClone(node.loc.start, source2, end) + start: advancePositionWithClone(node.loc.start, source, start), + end: advancePositionWithClone(node.loc.start, source, end), + source }, id.isConstant ? 3 : 0 ) @@ -3206,9 +4501,10 @@ function processExpression(node, context, asParams = false, asRawStatements = fa let ret; if (children.length) { ret = createCompoundExpression(children, node.loc); + ret.ast = ast; } else { ret = node; - ret.constType = bailConstant ? 0 : 3; + ret.constType = 3; } ret.identifiers = Object.keys(knownIds); return ret; @@ -3282,7 +4578,7 @@ function processIf(node, dir, context, processCodegen) { const branch = createIfBranch(node, dir); const ifNode = { type: 9, - loc: node.loc, + loc: cloneLoc(node.loc), branches: [branch] }; context.replaceNode(ifNode); @@ -3328,8 +4624,7 @@ function processIf(node, dir, context, processCodegen) { sibling.branches.push(branch); const onExit = processCodegen && processCodegen(sibling, branch, false); traverseNode(branch, context); - if (onExit) - onExit(); + if (onExit) onExit(); context.currentNode = null; } else { context.onError( @@ -3388,13 +4683,12 @@ function createChildrenCodegenNode(branch, keyIndex, context) { return vnodeCall; } else { let patchFlag = 64; - shared.PatchFlagNames[64]; return createVNodeCall( context, helper(FRAGMENT), createObjectExpression([keyProperty]), children, - patchFlag + (``), + patchFlag, void 0, void 0, true, @@ -3447,6 +4741,90 @@ function getParentCondition(node) { } } +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + context.onError( + createCompilerError(34, loc) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + } + if (!exp) { + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 52, + arg.loc + ) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + transformBindShorthand(dir, context); + exp = dir.exp; + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = `${arg.content} || ""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = shared.camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const transformBindShorthand = (dir, context) => { + const arg = dir.arg; + const propName = shared.camelize(arg.content); + dir.exp = createSimpleExpression(propName, false, arg.loc); + { + dir.exp = processExpression(dir.exp, context); + } +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + const transformFor = createStructuralDirectiveTransform( "for", (node, dir, context) => { @@ -3457,9 +4835,21 @@ const transformFor = createStructuralDirectiveTransform( ]); const isTemplate = isTemplateNode(node); const memo = findDir(node, "memo"); - const keyProp = findProp(node, `key`); - const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp); - const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null; + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + if (isDirKey && !keyProp.exp) { + transformBindShorthand(keyProp, context); + } + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + if (memo && keyExp && isDirKey) { + { + keyProp.exp = keyExp = processExpression( + keyExp, + context + ); + } + } + const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; if (isTemplate) { if (memo) { memo.exp = processExpression( @@ -3481,7 +4871,7 @@ const transformFor = createStructuralDirectiveTransform( helper(FRAGMENT), void 0, renderExp, - fragmentFlag + (``), + fragmentFlag, void 0, void 0, true, @@ -3521,13 +4911,12 @@ const transformFor = createStructuralDirectiveTransform( helper(FRAGMENT), keyProperty ? createObjectExpression([keyProperty]) : void 0, node.children, - 64 + (``), + 64, void 0, void 0, true, void 0, false - /* isComponent */ ); } else { childBlock = children[0].codegenNode; @@ -3576,15 +4965,15 @@ const transformFor = createStructuralDirectiveTransform( renderExp.arguments.push( loop, createSimpleExpression(`_cache`), - createSimpleExpression(String(context.cached++)) + createSimpleExpression(String(context.cached.length)) ); + context.cached.push(null); } else { renderExp.arguments.push( createFunctionExpression( createForLoopParams(forNode.parseResult), childBlock, true - /* force newline */ ) ); } @@ -3599,18 +4988,14 @@ function processFor(node, dir, context, processCodegen) { ); return; } - const parseResult = parseForExpression( - // can only be simple expression because vFor transform is applied - // before expression transform. - dir.exp, - context - ); + const parseResult = dir.forParseResult; if (!parseResult) { context.onError( createCompilerError(32, dir.loc) ); return; } + finalizeForParseResult(parseResult, context); const { addIdentifiers, removeIdentifiers, scopes } = context; const { source, value, key, index } = parseResult; const forNode = { @@ -3638,80 +5023,39 @@ function processFor(node, dir, context, processCodegen) { key && removeIdentifiers(key); index && removeIdentifiers(index); } - if (onExit) - onExit(); + if (onExit) onExit(); }; } -const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; -const stripParensRE = /^\(|\)$/g; -function parseForExpression(input, context) { - const loc = input.loc; - const exp = input.content; - const inMatch = exp.match(forAliasRE); - if (!inMatch) - return; - const [, LHS, RHS] = inMatch; - const result = { - source: createAliasExpression( - loc, - RHS.trim(), - exp.indexOf(RHS, LHS.length) - ), - value: void 0, - key: void 0, - index: void 0 - }; +function finalizeForParseResult(result, context) { + if (result.finalized) return; if (context.prefixIdentifiers) { result.source = processExpression( result.source, context ); - } - let valueContent = LHS.trim().replace(stripParensRE, "").trim(); - const trimmedOffset = LHS.indexOf(valueContent); - const iteratorMatch = valueContent.match(forIteratorRE); - if (iteratorMatch) { - valueContent = valueContent.replace(forIteratorRE, "").trim(); - const keyContent = iteratorMatch[1].trim(); - let keyOffset; - if (keyContent) { - keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); - result.key = createAliasExpression(loc, keyContent, keyOffset); - if (context.prefixIdentifiers) { - result.key = processExpression(result.key, context, true); - } + if (result.key) { + result.key = processExpression( + result.key, + context, + true + ); } - if (iteratorMatch[2]) { - const indexContent = iteratorMatch[2].trim(); - if (indexContent) { - result.index = createAliasExpression( - loc, - indexContent, - exp.indexOf( - indexContent, - result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length - ) - ); - if (context.prefixIdentifiers) { - result.index = processExpression(result.index, context, true); - } - } + if (result.index) { + result.index = processExpression( + result.index, + context, + true + ); + } + if (result.value) { + result.value = processExpression( + result.value, + context, + true + ); } } - if (valueContent) { - result.value = createAliasExpression(loc, valueContent, trimmedOffset); - if (context.prefixIdentifiers) { - result.value = processExpression(result.value, context, true); - } - } - return result; -} -function createAliasExpression(range, content, offset) { - return createSimpleExpression( - content, - false, - getInnerRange(range, offset, content.length) - ); + result.finalized = true; } function createForLoopParams({ value, key, index }, memoArgs = []) { return createParamsList([value, key, index, ...memoArgs]); @@ -3719,8 +5063,7 @@ function createForLoopParams({ value, key, index }, memoArgs = []) { function createParamsList(args) { let i = args.length; while (i--) { - if (args[i]) - break; + if (args[i]) break; } return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); } @@ -3747,11 +5090,9 @@ const trackSlotScopes = (node, context) => { const trackVForSlotScopes = (node, context) => { let vFor; if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { - const result = vFor.parseResult = parseForExpression( - vFor.exp, - context - ); + const result = vFor.forParseResult; if (result) { + finalizeForParseResult(result, context); const { value, key, index } = result; const { addIdentifiers, removeIdentifiers } = context; value && addIdentifiers(value); @@ -3828,12 +5169,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { hasDynamicSlots = true; } const vFor = findDir(slotElement, "for"); - const slotFunction = buildSlotFn( - slotProps, - vFor == null ? void 0 : vFor.exp, - slotChildren, - slotLoc - ); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); let vIf; let vElse; if (vIf = findDir(slotElement, "if")) { @@ -3859,9 +5195,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { break; } } - if (prev && isTemplateNode(prev) && findDir(prev, "if")) { - children.splice(i, 1); - i--; + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { let conditional = dynamicSlots[dynamicSlots.length - 1]; while (conditional.alternate.type === 19) { conditional = conditional.alternate; @@ -3882,8 +5216,9 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { } } else if (vFor) { hasDynamicSlots = true; - const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context); + const parseResult = vFor.forParseResult; if (parseResult) { + finalizeForParseResult(parseResult, context); dynamicSlots.push( createCallExpression(context.helper(RENDER_LIST), [ parseResult.source, @@ -3891,13 +5226,15 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { createForLoopParams(parseResult), buildDynamicSlot(slotName, slotFunction), true - /* force newline */ ) ]) ); } else { context.onError( - createCompilerError(32, vFor.loc) + createCompilerError( + 32, + vFor.loc + ) ); } } else { @@ -3995,13 +5332,11 @@ function hasForwardedSlots(children) { } break; case 9: - if (hasForwardedSlots(child.branches)) - return true; + if (hasForwardedSlots(child.branches)) return true; break; case 10: case 11: - if (hasForwardedSlots(child.children)) - return true; + if (hasForwardedSlots(child.children)) return true; break; } } @@ -4026,7 +5361,6 @@ const transformElement = (node, context) => { const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; let vnodeProps; let vnodeChildren; - let vnodePatchFlag; let patchFlag = 0; let vnodeDynamicProps; let dynamicPropNames; @@ -4037,7 +5371,7 @@ const transformElement = (node, context) => { // updates inside get proper isSVG flag at runtime. (#639, #643) // This is technically web-specific, but splitting the logic out of core // leads to too much unnecessary complexity. - (tag === "svg" || tag === "foreignObject") + (tag === "svg" || tag === "foreignObject" || tag === "math") ); if (props.length > 0) { const propsBuildResult = buildProps( @@ -4088,20 +5422,15 @@ const transformElement = (node, context) => { vnodeChildren = node.children; } } - if (patchFlag !== 0) { - { - vnodePatchFlag = String(patchFlag); - } - if (dynamicPropNames && dynamicPropNames.length) { - vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); - } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); } node.codegenNode = createVNodeCall( context, vnodeTag, vnodeProps, vnodeChildren, - vnodePatchFlag, + patchFlag === 0 ? void 0 : patchFlag, vnodeDynamicProps, vnodeDirectives, !!shouldUseBlock, @@ -4114,13 +5443,30 @@ const transformElement = (node, context) => { function resolveComponentType(node, context, ssr = false) { let { tag } = node; const isExplicitDynamic = isComponentTag(tag); - const isProp = findProp(node, "is"); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); if (isProp) { if (isExplicitDynamic || isCompatEnabled( "COMPILER_IS_ON_ELEMENT", context )) { - const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp; + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + { + exp = isProp.exp = processExpression(exp, context); + } + } + } if (exp) { return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ exp @@ -4130,16 +5476,9 @@ function resolveComponentType(node, context, ssr = false) { tag = isProp.value.content.slice(4); } } - const isDir = !isExplicitDynamic && findDir(node, "is"); - if (isDir && isDir.exp) { - return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ - isDir.exp - ]); - } const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); if (builtIn) { - if (!ssr) - context.helper(builtIn); + if (!ssr) context.helper(builtIn); return builtIn; } { @@ -4196,6 +5535,10 @@ function resolveSetupReference(name, context) { `${context.helperString(UNREF)}(${fromMaybeRef})` ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } } function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { const { tag, loc: elementLoc, children } = node; @@ -4219,8 +5562,17 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom ); properties = []; } - if (arg) - mergeArgs.push(arg); + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } }; const analyzePatchFlag = ({ key, value }) => { if (isStaticExp(key)) { @@ -4236,6 +5588,9 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom if (isEventHandler && shared.isReservedProp(name)) { hasVnodeHook = true; } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { return; } @@ -4258,18 +5613,11 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom for (let i = 0; i < props.length; i++) { const prop = props[i]; if (prop.type === 6) { - const { loc, name, value } = prop; + const { loc, name, nameLoc, value } = prop; let isStatic = true; if (name === "ref") { hasRef = true; - if (context.scopes.vFor > 0) { - properties.push( - createObjectProperty( - createSimpleExpression("ref_for", true), - createSimpleExpression("true") - ) - ); - } + pushRefVForMarker(); if (value && context.inline) { const binding = context.bindingMetadata[value.content]; if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { @@ -4291,11 +5639,7 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom } properties.push( createObjectProperty( - createSimpleExpression( - name, - true, - getInnerRange(loc, 0, name.length) - ), + createSimpleExpression(name, true, nameLoc), createSimpleExpression( value ? value.content : "", isStatic, @@ -4335,18 +5679,14 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom ) { shouldUseBlock = true; } - if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) { - properties.push( - createObjectProperty( - createSimpleExpression("ref_for", true), - createSimpleExpression("true") - ) - ); + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); } if (!arg && (isVBind || isVOn)) { hasDynamicKeys = true; if (exp) { if (isVBind) { + pushRefVForMarker(); pushMergeArg(); { if (isCompatEnabled( @@ -4376,7 +5716,7 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom } continue; } - if (isVBind && modifiers.includes("prop")) { + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { patchFlag |= 32; } const directiveTransform = context.directiveTransforms[name]; @@ -4553,8 +5893,7 @@ function buildDirectiveArgs(dir, context) { } } const { loc } = dir; - if (dir.exp) - dirArgs.push(dir.exp); + if (dir.exp) dirArgs.push(dir.exp); if (dir.arg) { if (!dir.exp) { dirArgs.push(`void 0`); @@ -4584,8 +5923,7 @@ function stringifyDynamicPropNames(props) { let propsNamesString = `[`; for (let i = 0, l = props.length; i < l; i++) { propsNamesString += JSON.stringify(props[i]); - if (i < l - 1) - propsNamesString += ", "; + if (i < l - 1) propsNamesString += ", "; } return propsNamesString + `]`; } @@ -4641,8 +5979,15 @@ function processSlotOutlet(node, context) { } } else { if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { - if (p.exp) + if (p.exp) { slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = shared.camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + { + slotName = p.exp = processExpression(p.exp, context); + } + } } else { if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { p.arg.content = shared.camelize(p.arg.content); @@ -4675,7 +6020,6 @@ function processSlotOutlet(node, context) { }; } -const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; const transformOn = (dir, node, context, augmentor) => { const { loc, modifiers, arg } = dir; if (!dir.exp && !modifiers.length) { @@ -4716,8 +6060,8 @@ const transformOn = (dir, node, context, augmentor) => { } let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; if (exp) { - const isMemberExp = isMemberExpression(exp.content, context); - const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content)); + const isMemberExp = isMemberExpression(exp, context); + const isInlineStatement = !(isMemberExp || isFnExpression(exp, context)); const hasMultipleStatements = exp.content.includes(`;`); if (context.prefixIdentifiers) { isInlineStatement && context.addIdentifiers(`$event`); @@ -4775,58 +6119,6 @@ const transformOn = (dir, node, context, augmentor) => { return ret; }; -const transformBind = (dir, _node, context) => { - const { exp, modifiers, loc } = dir; - const arg = dir.arg; - if (arg.type !== 4) { - arg.children.unshift(`(`); - arg.children.push(`) || ""`); - } else if (!arg.isStatic) { - arg.content = `${arg.content} || ""`; - } - if (modifiers.includes("camel")) { - if (arg.type === 4) { - if (arg.isStatic) { - arg.content = shared.camelize(arg.content); - } else { - arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; - } - } else { - arg.children.unshift(`${context.helperString(CAMELIZE)}(`); - arg.children.push(`)`); - } - } - if (!context.inSSR) { - if (modifiers.includes("prop")) { - injectPrefix(arg, "."); - } - if (modifiers.includes("attr")) { - injectPrefix(arg, "^"); - } - } - if (!exp || exp.type === 4 && !exp.content.trim()) { - context.onError(createCompilerError(34, loc)); - return { - props: [createObjectProperty(arg, createSimpleExpression("", true, loc))] - }; - } - return { - props: [createObjectProperty(arg, exp)] - }; -}; -const injectPrefix = (arg, prefix) => { - if (arg.type === 4) { - if (arg.isStatic) { - arg.content = prefix + arg.content; - } else { - arg.content = `\`${prefix}\${${arg.content}}\``; - } - } else { - arg.children.unshift(`'${prefix}' + (`); - arg.children.push(`)`); - } -}; - const transformText = (node, context) => { if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { return () => { @@ -4915,8 +6207,8 @@ const transformOnce = (node, context) => { if (cur.codegenNode) { cur.codegenNode = context.cache( cur.codegenNode, + true, true - /* isVNode */ ); } }; @@ -4931,7 +6223,7 @@ const transformModel = (dir, node, context) => { ); return createTransformProps(); } - const rawExp = exp.loc.source; + const rawExp = exp.loc.source.trim(); const expString = exp.type === 4 ? exp.content : rawExp; const bindingType = context.bindingMetadata[rawExp]; if (bindingType === "props" || bindingType === "props-aliased") { @@ -4939,7 +6231,7 @@ const transformModel = (dir, node, context) => { return createTransformProps(); } const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); - if (!expString.trim() || !isMemberExpression(expString, context) && !maybeRef) { + if (!expString.trim() || !isMemberExpression(exp, context) && !maybeRef) { context.onError( createCompilerError(42, exp.loc) ); @@ -4987,7 +6279,7 @@ const transformModel = (dir, node, context) => { props[1].value = context.cache(props[1].value); } if (dir.modifiers.length && node.tagType === 1) { - const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; props.push( createObjectProperty( @@ -5009,13 +6301,12 @@ function createTransformProps(props = []) { const validDivisionCharRE = /[\w).+\-_$\]]/; const transformFilter = (node, context) => { - if (!isCompatEnabled("COMPILER_FILTER", context)) { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { return; } if (node.type === 5) { rewriteFilter(node.content, context); - } - if (node.type === 1) { + } else if (node.type === 1) { node.props.forEach((prop) => { if (prop.type === 7 && prop.name !== "for" && prop.exp) { rewriteFilter(prop.exp, context); @@ -5029,8 +6320,7 @@ function rewriteFilter(node, context) { } else { for (let i = 0; i < node.children.length; i++) { const child = node.children[i]; - if (typeof child !== "object") - continue; + if (typeof child !== "object") continue; if (child.type === 4) { parseFilter(child, context); } else if (child.type === 8) { @@ -5056,17 +6346,13 @@ function parseFilter(node, context) { prev = c; c = exp.charCodeAt(i); if (inSingle) { - if (c === 39 && prev !== 92) - inSingle = false; + if (c === 39 && prev !== 92) inSingle = false; } else if (inDouble) { - if (c === 34 && prev !== 92) - inDouble = false; + if (c === 34 && prev !== 92) inDouble = false; } else if (inTemplateString) { - if (c === 96 && prev !== 92) - inTemplateString = false; + if (c === 96 && prev !== 92) inTemplateString = false; } else if (inRegex) { - if (c === 47 && prev !== 92) - inRegex = false; + if (c === 47 && prev !== 92) inRegex = false; } else if (c === 124 && // pipe exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { if (expression === void 0) { @@ -5080,27 +6366,35 @@ function parseFilter(node, context) { case 34: inDouble = true; break; + // " case 39: inSingle = true; break; + // ' case 96: inTemplateString = true; break; + // ` case 40: paren++; break; + // ( case 41: paren--; break; + // ) case 91: square++; break; + // [ case 93: square--; break; + // ] case 123: curly++; break; + // { case 125: curly--; break; @@ -5110,8 +6404,7 @@ function parseFilter(node, context) { let p; for (; j >= 0; j--) { p = exp.charAt(j); - if (p !== " ") - break; + if (p !== " ") break; } if (!p || !validDivisionCharRE.test(p)) { inRegex = true; @@ -5133,6 +6426,7 @@ function parseFilter(node, context) { expression = wrapFilter(expression, filters[i], context); } node.content = expression; + node.ast = void 0; } } function wrapFilter(exp, filter, context) { @@ -5167,8 +6461,9 @@ const transformMemo = (node, context) => { dir.exp, createFunctionExpression(void 0, codegenNode), `_cache`, - String(context.cached++) + String(context.cached.length) ]); + context.cached.push(null); } }; } @@ -5199,7 +6494,7 @@ function getBaseTransformPreset(prefixIdentifiers) { } ]; } -function baseCompile(template, options = {}) { +function baseCompile(source, options = {}) { const onError = options.onError || defaultOnError; const isModuleMode = options.mode === "module"; const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; @@ -5209,7 +6504,10 @@ function baseCompile(template, options = {}) { if (options.scopeId && !isModuleMode) { onError(createCompilerError(50)); } - const ast = shared.isString(template) ? baseParse(template, options) : template; + const resolvedOptions = shared.extend({}, options, { + prefixIdentifiers + }); + const ast = shared.isString(source) ? baseParse(source, resolvedOptions) : source; const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); if (options.isTS) { const { expressionPlugins } = options; @@ -5219,8 +6517,7 @@ function baseCompile(template, options = {}) { } transform( ast, - shared.extend({}, options, { - prefixIdentifiers, + shared.extend({}, resolvedOptions, { nodeTransforms: [ ...nodeTransforms, ...options.nodeTransforms || [] @@ -5234,18 +6531,27 @@ function baseCompile(template, options = {}) { ) }) ); - return generate( - ast, - shared.extend({}, options, { - prefixIdentifiers - }) - ); + return generate(ast, resolvedOptions); } +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + const noopDirectiveTransform = () => ({ props: [] }); exports.generateCodeFrame = shared.generateCodeFrame; exports.BASE_TRANSITION = BASE_TRANSITION; +exports.BindingTypes = BindingTypes; exports.CAMELIZE = CAMELIZE; exports.CAPITALIZE = CAPITALIZE; exports.CREATE_BLOCK = CREATE_BLOCK; @@ -5256,6 +6562,10 @@ exports.CREATE_SLOTS = CREATE_SLOTS; exports.CREATE_STATIC = CREATE_STATIC; exports.CREATE_TEXT = CREATE_TEXT; exports.CREATE_VNODE = CREATE_VNODE; +exports.CompilerDeprecationTypes = CompilerDeprecationTypes; +exports.ConstantTypes = ConstantTypes; +exports.ElementTypes = ElementTypes; +exports.ErrorCodes = ErrorCodes; exports.FRAGMENT = FRAGMENT; exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; exports.IS_MEMO_SAME = IS_MEMO_SAME; @@ -5265,6 +6575,8 @@ exports.MERGE_PROPS = MERGE_PROPS; exports.NORMALIZE_CLASS = NORMALIZE_CLASS; exports.NORMALIZE_PROPS = NORMALIZE_PROPS; exports.NORMALIZE_STYLE = NORMALIZE_STYLE; +exports.Namespaces = Namespaces; +exports.NodeTypes = NodeTypes; exports.OPEN_BLOCK = OPEN_BLOCK; exports.POP_SCOPE_ID = POP_SCOPE_ID; exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID; @@ -5317,6 +6629,7 @@ exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform; exports.createTemplateLiteral = createTemplateLiteral; exports.createTransformContext = createTransformContext; exports.createVNodeCall = createVNodeCall; +exports.errorMessages = errorMessages; exports.extractIdentifiers = extractIdentifiers; exports.findDir = findDir; exports.findProp = findProp; @@ -5324,7 +6637,6 @@ exports.forAliasRE = forAliasRE; exports.generate = generate; exports.getBaseTransformPreset = getBaseTransformPreset; exports.getConstantType = getConstantType; -exports.getInnerRange = getInnerRange; exports.getMemoedVNodeCall = getMemoedVNodeCall; exports.getVNodeBlockHelper = getVNodeBlockHelper; exports.getVNodeHelper = getVNodeHelper; @@ -5332,10 +6644,13 @@ exports.hasDynamicKeyVBind = hasDynamicKeyVBind; exports.hasScopeRef = hasScopeRef; exports.helperNameMap = helperNameMap; exports.injectProp = injectProp; -exports.isBuiltInType = isBuiltInType; exports.isCoreComponent = isCoreComponent; +exports.isFnExpression = isFnExpression; +exports.isFnExpressionBrowser = isFnExpressionBrowser; +exports.isFnExpressionNode = isFnExpressionNode; exports.isFunctionType = isFunctionType; exports.isInDestructureAssignment = isInDestructureAssignment; +exports.isInNewExpression = isInNewExpression; exports.isMemberExpression = isMemberExpression; exports.isMemberExpressionBrowser = isMemberExpressionBrowser; exports.isMemberExpressionNode = isMemberExpressionNode; @@ -5368,6 +6683,7 @@ exports.transformExpression = transformExpression; exports.transformModel = transformModel; exports.transformOn = transformOn; exports.traverseNode = traverseNode; +exports.unwrapTSNode = unwrapTSNode; exports.walkBlockDeclarations = walkBlockDeclarations; exports.walkFunctionParams = walkFunctionParams; exports.walkIdentifiers = walkIdentifiers; diff --git a/.output/server/node_modules/@vue/compiler-core/index.js b/.output/server/node_modules/@vue/compiler-core/index.js deleted file mode 100644 index d3fc54f..0000000 --- a/.output/server/node_modules/@vue/compiler-core/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/compiler-core.cjs.prod.js') -} else { - module.exports = require('./dist/compiler-core.cjs.js') -} diff --git a/.output/server/node_modules/@vue/compiler-core/package.json b/.output/server/node_modules/@vue/compiler-core/package.json index 0d8a325..26eeae8 100644 --- a/.output/server/node_modules/@vue/compiler-core/package.json +++ b/.output/server/node_modules/@vue/compiler-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-core", - "version": "3.3.9", + "version": "3.5.13", "description": "@vue/compiler-core", "main": "index.js", "module": "dist/compiler-core.esm-bundler.js", @@ -9,6 +9,20 @@ "index.js", "dist" ], + "exports": { + ".": { + "types": "./dist/compiler-core.d.ts", + "node": { + "production": "./dist/compiler-core.cjs.prod.js", + "development": "./dist/compiler-core.cjs.js", + "default": "./dist/compiler-core.cjs.prod.js" + }, + "module": "./dist/compiler-core.esm-bundler.js", + "import": "./dist/compiler-core.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, "buildOptions": { "name": "VueCompilerCore", "compat": true, @@ -32,12 +46,16 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme", "dependencies": { - "@babel/parser": "^7.23.3", + "@babel/parser": "^7.25.3", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2", - "@vue/shared": "3.3.9" + "source-map-js": "^1.2.0", + "@vue/shared": "3.5.13" }, "devDependencies": { - "@babel/types": "^7.23.3" - } + "@babel/types": "^7.25.2" + }, + "__npminstall_done": true, + "_from": "@vue/compiler-core@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js b/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js deleted file mode 100644 index 4e563e0..0000000 --- a/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js +++ /dev/null @@ -1,3047 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var compilerCore = require('@vue/compiler-core'); -var shared = require('@vue/shared'); - -const V_MODEL_RADIO = Symbol(`vModelRadio` ); -const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` ); -const V_MODEL_TEXT = Symbol(`vModelText` ); -const V_MODEL_SELECT = Symbol(`vModelSelect` ); -const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` ); -const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` ); -const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` ); -const V_SHOW = Symbol(`vShow` ); -const TRANSITION = Symbol(`Transition` ); -const TRANSITION_GROUP = Symbol(`TransitionGroup` ); -compilerCore.registerRuntimeHelpers({ - [V_MODEL_RADIO]: `vModelRadio`, - [V_MODEL_CHECKBOX]: `vModelCheckbox`, - [V_MODEL_TEXT]: `vModelText`, - [V_MODEL_SELECT]: `vModelSelect`, - [V_MODEL_DYNAMIC]: `vModelDynamic`, - [V_ON_WITH_MODIFIERS]: `withModifiers`, - [V_ON_WITH_KEYS]: `withKeys`, - [V_SHOW]: `vShow`, - [TRANSITION]: `Transition`, - [TRANSITION_GROUP]: `TransitionGroup` -}); - -var namedCharacterReferences = { - GT: ">", - gt: ">", - LT: "<", - lt: "<", - "ac;": "∾", - "af;": "⁡", - AMP: "&", - amp: "&", - "ap;": "≈", - "DD;": "ⅅ", - "dd;": "ⅆ", - deg: "°", - "ee;": "ⅇ", - "eg;": "⪚", - "el;": "⪙", - ETH: "Ð", - eth: "ð", - "gE;": "≧", - "ge;": "≥", - "Gg;": "⋙", - "gg;": "≫", - "gl;": "≷", - "GT;": ">", - "Gt;": "≫", - "gt;": ">", - "ic;": "⁣", - "ii;": "ⅈ", - "Im;": "ℑ", - "in;": "∈", - "it;": "⁢", - "lE;": "≦", - "le;": "≤", - "lg;": "≶", - "Ll;": "⋘", - "ll;": "≪", - "LT;": "<", - "Lt;": "≪", - "lt;": "<", - "mp;": "∓", - "Mu;": "Μ", - "mu;": "μ", - "ne;": "≠", - "ni;": "∋", - not: "¬", - "Nu;": "Ν", - "nu;": "ν", - "Or;": "⩔", - "or;": "∨", - "oS;": "Ⓢ", - "Pi;": "Π", - "pi;": "π", - "pm;": "±", - "Pr;": "⪻", - "pr;": "≺", - "Re;": "ℜ", - REG: "®", - reg: "®", - "rx;": "℞", - "Sc;": "⪼", - "sc;": "≻", - shy: "­", - uml: "¨", - "wp;": "℘", - "wr;": "≀", - "Xi;": "Ξ", - "xi;": "ξ", - yen: "¥", - "acd;": "∿", - "acE;": "∾̳", - "Acy;": "А", - "acy;": "а", - "Afr;": "𝔄", - "afr;": "𝔞", - "AMP;": "&", - "amp;": "&", - "And;": "⩓", - "and;": "∧", - "ang;": "∠", - "apE;": "⩰", - "ape;": "≊", - "ast;": "*", - Auml: "Ä", - auml: "ä", - "Bcy;": "Б", - "bcy;": "б", - "Bfr;": "𝔅", - "bfr;": "𝔟", - "bne;": "=⃥", - "bot;": "⊥", - "Cap;": "⋒", - "cap;": "∩", - cent: "¢", - "Cfr;": "ℭ", - "cfr;": "𝔠", - "Chi;": "Χ", - "chi;": "χ", - "cir;": "○", - COPY: "©", - copy: "©", - "Cup;": "⋓", - "cup;": "∪", - "Dcy;": "Д", - "dcy;": "д", - "deg;": "°", - "Del;": "∇", - "Dfr;": "𝔇", - "dfr;": "𝔡", - "die;": "¨", - "div;": "÷", - "Dot;": "¨", - "dot;": "˙", - "Ecy;": "Э", - "ecy;": "э", - "Efr;": "𝔈", - "efr;": "𝔢", - "egs;": "⪖", - "ell;": "ℓ", - "els;": "⪕", - "ENG;": "Ŋ", - "eng;": "ŋ", - "Eta;": "Η", - "eta;": "η", - "ETH;": "Ð", - "eth;": "ð", - Euml: "Ë", - euml: "ë", - "Fcy;": "Ф", - "fcy;": "ф", - "Ffr;": "𝔉", - "ffr;": "𝔣", - "gap;": "⪆", - "Gcy;": "Г", - "gcy;": "г", - "gEl;": "⪌", - "gel;": "⋛", - "geq;": "≥", - "ges;": "⩾", - "Gfr;": "𝔊", - "gfr;": "𝔤", - "ggg;": "⋙", - "gla;": "⪥", - "glE;": "⪒", - "glj;": "⪤", - "gnE;": "≩", - "gne;": "⪈", - "Hat;": "^", - "Hfr;": "ℌ", - "hfr;": "𝔥", - "Icy;": "И", - "icy;": "и", - "iff;": "⇔", - "Ifr;": "ℑ", - "ifr;": "𝔦", - "Int;": "∬", - "int;": "∫", - Iuml: "Ï", - iuml: "ï", - "Jcy;": "Й", - "jcy;": "й", - "Jfr;": "𝔍", - "jfr;": "𝔧", - "Kcy;": "К", - "kcy;": "к", - "Kfr;": "𝔎", - "kfr;": "𝔨", - "lap;": "⪅", - "lat;": "⪫", - "Lcy;": "Л", - "lcy;": "л", - "lEg;": "⪋", - "leg;": "⋚", - "leq;": "≤", - "les;": "⩽", - "Lfr;": "𝔏", - "lfr;": "𝔩", - "lgE;": "⪑", - "lnE;": "≨", - "lne;": "⪇", - "loz;": "◊", - "lrm;": "‎", - "Lsh;": "↰", - "lsh;": "↰", - macr: "¯", - "Map;": "⤅", - "map;": "↦", - "Mcy;": "М", - "mcy;": "м", - "Mfr;": "𝔐", - "mfr;": "𝔪", - "mho;": "℧", - "mid;": "∣", - "nap;": "≉", - nbsp: " ", - "Ncy;": "Н", - "ncy;": "н", - "Nfr;": "𝔑", - "nfr;": "𝔫", - "ngE;": "≧̸", - "nge;": "≱", - "nGg;": "⋙̸", - "nGt;": "≫⃒", - "ngt;": "≯", - "nis;": "⋼", - "niv;": "∋", - "nlE;": "≦̸", - "nle;": "≰", - "nLl;": "⋘̸", - "nLt;": "≪⃒", - "nlt;": "≮", - "Not;": "⫬", - "not;": "¬", - "npr;": "⊀", - "nsc;": "⊁", - "num;": "#", - "Ocy;": "О", - "ocy;": "о", - "Ofr;": "𝔒", - "ofr;": "𝔬", - "ogt;": "⧁", - "ohm;": "Ω", - "olt;": "⧀", - "ord;": "⩝", - ordf: "ª", - ordm: "º", - "orv;": "⩛", - Ouml: "Ö", - ouml: "ö", - "par;": "∥", - para: "¶", - "Pcy;": "П", - "pcy;": "п", - "Pfr;": "𝔓", - "pfr;": "𝔭", - "Phi;": "Φ", - "phi;": "φ", - "piv;": "ϖ", - "prE;": "⪳", - "pre;": "⪯", - "Psi;": "Ψ", - "psi;": "ψ", - "Qfr;": "𝔔", - "qfr;": "𝔮", - QUOT: "\"", - quot: "\"", - "Rcy;": "Р", - "rcy;": "р", - "REG;": "®", - "reg;": "®", - "Rfr;": "ℜ", - "rfr;": "𝔯", - "Rho;": "Ρ", - "rho;": "ρ", - "rlm;": "‏", - "Rsh;": "↱", - "rsh;": "↱", - "scE;": "⪴", - "sce;": "⪰", - "Scy;": "С", - "scy;": "с", - sect: "§", - "Sfr;": "𝔖", - "sfr;": "𝔰", - "shy;": "­", - "sim;": "∼", - "smt;": "⪪", - "sol;": "/", - "squ;": "□", - "Sub;": "⋐", - "sub;": "⊂", - "Sum;": "∑", - "sum;": "∑", - "Sup;": "⋑", - "sup;": "⊃", - sup1: "¹", - sup2: "²", - sup3: "³", - "Tab;": "\t", - "Tau;": "Τ", - "tau;": "τ", - "Tcy;": "Т", - "tcy;": "т", - "Tfr;": "𝔗", - "tfr;": "𝔱", - "top;": "⊤", - "Ucy;": "У", - "ucy;": "у", - "Ufr;": "𝔘", - "ufr;": "𝔲", - "uml;": "¨", - Uuml: "Ü", - uuml: "ü", - "Vcy;": "В", - "vcy;": "в", - "Vee;": "⋁", - "vee;": "∨", - "Vfr;": "𝔙", - "vfr;": "𝔳", - "Wfr;": "𝔚", - "wfr;": "𝔴", - "Xfr;": "𝔛", - "xfr;": "𝔵", - "Ycy;": "Ы", - "ycy;": "ы", - "yen;": "¥", - "Yfr;": "𝔜", - "yfr;": "𝔶", - yuml: "ÿ", - "Zcy;": "З", - "zcy;": "з", - "Zfr;": "ℨ", - "zfr;": "𝔷", - "zwj;": "‍", - Acirc: "Â", - acirc: "â", - acute: "´", - AElig: "Æ", - aelig: "æ", - "andd;": "⩜", - "andv;": "⩚", - "ange;": "⦤", - "Aopf;": "𝔸", - "aopf;": "𝕒", - "apid;": "≋", - "apos;": "'", - Aring: "Å", - aring: "å", - "Ascr;": "𝒜", - "ascr;": "𝒶", - "Auml;": "Ä", - "auml;": "ä", - "Barv;": "⫧", - "bbrk;": "⎵", - "Beta;": "Β", - "beta;": "β", - "beth;": "ℶ", - "bNot;": "⫭", - "bnot;": "⌐", - "Bopf;": "𝔹", - "bopf;": "𝕓", - "boxH;": "═", - "boxh;": "─", - "boxV;": "║", - "boxv;": "│", - "Bscr;": "ℬ", - "bscr;": "𝒷", - "bsim;": "∽", - "bsol;": "\\", - "bull;": "•", - "bump;": "≎", - "caps;": "∩︀", - "Cdot;": "Ċ", - "cdot;": "ċ", - cedil: "¸", - "cent;": "¢", - "CHcy;": "Ч", - "chcy;": "ч", - "circ;": "ˆ", - "cirE;": "⧃", - "cire;": "≗", - "comp;": "∁", - "cong;": "≅", - "Copf;": "ℂ", - "copf;": "𝕔", - "COPY;": "©", - "copy;": "©", - "Cscr;": "𝒞", - "cscr;": "𝒸", - "csub;": "⫏", - "csup;": "⫐", - "cups;": "∪︀", - "Darr;": "↡", - "dArr;": "⇓", - "darr;": "↓", - "dash;": "‐", - "dHar;": "⥥", - "diam;": "⋄", - "DJcy;": "Ђ", - "djcy;": "ђ", - "Dopf;": "𝔻", - "dopf;": "𝕕", - "Dscr;": "𝒟", - "dscr;": "𝒹", - "DScy;": "Ѕ", - "dscy;": "ѕ", - "dsol;": "⧶", - "dtri;": "▿", - "DZcy;": "Џ", - "dzcy;": "џ", - "ecir;": "≖", - Ecirc: "Ê", - ecirc: "ê", - "Edot;": "Ė", - "eDot;": "≑", - "edot;": "ė", - "emsp;": " ", - "ensp;": " ", - "Eopf;": "𝔼", - "eopf;": "𝕖", - "epar;": "⋕", - "epsi;": "ε", - "Escr;": "ℰ", - "escr;": "ℯ", - "Esim;": "⩳", - "esim;": "≂", - "Euml;": "Ë", - "euml;": "ë", - "euro;": "€", - "excl;": "!", - "flat;": "♭", - "fnof;": "ƒ", - "Fopf;": "𝔽", - "fopf;": "𝕗", - "fork;": "⋔", - "Fscr;": "ℱ", - "fscr;": "𝒻", - "Gdot;": "Ġ", - "gdot;": "ġ", - "geqq;": "≧", - "gesl;": "⋛︀", - "GJcy;": "Ѓ", - "gjcy;": "ѓ", - "gnap;": "⪊", - "gneq;": "⪈", - "Gopf;": "𝔾", - "gopf;": "𝕘", - "Gscr;": "𝒢", - "gscr;": "ℊ", - "gsim;": "≳", - "gtcc;": "⪧", - "gvnE;": "≩︀", - "half;": "½", - "hArr;": "⇔", - "harr;": "↔", - "hbar;": "ℏ", - "Hopf;": "ℍ", - "hopf;": "𝕙", - "Hscr;": "ℋ", - "hscr;": "𝒽", - Icirc: "Î", - icirc: "î", - "Idot;": "İ", - "IEcy;": "Е", - "iecy;": "е", - iexcl: "¡", - "imof;": "⊷", - "IOcy;": "Ё", - "iocy;": "ё", - "Iopf;": "𝕀", - "iopf;": "𝕚", - "Iota;": "Ι", - "iota;": "ι", - "Iscr;": "ℐ", - "iscr;": "𝒾", - "isin;": "∈", - "Iuml;": "Ï", - "iuml;": "ï", - "Jopf;": "𝕁", - "jopf;": "𝕛", - "Jscr;": "𝒥", - "jscr;": "𝒿", - "KHcy;": "Х", - "khcy;": "х", - "KJcy;": "Ќ", - "kjcy;": "ќ", - "Kopf;": "𝕂", - "kopf;": "𝕜", - "Kscr;": "𝒦", - "kscr;": "𝓀", - "Lang;": "⟪", - "lang;": "⟨", - laquo: "«", - "Larr;": "↞", - "lArr;": "⇐", - "larr;": "←", - "late;": "⪭", - "lcub;": "{", - "ldca;": "⤶", - "ldsh;": "↲", - "leqq;": "≦", - "lesg;": "⋚︀", - "lHar;": "⥢", - "LJcy;": "Љ", - "ljcy;": "љ", - "lnap;": "⪉", - "lneq;": "⪇", - "Lopf;": "𝕃", - "lopf;": "𝕝", - "lozf;": "⧫", - "lpar;": "(", - "Lscr;": "ℒ", - "lscr;": "𝓁", - "lsim;": "≲", - "lsqb;": "[", - "ltcc;": "⪦", - "ltri;": "◃", - "lvnE;": "≨︀", - "macr;": "¯", - "male;": "♂", - "malt;": "✠", - micro: "µ", - "mlcp;": "⫛", - "mldr;": "…", - "Mopf;": "𝕄", - "mopf;": "𝕞", - "Mscr;": "ℳ", - "mscr;": "𝓂", - "nang;": "∠⃒", - "napE;": "⩰̸", - "nbsp;": " ", - "ncap;": "⩃", - "ncup;": "⩂", - "ngeq;": "≱", - "nges;": "⩾̸", - "ngtr;": "≯", - "nGtv;": "≫̸", - "nisd;": "⋺", - "NJcy;": "Њ", - "njcy;": "њ", - "nldr;": "‥", - "nleq;": "≰", - "nles;": "⩽̸", - "nLtv;": "≪̸", - "nmid;": "∤", - "Nopf;": "ℕ", - "nopf;": "𝕟", - "npar;": "∦", - "npre;": "⪯̸", - "nsce;": "⪰̸", - "Nscr;": "𝒩", - "nscr;": "𝓃", - "nsim;": "≁", - "nsub;": "⊄", - "nsup;": "⊅", - "ntgl;": "≹", - "ntlg;": "≸", - "nvap;": "≍⃒", - "nvge;": "≥⃒", - "nvgt;": ">⃒", - "nvle;": "≤⃒", - "nvlt;": "<⃒", - "oast;": "⊛", - "ocir;": "⊚", - Ocirc: "Ô", - ocirc: "ô", - "odiv;": "⨸", - "odot;": "⊙", - "ogon;": "˛", - "oint;": "∮", - "omid;": "⦶", - "Oopf;": "𝕆", - "oopf;": "𝕠", - "opar;": "⦷", - "ordf;": "ª", - "ordm;": "º", - "oror;": "⩖", - "Oscr;": "𝒪", - "oscr;": "ℴ", - "osol;": "⊘", - "Ouml;": "Ö", - "ouml;": "ö", - "para;": "¶", - "part;": "∂", - "perp;": "⊥", - "phiv;": "ϕ", - "plus;": "+", - "Popf;": "ℙ", - "popf;": "𝕡", - pound: "£", - "prap;": "⪷", - "prec;": "≺", - "prnE;": "⪵", - "prod;": "∏", - "prop;": "∝", - "Pscr;": "𝒫", - "pscr;": "𝓅", - "qint;": "⨌", - "Qopf;": "ℚ", - "qopf;": "𝕢", - "Qscr;": "𝒬", - "qscr;": "𝓆", - "QUOT;": "\"", - "quot;": "\"", - "race;": "∽̱", - "Rang;": "⟫", - "rang;": "⟩", - raquo: "»", - "Rarr;": "↠", - "rArr;": "⇒", - "rarr;": "→", - "rcub;": "}", - "rdca;": "⤷", - "rdsh;": "↳", - "real;": "ℜ", - "rect;": "▭", - "rHar;": "⥤", - "rhov;": "ϱ", - "ring;": "˚", - "Ropf;": "ℝ", - "ropf;": "𝕣", - "rpar;": ")", - "Rscr;": "ℛ", - "rscr;": "𝓇", - "rsqb;": "]", - "rtri;": "▹", - "scap;": "⪸", - "scnE;": "⪶", - "sdot;": "⋅", - "sect;": "§", - "semi;": ";", - "sext;": "✶", - "SHcy;": "Ш", - "shcy;": "ш", - "sime;": "≃", - "simg;": "⪞", - "siml;": "⪝", - "smid;": "∣", - "smte;": "⪬", - "solb;": "⧄", - "Sopf;": "𝕊", - "sopf;": "𝕤", - "spar;": "∥", - "Sqrt;": "√", - "squf;": "▪", - "Sscr;": "𝒮", - "sscr;": "𝓈", - "Star;": "⋆", - "star;": "☆", - "subE;": "⫅", - "sube;": "⊆", - "succ;": "≻", - "sung;": "♪", - "sup1;": "¹", - "sup2;": "²", - "sup3;": "³", - "supE;": "⫆", - "supe;": "⊇", - szlig: "ß", - "tbrk;": "⎴", - "tdot;": "⃛", - THORN: "Þ", - thorn: "þ", - times: "×", - "tint;": "∭", - "toea;": "⤨", - "Topf;": "𝕋", - "topf;": "𝕥", - "tosa;": "⤩", - "trie;": "≜", - "Tscr;": "𝒯", - "tscr;": "𝓉", - "TScy;": "Ц", - "tscy;": "ц", - "Uarr;": "↟", - "uArr;": "⇑", - "uarr;": "↑", - Ucirc: "Û", - ucirc: "û", - "uHar;": "⥣", - "Uopf;": "𝕌", - "uopf;": "𝕦", - "Upsi;": "ϒ", - "upsi;": "υ", - "Uscr;": "𝒰", - "uscr;": "𝓊", - "utri;": "▵", - "Uuml;": "Ü", - "uuml;": "ü", - "vArr;": "⇕", - "varr;": "↕", - "Vbar;": "⫫", - "vBar;": "⫨", - "Vert;": "‖", - "vert;": "|", - "Vopf;": "𝕍", - "vopf;": "𝕧", - "Vscr;": "𝒱", - "vscr;": "𝓋", - "Wopf;": "𝕎", - "wopf;": "𝕨", - "Wscr;": "𝒲", - "wscr;": "𝓌", - "xcap;": "⋂", - "xcup;": "⋃", - "xmap;": "⟼", - "xnis;": "⋻", - "Xopf;": "𝕏", - "xopf;": "𝕩", - "Xscr;": "𝒳", - "xscr;": "𝓍", - "xvee;": "⋁", - "YAcy;": "Я", - "yacy;": "я", - "YIcy;": "Ї", - "yicy;": "ї", - "Yopf;": "𝕐", - "yopf;": "𝕪", - "Yscr;": "𝒴", - "yscr;": "𝓎", - "YUcy;": "Ю", - "yucy;": "ю", - "Yuml;": "Ÿ", - "yuml;": "ÿ", - "Zdot;": "Ż", - "zdot;": "ż", - "Zeta;": "Ζ", - "zeta;": "ζ", - "ZHcy;": "Ж", - "zhcy;": "ж", - "Zopf;": "ℤ", - "zopf;": "𝕫", - "Zscr;": "𝒵", - "zscr;": "𝓏", - "zwnj;": "‌", - Aacute: "Á", - aacute: "á", - "Acirc;": "Â", - "acirc;": "â", - "acute;": "´", - "AElig;": "Æ", - "aelig;": "æ", - Agrave: "À", - agrave: "à", - "aleph;": "ℵ", - "Alpha;": "Α", - "alpha;": "α", - "Amacr;": "Ā", - "amacr;": "ā", - "amalg;": "⨿", - "angle;": "∠", - "angrt;": "∟", - "angst;": "Å", - "Aogon;": "Ą", - "aogon;": "ą", - "Aring;": "Å", - "aring;": "å", - "asymp;": "≈", - Atilde: "Ã", - atilde: "ã", - "awint;": "⨑", - "bcong;": "≌", - "bdquo;": "„", - "bepsi;": "϶", - "blank;": "␣", - "blk12;": "▒", - "blk14;": "░", - "blk34;": "▓", - "block;": "█", - "boxDL;": "╗", - "boxDl;": "╖", - "boxdL;": "╕", - "boxdl;": "┐", - "boxDR;": "╔", - "boxDr;": "╓", - "boxdR;": "╒", - "boxdr;": "┌", - "boxHD;": "╦", - "boxHd;": "╤", - "boxhD;": "╥", - "boxhd;": "┬", - "boxHU;": "╩", - "boxHu;": "╧", - "boxhU;": "╨", - "boxhu;": "┴", - "boxUL;": "╝", - "boxUl;": "╜", - "boxuL;": "╛", - "boxul;": "┘", - "boxUR;": "╚", - "boxUr;": "╙", - "boxuR;": "╘", - "boxur;": "└", - "boxVH;": "╬", - "boxVh;": "╫", - "boxvH;": "╪", - "boxvh;": "┼", - "boxVL;": "╣", - "boxVl;": "╢", - "boxvL;": "╡", - "boxvl;": "┤", - "boxVR;": "╠", - "boxVr;": "╟", - "boxvR;": "╞", - "boxvr;": "├", - "Breve;": "˘", - "breve;": "˘", - brvbar: "¦", - "bsemi;": "⁏", - "bsime;": "⋍", - "bsolb;": "⧅", - "bumpE;": "⪮", - "bumpe;": "≏", - "caret;": "⁁", - "caron;": "ˇ", - "ccaps;": "⩍", - Ccedil: "Ç", - ccedil: "ç", - "Ccirc;": "Ĉ", - "ccirc;": "ĉ", - "ccups;": "⩌", - "cedil;": "¸", - "check;": "✓", - "clubs;": "♣", - "Colon;": "∷", - "colon;": ":", - "comma;": ",", - "crarr;": "↵", - "Cross;": "⨯", - "cross;": "✗", - "csube;": "⫑", - "csupe;": "⫒", - "ctdot;": "⋯", - "cuepr;": "⋞", - "cuesc;": "⋟", - "cupor;": "⩅", - curren: "¤", - "cuvee;": "⋎", - "cuwed;": "⋏", - "cwint;": "∱", - "Dashv;": "⫤", - "dashv;": "⊣", - "dblac;": "˝", - "ddarr;": "⇊", - "Delta;": "Δ", - "delta;": "δ", - "dharl;": "⇃", - "dharr;": "⇂", - "diams;": "♦", - "disin;": "⋲", - divide: "÷", - "doteq;": "≐", - "dtdot;": "⋱", - "dtrif;": "▾", - "duarr;": "⇵", - "duhar;": "⥯", - Eacute: "É", - eacute: "é", - "Ecirc;": "Ê", - "ecirc;": "ê", - "eDDot;": "⩷", - "efDot;": "≒", - Egrave: "È", - egrave: "è", - "Emacr;": "Ē", - "emacr;": "ē", - "empty;": "∅", - "Eogon;": "Ę", - "eogon;": "ę", - "eplus;": "⩱", - "epsiv;": "ϵ", - "eqsim;": "≂", - "Equal;": "⩵", - "equiv;": "≡", - "erarr;": "⥱", - "erDot;": "≓", - "esdot;": "≐", - "exist;": "∃", - "fflig;": "ff", - "filig;": "fi", - "fjlig;": "fj", - "fllig;": "fl", - "fltns;": "▱", - "forkv;": "⫙", - frac12: "½", - frac14: "¼", - frac34: "¾", - "frasl;": "⁄", - "frown;": "⌢", - "Gamma;": "Γ", - "gamma;": "γ", - "Gcirc;": "Ĝ", - "gcirc;": "ĝ", - "gescc;": "⪩", - "gimel;": "ℷ", - "gneqq;": "≩", - "gnsim;": "⋧", - "grave;": "`", - "gsime;": "⪎", - "gsiml;": "⪐", - "gtcir;": "⩺", - "gtdot;": "⋗", - "Hacek;": "ˇ", - "harrw;": "↭", - "Hcirc;": "Ĥ", - "hcirc;": "ĥ", - "hoarr;": "⇿", - Iacute: "Í", - iacute: "í", - "Icirc;": "Î", - "icirc;": "î", - "iexcl;": "¡", - Igrave: "Ì", - igrave: "ì", - "iiint;": "∭", - "iiota;": "℩", - "IJlig;": "IJ", - "ijlig;": "ij", - "Imacr;": "Ī", - "imacr;": "ī", - "image;": "ℑ", - "imath;": "ı", - "imped;": "Ƶ", - "infin;": "∞", - "Iogon;": "Į", - "iogon;": "į", - "iprod;": "⨼", - iquest: "¿", - "isinE;": "⋹", - "isins;": "⋴", - "isinv;": "∈", - "Iukcy;": "І", - "iukcy;": "і", - "Jcirc;": "Ĵ", - "jcirc;": "ĵ", - "jmath;": "ȷ", - "Jukcy;": "Є", - "jukcy;": "є", - "Kappa;": "Κ", - "kappa;": "κ", - "lAarr;": "⇚", - "langd;": "⦑", - "laquo;": "«", - "larrb;": "⇤", - "lates;": "⪭︀", - "lBarr;": "⤎", - "lbarr;": "⤌", - "lbbrk;": "❲", - "lbrke;": "⦋", - "lceil;": "⌈", - "ldquo;": "“", - "lescc;": "⪨", - "lhard;": "↽", - "lharu;": "↼", - "lhblk;": "▄", - "llarr;": "⇇", - "lltri;": "◺", - "lneqq;": "≨", - "lnsim;": "⋦", - "loang;": "⟬", - "loarr;": "⇽", - "lobrk;": "⟦", - "lopar;": "⦅", - "lrarr;": "⇆", - "lrhar;": "⇋", - "lrtri;": "⊿", - "lsime;": "⪍", - "lsimg;": "⪏", - "lsquo;": "‘", - "ltcir;": "⩹", - "ltdot;": "⋖", - "ltrie;": "⊴", - "ltrif;": "◂", - "mdash;": "—", - "mDDot;": "∺", - "micro;": "µ", - middot: "·", - "minus;": "−", - "mumap;": "⊸", - "nabla;": "∇", - "napid;": "≋̸", - "napos;": "ʼn", - "natur;": "♮", - "nbump;": "≎̸", - "ncong;": "≇", - "ndash;": "–", - "neArr;": "⇗", - "nearr;": "↗", - "nedot;": "≐̸", - "nesim;": "≂̸", - "ngeqq;": "≧̸", - "ngsim;": "≵", - "nhArr;": "⇎", - "nharr;": "↮", - "nhpar;": "⫲", - "nlArr;": "⇍", - "nlarr;": "↚", - "nleqq;": "≦̸", - "nless;": "≮", - "nlsim;": "≴", - "nltri;": "⋪", - "notin;": "∉", - "notni;": "∌", - "npart;": "∂̸", - "nprec;": "⊀", - "nrArr;": "⇏", - "nrarr;": "↛", - "nrtri;": "⋫", - "nsime;": "≄", - "nsmid;": "∤", - "nspar;": "∦", - "nsubE;": "⫅̸", - "nsube;": "⊈", - "nsucc;": "⊁", - "nsupE;": "⫆̸", - "nsupe;": "⊉", - Ntilde: "Ñ", - ntilde: "ñ", - "numsp;": " ", - "nvsim;": "∼⃒", - "nwArr;": "⇖", - "nwarr;": "↖", - Oacute: "Ó", - oacute: "ó", - "Ocirc;": "Ô", - "ocirc;": "ô", - "odash;": "⊝", - "OElig;": "Œ", - "oelig;": "œ", - "ofcir;": "⦿", - Ograve: "Ò", - ograve: "ò", - "ohbar;": "⦵", - "olarr;": "↺", - "olcir;": "⦾", - "oline;": "‾", - "Omacr;": "Ō", - "omacr;": "ō", - "Omega;": "Ω", - "omega;": "ω", - "operp;": "⦹", - "oplus;": "⊕", - "orarr;": "↻", - "order;": "ℴ", - Oslash: "Ø", - oslash: "ø", - Otilde: "Õ", - otilde: "õ", - "ovbar;": "⌽", - "parsl;": "⫽", - "phone;": "☎", - "plusb;": "⊞", - "pluse;": "⩲", - plusmn: "±", - "pound;": "£", - "prcue;": "≼", - "Prime;": "″", - "prime;": "′", - "prnap;": "⪹", - "prsim;": "≾", - "quest;": "?", - "rAarr;": "⇛", - "radic;": "√", - "rangd;": "⦒", - "range;": "⦥", - "raquo;": "»", - "rarrb;": "⇥", - "rarrc;": "⤳", - "rarrw;": "↝", - "ratio;": "∶", - "RBarr;": "⤐", - "rBarr;": "⤏", - "rbarr;": "⤍", - "rbbrk;": "❳", - "rbrke;": "⦌", - "rceil;": "⌉", - "rdquo;": "”", - "reals;": "ℝ", - "rhard;": "⇁", - "rharu;": "⇀", - "rlarr;": "⇄", - "rlhar;": "⇌", - "rnmid;": "⫮", - "roang;": "⟭", - "roarr;": "⇾", - "robrk;": "⟧", - "ropar;": "⦆", - "rrarr;": "⇉", - "rsquo;": "’", - "rtrie;": "⊵", - "rtrif;": "▸", - "sbquo;": "‚", - "sccue;": "≽", - "Scirc;": "Ŝ", - "scirc;": "ŝ", - "scnap;": "⪺", - "scsim;": "≿", - "sdotb;": "⊡", - "sdote;": "⩦", - "seArr;": "⇘", - "searr;": "↘", - "setmn;": "∖", - "sharp;": "♯", - "Sigma;": "Σ", - "sigma;": "σ", - "simeq;": "≃", - "simgE;": "⪠", - "simlE;": "⪟", - "simne;": "≆", - "slarr;": "←", - "smile;": "⌣", - "smtes;": "⪬︀", - "sqcap;": "⊓", - "sqcup;": "⊔", - "sqsub;": "⊏", - "sqsup;": "⊐", - "srarr;": "→", - "starf;": "★", - "strns;": "¯", - "subnE;": "⫋", - "subne;": "⊊", - "supnE;": "⫌", - "supne;": "⊋", - "swArr;": "⇙", - "swarr;": "↙", - "szlig;": "ß", - "Theta;": "Θ", - "theta;": "θ", - "thkap;": "≈", - "THORN;": "Þ", - "thorn;": "þ", - "Tilde;": "∼", - "tilde;": "˜", - "times;": "×", - "TRADE;": "™", - "trade;": "™", - "trisb;": "⧍", - "TSHcy;": "Ћ", - "tshcy;": "ћ", - "twixt;": "≬", - Uacute: "Ú", - uacute: "ú", - "Ubrcy;": "Ў", - "ubrcy;": "ў", - "Ucirc;": "Û", - "ucirc;": "û", - "udarr;": "⇅", - "udhar;": "⥮", - Ugrave: "Ù", - ugrave: "ù", - "uharl;": "↿", - "uharr;": "↾", - "uhblk;": "▀", - "ultri;": "◸", - "Umacr;": "Ū", - "umacr;": "ū", - "Union;": "⋃", - "Uogon;": "Ų", - "uogon;": "ų", - "uplus;": "⊎", - "upsih;": "ϒ", - "UpTee;": "⊥", - "Uring;": "Ů", - "uring;": "ů", - "urtri;": "◹", - "utdot;": "⋰", - "utrif;": "▴", - "uuarr;": "⇈", - "varpi;": "ϖ", - "vBarv;": "⫩", - "VDash;": "⊫", - "Vdash;": "⊩", - "vDash;": "⊨", - "vdash;": "⊢", - "veeeq;": "≚", - "vltri;": "⊲", - "vnsub;": "⊂⃒", - "vnsup;": "⊃⃒", - "vprop;": "∝", - "vrtri;": "⊳", - "Wcirc;": "Ŵ", - "wcirc;": "ŵ", - "Wedge;": "⋀", - "wedge;": "∧", - "xcirc;": "◯", - "xdtri;": "▽", - "xhArr;": "⟺", - "xharr;": "⟷", - "xlArr;": "⟸", - "xlarr;": "⟵", - "xodot;": "⨀", - "xrArr;": "⟹", - "xrarr;": "⟶", - "xutri;": "△", - Yacute: "Ý", - yacute: "ý", - "Ycirc;": "Ŷ", - "ycirc;": "ŷ", - "Aacute;": "Á", - "aacute;": "á", - "Abreve;": "Ă", - "abreve;": "ă", - "Agrave;": "À", - "agrave;": "à", - "andand;": "⩕", - "angmsd;": "∡", - "angsph;": "∢", - "apacir;": "⩯", - "approx;": "≈", - "Assign;": "≔", - "Atilde;": "Ã", - "atilde;": "ã", - "barvee;": "⊽", - "Barwed;": "⌆", - "barwed;": "⌅", - "becaus;": "∵", - "bernou;": "ℬ", - "bigcap;": "⋂", - "bigcup;": "⋃", - "bigvee;": "⋁", - "bkarow;": "⤍", - "bottom;": "⊥", - "bowtie;": "⋈", - "boxbox;": "⧉", - "bprime;": "‵", - "brvbar;": "¦", - "bullet;": "•", - "Bumpeq;": "≎", - "bumpeq;": "≏", - "Cacute;": "Ć", - "cacute;": "ć", - "capand;": "⩄", - "capcap;": "⩋", - "capcup;": "⩇", - "capdot;": "⩀", - "Ccaron;": "Č", - "ccaron;": "č", - "Ccedil;": "Ç", - "ccedil;": "ç", - "circeq;": "≗", - "cirmid;": "⫯", - "Colone;": "⩴", - "colone;": "≔", - "commat;": "@", - "compfn;": "∘", - "Conint;": "∯", - "conint;": "∮", - "coprod;": "∐", - "copysr;": "℗", - "cularr;": "↶", - "CupCap;": "≍", - "cupcap;": "⩆", - "cupcup;": "⩊", - "cupdot;": "⊍", - "curarr;": "↷", - "curren;": "¤", - "cylcty;": "⌭", - "Dagger;": "‡", - "dagger;": "†", - "daleth;": "ℸ", - "Dcaron;": "Ď", - "dcaron;": "ď", - "dfisht;": "⥿", - "divide;": "÷", - "divonx;": "⋇", - "dlcorn;": "⌞", - "dlcrop;": "⌍", - "dollar;": "$", - "DotDot;": "⃜", - "drcorn;": "⌟", - "drcrop;": "⌌", - "Dstrok;": "Đ", - "dstrok;": "đ", - "Eacute;": "É", - "eacute;": "é", - "easter;": "⩮", - "Ecaron;": "Ě", - "ecaron;": "ě", - "ecolon;": "≕", - "Egrave;": "È", - "egrave;": "è", - "egsdot;": "⪘", - "elsdot;": "⪗", - "emptyv;": "∅", - "emsp13;": " ", - "emsp14;": " ", - "eparsl;": "⧣", - "eqcirc;": "≖", - "equals;": "=", - "equest;": "≟", - "Exists;": "∃", - "female;": "♀", - "ffilig;": "ffi", - "ffllig;": "ffl", - "ForAll;": "∀", - "forall;": "∀", - "frac12;": "½", - "frac13;": "⅓", - "frac14;": "¼", - "frac15;": "⅕", - "frac16;": "⅙", - "frac18;": "⅛", - "frac23;": "⅔", - "frac25;": "⅖", - "frac34;": "¾", - "frac35;": "⅗", - "frac38;": "⅜", - "frac45;": "⅘", - "frac56;": "⅚", - "frac58;": "⅝", - "frac78;": "⅞", - "gacute;": "ǵ", - "Gammad;": "Ϝ", - "gammad;": "ϝ", - "Gbreve;": "Ğ", - "gbreve;": "ğ", - "Gcedil;": "Ģ", - "gesdot;": "⪀", - "gesles;": "⪔", - "gtlPar;": "⦕", - "gtrarr;": "⥸", - "gtrdot;": "⋗", - "gtrsim;": "≳", - "hairsp;": " ", - "hamilt;": "ℋ", - "HARDcy;": "Ъ", - "hardcy;": "ъ", - "hearts;": "♥", - "hellip;": "…", - "hercon;": "⊹", - "homtht;": "∻", - "horbar;": "―", - "hslash;": "ℏ", - "Hstrok;": "Ħ", - "hstrok;": "ħ", - "hybull;": "⁃", - "hyphen;": "‐", - "Iacute;": "Í", - "iacute;": "í", - "Igrave;": "Ì", - "igrave;": "ì", - "iiiint;": "⨌", - "iinfin;": "⧜", - "incare;": "℅", - "inodot;": "ı", - "intcal;": "⊺", - "iquest;": "¿", - "isinsv;": "⋳", - "Itilde;": "Ĩ", - "itilde;": "ĩ", - "Jsercy;": "Ј", - "jsercy;": "ј", - "kappav;": "ϰ", - "Kcedil;": "Ķ", - "kcedil;": "ķ", - "kgreen;": "ĸ", - "Lacute;": "Ĺ", - "lacute;": "ĺ", - "lagran;": "ℒ", - "Lambda;": "Λ", - "lambda;": "λ", - "langle;": "⟨", - "larrfs;": "⤝", - "larrhk;": "↩", - "larrlp;": "↫", - "larrpl;": "⤹", - "larrtl;": "↢", - "lAtail;": "⤛", - "latail;": "⤙", - "lbrace;": "{", - "lbrack;": "[", - "Lcaron;": "Ľ", - "lcaron;": "ľ", - "Lcedil;": "Ļ", - "lcedil;": "ļ", - "ldquor;": "„", - "lesdot;": "⩿", - "lesges;": "⪓", - "lfisht;": "⥼", - "lfloor;": "⌊", - "lharul;": "⥪", - "llhard;": "⥫", - "Lmidot;": "Ŀ", - "lmidot;": "ŀ", - "lmoust;": "⎰", - "loplus;": "⨭", - "lowast;": "∗", - "lowbar;": "_", - "lparlt;": "⦓", - "lrhard;": "⥭", - "lsaquo;": "‹", - "lsquor;": "‚", - "Lstrok;": "Ł", - "lstrok;": "ł", - "lthree;": "⋋", - "ltimes;": "⋉", - "ltlarr;": "⥶", - "ltrPar;": "⦖", - "mapsto;": "↦", - "marker;": "▮", - "mcomma;": "⨩", - "midast;": "*", - "midcir;": "⫰", - "middot;": "·", - "minusb;": "⊟", - "minusd;": "∸", - "mnplus;": "∓", - "models;": "⊧", - "mstpos;": "∾", - "Nacute;": "Ń", - "nacute;": "ń", - "nbumpe;": "≏̸", - "Ncaron;": "Ň", - "ncaron;": "ň", - "Ncedil;": "Ņ", - "ncedil;": "ņ", - "nearhk;": "⤤", - "nequiv;": "≢", - "nesear;": "⤨", - "nexist;": "∄", - "nltrie;": "⋬", - "notinE;": "⋹̸", - "nparsl;": "⫽⃥", - "nprcue;": "⋠", - "nrarrc;": "⤳̸", - "nrarrw;": "↝̸", - "nrtrie;": "⋭", - "nsccue;": "⋡", - "nsimeq;": "≄", - "Ntilde;": "Ñ", - "ntilde;": "ñ", - "numero;": "№", - "nVDash;": "⊯", - "nVdash;": "⊮", - "nvDash;": "⊭", - "nvdash;": "⊬", - "nvHarr;": "⤄", - "nvlArr;": "⤂", - "nvrArr;": "⤃", - "nwarhk;": "⤣", - "nwnear;": "⤧", - "Oacute;": "Ó", - "oacute;": "ó", - "Odblac;": "Ő", - "odblac;": "ő", - "odsold;": "⦼", - "Ograve;": "Ò", - "ograve;": "ò", - "ominus;": "⊖", - "origof;": "⊶", - "Oslash;": "Ø", - "oslash;": "ø", - "Otilde;": "Õ", - "otilde;": "õ", - "Otimes;": "⨷", - "otimes;": "⊗", - "parsim;": "⫳", - "percnt;": "%", - "period;": ".", - "permil;": "‰", - "phmmat;": "ℳ", - "planck;": "ℏ", - "plankv;": "ℏ", - "plusdo;": "∔", - "plusdu;": "⨥", - "plusmn;": "±", - "preceq;": "⪯", - "primes;": "ℙ", - "prnsim;": "⋨", - "propto;": "∝", - "prurel;": "⊰", - "puncsp;": " ", - "qprime;": "⁗", - "Racute;": "Ŕ", - "racute;": "ŕ", - "rangle;": "⟩", - "rarrap;": "⥵", - "rarrfs;": "⤞", - "rarrhk;": "↪", - "rarrlp;": "↬", - "rarrpl;": "⥅", - "Rarrtl;": "⤖", - "rarrtl;": "↣", - "rAtail;": "⤜", - "ratail;": "⤚", - "rbrace;": "}", - "rbrack;": "]", - "Rcaron;": "Ř", - "rcaron;": "ř", - "Rcedil;": "Ŗ", - "rcedil;": "ŗ", - "rdquor;": "”", - "rfisht;": "⥽", - "rfloor;": "⌋", - "rharul;": "⥬", - "rmoust;": "⎱", - "roplus;": "⨮", - "rpargt;": "⦔", - "rsaquo;": "›", - "rsquor;": "’", - "rthree;": "⋌", - "rtimes;": "⋊", - "Sacute;": "Ś", - "sacute;": "ś", - "Scaron;": "Š", - "scaron;": "š", - "Scedil;": "Ş", - "scedil;": "ş", - "scnsim;": "⋩", - "searhk;": "⤥", - "seswar;": "⤩", - "sfrown;": "⌢", - "SHCHcy;": "Щ", - "shchcy;": "щ", - "sigmaf;": "ς", - "sigmav;": "ς", - "simdot;": "⩪", - "smashp;": "⨳", - "SOFTcy;": "Ь", - "softcy;": "ь", - "solbar;": "⌿", - "spades;": "♠", - "sqcaps;": "⊓︀", - "sqcups;": "⊔︀", - "sqsube;": "⊑", - "sqsupe;": "⊒", - "Square;": "□", - "square;": "□", - "squarf;": "▪", - "ssetmn;": "∖", - "ssmile;": "⌣", - "sstarf;": "⋆", - "subdot;": "⪽", - "Subset;": "⋐", - "subset;": "⊂", - "subsim;": "⫇", - "subsub;": "⫕", - "subsup;": "⫓", - "succeq;": "⪰", - "supdot;": "⪾", - "Supset;": "⋑", - "supset;": "⊃", - "supsim;": "⫈", - "supsub;": "⫔", - "supsup;": "⫖", - "swarhk;": "⤦", - "swnwar;": "⤪", - "target;": "⌖", - "Tcaron;": "Ť", - "tcaron;": "ť", - "Tcedil;": "Ţ", - "tcedil;": "ţ", - "telrec;": "⌕", - "there4;": "∴", - "thetav;": "ϑ", - "thinsp;": " ", - "thksim;": "∼", - "timesb;": "⊠", - "timesd;": "⨰", - "topbot;": "⌶", - "topcir;": "⫱", - "tprime;": "‴", - "tridot;": "◬", - "Tstrok;": "Ŧ", - "tstrok;": "ŧ", - "Uacute;": "Ú", - "uacute;": "ú", - "Ubreve;": "Ŭ", - "ubreve;": "ŭ", - "Udblac;": "Ű", - "udblac;": "ű", - "ufisht;": "⥾", - "Ugrave;": "Ù", - "ugrave;": "ù", - "ulcorn;": "⌜", - "ulcrop;": "⌏", - "urcorn;": "⌝", - "urcrop;": "⌎", - "Utilde;": "Ũ", - "utilde;": "ũ", - "vangrt;": "⦜", - "varphi;": "ϕ", - "varrho;": "ϱ", - "Vdashl;": "⫦", - "veebar;": "⊻", - "vellip;": "⋮", - "Verbar;": "‖", - "verbar;": "|", - "vsubnE;": "⫋︀", - "vsubne;": "⊊︀", - "vsupnE;": "⫌︀", - "vsupne;": "⊋︀", - "Vvdash;": "⊪", - "wedbar;": "⩟", - "wedgeq;": "≙", - "weierp;": "℘", - "wreath;": "≀", - "xoplus;": "⨁", - "xotime;": "⨂", - "xsqcup;": "⨆", - "xuplus;": "⨄", - "xwedge;": "⋀", - "Yacute;": "Ý", - "yacute;": "ý", - "Zacute;": "Ź", - "zacute;": "ź", - "Zcaron;": "Ž", - "zcaron;": "ž", - "zeetrf;": "ℨ", - "alefsym;": "ℵ", - "angrtvb;": "⊾", - "angzarr;": "⍼", - "asympeq;": "≍", - "backsim;": "∽", - "Because;": "∵", - "because;": "∵", - "bemptyv;": "⦰", - "between;": "≬", - "bigcirc;": "◯", - "bigodot;": "⨀", - "bigstar;": "★", - "bnequiv;": "≡⃥", - "boxplus;": "⊞", - "Cayleys;": "ℭ", - "Cconint;": "∰", - "ccupssm;": "⩐", - "Cedilla;": "¸", - "cemptyv;": "⦲", - "cirscir;": "⧂", - "coloneq;": "≔", - "congdot;": "⩭", - "cudarrl;": "⤸", - "cudarrr;": "⤵", - "cularrp;": "⤽", - "curarrm;": "⤼", - "dbkarow;": "⤏", - "ddagger;": "‡", - "ddotseq;": "⩷", - "demptyv;": "⦱", - "Diamond;": "⋄", - "diamond;": "⋄", - "digamma;": "ϝ", - "dotplus;": "∔", - "DownTee;": "⊤", - "dwangle;": "⦦", - "Element;": "∈", - "Epsilon;": "Ε", - "epsilon;": "ε", - "eqcolon;": "≕", - "equivDD;": "⩸", - "gesdoto;": "⪂", - "gtquest;": "⩼", - "gtrless;": "≷", - "harrcir;": "⥈", - "Implies;": "⇒", - "intprod;": "⨼", - "isindot;": "⋵", - "larrbfs;": "⤟", - "larrsim;": "⥳", - "lbrksld;": "⦏", - "lbrkslu;": "⦍", - "ldrdhar;": "⥧", - "LeftTee;": "⊣", - "lesdoto;": "⪁", - "lessdot;": "⋖", - "lessgtr;": "≶", - "lesssim;": "≲", - "lotimes;": "⨴", - "lozenge;": "◊", - "ltquest;": "⩻", - "luruhar;": "⥦", - "maltese;": "✠", - "minusdu;": "⨪", - "napprox;": "≉", - "natural;": "♮", - "nearrow;": "↗", - "NewLine;": "\n", - "nexists;": "∄", - "NoBreak;": "⁠", - "notinva;": "∉", - "notinvb;": "⋷", - "notinvc;": "⋶", - "NotLess;": "≮", - "notniva;": "∌", - "notnivb;": "⋾", - "notnivc;": "⋽", - "npolint;": "⨔", - "npreceq;": "⪯̸", - "nsqsube;": "⋢", - "nsqsupe;": "⋣", - "nsubset;": "⊂⃒", - "nsucceq;": "⪰̸", - "nsupset;": "⊃⃒", - "nvinfin;": "⧞", - "nvltrie;": "⊴⃒", - "nvrtrie;": "⊵⃒", - "nwarrow;": "↖", - "olcross;": "⦻", - "Omicron;": "Ο", - "omicron;": "ο", - "orderof;": "ℴ", - "orslope;": "⩗", - "OverBar;": "‾", - "pertenk;": "‱", - "planckh;": "ℎ", - "pluscir;": "⨢", - "plussim;": "⨦", - "plustwo;": "⨧", - "precsim;": "≾", - "Product;": "∏", - "quatint;": "⨖", - "questeq;": "≟", - "rarrbfs;": "⤠", - "rarrsim;": "⥴", - "rbrksld;": "⦎", - "rbrkslu;": "⦐", - "rdldhar;": "⥩", - "realine;": "ℛ", - "rotimes;": "⨵", - "ruluhar;": "⥨", - "searrow;": "↘", - "simplus;": "⨤", - "simrarr;": "⥲", - "subedot;": "⫃", - "submult;": "⫁", - "subplus;": "⪿", - "subrarr;": "⥹", - "succsim;": "≿", - "supdsub;": "⫘", - "supedot;": "⫄", - "suphsol;": "⟉", - "suphsub;": "⫗", - "suplarr;": "⥻", - "supmult;": "⫂", - "supplus;": "⫀", - "swarrow;": "↙", - "topfork;": "⫚", - "triplus;": "⨹", - "tritime;": "⨻", - "UpArrow;": "↑", - "Uparrow;": "⇑", - "uparrow;": "↑", - "Upsilon;": "Υ", - "upsilon;": "υ", - "uwangle;": "⦧", - "vzigzag;": "⦚", - "zigrarr;": "⇝", - "andslope;": "⩘", - "angmsdaa;": "⦨", - "angmsdab;": "⦩", - "angmsdac;": "⦪", - "angmsdad;": "⦫", - "angmsdae;": "⦬", - "angmsdaf;": "⦭", - "angmsdag;": "⦮", - "angmsdah;": "⦯", - "angrtvbd;": "⦝", - "approxeq;": "≊", - "awconint;": "∳", - "backcong;": "≌", - "barwedge;": "⌅", - "bbrktbrk;": "⎶", - "bigoplus;": "⨁", - "bigsqcup;": "⨆", - "biguplus;": "⨄", - "bigwedge;": "⋀", - "boxminus;": "⊟", - "boxtimes;": "⊠", - "bsolhsub;": "⟈", - "capbrcup;": "⩉", - "circledR;": "®", - "circledS;": "Ⓢ", - "cirfnint;": "⨐", - "clubsuit;": "♣", - "cupbrcap;": "⩈", - "curlyvee;": "⋎", - "cwconint;": "∲", - "DDotrahd;": "⤑", - "doteqdot;": "≑", - "DotEqual;": "≐", - "dotminus;": "∸", - "drbkarow;": "⤐", - "dzigrarr;": "⟿", - "elinters;": "⏧", - "emptyset;": "∅", - "eqvparsl;": "⧥", - "fpartint;": "⨍", - "geqslant;": "⩾", - "gesdotol;": "⪄", - "gnapprox;": "⪊", - "hksearow;": "⤥", - "hkswarow;": "⤦", - "imagline;": "ℐ", - "imagpart;": "ℑ", - "infintie;": "⧝", - "integers;": "ℤ", - "Integral;": "∫", - "intercal;": "⊺", - "intlarhk;": "⨗", - "laemptyv;": "⦴", - "ldrushar;": "⥋", - "leqslant;": "⩽", - "lesdotor;": "⪃", - "LessLess;": "⪡", - "llcorner;": "⌞", - "lnapprox;": "⪉", - "lrcorner;": "⌟", - "lurdshar;": "⥊", - "mapstoup;": "↥", - "multimap;": "⊸", - "naturals;": "ℕ", - "ncongdot;": "⩭̸", - "NotEqual;": "≠", - "notindot;": "⋵̸", - "NotTilde;": "≁", - "otimesas;": "⨶", - "parallel;": "∥", - "PartialD;": "∂", - "plusacir;": "⨣", - "pointint;": "⨕", - "Precedes;": "≺", - "precneqq;": "⪵", - "precnsim;": "⋨", - "profalar;": "⌮", - "profline;": "⌒", - "profsurf;": "⌓", - "raemptyv;": "⦳", - "realpart;": "ℜ", - "RightTee;": "⊢", - "rppolint;": "⨒", - "rtriltri;": "⧎", - "scpolint;": "⨓", - "setminus;": "∖", - "shortmid;": "∣", - "smeparsl;": "⧤", - "sqsubset;": "⊏", - "sqsupset;": "⊐", - "subseteq;": "⊆", - "Succeeds;": "≻", - "succneqq;": "⪶", - "succnsim;": "⋩", - "SuchThat;": "∋", - "Superset;": "⊃", - "supseteq;": "⊇", - "thetasym;": "ϑ", - "thicksim;": "∼", - "timesbar;": "⨱", - "triangle;": "▵", - "triminus;": "⨺", - "trpezium;": "⏢", - "Uarrocir;": "⥉", - "ulcorner;": "⌜", - "UnderBar;": "_", - "urcorner;": "⌝", - "varkappa;": "ϰ", - "varsigma;": "ς", - "vartheta;": "ϑ", - "backprime;": "‵", - "backsimeq;": "⋍", - "Backslash;": "∖", - "bigotimes;": "⨂", - "CenterDot;": "·", - "centerdot;": "·", - "checkmark;": "✓", - "CircleDot;": "⊙", - "complexes;": "ℂ", - "Congruent;": "≡", - "Coproduct;": "∐", - "dotsquare;": "⊡", - "DoubleDot;": "¨", - "DownArrow;": "↓", - "Downarrow;": "⇓", - "downarrow;": "↓", - "DownBreve;": "̑", - "gtrapprox;": "⪆", - "gtreqless;": "⋛", - "gvertneqq;": "≩︀", - "heartsuit;": "♥", - "HumpEqual;": "≏", - "LeftArrow;": "←", - "Leftarrow;": "⇐", - "leftarrow;": "←", - "LeftFloor;": "⌊", - "lesseqgtr;": "⋚", - "LessTilde;": "≲", - "lvertneqq;": "≨︀", - "Mellintrf;": "ℳ", - "MinusPlus;": "∓", - "ngeqslant;": "⩾̸", - "nleqslant;": "⩽̸", - "NotCupCap;": "≭", - "NotExists;": "∄", - "NotSubset;": "⊂⃒", - "nparallel;": "∦", - "nshortmid;": "∤", - "nsubseteq;": "⊈", - "nsupseteq;": "⊉", - "OverBrace;": "⏞", - "pitchfork;": "⋔", - "PlusMinus;": "±", - "rationals;": "ℚ", - "spadesuit;": "♠", - "subseteqq;": "⫅", - "subsetneq;": "⊊", - "supseteqq;": "⫆", - "supsetneq;": "⊋", - "Therefore;": "∴", - "therefore;": "∴", - "ThinSpace;": " ", - "triangleq;": "≜", - "TripleDot;": "⃛", - "UnionPlus;": "⊎", - "varpropto;": "∝", - "Bernoullis;": "ℬ", - "circledast;": "⊛", - "CirclePlus;": "⊕", - "complement;": "∁", - "curlywedge;": "⋏", - "eqslantgtr;": "⪖", - "EqualTilde;": "≂", - "Fouriertrf;": "ℱ", - "gtreqqless;": "⪌", - "ImaginaryI;": "ⅈ", - "Laplacetrf;": "ℒ", - "LeftVector;": "↼", - "lessapprox;": "⪅", - "lesseqqgtr;": "⪋", - "Lleftarrow;": "⇚", - "lmoustache;": "⎰", - "longmapsto;": "⟼", - "mapstodown;": "↧", - "mapstoleft;": "↤", - "nLeftarrow;": "⇍", - "nleftarrow;": "↚", - "NotElement;": "∉", - "NotGreater;": "≯", - "nsubseteqq;": "⫅̸", - "nsupseteqq;": "⫆̸", - "precapprox;": "⪷", - "Proportion;": "∷", - "RightArrow;": "→", - "Rightarrow;": "⇒", - "rightarrow;": "→", - "RightFloor;": "⌋", - "rmoustache;": "⎱", - "sqsubseteq;": "⊑", - "sqsupseteq;": "⊒", - "subsetneqq;": "⫋", - "succapprox;": "⪸", - "supsetneqq;": "⫌", - "ThickSpace;": "  ", - "TildeEqual;": "≃", - "TildeTilde;": "≈", - "UnderBrace;": "⏟", - "UpArrowBar;": "⤒", - "UpTeeArrow;": "↥", - "upuparrows;": "⇈", - "varepsilon;": "ϵ", - "varnothing;": "∅", - "backepsilon;": "϶", - "blacksquare;": "▪", - "circledcirc;": "⊚", - "circleddash;": "⊝", - "CircleMinus;": "⊖", - "CircleTimes;": "⊗", - "curlyeqprec;": "⋞", - "curlyeqsucc;": "⋟", - "diamondsuit;": "♦", - "eqslantless;": "⪕", - "Equilibrium;": "⇌", - "expectation;": "ℰ", - "GreaterLess;": "≷", - "LeftCeiling;": "⌈", - "LessGreater;": "≶", - "MediumSpace;": " ", - "NotLessLess;": "≪̸", - "NotPrecedes;": "⊀", - "NotSucceeds;": "⊁", - "NotSuperset;": "⊃⃒", - "nRightarrow;": "⇏", - "nrightarrow;": "↛", - "OverBracket;": "⎴", - "preccurlyeq;": "≼", - "precnapprox;": "⪹", - "quaternions;": "ℍ", - "RightVector;": "⇀", - "Rrightarrow;": "⇛", - "RuleDelayed;": "⧴", - "SmallCircle;": "∘", - "SquareUnion;": "⊔", - "straightphi;": "ϕ", - "SubsetEqual;": "⊆", - "succcurlyeq;": "≽", - "succnapprox;": "⪺", - "thickapprox;": "≈", - "UpDownArrow;": "↕", - "Updownarrow;": "⇕", - "updownarrow;": "↕", - "VerticalBar;": "∣", - "blacklozenge;": "⧫", - "DownArrowBar;": "⤓", - "DownTeeArrow;": "↧", - "ExponentialE;": "ⅇ", - "exponentiale;": "ⅇ", - "GreaterEqual;": "≥", - "GreaterTilde;": "≳", - "HilbertSpace;": "ℋ", - "HumpDownHump;": "≎", - "Intersection;": "⋂", - "LeftArrowBar;": "⇤", - "LeftTeeArrow;": "↤", - "LeftTriangle;": "⊲", - "LeftUpVector;": "↿", - "NotCongruent;": "≢", - "NotHumpEqual;": "≏̸", - "NotLessEqual;": "≰", - "NotLessTilde;": "≴", - "Proportional;": "∝", - "RightCeiling;": "⌉", - "risingdotseq;": "≓", - "RoundImplies;": "⥰", - "ShortUpArrow;": "↑", - "SquareSubset;": "⊏", - "triangledown;": "▿", - "triangleleft;": "◃", - "UnderBracket;": "⎵", - "varsubsetneq;": "⊊︀", - "varsupsetneq;": "⊋︀", - "VerticalLine;": "|", - "ApplyFunction;": "⁡", - "bigtriangleup;": "△", - "blacktriangle;": "▴", - "DifferentialD;": "ⅆ", - "divideontimes;": "⋇", - "DoubleLeftTee;": "⫤", - "DoubleUpArrow;": "⇑", - "fallingdotseq;": "≒", - "hookleftarrow;": "↩", - "leftarrowtail;": "↢", - "leftharpoonup;": "↼", - "LeftTeeVector;": "⥚", - "LeftVectorBar;": "⥒", - "LessFullEqual;": "≦", - "LongLeftArrow;": "⟵", - "Longleftarrow;": "⟸", - "longleftarrow;": "⟵", - "looparrowleft;": "↫", - "measuredangle;": "∡", - "NotEqualTilde;": "≂̸", - "NotTildeEqual;": "≄", - "NotTildeTilde;": "≉", - "ntriangleleft;": "⋪", - "Poincareplane;": "ℌ", - "PrecedesEqual;": "⪯", - "PrecedesTilde;": "≾", - "RightArrowBar;": "⇥", - "RightTeeArrow;": "↦", - "RightTriangle;": "⊳", - "RightUpVector;": "↾", - "shortparallel;": "∥", - "smallsetminus;": "∖", - "SucceedsEqual;": "⪰", - "SucceedsTilde;": "≿", - "SupersetEqual;": "⊇", - "triangleright;": "▹", - "UpEquilibrium;": "⥮", - "upharpoonleft;": "↿", - "varsubsetneqq;": "⫋︀", - "varsupsetneqq;": "⫌︀", - "VerticalTilde;": "≀", - "VeryThinSpace;": " ", - "curvearrowleft;": "↶", - "DiacriticalDot;": "˙", - "doublebarwedge;": "⌆", - "DoubleRightTee;": "⊨", - "downdownarrows;": "⇊", - "DownLeftVector;": "↽", - "GreaterGreater;": "⪢", - "hookrightarrow;": "↪", - "HorizontalLine;": "─", - "InvisibleComma;": "⁣", - "InvisibleTimes;": "⁢", - "LeftDownVector;": "⇃", - "leftleftarrows;": "⇇", - "LeftRightArrow;": "↔", - "Leftrightarrow;": "⇔", - "leftrightarrow;": "↔", - "leftthreetimes;": "⋋", - "LessSlantEqual;": "⩽", - "LongRightArrow;": "⟶", - "Longrightarrow;": "⟹", - "longrightarrow;": "⟶", - "looparrowright;": "↬", - "LowerLeftArrow;": "↙", - "NestedLessLess;": "≪", - "NotGreaterLess;": "≹", - "NotLessGreater;": "≸", - "NotSubsetEqual;": "⊈", - "NotVerticalBar;": "∤", - "nshortparallel;": "∦", - "ntriangleright;": "⋫", - "OpenCurlyQuote;": "‘", - "ReverseElement;": "∋", - "rightarrowtail;": "↣", - "rightharpoonup;": "⇀", - "RightTeeVector;": "⥛", - "RightVectorBar;": "⥓", - "ShortDownArrow;": "↓", - "ShortLeftArrow;": "←", - "SquareSuperset;": "⊐", - "TildeFullEqual;": "≅", - "trianglelefteq;": "⊴", - "upharpoonright;": "↾", - "UpperLeftArrow;": "↖", - "ZeroWidthSpace;": "​", - "bigtriangledown;": "▽", - "circlearrowleft;": "↺", - "CloseCurlyQuote;": "’", - "ContourIntegral;": "∮", - "curvearrowright;": "↷", - "DoubleDownArrow;": "⇓", - "DoubleLeftArrow;": "⇐", - "downharpoonleft;": "⇃", - "DownRightVector;": "⇁", - "leftharpoondown;": "↽", - "leftrightarrows;": "⇆", - "LeftRightVector;": "⥎", - "LeftTriangleBar;": "⧏", - "LeftUpTeeVector;": "⥠", - "LeftUpVectorBar;": "⥘", - "LowerRightArrow;": "↘", - "nLeftrightarrow;": "⇎", - "nleftrightarrow;": "↮", - "NotGreaterEqual;": "≱", - "NotGreaterTilde;": "≵", - "NotHumpDownHump;": "≎̸", - "NotLeftTriangle;": "⋪", - "NotSquareSubset;": "⊏̸", - "ntrianglelefteq;": "⋬", - "OverParenthesis;": "⏜", - "RightDownVector;": "⇂", - "rightleftarrows;": "⇄", - "rightsquigarrow;": "↝", - "rightthreetimes;": "⋌", - "ShortRightArrow;": "→", - "straightepsilon;": "ϵ", - "trianglerighteq;": "⊵", - "UpperRightArrow;": "↗", - "vartriangleleft;": "⊲", - "circlearrowright;": "↻", - "DiacriticalAcute;": "´", - "DiacriticalGrave;": "`", - "DiacriticalTilde;": "˜", - "DoubleRightArrow;": "⇒", - "DownArrowUpArrow;": "⇵", - "downharpoonright;": "⇂", - "EmptySmallSquare;": "◻", - "GreaterEqualLess;": "⋛", - "GreaterFullEqual;": "≧", - "LeftAngleBracket;": "⟨", - "LeftUpDownVector;": "⥑", - "LessEqualGreater;": "⋚", - "NonBreakingSpace;": " ", - "NotPrecedesEqual;": "⪯̸", - "NotRightTriangle;": "⋫", - "NotSucceedsEqual;": "⪰̸", - "NotSucceedsTilde;": "≿̸", - "NotSupersetEqual;": "⊉", - "ntrianglerighteq;": "⋭", - "rightharpoondown;": "⇁", - "rightrightarrows;": "⇉", - "RightTriangleBar;": "⧐", - "RightUpTeeVector;": "⥜", - "RightUpVectorBar;": "⥔", - "twoheadleftarrow;": "↞", - "UnderParenthesis;": "⏝", - "UpArrowDownArrow;": "⇅", - "vartriangleright;": "⊳", - "blacktriangledown;": "▾", - "blacktriangleleft;": "◂", - "DoubleUpDownArrow;": "⇕", - "DoubleVerticalBar;": "∥", - "DownLeftTeeVector;": "⥞", - "DownLeftVectorBar;": "⥖", - "FilledSmallSquare;": "◼", - "GreaterSlantEqual;": "⩾", - "LeftDoubleBracket;": "⟦", - "LeftDownTeeVector;": "⥡", - "LeftDownVectorBar;": "⥙", - "leftrightharpoons;": "⇋", - "LeftTriangleEqual;": "⊴", - "NegativeThinSpace;": "​", - "NotGreaterGreater;": "≫̸", - "NotLessSlantEqual;": "⩽̸", - "NotNestedLessLess;": "⪡̸", - "NotReverseElement;": "∌", - "NotSquareSuperset;": "⊐̸", - "NotTildeFullEqual;": "≇", - "RightAngleBracket;": "⟩", - "rightleftharpoons;": "⇌", - "RightUpDownVector;": "⥏", - "SquareSubsetEqual;": "⊑", - "twoheadrightarrow;": "↠", - "VerticalSeparator;": "❘", - "blacktriangleright;": "▸", - "DownRightTeeVector;": "⥟", - "DownRightVectorBar;": "⥗", - "LongLeftRightArrow;": "⟷", - "Longleftrightarrow;": "⟺", - "longleftrightarrow;": "⟷", - "NegativeThickSpace;": "​", - "NotLeftTriangleBar;": "⧏̸", - "PrecedesSlantEqual;": "≼", - "ReverseEquilibrium;": "⇋", - "RightDoubleBracket;": "⟧", - "RightDownTeeVector;": "⥝", - "RightDownVectorBar;": "⥕", - "RightTriangleEqual;": "⊵", - "SquareIntersection;": "⊓", - "SucceedsSlantEqual;": "≽", - "DoubleLongLeftArrow;": "⟸", - "DownLeftRightVector;": "⥐", - "LeftArrowRightArrow;": "⇆", - "leftrightsquigarrow;": "↭", - "NegativeMediumSpace;": "​", - "NotGreaterFullEqual;": "≧̸", - "NotRightTriangleBar;": "⧐̸", - "RightArrowLeftArrow;": "⇄", - "SquareSupersetEqual;": "⊒", - "CapitalDifferentialD;": "ⅅ", - "DoubleLeftRightArrow;": "⇔", - "DoubleLongRightArrow;": "⟹", - "EmptyVerySmallSquare;": "▫", - "NestedGreaterGreater;": "≫", - "NotDoubleVerticalBar;": "∦", - "NotGreaterSlantEqual;": "⩾̸", - "NotLeftTriangleEqual;": "⋬", - "NotSquareSubsetEqual;": "⋢", - "OpenCurlyDoubleQuote;": "“", - "ReverseUpEquilibrium;": "⥯", - "CloseCurlyDoubleQuote;": "”", - "DoubleContourIntegral;": "∯", - "FilledVerySmallSquare;": "▪", - "NegativeVeryThinSpace;": "​", - "NotPrecedesSlantEqual;": "⋠", - "NotRightTriangleEqual;": "⋭", - "NotSucceedsSlantEqual;": "⋡", - "DiacriticalDoubleAcute;": "˝", - "NotSquareSupersetEqual;": "⋣", - "NotNestedGreaterGreater;": "⪢̸", - "ClockwiseContourIntegral;": "∲", - "DoubleLongLeftRightArrow;": "⟺", - "CounterClockwiseContourIntegral;": "∳" -}; - -let maxCRNameLength; -const decodeHtml = (rawText, asAttr) => { - let offset = 0; - const end = rawText.length; - let decodedText = ""; - function advance(length) { - offset += length; - rawText = rawText.slice(length); - } - while (offset < end) { - const head = /&(?:#x?)?/i.exec(rawText); - if (!head || offset + head.index >= end) { - const remaining = end - offset; - decodedText += rawText.slice(0, remaining); - advance(remaining); - break; - } - decodedText += rawText.slice(0, head.index); - advance(head.index); - if (head[0] === "&") { - let name = ""; - let value = void 0; - if (/[0-9a-z]/i.test(rawText[1])) { - if (!maxCRNameLength) { - maxCRNameLength = Object.keys(namedCharacterReferences).reduce( - (max, name2) => Math.max(max, name2.length), - 0 - ); - } - for (let length = maxCRNameLength; !value && length > 0; --length) { - name = rawText.slice(1, 1 + length); - value = namedCharacterReferences[name]; - } - if (value) { - const semi = name.endsWith(";"); - if (asAttr && !semi && /[=a-z0-9]/i.test(rawText[name.length + 1] || "")) { - decodedText += "&" + name; - advance(1 + name.length); - } else { - decodedText += value; - advance(1 + name.length); - } - } else { - decodedText += "&" + name; - advance(1 + name.length); - } - } else { - decodedText += "&"; - advance(1); - } - } else { - const hex = head[0] === "&#x"; - const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/; - const body = pattern.exec(rawText); - if (!body) { - decodedText += head[0]; - advance(head[0].length); - } else { - let cp = Number.parseInt(body[1], hex ? 16 : 10); - if (cp === 0) { - cp = 65533; - } else if (cp > 1114111) { - cp = 65533; - } else if (cp >= 55296 && cp <= 57343) { - cp = 65533; - } else if (cp >= 64976 && cp <= 65007 || (cp & 65534) === 65534) ; else if (cp >= 1 && cp <= 8 || cp === 11 || cp >= 13 && cp <= 31 || cp >= 127 && cp <= 159) { - cp = CCR_REPLACEMENTS[cp] || cp; - } - decodedText += String.fromCodePoint(cp); - advance(body[0].length); - } - } - } - return decodedText; -}; -const CCR_REPLACEMENTS = { - 128: 8364, - 130: 8218, - 131: 402, - 132: 8222, - 133: 8230, - 134: 8224, - 135: 8225, - 136: 710, - 137: 8240, - 138: 352, - 139: 8249, - 140: 338, - 142: 381, - 145: 8216, - 146: 8217, - 147: 8220, - 148: 8221, - 149: 8226, - 150: 8211, - 151: 8212, - 152: 732, - 153: 8482, - 154: 353, - 155: 8250, - 156: 339, - 158: 382, - 159: 376 -}; - -const isRawTextContainer = /* @__PURE__ */ shared.makeMap( - "style,iframe,script,noscript", - true -); -const parserOptions = { - isVoidTag: shared.isVoidTag, - isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag), - isPreTag: (tag) => tag === "pre", - decodeEntities: decodeHtml, - isBuiltInComponent: (tag) => { - if (compilerCore.isBuiltInType(tag, `Transition`)) { - return TRANSITION; - } else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) { - return TRANSITION_GROUP; - } - }, - // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher - getNamespace(tag, parent) { - let ns = parent ? parent.ns : 0; - if (parent && ns === 2) { - if (parent.tag === "annotation-xml") { - if (tag === "svg") { - return 1; - } - if (parent.props.some( - (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") - )) { - ns = 0; - } - } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { - ns = 0; - } - } else if (parent && ns === 1) { - if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { - ns = 0; - } - } - if (ns === 0) { - if (tag === "svg") { - return 1; - } - if (tag === "math") { - return 2; - } - } - return ns; - }, - // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments - getTextMode({ tag, ns }) { - if (ns === 0) { - if (tag === "textarea" || tag === "title") { - return 1; - } - if (isRawTextContainer(tag)) { - return 2; - } - } - return 0; - } -}; - -const transformStyle = (node) => { - if (node.type === 1) { - node.props.forEach((p, i) => { - if (p.type === 6 && p.name === "style" && p.value) { - node.props[i] = { - type: 7, - name: `bind`, - arg: compilerCore.createSimpleExpression(`style`, true, p.loc), - exp: parseInlineCSS(p.value.content, p.loc), - modifiers: [], - loc: p.loc - }; - } - }); - } -}; -const parseInlineCSS = (cssText, loc) => { - const normalized = shared.parseStringStyle(cssText); - return compilerCore.createSimpleExpression( - JSON.stringify(normalized), - false, - loc, - 3 - ); -}; - -function createDOMCompilerError(code, loc) { - return compilerCore.createCompilerError( - code, - loc, - DOMErrorMessages - ); -} -const DOMErrorMessages = { - [53]: `v-html is missing expression.`, - [54]: `v-html will override element children.`, - [55]: `v-text is missing expression.`, - [56]: `v-text will override element children.`, - [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, - [58]: `v-model argument is not supported on plain elements.`, - [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, - [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, - [61]: `v-show is missing expression.`, - [62]: `<Transition> expects exactly one child element or component.`, - [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` -}; - -const transformVHtml = (dir, node, context) => { - const { exp, loc } = dir; - if (!exp) { - context.onError( - createDOMCompilerError(53, loc) - ); - } - if (node.children.length) { - context.onError( - createDOMCompilerError(54, loc) - ); - node.children.length = 0; - } - return { - props: [ - compilerCore.createObjectProperty( - compilerCore.createSimpleExpression(`innerHTML`, true, loc), - exp || compilerCore.createSimpleExpression("", true) - ) - ] - }; -}; - -const transformVText = (dir, node, context) => { - const { exp, loc } = dir; - if (!exp) { - context.onError( - createDOMCompilerError(55, loc) - ); - } - if (node.children.length) { - context.onError( - createDOMCompilerError(56, loc) - ); - node.children.length = 0; - } - return { - props: [ - compilerCore.createObjectProperty( - compilerCore.createSimpleExpression(`textContent`, true), - exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression( - context.helperString(compilerCore.TO_DISPLAY_STRING), - [exp], - loc - ) : compilerCore.createSimpleExpression("", true) - ) - ] - }; -}; - -const transformModel = (dir, node, context) => { - const baseResult = compilerCore.transformModel(dir, node, context); - if (!baseResult.props.length || node.tagType === 1) { - return baseResult; - } - if (dir.arg) { - context.onError( - createDOMCompilerError( - 58, - dir.arg.loc - ) - ); - } - function checkDuplicatedValue() { - const value = compilerCore.findDir(node, "bind"); - if (value && compilerCore.isStaticArgOf(value.arg, "value")) { - context.onError( - createDOMCompilerError( - 60, - value.loc - ) - ); - } - } - const { tag } = node; - const isCustomElement = context.isCustomElement(tag); - if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { - let directiveToUse = V_MODEL_TEXT; - let isInvalidType = false; - if (tag === "input" || isCustomElement) { - const type = compilerCore.findProp(node, `type`); - if (type) { - if (type.type === 7) { - directiveToUse = V_MODEL_DYNAMIC; - } else if (type.value) { - switch (type.value.content) { - case "radio": - directiveToUse = V_MODEL_RADIO; - break; - case "checkbox": - directiveToUse = V_MODEL_CHECKBOX; - break; - case "file": - isInvalidType = true; - context.onError( - createDOMCompilerError( - 59, - dir.loc - ) - ); - break; - default: - checkDuplicatedValue(); - break; - } - } - } else if (compilerCore.hasDynamicKeyVBind(node)) { - directiveToUse = V_MODEL_DYNAMIC; - } else { - checkDuplicatedValue(); - } - } else if (tag === "select") { - directiveToUse = V_MODEL_SELECT; - } else { - checkDuplicatedValue(); - } - if (!isInvalidType) { - baseResult.needRuntime = context.helper(directiveToUse); - } - } else { - context.onError( - createDOMCompilerError( - 57, - dir.loc - ) - ); - } - baseResult.props = baseResult.props.filter( - (p) => !(p.key.type === 4 && p.key.content === "modelValue") - ); - return baseResult; -}; - -const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`); -const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( - // event propagation management - `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` -); -const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); -const isKeyboardEvent = /* @__PURE__ */ shared.makeMap( - `onkeyup,onkeydown,onkeypress`, - true -); -const resolveModifiers = (key, modifiers, context, loc) => { - const keyModifiers = []; - const nonKeyModifiers = []; - const eventOptionModifiers = []; - for (let i = 0; i < modifiers.length; i++) { - const modifier = modifiers[i]; - if (modifier === "native" && compilerCore.checkCompatEnabled( - "COMPILER_V_ON_NATIVE", - context, - loc - )) { - eventOptionModifiers.push(modifier); - } else if (isEventOptionModifier(modifier)) { - eventOptionModifiers.push(modifier); - } else { - if (maybeKeyModifier(modifier)) { - if (compilerCore.isStaticExp(key)) { - if (isKeyboardEvent(key.content)) { - keyModifiers.push(modifier); - } else { - nonKeyModifiers.push(modifier); - } - } else { - keyModifiers.push(modifier); - nonKeyModifiers.push(modifier); - } - } else { - if (isNonKeyModifier(modifier)) { - nonKeyModifiers.push(modifier); - } else { - keyModifiers.push(modifier); - } - } - } - } - return { - keyModifiers, - nonKeyModifiers, - eventOptionModifiers - }; -}; -const transformClick = (key, event) => { - const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick"; - return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([ - `(`, - key, - `) === "onClick" ? "${event}" : (`, - key, - `)` - ]) : key; -}; -const transformOn = (dir, node, context) => { - return compilerCore.transformOn(dir, node, context, (baseResult) => { - const { modifiers } = dir; - if (!modifiers.length) - return baseResult; - let { key, value: handlerExp } = baseResult.props[0]; - const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); - if (nonKeyModifiers.includes("right")) { - key = transformClick(key, `onContextmenu`); - } - if (nonKeyModifiers.includes("middle")) { - key = transformClick(key, `onMouseup`); - } - if (nonKeyModifiers.length) { - handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ - handlerExp, - JSON.stringify(nonKeyModifiers) - ]); - } - if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard - (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) { - handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ - handlerExp, - JSON.stringify(keyModifiers) - ]); - } - if (eventOptionModifiers.length) { - const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(""); - key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); - } - return { - props: [compilerCore.createObjectProperty(key, handlerExp)] - }; - }); -}; - -const transformShow = (dir, node, context) => { - const { exp, loc } = dir; - if (!exp) { - context.onError( - createDOMCompilerError(61, loc) - ); - } - return { - props: [], - needRuntime: context.helper(V_SHOW) - }; -}; - -const transformTransition = (node, context) => { - if (node.type === 1 && node.tagType === 1) { - const component = context.isBuiltInComponent(node.tag); - if (component === TRANSITION) { - return () => { - if (!node.children.length) { - return; - } - if (hasMultipleChildren(node)) { - context.onError( - createDOMCompilerError( - 62, - { - start: node.children[0].loc.start, - end: node.children[node.children.length - 1].loc.end, - source: "" - } - ) - ); - } - const child = node.children[0]; - if (child.type === 1) { - for (const p of child.props) { - if (p.type === 7 && p.name === "show") { - node.props.push({ - type: 6, - name: "persisted", - value: void 0, - loc: node.loc - }); - } - } - } - }; - } - } -}; -function hasMultipleChildren(node) { - const children = node.children = node.children.filter( - (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) - ); - const child = children[0]; - return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); -} - -const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; -const stringifyStatic = (children, context, parent) => { - if (context.scopes.vSlot > 0) { - return; - } - let nc = 0; - let ec = 0; - const currentChunk = []; - const stringifyCurrentChunk = (currentIndex) => { - if (nc >= 20 || ec >= 5) { - const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ - JSON.stringify( - currentChunk.map((node) => stringifyNode(node, context)).join("") - ).replace(expReplaceRE, `" + $1 + "`), - // the 2nd argument indicates the number of DOM nodes this static vnode - // will insert / hydrate - String(currentChunk.length) - ]); - replaceHoist(currentChunk[0], staticCall, context); - if (currentChunk.length > 1) { - for (let i2 = 1; i2 < currentChunk.length; i2++) { - replaceHoist(currentChunk[i2], null, context); - } - const deleteCount = currentChunk.length - 1; - children.splice(currentIndex - currentChunk.length + 1, deleteCount); - return deleteCount; - } - } - return 0; - }; - let i = 0; - for (; i < children.length; i++) { - const child = children[i]; - const hoisted = getHoistedNode(child); - if (hoisted) { - const node = child; - const result = analyzeNode(node); - if (result) { - nc += result[0]; - ec += result[1]; - currentChunk.push(node); - continue; - } - } - i -= stringifyCurrentChunk(i); - nc = 0; - ec = 0; - currentChunk.length = 0; - } - stringifyCurrentChunk(i); -}; -const getHoistedNode = (node) => (node.type === 1 && node.tagType === 0 || node.type == 12) && node.codegenNode && node.codegenNode.type === 4 && node.codegenNode.hoisted; -const dataAriaRE = /^(data|aria)-/; -const isStringifiableAttr = (name, ns) => { - return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : false) || dataAriaRE.test(name); -}; -const replaceHoist = (node, replacement, context) => { - const hoistToReplace = node.codegenNode.hoisted; - context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement; -}; -const isNonStringifiable = /* @__PURE__ */ shared.makeMap( - `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` -); -function analyzeNode(node) { - if (node.type === 1 && isNonStringifiable(node.tag)) { - return false; - } - if (node.type === 12) { - return [1, 0]; - } - let nc = 1; - let ec = node.props.length > 0 ? 1 : 0; - let bailed = false; - const bail = () => { - bailed = true; - return false; - }; - function walk(node2) { - for (let i = 0; i < node2.props.length; i++) { - const p = node2.props[i]; - if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { - return bail(); - } - if (p.type === 7 && p.name === "bind") { - if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { - return bail(); - } - if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { - return bail(); - } - } - } - for (let i = 0; i < node2.children.length; i++) { - nc++; - const child = node2.children[i]; - if (child.type === 1) { - if (child.props.length > 0) { - ec++; - } - walk(child); - if (bailed) { - return false; - } - } - } - return true; - } - return walk(node) ? [nc, ec] : false; -} -function stringifyNode(node, context) { - if (shared.isString(node)) { - return node; - } - if (shared.isSymbol(node)) { - return ``; - } - switch (node.type) { - case 1: - return stringifyElement(node, context); - case 2: - return shared.escapeHtml(node.content); - case 3: - return `<!--${shared.escapeHtml(node.content)}-->`; - case 5: - return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); - case 8: - return shared.escapeHtml(evaluateConstant(node)); - case 12: - return stringifyNode(node.content, context); - default: - return ""; - } -} -function stringifyElement(node, context) { - let res = `<${node.tag}`; - let innerHTML = ""; - for (let i = 0; i < node.props.length; i++) { - const p = node.props[i]; - if (p.type === 6) { - res += ` ${p.name}`; - if (p.value) { - res += `="${shared.escapeHtml(p.value.content)}"`; - } - } else if (p.type === 7) { - if (p.name === "bind") { - const exp = p.exp; - if (exp.content[0] === "_") { - res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; - continue; - } - if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") { - continue; - } - let evaluated = evaluateConstant(exp); - if (evaluated != null) { - const arg = p.arg && p.arg.content; - if (arg === "class") { - evaluated = shared.normalizeClass(evaluated); - } else if (arg === "style") { - evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); - } - res += ` ${p.arg.content}="${shared.escapeHtml( - evaluated - )}"`; - } - } else if (p.name === "html") { - innerHTML = evaluateConstant(p.exp); - } else if (p.name === "text") { - innerHTML = shared.escapeHtml( - shared.toDisplayString(evaluateConstant(p.exp)) - ); - } - } - } - if (context.scopeId) { - res += ` ${context.scopeId}`; - } - res += `>`; - if (innerHTML) { - res += innerHTML; - } else { - for (let i = 0; i < node.children.length; i++) { - res += stringifyNode(node.children[i], context); - } - } - if (!shared.isVoidTag(node.tag)) { - res += `</${node.tag}>`; - } - return res; -} -function evaluateConstant(exp) { - if (exp.type === 4) { - return new Function(`return (${exp.content})`)(); - } else { - let res = ``; - exp.children.forEach((c) => { - if (shared.isString(c) || shared.isSymbol(c)) { - return; - } - if (c.type === 2) { - res += c.content; - } else if (c.type === 5) { - res += shared.toDisplayString(evaluateConstant(c.content)); - } else { - res += evaluateConstant(c); - } - }); - return res; - } -} - -const ignoreSideEffectTags = (node, context) => { - if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { - context.onError( - createDOMCompilerError( - 63, - node.loc - ) - ); - context.removeNode(); - } -}; - -const DOMNodeTransforms = [ - transformStyle, - ...[transformTransition] -]; -const DOMDirectiveTransforms = { - cloak: compilerCore.noopDirectiveTransform, - html: transformVHtml, - text: transformVText, - model: transformModel, - // override compiler-core - on: transformOn, - // override compiler-core - show: transformShow -}; -function compile(template, options = {}) { - return compilerCore.baseCompile( - template, - shared.extend({}, parserOptions, options, { - nodeTransforms: [ - // ignore <script> and <tag> - // this is not put inside DOMNodeTransforms because that list is used - // by compiler-ssr to generate vnode fallback branches - ignoreSideEffectTags, - ...DOMNodeTransforms, - ...options.nodeTransforms || [] - ], - directiveTransforms: shared.extend( - {}, - DOMDirectiveTransforms, - options.directiveTransforms || {} - ), - transformHoist: stringifyStatic - }) - ); -} -function parse(template, options = {}) { - return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); -} - -exports.DOMDirectiveTransforms = DOMDirectiveTransforms; -exports.DOMNodeTransforms = DOMNodeTransforms; -exports.TRANSITION = TRANSITION; -exports.TRANSITION_GROUP = TRANSITION_GROUP; -exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; -exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; -exports.V_MODEL_RADIO = V_MODEL_RADIO; -exports.V_MODEL_SELECT = V_MODEL_SELECT; -exports.V_MODEL_TEXT = V_MODEL_TEXT; -exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; -exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; -exports.V_SHOW = V_SHOW; -exports.compile = compile; -exports.createDOMCompilerError = createDOMCompilerError; -exports.parse = parse; -exports.parserOptions = parserOptions; -exports.transformStyle = transformStyle; -Object.keys(compilerCore).forEach(function (k) { - if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k]; -}); diff --git a/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js b/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js index 967cf26..94b29b7 100644 --- a/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +++ b/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js @@ -1,3 +1,8 @@ +/** +* @vue/compiler-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -6,15 +11,27 @@ var compilerCore = require('@vue/compiler-core'); var shared = require('@vue/shared'); const V_MODEL_RADIO = Symbol(``); -const V_MODEL_CHECKBOX = Symbol(``); +const V_MODEL_CHECKBOX = Symbol( + `` +); const V_MODEL_TEXT = Symbol(``); -const V_MODEL_SELECT = Symbol(``); -const V_MODEL_DYNAMIC = Symbol(``); -const V_ON_WITH_MODIFIERS = Symbol(``); -const V_ON_WITH_KEYS = Symbol(``); +const V_MODEL_SELECT = Symbol( + `` +); +const V_MODEL_DYNAMIC = Symbol( + `` +); +const V_ON_WITH_MODIFIERS = Symbol( + `` +); +const V_ON_WITH_KEYS = Symbol( + `` +); const V_SHOW = Symbol(``); const TRANSITION = Symbol(``); -const TRANSITION_GROUP = Symbol(``); +const TRANSITION_GROUP = Symbol( + `` +); compilerCore.registerRuntimeHelpers({ [V_MODEL_RADIO]: `vModelRadio`, [V_MODEL_CHECKBOX]: `vModelCheckbox`, @@ -28,2364 +45,23 @@ compilerCore.registerRuntimeHelpers({ [TRANSITION_GROUP]: `TransitionGroup` }); -var namedCharacterReferences = { - GT: ">", - gt: ">", - LT: "<", - lt: "<", - "ac;": "∾", - "af;": "⁡", - AMP: "&", - amp: "&", - "ap;": "≈", - "DD;": "ⅅ", - "dd;": "ⅆ", - deg: "°", - "ee;": "ⅇ", - "eg;": "⪚", - "el;": "⪙", - ETH: "Ð", - eth: "ð", - "gE;": "≧", - "ge;": "≥", - "Gg;": "⋙", - "gg;": "≫", - "gl;": "≷", - "GT;": ">", - "Gt;": "≫", - "gt;": ">", - "ic;": "⁣", - "ii;": "ⅈ", - "Im;": "ℑ", - "in;": "∈", - "it;": "⁢", - "lE;": "≦", - "le;": "≤", - "lg;": "≶", - "Ll;": "⋘", - "ll;": "≪", - "LT;": "<", - "Lt;": "≪", - "lt;": "<", - "mp;": "∓", - "Mu;": "Μ", - "mu;": "μ", - "ne;": "≠", - "ni;": "∋", - not: "¬", - "Nu;": "Ν", - "nu;": "ν", - "Or;": "⩔", - "or;": "∨", - "oS;": "Ⓢ", - "Pi;": "Π", - "pi;": "π", - "pm;": "±", - "Pr;": "⪻", - "pr;": "≺", - "Re;": "ℜ", - REG: "®", - reg: "®", - "rx;": "℞", - "Sc;": "⪼", - "sc;": "≻", - shy: "­", - uml: "¨", - "wp;": "℘", - "wr;": "≀", - "Xi;": "Ξ", - "xi;": "ξ", - yen: "¥", - "acd;": "∿", - "acE;": "∾̳", - "Acy;": "А", - "acy;": "а", - "Afr;": "𝔄", - "afr;": "𝔞", - "AMP;": "&", - "amp;": "&", - "And;": "⩓", - "and;": "∧", - "ang;": "∠", - "apE;": "⩰", - "ape;": "≊", - "ast;": "*", - Auml: "Ä", - auml: "ä", - "Bcy;": "Б", - "bcy;": "б", - "Bfr;": "𝔅", - "bfr;": "𝔟", - "bne;": "=⃥", - "bot;": "⊥", - "Cap;": "⋒", - "cap;": "∩", - cent: "¢", - "Cfr;": "ℭ", - "cfr;": "𝔠", - "Chi;": "Χ", - "chi;": "χ", - "cir;": "○", - COPY: "©", - copy: "©", - "Cup;": "⋓", - "cup;": "∪", - "Dcy;": "Д", - "dcy;": "д", - "deg;": "°", - "Del;": "∇", - "Dfr;": "𝔇", - "dfr;": "𝔡", - "die;": "¨", - "div;": "÷", - "Dot;": "¨", - "dot;": "˙", - "Ecy;": "Э", - "ecy;": "э", - "Efr;": "𝔈", - "efr;": "𝔢", - "egs;": "⪖", - "ell;": "ℓ", - "els;": "⪕", - "ENG;": "Ŋ", - "eng;": "ŋ", - "Eta;": "Η", - "eta;": "η", - "ETH;": "Ð", - "eth;": "ð", - Euml: "Ë", - euml: "ë", - "Fcy;": "Ф", - "fcy;": "ф", - "Ffr;": "𝔉", - "ffr;": "𝔣", - "gap;": "⪆", - "Gcy;": "Г", - "gcy;": "г", - "gEl;": "⪌", - "gel;": "⋛", - "geq;": "≥", - "ges;": "⩾", - "Gfr;": "𝔊", - "gfr;": "𝔤", - "ggg;": "⋙", - "gla;": "⪥", - "glE;": "⪒", - "glj;": "⪤", - "gnE;": "≩", - "gne;": "⪈", - "Hat;": "^", - "Hfr;": "ℌ", - "hfr;": "𝔥", - "Icy;": "И", - "icy;": "и", - "iff;": "⇔", - "Ifr;": "ℑ", - "ifr;": "𝔦", - "Int;": "∬", - "int;": "∫", - Iuml: "Ï", - iuml: "ï", - "Jcy;": "Й", - "jcy;": "й", - "Jfr;": "𝔍", - "jfr;": "𝔧", - "Kcy;": "К", - "kcy;": "к", - "Kfr;": "𝔎", - "kfr;": "𝔨", - "lap;": "⪅", - "lat;": "⪫", - "Lcy;": "Л", - "lcy;": "л", - "lEg;": "⪋", - "leg;": "⋚", - "leq;": "≤", - "les;": "⩽", - "Lfr;": "𝔏", - "lfr;": "𝔩", - "lgE;": "⪑", - "lnE;": "≨", - "lne;": "⪇", - "loz;": "◊", - "lrm;": "‎", - "Lsh;": "↰", - "lsh;": "↰", - macr: "¯", - "Map;": "⤅", - "map;": "↦", - "Mcy;": "М", - "mcy;": "м", - "Mfr;": "𝔐", - "mfr;": "𝔪", - "mho;": "℧", - "mid;": "∣", - "nap;": "≉", - nbsp: " ", - "Ncy;": "Н", - "ncy;": "н", - "Nfr;": "𝔑", - "nfr;": "𝔫", - "ngE;": "≧̸", - "nge;": "≱", - "nGg;": "⋙̸", - "nGt;": "≫⃒", - "ngt;": "≯", - "nis;": "⋼", - "niv;": "∋", - "nlE;": "≦̸", - "nle;": "≰", - "nLl;": "⋘̸", - "nLt;": "≪⃒", - "nlt;": "≮", - "Not;": "⫬", - "not;": "¬", - "npr;": "⊀", - "nsc;": "⊁", - "num;": "#", - "Ocy;": "О", - "ocy;": "о", - "Ofr;": "𝔒", - "ofr;": "𝔬", - "ogt;": "⧁", - "ohm;": "Ω", - "olt;": "⧀", - "ord;": "⩝", - ordf: "ª", - ordm: "º", - "orv;": "⩛", - Ouml: "Ö", - ouml: "ö", - "par;": "∥", - para: "¶", - "Pcy;": "П", - "pcy;": "п", - "Pfr;": "𝔓", - "pfr;": "𝔭", - "Phi;": "Φ", - "phi;": "φ", - "piv;": "ϖ", - "prE;": "⪳", - "pre;": "⪯", - "Psi;": "Ψ", - "psi;": "ψ", - "Qfr;": "𝔔", - "qfr;": "𝔮", - QUOT: "\"", - quot: "\"", - "Rcy;": "Р", - "rcy;": "р", - "REG;": "®", - "reg;": "®", - "Rfr;": "ℜ", - "rfr;": "𝔯", - "Rho;": "Ρ", - "rho;": "ρ", - "rlm;": "‏", - "Rsh;": "↱", - "rsh;": "↱", - "scE;": "⪴", - "sce;": "⪰", - "Scy;": "С", - "scy;": "с", - sect: "§", - "Sfr;": "𝔖", - "sfr;": "𝔰", - "shy;": "­", - "sim;": "∼", - "smt;": "⪪", - "sol;": "/", - "squ;": "□", - "Sub;": "⋐", - "sub;": "⊂", - "Sum;": "∑", - "sum;": "∑", - "Sup;": "⋑", - "sup;": "⊃", - sup1: "¹", - sup2: "²", - sup3: "³", - "Tab;": "\t", - "Tau;": "Τ", - "tau;": "τ", - "Tcy;": "Т", - "tcy;": "т", - "Tfr;": "𝔗", - "tfr;": "𝔱", - "top;": "⊤", - "Ucy;": "У", - "ucy;": "у", - "Ufr;": "𝔘", - "ufr;": "𝔲", - "uml;": "¨", - Uuml: "Ü", - uuml: "ü", - "Vcy;": "В", - "vcy;": "в", - "Vee;": "⋁", - "vee;": "∨", - "Vfr;": "𝔙", - "vfr;": "𝔳", - "Wfr;": "𝔚", - "wfr;": "𝔴", - "Xfr;": "𝔛", - "xfr;": "𝔵", - "Ycy;": "Ы", - "ycy;": "ы", - "yen;": "¥", - "Yfr;": "𝔜", - "yfr;": "𝔶", - yuml: "ÿ", - "Zcy;": "З", - "zcy;": "з", - "Zfr;": "ℨ", - "zfr;": "𝔷", - "zwj;": "‍", - Acirc: "Â", - acirc: "â", - acute: "´", - AElig: "Æ", - aelig: "æ", - "andd;": "⩜", - "andv;": "⩚", - "ange;": "⦤", - "Aopf;": "𝔸", - "aopf;": "𝕒", - "apid;": "≋", - "apos;": "'", - Aring: "Å", - aring: "å", - "Ascr;": "𝒜", - "ascr;": "𝒶", - "Auml;": "Ä", - "auml;": "ä", - "Barv;": "⫧", - "bbrk;": "⎵", - "Beta;": "Β", - "beta;": "β", - "beth;": "ℶ", - "bNot;": "⫭", - "bnot;": "⌐", - "Bopf;": "𝔹", - "bopf;": "𝕓", - "boxH;": "═", - "boxh;": "─", - "boxV;": "║", - "boxv;": "│", - "Bscr;": "ℬ", - "bscr;": "𝒷", - "bsim;": "∽", - "bsol;": "\\", - "bull;": "•", - "bump;": "≎", - "caps;": "∩︀", - "Cdot;": "Ċ", - "cdot;": "ċ", - cedil: "¸", - "cent;": "¢", - "CHcy;": "Ч", - "chcy;": "ч", - "circ;": "ˆ", - "cirE;": "⧃", - "cire;": "≗", - "comp;": "∁", - "cong;": "≅", - "Copf;": "ℂ", - "copf;": "𝕔", - "COPY;": "©", - "copy;": "©", - "Cscr;": "𝒞", - "cscr;": "𝒸", - "csub;": "⫏", - "csup;": "⫐", - "cups;": "∪︀", - "Darr;": "↡", - "dArr;": "⇓", - "darr;": "↓", - "dash;": "‐", - "dHar;": "⥥", - "diam;": "⋄", - "DJcy;": "Ђ", - "djcy;": "ђ", - "Dopf;": "𝔻", - "dopf;": "𝕕", - "Dscr;": "𝒟", - "dscr;": "𝒹", - "DScy;": "Ѕ", - "dscy;": "ѕ", - "dsol;": "⧶", - "dtri;": "▿", - "DZcy;": "Џ", - "dzcy;": "џ", - "ecir;": "≖", - Ecirc: "Ê", - ecirc: "ê", - "Edot;": "Ė", - "eDot;": "≑", - "edot;": "ė", - "emsp;": " ", - "ensp;": " ", - "Eopf;": "𝔼", - "eopf;": "𝕖", - "epar;": "⋕", - "epsi;": "ε", - "Escr;": "ℰ", - "escr;": "ℯ", - "Esim;": "⩳", - "esim;": "≂", - "Euml;": "Ë", - "euml;": "ë", - "euro;": "€", - "excl;": "!", - "flat;": "♭", - "fnof;": "ƒ", - "Fopf;": "𝔽", - "fopf;": "𝕗", - "fork;": "⋔", - "Fscr;": "ℱ", - "fscr;": "𝒻", - "Gdot;": "Ġ", - "gdot;": "ġ", - "geqq;": "≧", - "gesl;": "⋛︀", - "GJcy;": "Ѓ", - "gjcy;": "ѓ", - "gnap;": "⪊", - "gneq;": "⪈", - "Gopf;": "𝔾", - "gopf;": "𝕘", - "Gscr;": "𝒢", - "gscr;": "ℊ", - "gsim;": "≳", - "gtcc;": "⪧", - "gvnE;": "≩︀", - "half;": "½", - "hArr;": "⇔", - "harr;": "↔", - "hbar;": "ℏ", - "Hopf;": "ℍ", - "hopf;": "𝕙", - "Hscr;": "ℋ", - "hscr;": "𝒽", - Icirc: "Î", - icirc: "î", - "Idot;": "İ", - "IEcy;": "Е", - "iecy;": "е", - iexcl: "¡", - "imof;": "⊷", - "IOcy;": "Ё", - "iocy;": "ё", - "Iopf;": "𝕀", - "iopf;": "𝕚", - "Iota;": "Ι", - "iota;": "ι", - "Iscr;": "ℐ", - "iscr;": "𝒾", - "isin;": "∈", - "Iuml;": "Ï", - "iuml;": "ï", - "Jopf;": "𝕁", - "jopf;": "𝕛", - "Jscr;": "𝒥", - "jscr;": "𝒿", - "KHcy;": "Х", - "khcy;": "х", - "KJcy;": "Ќ", - "kjcy;": "ќ", - "Kopf;": "𝕂", - "kopf;": "𝕜", - "Kscr;": "𝒦", - "kscr;": "𝓀", - "Lang;": "⟪", - "lang;": "⟨", - laquo: "«", - "Larr;": "↞", - "lArr;": "⇐", - "larr;": "←", - "late;": "⪭", - "lcub;": "{", - "ldca;": "⤶", - "ldsh;": "↲", - "leqq;": "≦", - "lesg;": "⋚︀", - "lHar;": "⥢", - "LJcy;": "Љ", - "ljcy;": "љ", - "lnap;": "⪉", - "lneq;": "⪇", - "Lopf;": "𝕃", - "lopf;": "𝕝", - "lozf;": "⧫", - "lpar;": "(", - "Lscr;": "ℒ", - "lscr;": "𝓁", - "lsim;": "≲", - "lsqb;": "[", - "ltcc;": "⪦", - "ltri;": "◃", - "lvnE;": "≨︀", - "macr;": "¯", - "male;": "♂", - "malt;": "✠", - micro: "µ", - "mlcp;": "⫛", - "mldr;": "…", - "Mopf;": "𝕄", - "mopf;": "𝕞", - "Mscr;": "ℳ", - "mscr;": "𝓂", - "nang;": "∠⃒", - "napE;": "⩰̸", - "nbsp;": " ", - "ncap;": "⩃", - "ncup;": "⩂", - "ngeq;": "≱", - "nges;": "⩾̸", - "ngtr;": "≯", - "nGtv;": "≫̸", - "nisd;": "⋺", - "NJcy;": "Њ", - "njcy;": "њ", - "nldr;": "‥", - "nleq;": "≰", - "nles;": "⩽̸", - "nLtv;": "≪̸", - "nmid;": "∤", - "Nopf;": "ℕ", - "nopf;": "𝕟", - "npar;": "∦", - "npre;": "⪯̸", - "nsce;": "⪰̸", - "Nscr;": "𝒩", - "nscr;": "𝓃", - "nsim;": "≁", - "nsub;": "⊄", - "nsup;": "⊅", - "ntgl;": "≹", - "ntlg;": "≸", - "nvap;": "≍⃒", - "nvge;": "≥⃒", - "nvgt;": ">⃒", - "nvle;": "≤⃒", - "nvlt;": "<⃒", - "oast;": "⊛", - "ocir;": "⊚", - Ocirc: "Ô", - ocirc: "ô", - "odiv;": "⨸", - "odot;": "⊙", - "ogon;": "˛", - "oint;": "∮", - "omid;": "⦶", - "Oopf;": "𝕆", - "oopf;": "𝕠", - "opar;": "⦷", - "ordf;": "ª", - "ordm;": "º", - "oror;": "⩖", - "Oscr;": "𝒪", - "oscr;": "ℴ", - "osol;": "⊘", - "Ouml;": "Ö", - "ouml;": "ö", - "para;": "¶", - "part;": "∂", - "perp;": "⊥", - "phiv;": "ϕ", - "plus;": "+", - "Popf;": "ℙ", - "popf;": "𝕡", - pound: "£", - "prap;": "⪷", - "prec;": "≺", - "prnE;": "⪵", - "prod;": "∏", - "prop;": "∝", - "Pscr;": "𝒫", - "pscr;": "𝓅", - "qint;": "⨌", - "Qopf;": "ℚ", - "qopf;": "𝕢", - "Qscr;": "𝒬", - "qscr;": "𝓆", - "QUOT;": "\"", - "quot;": "\"", - "race;": "∽̱", - "Rang;": "⟫", - "rang;": "⟩", - raquo: "»", - "Rarr;": "↠", - "rArr;": "⇒", - "rarr;": "→", - "rcub;": "}", - "rdca;": "⤷", - "rdsh;": "↳", - "real;": "ℜ", - "rect;": "▭", - "rHar;": "⥤", - "rhov;": "ϱ", - "ring;": "˚", - "Ropf;": "ℝ", - "ropf;": "𝕣", - "rpar;": ")", - "Rscr;": "ℛ", - "rscr;": "𝓇", - "rsqb;": "]", - "rtri;": "▹", - "scap;": "⪸", - "scnE;": "⪶", - "sdot;": "⋅", - "sect;": "§", - "semi;": ";", - "sext;": "✶", - "SHcy;": "Ш", - "shcy;": "ш", - "sime;": "≃", - "simg;": "⪞", - "siml;": "⪝", - "smid;": "∣", - "smte;": "⪬", - "solb;": "⧄", - "Sopf;": "𝕊", - "sopf;": "𝕤", - "spar;": "∥", - "Sqrt;": "√", - "squf;": "▪", - "Sscr;": "𝒮", - "sscr;": "𝓈", - "Star;": "⋆", - "star;": "☆", - "subE;": "⫅", - "sube;": "⊆", - "succ;": "≻", - "sung;": "♪", - "sup1;": "¹", - "sup2;": "²", - "sup3;": "³", - "supE;": "⫆", - "supe;": "⊇", - szlig: "ß", - "tbrk;": "⎴", - "tdot;": "⃛", - THORN: "Þ", - thorn: "þ", - times: "×", - "tint;": "∭", - "toea;": "⤨", - "Topf;": "𝕋", - "topf;": "𝕥", - "tosa;": "⤩", - "trie;": "≜", - "Tscr;": "𝒯", - "tscr;": "𝓉", - "TScy;": "Ц", - "tscy;": "ц", - "Uarr;": "↟", - "uArr;": "⇑", - "uarr;": "↑", - Ucirc: "Û", - ucirc: "û", - "uHar;": "⥣", - "Uopf;": "𝕌", - "uopf;": "𝕦", - "Upsi;": "ϒ", - "upsi;": "υ", - "Uscr;": "𝒰", - "uscr;": "𝓊", - "utri;": "▵", - "Uuml;": "Ü", - "uuml;": "ü", - "vArr;": "⇕", - "varr;": "↕", - "Vbar;": "⫫", - "vBar;": "⫨", - "Vert;": "‖", - "vert;": "|", - "Vopf;": "𝕍", - "vopf;": "𝕧", - "Vscr;": "𝒱", - "vscr;": "𝓋", - "Wopf;": "𝕎", - "wopf;": "𝕨", - "Wscr;": "𝒲", - "wscr;": "𝓌", - "xcap;": "⋂", - "xcup;": "⋃", - "xmap;": "⟼", - "xnis;": "⋻", - "Xopf;": "𝕏", - "xopf;": "𝕩", - "Xscr;": "𝒳", - "xscr;": "𝓍", - "xvee;": "⋁", - "YAcy;": "Я", - "yacy;": "я", - "YIcy;": "Ї", - "yicy;": "ї", - "Yopf;": "𝕐", - "yopf;": "𝕪", - "Yscr;": "𝒴", - "yscr;": "𝓎", - "YUcy;": "Ю", - "yucy;": "ю", - "Yuml;": "Ÿ", - "yuml;": "ÿ", - "Zdot;": "Ż", - "zdot;": "ż", - "Zeta;": "Ζ", - "zeta;": "ζ", - "ZHcy;": "Ж", - "zhcy;": "ж", - "Zopf;": "ℤ", - "zopf;": "𝕫", - "Zscr;": "𝒵", - "zscr;": "𝓏", - "zwnj;": "‌", - Aacute: "Á", - aacute: "á", - "Acirc;": "Â", - "acirc;": "â", - "acute;": "´", - "AElig;": "Æ", - "aelig;": "æ", - Agrave: "À", - agrave: "à", - "aleph;": "ℵ", - "Alpha;": "Α", - "alpha;": "α", - "Amacr;": "Ā", - "amacr;": "ā", - "amalg;": "⨿", - "angle;": "∠", - "angrt;": "∟", - "angst;": "Å", - "Aogon;": "Ą", - "aogon;": "ą", - "Aring;": "Å", - "aring;": "å", - "asymp;": "≈", - Atilde: "Ã", - atilde: "ã", - "awint;": "⨑", - "bcong;": "≌", - "bdquo;": "„", - "bepsi;": "϶", - "blank;": "␣", - "blk12;": "▒", - "blk14;": "░", - "blk34;": "▓", - "block;": "█", - "boxDL;": "╗", - "boxDl;": "╖", - "boxdL;": "╕", - "boxdl;": "┐", - "boxDR;": "╔", - "boxDr;": "╓", - "boxdR;": "╒", - "boxdr;": "┌", - "boxHD;": "╦", - "boxHd;": "╤", - "boxhD;": "╥", - "boxhd;": "┬", - "boxHU;": "╩", - "boxHu;": "╧", - "boxhU;": "╨", - "boxhu;": "┴", - "boxUL;": "╝", - "boxUl;": "╜", - "boxuL;": "╛", - "boxul;": "┘", - "boxUR;": "╚", - "boxUr;": "╙", - "boxuR;": "╘", - "boxur;": "└", - "boxVH;": "╬", - "boxVh;": "╫", - "boxvH;": "╪", - "boxvh;": "┼", - "boxVL;": "╣", - "boxVl;": "╢", - "boxvL;": "╡", - "boxvl;": "┤", - "boxVR;": "╠", - "boxVr;": "╟", - "boxvR;": "╞", - "boxvr;": "├", - "Breve;": "˘", - "breve;": "˘", - brvbar: "¦", - "bsemi;": "⁏", - "bsime;": "⋍", - "bsolb;": "⧅", - "bumpE;": "⪮", - "bumpe;": "≏", - "caret;": "⁁", - "caron;": "ˇ", - "ccaps;": "⩍", - Ccedil: "Ç", - ccedil: "ç", - "Ccirc;": "Ĉ", - "ccirc;": "ĉ", - "ccups;": "⩌", - "cedil;": "¸", - "check;": "✓", - "clubs;": "♣", - "Colon;": "∷", - "colon;": ":", - "comma;": ",", - "crarr;": "↵", - "Cross;": "⨯", - "cross;": "✗", - "csube;": "⫑", - "csupe;": "⫒", - "ctdot;": "⋯", - "cuepr;": "⋞", - "cuesc;": "⋟", - "cupor;": "⩅", - curren: "¤", - "cuvee;": "⋎", - "cuwed;": "⋏", - "cwint;": "∱", - "Dashv;": "⫤", - "dashv;": "⊣", - "dblac;": "˝", - "ddarr;": "⇊", - "Delta;": "Δ", - "delta;": "δ", - "dharl;": "⇃", - "dharr;": "⇂", - "diams;": "♦", - "disin;": "⋲", - divide: "÷", - "doteq;": "≐", - "dtdot;": "⋱", - "dtrif;": "▾", - "duarr;": "⇵", - "duhar;": "⥯", - Eacute: "É", - eacute: "é", - "Ecirc;": "Ê", - "ecirc;": "ê", - "eDDot;": "⩷", - "efDot;": "≒", - Egrave: "È", - egrave: "è", - "Emacr;": "Ē", - "emacr;": "ē", - "empty;": "∅", - "Eogon;": "Ę", - "eogon;": "ę", - "eplus;": "⩱", - "epsiv;": "ϵ", - "eqsim;": "≂", - "Equal;": "⩵", - "equiv;": "≡", - "erarr;": "⥱", - "erDot;": "≓", - "esdot;": "≐", - "exist;": "∃", - "fflig;": "ff", - "filig;": "fi", - "fjlig;": "fj", - "fllig;": "fl", - "fltns;": "▱", - "forkv;": "⫙", - frac12: "½", - frac14: "¼", - frac34: "¾", - "frasl;": "⁄", - "frown;": "⌢", - "Gamma;": "Γ", - "gamma;": "γ", - "Gcirc;": "Ĝ", - "gcirc;": "ĝ", - "gescc;": "⪩", - "gimel;": "ℷ", - "gneqq;": "≩", - "gnsim;": "⋧", - "grave;": "`", - "gsime;": "⪎", - "gsiml;": "⪐", - "gtcir;": "⩺", - "gtdot;": "⋗", - "Hacek;": "ˇ", - "harrw;": "↭", - "Hcirc;": "Ĥ", - "hcirc;": "ĥ", - "hoarr;": "⇿", - Iacute: "Í", - iacute: "í", - "Icirc;": "Î", - "icirc;": "î", - "iexcl;": "¡", - Igrave: "Ì", - igrave: "ì", - "iiint;": "∭", - "iiota;": "℩", - "IJlig;": "IJ", - "ijlig;": "ij", - "Imacr;": "Ī", - "imacr;": "ī", - "image;": "ℑ", - "imath;": "ı", - "imped;": "Ƶ", - "infin;": "∞", - "Iogon;": "Į", - "iogon;": "į", - "iprod;": "⨼", - iquest: "¿", - "isinE;": "⋹", - "isins;": "⋴", - "isinv;": "∈", - "Iukcy;": "І", - "iukcy;": "і", - "Jcirc;": "Ĵ", - "jcirc;": "ĵ", - "jmath;": "ȷ", - "Jukcy;": "Є", - "jukcy;": "є", - "Kappa;": "Κ", - "kappa;": "κ", - "lAarr;": "⇚", - "langd;": "⦑", - "laquo;": "«", - "larrb;": "⇤", - "lates;": "⪭︀", - "lBarr;": "⤎", - "lbarr;": "⤌", - "lbbrk;": "❲", - "lbrke;": "⦋", - "lceil;": "⌈", - "ldquo;": "“", - "lescc;": "⪨", - "lhard;": "↽", - "lharu;": "↼", - "lhblk;": "▄", - "llarr;": "⇇", - "lltri;": "◺", - "lneqq;": "≨", - "lnsim;": "⋦", - "loang;": "⟬", - "loarr;": "⇽", - "lobrk;": "⟦", - "lopar;": "⦅", - "lrarr;": "⇆", - "lrhar;": "⇋", - "lrtri;": "⊿", - "lsime;": "⪍", - "lsimg;": "⪏", - "lsquo;": "‘", - "ltcir;": "⩹", - "ltdot;": "⋖", - "ltrie;": "⊴", - "ltrif;": "◂", - "mdash;": "—", - "mDDot;": "∺", - "micro;": "µ", - middot: "·", - "minus;": "−", - "mumap;": "⊸", - "nabla;": "∇", - "napid;": "≋̸", - "napos;": "ʼn", - "natur;": "♮", - "nbump;": "≎̸", - "ncong;": "≇", - "ndash;": "–", - "neArr;": "⇗", - "nearr;": "↗", - "nedot;": "≐̸", - "nesim;": "≂̸", - "ngeqq;": "≧̸", - "ngsim;": "≵", - "nhArr;": "⇎", - "nharr;": "↮", - "nhpar;": "⫲", - "nlArr;": "⇍", - "nlarr;": "↚", - "nleqq;": "≦̸", - "nless;": "≮", - "nlsim;": "≴", - "nltri;": "⋪", - "notin;": "∉", - "notni;": "∌", - "npart;": "∂̸", - "nprec;": "⊀", - "nrArr;": "⇏", - "nrarr;": "↛", - "nrtri;": "⋫", - "nsime;": "≄", - "nsmid;": "∤", - "nspar;": "∦", - "nsubE;": "⫅̸", - "nsube;": "⊈", - "nsucc;": "⊁", - "nsupE;": "⫆̸", - "nsupe;": "⊉", - Ntilde: "Ñ", - ntilde: "ñ", - "numsp;": " ", - "nvsim;": "∼⃒", - "nwArr;": "⇖", - "nwarr;": "↖", - Oacute: "Ó", - oacute: "ó", - "Ocirc;": "Ô", - "ocirc;": "ô", - "odash;": "⊝", - "OElig;": "Œ", - "oelig;": "œ", - "ofcir;": "⦿", - Ograve: "Ò", - ograve: "ò", - "ohbar;": "⦵", - "olarr;": "↺", - "olcir;": "⦾", - "oline;": "‾", - "Omacr;": "Ō", - "omacr;": "ō", - "Omega;": "Ω", - "omega;": "ω", - "operp;": "⦹", - "oplus;": "⊕", - "orarr;": "↻", - "order;": "ℴ", - Oslash: "Ø", - oslash: "ø", - Otilde: "Õ", - otilde: "õ", - "ovbar;": "⌽", - "parsl;": "⫽", - "phone;": "☎", - "plusb;": "⊞", - "pluse;": "⩲", - plusmn: "±", - "pound;": "£", - "prcue;": "≼", - "Prime;": "″", - "prime;": "′", - "prnap;": "⪹", - "prsim;": "≾", - "quest;": "?", - "rAarr;": "⇛", - "radic;": "√", - "rangd;": "⦒", - "range;": "⦥", - "raquo;": "»", - "rarrb;": "⇥", - "rarrc;": "⤳", - "rarrw;": "↝", - "ratio;": "∶", - "RBarr;": "⤐", - "rBarr;": "⤏", - "rbarr;": "⤍", - "rbbrk;": "❳", - "rbrke;": "⦌", - "rceil;": "⌉", - "rdquo;": "”", - "reals;": "ℝ", - "rhard;": "⇁", - "rharu;": "⇀", - "rlarr;": "⇄", - "rlhar;": "⇌", - "rnmid;": "⫮", - "roang;": "⟭", - "roarr;": "⇾", - "robrk;": "⟧", - "ropar;": "⦆", - "rrarr;": "⇉", - "rsquo;": "’", - "rtrie;": "⊵", - "rtrif;": "▸", - "sbquo;": "‚", - "sccue;": "≽", - "Scirc;": "Ŝ", - "scirc;": "ŝ", - "scnap;": "⪺", - "scsim;": "≿", - "sdotb;": "⊡", - "sdote;": "⩦", - "seArr;": "⇘", - "searr;": "↘", - "setmn;": "∖", - "sharp;": "♯", - "Sigma;": "Σ", - "sigma;": "σ", - "simeq;": "≃", - "simgE;": "⪠", - "simlE;": "⪟", - "simne;": "≆", - "slarr;": "←", - "smile;": "⌣", - "smtes;": "⪬︀", - "sqcap;": "⊓", - "sqcup;": "⊔", - "sqsub;": "⊏", - "sqsup;": "⊐", - "srarr;": "→", - "starf;": "★", - "strns;": "¯", - "subnE;": "⫋", - "subne;": "⊊", - "supnE;": "⫌", - "supne;": "⊋", - "swArr;": "⇙", - "swarr;": "↙", - "szlig;": "ß", - "Theta;": "Θ", - "theta;": "θ", - "thkap;": "≈", - "THORN;": "Þ", - "thorn;": "þ", - "Tilde;": "∼", - "tilde;": "˜", - "times;": "×", - "TRADE;": "™", - "trade;": "™", - "trisb;": "⧍", - "TSHcy;": "Ћ", - "tshcy;": "ћ", - "twixt;": "≬", - Uacute: "Ú", - uacute: "ú", - "Ubrcy;": "Ў", - "ubrcy;": "ў", - "Ucirc;": "Û", - "ucirc;": "û", - "udarr;": "⇅", - "udhar;": "⥮", - Ugrave: "Ù", - ugrave: "ù", - "uharl;": "↿", - "uharr;": "↾", - "uhblk;": "▀", - "ultri;": "◸", - "Umacr;": "Ū", - "umacr;": "ū", - "Union;": "⋃", - "Uogon;": "Ų", - "uogon;": "ų", - "uplus;": "⊎", - "upsih;": "ϒ", - "UpTee;": "⊥", - "Uring;": "Ů", - "uring;": "ů", - "urtri;": "◹", - "utdot;": "⋰", - "utrif;": "▴", - "uuarr;": "⇈", - "varpi;": "ϖ", - "vBarv;": "⫩", - "VDash;": "⊫", - "Vdash;": "⊩", - "vDash;": "⊨", - "vdash;": "⊢", - "veeeq;": "≚", - "vltri;": "⊲", - "vnsub;": "⊂⃒", - "vnsup;": "⊃⃒", - "vprop;": "∝", - "vrtri;": "⊳", - "Wcirc;": "Ŵ", - "wcirc;": "ŵ", - "Wedge;": "⋀", - "wedge;": "∧", - "xcirc;": "◯", - "xdtri;": "▽", - "xhArr;": "⟺", - "xharr;": "⟷", - "xlArr;": "⟸", - "xlarr;": "⟵", - "xodot;": "⨀", - "xrArr;": "⟹", - "xrarr;": "⟶", - "xutri;": "△", - Yacute: "Ý", - yacute: "ý", - "Ycirc;": "Ŷ", - "ycirc;": "ŷ", - "Aacute;": "Á", - "aacute;": "á", - "Abreve;": "Ă", - "abreve;": "ă", - "Agrave;": "À", - "agrave;": "à", - "andand;": "⩕", - "angmsd;": "∡", - "angsph;": "∢", - "apacir;": "⩯", - "approx;": "≈", - "Assign;": "≔", - "Atilde;": "Ã", - "atilde;": "ã", - "barvee;": "⊽", - "Barwed;": "⌆", - "barwed;": "⌅", - "becaus;": "∵", - "bernou;": "ℬ", - "bigcap;": "⋂", - "bigcup;": "⋃", - "bigvee;": "⋁", - "bkarow;": "⤍", - "bottom;": "⊥", - "bowtie;": "⋈", - "boxbox;": "⧉", - "bprime;": "‵", - "brvbar;": "¦", - "bullet;": "•", - "Bumpeq;": "≎", - "bumpeq;": "≏", - "Cacute;": "Ć", - "cacute;": "ć", - "capand;": "⩄", - "capcap;": "⩋", - "capcup;": "⩇", - "capdot;": "⩀", - "Ccaron;": "Č", - "ccaron;": "č", - "Ccedil;": "Ç", - "ccedil;": "ç", - "circeq;": "≗", - "cirmid;": "⫯", - "Colone;": "⩴", - "colone;": "≔", - "commat;": "@", - "compfn;": "∘", - "Conint;": "∯", - "conint;": "∮", - "coprod;": "∐", - "copysr;": "℗", - "cularr;": "↶", - "CupCap;": "≍", - "cupcap;": "⩆", - "cupcup;": "⩊", - "cupdot;": "⊍", - "curarr;": "↷", - "curren;": "¤", - "cylcty;": "⌭", - "Dagger;": "‡", - "dagger;": "†", - "daleth;": "ℸ", - "Dcaron;": "Ď", - "dcaron;": "ď", - "dfisht;": "⥿", - "divide;": "÷", - "divonx;": "⋇", - "dlcorn;": "⌞", - "dlcrop;": "⌍", - "dollar;": "$", - "DotDot;": "⃜", - "drcorn;": "⌟", - "drcrop;": "⌌", - "Dstrok;": "Đ", - "dstrok;": "đ", - "Eacute;": "É", - "eacute;": "é", - "easter;": "⩮", - "Ecaron;": "Ě", - "ecaron;": "ě", - "ecolon;": "≕", - "Egrave;": "È", - "egrave;": "è", - "egsdot;": "⪘", - "elsdot;": "⪗", - "emptyv;": "∅", - "emsp13;": " ", - "emsp14;": " ", - "eparsl;": "⧣", - "eqcirc;": "≖", - "equals;": "=", - "equest;": "≟", - "Exists;": "∃", - "female;": "♀", - "ffilig;": "ffi", - "ffllig;": "ffl", - "ForAll;": "∀", - "forall;": "∀", - "frac12;": "½", - "frac13;": "⅓", - "frac14;": "¼", - "frac15;": "⅕", - "frac16;": "⅙", - "frac18;": "⅛", - "frac23;": "⅔", - "frac25;": "⅖", - "frac34;": "¾", - "frac35;": "⅗", - "frac38;": "⅜", - "frac45;": "⅘", - "frac56;": "⅚", - "frac58;": "⅝", - "frac78;": "⅞", - "gacute;": "ǵ", - "Gammad;": "Ϝ", - "gammad;": "ϝ", - "Gbreve;": "Ğ", - "gbreve;": "ğ", - "Gcedil;": "Ģ", - "gesdot;": "⪀", - "gesles;": "⪔", - "gtlPar;": "⦕", - "gtrarr;": "⥸", - "gtrdot;": "⋗", - "gtrsim;": "≳", - "hairsp;": " ", - "hamilt;": "ℋ", - "HARDcy;": "Ъ", - "hardcy;": "ъ", - "hearts;": "♥", - "hellip;": "…", - "hercon;": "⊹", - "homtht;": "∻", - "horbar;": "―", - "hslash;": "ℏ", - "Hstrok;": "Ħ", - "hstrok;": "ħ", - "hybull;": "⁃", - "hyphen;": "‐", - "Iacute;": "Í", - "iacute;": "í", - "Igrave;": "Ì", - "igrave;": "ì", - "iiiint;": "⨌", - "iinfin;": "⧜", - "incare;": "℅", - "inodot;": "ı", - "intcal;": "⊺", - "iquest;": "¿", - "isinsv;": "⋳", - "Itilde;": "Ĩ", - "itilde;": "ĩ", - "Jsercy;": "Ј", - "jsercy;": "ј", - "kappav;": "ϰ", - "Kcedil;": "Ķ", - "kcedil;": "ķ", - "kgreen;": "ĸ", - "Lacute;": "Ĺ", - "lacute;": "ĺ", - "lagran;": "ℒ", - "Lambda;": "Λ", - "lambda;": "λ", - "langle;": "⟨", - "larrfs;": "⤝", - "larrhk;": "↩", - "larrlp;": "↫", - "larrpl;": "⤹", - "larrtl;": "↢", - "lAtail;": "⤛", - "latail;": "⤙", - "lbrace;": "{", - "lbrack;": "[", - "Lcaron;": "Ľ", - "lcaron;": "ľ", - "Lcedil;": "Ļ", - "lcedil;": "ļ", - "ldquor;": "„", - "lesdot;": "⩿", - "lesges;": "⪓", - "lfisht;": "⥼", - "lfloor;": "⌊", - "lharul;": "⥪", - "llhard;": "⥫", - "Lmidot;": "Ŀ", - "lmidot;": "ŀ", - "lmoust;": "⎰", - "loplus;": "⨭", - "lowast;": "∗", - "lowbar;": "_", - "lparlt;": "⦓", - "lrhard;": "⥭", - "lsaquo;": "‹", - "lsquor;": "‚", - "Lstrok;": "Ł", - "lstrok;": "ł", - "lthree;": "⋋", - "ltimes;": "⋉", - "ltlarr;": "⥶", - "ltrPar;": "⦖", - "mapsto;": "↦", - "marker;": "▮", - "mcomma;": "⨩", - "midast;": "*", - "midcir;": "⫰", - "middot;": "·", - "minusb;": "⊟", - "minusd;": "∸", - "mnplus;": "∓", - "models;": "⊧", - "mstpos;": "∾", - "Nacute;": "Ń", - "nacute;": "ń", - "nbumpe;": "≏̸", - "Ncaron;": "Ň", - "ncaron;": "ň", - "Ncedil;": "Ņ", - "ncedil;": "ņ", - "nearhk;": "⤤", - "nequiv;": "≢", - "nesear;": "⤨", - "nexist;": "∄", - "nltrie;": "⋬", - "notinE;": "⋹̸", - "nparsl;": "⫽⃥", - "nprcue;": "⋠", - "nrarrc;": "⤳̸", - "nrarrw;": "↝̸", - "nrtrie;": "⋭", - "nsccue;": "⋡", - "nsimeq;": "≄", - "Ntilde;": "Ñ", - "ntilde;": "ñ", - "numero;": "№", - "nVDash;": "⊯", - "nVdash;": "⊮", - "nvDash;": "⊭", - "nvdash;": "⊬", - "nvHarr;": "⤄", - "nvlArr;": "⤂", - "nvrArr;": "⤃", - "nwarhk;": "⤣", - "nwnear;": "⤧", - "Oacute;": "Ó", - "oacute;": "ó", - "Odblac;": "Ő", - "odblac;": "ő", - "odsold;": "⦼", - "Ograve;": "Ò", - "ograve;": "ò", - "ominus;": "⊖", - "origof;": "⊶", - "Oslash;": "Ø", - "oslash;": "ø", - "Otilde;": "Õ", - "otilde;": "õ", - "Otimes;": "⨷", - "otimes;": "⊗", - "parsim;": "⫳", - "percnt;": "%", - "period;": ".", - "permil;": "‰", - "phmmat;": "ℳ", - "planck;": "ℏ", - "plankv;": "ℏ", - "plusdo;": "∔", - "plusdu;": "⨥", - "plusmn;": "±", - "preceq;": "⪯", - "primes;": "ℙ", - "prnsim;": "⋨", - "propto;": "∝", - "prurel;": "⊰", - "puncsp;": " ", - "qprime;": "⁗", - "Racute;": "Ŕ", - "racute;": "ŕ", - "rangle;": "⟩", - "rarrap;": "⥵", - "rarrfs;": "⤞", - "rarrhk;": "↪", - "rarrlp;": "↬", - "rarrpl;": "⥅", - "Rarrtl;": "⤖", - "rarrtl;": "↣", - "rAtail;": "⤜", - "ratail;": "⤚", - "rbrace;": "}", - "rbrack;": "]", - "Rcaron;": "Ř", - "rcaron;": "ř", - "Rcedil;": "Ŗ", - "rcedil;": "ŗ", - "rdquor;": "”", - "rfisht;": "⥽", - "rfloor;": "⌋", - "rharul;": "⥬", - "rmoust;": "⎱", - "roplus;": "⨮", - "rpargt;": "⦔", - "rsaquo;": "›", - "rsquor;": "’", - "rthree;": "⋌", - "rtimes;": "⋊", - "Sacute;": "Ś", - "sacute;": "ś", - "Scaron;": "Š", - "scaron;": "š", - "Scedil;": "Ş", - "scedil;": "ş", - "scnsim;": "⋩", - "searhk;": "⤥", - "seswar;": "⤩", - "sfrown;": "⌢", - "SHCHcy;": "Щ", - "shchcy;": "щ", - "sigmaf;": "ς", - "sigmav;": "ς", - "simdot;": "⩪", - "smashp;": "⨳", - "SOFTcy;": "Ь", - "softcy;": "ь", - "solbar;": "⌿", - "spades;": "♠", - "sqcaps;": "⊓︀", - "sqcups;": "⊔︀", - "sqsube;": "⊑", - "sqsupe;": "⊒", - "Square;": "□", - "square;": "□", - "squarf;": "▪", - "ssetmn;": "∖", - "ssmile;": "⌣", - "sstarf;": "⋆", - "subdot;": "⪽", - "Subset;": "⋐", - "subset;": "⊂", - "subsim;": "⫇", - "subsub;": "⫕", - "subsup;": "⫓", - "succeq;": "⪰", - "supdot;": "⪾", - "Supset;": "⋑", - "supset;": "⊃", - "supsim;": "⫈", - "supsub;": "⫔", - "supsup;": "⫖", - "swarhk;": "⤦", - "swnwar;": "⤪", - "target;": "⌖", - "Tcaron;": "Ť", - "tcaron;": "ť", - "Tcedil;": "Ţ", - "tcedil;": "ţ", - "telrec;": "⌕", - "there4;": "∴", - "thetav;": "ϑ", - "thinsp;": " ", - "thksim;": "∼", - "timesb;": "⊠", - "timesd;": "⨰", - "topbot;": "⌶", - "topcir;": "⫱", - "tprime;": "‴", - "tridot;": "◬", - "Tstrok;": "Ŧ", - "tstrok;": "ŧ", - "Uacute;": "Ú", - "uacute;": "ú", - "Ubreve;": "Ŭ", - "ubreve;": "ŭ", - "Udblac;": "Ű", - "udblac;": "ű", - "ufisht;": "⥾", - "Ugrave;": "Ù", - "ugrave;": "ù", - "ulcorn;": "⌜", - "ulcrop;": "⌏", - "urcorn;": "⌝", - "urcrop;": "⌎", - "Utilde;": "Ũ", - "utilde;": "ũ", - "vangrt;": "⦜", - "varphi;": "ϕ", - "varrho;": "ϱ", - "Vdashl;": "⫦", - "veebar;": "⊻", - "vellip;": "⋮", - "Verbar;": "‖", - "verbar;": "|", - "vsubnE;": "⫋︀", - "vsubne;": "⊊︀", - "vsupnE;": "⫌︀", - "vsupne;": "⊋︀", - "Vvdash;": "⊪", - "wedbar;": "⩟", - "wedgeq;": "≙", - "weierp;": "℘", - "wreath;": "≀", - "xoplus;": "⨁", - "xotime;": "⨂", - "xsqcup;": "⨆", - "xuplus;": "⨄", - "xwedge;": "⋀", - "Yacute;": "Ý", - "yacute;": "ý", - "Zacute;": "Ź", - "zacute;": "ź", - "Zcaron;": "Ž", - "zcaron;": "ž", - "zeetrf;": "ℨ", - "alefsym;": "ℵ", - "angrtvb;": "⊾", - "angzarr;": "⍼", - "asympeq;": "≍", - "backsim;": "∽", - "Because;": "∵", - "because;": "∵", - "bemptyv;": "⦰", - "between;": "≬", - "bigcirc;": "◯", - "bigodot;": "⨀", - "bigstar;": "★", - "bnequiv;": "≡⃥", - "boxplus;": "⊞", - "Cayleys;": "ℭ", - "Cconint;": "∰", - "ccupssm;": "⩐", - "Cedilla;": "¸", - "cemptyv;": "⦲", - "cirscir;": "⧂", - "coloneq;": "≔", - "congdot;": "⩭", - "cudarrl;": "⤸", - "cudarrr;": "⤵", - "cularrp;": "⤽", - "curarrm;": "⤼", - "dbkarow;": "⤏", - "ddagger;": "‡", - "ddotseq;": "⩷", - "demptyv;": "⦱", - "Diamond;": "⋄", - "diamond;": "⋄", - "digamma;": "ϝ", - "dotplus;": "∔", - "DownTee;": "⊤", - "dwangle;": "⦦", - "Element;": "∈", - "Epsilon;": "Ε", - "epsilon;": "ε", - "eqcolon;": "≕", - "equivDD;": "⩸", - "gesdoto;": "⪂", - "gtquest;": "⩼", - "gtrless;": "≷", - "harrcir;": "⥈", - "Implies;": "⇒", - "intprod;": "⨼", - "isindot;": "⋵", - "larrbfs;": "⤟", - "larrsim;": "⥳", - "lbrksld;": "⦏", - "lbrkslu;": "⦍", - "ldrdhar;": "⥧", - "LeftTee;": "⊣", - "lesdoto;": "⪁", - "lessdot;": "⋖", - "lessgtr;": "≶", - "lesssim;": "≲", - "lotimes;": "⨴", - "lozenge;": "◊", - "ltquest;": "⩻", - "luruhar;": "⥦", - "maltese;": "✠", - "minusdu;": "⨪", - "napprox;": "≉", - "natural;": "♮", - "nearrow;": "↗", - "NewLine;": "\n", - "nexists;": "∄", - "NoBreak;": "⁠", - "notinva;": "∉", - "notinvb;": "⋷", - "notinvc;": "⋶", - "NotLess;": "≮", - "notniva;": "∌", - "notnivb;": "⋾", - "notnivc;": "⋽", - "npolint;": "⨔", - "npreceq;": "⪯̸", - "nsqsube;": "⋢", - "nsqsupe;": "⋣", - "nsubset;": "⊂⃒", - "nsucceq;": "⪰̸", - "nsupset;": "⊃⃒", - "nvinfin;": "⧞", - "nvltrie;": "⊴⃒", - "nvrtrie;": "⊵⃒", - "nwarrow;": "↖", - "olcross;": "⦻", - "Omicron;": "Ο", - "omicron;": "ο", - "orderof;": "ℴ", - "orslope;": "⩗", - "OverBar;": "‾", - "pertenk;": "‱", - "planckh;": "ℎ", - "pluscir;": "⨢", - "plussim;": "⨦", - "plustwo;": "⨧", - "precsim;": "≾", - "Product;": "∏", - "quatint;": "⨖", - "questeq;": "≟", - "rarrbfs;": "⤠", - "rarrsim;": "⥴", - "rbrksld;": "⦎", - "rbrkslu;": "⦐", - "rdldhar;": "⥩", - "realine;": "ℛ", - "rotimes;": "⨵", - "ruluhar;": "⥨", - "searrow;": "↘", - "simplus;": "⨤", - "simrarr;": "⥲", - "subedot;": "⫃", - "submult;": "⫁", - "subplus;": "⪿", - "subrarr;": "⥹", - "succsim;": "≿", - "supdsub;": "⫘", - "supedot;": "⫄", - "suphsol;": "⟉", - "suphsub;": "⫗", - "suplarr;": "⥻", - "supmult;": "⫂", - "supplus;": "⫀", - "swarrow;": "↙", - "topfork;": "⫚", - "triplus;": "⨹", - "tritime;": "⨻", - "UpArrow;": "↑", - "Uparrow;": "⇑", - "uparrow;": "↑", - "Upsilon;": "Υ", - "upsilon;": "υ", - "uwangle;": "⦧", - "vzigzag;": "⦚", - "zigrarr;": "⇝", - "andslope;": "⩘", - "angmsdaa;": "⦨", - "angmsdab;": "⦩", - "angmsdac;": "⦪", - "angmsdad;": "⦫", - "angmsdae;": "⦬", - "angmsdaf;": "⦭", - "angmsdag;": "⦮", - "angmsdah;": "⦯", - "angrtvbd;": "⦝", - "approxeq;": "≊", - "awconint;": "∳", - "backcong;": "≌", - "barwedge;": "⌅", - "bbrktbrk;": "⎶", - "bigoplus;": "⨁", - "bigsqcup;": "⨆", - "biguplus;": "⨄", - "bigwedge;": "⋀", - "boxminus;": "⊟", - "boxtimes;": "⊠", - "bsolhsub;": "⟈", - "capbrcup;": "⩉", - "circledR;": "®", - "circledS;": "Ⓢ", - "cirfnint;": "⨐", - "clubsuit;": "♣", - "cupbrcap;": "⩈", - "curlyvee;": "⋎", - "cwconint;": "∲", - "DDotrahd;": "⤑", - "doteqdot;": "≑", - "DotEqual;": "≐", - "dotminus;": "∸", - "drbkarow;": "⤐", - "dzigrarr;": "⟿", - "elinters;": "⏧", - "emptyset;": "∅", - "eqvparsl;": "⧥", - "fpartint;": "⨍", - "geqslant;": "⩾", - "gesdotol;": "⪄", - "gnapprox;": "⪊", - "hksearow;": "⤥", - "hkswarow;": "⤦", - "imagline;": "ℐ", - "imagpart;": "ℑ", - "infintie;": "⧝", - "integers;": "ℤ", - "Integral;": "∫", - "intercal;": "⊺", - "intlarhk;": "⨗", - "laemptyv;": "⦴", - "ldrushar;": "⥋", - "leqslant;": "⩽", - "lesdotor;": "⪃", - "LessLess;": "⪡", - "llcorner;": "⌞", - "lnapprox;": "⪉", - "lrcorner;": "⌟", - "lurdshar;": "⥊", - "mapstoup;": "↥", - "multimap;": "⊸", - "naturals;": "ℕ", - "ncongdot;": "⩭̸", - "NotEqual;": "≠", - "notindot;": "⋵̸", - "NotTilde;": "≁", - "otimesas;": "⨶", - "parallel;": "∥", - "PartialD;": "∂", - "plusacir;": "⨣", - "pointint;": "⨕", - "Precedes;": "≺", - "precneqq;": "⪵", - "precnsim;": "⋨", - "profalar;": "⌮", - "profline;": "⌒", - "profsurf;": "⌓", - "raemptyv;": "⦳", - "realpart;": "ℜ", - "RightTee;": "⊢", - "rppolint;": "⨒", - "rtriltri;": "⧎", - "scpolint;": "⨓", - "setminus;": "∖", - "shortmid;": "∣", - "smeparsl;": "⧤", - "sqsubset;": "⊏", - "sqsupset;": "⊐", - "subseteq;": "⊆", - "Succeeds;": "≻", - "succneqq;": "⪶", - "succnsim;": "⋩", - "SuchThat;": "∋", - "Superset;": "⊃", - "supseteq;": "⊇", - "thetasym;": "ϑ", - "thicksim;": "∼", - "timesbar;": "⨱", - "triangle;": "▵", - "triminus;": "⨺", - "trpezium;": "⏢", - "Uarrocir;": "⥉", - "ulcorner;": "⌜", - "UnderBar;": "_", - "urcorner;": "⌝", - "varkappa;": "ϰ", - "varsigma;": "ς", - "vartheta;": "ϑ", - "backprime;": "‵", - "backsimeq;": "⋍", - "Backslash;": "∖", - "bigotimes;": "⨂", - "CenterDot;": "·", - "centerdot;": "·", - "checkmark;": "✓", - "CircleDot;": "⊙", - "complexes;": "ℂ", - "Congruent;": "≡", - "Coproduct;": "∐", - "dotsquare;": "⊡", - "DoubleDot;": "¨", - "DownArrow;": "↓", - "Downarrow;": "⇓", - "downarrow;": "↓", - "DownBreve;": "̑", - "gtrapprox;": "⪆", - "gtreqless;": "⋛", - "gvertneqq;": "≩︀", - "heartsuit;": "♥", - "HumpEqual;": "≏", - "LeftArrow;": "←", - "Leftarrow;": "⇐", - "leftarrow;": "←", - "LeftFloor;": "⌊", - "lesseqgtr;": "⋚", - "LessTilde;": "≲", - "lvertneqq;": "≨︀", - "Mellintrf;": "ℳ", - "MinusPlus;": "∓", - "ngeqslant;": "⩾̸", - "nleqslant;": "⩽̸", - "NotCupCap;": "≭", - "NotExists;": "∄", - "NotSubset;": "⊂⃒", - "nparallel;": "∦", - "nshortmid;": "∤", - "nsubseteq;": "⊈", - "nsupseteq;": "⊉", - "OverBrace;": "⏞", - "pitchfork;": "⋔", - "PlusMinus;": "±", - "rationals;": "ℚ", - "spadesuit;": "♠", - "subseteqq;": "⫅", - "subsetneq;": "⊊", - "supseteqq;": "⫆", - "supsetneq;": "⊋", - "Therefore;": "∴", - "therefore;": "∴", - "ThinSpace;": " ", - "triangleq;": "≜", - "TripleDot;": "⃛", - "UnionPlus;": "⊎", - "varpropto;": "∝", - "Bernoullis;": "ℬ", - "circledast;": "⊛", - "CirclePlus;": "⊕", - "complement;": "∁", - "curlywedge;": "⋏", - "eqslantgtr;": "⪖", - "EqualTilde;": "≂", - "Fouriertrf;": "ℱ", - "gtreqqless;": "⪌", - "ImaginaryI;": "ⅈ", - "Laplacetrf;": "ℒ", - "LeftVector;": "↼", - "lessapprox;": "⪅", - "lesseqqgtr;": "⪋", - "Lleftarrow;": "⇚", - "lmoustache;": "⎰", - "longmapsto;": "⟼", - "mapstodown;": "↧", - "mapstoleft;": "↤", - "nLeftarrow;": "⇍", - "nleftarrow;": "↚", - "NotElement;": "∉", - "NotGreater;": "≯", - "nsubseteqq;": "⫅̸", - "nsupseteqq;": "⫆̸", - "precapprox;": "⪷", - "Proportion;": "∷", - "RightArrow;": "→", - "Rightarrow;": "⇒", - "rightarrow;": "→", - "RightFloor;": "⌋", - "rmoustache;": "⎱", - "sqsubseteq;": "⊑", - "sqsupseteq;": "⊒", - "subsetneqq;": "⫋", - "succapprox;": "⪸", - "supsetneqq;": "⫌", - "ThickSpace;": "  ", - "TildeEqual;": "≃", - "TildeTilde;": "≈", - "UnderBrace;": "⏟", - "UpArrowBar;": "⤒", - "UpTeeArrow;": "↥", - "upuparrows;": "⇈", - "varepsilon;": "ϵ", - "varnothing;": "∅", - "backepsilon;": "϶", - "blacksquare;": "▪", - "circledcirc;": "⊚", - "circleddash;": "⊝", - "CircleMinus;": "⊖", - "CircleTimes;": "⊗", - "curlyeqprec;": "⋞", - "curlyeqsucc;": "⋟", - "diamondsuit;": "♦", - "eqslantless;": "⪕", - "Equilibrium;": "⇌", - "expectation;": "ℰ", - "GreaterLess;": "≷", - "LeftCeiling;": "⌈", - "LessGreater;": "≶", - "MediumSpace;": " ", - "NotLessLess;": "≪̸", - "NotPrecedes;": "⊀", - "NotSucceeds;": "⊁", - "NotSuperset;": "⊃⃒", - "nRightarrow;": "⇏", - "nrightarrow;": "↛", - "OverBracket;": "⎴", - "preccurlyeq;": "≼", - "precnapprox;": "⪹", - "quaternions;": "ℍ", - "RightVector;": "⇀", - "Rrightarrow;": "⇛", - "RuleDelayed;": "⧴", - "SmallCircle;": "∘", - "SquareUnion;": "⊔", - "straightphi;": "ϕ", - "SubsetEqual;": "⊆", - "succcurlyeq;": "≽", - "succnapprox;": "⪺", - "thickapprox;": "≈", - "UpDownArrow;": "↕", - "Updownarrow;": "⇕", - "updownarrow;": "↕", - "VerticalBar;": "∣", - "blacklozenge;": "⧫", - "DownArrowBar;": "⤓", - "DownTeeArrow;": "↧", - "ExponentialE;": "ⅇ", - "exponentiale;": "ⅇ", - "GreaterEqual;": "≥", - "GreaterTilde;": "≳", - "HilbertSpace;": "ℋ", - "HumpDownHump;": "≎", - "Intersection;": "⋂", - "LeftArrowBar;": "⇤", - "LeftTeeArrow;": "↤", - "LeftTriangle;": "⊲", - "LeftUpVector;": "↿", - "NotCongruent;": "≢", - "NotHumpEqual;": "≏̸", - "NotLessEqual;": "≰", - "NotLessTilde;": "≴", - "Proportional;": "∝", - "RightCeiling;": "⌉", - "risingdotseq;": "≓", - "RoundImplies;": "⥰", - "ShortUpArrow;": "↑", - "SquareSubset;": "⊏", - "triangledown;": "▿", - "triangleleft;": "◃", - "UnderBracket;": "⎵", - "varsubsetneq;": "⊊︀", - "varsupsetneq;": "⊋︀", - "VerticalLine;": "|", - "ApplyFunction;": "⁡", - "bigtriangleup;": "△", - "blacktriangle;": "▴", - "DifferentialD;": "ⅆ", - "divideontimes;": "⋇", - "DoubleLeftTee;": "⫤", - "DoubleUpArrow;": "⇑", - "fallingdotseq;": "≒", - "hookleftarrow;": "↩", - "leftarrowtail;": "↢", - "leftharpoonup;": "↼", - "LeftTeeVector;": "⥚", - "LeftVectorBar;": "⥒", - "LessFullEqual;": "≦", - "LongLeftArrow;": "⟵", - "Longleftarrow;": "⟸", - "longleftarrow;": "⟵", - "looparrowleft;": "↫", - "measuredangle;": "∡", - "NotEqualTilde;": "≂̸", - "NotTildeEqual;": "≄", - "NotTildeTilde;": "≉", - "ntriangleleft;": "⋪", - "Poincareplane;": "ℌ", - "PrecedesEqual;": "⪯", - "PrecedesTilde;": "≾", - "RightArrowBar;": "⇥", - "RightTeeArrow;": "↦", - "RightTriangle;": "⊳", - "RightUpVector;": "↾", - "shortparallel;": "∥", - "smallsetminus;": "∖", - "SucceedsEqual;": "⪰", - "SucceedsTilde;": "≿", - "SupersetEqual;": "⊇", - "triangleright;": "▹", - "UpEquilibrium;": "⥮", - "upharpoonleft;": "↿", - "varsubsetneqq;": "⫋︀", - "varsupsetneqq;": "⫌︀", - "VerticalTilde;": "≀", - "VeryThinSpace;": " ", - "curvearrowleft;": "↶", - "DiacriticalDot;": "˙", - "doublebarwedge;": "⌆", - "DoubleRightTee;": "⊨", - "downdownarrows;": "⇊", - "DownLeftVector;": "↽", - "GreaterGreater;": "⪢", - "hookrightarrow;": "↪", - "HorizontalLine;": "─", - "InvisibleComma;": "⁣", - "InvisibleTimes;": "⁢", - "LeftDownVector;": "⇃", - "leftleftarrows;": "⇇", - "LeftRightArrow;": "↔", - "Leftrightarrow;": "⇔", - "leftrightarrow;": "↔", - "leftthreetimes;": "⋋", - "LessSlantEqual;": "⩽", - "LongRightArrow;": "⟶", - "Longrightarrow;": "⟹", - "longrightarrow;": "⟶", - "looparrowright;": "↬", - "LowerLeftArrow;": "↙", - "NestedLessLess;": "≪", - "NotGreaterLess;": "≹", - "NotLessGreater;": "≸", - "NotSubsetEqual;": "⊈", - "NotVerticalBar;": "∤", - "nshortparallel;": "∦", - "ntriangleright;": "⋫", - "OpenCurlyQuote;": "‘", - "ReverseElement;": "∋", - "rightarrowtail;": "↣", - "rightharpoonup;": "⇀", - "RightTeeVector;": "⥛", - "RightVectorBar;": "⥓", - "ShortDownArrow;": "↓", - "ShortLeftArrow;": "←", - "SquareSuperset;": "⊐", - "TildeFullEqual;": "≅", - "trianglelefteq;": "⊴", - "upharpoonright;": "↾", - "UpperLeftArrow;": "↖", - "ZeroWidthSpace;": "​", - "bigtriangledown;": "▽", - "circlearrowleft;": "↺", - "CloseCurlyQuote;": "’", - "ContourIntegral;": "∮", - "curvearrowright;": "↷", - "DoubleDownArrow;": "⇓", - "DoubleLeftArrow;": "⇐", - "downharpoonleft;": "⇃", - "DownRightVector;": "⇁", - "leftharpoondown;": "↽", - "leftrightarrows;": "⇆", - "LeftRightVector;": "⥎", - "LeftTriangleBar;": "⧏", - "LeftUpTeeVector;": "⥠", - "LeftUpVectorBar;": "⥘", - "LowerRightArrow;": "↘", - "nLeftrightarrow;": "⇎", - "nleftrightarrow;": "↮", - "NotGreaterEqual;": "≱", - "NotGreaterTilde;": "≵", - "NotHumpDownHump;": "≎̸", - "NotLeftTriangle;": "⋪", - "NotSquareSubset;": "⊏̸", - "ntrianglelefteq;": "⋬", - "OverParenthesis;": "⏜", - "RightDownVector;": "⇂", - "rightleftarrows;": "⇄", - "rightsquigarrow;": "↝", - "rightthreetimes;": "⋌", - "ShortRightArrow;": "→", - "straightepsilon;": "ϵ", - "trianglerighteq;": "⊵", - "UpperRightArrow;": "↗", - "vartriangleleft;": "⊲", - "circlearrowright;": "↻", - "DiacriticalAcute;": "´", - "DiacriticalGrave;": "`", - "DiacriticalTilde;": "˜", - "DoubleRightArrow;": "⇒", - "DownArrowUpArrow;": "⇵", - "downharpoonright;": "⇂", - "EmptySmallSquare;": "◻", - "GreaterEqualLess;": "⋛", - "GreaterFullEqual;": "≧", - "LeftAngleBracket;": "⟨", - "LeftUpDownVector;": "⥑", - "LessEqualGreater;": "⋚", - "NonBreakingSpace;": " ", - "NotPrecedesEqual;": "⪯̸", - "NotRightTriangle;": "⋫", - "NotSucceedsEqual;": "⪰̸", - "NotSucceedsTilde;": "≿̸", - "NotSupersetEqual;": "⊉", - "ntrianglerighteq;": "⋭", - "rightharpoondown;": "⇁", - "rightrightarrows;": "⇉", - "RightTriangleBar;": "⧐", - "RightUpTeeVector;": "⥜", - "RightUpVectorBar;": "⥔", - "twoheadleftarrow;": "↞", - "UnderParenthesis;": "⏝", - "UpArrowDownArrow;": "⇅", - "vartriangleright;": "⊳", - "blacktriangledown;": "▾", - "blacktriangleleft;": "◂", - "DoubleUpDownArrow;": "⇕", - "DoubleVerticalBar;": "∥", - "DownLeftTeeVector;": "⥞", - "DownLeftVectorBar;": "⥖", - "FilledSmallSquare;": "◼", - "GreaterSlantEqual;": "⩾", - "LeftDoubleBracket;": "⟦", - "LeftDownTeeVector;": "⥡", - "LeftDownVectorBar;": "⥙", - "leftrightharpoons;": "⇋", - "LeftTriangleEqual;": "⊴", - "NegativeThinSpace;": "​", - "NotGreaterGreater;": "≫̸", - "NotLessSlantEqual;": "⩽̸", - "NotNestedLessLess;": "⪡̸", - "NotReverseElement;": "∌", - "NotSquareSuperset;": "⊐̸", - "NotTildeFullEqual;": "≇", - "RightAngleBracket;": "⟩", - "rightleftharpoons;": "⇌", - "RightUpDownVector;": "⥏", - "SquareSubsetEqual;": "⊑", - "twoheadrightarrow;": "↠", - "VerticalSeparator;": "❘", - "blacktriangleright;": "▸", - "DownRightTeeVector;": "⥟", - "DownRightVectorBar;": "⥗", - "LongLeftRightArrow;": "⟷", - "Longleftrightarrow;": "⟺", - "longleftrightarrow;": "⟷", - "NegativeThickSpace;": "​", - "NotLeftTriangleBar;": "⧏̸", - "PrecedesSlantEqual;": "≼", - "ReverseEquilibrium;": "⇋", - "RightDoubleBracket;": "⟧", - "RightDownTeeVector;": "⥝", - "RightDownVectorBar;": "⥕", - "RightTriangleEqual;": "⊵", - "SquareIntersection;": "⊓", - "SucceedsSlantEqual;": "≽", - "DoubleLongLeftArrow;": "⟸", - "DownLeftRightVector;": "⥐", - "LeftArrowRightArrow;": "⇆", - "leftrightsquigarrow;": "↭", - "NegativeMediumSpace;": "​", - "NotGreaterFullEqual;": "≧̸", - "NotRightTriangleBar;": "⧐̸", - "RightArrowLeftArrow;": "⇄", - "SquareSupersetEqual;": "⊒", - "CapitalDifferentialD;": "ⅅ", - "DoubleLeftRightArrow;": "⇔", - "DoubleLongRightArrow;": "⟹", - "EmptyVerySmallSquare;": "▫", - "NestedGreaterGreater;": "≫", - "NotDoubleVerticalBar;": "∦", - "NotGreaterSlantEqual;": "⩾̸", - "NotLeftTriangleEqual;": "⋬", - "NotSquareSubsetEqual;": "⋢", - "OpenCurlyDoubleQuote;": "“", - "ReverseUpEquilibrium;": "⥯", - "CloseCurlyDoubleQuote;": "”", - "DoubleContourIntegral;": "∯", - "FilledVerySmallSquare;": "▪", - "NegativeVeryThinSpace;": "​", - "NotPrecedesSlantEqual;": "⋠", - "NotRightTriangleEqual;": "⋭", - "NotSucceedsSlantEqual;": "⋡", - "DiacriticalDoubleAcute;": "˝", - "NotSquareSupersetEqual;": "⋣", - "NotNestedGreaterGreater;": "⪢̸", - "ClockwiseContourIntegral;": "∲", - "DoubleLongLeftRightArrow;": "⟺", - "CounterClockwiseContourIntegral;": "∳" -}; - -let maxCRNameLength; -const decodeHtml = (rawText, asAttr) => { - let offset = 0; - const end = rawText.length; - let decodedText = ""; - function advance(length) { - offset += length; - rawText = rawText.slice(length); - } - while (offset < end) { - const head = /&(?:#x?)?/i.exec(rawText); - if (!head || offset + head.index >= end) { - const remaining = end - offset; - decodedText += rawText.slice(0, remaining); - advance(remaining); - break; - } - decodedText += rawText.slice(0, head.index); - advance(head.index); - if (head[0] === "&") { - let name = ""; - let value = void 0; - if (/[0-9a-z]/i.test(rawText[1])) { - if (!maxCRNameLength) { - maxCRNameLength = Object.keys(namedCharacterReferences).reduce( - (max, name2) => Math.max(max, name2.length), - 0 - ); - } - for (let length = maxCRNameLength; !value && length > 0; --length) { - name = rawText.slice(1, 1 + length); - value = namedCharacterReferences[name]; - } - if (value) { - const semi = name.endsWith(";"); - if (asAttr && !semi && /[=a-z0-9]/i.test(rawText[name.length + 1] || "")) { - decodedText += "&" + name; - advance(1 + name.length); - } else { - decodedText += value; - advance(1 + name.length); - } - } else { - decodedText += "&" + name; - advance(1 + name.length); - } - } else { - decodedText += "&"; - advance(1); - } - } else { - const hex = head[0] === "&#x"; - const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/; - const body = pattern.exec(rawText); - if (!body) { - decodedText += head[0]; - advance(head[0].length); - } else { - let cp = Number.parseInt(body[1], hex ? 16 : 10); - if (cp === 0) { - cp = 65533; - } else if (cp > 1114111) { - cp = 65533; - } else if (cp >= 55296 && cp <= 57343) { - cp = 65533; - } else if (cp >= 64976 && cp <= 65007 || (cp & 65534) === 65534) ; else if (cp >= 1 && cp <= 8 || cp === 11 || cp >= 13 && cp <= 31 || cp >= 127 && cp <= 159) { - cp = CCR_REPLACEMENTS[cp] || cp; - } - decodedText += String.fromCodePoint(cp); - advance(body[0].length); - } - } - } - return decodedText; -}; -const CCR_REPLACEMENTS = { - 128: 8364, - 130: 8218, - 131: 402, - 132: 8222, - 133: 8230, - 134: 8224, - 135: 8225, - 136: 710, - 137: 8240, - 138: 352, - 139: 8249, - 140: 338, - 142: 381, - 145: 8216, - 146: 8217, - 147: 8220, - 148: 8221, - 149: 8226, - 150: 8211, - 151: 8212, - 152: 732, - 153: 8482, - 154: 353, - 155: 8250, - 156: 339, - 158: 382, - 159: 376 -}; - -const isRawTextContainer = /* @__PURE__ */ shared.makeMap( - "style,iframe,script,noscript", - true -); const parserOptions = { + parseMode: "html", isVoidTag: shared.isVoidTag, - isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag), + isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag) || shared.isMathMLTag(tag), isPreTag: (tag) => tag === "pre", - decodeEntities: decodeHtml, + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: void 0, isBuiltInComponent: (tag) => { - if (compilerCore.isBuiltInType(tag, `Transition`)) { + if (tag === "Transition" || tag === "transition") { return TRANSITION; - } else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) { + } else if (tag === "TransitionGroup" || tag === "transition-group") { return TRANSITION_GROUP; } }, // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher - getNamespace(tag, parent) { - let ns = parent ? parent.ns : 0; + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; if (parent && ns === 2) { if (parent.tag === "annotation-xml") { if (tag === "svg") { @@ -2413,18 +89,6 @@ const parserOptions = { } } return ns; - }, - // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments - getTextMode({ tag, ns }) { - if (ns === 0) { - if (tag === "textarea" || tag === "title") { - return 1; - } - if (isRawTextContainer(tag)) { - return 2; - } - } - return 0; } }; @@ -2461,6 +125,32 @@ function createDOMCompilerError(code, loc) { DOMErrorMessages ); } +const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" +}; const DOMErrorMessages = { [53]: `v-html is missing expression.`, [54]: `v-html will override element children.`, @@ -2596,16 +286,13 @@ const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` ); const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); -const isKeyboardEvent = /* @__PURE__ */ shared.makeMap( - `onkeyup,onkeydown,onkeypress`, - true -); +const isKeyboardEvent = /* @__PURE__ */ shared.makeMap(`onkeyup,onkeydown,onkeypress`); const resolveModifiers = (key, modifiers, context, loc) => { const keyModifiers = []; const nonKeyModifiers = []; const eventOptionModifiers = []; for (let i = 0; i < modifiers.length; i++) { - const modifier = modifiers[i]; + const modifier = modifiers[i].content; if (modifier === "native" && compilerCore.checkCompatEnabled( "COMPILER_V_ON_NATIVE", context, @@ -2617,7 +304,7 @@ const resolveModifiers = (key, modifiers, context, loc) => { } else { if (maybeKeyModifier(modifier)) { if (compilerCore.isStaticExp(key)) { - if (isKeyboardEvent(key.content)) { + if (isKeyboardEvent(key.content.toLowerCase())) { keyModifiers.push(modifier); } else { nonKeyModifiers.push(modifier); @@ -2654,8 +341,7 @@ const transformClick = (key, event) => { const transformOn = (dir, node, context) => { return compilerCore.transformOn(dir, node, context, (baseResult) => { const { modifiers } = dir; - if (!modifiers.length) - return baseResult; + if (!modifiers.length) return baseResult; let { key, value: handlerExp } = baseResult.props[0]; const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); if (nonKeyModifiers.includes("right")) { @@ -2671,7 +357,7 @@ const transformOn = (dir, node, context) => { ]); } if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard - (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) { + (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ handlerExp, JSON.stringify(keyModifiers) @@ -2705,6 +391,7 @@ const stringifyStatic = (children, context, parent) => { if (context.scopes.vSlot > 0) { return; } + const isParentCached = parent.type === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 20; let nc = 0; let ec = 0; const currentChunk = []; @@ -2718,29 +405,44 @@ const stringifyStatic = (children, context, parent) => { // will insert / hydrate String(currentChunk.length) ]); - replaceHoist(currentChunk[0], staticCall, context); - if (currentChunk.length > 1) { - for (let i2 = 1; i2 < currentChunk.length; i2++) { - replaceHoist(currentChunk[i2], null, context); + const deleteCount = currentChunk.length - 1; + if (isParentCached) { + children.splice( + currentIndex - currentChunk.length, + currentChunk.length, + // @ts-expect-error + staticCall + ); + } else { + currentChunk[0].codegenNode.value = staticCall; + if (currentChunk.length > 1) { + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + const cacheIndex = context.cached.indexOf( + currentChunk[currentChunk.length - 1].codegenNode + ); + if (cacheIndex > -1) { + for (let i2 = cacheIndex; i2 < context.cached.length; i2++) { + const c = context.cached[i2]; + if (c) c.index -= deleteCount; + } + context.cached.splice(cacheIndex - deleteCount + 1, deleteCount); + } } - const deleteCount = currentChunk.length - 1; - children.splice(currentIndex - currentChunk.length + 1, deleteCount); - return deleteCount; } + return deleteCount; } return 0; }; let i = 0; for (; i < children.length; i++) { const child = children[i]; - const hoisted = getHoistedNode(child); - if (hoisted) { - const node = child; - const result = analyzeNode(node); + const isCached = isParentCached || getCachedNode(child); + if (isCached) { + const result = analyzeNode(child); if (result) { nc += result[0]; ec += result[1]; - currentChunk.push(node); + currentChunk.push(child); continue; } } @@ -2751,14 +453,14 @@ const stringifyStatic = (children, context, parent) => { } stringifyCurrentChunk(i); }; -const getHoistedNode = (node) => (node.type === 1 && node.tagType === 0 || node.type == 12) && node.codegenNode && node.codegenNode.type === 4 && node.codegenNode.hoisted; +const getCachedNode = (node) => { + if ((node.type === 1 && node.tagType === 0 || node.type === 12) && node.codegenNode && node.codegenNode.type === 20) { + return node.codegenNode; + } +}; const dataAriaRE = /^(data|aria)-/; const isStringifiableAttr = (name, ns) => { - return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : false) || dataAriaRE.test(name); -}; -const replaceHoist = (node, replacement, context) => { - const hoistToReplace = node.codegenNode.hoisted; - context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement; + return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : ns === 2 ? shared.isKnownMathMLAttr(name) : false) || dataAriaRE.test(name); }; const isNonStringifiable = /* @__PURE__ */ shared.makeMap( `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` @@ -2778,6 +480,7 @@ function analyzeNode(node) { return false; }; function walk(node2) { + const isOptionTag = node2.tag === "option" && node2.ns === 0; for (let i = 0; i < node2.props.length; i++) { const p = node2.props[i]; if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { @@ -2790,6 +493,9 @@ function analyzeNode(node) { if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { return bail(); } + if (isOptionTag && compilerCore.isStaticArgOf(p.arg, "value") && p.exp && !p.exp.isStatic) { + return bail(); + } } } for (let i = 0; i < node2.children.length; i++) { @@ -2931,9 +637,9 @@ const DOMDirectiveTransforms = { // override compiler-core show: transformShow }; -function compile(template, options = {}) { +function compile(src, options = {}) { return compilerCore.baseCompile( - template, + src, shared.extend({}, parserOptions, options, { nodeTransforms: [ // ignore <script> and <tag> @@ -2957,6 +663,8 @@ function parse(template, options = {}) { } exports.DOMDirectiveTransforms = DOMDirectiveTransforms; +exports.DOMErrorCodes = DOMErrorCodes; +exports.DOMErrorMessages = DOMErrorMessages; exports.DOMNodeTransforms = DOMNodeTransforms; exports.TRANSITION = TRANSITION; exports.TRANSITION_GROUP = TRANSITION_GROUP; diff --git a/.output/server/node_modules/@vue/compiler-dom/index.js b/.output/server/node_modules/@vue/compiler-dom/index.js deleted file mode 100644 index b5f7a05..0000000 --- a/.output/server/node_modules/@vue/compiler-dom/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/compiler-dom.cjs.prod.js') -} else { - module.exports = require('./dist/compiler-dom.cjs.js') -} diff --git a/.output/server/node_modules/@vue/compiler-dom/package.json b/.output/server/node_modules/@vue/compiler-dom/package.json index 583a68e..1acf69e 100644 --- a/.output/server/node_modules/@vue/compiler-dom/package.json +++ b/.output/server/node_modules/@vue/compiler-dom/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-dom", - "version": "3.3.9", + "version": "3.5.13", "description": "@vue/compiler-dom", "main": "index.js", "module": "dist/compiler-dom.esm-bundler.js", @@ -11,6 +11,20 @@ "index.js", "dist" ], + "exports": { + ".": { + "types": "./dist/compiler-dom.d.ts", + "node": { + "production": "./dist/compiler-dom.cjs.prod.js", + "development": "./dist/compiler-dom.cjs.js", + "default": "./dist/compiler-dom.cjs.prod.js" + }, + "module": "./dist/compiler-dom.esm-bundler.js", + "import": "./dist/compiler-dom.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, "sideEffects": false, "buildOptions": { "name": "VueCompilerDOM", @@ -37,7 +51,10 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme", "dependencies": { - "@vue/shared": "3.3.9", - "@vue/compiler-core": "3.3.9" - } + "@vue/shared": "3.5.13", + "@vue/compiler-core": "3.5.13" + }, + "__npminstall_done": true, + "_from": "@vue/compiler-dom@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js b/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js index 51022d3..241e298 100644 --- a/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +++ b/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js @@ -1,3 +1,8 @@ +/** +* @vue/compiler-ssr v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -16,11 +21,17 @@ const SSR_RENDER_ATTRS = Symbol(`ssrRenderAttrs`); const SSR_RENDER_ATTR = Symbol(`ssrRenderAttr`); const SSR_RENDER_DYNAMIC_ATTR = Symbol(`ssrRenderDynamicAttr`); const SSR_RENDER_LIST = Symbol(`ssrRenderList`); -const SSR_INCLUDE_BOOLEAN_ATTR = Symbol(`ssrIncludeBooleanAttr`); +const SSR_INCLUDE_BOOLEAN_ATTR = Symbol( + `ssrIncludeBooleanAttr` +); const SSR_LOOSE_EQUAL = Symbol(`ssrLooseEqual`); const SSR_LOOSE_CONTAIN = Symbol(`ssrLooseContain`); -const SSR_RENDER_DYNAMIC_MODEL = Symbol(`ssrRenderDynamicModel`); -const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol(`ssrGetDynamicModelProps`); +const SSR_RENDER_DYNAMIC_MODEL = Symbol( + `ssrRenderDynamicModel` +); +const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol( + `ssrGetDynamicModelProps` +); const SSR_RENDER_TELEPORT = Symbol(`ssrRenderTeleport`); const SSR_RENDER_SUSPENSE = Symbol(`ssrRenderSuspense`); const SSR_GET_DIRECTIVE_PROPS = Symbol(`ssrGetDirectiveProps`); @@ -51,7 +62,7 @@ const ssrTransformIf = compilerDom.createStructuralDirectiveTransform( /^(if|else|else-if)$/, compilerDom.processIf ); -function ssrProcessIf(node, context, disableNestedFragments = false) { +function ssrProcessIf(node, context, disableNestedFragments = false, disableComment = false) { const [rootBranch] = node.branches; const ifStatement = compilerDom.createIfStatement( rootBranch.condition, @@ -75,7 +86,7 @@ function ssrProcessIf(node, context, disableNestedFragments = false) { currentIf.alternate = branchBlockStatement; } } - if (!currentIf.alternate) { + if (!currentIf.alternate && !disableComment) { currentIf.alternate = compilerDom.createBlockStatement([ compilerDom.createCallExpression(`_push`, ["`<!---->`"]) ]); @@ -88,10 +99,7 @@ function processIfBranch(branch, context, disableNestedFragments = false) { return processChildrenAsStatement(branch, context, needFragmentWrapper); } -const ssrTransformFor = compilerDom.createStructuralDirectiveTransform( - "for", - compilerDom.processFor -); +const ssrTransformFor = compilerDom.createStructuralDirectiveTransform("for", compilerDom.processFor); function ssrProcessFor(node, context, disableNestedFragments = false) { const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1); const renderLoop = compilerDom.createFunctionExpression( @@ -132,13 +140,20 @@ const ssrTransformSlotOutlet = (node, context) => { args.push(`"${context.scopeId}-s"`); } let method = SSR_RENDER_SLOT; - const parent = context.parent; - if (parent && parent.type === 1 && parent.tagType === 1 && compilerDom.resolveComponentType(parent, context, true) === compilerDom.TRANSITION && parent.children.filter((c) => c.type === 1).length === 1) { - method = SSR_RENDER_SLOT_INNER; - if (!(context.scopeId && context.slotted !== false)) { - args.push("null"); + let parent = context.parent; + if (parent) { + const children = parent.children; + if (parent.type === 10) { + parent = context.grandParent; + } + let componentType; + if (parent.type === 1 && parent.tagType === 1 && ((componentType = compilerDom.resolveComponentType(parent, context, true)) === compilerDom.TRANSITION || componentType === compilerDom.TRANSITION_GROUP) && children.filter((c) => c.type === 1).length === 1) { + method = SSR_RENDER_SLOT_INNER; + if (!(context.scopeId && context.slotted !== false)) { + args.push("null"); + } + args.push("true"); } - args.push("true"); } node.ssrCodegenNode = compilerDom.createCallExpression(context.helper(method), args); } @@ -292,7 +307,6 @@ const ssrTransformElement = (node, context) => { false, false, true - /* ssr */ ); if (props || directives.length) { const mergedProps = buildSSRProps(props, directives, context); @@ -348,6 +362,28 @@ const ssrTransformElement = (node, context) => { ]) ]; } + } else if (directives.length && !node.children.length) { + const vText = compilerDom.findDir(node, "text"); + if (!vText) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + compilerDom.createAssignmentExpression( + compilerDom.createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + compilerDom.createConditionalExpression( + compilerDom.createSimpleExpression(`"textContent" in ${tempId}`, false), + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + compilerDom.createSimpleExpression(`${tempId}.textContent`, false) + ]), + compilerDom.createSimpleExpression(`${tempId}.innerHTML ?? ''`, false), + false + ) + ); + } } if (needTagForRuntime) { propsExp.arguments.push(`"${node.tag}"`); @@ -365,7 +401,10 @@ const ssrTransformElement = (node, context) => { } if (prop.type === 7) { if (prop.name === "html" && prop.exp) { - rawChildrenMap.set(node, prop.exp); + rawChildrenMap.set( + node, + compilerDom.createCompoundExpression([`(`, prop.exp, `) ?? ''`]) + ); } else if (prop.name === "text" && prop.exp) { node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)]; } else if (prop.name === "slot") { @@ -428,7 +467,6 @@ const ssrTransformElement = (node, context) => { compilerDom.createSimpleExpression(" " + attrName, true), compilerDom.createSimpleExpression("", true), false - /* no newline */ ) ); } else if (shared.isSSRSafeAttrName(attrName)) { @@ -463,13 +501,14 @@ const ssrTransformElement = (node, context) => { } } } else { - if (node.tag === "textarea" && prop.name === "value" && prop.value) { + const name = prop.name; + if (node.tag === "textarea" && name === "value" && prop.value) { rawChildrenMap.set(node, shared.escapeHtml(prop.value.content)); } else if (!needMergeProps) { - if (prop.name === "key" || prop.name === "ref") { + if (name === "key" || name === "ref") { continue; } - if (prop.name === "class" && prop.value) { + if (name === "class" && prop.value) { staticClassBinding = JSON.stringify(prop.value.content); } openTag.push( @@ -573,7 +612,6 @@ function ssrTransformTransitionGroup(node, context) { true, false, true - /* ssr (skip event listeners) */ ); let propsExp = null; if (props || directives.length) { @@ -613,6 +651,13 @@ function ssrProcessTransitionGroup(node, context) { * be patched using the same key map) so we need to account for that here * by disabling nested fragment wrappers from being generated. */ + true, + /** + * TransitionGroup filters out comment children at runtime and thus + * doesn't expect comments to be present during hydration. We need to + * account for that by disabling the empty comment that is otherwise + * rendered for a falsy v-if that has no v-else specified. (#6715) + */ true ); context.pushStringPart(`</`); @@ -627,11 +672,11 @@ function ssrProcessTransitionGroup(node, context) { context.pushStringPart(` ${scopeId}`); } context.pushStringPart(`>`); - processChildren(node, context, false, true); + processChildren(node, context, false, true, true); context.pushStringPart(`</${tag.value.content}>`); } } else { - processChildren(node, context, true, true); + processChildren(node, context, true, true, true); } } @@ -777,7 +822,6 @@ function ssrProcessComponent(node, context, parent) { context, false, true - /* withSlotScopeId */ ), vnodeBranch ); @@ -801,7 +845,7 @@ const vnodeDirectiveTransforms = { ...baseDirectiveTransforms, ...compilerDom.DOMDirectiveTransforms }; -function createVNodeSlotBranch(props, vForExp, children, parentContext) { +function createVNodeSlotBranch(slotProps, vFor, children, parentContext) { const rawOptions = rawOptionsMap.get(parentContext.root); const subOptions = { ...rawOptions, @@ -815,32 +859,26 @@ function createVNodeSlotBranch(props, vForExp, children, parentContext) { ...rawOptions.directiveTransforms || {} } }; + const wrapperProps = []; + if (slotProps) { + wrapperProps.push({ + type: 7, + name: "slot", + exp: slotProps, + arg: void 0, + modifiers: [], + loc: compilerDom.locStub + }); + } + if (vFor) { + wrapperProps.push(shared.extend({}, vFor)); + } const wrapperNode = { type: 1, ns: 0, tag: "template", tagType: 3, - isSelfClosing: false, - // important: provide v-slot="props" and v-for="exp" on the wrapper for - // proper scope analysis - props: [ - { - type: 7, - name: "slot", - exp: props, - arg: void 0, - modifiers: [], - loc: compilerDom.locStub - }, - { - type: 7, - name: "for", - exp: vForExp, - arg: void 0, - modifiers: [], - loc: compilerDom.locStub - } - ], + props: wrapperProps, children, loc: compilerDom.locStub, codegenNode: void 0 @@ -874,7 +912,7 @@ function subTransform(node, options, parentContext) { function clone(v) { if (shared.isArray(v)) { return v.map(clone); - } else if (shared.isObject(v)) { + } else if (shared.isPlainObject(v)) { const res = {}; for (const key in v) { res[key] = clone(v[key]); @@ -956,7 +994,7 @@ function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) { withSlotScopeId ); } -function processChildren(parent, context, asFragment = false, disableNestedFragments = false) { +function processChildren(parent, context, asFragment = false, disableNestedFragments = false, disableComment = false) { if (asFragment) { context.pushStringPart(`<!--[-->`); } @@ -992,15 +1030,19 @@ function processChildren(parent, context, asFragment = false, disableNestedFragm context.pushStringPart(shared.escapeHtml(child.content)); break; case 3: - context.pushStringPart(`<!--${child.content}-->`); + if (!disableComment) { + context.pushStringPart(`<!--${child.content}-->`); + } break; case 5: context.pushStringPart( - compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [child.content]) + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + child.content + ]) ); break; case 9: - ssrProcessIf(child, context, disableNestedFragments); + ssrProcessIf(child, context, disableNestedFragments, disableComment); break; case 11: ssrProcessFor(child, context, disableNestedFragments); @@ -1066,7 +1108,6 @@ const ssrTransformModel = (dir, node, context) => { compilerDom.createSimpleExpression(" selected", true), compilerDom.createSimpleExpression("", true), false - /* no newline */ ) ); } @@ -1158,11 +1199,18 @@ const ssrTransformModel = (dir, node, context) => { checkDuplicatedValue(); node.children = [compilerDom.createInterpolation(model, model.loc)]; } else if (node.tag === "select") { - node.children.forEach((child) => { - if (child.type === 1) { - processOption(child); - } - }); + const processChildren = (children) => { + children.forEach((child) => { + if (child.type === 1) { + processOption(child); + } else if (child.type === 11) { + processChildren(child.children); + } else if (child.type === 9) { + child.branches.forEach((b) => processChildren(b.children)); + } + }); + }; + processChildren(node.children); } else { context.onError( compilerDom.createDOMCompilerError( @@ -1201,7 +1249,6 @@ const ssrTransformShow = (dir, node, context) => { ) ]), false - /* no newline */ ) ) ] @@ -1214,7 +1261,7 @@ const ssrInjectFallthroughAttrs = (node, context) => { if (node.type === 0) { context.identifiers._attrs = 1; } - if (node.type === 1 && node.tagType === 1 && (compilerDom.isBuiltInType(node.tag, "Transition") || compilerDom.isBuiltInType(node.tag, "KeepAlive"))) { + if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) { const rootChildren = filterChild(context.root); if (rootChildren.length === 1 && rootChildren[0] === node) { if (hasSingleChild(node)) { @@ -1231,8 +1278,7 @@ const ssrInjectFallthroughAttrs = (node, context) => { let hasEncounteredIf = false; for (const c of filterChild(parent)) { if (c.type === 9 || c.type === 1 && compilerDom.findDir(c, "if")) { - if (hasEncounteredIf) - return; + if (hasEncounteredIf) return; hasEncounteredIf = true; } else if ( // node before v-if @@ -1281,7 +1327,7 @@ const ssrInjectCssVars = (node, context) => { }; function injectCssVars(node) { if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) { - if (compilerDom.isBuiltInType(node.tag, "Suspense")) { + if (node.tag === "suspense" || node.tag === "Suspense") { for (const child of node.children) { if (child.type === 1 && child.tagType === 3) { child.children.forEach(injectCssVars); @@ -1302,10 +1348,9 @@ function injectCssVars(node) { } } -function compile(template, options = {}) { +function compile(source, options = {}) { options = { ...options, - // apply DOM-specific parsing options ...compilerDom.parserOptions, ssr: true, inSSR: true, @@ -1316,7 +1361,7 @@ function compile(template, options = {}) { cacheHandlers: false, hoistStatic: false }; - const ast = compilerDom.baseParse(template, options); + const ast = typeof source === "string" ? compilerDom.baseParse(source, options) : source; rawOptionsMap.set(ast, options); compilerDom.transform(ast, { ...options, diff --git a/.output/server/node_modules/@vue/compiler-ssr/package.json b/.output/server/node_modules/@vue/compiler-ssr/package.json index d0292ac..2b1d769 100644 --- a/.output/server/node_modules/@vue/compiler-ssr/package.json +++ b/.output/server/node_modules/@vue/compiler-ssr/package.json @@ -1,6 +1,6 @@ { "name": "@vue/compiler-ssr", - "version": "3.3.9", + "version": "3.5.13", "description": "@vue/compiler-ssr", "main": "dist/compiler-ssr.cjs.js", "types": "dist/compiler-ssr.d.ts", @@ -28,7 +28,10 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme", "dependencies": { - "@vue/shared": "3.3.9", - "@vue/compiler-dom": "3.3.9" - } + "@vue/shared": "3.5.13", + "@vue/compiler-dom": "3.5.13" + }, + "__npminstall_done": true, + "_from": "@vue/compiler-ssr@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js b/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js deleted file mode 100644 index b0e8c45..0000000 --- a/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js +++ /dev/null @@ -1,1265 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var shared = require('@vue/shared'); - -function warn(msg, ...args) { - console.warn(`[Vue warn] ${msg}`, ...args); -} - -let activeEffectScope; -class EffectScope { - constructor(detached = false) { - this.detached = detached; - /** - * @internal - */ - this._active = true; - /** - * @internal - */ - this.effects = []; - /** - * @internal - */ - this.cleanups = []; - this.parent = activeEffectScope; - if (!detached && activeEffectScope) { - this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( - this - ) - 1; - } - } - get active() { - return this._active; - } - run(fn) { - if (this._active) { - const currentEffectScope = activeEffectScope; - try { - activeEffectScope = this; - return fn(); - } finally { - activeEffectScope = currentEffectScope; - } - } else { - warn(`cannot run an inactive effect scope.`); - } - } - /** - * This should only be called on non-detached scopes - * @internal - */ - on() { - activeEffectScope = this; - } - /** - * This should only be called on non-detached scopes - * @internal - */ - off() { - activeEffectScope = this.parent; - } - stop(fromParent) { - if (this._active) { - let i, l; - for (i = 0, l = this.effects.length; i < l; i++) { - this.effects[i].stop(); - } - for (i = 0, l = this.cleanups.length; i < l; i++) { - this.cleanups[i](); - } - if (this.scopes) { - for (i = 0, l = this.scopes.length; i < l; i++) { - this.scopes[i].stop(true); - } - } - if (!this.detached && this.parent && !fromParent) { - const last = this.parent.scopes.pop(); - if (last && last !== this) { - this.parent.scopes[this.index] = last; - last.index = this.index; - } - } - this.parent = void 0; - this._active = false; - } - } -} -function effectScope(detached) { - return new EffectScope(detached); -} -function recordEffectScope(effect, scope = activeEffectScope) { - if (scope && scope.active) { - scope.effects.push(effect); - } -} -function getCurrentScope() { - return activeEffectScope; -} -function onScopeDispose(fn) { - if (activeEffectScope) { - activeEffectScope.cleanups.push(fn); - } else { - warn( - `onScopeDispose() is called when there is no active effect scope to be associated with.` - ); - } -} - -const createDep = (effects) => { - const dep = new Set(effects); - dep.w = 0; - dep.n = 0; - return dep; -}; -const wasTracked = (dep) => (dep.w & trackOpBit) > 0; -const newTracked = (dep) => (dep.n & trackOpBit) > 0; -const initDepMarkers = ({ deps }) => { - if (deps.length) { - for (let i = 0; i < deps.length; i++) { - deps[i].w |= trackOpBit; - } - } -}; -const finalizeDepMarkers = (effect) => { - const { deps } = effect; - if (deps.length) { - let ptr = 0; - for (let i = 0; i < deps.length; i++) { - const dep = deps[i]; - if (wasTracked(dep) && !newTracked(dep)) { - dep.delete(effect); - } else { - deps[ptr++] = dep; - } - dep.w &= ~trackOpBit; - dep.n &= ~trackOpBit; - } - deps.length = ptr; - } -}; - -const targetMap = /* @__PURE__ */ new WeakMap(); -let effectTrackDepth = 0; -let trackOpBit = 1; -const maxMarkerBits = 30; -let activeEffect; -const ITERATE_KEY = Symbol("iterate" ); -const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" ); -class ReactiveEffect { - constructor(fn, scheduler = null, scope) { - this.fn = fn; - this.scheduler = scheduler; - this.active = true; - this.deps = []; - this.parent = void 0; - recordEffectScope(this, scope); - } - run() { - if (!this.active) { - return this.fn(); - } - let parent = activeEffect; - let lastShouldTrack = shouldTrack; - while (parent) { - if (parent === this) { - return; - } - parent = parent.parent; - } - try { - this.parent = activeEffect; - activeEffect = this; - shouldTrack = true; - trackOpBit = 1 << ++effectTrackDepth; - if (effectTrackDepth <= maxMarkerBits) { - initDepMarkers(this); - } else { - cleanupEffect(this); - } - return this.fn(); - } finally { - if (effectTrackDepth <= maxMarkerBits) { - finalizeDepMarkers(this); - } - trackOpBit = 1 << --effectTrackDepth; - activeEffect = this.parent; - shouldTrack = lastShouldTrack; - this.parent = void 0; - if (this.deferStop) { - this.stop(); - } - } - } - stop() { - if (activeEffect === this) { - this.deferStop = true; - } else if (this.active) { - cleanupEffect(this); - if (this.onStop) { - this.onStop(); - } - this.active = false; - } - } -} -function cleanupEffect(effect2) { - const { deps } = effect2; - if (deps.length) { - for (let i = 0; i < deps.length; i++) { - deps[i].delete(effect2); - } - deps.length = 0; - } -} -function effect(fn, options) { - if (fn.effect instanceof ReactiveEffect) { - fn = fn.effect.fn; - } - const _effect = new ReactiveEffect(fn); - if (options) { - shared.extend(_effect, options); - if (options.scope) - recordEffectScope(_effect, options.scope); - } - if (!options || !options.lazy) { - _effect.run(); - } - const runner = _effect.run.bind(_effect); - runner.effect = _effect; - return runner; -} -function stop(runner) { - runner.effect.stop(); -} -let shouldTrack = true; -const trackStack = []; -function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; -} -function enableTracking() { - trackStack.push(shouldTrack); - shouldTrack = true; -} -function resetTracking() { - const last = trackStack.pop(); - shouldTrack = last === void 0 ? true : last; -} -function track(target, type, key) { - if (shouldTrack && activeEffect) { - let depsMap = targetMap.get(target); - if (!depsMap) { - targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); - } - let dep = depsMap.get(key); - if (!dep) { - depsMap.set(key, dep = createDep()); - } - const eventInfo = { effect: activeEffect, target, type, key } ; - trackEffects(dep, eventInfo); - } -} -function trackEffects(dep, debuggerEventExtraInfo) { - let shouldTrack2 = false; - if (effectTrackDepth <= maxMarkerBits) { - if (!newTracked(dep)) { - dep.n |= trackOpBit; - shouldTrack2 = !wasTracked(dep); - } - } else { - shouldTrack2 = !dep.has(activeEffect); - } - if (shouldTrack2) { - dep.add(activeEffect); - activeEffect.deps.push(dep); - if (activeEffect.onTrack) { - activeEffect.onTrack( - shared.extend( - { - effect: activeEffect - }, - debuggerEventExtraInfo - ) - ); - } - } -} -function trigger(target, type, key, newValue, oldValue, oldTarget) { - const depsMap = targetMap.get(target); - if (!depsMap) { - return; - } - let deps = []; - if (type === "clear") { - deps = [...depsMap.values()]; - } else if (key === "length" && shared.isArray(target)) { - const newLength = Number(newValue); - depsMap.forEach((dep, key2) => { - if (key2 === "length" || !shared.isSymbol(key2) && key2 >= newLength) { - deps.push(dep); - } - }); - } else { - if (key !== void 0) { - deps.push(depsMap.get(key)); - } - switch (type) { - case "add": - if (!shared.isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - if (shared.isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } else if (shared.isIntegerKey(key)) { - deps.push(depsMap.get("length")); - } - break; - case "delete": - if (!shared.isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - if (shared.isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - break; - case "set": - if (shared.isMap(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - } - break; - } - } - const eventInfo = { target, type, key, newValue, oldValue, oldTarget } ; - if (deps.length === 1) { - if (deps[0]) { - { - triggerEffects(deps[0], eventInfo); - } - } - } else { - const effects = []; - for (const dep of deps) { - if (dep) { - effects.push(...dep); - } - } - { - triggerEffects(createDep(effects), eventInfo); - } - } -} -function triggerEffects(dep, debuggerEventExtraInfo) { - const effects = shared.isArray(dep) ? dep : [...dep]; - for (const effect2 of effects) { - if (effect2.computed) { - triggerEffect(effect2, debuggerEventExtraInfo); - } - } - for (const effect2 of effects) { - if (!effect2.computed) { - triggerEffect(effect2, debuggerEventExtraInfo); - } - } -} -function triggerEffect(effect2, debuggerEventExtraInfo) { - if (effect2 !== activeEffect || effect2.allowRecurse) { - if (effect2.onTrigger) { - effect2.onTrigger(shared.extend({ effect: effect2 }, debuggerEventExtraInfo)); - } - if (effect2.scheduler) { - effect2.scheduler(); - } else { - effect2.run(); - } - } -} -function getDepFromReactive(object, key) { - var _a; - return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); -} - -const isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`); -const builtInSymbols = new Set( - /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(shared.isSymbol) -); -const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); -function createArrayInstrumentations() { - const instrumentations = {}; - ["includes", "indexOf", "lastIndexOf"].forEach((key) => { - instrumentations[key] = function(...args) { - const arr = toRaw(this); - for (let i = 0, l = this.length; i < l; i++) { - track(arr, "get", i + ""); - } - const res = arr[key](...args); - if (res === -1 || res === false) { - return arr[key](...args.map(toRaw)); - } else { - return res; - } - }; - }); - ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { - instrumentations[key] = function(...args) { - pauseTracking(); - const res = toRaw(this)[key].apply(this, args); - resetTracking(); - return res; - }; - }); - return instrumentations; -} -function hasOwnProperty(key) { - const obj = toRaw(this); - track(obj, "has", key); - return obj.hasOwnProperty(key); -} -class BaseReactiveHandler { - constructor(_isReadonly = false, _shallow = false) { - this._isReadonly = _isReadonly; - this._shallow = _shallow; - } - get(target, key, receiver) { - const isReadonly2 = this._isReadonly, shallow = this._shallow; - if (key === "__v_isReactive") { - return !isReadonly2; - } else if (key === "__v_isReadonly") { - return isReadonly2; - } else if (key === "__v_isShallow") { - return shallow; - } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { - return target; - } - const targetIsArray = shared.isArray(target); - if (!isReadonly2) { - if (targetIsArray && shared.hasOwn(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver); - } - if (key === "hasOwnProperty") { - return hasOwnProperty; - } - } - const res = Reflect.get(target, key, receiver); - if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { - return res; - } - if (!isReadonly2) { - track(target, "get", key); - } - if (shallow) { - return res; - } - if (isRef(res)) { - return targetIsArray && shared.isIntegerKey(key) ? res : res.value; - } - if (shared.isObject(res)) { - return isReadonly2 ? readonly(res) : reactive(res); - } - return res; - } -} -class MutableReactiveHandler extends BaseReactiveHandler { - constructor(shallow = false) { - super(false, shallow); - } - set(target, key, value, receiver) { - let oldValue = target[key]; - if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { - return false; - } - if (!this._shallow) { - if (!isShallow(value) && !isReadonly(value)) { - oldValue = toRaw(oldValue); - value = toRaw(value); - } - if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } - } - const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key); - const result = Reflect.set(target, key, value, receiver); - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, "add", key, value); - } else if (shared.hasChanged(value, oldValue)) { - trigger(target, "set", key, value, oldValue); - } - } - return result; - } - deleteProperty(target, key) { - const hadKey = shared.hasOwn(target, key); - const oldValue = target[key]; - const result = Reflect.deleteProperty(target, key); - if (result && hadKey) { - trigger(target, "delete", key, void 0, oldValue); - } - return result; - } - has(target, key) { - const result = Reflect.has(target, key); - if (!shared.isSymbol(key) || !builtInSymbols.has(key)) { - track(target, "has", key); - } - return result; - } - ownKeys(target) { - track( - target, - "iterate", - shared.isArray(target) ? "length" : ITERATE_KEY - ); - return Reflect.ownKeys(target); - } -} -class ReadonlyReactiveHandler extends BaseReactiveHandler { - constructor(shallow = false) { - super(true, shallow); - } - set(target, key) { - { - warn( - `Set operation on key "${String(key)}" failed: target is readonly.`, - target - ); - } - return true; - } - deleteProperty(target, key) { - { - warn( - `Delete operation on key "${String(key)}" failed: target is readonly.`, - target - ); - } - return true; - } -} -const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); -const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); -const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( - true -); -const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); - -const toShallow = (value) => value; -const getProto = (v) => Reflect.getPrototypeOf(v); -function get(target, key, isReadonly = false, isShallow = false) { - target = target["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!isReadonly) { - if (shared.hasChanged(key, rawKey)) { - track(rawTarget, "get", key); - } - track(rawTarget, "get", rawKey); - } - const { has: has2 } = getProto(rawTarget); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - if (has2.call(rawTarget, key)) { - return wrap(target.get(key)); - } else if (has2.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } else if (target !== rawTarget) { - target.get(key); - } -} -function has(key, isReadonly = false) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!isReadonly) { - if (shared.hasChanged(key, rawKey)) { - track(rawTarget, "has", key); - } - track(rawTarget, "has", rawKey); - } - return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); -} -function size(target, isReadonly = false) { - target = target["__v_raw"]; - !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); - return Reflect.get(target, "size", target); -} -function add(value) { - value = toRaw(value); - const target = toRaw(this); - const proto = getProto(target); - const hadKey = proto.has.call(target, value); - if (!hadKey) { - target.add(value); - trigger(target, "add", value, value); - } - return this; -} -function set(key, value) { - value = toRaw(value); - const target = toRaw(this); - const { has: has2, get: get2 } = getProto(target); - let hadKey = has2.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has2.call(target, key); - } else { - checkIdentityKeys(target, has2, key); - } - const oldValue = get2.call(target, key); - target.set(key, value); - if (!hadKey) { - trigger(target, "add", key, value); - } else if (shared.hasChanged(value, oldValue)) { - trigger(target, "set", key, value, oldValue); - } - return this; -} -function deleteEntry(key) { - const target = toRaw(this); - const { has: has2, get: get2 } = getProto(target); - let hadKey = has2.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has2.call(target, key); - } else { - checkIdentityKeys(target, has2, key); - } - const oldValue = get2 ? get2.call(target, key) : void 0; - const result = target.delete(key); - if (hadKey) { - trigger(target, "delete", key, void 0, oldValue); - } - return result; -} -function clear() { - const target = toRaw(this); - const hadItems = target.size !== 0; - const oldTarget = shared.isMap(target) ? new Map(target) : new Set(target) ; - const result = target.clear(); - if (hadItems) { - trigger(target, "clear", void 0, void 0, oldTarget); - } - return result; -} -function createForEach(isReadonly, isShallow) { - return function forEach(callback, thisArg) { - const observed = this; - const target = observed["__v_raw"]; - const rawTarget = toRaw(target); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); - return target.forEach((value, key) => { - return callback.call(thisArg, wrap(value), wrap(key), observed); - }); - }; -} -function createIterableMethod(method, isReadonly, isShallow) { - return function(...args) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const targetIsMap = shared.isMap(rawTarget); - const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; - const isKeyOnly = method === "keys" && targetIsMap; - const innerIterator = target[method](...args); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track( - rawTarget, - "iterate", - isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY - ); - return { - // iterator protocol - next() { - const { value, done } = innerIterator.next(); - return done ? { value, done } : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done - }; - }, - // iterable protocol - [Symbol.iterator]() { - return this; - } - }; - }; -} -function createReadonlyMethod(type) { - return function(...args) { - { - const key = args[0] ? `on key "${args[0]}" ` : ``; - console.warn( - `${shared.capitalize(type)} operation ${key}failed: target is readonly.`, - toRaw(this) - ); - } - return type === "delete" ? false : type === "clear" ? void 0 : this; - }; -} -function createInstrumentations() { - const mutableInstrumentations2 = { - get(key) { - return get(this, key); - }, - get size() { - return size(this); - }, - has, - add, - set, - delete: deleteEntry, - clear, - forEach: createForEach(false, false) - }; - const shallowInstrumentations2 = { - get(key) { - return get(this, key, false, true); - }, - get size() { - return size(this); - }, - has, - add, - set, - delete: deleteEntry, - clear, - forEach: createForEach(false, true) - }; - const readonlyInstrumentations2 = { - get(key) { - return get(this, key, true); - }, - get size() { - return size(this, true); - }, - has(key) { - return has.call(this, key, true); - }, - add: createReadonlyMethod("add"), - set: createReadonlyMethod("set"), - delete: createReadonlyMethod("delete"), - clear: createReadonlyMethod("clear"), - forEach: createForEach(true, false) - }; - const shallowReadonlyInstrumentations2 = { - get(key) { - return get(this, key, true, true); - }, - get size() { - return size(this, true); - }, - has(key) { - return has.call(this, key, true); - }, - add: createReadonlyMethod("add"), - set: createReadonlyMethod("set"), - delete: createReadonlyMethod("delete"), - clear: createReadonlyMethod("clear"), - forEach: createForEach(true, true) - }; - const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; - iteratorMethods.forEach((method) => { - mutableInstrumentations2[method] = createIterableMethod( - method, - false, - false - ); - readonlyInstrumentations2[method] = createIterableMethod( - method, - true, - false - ); - shallowInstrumentations2[method] = createIterableMethod( - method, - false, - true - ); - shallowReadonlyInstrumentations2[method] = createIterableMethod( - method, - true, - true - ); - }); - return [ - mutableInstrumentations2, - readonlyInstrumentations2, - shallowInstrumentations2, - shallowReadonlyInstrumentations2 - ]; -} -const [ - mutableInstrumentations, - readonlyInstrumentations, - shallowInstrumentations, - shallowReadonlyInstrumentations -] = /* @__PURE__ */ createInstrumentations(); -function createInstrumentationGetter(isReadonly, shallow) { - const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; - return (target, key, receiver) => { - if (key === "__v_isReactive") { - return !isReadonly; - } else if (key === "__v_isReadonly") { - return isReadonly; - } else if (key === "__v_raw") { - return target; - } - return Reflect.get( - shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target, - key, - receiver - ); - }; -} -const mutableCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(false, false) -}; -const shallowCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(false, true) -}; -const readonlyCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(true, false) -}; -const shallowReadonlyCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(true, true) -}; -function checkIdentityKeys(target, has2, key) { - const rawKey = toRaw(key); - if (rawKey !== key && has2.call(target, rawKey)) { - const type = shared.toRawType(target); - console.warn( - `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` - ); - } -} - -const reactiveMap = /* @__PURE__ */ new WeakMap(); -const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); -const readonlyMap = /* @__PURE__ */ new WeakMap(); -const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); -function targetTypeMap(rawType) { - switch (rawType) { - case "Object": - case "Array": - return 1 /* COMMON */; - case "Map": - case "Set": - case "WeakMap": - case "WeakSet": - return 2 /* COLLECTION */; - default: - return 0 /* INVALID */; - } -} -function getTargetType(value) { - return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(shared.toRawType(value)); -} -function reactive(target) { - if (isReadonly(target)) { - return target; - } - return createReactiveObject( - target, - false, - mutableHandlers, - mutableCollectionHandlers, - reactiveMap - ); -} -function shallowReactive(target) { - return createReactiveObject( - target, - false, - shallowReactiveHandlers, - shallowCollectionHandlers, - shallowReactiveMap - ); -} -function readonly(target) { - return createReactiveObject( - target, - true, - readonlyHandlers, - readonlyCollectionHandlers, - readonlyMap - ); -} -function shallowReadonly(target) { - return createReactiveObject( - target, - true, - shallowReadonlyHandlers, - shallowReadonlyCollectionHandlers, - shallowReadonlyMap - ); -} -function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { - if (!shared.isObject(target)) { - { - console.warn(`value cannot be made reactive: ${String(target)}`); - } - return target; - } - if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { - return target; - } - const existingProxy = proxyMap.get(target); - if (existingProxy) { - return existingProxy; - } - const targetType = getTargetType(target); - if (targetType === 0 /* INVALID */) { - return target; - } - const proxy = new Proxy( - target, - targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers - ); - proxyMap.set(target, proxy); - return proxy; -} -function isReactive(value) { - if (isReadonly(value)) { - return isReactive(value["__v_raw"]); - } - return !!(value && value["__v_isReactive"]); -} -function isReadonly(value) { - return !!(value && value["__v_isReadonly"]); -} -function isShallow(value) { - return !!(value && value["__v_isShallow"]); -} -function isProxy(value) { - return isReactive(value) || isReadonly(value); -} -function toRaw(observed) { - const raw = observed && observed["__v_raw"]; - return raw ? toRaw(raw) : observed; -} -function markRaw(value) { - shared.def(value, "__v_skip", true); - return value; -} -const toReactive = (value) => shared.isObject(value) ? reactive(value) : value; -const toReadonly = (value) => shared.isObject(value) ? readonly(value) : value; - -function trackRefValue(ref2) { - if (shouldTrack && activeEffect) { - ref2 = toRaw(ref2); - { - trackEffects(ref2.dep || (ref2.dep = createDep()), { - target: ref2, - type: "get", - key: "value" - }); - } - } -} -function triggerRefValue(ref2, newVal) { - ref2 = toRaw(ref2); - const dep = ref2.dep; - if (dep) { - { - triggerEffects(dep, { - target: ref2, - type: "set", - key: "value", - newValue: newVal - }); - } - } -} -function isRef(r) { - return !!(r && r.__v_isRef === true); -} -function ref(value) { - return createRef(value, false); -} -function shallowRef(value) { - return createRef(value, true); -} -function createRef(rawValue, shallow) { - if (isRef(rawValue)) { - return rawValue; - } - return new RefImpl(rawValue, shallow); -} -class RefImpl { - constructor(value, __v_isShallow) { - this.__v_isShallow = __v_isShallow; - this.dep = void 0; - this.__v_isRef = true; - this._rawValue = __v_isShallow ? value : toRaw(value); - this._value = __v_isShallow ? value : toReactive(value); - } - get value() { - trackRefValue(this); - return this._value; - } - set value(newVal) { - const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); - newVal = useDirectValue ? newVal : toRaw(newVal); - if (shared.hasChanged(newVal, this._rawValue)) { - this._rawValue = newVal; - this._value = useDirectValue ? newVal : toReactive(newVal); - triggerRefValue(this, newVal); - } - } -} -function triggerRef(ref2) { - triggerRefValue(ref2, ref2.value ); -} -function unref(ref2) { - return isRef(ref2) ? ref2.value : ref2; -} -function toValue(source) { - return shared.isFunction(source) ? source() : unref(source); -} -const shallowUnwrapHandlers = { - get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), - set: (target, key, value, receiver) => { - const oldValue = target[key]; - if (isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } else { - return Reflect.set(target, key, value, receiver); - } - } -}; -function proxyRefs(objectWithRefs) { - return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); -} -class CustomRefImpl { - constructor(factory) { - this.dep = void 0; - this.__v_isRef = true; - const { get, set } = factory( - () => trackRefValue(this), - () => triggerRefValue(this) - ); - this._get = get; - this._set = set; - } - get value() { - return this._get(); - } - set value(newVal) { - this._set(newVal); - } -} -function customRef(factory) { - return new CustomRefImpl(factory); -} -function toRefs(object) { - if (!isProxy(object)) { - console.warn(`toRefs() expects a reactive object but received a plain one.`); - } - const ret = shared.isArray(object) ? new Array(object.length) : {}; - for (const key in object) { - ret[key] = propertyToRef(object, key); - } - return ret; -} -class ObjectRefImpl { - constructor(_object, _key, _defaultValue) { - this._object = _object; - this._key = _key; - this._defaultValue = _defaultValue; - this.__v_isRef = true; - } - get value() { - const val = this._object[this._key]; - return val === void 0 ? this._defaultValue : val; - } - set value(newVal) { - this._object[this._key] = newVal; - } - get dep() { - return getDepFromReactive(toRaw(this._object), this._key); - } -} -class GetterRefImpl { - constructor(_getter) { - this._getter = _getter; - this.__v_isRef = true; - this.__v_isReadonly = true; - } - get value() { - return this._getter(); - } -} -function toRef(source, key, defaultValue) { - if (isRef(source)) { - return source; - } else if (shared.isFunction(source)) { - return new GetterRefImpl(source); - } else if (shared.isObject(source) && arguments.length > 1) { - return propertyToRef(source, key, defaultValue); - } else { - return ref(source); - } -} -function propertyToRef(source, key, defaultValue) { - const val = source[key]; - return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); -} - -class ComputedRefImpl { - constructor(getter, _setter, isReadonly, isSSR) { - this._setter = _setter; - this.dep = void 0; - this.__v_isRef = true; - this["__v_isReadonly"] = false; - this._dirty = true; - this.effect = new ReactiveEffect(getter, () => { - if (!this._dirty) { - this._dirty = true; - triggerRefValue(this); - } - }); - this.effect.computed = this; - this.effect.active = this._cacheable = !isSSR; - this["__v_isReadonly"] = isReadonly; - } - get value() { - const self = toRaw(this); - trackRefValue(self); - if (self._dirty || !self._cacheable) { - self._dirty = false; - self._value = self.effect.run(); - } - return self._value; - } - set value(newValue) { - this._setter(newValue); - } -} -function computed(getterOrOptions, debugOptions, isSSR = false) { - let getter; - let setter; - const onlyGetter = shared.isFunction(getterOrOptions); - if (onlyGetter) { - getter = getterOrOptions; - setter = () => { - console.warn("Write operation failed: computed value is readonly"); - } ; - } else { - getter = getterOrOptions.get; - setter = getterOrOptions.set; - } - const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); - if (debugOptions && !isSSR) { - cRef.effect.onTrack = debugOptions.onTrack; - cRef.effect.onTrigger = debugOptions.onTrigger; - } - return cRef; -} - -const tick = /* @__PURE__ */ Promise.resolve(); -const queue = []; -let queued = false; -const scheduler = (fn) => { - queue.push(fn); - if (!queued) { - queued = true; - tick.then(flush); - } -}; -const flush = () => { - for (let i = 0; i < queue.length; i++) { - queue[i](); - } - queue.length = 0; - queued = false; -}; -class DeferredComputedRefImpl { - constructor(getter) { - this.dep = void 0; - this._dirty = true; - this.__v_isRef = true; - this["__v_isReadonly"] = true; - let compareTarget; - let hasCompareTarget = false; - let scheduled = false; - this.effect = new ReactiveEffect(getter, (computedTrigger) => { - if (this.dep) { - if (computedTrigger) { - compareTarget = this._value; - hasCompareTarget = true; - } else if (!scheduled) { - const valueToCompare = hasCompareTarget ? compareTarget : this._value; - scheduled = true; - hasCompareTarget = false; - scheduler(() => { - if (this.effect.active && this._get() !== valueToCompare) { - triggerRefValue(this); - } - scheduled = false; - }); - } - for (const e of this.dep) { - if (e.computed instanceof DeferredComputedRefImpl) { - e.scheduler( - true - /* computedTrigger */ - ); - } - } - } - this._dirty = true; - }); - this.effect.computed = this; - } - _get() { - if (this._dirty) { - this._dirty = false; - return this._value = this.effect.run(); - } - return this._value; - } - get value() { - trackRefValue(this); - return toRaw(this)._get(); - } -} -function deferredComputed(getter) { - return new DeferredComputedRefImpl(getter); -} - -exports.EffectScope = EffectScope; -exports.ITERATE_KEY = ITERATE_KEY; -exports.ReactiveEffect = ReactiveEffect; -exports.computed = computed; -exports.customRef = customRef; -exports.deferredComputed = deferredComputed; -exports.effect = effect; -exports.effectScope = effectScope; -exports.enableTracking = enableTracking; -exports.getCurrentScope = getCurrentScope; -exports.isProxy = isProxy; -exports.isReactive = isReactive; -exports.isReadonly = isReadonly; -exports.isRef = isRef; -exports.isShallow = isShallow; -exports.markRaw = markRaw; -exports.onScopeDispose = onScopeDispose; -exports.pauseTracking = pauseTracking; -exports.proxyRefs = proxyRefs; -exports.reactive = reactive; -exports.readonly = readonly; -exports.ref = ref; -exports.resetTracking = resetTracking; -exports.shallowReactive = shallowReactive; -exports.shallowReadonly = shallowReadonly; -exports.shallowRef = shallowRef; -exports.stop = stop; -exports.toRaw = toRaw; -exports.toRef = toRef; -exports.toRefs = toRefs; -exports.toValue = toValue; -exports.track = track; -exports.trigger = trigger; -exports.triggerRef = triggerRef; -exports.unref = unref; diff --git a/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js b/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js index 2d9c20e..ee6811b 100644 --- a/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +++ b/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js @@ -1,3 +1,8 @@ +/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -20,6 +25,7 @@ class EffectScope { * @internal */ this.cleanups = []; + this._isPaused = false; this.parent = activeEffectScope; if (!detached && activeEffectScope) { this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( @@ -30,6 +36,39 @@ class EffectScope { get active() { return this._active; } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } run(fn) { if (this._active) { const currentEffectScope = activeEffectScope; @@ -57,17 +96,21 @@ class EffectScope { } stop(fromParent) { if (this._active) { + this._active = false; let i, l; for (i = 0, l = this.effects.length; i < l; i++) { this.effects[i].stop(); } + this.effects.length = 0; for (i = 0, l = this.cleanups.length; i < l; i++) { this.cleanups[i](); } + this.cleanups.length = 0; if (this.scopes) { for (i = 0, l = this.scopes.length; i < l; i++) { this.scopes[i].stop(true); } + this.scopes.length = 0; } if (!this.detached && this.parent && !fromParent) { const last = this.parent.scopes.pop(); @@ -77,148 +120,317 @@ class EffectScope { } } this.parent = void 0; - this._active = false; } } } function effectScope(detached) { return new EffectScope(detached); } -function recordEffectScope(effect, scope = activeEffectScope) { - if (scope && scope.active) { - scope.effects.push(effect); - } -} function getCurrentScope() { return activeEffectScope; } -function onScopeDispose(fn) { +function onScopeDispose(fn, failSilently = false) { if (activeEffectScope) { activeEffectScope.cleanups.push(fn); } } -const createDep = (effects) => { - const dep = new Set(effects); - dep.w = 0; - dep.n = 0; - return dep; +let activeSub; +const EffectFlags = { + "ACTIVE": 1, + "1": "ACTIVE", + "RUNNING": 2, + "2": "RUNNING", + "TRACKING": 4, + "4": "TRACKING", + "NOTIFIED": 8, + "8": "NOTIFIED", + "DIRTY": 16, + "16": "DIRTY", + "ALLOW_RECURSE": 32, + "32": "ALLOW_RECURSE", + "PAUSED": 64, + "64": "PAUSED" }; -const wasTracked = (dep) => (dep.w & trackOpBit) > 0; -const newTracked = (dep) => (dep.n & trackOpBit) > 0; -const initDepMarkers = ({ deps }) => { - if (deps.length) { - for (let i = 0; i < deps.length; i++) { - deps[i].w |= trackOpBit; - } - } -}; -const finalizeDepMarkers = (effect) => { - const { deps } = effect; - if (deps.length) { - let ptr = 0; - for (let i = 0; i < deps.length; i++) { - const dep = deps[i]; - if (wasTracked(dep) && !newTracked(dep)) { - dep.delete(effect); - } else { - deps[ptr++] = dep; - } - dep.w &= ~trackOpBit; - dep.n &= ~trackOpBit; - } - deps.length = ptr; - } -}; - -const targetMap = /* @__PURE__ */ new WeakMap(); -let effectTrackDepth = 0; -let trackOpBit = 1; -const maxMarkerBits = 30; -let activeEffect; -const ITERATE_KEY = Symbol(""); -const MAP_KEY_ITERATE_KEY = Symbol(""); +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); class ReactiveEffect { - constructor(fn, scheduler = null, scope) { + constructor(fn) { this.fn = fn; - this.scheduler = scheduler; - this.active = true; - this.deps = []; - this.parent = void 0; - recordEffectScope(this, scope); + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= ~64; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } } run() { - if (!this.active) { + if (!(this.flags & 1)) { return this.fn(); } - let parent = activeEffect; - let lastShouldTrack = shouldTrack; - while (parent) { - if (parent === this) { - return; - } - parent = parent.parent; - } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; try { - this.parent = activeEffect; - activeEffect = this; - shouldTrack = true; - trackOpBit = 1 << ++effectTrackDepth; - if (effectTrackDepth <= maxMarkerBits) { - initDepMarkers(this); - } else { - cleanupEffect(this); - } return this.fn(); } finally { - if (effectTrackDepth <= maxMarkerBits) { - finalizeDepMarkers(this); - } - trackOpBit = 1 << --effectTrackDepth; - activeEffect = this.parent; - shouldTrack = lastShouldTrack; - this.parent = void 0; - if (this.deferStop) { - this.stop(); - } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= ~2; } } stop() { - if (activeEffect === this) { - this.deferStop = true; - } else if (this.active) { - cleanupEffect(this); - if (this.onStop) { - this.onStop(); + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); } - this.active = false; + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= ~1; } } -} -function cleanupEffect(effect2) { - const { deps } = effect2; - if (deps.length) { - for (let i = 0; i < deps.length; i++) { - deps[i].delete(effect2); + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); } - deps.length = 0; + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= ~8; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= ~8; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= ~16; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + const dep = computed.dep; + computed.flags |= 2; + if (dep.version > 0 && !computed.isSSR && computed.deps && !isDirty(computed)) { + computed.flags &= ~2; + return; + } + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || shared.hasChanged(value, computed._value)) { + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= ~2; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= ~4; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; } } function effect(fn, options) { if (fn.effect instanceof ReactiveEffect) { fn = fn.effect.fn; } - const _effect = new ReactiveEffect(fn); + const e = new ReactiveEffect(fn); if (options) { - shared.extend(_effect, options); - if (options.scope) - recordEffectScope(_effect, options.scope); + shared.extend(e, options); } - if (!options || !options.lazy) { - _effect.run(); + try { + e.run(); + } catch (err) { + e.stop(); + throw err; } - const runner = _effect.run.bind(_effect); - runner.effect = _effect; + const runner = e.run.bind(e); + runner.effect = e; return runner; } function stop(runner) { @@ -238,193 +450,455 @@ function resetTracking() { const last = trackStack.pop(); shouldTrack = last === void 0 ? true : last; } +function onEffectCleanup(fn, failSilently = false) { + if (activeSub instanceof ReactiveEffect) { + activeSub.cleanup = fn; + } +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (false) ; + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol( + "" +); +const MAP_KEY_ITERATE_KEY = Symbol( + "" +); +const ARRAY_ITERATE_KEY = Symbol( + "" +); function track(target, type, key) { - if (shouldTrack && activeEffect) { + if (shouldTrack && activeSub) { let depsMap = targetMap.get(target); if (!depsMap) { targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); } let dep = depsMap.get(key); if (!dep) { - depsMap.set(key, dep = createDep()); + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; } - trackEffects(dep); - } -} -function trackEffects(dep, debuggerEventExtraInfo) { - let shouldTrack2 = false; - if (effectTrackDepth <= maxMarkerBits) { - if (!newTracked(dep)) { - dep.n |= trackOpBit; - shouldTrack2 = !wasTracked(dep); + { + dep.track(); } - } else { - shouldTrack2 = !dep.has(activeEffect); - } - if (shouldTrack2) { - dep.add(activeEffect); - activeEffect.deps.push(dep); } } function trigger(target, type, key, newValue, oldValue, oldTarget) { const depsMap = targetMap.get(target); if (!depsMap) { + globalVersion++; return; } - let deps = []; - if (type === "clear") { - deps = [...depsMap.values()]; - } else if (key === "length" && shared.isArray(target)) { - const newLength = Number(newValue); - depsMap.forEach((dep, key2) => { - if (key2 === "length" || !shared.isSymbol(key2) && key2 >= newLength) { - deps.push(dep); - } - }); - } else { - if (key !== void 0) { - deps.push(depsMap.get(key)); - } - switch (type) { - case "add": - if (!shared.isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - if (shared.isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } else if (shared.isIntegerKey(key)) { - deps.push(depsMap.get("length")); - } - break; - case "delete": - if (!shared.isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - if (shared.isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - break; - case "set": - if (shared.isMap(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - } - break; - } - } - if (deps.length === 1) { - if (deps[0]) { + const run = (dep) => { + if (dep) { { - triggerEffects(deps[0]); + dep.trigger(); } } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); } else { - const effects = []; - for (const dep of deps) { - if (dep) { - effects.push(...dep); + const targetIsArray = shared.isArray(target); + const isArrayIndex = targetIsArray && shared.isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !shared.isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (shared.isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; } } - { - triggerEffects(createDep(effects)); - } - } -} -function triggerEffects(dep, debuggerEventExtraInfo) { - const effects = shared.isArray(dep) ? dep : [...dep]; - for (const effect2 of effects) { - if (effect2.computed) { - triggerEffect(effect2); - } - } - for (const effect2 of effects) { - if (!effect2.computed) { - triggerEffect(effect2); - } - } -} -function triggerEffect(effect2, debuggerEventExtraInfo) { - if (effect2 !== activeEffect || effect2.allowRecurse) { - if (effect2.scheduler) { - effect2.scheduler(); - } else { - effect2.run(); - } } + endBatch(); } function getDepFromReactive(object, key) { - var _a; - return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => shared.isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; } const isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`); const builtInSymbols = new Set( /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(shared.isSymbol) ); -const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); -function createArrayInstrumentations() { - const instrumentations = {}; - ["includes", "indexOf", "lastIndexOf"].forEach((key) => { - instrumentations[key] = function(...args) { - const arr = toRaw(this); - for (let i = 0, l = this.length; i < l; i++) { - track(arr, "get", i + ""); - } - const res = arr[key](...args); - if (res === -1 || res === false) { - return arr[key](...args.map(toRaw)); - } else { - return res; - } - }; - }); - ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { - instrumentations[key] = function(...args) { - pauseTracking(); - const res = toRaw(this)[key].apply(this, args); - resetTracking(); - return res; - }; - }); - return instrumentations; -} function hasOwnProperty(key) { + if (!shared.isSymbol(key)) key = String(key); const obj = toRaw(this); track(obj, "has", key); return obj.hasOwnProperty(key); } class BaseReactiveHandler { - constructor(_isReadonly = false, _shallow = false) { + constructor(_isReadonly = false, _isShallow = false) { this._isReadonly = _isReadonly; - this._shallow = _shallow; + this._isShallow = _isShallow; } get(target, key, receiver) { - const isReadonly2 = this._isReadonly, shallow = this._shallow; + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; if (key === "__v_isReactive") { return !isReadonly2; } else if (key === "__v_isReadonly") { return isReadonly2; } else if (key === "__v_isShallow") { - return shallow; - } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { - return target; + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; } const targetIsArray = shared.isArray(target); if (!isReadonly2) { - if (targetIsArray && shared.hasOwn(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver); + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; } if (key === "hasOwnProperty") { return hasOwnProperty; } } - const res = Reflect.get(target, key, receiver); + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { return res; } if (!isReadonly2) { track(target, "get", key); } - if (shallow) { + if (isShallow2) { return res; } if (isRef(res)) { @@ -437,26 +911,33 @@ class BaseReactiveHandler { } } class MutableReactiveHandler extends BaseReactiveHandler { - constructor(shallow = false) { - super(false, shallow); + constructor(isShallow2 = false) { + super(false, isShallow2); } set(target, key, value, receiver) { let oldValue = target[key]; - if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { - return false; - } - if (!this._shallow) { + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); if (!isShallow(value) && !isReadonly(value)) { oldValue = toRaw(oldValue); value = toRaw(value); } if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } } } const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key); - const result = Reflect.set(target, key, value, receiver); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); if (target === toRaw(receiver)) { if (!hadKey) { trigger(target, "add", key, value); @@ -492,8 +973,8 @@ class MutableReactiveHandler extends BaseReactiveHandler { } } class ReadonlyReactiveHandler extends BaseReactiveHandler { - constructor(shallow = false) { - super(true, shallow); + constructor(isShallow2 = false) { + super(true, isShallow2); } set(target, key) { return true; @@ -504,116 +985,12 @@ class ReadonlyReactiveHandler extends BaseReactiveHandler { } const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); -const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( - true -); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); const toShallow = (value) => value; const getProto = (v) => Reflect.getPrototypeOf(v); -function get(target, key, isReadonly = false, isShallow = false) { - target = target["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!isReadonly) { - if (shared.hasChanged(key, rawKey)) { - track(rawTarget, "get", key); - } - track(rawTarget, "get", rawKey); - } - const { has: has2 } = getProto(rawTarget); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - if (has2.call(rawTarget, key)) { - return wrap(target.get(key)); - } else if (has2.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } else if (target !== rawTarget) { - target.get(key); - } -} -function has(key, isReadonly = false) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!isReadonly) { - if (shared.hasChanged(key, rawKey)) { - track(rawTarget, "has", key); - } - track(rawTarget, "has", rawKey); - } - return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); -} -function size(target, isReadonly = false) { - target = target["__v_raw"]; - !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); - return Reflect.get(target, "size", target); -} -function add(value) { - value = toRaw(value); - const target = toRaw(this); - const proto = getProto(target); - const hadKey = proto.has.call(target, value); - if (!hadKey) { - target.add(value); - trigger(target, "add", value, value); - } - return this; -} -function set(key, value) { - value = toRaw(value); - const target = toRaw(this); - const { has: has2, get: get2 } = getProto(target); - let hadKey = has2.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has2.call(target, key); - } - const oldValue = get2.call(target, key); - target.set(key, value); - if (!hadKey) { - trigger(target, "add", key, value); - } else if (shared.hasChanged(value, oldValue)) { - trigger(target, "set", key, value); - } - return this; -} -function deleteEntry(key) { - const target = toRaw(this); - const { has: has2, get: get2 } = getProto(target); - let hadKey = has2.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has2.call(target, key); - } - get2 ? get2.call(target, key) : void 0; - const result = target.delete(key); - if (hadKey) { - trigger(target, "delete", key, void 0); - } - return result; -} -function clear() { - const target = toRaw(this); - const hadItems = target.size !== 0; - const result = target.clear(); - if (hadItems) { - trigger(target, "clear", void 0, void 0); - } - return result; -} -function createForEach(isReadonly, isShallow) { - return function forEach(callback, thisArg) { - const observed = this; - const target = observed["__v_raw"]; - const rawTarget = toRaw(target); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); - return target.forEach((value, key) => { - return callback.call(thisArg, wrap(value), wrap(key), observed); - }); - }; -} -function createIterableMethod(method, isReadonly, isShallow) { +function createIterableMethod(method, isReadonly2, isShallow2) { return function(...args) { const target = this["__v_raw"]; const rawTarget = toRaw(target); @@ -621,8 +998,8 @@ function createIterableMethod(method, isReadonly, isShallow) { const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; const isKeyOnly = method === "keys" && targetIsMap; const innerIterator = target[method](...args); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track( + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY @@ -648,110 +1025,145 @@ function createReadonlyMethod(type) { return type === "delete" ? false : type === "clear" ? void 0 : this; }; } -function createInstrumentations() { - const mutableInstrumentations2 = { +function createInstrumentations(readonly, shallow) { + const instrumentations = { get(key) { - return get(this, key); + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } }, get size() { - return size(this); - }, - has, - add, - set, - delete: deleteEntry, - clear, - forEach: createForEach(false, false) - }; - const shallowInstrumentations2 = { - get(key) { - return get(this, key, false, true); - }, - get size() { - return size(this); - }, - has, - add, - set, - delete: deleteEntry, - clear, - forEach: createForEach(false, true) - }; - const readonlyInstrumentations2 = { - get(key) { - return get(this, key, true); - }, - get size() { - return size(this, true); + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); }, has(key) { - return has.call(this, key, true); + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); }, - add: createReadonlyMethod("add"), - set: createReadonlyMethod("set"), - delete: createReadonlyMethod("delete"), - clear: createReadonlyMethod("clear"), - forEach: createForEach(true, false) + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } }; - const shallowReadonlyInstrumentations2 = { - get(key) { - return get(this, key, true, true); - }, - get size() { - return size(this, true); - }, - has(key) { - return has.call(this, key, true); - }, - add: createReadonlyMethod("add"), - set: createReadonlyMethod("set"), - delete: createReadonlyMethod("delete"), - clear: createReadonlyMethod("clear"), - forEach: createForEach(true, true) - }; - const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; - iteratorMethods.forEach((method) => { - mutableInstrumentations2[method] = createIterableMethod( - method, - false, - false - ); - readonlyInstrumentations2[method] = createIterableMethod( - method, - true, - false - ); - shallowInstrumentations2[method] = createIterableMethod( - method, - false, - true - ); - shallowReadonlyInstrumentations2[method] = createIterableMethod( - method, - true, - true - ); - }); - return [ - mutableInstrumentations2, - readonlyInstrumentations2, - shallowInstrumentations2, - shallowReadonlyInstrumentations2 + shared.extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; } -const [ - mutableInstrumentations, - readonlyInstrumentations, - shallowInstrumentations, - shallowReadonlyInstrumentations -] = /* @__PURE__ */ createInstrumentations(); -function createInstrumentationGetter(isReadonly, shallow) { - const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); return (target, key, receiver) => { if (key === "__v_isReactive") { - return !isReadonly; + return !isReadonly2; } else if (key === "__v_isReadonly") { - return isReadonly; + return isReadonly2; } else if (key === "__v_raw") { return target; } @@ -870,38 +1282,23 @@ function isShallow(value) { return !!(value && value["__v_isShallow"]); } function isProxy(value) { - return isReactive(value) || isReadonly(value); + return value ? !!value["__v_raw"] : false; } function toRaw(observed) { const raw = observed && observed["__v_raw"]; return raw ? toRaw(raw) : observed; } function markRaw(value) { - shared.def(value, "__v_skip", true); + if (!shared.hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + shared.def(value, "__v_skip", true); + } return value; } const toReactive = (value) => shared.isObject(value) ? reactive(value) : value; const toReadonly = (value) => shared.isObject(value) ? readonly(value) : value; -function trackRefValue(ref2) { - if (shouldTrack && activeEffect) { - ref2 = toRaw(ref2); - { - trackEffects(ref2.dep || (ref2.dep = createDep())); - } - } -} -function triggerRefValue(ref2, newVal) { - ref2 = toRaw(ref2); - const dep = ref2.dep; - if (dep) { - { - triggerEffects(dep); - } - } -} function isRef(r) { - return !!(r && r.__v_isRef === true); + return r ? r["__v_isRef"] === true : false; } function ref(value) { return createRef(value, false); @@ -916,29 +1313,39 @@ function createRef(rawValue, shallow) { return new RefImpl(rawValue, shallow); } class RefImpl { - constructor(value, __v_isShallow) { - this.__v_isShallow = __v_isShallow; - this.dep = void 0; - this.__v_isRef = true; - this._rawValue = __v_isShallow ? value : toRaw(value); - this._value = __v_isShallow ? value : toReactive(value); + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; } get value() { - trackRefValue(this); + { + this.dep.track(); + } return this._value; } - set value(newVal) { - const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); - newVal = useDirectValue ? newVal : toRaw(newVal); - if (shared.hasChanged(newVal, this._rawValue)) { - this._rawValue = newVal; - this._value = useDirectValue ? newVal : toReactive(newVal); - triggerRefValue(this); + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (shared.hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger(); + } } } } function triggerRef(ref2) { - triggerRefValue(ref2); + if (ref2.dep) { + { + ref2.dep.trigger(); + } + } } function unref(ref2) { return isRef(ref2) ? ref2.value : ref2; @@ -947,7 +1354,7 @@ function toValue(source) { return shared.isFunction(source) ? source() : unref(source); } const shallowUnwrapHandlers = { - get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), set: (target, key, value, receiver) => { const oldValue = target[key]; if (isRef(oldValue) && !isRef(value)) { @@ -963,17 +1370,15 @@ function proxyRefs(objectWithRefs) { } class CustomRefImpl { constructor(factory) { - this.dep = void 0; - this.__v_isRef = true; - const { get, set } = factory( - () => trackRefValue(this), - () => triggerRefValue(this) - ); + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); this._get = get; this._set = set; } get value() { - return this._get(); + return this._value = this._get(); } set value(newVal) { this._set(newVal); @@ -994,11 +1399,12 @@ class ObjectRefImpl { this._object = _object; this._key = _key; this._defaultValue = _defaultValue; - this.__v_isRef = true; + this["__v_isRef"] = true; + this._value = void 0; } get value() { const val = this._object[this._key]; - return val === void 0 ? this._defaultValue : val; + return this._value = val === void 0 ? this._defaultValue : val; } set value(newVal) { this._object[this._key] = newVal; @@ -1010,11 +1416,12 @@ class ObjectRefImpl { class GetterRefImpl { constructor(_getter) { this._getter = _getter; - this.__v_isRef = true; - this.__v_isReadonly = true; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; } get value() { - return this._getter(); + return this._value = this._getter(); } } function toRef(source, key, defaultValue) { @@ -1034,153 +1441,349 @@ function propertyToRef(source, key, defaultValue) { } class ComputedRefImpl { - constructor(getter, _setter, isReadonly, isSSR) { - this._setter = _setter; - this.dep = void 0; + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ this.__v_isRef = true; - this["__v_isReadonly"] = false; - this._dirty = true; - this.effect = new ReactiveEffect(getter, () => { - if (!this._dirty) { - this._dirty = true; - triggerRefValue(this); - } - }); - this.effect.computed = this; - this.effect.active = this._cacheable = !isSSR; - this["__v_isReadonly"] = isReadonly; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } } get value() { - const self = toRaw(this); - trackRefValue(self); - if (self._dirty || !self._cacheable) { - self._dirty = false; - self._value = self.effect.run(); + const link = this.dep.track(); + refreshComputed(this); + if (link) { + link.version = this.dep.version; } - return self._value; + return this._value; } set value(newValue) { - this._setter(newValue); + if (this.setter) { + this.setter(newValue); + } } } function computed(getterOrOptions, debugOptions, isSSR = false) { let getter; let setter; - const onlyGetter = shared.isFunction(getterOrOptions); - if (onlyGetter) { + if (shared.isFunction(getterOrOptions)) { getter = getterOrOptions; - setter = shared.NOOP; } else { getter = getterOrOptions.get; setter = getterOrOptions.set; } - const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + const cRef = new ComputedRefImpl(getter, setter, isSSR); return cRef; } -const tick = /* @__PURE__ */ Promise.resolve(); -const queue = []; -let queued = false; -const scheduler = (fn) => { - queue.push(fn); - if (!queued) { - queued = true; - tick.then(flush); - } +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" }; -const flush = () => { - for (let i = 0; i < queue.length; i++) { - queue[i](); - } - queue.length = 0; - queued = false; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" }; -class DeferredComputedRefImpl { - constructor(getter) { - this.dep = void 0; - this._dirty = true; - this.__v_isRef = true; - this["__v_isReadonly"] = true; - let compareTarget; - let hasCompareTarget = false; - let scheduled = false; - this.effect = new ReactiveEffect(getter, (computedTrigger) => { - if (this.dep) { - if (computedTrigger) { - compareTarget = this._value; - hasCompareTarget = true; - } else if (!scheduled) { - const valueToCompare = hasCompareTarget ? compareTarget : this._value; - scheduled = true; - hasCompareTarget = false; - scheduler(() => { - if (this.effect.active && this._get() !== valueToCompare) { - triggerRefValue(this); - } - scheduled = false; - }); - } - for (const e of this.dep) { - if (e.computed instanceof DeferredComputedRefImpl) { - e.scheduler( - true - /* computedTrigger */ - ); +const ReactiveFlags = { + "SKIP": "__v_skip", + "IS_REACTIVE": "__v_isReactive", + "IS_READONLY": "__v_isReadonly", + "IS_SHALLOW": "__v_isShallow", + "RAW": "__v_raw", + "IS_REF": "__v_isRef" +}; + +const WatchErrorCodes = { + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP" +}; +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } +} +function watch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (shared.isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (shared.isFunction(s)) { + return call ? call(s, 2) : s(); + } else ; + }); + } else if (shared.isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); } } - } - this._dirty = true; - }); - this.effect.computed = this; - } - _get() { - if (this._dirty) { - this._dirty = false; - return this._value = this.effect.run(); + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; } - return this._value; + } else { + getter = shared.NOOP; } - get value() { - trackRefValue(this); - return toRaw(this)._get(); + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + shared.remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + oldValue = newValue; + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; } -function deferredComputed(getter) { - return new DeferredComputedRefImpl(getter); +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !shared.isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (shared.isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (shared.isSet(value) || shared.isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (shared.isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; } +exports.ARRAY_ITERATE_KEY = ARRAY_ITERATE_KEY; +exports.EffectFlags = EffectFlags; exports.EffectScope = EffectScope; exports.ITERATE_KEY = ITERATE_KEY; +exports.MAP_KEY_ITERATE_KEY = MAP_KEY_ITERATE_KEY; exports.ReactiveEffect = ReactiveEffect; +exports.ReactiveFlags = ReactiveFlags; +exports.TrackOpTypes = TrackOpTypes; +exports.TriggerOpTypes = TriggerOpTypes; +exports.WatchErrorCodes = WatchErrorCodes; exports.computed = computed; exports.customRef = customRef; -exports.deferredComputed = deferredComputed; exports.effect = effect; exports.effectScope = effectScope; exports.enableTracking = enableTracking; exports.getCurrentScope = getCurrentScope; +exports.getCurrentWatcher = getCurrentWatcher; exports.isProxy = isProxy; exports.isReactive = isReactive; exports.isReadonly = isReadonly; exports.isRef = isRef; exports.isShallow = isShallow; exports.markRaw = markRaw; +exports.onEffectCleanup = onEffectCleanup; exports.onScopeDispose = onScopeDispose; +exports.onWatcherCleanup = onWatcherCleanup; exports.pauseTracking = pauseTracking; exports.proxyRefs = proxyRefs; exports.reactive = reactive; +exports.reactiveReadArray = reactiveReadArray; exports.readonly = readonly; exports.ref = ref; exports.resetTracking = resetTracking; exports.shallowReactive = shallowReactive; +exports.shallowReadArray = shallowReadArray; exports.shallowReadonly = shallowReadonly; exports.shallowRef = shallowRef; exports.stop = stop; exports.toRaw = toRaw; +exports.toReactive = toReactive; +exports.toReadonly = toReadonly; exports.toRef = toRef; exports.toRefs = toRefs; exports.toValue = toValue; exports.track = track; +exports.traverse = traverse; exports.trigger = trigger; exports.triggerRef = triggerRef; exports.unref = unref; +exports.watch = watch; diff --git a/.output/server/node_modules/@vue/reactivity/index.js b/.output/server/node_modules/@vue/reactivity/index.js deleted file mode 100644 index 04a8ba5..0000000 --- a/.output/server/node_modules/@vue/reactivity/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/reactivity.cjs.prod.js') -} else { - module.exports = require('./dist/reactivity.cjs.js') -} diff --git a/.output/server/node_modules/@vue/reactivity/package.json b/.output/server/node_modules/@vue/reactivity/package.json index 2564baf..71afa00 100644 --- a/.output/server/node_modules/@vue/reactivity/package.json +++ b/.output/server/node_modules/@vue/reactivity/package.json @@ -1,6 +1,6 @@ { "name": "@vue/reactivity", - "version": "3.3.9", + "version": "3.5.13", "description": "@vue/reactivity", "main": "index.js", "module": "dist/reactivity.esm-bundler.js", @@ -11,6 +11,20 @@ "index.js", "dist" ], + "exports": { + ".": { + "types": "./dist/reactivity.d.ts", + "node": { + "production": "./dist/reactivity.cjs.prod.js", + "development": "./dist/reactivity.cjs.js", + "default": "./dist/reactivity.cjs.prod.js" + }, + "module": "./dist/reactivity.esm-bundler.js", + "import": "./dist/reactivity.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, "sideEffects": false, "repository": { "type": "git", @@ -36,6 +50,9 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/reactivity#readme", "dependencies": { - "@vue/shared": "3.3.9" - } + "@vue/shared": "3.5.13" + }, + "__npminstall_done": true, + "_from": "@vue/reactivity@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js b/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js deleted file mode 100644 index be5e426..0000000 --- a/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js +++ /dev/null @@ -1,7901 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var reactivity = require('@vue/reactivity'); -var shared = require('@vue/shared'); - -const stack = []; -function pushWarningContext(vnode) { - stack.push(vnode); -} -function popWarningContext() { - stack.pop(); -} -function warn(msg, ...args) { - reactivity.pauseTracking(); - const instance = stack.length ? stack[stack.length - 1].component : null; - const appWarnHandler = instance && instance.appContext.config.warnHandler; - const trace = getComponentTrace(); - if (appWarnHandler) { - callWithErrorHandling( - appWarnHandler, - instance, - 11, - [ - msg + args.join(""), - instance && instance.proxy, - trace.map( - ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` - ).join("\n"), - trace - ] - ); - } else { - const warnArgs = [`[Vue warn]: ${msg}`, ...args]; - if (trace.length && // avoid spamming console during tests - true) { - warnArgs.push(` -`, ...formatTrace(trace)); - } - console.warn(...warnArgs); - } - reactivity.resetTracking(); -} -function getComponentTrace() { - let currentVNode = stack[stack.length - 1]; - if (!currentVNode) { - return []; - } - const normalizedStack = []; - while (currentVNode) { - const last = normalizedStack[0]; - if (last && last.vnode === currentVNode) { - last.recurseCount++; - } else { - normalizedStack.push({ - vnode: currentVNode, - recurseCount: 0 - }); - } - const parentInstance = currentVNode.component && currentVNode.component.parent; - currentVNode = parentInstance && parentInstance.vnode; - } - return normalizedStack; -} -function formatTrace(trace) { - const logs = []; - trace.forEach((entry, i) => { - logs.push(...i === 0 ? [] : [` -`], ...formatTraceEntry(entry)); - }); - return logs; -} -function formatTraceEntry({ vnode, recurseCount }) { - const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; - const isRoot = vnode.component ? vnode.component.parent == null : false; - const open = ` at <${formatComponentName( - vnode.component, - vnode.type, - isRoot - )}`; - const close = `>` + postfix; - return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; -} -function formatProps(props) { - const res = []; - const keys = Object.keys(props); - keys.slice(0, 3).forEach((key) => { - res.push(...formatProp(key, props[key])); - }); - if (keys.length > 3) { - res.push(` ...`); - } - return res; -} -function formatProp(key, value, raw) { - if (shared.isString(value)) { - value = JSON.stringify(value); - return raw ? value : [`${key}=${value}`]; - } else if (typeof value === "number" || typeof value === "boolean" || value == null) { - return raw ? value : [`${key}=${value}`]; - } else if (reactivity.isRef(value)) { - value = formatProp(key, reactivity.toRaw(value.value), true); - return raw ? value : [`${key}=Ref<`, value, `>`]; - } else if (shared.isFunction(value)) { - return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; - } else { - value = reactivity.toRaw(value); - return raw ? value : [`${key}=`, value]; - } -} -function assertNumber(val, type) { - if (val === void 0) { - return; - } else if (typeof val !== "number") { - warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`); - } else if (isNaN(val)) { - warn(`${type} is NaN - the duration expression might be incorrect.`); - } -} - -const ErrorTypeStrings = { - ["sp"]: "serverPrefetch hook", - ["bc"]: "beforeCreate hook", - ["c"]: "created hook", - ["bm"]: "beforeMount hook", - ["m"]: "mounted hook", - ["bu"]: "beforeUpdate hook", - ["u"]: "updated", - ["bum"]: "beforeUnmount hook", - ["um"]: "unmounted hook", - ["a"]: "activated hook", - ["da"]: "deactivated hook", - ["ec"]: "errorCaptured hook", - ["rtc"]: "renderTracked hook", - ["rtg"]: "renderTriggered hook", - [0]: "setup function", - [1]: "render function", - [2]: "watcher getter", - [3]: "watcher callback", - [4]: "watcher cleanup function", - [5]: "native event handler", - [6]: "component event handler", - [7]: "vnode hook", - [8]: "directive hook", - [9]: "transition hook", - [10]: "app errorHandler", - [11]: "app warnHandler", - [12]: "ref function", - [13]: "async component loader", - [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" -}; -function callWithErrorHandling(fn, instance, type, args) { - let res; - try { - res = args ? fn(...args) : fn(); - } catch (err) { - handleError(err, instance, type); - } - return res; -} -function callWithAsyncErrorHandling(fn, instance, type, args) { - if (shared.isFunction(fn)) { - const res = callWithErrorHandling(fn, instance, type, args); - if (res && shared.isPromise(res)) { - res.catch((err) => { - handleError(err, instance, type); - }); - } - return res; - } - const values = []; - for (let i = 0; i < fn.length; i++) { - values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); - } - return values; -} -function handleError(err, instance, type, throwInDev = true) { - const contextVNode = instance ? instance.vnode : null; - if (instance) { - let cur = instance.parent; - const exposedInstance = instance.proxy; - const errorInfo = ErrorTypeStrings[type] ; - while (cur) { - const errorCapturedHooks = cur.ec; - if (errorCapturedHooks) { - for (let i = 0; i < errorCapturedHooks.length; i++) { - if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { - return; - } - } - } - cur = cur.parent; - } - const appErrorHandler = instance.appContext.config.errorHandler; - if (appErrorHandler) { - callWithErrorHandling( - appErrorHandler, - null, - 10, - [err, exposedInstance, errorInfo] - ); - return; - } - } - logError(err, type, contextVNode, throwInDev); -} -function logError(err, type, contextVNode, throwInDev = true) { - { - const info = ErrorTypeStrings[type]; - if (contextVNode) { - pushWarningContext(contextVNode); - } - warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`); - if (contextVNode) { - popWarningContext(); - } - if (throwInDev) { - throw err; - } else { - console.error(err); - } - } -} - -let isFlushing = false; -let isFlushPending = false; -const queue = []; -let flushIndex = 0; -const pendingPostFlushCbs = []; -let activePostFlushCbs = null; -let postFlushIndex = 0; -const resolvedPromise = /* @__PURE__ */ Promise.resolve(); -let currentFlushPromise = null; -const RECURSION_LIMIT = 100; -function nextTick(fn) { - const p = currentFlushPromise || resolvedPromise; - return fn ? p.then(this ? fn.bind(this) : fn) : p; -} -function findInsertionIndex(id) { - let start = flushIndex + 1; - let end = queue.length; - while (start < end) { - const middle = start + end >>> 1; - const middleJob = queue[middle]; - const middleJobId = getId(middleJob); - if (middleJobId < id || middleJobId === id && middleJob.pre) { - start = middle + 1; - } else { - end = middle; - } - } - return start; -} -function queueJob(job) { - if (!queue.length || !queue.includes( - job, - isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex - )) { - if (job.id == null) { - queue.push(job); - } else { - queue.splice(findInsertionIndex(job.id), 0, job); - } - queueFlush(); - } -} -function queueFlush() { - if (!isFlushing && !isFlushPending) { - isFlushPending = true; - currentFlushPromise = resolvedPromise.then(flushJobs); - } -} -function invalidateJob(job) { - const i = queue.indexOf(job); - if (i > flushIndex) { - queue.splice(i, 1); - } -} -function queuePostFlushCb(cb) { - if (!shared.isArray(cb)) { - if (!activePostFlushCbs || !activePostFlushCbs.includes( - cb, - cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex - )) { - pendingPostFlushCbs.push(cb); - } - } else { - pendingPostFlushCbs.push(...cb); - } - queueFlush(); -} -function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { - { - seen = seen || /* @__PURE__ */ new Map(); - } - for (; i < queue.length; i++) { - const cb = queue[i]; - if (cb && cb.pre) { - if (checkRecursiveUpdates(seen, cb)) { - continue; - } - queue.splice(i, 1); - i--; - cb(); - } - } -} -function flushPostFlushCbs(seen) { - if (pendingPostFlushCbs.length) { - const deduped = [...new Set(pendingPostFlushCbs)]; - pendingPostFlushCbs.length = 0; - if (activePostFlushCbs) { - activePostFlushCbs.push(...deduped); - return; - } - activePostFlushCbs = deduped; - { - seen = seen || /* @__PURE__ */ new Map(); - } - activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); - for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { - if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { - continue; - } - activePostFlushCbs[postFlushIndex](); - } - activePostFlushCbs = null; - postFlushIndex = 0; - } -} -const getId = (job) => job.id == null ? Infinity : job.id; -const comparator = (a, b) => { - const diff = getId(a) - getId(b); - if (diff === 0) { - if (a.pre && !b.pre) - return -1; - if (b.pre && !a.pre) - return 1; - } - return diff; -}; -function flushJobs(seen) { - isFlushPending = false; - isFlushing = true; - { - seen = seen || /* @__PURE__ */ new Map(); - } - queue.sort(comparator); - const check = (job) => checkRecursiveUpdates(seen, job) ; - try { - for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { - const job = queue[flushIndex]; - if (job && job.active !== false) { - if (check(job)) { - continue; - } - callWithErrorHandling(job, null, 14); - } - } - } finally { - flushIndex = 0; - queue.length = 0; - flushPostFlushCbs(seen); - isFlushing = false; - currentFlushPromise = null; - if (queue.length || pendingPostFlushCbs.length) { - flushJobs(seen); - } - } -} -function checkRecursiveUpdates(seen, fn) { - if (!seen.has(fn)) { - seen.set(fn, 1); - } else { - const count = seen.get(fn); - if (count > RECURSION_LIMIT) { - const instance = fn.ownerInstance; - const componentName = instance && getComponentName(instance.type); - warn( - `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.` - ); - return true; - } else { - seen.set(fn, count + 1); - } - } -} - -let isHmrUpdating = false; -const hmrDirtyComponents = /* @__PURE__ */ new Set(); -{ - shared.getGlobalThis().__VUE_HMR_RUNTIME__ = { - createRecord: tryWrap(createRecord), - rerender: tryWrap(rerender), - reload: tryWrap(reload) - }; -} -const map = /* @__PURE__ */ new Map(); -function registerHMR(instance) { - const id = instance.type.__hmrId; - let record = map.get(id); - if (!record) { - createRecord(id, instance.type); - record = map.get(id); - } - record.instances.add(instance); -} -function unregisterHMR(instance) { - map.get(instance.type.__hmrId).instances.delete(instance); -} -function createRecord(id, initialDef) { - if (map.has(id)) { - return false; - } - map.set(id, { - initialDef: normalizeClassComponent(initialDef), - instances: /* @__PURE__ */ new Set() - }); - return true; -} -function normalizeClassComponent(component) { - return isClassComponent(component) ? component.__vccOpts : component; -} -function rerender(id, newRender) { - const record = map.get(id); - if (!record) { - return; - } - record.initialDef.render = newRender; - [...record.instances].forEach((instance) => { - if (newRender) { - instance.render = newRender; - normalizeClassComponent(instance.type).render = newRender; - } - instance.renderCache = []; - isHmrUpdating = true; - instance.update(); - isHmrUpdating = false; - }); -} -function reload(id, newComp) { - const record = map.get(id); - if (!record) - return; - newComp = normalizeClassComponent(newComp); - updateComponentDef(record.initialDef, newComp); - const instances = [...record.instances]; - for (const instance of instances) { - const oldComp = normalizeClassComponent(instance.type); - if (!hmrDirtyComponents.has(oldComp)) { - if (oldComp !== record.initialDef) { - updateComponentDef(oldComp, newComp); - } - hmrDirtyComponents.add(oldComp); - } - instance.appContext.propsCache.delete(instance.type); - instance.appContext.emitsCache.delete(instance.type); - instance.appContext.optionsCache.delete(instance.type); - if (instance.ceReload) { - hmrDirtyComponents.add(oldComp); - instance.ceReload(newComp.styles); - hmrDirtyComponents.delete(oldComp); - } else if (instance.parent) { - queueJob(instance.parent.update); - } else if (instance.appContext.reload) { - instance.appContext.reload(); - } else if (typeof window !== "undefined") { - window.location.reload(); - } else { - console.warn( - "[HMR] Root or manually mounted instance modified. Full reload required." - ); - } - } - queuePostFlushCb(() => { - for (const instance of instances) { - hmrDirtyComponents.delete( - normalizeClassComponent(instance.type) - ); - } - }); -} -function updateComponentDef(oldComp, newComp) { - shared.extend(oldComp, newComp); - for (const key in oldComp) { - if (key !== "__file" && !(key in newComp)) { - delete oldComp[key]; - } - } -} -function tryWrap(fn) { - return (id, arg) => { - try { - return fn(id, arg); - } catch (e) { - console.error(e); - console.warn( - `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` - ); - } - }; -} - -exports.devtools = void 0; -let buffer = []; -let devtoolsNotInstalled = false; -function emit$1(event, ...args) { - if (exports.devtools) { - exports.devtools.emit(event, ...args); - } else if (!devtoolsNotInstalled) { - buffer.push({ event, args }); - } -} -function setDevtoolsHook(hook, target) { - var _a, _b; - exports.devtools = hook; - if (exports.devtools) { - exports.devtools.enabled = true; - buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args)); - buffer = []; - } else if ( - // handle late devtools injection - only do this if we are in an actual - // browser environment to avoid the timer handle stalling test runner exit - // (#4815) - typeof window !== "undefined" && // some envs mock window but not fully - window.HTMLElement && // also exclude jsdom - !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) - ) { - const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; - replay.push((newHook) => { - setDevtoolsHook(newHook, target); - }); - setTimeout(() => { - if (!exports.devtools) { - target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; - devtoolsNotInstalled = true; - buffer = []; - } - }, 3e3); - } else { - devtoolsNotInstalled = true; - buffer = []; - } -} -function devtoolsInitApp(app, version) { - emit$1("app:init" /* APP_INIT */, app, version, { - Fragment, - Text, - Comment, - Static - }); -} -function devtoolsUnmountApp(app) { - emit$1("app:unmount" /* APP_UNMOUNT */, app); -} -const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( - "component:added" /* COMPONENT_ADDED */ -); -const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); -const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( - "component:removed" /* COMPONENT_REMOVED */ -); -const devtoolsComponentRemoved = (component) => { - if (exports.devtools && typeof exports.devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered - !exports.devtools.cleanupBuffer(component)) { - _devtoolsComponentRemoved(component); - } -}; -function createDevtoolsComponentHook(hook) { - return (component) => { - emit$1( - hook, - component.appContext.app, - component.uid, - component.parent ? component.parent.uid : void 0, - component - ); - }; -} -const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( - "perf:start" /* PERFORMANCE_START */ -); -const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( - "perf:end" /* PERFORMANCE_END */ -); -function createDevtoolsPerformanceHook(hook) { - return (component, type, time) => { - emit$1(hook, component.appContext.app, component.uid, component, type, time); - }; -} -function devtoolsComponentEmit(component, event, params) { - emit$1( - "component:emit" /* COMPONENT_EMIT */, - component.appContext.app, - component, - event, - params - ); -} - -function emit(instance, event, ...rawArgs) { - if (instance.isUnmounted) - return; - const props = instance.vnode.props || shared.EMPTY_OBJ; - { - const { - emitsOptions, - propsOptions: [propsOptions] - } = instance; - if (emitsOptions) { - if (!(event in emitsOptions) && true) { - if (!propsOptions || !(shared.toHandlerKey(event) in propsOptions)) { - warn( - `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${shared.toHandlerKey(event)}" prop.` - ); - } - } else { - const validator = emitsOptions[event]; - if (shared.isFunction(validator)) { - const isValid = validator(...rawArgs); - if (!isValid) { - warn( - `Invalid event arguments: event validation failed for event "${event}".` - ); - } - } - } - } - } - let args = rawArgs; - const isModelListener = event.startsWith("update:"); - const modelArg = isModelListener && event.slice(7); - if (modelArg && modelArg in props) { - const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; - const { number, trim } = props[modifiersKey] || shared.EMPTY_OBJ; - if (trim) { - args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); - } - if (number) { - args = rawArgs.map(shared.looseToNumber); - } - } - { - devtoolsComponentEmit(instance, event, args); - } - { - const lowerCaseEvent = event.toLowerCase(); - if (lowerCaseEvent !== event && props[shared.toHandlerKey(lowerCaseEvent)]) { - warn( - `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( - instance, - instance.type - )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${shared.hyphenate(event)}" instead of "${event}".` - ); - } - } - let handlerName; - let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) - props[handlerName = shared.toHandlerKey(shared.camelize(event))]; - if (!handler && isModelListener) { - handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; - } - if (handler) { - callWithAsyncErrorHandling( - handler, - instance, - 6, - args - ); - } - const onceHandler = props[handlerName + `Once`]; - if (onceHandler) { - if (!instance.emitted) { - instance.emitted = {}; - } else if (instance.emitted[handlerName]) { - return; - } - instance.emitted[handlerName] = true; - callWithAsyncErrorHandling( - onceHandler, - instance, - 6, - args - ); - } -} -function normalizeEmitsOptions(comp, appContext, asMixin = false) { - const cache = appContext.emitsCache; - const cached = cache.get(comp); - if (cached !== void 0) { - return cached; - } - const raw = comp.emits; - let normalized = {}; - let hasExtends = false; - if (!shared.isFunction(comp)) { - const extendEmits = (raw2) => { - const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); - if (normalizedFromExtend) { - hasExtends = true; - shared.extend(normalized, normalizedFromExtend); - } - }; - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendEmits); - } - if (comp.extends) { - extendEmits(comp.extends); - } - if (comp.mixins) { - comp.mixins.forEach(extendEmits); - } - } - if (!raw && !hasExtends) { - if (shared.isObject(comp)) { - cache.set(comp, null); - } - return null; - } - if (shared.isArray(raw)) { - raw.forEach((key) => normalized[key] = null); - } else { - shared.extend(normalized, raw); - } - if (shared.isObject(comp)) { - cache.set(comp, normalized); - } - return normalized; -} -function isEmitListener(options, key) { - if (!options || !shared.isOn(key)) { - return false; - } - key = key.slice(2).replace(/Once$/, ""); - return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); -} - -let currentRenderingInstance = null; -let currentScopeId = null; -function setCurrentRenderingInstance(instance) { - const prev = currentRenderingInstance; - currentRenderingInstance = instance; - currentScopeId = instance && instance.type.__scopeId || null; - return prev; -} -function pushScopeId(id) { - currentScopeId = id; -} -function popScopeId() { - currentScopeId = null; -} -const withScopeId = (_id) => withCtx; -function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { - if (!ctx) - return fn; - if (fn._n) { - return fn; - } - const renderFnWithContext = (...args) => { - if (renderFnWithContext._d) { - setBlockTracking(-1); - } - const prevInstance = setCurrentRenderingInstance(ctx); - let res; - try { - res = fn(...args); - } finally { - setCurrentRenderingInstance(prevInstance); - if (renderFnWithContext._d) { - setBlockTracking(1); - } - } - { - devtoolsComponentUpdated(ctx); - } - return res; - }; - renderFnWithContext._n = true; - renderFnWithContext._c = true; - renderFnWithContext._d = true; - return renderFnWithContext; -} - -let accessedAttrs = false; -function markAttrsAccessed() { - accessedAttrs = true; -} -function renderComponentRoot(instance) { - const { - type: Component, - vnode, - proxy, - withProxy, - props, - propsOptions: [propsOptions], - slots, - attrs, - emit, - render, - renderCache, - data, - setupState, - ctx, - inheritAttrs - } = instance; - let result; - let fallthroughAttrs; - const prev = setCurrentRenderingInstance(instance); - { - accessedAttrs = false; - } - try { - if (vnode.shapeFlag & 4) { - const proxyToUse = withProxy || proxy; - const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { - get(target, key, receiver) { - warn( - `Property '${String( - key - )}' was accessed via 'this'. Avoid using 'this' in templates.` - ); - return Reflect.get(target, key, receiver); - } - }) : proxyToUse; - result = normalizeVNode( - render.call( - thisProxy, - proxyToUse, - renderCache, - props, - setupState, - data, - ctx - ) - ); - fallthroughAttrs = attrs; - } else { - const render2 = Component; - if (attrs === props) { - markAttrsAccessed(); - } - result = normalizeVNode( - render2.length > 1 ? render2( - props, - true ? { - get attrs() { - markAttrsAccessed(); - return attrs; - }, - slots, - emit - } : { attrs, slots, emit } - ) : render2( - props, - null - /* we know it doesn't need it */ - ) - ); - fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); - } - } catch (err) { - blockStack.length = 0; - handleError(err, instance, 1); - result = createVNode(Comment); - } - let root = result; - let setRoot = void 0; - if (result.patchFlag > 0 && result.patchFlag & 2048) { - [root, setRoot] = getChildRoot(result); - } - if (fallthroughAttrs && inheritAttrs !== false) { - const keys = Object.keys(fallthroughAttrs); - const { shapeFlag } = root; - if (keys.length) { - if (shapeFlag & (1 | 6)) { - if (propsOptions && keys.some(shared.isModelListener)) { - fallthroughAttrs = filterModelListeners( - fallthroughAttrs, - propsOptions - ); - } - root = cloneVNode(root, fallthroughAttrs); - } else if (!accessedAttrs && root.type !== Comment) { - const allAttrs = Object.keys(attrs); - const eventAttrs = []; - const extraAttrs = []; - for (let i = 0, l = allAttrs.length; i < l; i++) { - const key = allAttrs[i]; - if (shared.isOn(key)) { - if (!shared.isModelListener(key)) { - eventAttrs.push(key[2].toLowerCase() + key.slice(3)); - } - } else { - extraAttrs.push(key); - } - } - if (extraAttrs.length) { - warn( - `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` - ); - } - if (eventAttrs.length) { - warn( - `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` - ); - } - } - } - } - if (vnode.dirs) { - if (!isElementRoot(root)) { - warn( - `Runtime directive used on component with non-element root node. The directives will not function as intended.` - ); - } - root = cloneVNode(root); - root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; - } - if (vnode.transition) { - if (!isElementRoot(root)) { - warn( - `Component inside <Transition> renders non-element root node that cannot be animated.` - ); - } - root.transition = vnode.transition; - } - if (setRoot) { - setRoot(root); - } else { - result = root; - } - setCurrentRenderingInstance(prev); - return result; -} -const getChildRoot = (vnode) => { - const rawChildren = vnode.children; - const dynamicChildren = vnode.dynamicChildren; - const childRoot = filterSingleRoot(rawChildren); - if (!childRoot) { - return [vnode, void 0]; - } - const index = rawChildren.indexOf(childRoot); - const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; - const setRoot = (updatedRoot) => { - rawChildren[index] = updatedRoot; - if (dynamicChildren) { - if (dynamicIndex > -1) { - dynamicChildren[dynamicIndex] = updatedRoot; - } else if (updatedRoot.patchFlag > 0) { - vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; - } - } - }; - return [normalizeVNode(childRoot), setRoot]; -}; -function filterSingleRoot(children) { - let singleRoot; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - if (isVNode(child)) { - if (child.type !== Comment || child.children === "v-if") { - if (singleRoot) { - return; - } else { - singleRoot = child; - } - } - } else { - return; - } - } - return singleRoot; -} -const getFunctionalFallthrough = (attrs) => { - let res; - for (const key in attrs) { - if (key === "class" || key === "style" || shared.isOn(key)) { - (res || (res = {}))[key] = attrs[key]; - } - } - return res; -}; -const filterModelListeners = (attrs, props) => { - const res = {}; - for (const key in attrs) { - if (!shared.isModelListener(key) || !(key.slice(9) in props)) { - res[key] = attrs[key]; - } - } - return res; -}; -const isElementRoot = (vnode) => { - return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; -}; -function shouldUpdateComponent(prevVNode, nextVNode, optimized) { - const { props: prevProps, children: prevChildren, component } = prevVNode; - const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; - const emits = component.emitsOptions; - if ((prevChildren || nextChildren) && isHmrUpdating) { - return true; - } - if (nextVNode.dirs || nextVNode.transition) { - return true; - } - if (optimized && patchFlag >= 0) { - if (patchFlag & 1024) { - return true; - } - if (patchFlag & 16) { - if (!prevProps) { - return !!nextProps; - } - return hasPropsChanged(prevProps, nextProps, emits); - } else if (patchFlag & 8) { - const dynamicProps = nextVNode.dynamicProps; - for (let i = 0; i < dynamicProps.length; i++) { - const key = dynamicProps[i]; - if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { - return true; - } - } - } - } else { - if (prevChildren || nextChildren) { - if (!nextChildren || !nextChildren.$stable) { - return true; - } - } - if (prevProps === nextProps) { - return false; - } - if (!prevProps) { - return !!nextProps; - } - if (!nextProps) { - return true; - } - return hasPropsChanged(prevProps, nextProps, emits); - } - return false; -} -function hasPropsChanged(prevProps, nextProps, emitsOptions) { - const nextKeys = Object.keys(nextProps); - if (nextKeys.length !== Object.keys(prevProps).length) { - return true; - } - for (let i = 0; i < nextKeys.length; i++) { - const key = nextKeys[i]; - if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { - return true; - } - } - return false; -} -function updateHOCHostEl({ vnode, parent }, el) { - while (parent && parent.subTree === vnode) { - (vnode = parent.vnode).el = el; - parent = parent.parent; - } -} - -const COMPONENTS = "components"; -const DIRECTIVES = "directives"; -function resolveComponent(name, maybeSelfReference) { - return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; -} -const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); -function resolveDynamicComponent(component) { - if (shared.isString(component)) { - return resolveAsset(COMPONENTS, component, false) || component; - } else { - return component || NULL_DYNAMIC_COMPONENT; - } -} -function resolveDirective(name) { - return resolveAsset(DIRECTIVES, name); -} -function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { - const instance = currentRenderingInstance || currentInstance; - if (instance) { - const Component = instance.type; - if (type === COMPONENTS) { - const selfName = getComponentName( - Component, - false - /* do not include inferred name to avoid breaking existing code */ - ); - if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { - return Component; - } - } - const res = ( - // local registration - // check instance[type] first which is resolved for options API - resolve(instance[type] || Component[type], name) || // global registration - resolve(instance.appContext[type], name) - ); - if (!res && maybeSelfReference) { - return Component; - } - if (warnMissing && !res) { - const extra = type === COMPONENTS ? ` -If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; - warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); - } - return res; - } else { - warn( - `resolve${shared.capitalize(type.slice(0, -1))} can only be used in render() or setup().` - ); - } -} -function resolve(registry, name) { - return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); -} - -const isSuspense = (type) => type.__isSuspense; -const SuspenseImpl = { - name: "Suspense", - // In order to make Suspense tree-shakable, we need to avoid importing it - // directly in the renderer. The renderer checks for the __isSuspense flag - // on a vnode's type and calls the `process` method, passing in renderer - // internals. - __isSuspense: true, - process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { - if (n1 == null) { - mountSuspense( - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ); - } else { - patchSuspense( - n1, - n2, - container, - anchor, - parentComponent, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ); - } - }, - hydrate: hydrateSuspense, - create: createSuspenseBoundary, - normalize: normalizeSuspenseChildren -}; -const Suspense = SuspenseImpl ; -function triggerEvent(vnode, name) { - const eventListener = vnode.props && vnode.props[name]; - if (shared.isFunction(eventListener)) { - eventListener(); - } -} -function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { - const { - p: patch, - o: { createElement } - } = rendererInternals; - const hiddenContainer = createElement("div"); - const suspense = vnode.suspense = createSuspenseBoundary( - vnode, - parentSuspense, - parentComponent, - container, - hiddenContainer, - anchor, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ); - patch( - null, - suspense.pendingBranch = vnode.ssContent, - hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds - ); - if (suspense.deps > 0) { - triggerEvent(vnode, "onPending"); - triggerEvent(vnode, "onFallback"); - patch( - null, - vnode.ssFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds - ); - setActiveBranch(suspense, vnode.ssFallback); - } else { - suspense.resolve(false, true); - } -} -function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { - const suspense = n2.suspense = n1.suspense; - suspense.vnode = n2; - n2.el = n1.el; - const newBranch = n2.ssContent; - const newFallback = n2.ssFallback; - const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; - if (pendingBranch) { - suspense.pendingBranch = newBranch; - if (isSameVNodeType(newBranch, pendingBranch)) { - patch( - pendingBranch, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } else if (isInFallback) { - patch( - activeBranch, - newFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, newFallback); - } - } else { - suspense.pendingId++; - if (isHydrating) { - suspense.isHydrating = false; - suspense.activeBranch = pendingBranch; - } else { - unmount(pendingBranch, parentComponent, suspense); - } - suspense.deps = 0; - suspense.effects.length = 0; - suspense.hiddenContainer = createElement("div"); - if (isInFallback) { - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } else { - patch( - activeBranch, - newFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, newFallback); - } - } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch( - activeBranch, - newBranch, - container, - anchor, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - suspense.resolve(true); - } else { - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } - } - } - } else { - if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch( - activeBranch, - newBranch, - container, - anchor, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, newBranch); - } else { - triggerEvent(n2, "onPending"); - suspense.pendingBranch = newBranch; - suspense.pendingId++; - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } else { - const { timeout, pendingId } = suspense; - if (timeout > 0) { - setTimeout(() => { - if (suspense.pendingId === pendingId) { - suspense.fallback(newFallback); - } - }, timeout); - } else if (timeout === 0) { - suspense.fallback(newFallback); - } - } - } - } -} -let hasWarned = false; -function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { - if (!hasWarned) { - hasWarned = true; - console[console.info ? "info" : "log"]( - `<Suspense> is an experimental feature and its API will likely change.` - ); - } - const { - p: patch, - m: move, - um: unmount, - n: next, - o: { parentNode, remove } - } = rendererInternals; - let parentSuspenseId; - const isSuspensible = isVNodeSuspensible(vnode); - if (isSuspensible) { - if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { - parentSuspenseId = parentSuspense.pendingId; - parentSuspense.deps++; - } - } - const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; - { - assertNumber(timeout, `Suspense timeout`); - } - const suspense = { - vnode, - parent: parentSuspense, - parentComponent, - isSVG, - container, - hiddenContainer, - anchor, - deps: 0, - pendingId: 0, - timeout: typeof timeout === "number" ? timeout : -1, - activeBranch: null, - pendingBranch: null, - isInFallback: true, - isHydrating, - isUnmounted: false, - effects: [], - resolve(resume = false, sync = false) { - { - if (!resume && !suspense.pendingBranch) { - throw new Error( - `suspense.resolve() is called without a pending branch.` - ); - } - if (suspense.isUnmounted) { - throw new Error( - `suspense.resolve() is called on an already unmounted suspense boundary.` - ); - } - } - const { - vnode: vnode2, - activeBranch, - pendingBranch, - pendingId, - effects, - parentComponent: parentComponent2, - container: container2 - } = suspense; - let delayEnter = false; - if (suspense.isHydrating) { - suspense.isHydrating = false; - } else if (!resume) { - delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; - if (delayEnter) { - activeBranch.transition.afterLeave = () => { - if (pendingId === suspense.pendingId) { - move(pendingBranch, container2, anchor2, 0); - queuePostFlushCb(effects); - } - }; - } - let { anchor: anchor2 } = suspense; - if (activeBranch) { - anchor2 = next(activeBranch); - unmount(activeBranch, parentComponent2, suspense, true); - } - if (!delayEnter) { - move(pendingBranch, container2, anchor2, 0); - } - } - setActiveBranch(suspense, pendingBranch); - suspense.pendingBranch = null; - suspense.isInFallback = false; - let parent = suspense.parent; - let hasUnresolvedAncestor = false; - while (parent) { - if (parent.pendingBranch) { - parent.effects.push(...effects); - hasUnresolvedAncestor = true; - break; - } - parent = parent.parent; - } - if (!hasUnresolvedAncestor && !delayEnter) { - queuePostFlushCb(effects); - } - suspense.effects = []; - if (isSuspensible) { - if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { - parentSuspense.deps--; - if (parentSuspense.deps === 0 && !sync) { - parentSuspense.resolve(); - } - } - } - triggerEvent(vnode2, "onResolve"); - }, - fallback(fallbackVNode) { - if (!suspense.pendingBranch) { - return; - } - const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; - triggerEvent(vnode2, "onFallback"); - const anchor2 = next(activeBranch); - const mountFallback = () => { - if (!suspense.isInFallback) { - return; - } - patch( - null, - fallbackVNode, - container2, - anchor2, - parentComponent2, - null, - // fallback tree will not have suspense context - isSVG2, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, fallbackVNode); - }; - const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; - if (delayEnter) { - activeBranch.transition.afterLeave = mountFallback; - } - suspense.isInFallback = true; - unmount( - activeBranch, - parentComponent2, - null, - // no suspense so unmount hooks fire now - true - // shouldRemove - ); - if (!delayEnter) { - mountFallback(); - } - }, - move(container2, anchor2, type) { - suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); - suspense.container = container2; - }, - next() { - return suspense.activeBranch && next(suspense.activeBranch); - }, - registerDep(instance, setupRenderEffect) { - const isInPendingSuspense = !!suspense.pendingBranch; - if (isInPendingSuspense) { - suspense.deps++; - } - const hydratedEl = instance.vnode.el; - instance.asyncDep.catch((err) => { - handleError(err, instance, 0); - }).then((asyncSetupResult) => { - if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { - return; - } - instance.asyncResolved = true; - const { vnode: vnode2 } = instance; - { - pushWarningContext(vnode2); - } - handleSetupResult(instance, asyncSetupResult, false); - if (hydratedEl) { - vnode2.el = hydratedEl; - } - const placeholder = !hydratedEl && instance.subTree.el; - setupRenderEffect( - instance, - vnode2, - // component may have been moved before resolve. - // if this is not a hydration, instance.subTree will be the comment - // placeholder. - parentNode(hydratedEl || instance.subTree.el), - // anchor will not be used if this is hydration, so only need to - // consider the comment placeholder case. - hydratedEl ? null : next(instance.subTree), - suspense, - isSVG, - optimized - ); - if (placeholder) { - remove(placeholder); - } - updateHOCHostEl(instance, vnode2.el); - { - popWarningContext(); - } - if (isInPendingSuspense && --suspense.deps === 0) { - suspense.resolve(); - } - }); - }, - unmount(parentSuspense2, doRemove) { - suspense.isUnmounted = true; - if (suspense.activeBranch) { - unmount( - suspense.activeBranch, - parentComponent, - parentSuspense2, - doRemove - ); - } - if (suspense.pendingBranch) { - unmount( - suspense.pendingBranch, - parentComponent, - parentSuspense2, - doRemove - ); - } - } - }; - return suspense; -} -function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { - const suspense = vnode.suspense = createSuspenseBoundary( - vnode, - parentSuspense, - parentComponent, - node.parentNode, - document.createElement("div"), - null, - isSVG, - slotScopeIds, - optimized, - rendererInternals, - true - /* hydrating */ - ); - const result = hydrateNode( - node, - suspense.pendingBranch = vnode.ssContent, - parentComponent, - suspense, - slotScopeIds, - optimized - ); - if (suspense.deps === 0) { - suspense.resolve(false, true); - } - return result; -} -function normalizeSuspenseChildren(vnode) { - const { shapeFlag, children } = vnode; - const isSlotChildren = shapeFlag & 32; - vnode.ssContent = normalizeSuspenseSlot( - isSlotChildren ? children.default : children - ); - vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); -} -function normalizeSuspenseSlot(s) { - let block; - if (shared.isFunction(s)) { - const trackBlock = isBlockTreeEnabled && s._c; - if (trackBlock) { - s._d = false; - openBlock(); - } - s = s(); - if (trackBlock) { - s._d = true; - block = currentBlock; - closeBlock(); - } - } - if (shared.isArray(s)) { - const singleChild = filterSingleRoot(s); - if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { - warn(`<Suspense> slots expect a single root node.`); - } - s = singleChild; - } - s = normalizeVNode(s); - if (block && !s.dynamicChildren) { - s.dynamicChildren = block.filter((c) => c !== s); - } - return s; -} -function queueEffectWithSuspense(fn, suspense) { - if (suspense && suspense.pendingBranch) { - if (shared.isArray(fn)) { - suspense.effects.push(...fn); - } else { - suspense.effects.push(fn); - } - } else { - queuePostFlushCb(fn); - } -} -function setActiveBranch(suspense, branch) { - suspense.activeBranch = branch; - const { vnode, parentComponent } = suspense; - const el = vnode.el = branch.el; - if (parentComponent && parentComponent.subTree === vnode) { - parentComponent.vnode.el = el; - updateHOCHostEl(parentComponent, el); - } -} -function isVNodeSuspensible(vnode) { - var _a; - return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; -} - -function watchEffect(effect, options) { - return doWatch(effect, null, options); -} -function watchPostEffect(effect, options) { - return doWatch( - effect, - null, - shared.extend({}, options, { flush: "post" }) - ); -} -function watchSyncEffect(effect, options) { - return doWatch( - effect, - null, - shared.extend({}, options, { flush: "sync" }) - ); -} -const INITIAL_WATCHER_VALUE = {}; -function watch(source, cb, options) { - if (!shared.isFunction(cb)) { - warn( - `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` - ); - } - return doWatch(source, cb, options); -} -function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = shared.EMPTY_OBJ) { - var _a; - if (!cb) { - if (immediate !== void 0) { - warn( - `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` - ); - } - if (deep !== void 0) { - warn( - `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` - ); - } - } - const warnInvalidSource = (s) => { - warn( - `Invalid watch source: `, - s, - `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` - ); - }; - const instance = reactivity.getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; - let getter; - let forceTrigger = false; - let isMultiSource = false; - if (reactivity.isRef(source)) { - getter = () => source.value; - forceTrigger = reactivity.isShallow(source); - } else if (reactivity.isReactive(source)) { - getter = () => source; - deep = true; - } else if (shared.isArray(source)) { - isMultiSource = true; - forceTrigger = source.some((s) => reactivity.isReactive(s) || reactivity.isShallow(s)); - getter = () => source.map((s) => { - if (reactivity.isRef(s)) { - return s.value; - } else if (reactivity.isReactive(s)) { - return traverse(s); - } else if (shared.isFunction(s)) { - return callWithErrorHandling(s, instance, 2); - } else { - warnInvalidSource(s); - } - }); - } else if (shared.isFunction(source)) { - if (cb) { - getter = () => callWithErrorHandling(source, instance, 2); - } else { - getter = () => { - if (instance && instance.isUnmounted) { - return; - } - if (cleanup) { - cleanup(); - } - return callWithAsyncErrorHandling( - source, - instance, - 3, - [onCleanup] - ); - }; - } - } else { - getter = shared.NOOP; - warnInvalidSource(source); - } - if (cb && deep) { - const baseGetter = getter; - getter = () => traverse(baseGetter()); - } - let cleanup; - let onCleanup = (fn) => { - cleanup = effect.onStop = () => { - callWithErrorHandling(fn, instance, 4); - cleanup = effect.onStop = void 0; - }; - }; - let ssrCleanup; - if (isInSSRComponentSetup) { - onCleanup = shared.NOOP; - if (!cb) { - getter(); - } else if (immediate) { - callWithAsyncErrorHandling(cb, instance, 3, [ - getter(), - isMultiSource ? [] : void 0, - onCleanup - ]); - } - if (flush === "sync") { - const ctx = useSSRContext(); - ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); - } else { - return shared.NOOP; - } - } - let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; - const job = () => { - if (!effect.active) { - return; - } - if (cb) { - const newValue = effect.run(); - if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue)) || false) { - if (cleanup) { - cleanup(); - } - callWithAsyncErrorHandling(cb, instance, 3, [ - newValue, - // pass undefined as the old value when it's changed for the first time - oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, - onCleanup - ]); - oldValue = newValue; - } - } else { - effect.run(); - } - }; - job.allowRecurse = !!cb; - let scheduler; - if (flush === "sync") { - scheduler = job; - } else if (flush === "post") { - scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); - } else { - job.pre = true; - if (instance) - job.id = instance.uid; - scheduler = () => queueJob(job); - } - const effect = new reactivity.ReactiveEffect(getter, scheduler); - { - effect.onTrack = onTrack; - effect.onTrigger = onTrigger; - } - if (cb) { - if (immediate) { - job(); - } else { - oldValue = effect.run(); - } - } else if (flush === "post") { - queuePostRenderEffect( - effect.run.bind(effect), - instance && instance.suspense - ); - } else { - effect.run(); - } - const unwatch = () => { - effect.stop(); - if (instance && instance.scope) { - shared.remove(instance.scope.effects, effect); - } - }; - if (ssrCleanup) - ssrCleanup.push(unwatch); - return unwatch; -} -function instanceWatch(source, value, options) { - const publicThis = this.proxy; - const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); - let cb; - if (shared.isFunction(value)) { - cb = value; - } else { - cb = value.handler; - options = value; - } - const cur = currentInstance; - setCurrentInstance(this); - const res = doWatch(getter, cb.bind(publicThis), options); - if (cur) { - setCurrentInstance(cur); - } else { - unsetCurrentInstance(); - } - return res; -} -function createPathGetter(ctx, path) { - const segments = path.split("."); - return () => { - let cur = ctx; - for (let i = 0; i < segments.length && cur; i++) { - cur = cur[segments[i]]; - } - return cur; - }; -} -function traverse(value, seen) { - if (!shared.isObject(value) || value["__v_skip"]) { - return value; - } - seen = seen || /* @__PURE__ */ new Set(); - if (seen.has(value)) { - return value; - } - seen.add(value); - if (reactivity.isRef(value)) { - traverse(value.value, seen); - } else if (shared.isArray(value)) { - for (let i = 0; i < value.length; i++) { - traverse(value[i], seen); - } - } else if (shared.isSet(value) || shared.isMap(value)) { - value.forEach((v) => { - traverse(v, seen); - }); - } else if (shared.isPlainObject(value)) { - for (const key in value) { - traverse(value[key], seen); - } - } - return value; -} - -function validateDirectiveName(name) { - if (shared.isBuiltInDirective(name)) { - warn("Do not use built-in directive ids as custom directive id: " + name); - } -} -function withDirectives(vnode, directives) { - const internalInstance = currentRenderingInstance; - if (internalInstance === null) { - warn(`withDirectives can only be used inside render functions.`); - return vnode; - } - const instance = getExposeProxy(internalInstance) || internalInstance.proxy; - const bindings = vnode.dirs || (vnode.dirs = []); - for (let i = 0; i < directives.length; i++) { - let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i]; - if (dir) { - if (shared.isFunction(dir)) { - dir = { - mounted: dir, - updated: dir - }; - } - if (dir.deep) { - traverse(value); - } - bindings.push({ - dir, - instance, - value, - oldValue: void 0, - arg, - modifiers - }); - } - } - return vnode; -} -function invokeDirectiveHook(vnode, prevVNode, instance, name) { - const bindings = vnode.dirs; - const oldBindings = prevVNode && prevVNode.dirs; - for (let i = 0; i < bindings.length; i++) { - const binding = bindings[i]; - if (oldBindings) { - binding.oldValue = oldBindings[i].value; - } - let hook = binding.dir[name]; - if (hook) { - reactivity.pauseTracking(); - callWithAsyncErrorHandling(hook, instance, 8, [ - vnode.el, - binding, - vnode, - prevVNode - ]); - reactivity.resetTracking(); - } - } -} - -const leaveCbKey = Symbol("_leaveCb"); -const enterCbKey = Symbol("_enterCb"); -function useTransitionState() { - const state = { - isMounted: false, - isLeaving: false, - isUnmounting: false, - leavingVNodes: /* @__PURE__ */ new Map() - }; - onMounted(() => { - state.isMounted = true; - }); - onBeforeUnmount(() => { - state.isUnmounting = true; - }); - return state; -} -const TransitionHookValidator = [Function, Array]; -const BaseTransitionPropsValidators = { - mode: String, - appear: Boolean, - persisted: Boolean, - // enter - onBeforeEnter: TransitionHookValidator, - onEnter: TransitionHookValidator, - onAfterEnter: TransitionHookValidator, - onEnterCancelled: TransitionHookValidator, - // leave - onBeforeLeave: TransitionHookValidator, - onLeave: TransitionHookValidator, - onAfterLeave: TransitionHookValidator, - onLeaveCancelled: TransitionHookValidator, - // appear - onBeforeAppear: TransitionHookValidator, - onAppear: TransitionHookValidator, - onAfterAppear: TransitionHookValidator, - onAppearCancelled: TransitionHookValidator -}; -const BaseTransitionImpl = { - name: `BaseTransition`, - props: BaseTransitionPropsValidators, - setup(props, { slots }) { - const instance = getCurrentInstance(); - const state = useTransitionState(); - let prevTransitionKey; - return () => { - const children = slots.default && getTransitionRawChildren(slots.default(), true); - if (!children || !children.length) { - return; - } - let child = children[0]; - if (children.length > 1) { - let hasFound = false; - for (const c of children) { - if (c.type !== Comment) { - if (hasFound) { - warn( - "<transition> can only be used on a single element or component. Use <transition-group> for lists." - ); - break; - } - child = c; - hasFound = true; - } - } - } - const rawProps = reactivity.toRaw(props); - const { mode } = rawProps; - if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { - warn(`invalid <transition> mode: ${mode}`); - } - if (state.isLeaving) { - return emptyPlaceholder(child); - } - const innerChild = getKeepAliveChild(child); - if (!innerChild) { - return emptyPlaceholder(child); - } - const enterHooks = resolveTransitionHooks( - innerChild, - rawProps, - state, - instance - ); - setTransitionHooks(innerChild, enterHooks); - const oldChild = instance.subTree; - const oldInnerChild = oldChild && getKeepAliveChild(oldChild); - let transitionKeyChanged = false; - const { getTransitionKey } = innerChild.type; - if (getTransitionKey) { - const key = getTransitionKey(); - if (prevTransitionKey === void 0) { - prevTransitionKey = key; - } else if (key !== prevTransitionKey) { - prevTransitionKey = key; - transitionKeyChanged = true; - } - } - if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { - const leavingHooks = resolveTransitionHooks( - oldInnerChild, - rawProps, - state, - instance - ); - setTransitionHooks(oldInnerChild, leavingHooks); - if (mode === "out-in") { - state.isLeaving = true; - leavingHooks.afterLeave = () => { - state.isLeaving = false; - if (instance.update.active !== false) { - instance.update(); - } - }; - return emptyPlaceholder(child); - } else if (mode === "in-out" && innerChild.type !== Comment) { - leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { - const leavingVNodesCache = getLeavingNodesForType( - state, - oldInnerChild - ); - leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; - el[leaveCbKey] = () => { - earlyRemove(); - el[leaveCbKey] = void 0; - delete enterHooks.delayedLeave; - }; - enterHooks.delayedLeave = delayedLeave; - }; - } - } - return child; - }; - } -}; -const BaseTransition = BaseTransitionImpl; -function getLeavingNodesForType(state, vnode) { - const { leavingVNodes } = state; - let leavingVNodesCache = leavingVNodes.get(vnode.type); - if (!leavingVNodesCache) { - leavingVNodesCache = /* @__PURE__ */ Object.create(null); - leavingVNodes.set(vnode.type, leavingVNodesCache); - } - return leavingVNodesCache; -} -function resolveTransitionHooks(vnode, props, state, instance) { - const { - appear, - mode, - persisted = false, - onBeforeEnter, - onEnter, - onAfterEnter, - onEnterCancelled, - onBeforeLeave, - onLeave, - onAfterLeave, - onLeaveCancelled, - onBeforeAppear, - onAppear, - onAfterAppear, - onAppearCancelled - } = props; - const key = String(vnode.key); - const leavingVNodesCache = getLeavingNodesForType(state, vnode); - const callHook = (hook, args) => { - hook && callWithAsyncErrorHandling( - hook, - instance, - 9, - args - ); - }; - const callAsyncHook = (hook, args) => { - const done = args[1]; - callHook(hook, args); - if (shared.isArray(hook)) { - if (hook.every((hook2) => hook2.length <= 1)) - done(); - } else if (hook.length <= 1) { - done(); - } - }; - const hooks = { - mode, - persisted, - beforeEnter(el) { - let hook = onBeforeEnter; - if (!state.isMounted) { - if (appear) { - hook = onBeforeAppear || onBeforeEnter; - } else { - return; - } - } - if (el[leaveCbKey]) { - el[leaveCbKey]( - true - /* cancelled */ - ); - } - const leavingVNode = leavingVNodesCache[key]; - if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { - leavingVNode.el[leaveCbKey](); - } - callHook(hook, [el]); - }, - enter(el) { - let hook = onEnter; - let afterHook = onAfterEnter; - let cancelHook = onEnterCancelled; - if (!state.isMounted) { - if (appear) { - hook = onAppear || onEnter; - afterHook = onAfterAppear || onAfterEnter; - cancelHook = onAppearCancelled || onEnterCancelled; - } else { - return; - } - } - let called = false; - const done = el[enterCbKey] = (cancelled) => { - if (called) - return; - called = true; - if (cancelled) { - callHook(cancelHook, [el]); - } else { - callHook(afterHook, [el]); - } - if (hooks.delayedLeave) { - hooks.delayedLeave(); - } - el[enterCbKey] = void 0; - }; - if (hook) { - callAsyncHook(hook, [el, done]); - } else { - done(); - } - }, - leave(el, remove) { - const key2 = String(vnode.key); - if (el[enterCbKey]) { - el[enterCbKey]( - true - /* cancelled */ - ); - } - if (state.isUnmounting) { - return remove(); - } - callHook(onBeforeLeave, [el]); - let called = false; - const done = el[leaveCbKey] = (cancelled) => { - if (called) - return; - called = true; - remove(); - if (cancelled) { - callHook(onLeaveCancelled, [el]); - } else { - callHook(onAfterLeave, [el]); - } - el[leaveCbKey] = void 0; - if (leavingVNodesCache[key2] === vnode) { - delete leavingVNodesCache[key2]; - } - }; - leavingVNodesCache[key2] = vnode; - if (onLeave) { - callAsyncHook(onLeave, [el, done]); - } else { - done(); - } - }, - clone(vnode2) { - return resolveTransitionHooks(vnode2, props, state, instance); - } - }; - return hooks; -} -function emptyPlaceholder(vnode) { - if (isKeepAlive(vnode)) { - vnode = cloneVNode(vnode); - vnode.children = null; - return vnode; - } -} -function getKeepAliveChild(vnode) { - return isKeepAlive(vnode) ? ( - // #7121 ensure get the child component subtree in case - // it's been replaced during HMR - vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0 - ) : vnode; -} -function setTransitionHooks(vnode, hooks) { - if (vnode.shapeFlag & 6 && vnode.component) { - setTransitionHooks(vnode.component.subTree, hooks); - } else if (vnode.shapeFlag & 128) { - vnode.ssContent.transition = hooks.clone(vnode.ssContent); - vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); - } else { - vnode.transition = hooks; - } -} -function getTransitionRawChildren(children, keepComment = false, parentKey) { - let ret = []; - let keyedFragmentCount = 0; - for (let i = 0; i < children.length; i++) { - let child = children[i]; - const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); - if (child.type === Fragment) { - if (child.patchFlag & 128) - keyedFragmentCount++; - ret = ret.concat( - getTransitionRawChildren(child.children, keepComment, key) - ); - } else if (keepComment || child.type !== Comment) { - ret.push(key != null ? cloneVNode(child, { key }) : child); - } - } - if (keyedFragmentCount > 1) { - for (let i = 0; i < ret.length; i++) { - ret[i].patchFlag = -2; - } - } - return ret; -} - -/*! #__NO_SIDE_EFFECTS__ */ -// @__NO_SIDE_EFFECTS__ -function defineComponent(options, extraOptions) { - return shared.isFunction(options) ? ( - // #8326: extend call and options.name access are considered side-effects - // by Rollup, so we have to wrap it in a pure-annotated IIFE. - /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))() - ) : options; -} - -const isAsyncWrapper = (i) => !!i.type.__asyncLoader; -/*! #__NO_SIDE_EFFECTS__ */ -// @__NO_SIDE_EFFECTS__ -function defineAsyncComponent(source) { - if (shared.isFunction(source)) { - source = { loader: source }; - } - const { - loader, - loadingComponent, - errorComponent, - delay = 200, - timeout, - // undefined = never times out - suspensible = true, - onError: userOnError - } = source; - let pendingRequest = null; - let resolvedComp; - let retries = 0; - const retry = () => { - retries++; - pendingRequest = null; - return load(); - }; - const load = () => { - let thisRequest; - return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { - err = err instanceof Error ? err : new Error(String(err)); - if (userOnError) { - return new Promise((resolve, reject) => { - const userRetry = () => resolve(retry()); - const userFail = () => reject(err); - userOnError(err, userRetry, userFail, retries + 1); - }); - } else { - throw err; - } - }).then((comp) => { - if (thisRequest !== pendingRequest && pendingRequest) { - return pendingRequest; - } - if (!comp) { - warn( - `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` - ); - } - if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { - comp = comp.default; - } - if (comp && !shared.isObject(comp) && !shared.isFunction(comp)) { - throw new Error(`Invalid async component load result: ${comp}`); - } - resolvedComp = comp; - return comp; - })); - }; - return defineComponent({ - name: "AsyncComponentWrapper", - __asyncLoader: load, - get __asyncResolved() { - return resolvedComp; - }, - setup() { - const instance = currentInstance; - if (resolvedComp) { - return () => createInnerComp(resolvedComp, instance); - } - const onError = (err) => { - pendingRequest = null; - handleError( - err, - instance, - 13, - !errorComponent - /* do not throw in dev if user provided error component */ - ); - }; - if (suspensible && instance.suspense || isInSSRComponentSetup) { - return load().then((comp) => { - return () => createInnerComp(comp, instance); - }).catch((err) => { - onError(err); - return () => errorComponent ? createVNode(errorComponent, { - error: err - }) : null; - }); - } - const loaded = reactivity.ref(false); - const error = reactivity.ref(); - const delayed = reactivity.ref(!!delay); - if (delay) { - setTimeout(() => { - delayed.value = false; - }, delay); - } - if (timeout != null) { - setTimeout(() => { - if (!loaded.value && !error.value) { - const err = new Error( - `Async component timed out after ${timeout}ms.` - ); - onError(err); - error.value = err; - } - }, timeout); - } - load().then(() => { - loaded.value = true; - if (instance.parent && isKeepAlive(instance.parent.vnode)) { - queueJob(instance.parent.update); - } - }).catch((err) => { - onError(err); - error.value = err; - }); - return () => { - if (loaded.value && resolvedComp) { - return createInnerComp(resolvedComp, instance); - } else if (error.value && errorComponent) { - return createVNode(errorComponent, { - error: error.value - }); - } else if (loadingComponent && !delayed.value) { - return createVNode(loadingComponent); - } - }; - } - }); -} -function createInnerComp(comp, parent) { - const { ref: ref2, props, children, ce } = parent.vnode; - const vnode = createVNode(comp, props, children); - vnode.ref = ref2; - vnode.ce = ce; - delete parent.vnode.ce; - return vnode; -} - -const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; -const KeepAliveImpl = { - name: `KeepAlive`, - // Marker for special handling inside the renderer. We are not using a === - // check directly on KeepAlive in the renderer, because importing it directly - // would prevent it from being tree-shaken. - __isKeepAlive: true, - props: { - include: [String, RegExp, Array], - exclude: [String, RegExp, Array], - max: [String, Number] - }, - setup(props, { slots }) { - const instance = getCurrentInstance(); - const sharedContext = instance.ctx; - if (!sharedContext.renderer) { - return () => { - const children = slots.default && slots.default(); - return children && children.length === 1 ? children[0] : children; - }; - } - const cache = /* @__PURE__ */ new Map(); - const keys = /* @__PURE__ */ new Set(); - let current = null; - { - instance.__v_cache = cache; - } - const parentSuspense = instance.suspense; - const { - renderer: { - p: patch, - m: move, - um: _unmount, - o: { createElement } - } - } = sharedContext; - const storageContainer = createElement("div"); - sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { - const instance2 = vnode.component; - move(vnode, container, anchor, 0, parentSuspense); - patch( - instance2.vnode, - vnode, - container, - anchor, - instance2, - parentSuspense, - isSVG, - vnode.slotScopeIds, - optimized - ); - queuePostRenderEffect(() => { - instance2.isDeactivated = false; - if (instance2.a) { - shared.invokeArrayFns(instance2.a); - } - const vnodeHook = vnode.props && vnode.props.onVnodeMounted; - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance2.parent, vnode); - } - }, parentSuspense); - { - devtoolsComponentAdded(instance2); - } - }; - sharedContext.deactivate = (vnode) => { - const instance2 = vnode.component; - move(vnode, storageContainer, null, 1, parentSuspense); - queuePostRenderEffect(() => { - if (instance2.da) { - shared.invokeArrayFns(instance2.da); - } - const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance2.parent, vnode); - } - instance2.isDeactivated = true; - }, parentSuspense); - { - devtoolsComponentAdded(instance2); - } - }; - function unmount(vnode) { - resetShapeFlag(vnode); - _unmount(vnode, instance, parentSuspense, true); - } - function pruneCache(filter) { - cache.forEach((vnode, key) => { - const name = getComponentName(vnode.type); - if (name && (!filter || !filter(name))) { - pruneCacheEntry(key); - } - }); - } - function pruneCacheEntry(key) { - const cached = cache.get(key); - if (!current || !isSameVNodeType(cached, current)) { - unmount(cached); - } else if (current) { - resetShapeFlag(current); - } - cache.delete(key); - keys.delete(key); - } - watch( - () => [props.include, props.exclude], - ([include, exclude]) => { - include && pruneCache((name) => matches(include, name)); - exclude && pruneCache((name) => !matches(exclude, name)); - }, - // prune post-render after `current` has been updated - { flush: "post", deep: true } - ); - let pendingCacheKey = null; - const cacheSubtree = () => { - if (pendingCacheKey != null) { - cache.set(pendingCacheKey, getInnerChild(instance.subTree)); - } - }; - onMounted(cacheSubtree); - onUpdated(cacheSubtree); - onBeforeUnmount(() => { - cache.forEach((cached) => { - const { subTree, suspense } = instance; - const vnode = getInnerChild(subTree); - if (cached.type === vnode.type && cached.key === vnode.key) { - resetShapeFlag(vnode); - const da = vnode.component.da; - da && queuePostRenderEffect(da, suspense); - return; - } - unmount(cached); - }); - }); - return () => { - pendingCacheKey = null; - if (!slots.default) { - return null; - } - const children = slots.default(); - const rawVNode = children[0]; - if (children.length > 1) { - { - warn(`KeepAlive should contain exactly one component child.`); - } - current = null; - return children; - } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { - current = null; - return rawVNode; - } - let vnode = getInnerChild(rawVNode); - const comp = vnode.type; - const name = getComponentName( - isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp - ); - const { include, exclude, max } = props; - if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { - current = vnode; - return rawVNode; - } - const key = vnode.key == null ? comp : vnode.key; - const cachedVNode = cache.get(key); - if (vnode.el) { - vnode = cloneVNode(vnode); - if (rawVNode.shapeFlag & 128) { - rawVNode.ssContent = vnode; - } - } - pendingCacheKey = key; - if (cachedVNode) { - vnode.el = cachedVNode.el; - vnode.component = cachedVNode.component; - if (vnode.transition) { - setTransitionHooks(vnode, vnode.transition); - } - vnode.shapeFlag |= 512; - keys.delete(key); - keys.add(key); - } else { - keys.add(key); - if (max && keys.size > parseInt(max, 10)) { - pruneCacheEntry(keys.values().next().value); - } - } - vnode.shapeFlag |= 256; - current = vnode; - return isSuspense(rawVNode.type) ? rawVNode : vnode; - }; - } -}; -const KeepAlive = KeepAliveImpl; -function matches(pattern, name) { - if (shared.isArray(pattern)) { - return pattern.some((p) => matches(p, name)); - } else if (shared.isString(pattern)) { - return pattern.split(",").includes(name); - } else if (shared.isRegExp(pattern)) { - return pattern.test(name); - } - return false; -} -function onActivated(hook, target) { - registerKeepAliveHook(hook, "a", target); -} -function onDeactivated(hook, target) { - registerKeepAliveHook(hook, "da", target); -} -function registerKeepAliveHook(hook, type, target = currentInstance) { - const wrappedHook = hook.__wdc || (hook.__wdc = () => { - let current = target; - while (current) { - if (current.isDeactivated) { - return; - } - current = current.parent; - } - return hook(); - }); - injectHook(type, wrappedHook, target); - if (target) { - let current = target.parent; - while (current && current.parent) { - if (isKeepAlive(current.parent.vnode)) { - injectToKeepAliveRoot(wrappedHook, type, target, current); - } - current = current.parent; - } - } -} -function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { - const injected = injectHook( - type, - hook, - keepAliveRoot, - true - /* prepend */ - ); - onUnmounted(() => { - shared.remove(keepAliveRoot[type], injected); - }, target); -} -function resetShapeFlag(vnode) { - vnode.shapeFlag &= ~256; - vnode.shapeFlag &= ~512; -} -function getInnerChild(vnode) { - return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; -} - -function injectHook(type, hook, target = currentInstance, prepend = false) { - if (target) { - const hooks = target[type] || (target[type] = []); - const wrappedHook = hook.__weh || (hook.__weh = (...args) => { - if (target.isUnmounted) { - return; - } - reactivity.pauseTracking(); - setCurrentInstance(target); - const res = callWithAsyncErrorHandling(hook, target, type, args); - unsetCurrentInstance(); - reactivity.resetTracking(); - return res; - }); - if (prepend) { - hooks.unshift(wrappedHook); - } else { - hooks.push(wrappedHook); - } - return wrappedHook; - } else { - const apiName = shared.toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, "")); - warn( - `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) - ); - } -} -const createHook = (lifecycle) => (hook, target = currentInstance) => ( - // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) - (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) -); -const onBeforeMount = createHook("bm"); -const onMounted = createHook("m"); -const onBeforeUpdate = createHook("bu"); -const onUpdated = createHook("u"); -const onBeforeUnmount = createHook("bum"); -const onUnmounted = createHook("um"); -const onServerPrefetch = createHook("sp"); -const onRenderTriggered = createHook( - "rtg" -); -const onRenderTracked = createHook( - "rtc" -); -function onErrorCaptured(hook, target = currentInstance) { - injectHook("ec", hook, target); -} - -function renderList(source, renderItem, cache, index) { - let ret; - const cached = cache && cache[index]; - if (shared.isArray(source) || shared.isString(source)) { - ret = new Array(source.length); - for (let i = 0, l = source.length; i < l; i++) { - ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); - } - } else if (typeof source === "number") { - if (!Number.isInteger(source)) { - warn(`The v-for range expect an integer value but got ${source}.`); - } - ret = new Array(source); - for (let i = 0; i < source; i++) { - ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); - } - } else if (shared.isObject(source)) { - if (source[Symbol.iterator]) { - ret = Array.from( - source, - (item, i) => renderItem(item, i, void 0, cached && cached[i]) - ); - } else { - const keys = Object.keys(source); - ret = new Array(keys.length); - for (let i = 0, l = keys.length; i < l; i++) { - const key = keys[i]; - ret[i] = renderItem(source[key], key, i, cached && cached[i]); - } - } - } else { - ret = []; - } - if (cache) { - cache[index] = ret; - } - return ret; -} - -function createSlots(slots, dynamicSlots) { - for (let i = 0; i < dynamicSlots.length; i++) { - const slot = dynamicSlots[i]; - if (shared.isArray(slot)) { - for (let j = 0; j < slot.length; j++) { - slots[slot[j].name] = slot[j].fn; - } - } else if (slot) { - slots[slot.name] = slot.key ? (...args) => { - const res = slot.fn(...args); - if (res) - res.key = slot.key; - return res; - } : slot.fn; - } - } - return slots; -} - -function renderSlot(slots, name, props = {}, fallback, noSlotted) { - if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { - if (name !== "default") - props.name = name; - return createVNode("slot", props, fallback && fallback()); - } - let slot = slots[name]; - if (slot && slot.length > 1) { - warn( - `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` - ); - slot = () => []; - } - if (slot && slot._c) { - slot._d = false; - } - openBlock(); - const validSlotContent = slot && ensureValidVNode(slot(props)); - const rendered = createBlock( - Fragment, - { - key: props.key || // slot content array of a dynamic conditional slot may have a branch - // key attached in the `createSlots` helper, respect that - validSlotContent && validSlotContent.key || `_${name}` - }, - validSlotContent || (fallback ? fallback() : []), - validSlotContent && slots._ === 1 ? 64 : -2 - ); - if (!noSlotted && rendered.scopeId) { - rendered.slotScopeIds = [rendered.scopeId + "-s"]; - } - if (slot && slot._c) { - slot._d = true; - } - return rendered; -} -function ensureValidVNode(vnodes) { - return vnodes.some((child) => { - if (!isVNode(child)) - return true; - if (child.type === Comment) - return false; - if (child.type === Fragment && !ensureValidVNode(child.children)) - return false; - return true; - }) ? vnodes : null; -} - -function toHandlers(obj, preserveCaseIfNecessary) { - const ret = {}; - if (!shared.isObject(obj)) { - warn(`v-on with no argument expects an object value.`); - return ret; - } - for (const key in obj) { - ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : shared.toHandlerKey(key)] = obj[key]; - } - return ret; -} - -const getPublicInstance = (i) => { - if (!i) - return null; - if (isStatefulComponent(i)) - return getExposeProxy(i) || i.proxy; - return getPublicInstance(i.parent); -}; -const publicPropertiesMap = ( - // Move PURE marker to new line to workaround compiler discarding it - // due to type annotation - /* @__PURE__ */ shared.extend(/* @__PURE__ */ Object.create(null), { - $: (i) => i, - $el: (i) => i.vnode.el, - $data: (i) => i.data, - $props: (i) => reactivity.shallowReadonly(i.props) , - $attrs: (i) => reactivity.shallowReadonly(i.attrs) , - $slots: (i) => reactivity.shallowReadonly(i.slots) , - $refs: (i) => reactivity.shallowReadonly(i.refs) , - $parent: (i) => getPublicInstance(i.parent), - $root: (i) => getPublicInstance(i.root), - $emit: (i) => i.emit, - $options: (i) => resolveMergedOptions(i) , - $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)), - $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), - $watch: (i) => instanceWatch.bind(i) - }) -); -const isReservedPrefix = (key) => key === "_" || key === "$"; -const hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key); -const PublicInstanceProxyHandlers = { - get({ _: instance }, key) { - const { ctx, setupState, data, props, accessCache, type, appContext } = instance; - if (key === "__isVue") { - return true; - } - let normalizedProps; - if (key[0] !== "$") { - const n = accessCache[key]; - if (n !== void 0) { - switch (n) { - case 1 /* SETUP */: - return setupState[key]; - case 2 /* DATA */: - return data[key]; - case 4 /* CONTEXT */: - return ctx[key]; - case 3 /* PROPS */: - return props[key]; - } - } else if (hasSetupBinding(setupState, key)) { - accessCache[key] = 1 /* SETUP */; - return setupState[key]; - } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { - accessCache[key] = 2 /* DATA */; - return data[key]; - } else if ( - // only cache other properties when instance has declared (thus stable) - // props - (normalizedProps = instance.propsOptions[0]) && shared.hasOwn(normalizedProps, key) - ) { - accessCache[key] = 3 /* PROPS */; - return props[key]; - } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { - accessCache[key] = 4 /* CONTEXT */; - return ctx[key]; - } else if (shouldCacheAccess) { - accessCache[key] = 0 /* OTHER */; - } - } - const publicGetter = publicPropertiesMap[key]; - let cssModule, globalProperties; - if (publicGetter) { - if (key === "$attrs") { - reactivity.track(instance, "get", key); - markAttrsAccessed(); - } else if (key === "$slots") { - reactivity.track(instance, "get", key); - } - return publicGetter(instance); - } else if ( - // css module (injected by vue-loader) - (cssModule = type.__cssModules) && (cssModule = cssModule[key]) - ) { - return cssModule; - } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { - accessCache[key] = 4 /* CONTEXT */; - return ctx[key]; - } else if ( - // global properties - globalProperties = appContext.config.globalProperties, shared.hasOwn(globalProperties, key) - ) { - { - return globalProperties[key]; - } - } else if (currentRenderingInstance && (!shared.isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading - // to infinite warning loop - key.indexOf("__v") !== 0)) { - if (data !== shared.EMPTY_OBJ && isReservedPrefix(key[0]) && shared.hasOwn(data, key)) { - warn( - `Property ${JSON.stringify( - key - )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` - ); - } else if (instance === currentRenderingInstance) { - warn( - `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` - ); - } - } - }, - set({ _: instance }, key, value) { - const { data, setupState, ctx } = instance; - if (hasSetupBinding(setupState, key)) { - setupState[key] = value; - return true; - } else if (setupState.__isScriptSetup && shared.hasOwn(setupState, key)) { - warn(`Cannot mutate <script setup> binding "${key}" from Options API.`); - return false; - } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { - data[key] = value; - return true; - } else if (shared.hasOwn(instance.props, key)) { - warn(`Attempting to mutate prop "${key}". Props are readonly.`); - return false; - } - if (key[0] === "$" && key.slice(1) in instance) { - warn( - `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` - ); - return false; - } else { - if (key in instance.appContext.config.globalProperties) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - value - }); - } else { - ctx[key] = value; - } - } - return true; - }, - has({ - _: { data, setupState, accessCache, ctx, appContext, propsOptions } - }, key) { - let normalizedProps; - return !!accessCache[key] || data !== shared.EMPTY_OBJ && shared.hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && shared.hasOwn(normalizedProps, key) || shared.hasOwn(ctx, key) || shared.hasOwn(publicPropertiesMap, key) || shared.hasOwn(appContext.config.globalProperties, key); - }, - defineProperty(target, key, descriptor) { - if (descriptor.get != null) { - target._.accessCache[key] = 0; - } else if (shared.hasOwn(descriptor, "value")) { - this.set(target, key, descriptor.value, null); - } - return Reflect.defineProperty(target, key, descriptor); - } -}; -{ - PublicInstanceProxyHandlers.ownKeys = (target) => { - warn( - `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` - ); - return Reflect.ownKeys(target); - }; -} -const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend( - {}, - PublicInstanceProxyHandlers, - { - get(target, key) { - if (key === Symbol.unscopables) { - return; - } - return PublicInstanceProxyHandlers.get(target, key, target); - }, - has(_, key) { - const has = key[0] !== "_" && !shared.isGloballyAllowed(key); - if (!has && PublicInstanceProxyHandlers.has(_, key)) { - warn( - `Property ${JSON.stringify( - key - )} should not start with _ which is a reserved prefix for Vue internals.` - ); - } - return has; - } - } -); -function createDevRenderContext(instance) { - const target = {}; - Object.defineProperty(target, `_`, { - configurable: true, - enumerable: false, - get: () => instance - }); - Object.keys(publicPropertiesMap).forEach((key) => { - Object.defineProperty(target, key, { - configurable: true, - enumerable: false, - get: () => publicPropertiesMap[key](instance), - // intercepted by the proxy so no need for implementation, - // but needed to prevent set errors - set: shared.NOOP - }); - }); - return target; -} -function exposePropsOnRenderContext(instance) { - const { - ctx, - propsOptions: [propsOptions] - } = instance; - if (propsOptions) { - Object.keys(propsOptions).forEach((key) => { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => instance.props[key], - set: shared.NOOP - }); - }); - } -} -function exposeSetupStateOnRenderContext(instance) { - const { ctx, setupState } = instance; - Object.keys(reactivity.toRaw(setupState)).forEach((key) => { - if (!setupState.__isScriptSetup) { - if (isReservedPrefix(key[0])) { - warn( - `setup() return property ${JSON.stringify( - key - )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` - ); - return; - } - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => setupState[key], - set: shared.NOOP - }); - } - }); -} - -const warnRuntimeUsage = (method) => warn( - `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.` -); -function defineProps() { - { - warnRuntimeUsage(`defineProps`); - } - return null; -} -function defineEmits() { - { - warnRuntimeUsage(`defineEmits`); - } - return null; -} -function defineExpose(exposed) { - { - warnRuntimeUsage(`defineExpose`); - } -} -function defineOptions(options) { - { - warnRuntimeUsage(`defineOptions`); - } -} -function defineSlots() { - { - warnRuntimeUsage(`defineSlots`); - } - return null; -} -function defineModel() { - { - warnRuntimeUsage("defineModel"); - } -} -function withDefaults(props, defaults) { - { - warnRuntimeUsage(`withDefaults`); - } - return null; -} -function useSlots() { - return getContext().slots; -} -function useAttrs() { - return getContext().attrs; -} -function useModel(props, name, options) { - const i = getCurrentInstance(); - if (!i) { - warn(`useModel() called without active instance.`); - return reactivity.ref(); - } - if (!i.propsOptions[0][name]) { - warn(`useModel() called with prop "${name}" which is not declared.`); - return reactivity.ref(); - } - if (options && options.local) { - const proxy = reactivity.ref(props[name]); - watch( - () => props[name], - (v) => proxy.value = v - ); - watch(proxy, (value) => { - if (value !== props[name]) { - i.emit(`update:${name}`, value); - } - }); - return proxy; - } else { - return { - __v_isRef: true, - get value() { - return props[name]; - }, - set value(value) { - i.emit(`update:${name}`, value); - } - }; - } -} -function getContext() { - const i = getCurrentInstance(); - if (!i) { - warn(`useContext() called without active instance.`); - } - return i.setupContext || (i.setupContext = createSetupContext(i)); -} -function normalizePropsOrEmits(props) { - return shared.isArray(props) ? props.reduce( - (normalized, p) => (normalized[p] = null, normalized), - {} - ) : props; -} -function mergeDefaults(raw, defaults) { - const props = normalizePropsOrEmits(raw); - for (const key in defaults) { - if (key.startsWith("__skip")) - continue; - let opt = props[key]; - if (opt) { - if (shared.isArray(opt) || shared.isFunction(opt)) { - opt = props[key] = { type: opt, default: defaults[key] }; - } else { - opt.default = defaults[key]; - } - } else if (opt === null) { - opt = props[key] = { default: defaults[key] }; - } else { - warn(`props default key "${key}" has no corresponding declaration.`); - } - if (opt && defaults[`__skip_${key}`]) { - opt.skipFactory = true; - } - } - return props; -} -function mergeModels(a, b) { - if (!a || !b) - return a || b; - if (shared.isArray(a) && shared.isArray(b)) - return a.concat(b); - return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); -} -function createPropsRestProxy(props, excludedKeys) { - const ret = {}; - for (const key in props) { - if (!excludedKeys.includes(key)) { - Object.defineProperty(ret, key, { - enumerable: true, - get: () => props[key] - }); - } - } - return ret; -} -function withAsyncContext(getAwaitable) { - const ctx = getCurrentInstance(); - if (!ctx) { - warn( - `withAsyncContext called without active current instance. This is likely a bug.` - ); - } - let awaitable = getAwaitable(); - unsetCurrentInstance(); - if (shared.isPromise(awaitable)) { - awaitable = awaitable.catch((e) => { - setCurrentInstance(ctx); - throw e; - }); - } - return [awaitable, () => setCurrentInstance(ctx)]; -} - -function createDuplicateChecker() { - const cache = /* @__PURE__ */ Object.create(null); - return (type, key) => { - if (cache[key]) { - warn(`${type} property "${key}" is already defined in ${cache[key]}.`); - } else { - cache[key] = type; - } - }; -} -let shouldCacheAccess = true; -function applyOptions(instance) { - const options = resolveMergedOptions(instance); - const publicThis = instance.proxy; - const ctx = instance.ctx; - shouldCacheAccess = false; - if (options.beforeCreate) { - callHook(options.beforeCreate, instance, "bc"); - } - const { - // state - data: dataOptions, - computed: computedOptions, - methods, - watch: watchOptions, - provide: provideOptions, - inject: injectOptions, - // lifecycle - created, - beforeMount, - mounted, - beforeUpdate, - updated, - activated, - deactivated, - beforeDestroy, - beforeUnmount, - destroyed, - unmounted, - render, - renderTracked, - renderTriggered, - errorCaptured, - serverPrefetch, - // public API - expose, - inheritAttrs, - // assets - components, - directives, - filters - } = options; - const checkDuplicateProperties = createDuplicateChecker() ; - { - const [propsOptions] = instance.propsOptions; - if (propsOptions) { - for (const key in propsOptions) { - checkDuplicateProperties("Props" /* PROPS */, key); - } - } - } - if (injectOptions) { - resolveInjections(injectOptions, ctx, checkDuplicateProperties); - } - if (methods) { - for (const key in methods) { - const methodHandler = methods[key]; - if (shared.isFunction(methodHandler)) { - { - Object.defineProperty(ctx, key, { - value: methodHandler.bind(publicThis), - configurable: true, - enumerable: true, - writable: true - }); - } - { - checkDuplicateProperties("Methods" /* METHODS */, key); - } - } else { - warn( - `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` - ); - } - } - } - if (dataOptions) { - if (!shared.isFunction(dataOptions)) { - warn( - `The data option must be a function. Plain object usage is no longer supported.` - ); - } - const data = dataOptions.call(publicThis, publicThis); - if (shared.isPromise(data)) { - warn( - `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` - ); - } - if (!shared.isObject(data)) { - warn(`data() should return an object.`); - } else { - instance.data = reactivity.reactive(data); - { - for (const key in data) { - checkDuplicateProperties("Data" /* DATA */, key); - if (!isReservedPrefix(key[0])) { - Object.defineProperty(ctx, key, { - configurable: true, - enumerable: true, - get: () => data[key], - set: shared.NOOP - }); - } - } - } - } - } - shouldCacheAccess = true; - if (computedOptions) { - for (const key in computedOptions) { - const opt = computedOptions[key]; - const get = shared.isFunction(opt) ? opt.bind(publicThis, publicThis) : shared.isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : shared.NOOP; - if (get === shared.NOOP) { - warn(`Computed property "${key}" has no getter.`); - } - const set = !shared.isFunction(opt) && shared.isFunction(opt.set) ? opt.set.bind(publicThis) : () => { - warn( - `Write operation failed: computed property "${key}" is readonly.` - ); - } ; - const c = computed({ - get, - set - }); - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => c.value, - set: (v) => c.value = v - }); - { - checkDuplicateProperties("Computed" /* COMPUTED */, key); - } - } - } - if (watchOptions) { - for (const key in watchOptions) { - createWatcher(watchOptions[key], ctx, publicThis, key); - } - } - if (provideOptions) { - const provides = shared.isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; - Reflect.ownKeys(provides).forEach((key) => { - provide(key, provides[key]); - }); - } - if (created) { - callHook(created, instance, "c"); - } - function registerLifecycleHook(register, hook) { - if (shared.isArray(hook)) { - hook.forEach((_hook) => register(_hook.bind(publicThis))); - } else if (hook) { - register(hook.bind(publicThis)); - } - } - registerLifecycleHook(onBeforeMount, beforeMount); - registerLifecycleHook(onMounted, mounted); - registerLifecycleHook(onBeforeUpdate, beforeUpdate); - registerLifecycleHook(onUpdated, updated); - registerLifecycleHook(onActivated, activated); - registerLifecycleHook(onDeactivated, deactivated); - registerLifecycleHook(onErrorCaptured, errorCaptured); - registerLifecycleHook(onRenderTracked, renderTracked); - registerLifecycleHook(onRenderTriggered, renderTriggered); - registerLifecycleHook(onBeforeUnmount, beforeUnmount); - registerLifecycleHook(onUnmounted, unmounted); - registerLifecycleHook(onServerPrefetch, serverPrefetch); - if (shared.isArray(expose)) { - if (expose.length) { - const exposed = instance.exposed || (instance.exposed = {}); - expose.forEach((key) => { - Object.defineProperty(exposed, key, { - get: () => publicThis[key], - set: (val) => publicThis[key] = val - }); - }); - } else if (!instance.exposed) { - instance.exposed = {}; - } - } - if (render && instance.render === shared.NOOP) { - instance.render = render; - } - if (inheritAttrs != null) { - instance.inheritAttrs = inheritAttrs; - } - if (components) - instance.components = components; - if (directives) - instance.directives = directives; -} -function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) { - if (shared.isArray(injectOptions)) { - injectOptions = normalizeInject(injectOptions); - } - for (const key in injectOptions) { - const opt = injectOptions[key]; - let injected; - if (shared.isObject(opt)) { - if ("default" in opt) { - injected = inject( - opt.from || key, - opt.default, - true - /* treat default function as factory */ - ); - } else { - injected = inject(opt.from || key); - } - } else { - injected = inject(opt); - } - if (reactivity.isRef(injected)) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => injected.value, - set: (v) => injected.value = v - }); - } else { - ctx[key] = injected; - } - { - checkDuplicateProperties("Inject" /* INJECT */, key); - } - } -} -function callHook(hook, instance, type) { - callWithAsyncErrorHandling( - shared.isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), - instance, - type - ); -} -function createWatcher(raw, ctx, publicThis, key) { - const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; - if (shared.isString(raw)) { - const handler = ctx[raw]; - if (shared.isFunction(handler)) { - watch(getter, handler); - } else { - warn(`Invalid watch handler specified by key "${raw}"`, handler); - } - } else if (shared.isFunction(raw)) { - watch(getter, raw.bind(publicThis)); - } else if (shared.isObject(raw)) { - if (shared.isArray(raw)) { - raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); - } else { - const handler = shared.isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; - if (shared.isFunction(handler)) { - watch(getter, handler, raw); - } else { - warn(`Invalid watch handler specified by key "${raw.handler}"`, handler); - } - } - } else { - warn(`Invalid watch option: "${key}"`, raw); - } -} -function resolveMergedOptions(instance) { - const base = instance.type; - const { mixins, extends: extendsOptions } = base; - const { - mixins: globalMixins, - optionsCache: cache, - config: { optionMergeStrategies } - } = instance.appContext; - const cached = cache.get(base); - let resolved; - if (cached) { - resolved = cached; - } else if (!globalMixins.length && !mixins && !extendsOptions) { - { - resolved = base; - } - } else { - resolved = {}; - if (globalMixins.length) { - globalMixins.forEach( - (m) => mergeOptions(resolved, m, optionMergeStrategies, true) - ); - } - mergeOptions(resolved, base, optionMergeStrategies); - } - if (shared.isObject(base)) { - cache.set(base, resolved); - } - return resolved; -} -function mergeOptions(to, from, strats, asMixin = false) { - const { mixins, extends: extendsOptions } = from; - if (extendsOptions) { - mergeOptions(to, extendsOptions, strats, true); - } - if (mixins) { - mixins.forEach( - (m) => mergeOptions(to, m, strats, true) - ); - } - for (const key in from) { - if (asMixin && key === "expose") { - warn( - `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` - ); - } else { - const strat = internalOptionMergeStrats[key] || strats && strats[key]; - to[key] = strat ? strat(to[key], from[key]) : from[key]; - } - } - return to; -} -const internalOptionMergeStrats = { - data: mergeDataFn, - props: mergeEmitsOrPropsOptions, - emits: mergeEmitsOrPropsOptions, - // objects - methods: mergeObjectOptions, - computed: mergeObjectOptions, - // lifecycle - beforeCreate: mergeAsArray, - created: mergeAsArray, - beforeMount: mergeAsArray, - mounted: mergeAsArray, - beforeUpdate: mergeAsArray, - updated: mergeAsArray, - beforeDestroy: mergeAsArray, - beforeUnmount: mergeAsArray, - destroyed: mergeAsArray, - unmounted: mergeAsArray, - activated: mergeAsArray, - deactivated: mergeAsArray, - errorCaptured: mergeAsArray, - serverPrefetch: mergeAsArray, - // assets - components: mergeObjectOptions, - directives: mergeObjectOptions, - // watch - watch: mergeWatchOptions, - // provide / inject - provide: mergeDataFn, - inject: mergeInject -}; -function mergeDataFn(to, from) { - if (!from) { - return to; - } - if (!to) { - return from; - } - return function mergedDataFn() { - return (shared.extend)( - shared.isFunction(to) ? to.call(this, this) : to, - shared.isFunction(from) ? from.call(this, this) : from - ); - }; -} -function mergeInject(to, from) { - return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); -} -function normalizeInject(raw) { - if (shared.isArray(raw)) { - const res = {}; - for (let i = 0; i < raw.length; i++) { - res[raw[i]] = raw[i]; - } - return res; - } - return raw; -} -function mergeAsArray(to, from) { - return to ? [...new Set([].concat(to, from))] : from; -} -function mergeObjectOptions(to, from) { - return to ? shared.extend(/* @__PURE__ */ Object.create(null), to, from) : from; -} -function mergeEmitsOrPropsOptions(to, from) { - if (to) { - if (shared.isArray(to) && shared.isArray(from)) { - return [.../* @__PURE__ */ new Set([...to, ...from])]; - } - return shared.extend( - /* @__PURE__ */ Object.create(null), - normalizePropsOrEmits(to), - normalizePropsOrEmits(from != null ? from : {}) - ); - } else { - return from; - } -} -function mergeWatchOptions(to, from) { - if (!to) - return from; - if (!from) - return to; - const merged = shared.extend(/* @__PURE__ */ Object.create(null), to); - for (const key in from) { - merged[key] = mergeAsArray(to[key], from[key]); - } - return merged; -} - -function createAppContext() { - return { - app: null, - config: { - isNativeTag: shared.NO, - performance: false, - globalProperties: {}, - optionMergeStrategies: {}, - errorHandler: void 0, - warnHandler: void 0, - compilerOptions: {} - }, - mixins: [], - components: {}, - directives: {}, - provides: /* @__PURE__ */ Object.create(null), - optionsCache: /* @__PURE__ */ new WeakMap(), - propsCache: /* @__PURE__ */ new WeakMap(), - emitsCache: /* @__PURE__ */ new WeakMap() - }; -} -let uid$1 = 0; -function createAppAPI(render, hydrate) { - return function createApp(rootComponent, rootProps = null) { - if (!shared.isFunction(rootComponent)) { - rootComponent = shared.extend({}, rootComponent); - } - if (rootProps != null && !shared.isObject(rootProps)) { - warn(`root props passed to app.mount() must be an object.`); - rootProps = null; - } - const context = createAppContext(); - { - Object.defineProperty(context.config, "unwrapInjectedRef", { - get() { - return true; - }, - set() { - warn( - `app.config.unwrapInjectedRef has been deprecated. 3.3 now always unwraps injected refs in Options API.` - ); - } - }); - } - const installedPlugins = /* @__PURE__ */ new WeakSet(); - let isMounted = false; - const app = context.app = { - _uid: uid$1++, - _component: rootComponent, - _props: rootProps, - _container: null, - _context: context, - _instance: null, - version, - get config() { - return context.config; - }, - set config(v) { - { - warn( - `app.config cannot be replaced. Modify individual options instead.` - ); - } - }, - use(plugin, ...options) { - if (installedPlugins.has(plugin)) { - warn(`Plugin has already been applied to target app.`); - } else if (plugin && shared.isFunction(plugin.install)) { - installedPlugins.add(plugin); - plugin.install(app, ...options); - } else if (shared.isFunction(plugin)) { - installedPlugins.add(plugin); - plugin(app, ...options); - } else { - warn( - `A plugin must either be a function or an object with an "install" function.` - ); - } - return app; - }, - mixin(mixin) { - { - if (!context.mixins.includes(mixin)) { - context.mixins.push(mixin); - } else { - warn( - "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") - ); - } - } - return app; - }, - component(name, component) { - { - validateComponentName(name, context.config); - } - if (!component) { - return context.components[name]; - } - if (context.components[name]) { - warn(`Component "${name}" has already been registered in target app.`); - } - context.components[name] = component; - return app; - }, - directive(name, directive) { - { - validateDirectiveName(name); - } - if (!directive) { - return context.directives[name]; - } - if (context.directives[name]) { - warn(`Directive "${name}" has already been registered in target app.`); - } - context.directives[name] = directive; - return app; - }, - mount(rootContainer, isHydrate, isSVG) { - if (!isMounted) { - if (rootContainer.__vue_app__) { - warn( - `There is already an app instance mounted on the host container. - If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.` - ); - } - const vnode = createVNode(rootComponent, rootProps); - vnode.appContext = context; - { - context.reload = () => { - render(cloneVNode(vnode), rootContainer, isSVG); - }; - } - if (isHydrate && hydrate) { - hydrate(vnode, rootContainer); - } else { - render(vnode, rootContainer, isSVG); - } - isMounted = true; - app._container = rootContainer; - rootContainer.__vue_app__ = app; - { - app._instance = vnode.component; - devtoolsInitApp(app, version); - } - return getExposeProxy(vnode.component) || vnode.component.proxy; - } else { - warn( - `App has already been mounted. -If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\`` - ); - } - }, - unmount() { - if (isMounted) { - render(null, app._container); - { - app._instance = null; - devtoolsUnmountApp(app); - } - delete app._container.__vue_app__; - } else { - warn(`Cannot unmount an app that is not mounted.`); - } - }, - provide(key, value) { - if (key in context.provides) { - warn( - `App already provides property with key "${String(key)}". It will be overwritten with the new value.` - ); - } - context.provides[key] = value; - return app; - }, - runWithContext(fn) { - currentApp = app; - try { - return fn(); - } finally { - currentApp = null; - } - } - }; - return app; - }; -} -let currentApp = null; - -function provide(key, value) { - if (!currentInstance) { - { - warn(`provide() can only be used inside setup().`); - } - } else { - let provides = currentInstance.provides; - const parentProvides = currentInstance.parent && currentInstance.parent.provides; - if (parentProvides === provides) { - provides = currentInstance.provides = Object.create(parentProvides); - } - provides[key] = value; - } -} -function inject(key, defaultValue, treatDefaultAsFactory = false) { - const instance = currentInstance || currentRenderingInstance; - if (instance || currentApp) { - const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides; - if (provides && key in provides) { - return provides[key]; - } else if (arguments.length > 1) { - return treatDefaultAsFactory && shared.isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; - } else { - warn(`injection "${String(key)}" not found.`); - } - } else { - warn(`inject() can only be used inside setup() or functional components.`); - } -} -function hasInjectionContext() { - return !!(currentInstance || currentRenderingInstance || currentApp); -} - -function initProps(instance, rawProps, isStateful, isSSR = false) { - const props = {}; - const attrs = {}; - shared.def(attrs, InternalObjectKey, 1); - instance.propsDefaults = /* @__PURE__ */ Object.create(null); - setFullProps(instance, rawProps, props, attrs); - for (const key in instance.propsOptions[0]) { - if (!(key in props)) { - props[key] = void 0; - } - } - { - validateProps(rawProps || {}, props, instance); - } - if (isStateful) { - instance.props = isSSR ? props : reactivity.shallowReactive(props); - } else { - if (!instance.type.props) { - instance.props = attrs; - } else { - instance.props = props; - } - } - instance.attrs = attrs; -} -function isInHmrContext(instance) { - while (instance) { - if (instance.type.__hmrId) - return true; - instance = instance.parent; - } -} -function updateProps(instance, rawProps, rawPrevProps, optimized) { - const { - props, - attrs, - vnode: { patchFlag } - } = instance; - const rawCurrentProps = reactivity.toRaw(props); - const [options] = instance.propsOptions; - let hasAttrsChanged = false; - if ( - // always force full diff in dev - // - #1942 if hmr is enabled with sfc component - // - vite#872 non-sfc component used by sfc component - !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16) - ) { - if (patchFlag & 8) { - const propsToUpdate = instance.vnode.dynamicProps; - for (let i = 0; i < propsToUpdate.length; i++) { - let key = propsToUpdate[i]; - if (isEmitListener(instance.emitsOptions, key)) { - continue; - } - const value = rawProps[key]; - if (options) { - if (shared.hasOwn(attrs, key)) { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } else { - const camelizedKey = shared.camelize(key); - props[camelizedKey] = resolvePropValue( - options, - rawCurrentProps, - camelizedKey, - value, - instance, - false - /* isAbsent */ - ); - } - } else { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - } else { - if (setFullProps(instance, rawProps, props, attrs)) { - hasAttrsChanged = true; - } - let kebabKey; - for (const key in rawCurrentProps) { - if (!rawProps || // for camelCase - !shared.hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case - // and converted to camelCase (#955) - ((kebabKey = shared.hyphenate(key)) === key || !shared.hasOwn(rawProps, kebabKey))) { - if (options) { - if (rawPrevProps && // for camelCase - (rawPrevProps[key] !== void 0 || // for kebab-case - rawPrevProps[kebabKey] !== void 0)) { - props[key] = resolvePropValue( - options, - rawCurrentProps, - key, - void 0, - instance, - true - /* isAbsent */ - ); - } - } else { - delete props[key]; - } - } - } - if (attrs !== rawCurrentProps) { - for (const key in attrs) { - if (!rawProps || !shared.hasOwn(rawProps, key) && true) { - delete attrs[key]; - hasAttrsChanged = true; - } - } - } - } - if (hasAttrsChanged) { - reactivity.trigger(instance, "set", "$attrs"); - } - { - validateProps(rawProps || {}, props, instance); - } -} -function setFullProps(instance, rawProps, props, attrs) { - const [options, needCastKeys] = instance.propsOptions; - let hasAttrsChanged = false; - let rawCastValues; - if (rawProps) { - for (let key in rawProps) { - if (shared.isReservedProp(key)) { - continue; - } - const value = rawProps[key]; - let camelKey; - if (options && shared.hasOwn(options, camelKey = shared.camelize(key))) { - if (!needCastKeys || !needCastKeys.includes(camelKey)) { - props[camelKey] = value; - } else { - (rawCastValues || (rawCastValues = {}))[camelKey] = value; - } - } else if (!isEmitListener(instance.emitsOptions, key)) { - if (!(key in attrs) || value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - if (needCastKeys) { - const rawCurrentProps = reactivity.toRaw(props); - const castValues = rawCastValues || shared.EMPTY_OBJ; - for (let i = 0; i < needCastKeys.length; i++) { - const key = needCastKeys[i]; - props[key] = resolvePropValue( - options, - rawCurrentProps, - key, - castValues[key], - instance, - !shared.hasOwn(castValues, key) - ); - } - } - return hasAttrsChanged; -} -function resolvePropValue(options, props, key, value, instance, isAbsent) { - const opt = options[key]; - if (opt != null) { - const hasDefault = shared.hasOwn(opt, "default"); - if (hasDefault && value === void 0) { - const defaultValue = opt.default; - if (opt.type !== Function && !opt.skipFactory && shared.isFunction(defaultValue)) { - const { propsDefaults } = instance; - if (key in propsDefaults) { - value = propsDefaults[key]; - } else { - setCurrentInstance(instance); - value = propsDefaults[key] = defaultValue.call( - null, - props - ); - unsetCurrentInstance(); - } - } else { - value = defaultValue; - } - } - if (opt[0 /* shouldCast */]) { - if (isAbsent && !hasDefault) { - value = false; - } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === shared.hyphenate(key))) { - value = true; - } - } - } - return value; -} -function normalizePropsOptions(comp, appContext, asMixin = false) { - const cache = appContext.propsCache; - const cached = cache.get(comp); - if (cached) { - return cached; - } - const raw = comp.props; - const normalized = {}; - const needCastKeys = []; - let hasExtends = false; - if (!shared.isFunction(comp)) { - const extendProps = (raw2) => { - hasExtends = true; - const [props, keys] = normalizePropsOptions(raw2, appContext, true); - shared.extend(normalized, props); - if (keys) - needCastKeys.push(...keys); - }; - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendProps); - } - if (comp.extends) { - extendProps(comp.extends); - } - if (comp.mixins) { - comp.mixins.forEach(extendProps); - } - } - if (!raw && !hasExtends) { - if (shared.isObject(comp)) { - cache.set(comp, shared.EMPTY_ARR); - } - return shared.EMPTY_ARR; - } - if (shared.isArray(raw)) { - for (let i = 0; i < raw.length; i++) { - if (!shared.isString(raw[i])) { - warn(`props must be strings when using array syntax.`, raw[i]); - } - const normalizedKey = shared.camelize(raw[i]); - if (validatePropName(normalizedKey)) { - normalized[normalizedKey] = shared.EMPTY_OBJ; - } - } - } else if (raw) { - if (!shared.isObject(raw)) { - warn(`invalid props options`, raw); - } - for (const key in raw) { - const normalizedKey = shared.camelize(key); - if (validatePropName(normalizedKey)) { - const opt = raw[key]; - const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt); - if (prop) { - const booleanIndex = getTypeIndex(Boolean, prop.type); - const stringIndex = getTypeIndex(String, prop.type); - prop[0 /* shouldCast */] = booleanIndex > -1; - prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex; - if (booleanIndex > -1 || shared.hasOwn(prop, "default")) { - needCastKeys.push(normalizedKey); - } - } - } - } - } - const res = [normalized, needCastKeys]; - if (shared.isObject(comp)) { - cache.set(comp, res); - } - return res; -} -function validatePropName(key) { - if (key[0] !== "$") { - return true; - } else { - warn(`Invalid prop name: "${key}" is a reserved property.`); - } - return false; -} -function getType(ctor) { - const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/); - return match ? match[2] : ctor === null ? "null" : ""; -} -function isSameType(a, b) { - return getType(a) === getType(b); -} -function getTypeIndex(type, expectedTypes) { - if (shared.isArray(expectedTypes)) { - return expectedTypes.findIndex((t) => isSameType(t, type)); - } else if (shared.isFunction(expectedTypes)) { - return isSameType(expectedTypes, type) ? 0 : -1; - } - return -1; -} -function validateProps(rawProps, props, instance) { - const resolvedValues = reactivity.toRaw(props); - const options = instance.propsOptions[0]; - for (const key in options) { - let opt = options[key]; - if (opt == null) - continue; - validateProp( - key, - resolvedValues[key], - opt, - !shared.hasOwn(rawProps, key) && !shared.hasOwn(rawProps, shared.hyphenate(key)) - ); - } -} -function validateProp(name, value, prop, isAbsent) { - const { type, required, validator, skipCheck } = prop; - if (required && isAbsent) { - warn('Missing required prop: "' + name + '"'); - return; - } - if (value == null && !required) { - return; - } - if (type != null && type !== true && !skipCheck) { - let isValid = false; - const types = shared.isArray(type) ? type : [type]; - const expectedTypes = []; - for (let i = 0; i < types.length && !isValid; i++) { - const { valid, expectedType } = assertType(value, types[i]); - expectedTypes.push(expectedType || ""); - isValid = valid; - } - if (!isValid) { - warn(getInvalidTypeMessage(name, value, expectedTypes)); - return; - } - } - if (validator && !validator(value)) { - warn('Invalid prop: custom validator check failed for prop "' + name + '".'); - } -} -const isSimpleType = /* @__PURE__ */ shared.makeMap( - "String,Number,Boolean,Function,Symbol,BigInt" -); -function assertType(value, type) { - let valid; - const expectedType = getType(type); - if (isSimpleType(expectedType)) { - const t = typeof value; - valid = t === expectedType.toLowerCase(); - if (!valid && t === "object") { - valid = value instanceof type; - } - } else if (expectedType === "Object") { - valid = shared.isObject(value); - } else if (expectedType === "Array") { - valid = shared.isArray(value); - } else if (expectedType === "null") { - valid = value === null; - } else { - valid = value instanceof type; - } - return { - valid, - expectedType - }; -} -function getInvalidTypeMessage(name, value, expectedTypes) { - if (expectedTypes.length === 0) { - return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; - } - let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(shared.capitalize).join(" | ")}`; - const expectedType = expectedTypes[0]; - const receivedType = shared.toRawType(value); - const expectedValue = styleValue(value, expectedType); - const receivedValue = styleValue(value, receivedType); - if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { - message += ` with value ${expectedValue}`; - } - message += `, got ${receivedType} `; - if (isExplicable(receivedType)) { - message += `with value ${receivedValue}.`; - } - return message; -} -function styleValue(value, type) { - if (type === "String") { - return `"${value}"`; - } else if (type === "Number") { - return `${Number(value)}`; - } else { - return `${value}`; - } -} -function isExplicable(type) { - const explicitTypes = ["string", "number", "boolean"]; - return explicitTypes.some((elem) => type.toLowerCase() === elem); -} -function isBoolean(...args) { - return args.some((elem) => elem.toLowerCase() === "boolean"); -} - -const isInternalKey = (key) => key[0] === "_" || key === "$stable"; -const normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; -const normalizeSlot = (key, rawSlot, ctx) => { - if (rawSlot._n) { - return rawSlot; - } - const normalized = withCtx((...args) => { - if (currentInstance) { - warn( - `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` - ); - } - return normalizeSlotValue(rawSlot(...args)); - }, ctx); - normalized._c = false; - return normalized; -}; -const normalizeObjectSlots = (rawSlots, slots, instance) => { - const ctx = rawSlots._ctx; - for (const key in rawSlots) { - if (isInternalKey(key)) - continue; - const value = rawSlots[key]; - if (shared.isFunction(value)) { - slots[key] = normalizeSlot(key, value, ctx); - } else if (value != null) { - { - warn( - `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` - ); - } - const normalized = normalizeSlotValue(value); - slots[key] = () => normalized; - } - } -}; -const normalizeVNodeSlots = (instance, children) => { - if (!isKeepAlive(instance.vnode) && true) { - warn( - `Non-function value encountered for default slot. Prefer function slots for better performance.` - ); - } - const normalized = normalizeSlotValue(children); - instance.slots.default = () => normalized; -}; -const initSlots = (instance, children) => { - if (instance.vnode.shapeFlag & 32) { - const type = children._; - if (type) { - instance.slots = reactivity.toRaw(children); - shared.def(children, "_", type); - } else { - normalizeObjectSlots( - children, - instance.slots = {}); - } - } else { - instance.slots = {}; - if (children) { - normalizeVNodeSlots(instance, children); - } - } - shared.def(instance.slots, InternalObjectKey, 1); -}; -const updateSlots = (instance, children, optimized) => { - const { vnode, slots } = instance; - let needDeletionCheck = true; - let deletionComparisonTarget = shared.EMPTY_OBJ; - if (vnode.shapeFlag & 32) { - const type = children._; - if (type) { - if (isHmrUpdating) { - shared.extend(slots, children); - reactivity.trigger(instance, "set", "$slots"); - } else if (optimized && type === 1) { - needDeletionCheck = false; - } else { - shared.extend(slots, children); - if (!optimized && type === 1) { - delete slots._; - } - } - } else { - needDeletionCheck = !children.$stable; - normalizeObjectSlots(children, slots); - } - deletionComparisonTarget = children; - } else if (children) { - normalizeVNodeSlots(instance, children); - deletionComparisonTarget = { default: 1 }; - } - if (needDeletionCheck) { - for (const key in slots) { - if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { - delete slots[key]; - } - } - } -}; - -function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { - if (shared.isArray(rawRef)) { - rawRef.forEach( - (r, i) => setRef( - r, - oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), - parentSuspense, - vnode, - isUnmount - ) - ); - return; - } - if (isAsyncWrapper(vnode) && !isUnmount) { - return; - } - const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el; - const value = isUnmount ? null : refValue; - const { i: owner, r: ref } = rawRef; - if (!owner) { - warn( - `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` - ); - return; - } - const oldRef = oldRawRef && oldRawRef.r; - const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; - const setupState = owner.setupState; - if (oldRef != null && oldRef !== ref) { - if (shared.isString(oldRef)) { - refs[oldRef] = null; - if (shared.hasOwn(setupState, oldRef)) { - setupState[oldRef] = null; - } - } else if (reactivity.isRef(oldRef)) { - oldRef.value = null; - } - } - if (shared.isFunction(ref)) { - callWithErrorHandling(ref, owner, 12, [value, refs]); - } else { - const _isString = shared.isString(ref); - const _isRef = reactivity.isRef(ref); - if (_isString || _isRef) { - const doSet = () => { - if (rawRef.f) { - const existing = _isString ? shared.hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value; - if (isUnmount) { - shared.isArray(existing) && shared.remove(existing, refValue); - } else { - if (!shared.isArray(existing)) { - if (_isString) { - refs[ref] = [refValue]; - if (shared.hasOwn(setupState, ref)) { - setupState[ref] = refs[ref]; - } - } else { - ref.value = [refValue]; - if (rawRef.k) - refs[rawRef.k] = ref.value; - } - } else if (!existing.includes(refValue)) { - existing.push(refValue); - } - } - } else if (_isString) { - refs[ref] = value; - if (shared.hasOwn(setupState, ref)) { - setupState[ref] = value; - } - } else if (_isRef) { - ref.value = value; - if (rawRef.k) - refs[rawRef.k] = value; - } else { - warn("Invalid template ref type:", ref, `(${typeof ref})`); - } - }; - if (value) { - doSet.id = -1; - queuePostRenderEffect(doSet, parentSuspense); - } else { - doSet(); - } - } else { - warn("Invalid template ref type:", ref, `(${typeof ref})`); - } - } -} - -let hasMismatch = false; -const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== "foreignObject"; -const isComment = (node) => node.nodeType === 8 /* COMMENT */; -function createHydrationFunctions(rendererInternals) { - const { - mt: mountComponent, - p: patch, - o: { - patchProp, - createText, - nextSibling, - parentNode, - remove, - insert, - createComment - } - } = rendererInternals; - const hydrate = (vnode, container) => { - if (!container.hasChildNodes()) { - warn( - `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` - ); - patch(null, vnode, container); - flushPostFlushCbs(); - container._vnode = vnode; - return; - } - hasMismatch = false; - hydrateNode(container.firstChild, vnode, null, null, null); - flushPostFlushCbs(); - container._vnode = vnode; - if (hasMismatch && true) { - console.error(`Hydration completed but contains mismatches.`); - } - }; - const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { - const isFragmentStart = isComment(node) && node.data === "["; - const onMismatch = () => handleMismatch( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - isFragmentStart - ); - const { type, ref, shapeFlag, patchFlag } = vnode; - let domType = node.nodeType; - vnode.el = node; - { - if (!("__vnode" in node)) { - Object.defineProperty(node, "__vnode", { - value: vnode, - enumerable: false - }); - } - if (!("__vueParentComponent" in node)) { - Object.defineProperty(node, "__vueParentComponent", { - value: parentComponent, - enumerable: false - }); - } - } - if (patchFlag === -2) { - optimized = false; - vnode.dynamicChildren = null; - } - let nextNode = null; - switch (type) { - case Text: - if (domType !== 3 /* TEXT */) { - if (vnode.children === "") { - insert(vnode.el = createText(""), parentNode(node), node); - nextNode = node; - } else { - nextNode = onMismatch(); - } - } else { - if (node.data !== vnode.children) { - hasMismatch = true; - warn( - `Hydration text mismatch: -- Server rendered: ${JSON.stringify( - node.data - )} -- Client rendered: ${JSON.stringify(vnode.children)}` - ); - node.data = vnode.children; - } - nextNode = nextSibling(node); - } - break; - case Comment: - if (isTemplateNode(node)) { - nextNode = nextSibling(node); - replaceNode( - vnode.el = node.content.firstChild, - node, - parentComponent - ); - } else if (domType !== 8 /* COMMENT */ || isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = nextSibling(node); - } - break; - case Static: - if (isFragmentStart) { - node = nextSibling(node); - domType = node.nodeType; - } - if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) { - nextNode = node; - const needToAdoptContent = !vnode.children.length; - for (let i = 0; i < vnode.staticCount; i++) { - if (needToAdoptContent) - vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data; - if (i === vnode.staticCount - 1) { - vnode.anchor = nextNode; - } - nextNode = nextSibling(nextNode); - } - return isFragmentStart ? nextSibling(nextNode) : nextNode; - } else { - onMismatch(); - } - break; - case Fragment: - if (!isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = hydrateFragment( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - } - break; - default: - if (shapeFlag & 1) { - if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { - nextNode = onMismatch(); - } else { - nextNode = hydrateElement( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - } - } else if (shapeFlag & 6) { - vnode.slotScopeIds = slotScopeIds; - const container = parentNode(node); - if (isFragmentStart) { - nextNode = locateClosingAnchor(node); - } else if (isComment(node) && node.data === "teleport start") { - nextNode = locateClosingAnchor(node, node.data, "teleport end"); - } else { - nextNode = nextSibling(node); - } - mountComponent( - vnode, - container, - null, - parentComponent, - parentSuspense, - isSVGContainer(container), - optimized - ); - if (isAsyncWrapper(vnode)) { - let subTree; - if (isFragmentStart) { - subTree = createVNode(Fragment); - subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; - } else { - subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); - } - subTree.el = node; - vnode.component.subTree = subTree; - } - } else if (shapeFlag & 64) { - if (domType !== 8 /* COMMENT */) { - nextNode = onMismatch(); - } else { - nextNode = vnode.type.hydrate( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized, - rendererInternals, - hydrateChildren - ); - } - } else if (shapeFlag & 128) { - nextNode = vnode.type.hydrate( - node, - vnode, - parentComponent, - parentSuspense, - isSVGContainer(parentNode(node)), - slotScopeIds, - optimized, - rendererInternals, - hydrateNode - ); - } else { - warn("Invalid HostVNode type:", type, `(${typeof type})`); - } - } - if (ref != null) { - setRef(ref, null, parentSuspense, vnode); - } - return nextNode; - }; - const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { - optimized = optimized || !!vnode.dynamicChildren; - const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; - const forcePatch = type === "input" || type === "option"; - { - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "created"); - } - if (props) { - if (forcePatch || !optimized || patchFlag & (16 | 32)) { - for (const key in props) { - if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers - key[0] === ".") { - patchProp( - el, - key, - null, - props[key], - false, - void 0, - parentComponent - ); - } - } - } else if (props.onClick) { - patchProp( - el, - "onClick", - null, - props.onClick, - false, - void 0, - parentComponent - ); - } - } - let vnodeHooks; - if (vnodeHooks = props && props.onVnodeBeforeMount) { - invokeVNodeHook(vnodeHooks, parentComponent, vnode); - } - let needCallTransitionHooks = false; - if (isTemplateNode(el)) { - needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; - const content = el.content.firstChild; - if (needCallTransitionHooks) { - transition.beforeEnter(content); - } - replaceNode(content, el, parentComponent); - vnode.el = el = content; - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); - } - if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { - queueEffectWithSuspense(() => { - vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); - needCallTransitionHooks && transition.enter(el); - dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); - }, parentSuspense); - } - if (shapeFlag & 16 && // skip if element has innerHTML / textContent - !(props && (props.innerHTML || props.textContent))) { - let next = hydrateChildren( - el.firstChild, - vnode, - el, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - let hasWarned = false; - while (next) { - hasMismatch = true; - if (!hasWarned) { - warn( - `Hydration children mismatch in <${vnode.type}>: server rendered element contains more child nodes than client vdom.` - ); - hasWarned = true; - } - const cur = next; - next = next.nextSibling; - remove(cur); - } - } else if (shapeFlag & 8) { - if (el.textContent !== vnode.children) { - hasMismatch = true; - warn( - `Hydration text content mismatch in <${vnode.type}>: -- Server rendered: ${el.textContent} -- Client rendered: ${vnode.children}` - ); - el.textContent = vnode.children; - } - } - } - return el.nextSibling; - }; - const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { - optimized = optimized || !!parentVNode.dynamicChildren; - const children = parentVNode.children; - const l = children.length; - let hasWarned = false; - for (let i = 0; i < l; i++) { - const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); - if (node) { - node = hydrateNode( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - } else if (vnode.type === Text && !vnode.children) { - continue; - } else { - hasMismatch = true; - if (!hasWarned) { - warn( - `Hydration children mismatch in <${container.tagName.toLowerCase()}>: server rendered element contains fewer child nodes than client vdom.` - ); - hasWarned = true; - } - patch( - null, - vnode, - container, - null, - parentComponent, - parentSuspense, - isSVGContainer(container), - slotScopeIds - ); - } - } - return node; - }; - const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { - const { slotScopeIds: fragmentSlotScopeIds } = vnode; - if (fragmentSlotScopeIds) { - slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; - } - const container = parentNode(node); - const next = hydrateChildren( - nextSibling(node), - vnode, - container, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - if (next && isComment(next) && next.data === "]") { - return nextSibling(vnode.anchor = next); - } else { - hasMismatch = true; - insert(vnode.anchor = createComment(`]`), container, next); - return next; - } - }; - const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { - hasMismatch = true; - warn( - `Hydration node mismatch: -- Client vnode:`, - vnode.type, - ` -- Server rendered DOM:`, - node, - node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : `` - ); - vnode.el = null; - if (isFragment) { - const end = locateClosingAnchor(node); - while (true) { - const next2 = nextSibling(node); - if (next2 && next2 !== end) { - remove(next2); - } else { - break; - } - } - } - const next = nextSibling(node); - const container = parentNode(node); - remove(node); - patch( - null, - vnode, - container, - next, - parentComponent, - parentSuspense, - isSVGContainer(container), - slotScopeIds - ); - return next; - }; - const locateClosingAnchor = (node, open = "[", close = "]") => { - let match = 0; - while (node) { - node = nextSibling(node); - if (node && isComment(node)) { - if (node.data === open) - match++; - if (node.data === close) { - if (match === 0) { - return nextSibling(node); - } else { - match--; - } - } - } - } - return node; - }; - const replaceNode = (newNode, oldNode, parentComponent) => { - const parentNode2 = oldNode.parentNode; - if (parentNode2) { - parentNode2.replaceChild(newNode, oldNode); - } - let parent = parentComponent; - while (parent) { - if (parent.vnode.el === oldNode) { - parent.vnode.el = parent.subTree.el = newNode; - } - parent = parent.parent; - } - }; - const isTemplateNode = (node) => { - return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === "template"; - }; - return [hydrate, hydrateNode]; -} - -let supported; -let perf; -function startMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - perf.mark(`vue-${type}-${instance.uid}`); - } - { - devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); - } -} -function endMeasure(instance, type) { - if (instance.appContext.config.performance && isSupported()) { - const startTag = `vue-${type}-${instance.uid}`; - const endTag = startTag + `:end`; - perf.mark(endTag); - perf.measure( - `<${formatComponentName(instance, instance.type)}> ${type}`, - startTag, - endTag - ); - perf.clearMarks(startTag); - perf.clearMarks(endTag); - } - { - devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); - } -} -function isSupported() { - if (supported !== void 0) { - return supported; - } - if (typeof window !== "undefined" && window.performance) { - supported = true; - perf = window.performance; - } else { - supported = false; - } - return supported; -} - -const queuePostRenderEffect = queueEffectWithSuspense ; -function createRenderer(options) { - return baseCreateRenderer(options); -} -function createHydrationRenderer(options) { - return baseCreateRenderer(options, createHydrationFunctions); -} -function baseCreateRenderer(options, createHydrationFns) { - const target = shared.getGlobalThis(); - target.__VUE__ = true; - { - setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); - } - const { - insert: hostInsert, - remove: hostRemove, - patchProp: hostPatchProp, - createElement: hostCreateElement, - createText: hostCreateText, - createComment: hostCreateComment, - setText: hostSetText, - setElementText: hostSetElementText, - parentNode: hostParentNode, - nextSibling: hostNextSibling, - setScopeId: hostSetScopeId = shared.NOOP, - insertStaticContent: hostInsertStaticContent - } = options; - const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => { - if (n1 === n2) { - return; - } - if (n1 && !isSameVNodeType(n1, n2)) { - anchor = getNextHostNode(n1); - unmount(n1, parentComponent, parentSuspense, true); - n1 = null; - } - if (n2.patchFlag === -2) { - optimized = false; - n2.dynamicChildren = null; - } - const { type, ref, shapeFlag } = n2; - switch (type) { - case Text: - processText(n1, n2, container, anchor); - break; - case Comment: - processCommentNode(n1, n2, container, anchor); - break; - case Static: - if (n1 == null) { - mountStaticNode(n2, container, anchor, isSVG); - } else { - patchStaticNode(n1, n2, container, isSVG); - } - break; - case Fragment: - processFragment( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - break; - default: - if (shapeFlag & 1) { - processElement( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else if (shapeFlag & 6) { - processComponent( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else if (shapeFlag & 64) { - type.process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - internals - ); - } else if (shapeFlag & 128) { - type.process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - internals - ); - } else { - warn("Invalid VNode type:", type, `(${typeof type})`); - } - } - if (ref != null && parentComponent) { - setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); - } - }; - const processText = (n1, n2, container, anchor) => { - if (n1 == null) { - hostInsert( - n2.el = hostCreateText(n2.children), - container, - anchor - ); - } else { - const el = n2.el = n1.el; - if (n2.children !== n1.children) { - hostSetText(el, n2.children); - } - } - }; - const processCommentNode = (n1, n2, container, anchor) => { - if (n1 == null) { - hostInsert( - n2.el = hostCreateComment(n2.children || ""), - container, - anchor - ); - } else { - n2.el = n1.el; - } - }; - const mountStaticNode = (n2, container, anchor, isSVG) => { - [n2.el, n2.anchor] = hostInsertStaticContent( - n2.children, - container, - anchor, - isSVG, - n2.el, - n2.anchor - ); - }; - const patchStaticNode = (n1, n2, container, isSVG) => { - if (n2.children !== n1.children) { - const anchor = hostNextSibling(n1.anchor); - removeStaticNode(n1); - [n2.el, n2.anchor] = hostInsertStaticContent( - n2.children, - container, - anchor, - isSVG - ); - } else { - n2.el = n1.el; - n2.anchor = n1.anchor; - } - }; - const moveStaticNode = ({ el, anchor }, container, nextSibling) => { - let next; - while (el && el !== anchor) { - next = hostNextSibling(el); - hostInsert(el, container, nextSibling); - el = next; - } - hostInsert(anchor, container, nextSibling); - }; - const removeStaticNode = ({ el, anchor }) => { - let next; - while (el && el !== anchor) { - next = hostNextSibling(el); - hostRemove(el); - el = next; - } - hostRemove(anchor); - }; - const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - isSVG = isSVG || n2.type === "svg"; - if (n1 == null) { - mountElement( - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else { - patchElement( - n1, - n2, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } - }; - const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - let el; - let vnodeHook; - const { type, props, shapeFlag, transition, dirs } = vnode; - el = vnode.el = hostCreateElement( - vnode.type, - isSVG, - props && props.is, - props - ); - if (shapeFlag & 8) { - hostSetElementText(el, vnode.children); - } else if (shapeFlag & 16) { - mountChildren( - vnode.children, - el, - null, - parentComponent, - parentSuspense, - isSVG && type !== "foreignObject", - slotScopeIds, - optimized - ); - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "created"); - } - setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); - if (props) { - for (const key in props) { - if (key !== "value" && !shared.isReservedProp(key)) { - hostPatchProp( - el, - key, - null, - props[key], - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ); - } - } - if ("value" in props) { - hostPatchProp(el, "value", null, props.value); - } - if (vnodeHook = props.onVnodeBeforeMount) { - invokeVNodeHook(vnodeHook, parentComponent, vnode); - } - } - { - Object.defineProperty(el, "__vnode", { - value: vnode, - enumerable: false - }); - Object.defineProperty(el, "__vueParentComponent", { - value: parentComponent, - enumerable: false - }); - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); - } - const needCallTransitionHooks = needTransition(parentSuspense, transition); - if (needCallTransitionHooks) { - transition.beforeEnter(el); - } - hostInsert(el, container, anchor); - if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); - needCallTransitionHooks && transition.enter(el); - dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); - }, parentSuspense); - } - }; - const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { - if (scopeId) { - hostSetScopeId(el, scopeId); - } - if (slotScopeIds) { - for (let i = 0; i < slotScopeIds.length; i++) { - hostSetScopeId(el, slotScopeIds[i]); - } - } - if (parentComponent) { - let subTree = parentComponent.subTree; - if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) { - subTree = filterSingleRoot(subTree.children) || subTree; - } - if (vnode === subTree) { - const parentVNode = parentComponent.vnode; - setScopeId( - el, - parentVNode, - parentVNode.scopeId, - parentVNode.slotScopeIds, - parentComponent.parent - ); - } - } - }; - const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => { - for (let i = start; i < children.length; i++) { - const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); - patch( - null, - child, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } - }; - const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - const el = n2.el = n1.el; - let { patchFlag, dynamicChildren, dirs } = n2; - patchFlag |= n1.patchFlag & 16; - const oldProps = n1.props || shared.EMPTY_OBJ; - const newProps = n2.props || shared.EMPTY_OBJ; - let vnodeHook; - parentComponent && toggleRecurse(parentComponent, false); - if (vnodeHook = newProps.onVnodeBeforeUpdate) { - invokeVNodeHook(vnodeHook, parentComponent, n2, n1); - } - if (dirs) { - invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); - } - parentComponent && toggleRecurse(parentComponent, true); - if (isHmrUpdating) { - patchFlag = 0; - optimized = false; - dynamicChildren = null; - } - const areChildrenSVG = isSVG && n2.type !== "foreignObject"; - if (dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - el, - parentComponent, - parentSuspense, - areChildrenSVG, - slotScopeIds - ); - { - traverseStaticChildren(n1, n2); - } - } else if (!optimized) { - patchChildren( - n1, - n2, - el, - null, - parentComponent, - parentSuspense, - areChildrenSVG, - slotScopeIds, - false - ); - } - if (patchFlag > 0) { - if (patchFlag & 16) { - patchProps( - el, - n2, - oldProps, - newProps, - parentComponent, - parentSuspense, - isSVG - ); - } else { - if (patchFlag & 2) { - if (oldProps.class !== newProps.class) { - hostPatchProp(el, "class", null, newProps.class, isSVG); - } - } - if (patchFlag & 4) { - hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG); - } - if (patchFlag & 8) { - const propsToUpdate = n2.dynamicProps; - for (let i = 0; i < propsToUpdate.length; i++) { - const key = propsToUpdate[i]; - const prev = oldProps[key]; - const next = newProps[key]; - if (next !== prev || key === "value") { - hostPatchProp( - el, - key, - prev, - next, - isSVG, - n1.children, - parentComponent, - parentSuspense, - unmountChildren - ); - } - } - } - } - if (patchFlag & 1) { - if (n1.children !== n2.children) { - hostSetElementText(el, n2.children); - } - } - } else if (!optimized && dynamicChildren == null) { - patchProps( - el, - n2, - oldProps, - newProps, - parentComponent, - parentSuspense, - isSVG - ); - } - if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); - dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); - }, parentSuspense); - } - }; - const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => { - for (let i = 0; i < newChildren.length; i++) { - const oldVNode = oldChildren[i]; - const newVNode = newChildren[i]; - const container = ( - // oldVNode may be an errored async setup() component inside Suspense - // which will not have a mounted element - oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent - // of the Fragment itself so it can move its children. - (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement - // which also requires the correct parent container - !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. - oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : ( - // In other cases, the parent container is not actually used so we - // just pass the block element here to avoid a DOM parentNode call. - fallbackContainer - ) - ); - patch( - oldVNode, - newVNode, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - true - ); - } - }; - const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => { - if (oldProps !== newProps) { - if (oldProps !== shared.EMPTY_OBJ) { - for (const key in oldProps) { - if (!shared.isReservedProp(key) && !(key in newProps)) { - hostPatchProp( - el, - key, - oldProps[key], - null, - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ); - } - } - } - for (const key in newProps) { - if (shared.isReservedProp(key)) - continue; - const next = newProps[key]; - const prev = oldProps[key]; - if (next !== prev && key !== "value") { - hostPatchProp( - el, - key, - prev, - next, - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ); - } - } - if ("value" in newProps) { - hostPatchProp(el, "value", oldProps.value, newProps.value); - } - } - }; - const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); - const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); - let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; - if ( - // #5523 dev root fragment may inherit directives - isHmrUpdating || patchFlag & 2048 - ) { - patchFlag = 0; - optimized = false; - dynamicChildren = null; - } - if (fragmentSlotScopeIds) { - slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; - } - if (n1 == null) { - hostInsert(fragmentStartAnchor, container, anchor); - hostInsert(fragmentEndAnchor, container, anchor); - mountChildren( - n2.children, - container, - fragmentEndAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else { - if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result - // of renderSlot() with no valid children - n1.dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - container, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds - ); - { - traverseStaticChildren(n1, n2); - } - } else { - patchChildren( - n1, - n2, - container, - fragmentEndAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } - } - }; - const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - n2.slotScopeIds = slotScopeIds; - if (n1 == null) { - if (n2.shapeFlag & 512) { - parentComponent.ctx.activate( - n2, - container, - anchor, - isSVG, - optimized - ); - } else { - mountComponent( - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - optimized - ); - } - } else { - updateComponent(n1, n2, optimized); - } - }; - const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => { - const instance = (initialVNode.component = createComponentInstance( - initialVNode, - parentComponent, - parentSuspense - )); - if (instance.type.__hmrId) { - registerHMR(instance); - } - { - pushWarningContext(initialVNode); - startMeasure(instance, `mount`); - } - if (isKeepAlive(initialVNode)) { - instance.ctx.renderer = internals; - } - { - { - startMeasure(instance, `init`); - } - setupComponent(instance); - { - endMeasure(instance, `init`); - } - } - if (instance.asyncDep) { - parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect); - if (!initialVNode.el) { - const placeholder = instance.subTree = createVNode(Comment); - processCommentNode(null, placeholder, container, anchor); - } - return; - } - setupRenderEffect( - instance, - initialVNode, - container, - anchor, - parentSuspense, - isSVG, - optimized - ); - { - popWarningContext(); - endMeasure(instance, `mount`); - } - }; - const updateComponent = (n1, n2, optimized) => { - const instance = n2.component = n1.component; - if (shouldUpdateComponent(n1, n2, optimized)) { - if (instance.asyncDep && !instance.asyncResolved) { - { - pushWarningContext(n2); - } - updateComponentPreRender(instance, n2, optimized); - { - popWarningContext(); - } - return; - } else { - instance.next = n2; - invalidateJob(instance.update); - instance.update(); - } - } else { - n2.el = n1.el; - instance.vnode = n2; - } - }; - const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => { - const componentUpdateFn = () => { - if (!instance.isMounted) { - let vnodeHook; - const { el, props } = initialVNode; - const { bm, m, parent } = instance; - const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); - toggleRecurse(instance, false); - if (bm) { - shared.invokeArrayFns(bm); - } - if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { - invokeVNodeHook(vnodeHook, parent, initialVNode); - } - toggleRecurse(instance, true); - if (el && hydrateNode) { - const hydrateSubTree = () => { - { - startMeasure(instance, `render`); - } - instance.subTree = renderComponentRoot(instance); - { - endMeasure(instance, `render`); - } - { - startMeasure(instance, `hydrate`); - } - hydrateNode( - el, - instance.subTree, - instance, - parentSuspense, - null - ); - { - endMeasure(instance, `hydrate`); - } - }; - if (isAsyncWrapperVNode) { - initialVNode.type.__asyncLoader().then( - // note: we are moving the render call into an async callback, - // which means it won't track dependencies - but it's ok because - // a server-rendered async wrapper is already in resolved state - // and it will never need to change. - () => !instance.isUnmounted && hydrateSubTree() - ); - } else { - hydrateSubTree(); - } - } else { - { - startMeasure(instance, `render`); - } - const subTree = instance.subTree = renderComponentRoot(instance); - { - endMeasure(instance, `render`); - } - { - startMeasure(instance, `patch`); - } - patch( - null, - subTree, - container, - anchor, - instance, - parentSuspense, - isSVG - ); - { - endMeasure(instance, `patch`); - } - initialVNode.el = subTree.el; - } - if (m) { - queuePostRenderEffect(m, parentSuspense); - } - if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { - const scopedInitialVNode = initialVNode; - queuePostRenderEffect( - () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), - parentSuspense - ); - } - if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { - instance.a && queuePostRenderEffect(instance.a, parentSuspense); - } - instance.isMounted = true; - { - devtoolsComponentAdded(instance); - } - initialVNode = container = anchor = null; - } else { - let { next, bu, u, parent, vnode } = instance; - let originNext = next; - let vnodeHook; - { - pushWarningContext(next || instance.vnode); - } - toggleRecurse(instance, false); - if (next) { - next.el = vnode.el; - updateComponentPreRender(instance, next, optimized); - } else { - next = vnode; - } - if (bu) { - shared.invokeArrayFns(bu); - } - if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { - invokeVNodeHook(vnodeHook, parent, next, vnode); - } - toggleRecurse(instance, true); - { - startMeasure(instance, `render`); - } - const nextTree = renderComponentRoot(instance); - { - endMeasure(instance, `render`); - } - const prevTree = instance.subTree; - instance.subTree = nextTree; - { - startMeasure(instance, `patch`); - } - patch( - prevTree, - nextTree, - // parent may have changed if it's in a teleport - hostParentNode(prevTree.el), - // anchor may have changed if it's in a fragment - getNextHostNode(prevTree), - instance, - parentSuspense, - isSVG - ); - { - endMeasure(instance, `patch`); - } - next.el = nextTree.el; - if (originNext === null) { - updateHOCHostEl(instance, nextTree.el); - } - if (u) { - queuePostRenderEffect(u, parentSuspense); - } - if (vnodeHook = next.props && next.props.onVnodeUpdated) { - queuePostRenderEffect( - () => invokeVNodeHook(vnodeHook, parent, next, vnode), - parentSuspense - ); - } - { - devtoolsComponentUpdated(instance); - } - { - popWarningContext(); - } - } - }; - const effect = instance.effect = new reactivity.ReactiveEffect( - componentUpdateFn, - () => queueJob(update), - instance.scope - // track it in component's effect scope - ); - const update = instance.update = () => effect.run(); - update.id = instance.uid; - toggleRecurse(instance, true); - { - effect.onTrack = instance.rtc ? (e) => shared.invokeArrayFns(instance.rtc, e) : void 0; - effect.onTrigger = instance.rtg ? (e) => shared.invokeArrayFns(instance.rtg, e) : void 0; - update.ownerInstance = instance; - } - update(); - }; - const updateComponentPreRender = (instance, nextVNode, optimized) => { - nextVNode.component = instance; - const prevProps = instance.vnode.props; - instance.vnode = nextVNode; - instance.next = null; - updateProps(instance, nextVNode.props, prevProps, optimized); - updateSlots(instance, nextVNode.children, optimized); - reactivity.pauseTracking(); - flushPreFlushCbs(); - reactivity.resetTracking(); - }; - const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => { - const c1 = n1 && n1.children; - const prevShapeFlag = n1 ? n1.shapeFlag : 0; - const c2 = n2.children; - const { patchFlag, shapeFlag } = n2; - if (patchFlag > 0) { - if (patchFlag & 128) { - patchKeyedChildren( - c1, - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - return; - } else if (patchFlag & 256) { - patchUnkeyedChildren( - c1, - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - return; - } - } - if (shapeFlag & 8) { - if (prevShapeFlag & 16) { - unmountChildren(c1, parentComponent, parentSuspense); - } - if (c2 !== c1) { - hostSetElementText(container, c2); - } - } else { - if (prevShapeFlag & 16) { - if (shapeFlag & 16) { - patchKeyedChildren( - c1, - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else { - unmountChildren(c1, parentComponent, parentSuspense, true); - } - } else { - if (prevShapeFlag & 8) { - hostSetElementText(container, ""); - } - if (shapeFlag & 16) { - mountChildren( - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } - } - } - }; - const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - c1 = c1 || shared.EMPTY_ARR; - c2 = c2 || shared.EMPTY_ARR; - const oldLength = c1.length; - const newLength = c2.length; - const commonLength = Math.min(oldLength, newLength); - let i; - for (i = 0; i < commonLength; i++) { - const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); - patch( - c1[i], - nextChild, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } - if (oldLength > newLength) { - unmountChildren( - c1, - parentComponent, - parentSuspense, - true, - false, - commonLength - ); - } else { - mountChildren( - c2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - commonLength - ); - } - }; - const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - let i = 0; - const l2 = c2.length; - let e1 = c1.length - 1; - let e2 = l2 - 1; - while (i <= e1 && i <= e2) { - const n1 = c1[i]; - const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); - if (isSameVNodeType(n1, n2)) { - patch( - n1, - n2, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else { - break; - } - i++; - } - while (i <= e1 && i <= e2) { - const n1 = c1[e1]; - const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); - if (isSameVNodeType(n1, n2)) { - patch( - n1, - n2, - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else { - break; - } - e1--; - e2--; - } - if (i > e1) { - if (i <= e2) { - const nextPos = e2 + 1; - const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; - while (i <= e2) { - patch( - null, - c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - i++; - } - } - } else if (i > e2) { - while (i <= e1) { - unmount(c1[i], parentComponent, parentSuspense, true); - i++; - } - } else { - const s1 = i; - const s2 = i; - const keyToNewIndexMap = /* @__PURE__ */ new Map(); - for (i = s2; i <= e2; i++) { - const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); - if (nextChild.key != null) { - if (keyToNewIndexMap.has(nextChild.key)) { - warn( - `Duplicate keys found during update:`, - JSON.stringify(nextChild.key), - `Make sure keys are unique.` - ); - } - keyToNewIndexMap.set(nextChild.key, i); - } - } - let j; - let patched = 0; - const toBePatched = e2 - s2 + 1; - let moved = false; - let maxNewIndexSoFar = 0; - const newIndexToOldIndexMap = new Array(toBePatched); - for (i = 0; i < toBePatched; i++) - newIndexToOldIndexMap[i] = 0; - for (i = s1; i <= e1; i++) { - const prevChild = c1[i]; - if (patched >= toBePatched) { - unmount(prevChild, parentComponent, parentSuspense, true); - continue; - } - let newIndex; - if (prevChild.key != null) { - newIndex = keyToNewIndexMap.get(prevChild.key); - } else { - for (j = s2; j <= e2; j++) { - if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { - newIndex = j; - break; - } - } - } - if (newIndex === void 0) { - unmount(prevChild, parentComponent, parentSuspense, true); - } else { - newIndexToOldIndexMap[newIndex - s2] = i + 1; - if (newIndex >= maxNewIndexSoFar) { - maxNewIndexSoFar = newIndex; - } else { - moved = true; - } - patch( - prevChild, - c2[newIndex], - container, - null, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - patched++; - } - } - const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : shared.EMPTY_ARR; - j = increasingNewIndexSequence.length - 1; - for (i = toBePatched - 1; i >= 0; i--) { - const nextIndex = s2 + i; - const nextChild = c2[nextIndex]; - const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor; - if (newIndexToOldIndexMap[i] === 0) { - patch( - null, - nextChild, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } else if (moved) { - if (j < 0 || i !== increasingNewIndexSequence[j]) { - move(nextChild, container, anchor, 2); - } else { - j--; - } - } - } - } - }; - const move = (vnode, container, anchor, moveType, parentSuspense = null) => { - const { el, type, transition, children, shapeFlag } = vnode; - if (shapeFlag & 6) { - move(vnode.component.subTree, container, anchor, moveType); - return; - } - if (shapeFlag & 128) { - vnode.suspense.move(container, anchor, moveType); - return; - } - if (shapeFlag & 64) { - type.move(vnode, container, anchor, internals); - return; - } - if (type === Fragment) { - hostInsert(el, container, anchor); - for (let i = 0; i < children.length; i++) { - move(children[i], container, anchor, moveType); - } - hostInsert(vnode.anchor, container, anchor); - return; - } - if (type === Static) { - moveStaticNode(vnode, container, anchor); - return; - } - const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; - if (needTransition2) { - if (moveType === 0) { - transition.beforeEnter(el); - hostInsert(el, container, anchor); - queuePostRenderEffect(() => transition.enter(el), parentSuspense); - } else { - const { leave, delayLeave, afterLeave } = transition; - const remove2 = () => hostInsert(el, container, anchor); - const performLeave = () => { - leave(el, () => { - remove2(); - afterLeave && afterLeave(); - }); - }; - if (delayLeave) { - delayLeave(el, remove2, performLeave); - } else { - performLeave(); - } - } - } else { - hostInsert(el, container, anchor); - } - }; - const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { - const { - type, - props, - ref, - children, - dynamicChildren, - shapeFlag, - patchFlag, - dirs - } = vnode; - if (ref != null) { - setRef(ref, null, parentSuspense, vnode, true); - } - if (shapeFlag & 256) { - parentComponent.ctx.deactivate(vnode); - return; - } - const shouldInvokeDirs = shapeFlag & 1 && dirs; - const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); - let vnodeHook; - if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { - invokeVNodeHook(vnodeHook, parentComponent, vnode); - } - if (shapeFlag & 6) { - unmountComponent(vnode.component, parentSuspense, doRemove); - } else { - if (shapeFlag & 128) { - vnode.suspense.unmount(parentSuspense, doRemove); - return; - } - if (shouldInvokeDirs) { - invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); - } - if (shapeFlag & 64) { - vnode.type.remove( - vnode, - parentComponent, - parentSuspense, - optimized, - internals, - doRemove - ); - } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments - (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { - unmountChildren( - dynamicChildren, - parentComponent, - parentSuspense, - false, - true - ); - } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { - unmountChildren(children, parentComponent, parentSuspense); - } - if (doRemove) { - remove(vnode); - } - } - if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); - shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); - }, parentSuspense); - } - }; - const remove = (vnode) => { - const { type, el, anchor, transition } = vnode; - if (type === Fragment) { - if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) { - vnode.children.forEach((child) => { - if (child.type === Comment) { - hostRemove(child.el); - } else { - remove(child); - } - }); - } else { - removeFragment(el, anchor); - } - return; - } - if (type === Static) { - removeStaticNode(vnode); - return; - } - const performRemove = () => { - hostRemove(el); - if (transition && !transition.persisted && transition.afterLeave) { - transition.afterLeave(); - } - }; - if (vnode.shapeFlag & 1 && transition && !transition.persisted) { - const { leave, delayLeave } = transition; - const performLeave = () => leave(el, performRemove); - if (delayLeave) { - delayLeave(vnode.el, performRemove, performLeave); - } else { - performLeave(); - } - } else { - performRemove(); - } - }; - const removeFragment = (cur, end) => { - let next; - while (cur !== end) { - next = hostNextSibling(cur); - hostRemove(cur); - cur = next; - } - hostRemove(end); - }; - const unmountComponent = (instance, parentSuspense, doRemove) => { - if (instance.type.__hmrId) { - unregisterHMR(instance); - } - const { bum, scope, update, subTree, um } = instance; - if (bum) { - shared.invokeArrayFns(bum); - } - scope.stop(); - if (update) { - update.active = false; - unmount(subTree, instance, parentSuspense, doRemove); - } - if (um) { - queuePostRenderEffect(um, parentSuspense); - } - queuePostRenderEffect(() => { - instance.isUnmounted = true; - }, parentSuspense); - if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { - parentSuspense.deps--; - if (parentSuspense.deps === 0) { - parentSuspense.resolve(); - } - } - { - devtoolsComponentRemoved(instance); - } - }; - const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { - for (let i = start; i < children.length; i++) { - unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); - } - }; - const getNextHostNode = (vnode) => { - if (vnode.shapeFlag & 6) { - return getNextHostNode(vnode.component.subTree); - } - if (vnode.shapeFlag & 128) { - return vnode.suspense.next(); - } - return hostNextSibling(vnode.anchor || vnode.el); - }; - const render = (vnode, container, isSVG) => { - if (vnode == null) { - if (container._vnode) { - unmount(container._vnode, null, null, true); - } - } else { - patch(container._vnode || null, vnode, container, null, null, null, isSVG); - } - flushPreFlushCbs(); - flushPostFlushCbs(); - container._vnode = vnode; - }; - const internals = { - p: patch, - um: unmount, - m: move, - r: remove, - mt: mountComponent, - mc: mountChildren, - pc: patchChildren, - pbc: patchBlockChildren, - n: getNextHostNode, - o: options - }; - let hydrate; - let hydrateNode; - if (createHydrationFns) { - [hydrate, hydrateNode] = createHydrationFns( - internals - ); - } - return { - render, - hydrate, - createApp: createAppAPI(render, hydrate) - }; -} -function toggleRecurse({ effect, update }, allowed) { - effect.allowRecurse = update.allowRecurse = allowed; -} -function needTransition(parentSuspense, transition) { - return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; -} -function traverseStaticChildren(n1, n2, shallow = false) { - const ch1 = n1.children; - const ch2 = n2.children; - if (shared.isArray(ch1) && shared.isArray(ch2)) { - for (let i = 0; i < ch1.length; i++) { - const c1 = ch1[i]; - let c2 = ch2[i]; - if (c2.shapeFlag & 1 && !c2.dynamicChildren) { - if (c2.patchFlag <= 0 || c2.patchFlag === 32) { - c2 = ch2[i] = cloneIfMounted(ch2[i]); - c2.el = c1.el; - } - if (!shallow) - traverseStaticChildren(c1, c2); - } - if (c2.type === Text) { - c2.el = c1.el; - } - if (c2.type === Comment && !c2.el) { - c2.el = c1.el; - } - } - } -} -function getSequence(arr) { - const p = arr.slice(); - const result = [0]; - let i, j, u, v, c; - const len = arr.length; - for (i = 0; i < len; i++) { - const arrI = arr[i]; - if (arrI !== 0) { - j = result[result.length - 1]; - if (arr[j] < arrI) { - p[i] = j; - result.push(i); - continue; - } - u = 0; - v = result.length - 1; - while (u < v) { - c = u + v >> 1; - if (arr[result[c]] < arrI) { - u = c + 1; - } else { - v = c; - } - } - if (arrI < arr[result[u]]) { - if (u > 0) { - p[i] = result[u - 1]; - } - result[u] = i; - } - } - } - u = result.length; - v = result[u - 1]; - while (u-- > 0) { - result[u] = v; - v = p[v]; - } - return result; -} - -const isTeleport = (type) => type.__isTeleport; -const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); -const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; -const resolveTarget = (props, select) => { - const targetSelector = props && props.to; - if (shared.isString(targetSelector)) { - if (!select) { - warn( - `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` - ); - return null; - } else { - const target = select(targetSelector); - if (!target) { - warn( - `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` - ); - } - return target; - } - } else { - if (!targetSelector && !isTeleportDisabled(props)) { - warn(`Invalid Teleport target: ${targetSelector}`); - } - return targetSelector; - } -}; -const TeleportImpl = { - name: "Teleport", - __isTeleport: true, - process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) { - const { - mc: mountChildren, - pc: patchChildren, - pbc: patchBlockChildren, - o: { insert, querySelector, createText, createComment } - } = internals; - const disabled = isTeleportDisabled(n2.props); - let { shapeFlag, children, dynamicChildren } = n2; - if (isHmrUpdating) { - optimized = false; - dynamicChildren = null; - } - if (n1 == null) { - const placeholder = n2.el = createComment("teleport start") ; - const mainAnchor = n2.anchor = createComment("teleport end") ; - insert(placeholder, container, anchor); - insert(mainAnchor, container, anchor); - const target = n2.target = resolveTarget(n2.props, querySelector); - const targetAnchor = n2.targetAnchor = createText(""); - if (target) { - insert(targetAnchor, target); - isSVG = isSVG || isTargetSVG(target); - } else if (!disabled) { - warn("Invalid Teleport target on mount:", target, `(${typeof target})`); - } - const mount = (container2, anchor2) => { - if (shapeFlag & 16) { - mountChildren( - children, - container2, - anchor2, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized - ); - } - }; - if (disabled) { - mount(container, mainAnchor); - } else if (target) { - mount(target, targetAnchor); - } - } else { - n2.el = n1.el; - const mainAnchor = n2.anchor = n1.anchor; - const target = n2.target = n1.target; - const targetAnchor = n2.targetAnchor = n1.targetAnchor; - const wasDisabled = isTeleportDisabled(n1.props); - const currentContainer = wasDisabled ? container : target; - const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; - isSVG = isSVG || isTargetSVG(target); - if (dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - currentContainer, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds - ); - traverseStaticChildren(n1, n2, true); - } else if (!optimized) { - patchChildren( - n1, - n2, - currentContainer, - currentAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - false - ); - } - if (disabled) { - if (!wasDisabled) { - moveTeleport( - n2, - container, - mainAnchor, - internals, - 1 - ); - } else { - if (n2.props && n1.props && n2.props.to !== n1.props.to) { - n2.props.to = n1.props.to; - } - } - } else { - if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { - const nextTarget = n2.target = resolveTarget( - n2.props, - querySelector - ); - if (nextTarget) { - moveTeleport( - n2, - nextTarget, - null, - internals, - 0 - ); - } else { - warn( - "Invalid Teleport target on update:", - target, - `(${typeof target})` - ); - } - } else if (wasDisabled) { - moveTeleport( - n2, - target, - targetAnchor, - internals, - 1 - ); - } - } - } - updateCssVars(n2); - }, - remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) { - const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode; - if (target) { - hostRemove(targetAnchor); - } - doRemove && hostRemove(anchor); - if (shapeFlag & 16) { - const shouldRemove = doRemove || !isTeleportDisabled(props); - for (let i = 0; i < children.length; i++) { - const child = children[i]; - unmount( - child, - parentComponent, - parentSuspense, - shouldRemove, - !!child.dynamicChildren - ); - } - } - }, - move: moveTeleport, - hydrate: hydrateTeleport -}; -function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { - if (moveType === 0) { - insert(vnode.targetAnchor, container, parentAnchor); - } - const { el, anchor, shapeFlag, children, props } = vnode; - const isReorder = moveType === 2; - if (isReorder) { - insert(el, container, parentAnchor); - } - if (!isReorder || isTeleportDisabled(props)) { - if (shapeFlag & 16) { - for (let i = 0; i < children.length; i++) { - move( - children[i], - container, - parentAnchor, - 2 - ); - } - } - } - if (isReorder) { - insert(anchor, container, parentAnchor); - } -} -function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { - o: { nextSibling, parentNode, querySelector } -}, hydrateChildren) { - const target = vnode.target = resolveTarget( - vnode.props, - querySelector - ); - if (target) { - const targetNode = target._lpa || target.firstChild; - if (vnode.shapeFlag & 16) { - if (isTeleportDisabled(vnode.props)) { - vnode.anchor = hydrateChildren( - nextSibling(node), - vnode, - parentNode(node), - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - vnode.targetAnchor = targetNode; - } else { - vnode.anchor = nextSibling(node); - let targetAnchor = targetNode; - while (targetAnchor) { - targetAnchor = nextSibling(targetAnchor); - if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") { - vnode.targetAnchor = targetAnchor; - target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); - break; - } - } - hydrateChildren( - targetNode, - vnode, - target, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - } - } - updateCssVars(vnode); - } - return vnode.anchor && nextSibling(vnode.anchor); -} -const Teleport = TeleportImpl; -function updateCssVars(vnode) { - const ctx = vnode.ctx; - if (ctx && ctx.ut) { - let node = vnode.children[0].el; - while (node && node !== vnode.targetAnchor) { - if (node.nodeType === 1) - node.setAttribute("data-v-owner", ctx.uid); - node = node.nextSibling; - } - ctx.ut(); - } -} - -const Fragment = Symbol.for("v-fgt"); -const Text = Symbol.for("v-txt"); -const Comment = Symbol.for("v-cmt"); -const Static = Symbol.for("v-stc"); -const blockStack = []; -let currentBlock = null; -function openBlock(disableTracking = false) { - blockStack.push(currentBlock = disableTracking ? null : []); -} -function closeBlock() { - blockStack.pop(); - currentBlock = blockStack[blockStack.length - 1] || null; -} -let isBlockTreeEnabled = 1; -function setBlockTracking(value) { - isBlockTreeEnabled += value; -} -function setupBlock(vnode) { - vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null; - closeBlock(); - if (isBlockTreeEnabled > 0 && currentBlock) { - currentBlock.push(vnode); - } - return vnode; -} -function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { - return setupBlock( - createBaseVNode( - type, - props, - children, - patchFlag, - dynamicProps, - shapeFlag, - true - /* isBlock */ - ) - ); -} -function createBlock(type, props, children, patchFlag, dynamicProps) { - return setupBlock( - createVNode( - type, - props, - children, - patchFlag, - dynamicProps, - true - /* isBlock: prevent a block from tracking itself */ - ) - ); -} -function isVNode(value) { - return value ? value.__v_isVNode === true : false; -} -function isSameVNodeType(n1, n2) { - if (n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) { - n1.shapeFlag &= ~256; - n2.shapeFlag &= ~512; - return false; - } - return n1.type === n2.type && n1.key === n2.key; -} -let vnodeArgsTransformer; -function transformVNodeArgs(transformer) { - vnodeArgsTransformer = transformer; -} -const createVNodeWithArgsTransform = (...args) => { - return _createVNode( - ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args - ); -}; -const InternalObjectKey = `__vInternal`; -const normalizeKey = ({ key }) => key != null ? key : null; -const normalizeRef = ({ - ref, - ref_key, - ref_for -}) => { - if (typeof ref === "number") { - ref = "" + ref; - } - return ref != null ? shared.isString(ref) || reactivity.isRef(ref) || shared.isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; -}; -function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { - const vnode = { - __v_isVNode: true, - __v_skip: true, - type, - props, - key: props && normalizeKey(props), - ref: props && normalizeRef(props), - scopeId: currentScopeId, - slotScopeIds: null, - children, - component: null, - suspense: null, - ssContent: null, - ssFallback: null, - dirs: null, - transition: null, - el: null, - anchor: null, - target: null, - targetAnchor: null, - staticCount: 0, - shapeFlag, - patchFlag, - dynamicProps, - dynamicChildren: null, - appContext: null, - ctx: currentRenderingInstance - }; - if (needFullChildrenNormalization) { - normalizeChildren(vnode, children); - if (shapeFlag & 128) { - type.normalize(vnode); - } - } else if (children) { - vnode.shapeFlag |= shared.isString(children) ? 8 : 16; - } - if (vnode.key !== vnode.key) { - warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type); - } - if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself - !isBlockNode && // has current parent block - currentBlock && // presence of a patch flag indicates this node needs patching on updates. - // component nodes also should always be patched, because even if the - // component doesn't need to update, it needs to persist the instance on to - // the next vnode so that it can be properly unmounted later. - (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the - // vnode should not be considered dynamic due to handler caching. - vnode.patchFlag !== 32) { - currentBlock.push(vnode); - } - return vnode; -} -const createVNode = createVNodeWithArgsTransform ; -function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { - if (!type || type === NULL_DYNAMIC_COMPONENT) { - if (!type) { - warn(`Invalid vnode type when creating vnode: ${type}.`); - } - type = Comment; - } - if (isVNode(type)) { - const cloned = cloneVNode( - type, - props, - true - /* mergeRef: true */ - ); - if (children) { - normalizeChildren(cloned, children); - } - if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { - if (cloned.shapeFlag & 6) { - currentBlock[currentBlock.indexOf(type)] = cloned; - } else { - currentBlock.push(cloned); - } - } - cloned.patchFlag |= -2; - return cloned; - } - if (isClassComponent(type)) { - type = type.__vccOpts; - } - if (props) { - props = guardReactiveProps(props); - let { class: klass, style } = props; - if (klass && !shared.isString(klass)) { - props.class = shared.normalizeClass(klass); - } - if (shared.isObject(style)) { - if (reactivity.isProxy(style) && !shared.isArray(style)) { - style = shared.extend({}, style); - } - props.style = shared.normalizeStyle(style); - } - } - const shapeFlag = shared.isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : shared.isObject(type) ? 4 : shared.isFunction(type) ? 2 : 0; - if (shapeFlag & 4 && reactivity.isProxy(type)) { - type = reactivity.toRaw(type); - warn( - `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, - ` -Component that was made reactive: `, - type - ); - } - return createBaseVNode( - type, - props, - children, - patchFlag, - dynamicProps, - shapeFlag, - isBlockNode, - true - ); -} -function guardReactiveProps(props) { - if (!props) - return null; - return reactivity.isProxy(props) || InternalObjectKey in props ? shared.extend({}, props) : props; -} -function cloneVNode(vnode, extraProps, mergeRef = false) { - const { props, ref, patchFlag, children } = vnode; - const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; - const cloned = { - __v_isVNode: true, - __v_skip: true, - type: vnode.type, - props: mergedProps, - key: mergedProps && normalizeKey(mergedProps), - ref: extraProps && extraProps.ref ? ( - // #2078 in the case of <component :is="vnode" ref="extra"/> - // if the vnode itself already has a ref, cloneVNode will need to merge - // the refs so the single vnode can be set on multiple refs - mergeRef && ref ? shared.isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) - ) : ref, - scopeId: vnode.scopeId, - slotScopeIds: vnode.slotScopeIds, - children: patchFlag === -1 && shared.isArray(children) ? children.map(deepCloneVNode) : children, - target: vnode.target, - targetAnchor: vnode.targetAnchor, - staticCount: vnode.staticCount, - shapeFlag: vnode.shapeFlag, - // if the vnode is cloned with extra props, we can no longer assume its - // existing patch flag to be reliable and need to add the FULL_PROPS flag. - // note: preserve flag for fragments since they use the flag for children - // fast paths only. - patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, - dynamicProps: vnode.dynamicProps, - dynamicChildren: vnode.dynamicChildren, - appContext: vnode.appContext, - dirs: vnode.dirs, - transition: vnode.transition, - // These should technically only be non-null on mounted VNodes. However, - // they *should* be copied for kept-alive vnodes. So we just always copy - // them since them being non-null during a mount doesn't affect the logic as - // they will simply be overwritten. - component: vnode.component, - suspense: vnode.suspense, - ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), - ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), - el: vnode.el, - anchor: vnode.anchor, - ctx: vnode.ctx, - ce: vnode.ce - }; - return cloned; -} -function deepCloneVNode(vnode) { - const cloned = cloneVNode(vnode); - if (shared.isArray(vnode.children)) { - cloned.children = vnode.children.map(deepCloneVNode); - } - return cloned; -} -function createTextVNode(text = " ", flag = 0) { - return createVNode(Text, null, text, flag); -} -function createStaticVNode(content, numberOfNodes) { - const vnode = createVNode(Static, null, content); - vnode.staticCount = numberOfNodes; - return vnode; -} -function createCommentVNode(text = "", asBlock = false) { - return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); -} -function normalizeVNode(child) { - if (child == null || typeof child === "boolean") { - return createVNode(Comment); - } else if (shared.isArray(child)) { - return createVNode( - Fragment, - null, - // #3666, avoid reference pollution when reusing vnode - child.slice() - ); - } else if (typeof child === "object") { - return cloneIfMounted(child); - } else { - return createVNode(Text, null, String(child)); - } -} -function cloneIfMounted(child) { - return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); -} -function normalizeChildren(vnode, children) { - let type = 0; - const { shapeFlag } = vnode; - if (children == null) { - children = null; - } else if (shared.isArray(children)) { - type = 16; - } else if (typeof children === "object") { - if (shapeFlag & (1 | 64)) { - const slot = children.default; - if (slot) { - slot._c && (slot._d = false); - normalizeChildren(vnode, slot()); - slot._c && (slot._d = true); - } - return; - } else { - type = 32; - const slotFlag = children._; - if (!slotFlag && !(InternalObjectKey in children)) { - children._ctx = currentRenderingInstance; - } else if (slotFlag === 3 && currentRenderingInstance) { - if (currentRenderingInstance.slots._ === 1) { - children._ = 1; - } else { - children._ = 2; - vnode.patchFlag |= 1024; - } - } - } - } else if (shared.isFunction(children)) { - children = { default: children, _ctx: currentRenderingInstance }; - type = 32; - } else { - children = String(children); - if (shapeFlag & 64) { - type = 16; - children = [createTextVNode(children)]; - } else { - type = 8; - } - } - vnode.children = children; - vnode.shapeFlag |= type; -} -function mergeProps(...args) { - const ret = {}; - for (let i = 0; i < args.length; i++) { - const toMerge = args[i]; - for (const key in toMerge) { - if (key === "class") { - if (ret.class !== toMerge.class) { - ret.class = shared.normalizeClass([ret.class, toMerge.class]); - } - } else if (key === "style") { - ret.style = shared.normalizeStyle([ret.style, toMerge.style]); - } else if (shared.isOn(key)) { - const existing = ret[key]; - const incoming = toMerge[key]; - if (incoming && existing !== incoming && !(shared.isArray(existing) && existing.includes(incoming))) { - ret[key] = existing ? [].concat(existing, incoming) : incoming; - } - } else if (key !== "") { - ret[key] = toMerge[key]; - } - } - } - return ret; -} -function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { - callWithAsyncErrorHandling(hook, instance, 7, [ - vnode, - prevVNode - ]); -} - -const emptyAppContext = createAppContext(); -let uid = 0; -function createComponentInstance(vnode, parent, suspense) { - const type = vnode.type; - const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; - const instance = { - uid: uid++, - vnode, - type, - parent, - appContext, - root: null, - // to be immediately set - next: null, - subTree: null, - // will be set synchronously right after creation - effect: null, - update: null, - // will be set synchronously right after creation - scope: new reactivity.EffectScope( - true - /* detached */ - ), - render: null, - proxy: null, - exposed: null, - exposeProxy: null, - withProxy: null, - provides: parent ? parent.provides : Object.create(appContext.provides), - accessCache: null, - renderCache: [], - // local resolved assets - components: null, - directives: null, - // resolved props and emits options - propsOptions: normalizePropsOptions(type, appContext), - emitsOptions: normalizeEmitsOptions(type, appContext), - // emit - emit: null, - // to be set immediately - emitted: null, - // props default value - propsDefaults: shared.EMPTY_OBJ, - // inheritAttrs - inheritAttrs: type.inheritAttrs, - // state - ctx: shared.EMPTY_OBJ, - data: shared.EMPTY_OBJ, - props: shared.EMPTY_OBJ, - attrs: shared.EMPTY_OBJ, - slots: shared.EMPTY_OBJ, - refs: shared.EMPTY_OBJ, - setupState: shared.EMPTY_OBJ, - setupContext: null, - attrsProxy: null, - slotsProxy: null, - // suspense related - suspense, - suspenseId: suspense ? suspense.pendingId : 0, - asyncDep: null, - asyncResolved: false, - // lifecycle hooks - // not using enums here because it results in computed properties - isMounted: false, - isUnmounted: false, - isDeactivated: false, - bc: null, - c: null, - bm: null, - m: null, - bu: null, - u: null, - um: null, - bum: null, - da: null, - a: null, - rtg: null, - rtc: null, - ec: null, - sp: null - }; - { - instance.ctx = createDevRenderContext(instance); - } - instance.root = parent ? parent.root : instance; - instance.emit = emit.bind(null, instance); - if (vnode.ce) { - vnode.ce(instance); - } - return instance; -} -let currentInstance = null; -const getCurrentInstance = () => currentInstance || currentRenderingInstance; -let internalSetCurrentInstance; -let globalCurrentInstanceSetters; -let settersKey = "__VUE_INSTANCE_SETTERS__"; -{ - if (!(globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey])) { - globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey] = []; - } - globalCurrentInstanceSetters.push((i) => currentInstance = i); - internalSetCurrentInstance = (instance) => { - if (globalCurrentInstanceSetters.length > 1) { - globalCurrentInstanceSetters.forEach((s) => s(instance)); - } else { - globalCurrentInstanceSetters[0](instance); - } - }; -} -const setCurrentInstance = (instance) => { - internalSetCurrentInstance(instance); - instance.scope.on(); -}; -const unsetCurrentInstance = () => { - currentInstance && currentInstance.scope.off(); - internalSetCurrentInstance(null); -}; -const isBuiltInTag = /* @__PURE__ */ shared.makeMap("slot,component"); -function validateComponentName(name, config) { - const appIsNativeTag = config.isNativeTag || shared.NO; - if (isBuiltInTag(name) || appIsNativeTag(name)) { - warn( - "Do not use built-in or reserved HTML elements as component id: " + name - ); - } -} -function isStatefulComponent(instance) { - return instance.vnode.shapeFlag & 4; -} -let isInSSRComponentSetup = false; -function setupComponent(instance, isSSR = false) { - isInSSRComponentSetup = isSSR; - const { props, children } = instance.vnode; - const isStateful = isStatefulComponent(instance); - initProps(instance, props, isStateful, isSSR); - initSlots(instance, children); - const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; - isInSSRComponentSetup = false; - return setupResult; -} -function setupStatefulComponent(instance, isSSR) { - var _a; - const Component = instance.type; - { - if (Component.name) { - validateComponentName(Component.name, instance.appContext.config); - } - if (Component.components) { - const names = Object.keys(Component.components); - for (let i = 0; i < names.length; i++) { - validateComponentName(names[i], instance.appContext.config); - } - } - if (Component.directives) { - const names = Object.keys(Component.directives); - for (let i = 0; i < names.length; i++) { - validateDirectiveName(names[i]); - } - } - if (Component.compilerOptions && isRuntimeOnly()) { - warn( - `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` - ); - } - } - instance.accessCache = /* @__PURE__ */ Object.create(null); - instance.proxy = reactivity.markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)); - { - exposePropsOnRenderContext(instance); - } - const { setup } = Component; - if (setup) { - const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; - setCurrentInstance(instance); - reactivity.pauseTracking(); - const setupResult = callWithErrorHandling( - setup, - instance, - 0, - [reactivity.shallowReadonly(instance.props) , setupContext] - ); - reactivity.resetTracking(); - unsetCurrentInstance(); - if (shared.isPromise(setupResult)) { - setupResult.then(unsetCurrentInstance, unsetCurrentInstance); - if (isSSR) { - return setupResult.then((resolvedResult) => { - handleSetupResult(instance, resolvedResult, isSSR); - }).catch((e) => { - handleError(e, instance, 0); - }); - } else { - instance.asyncDep = setupResult; - if (!instance.suspense) { - const name = (_a = Component.name) != null ? _a : "Anonymous"; - warn( - `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` - ); - } - } - } else { - handleSetupResult(instance, setupResult, isSSR); - } - } else { - finishComponentSetup(instance, isSSR); - } -} -function handleSetupResult(instance, setupResult, isSSR) { - if (shared.isFunction(setupResult)) { - if (instance.type.__ssrInlineRender) { - instance.ssrRender = setupResult; - } else { - instance.render = setupResult; - } - } else if (shared.isObject(setupResult)) { - if (isVNode(setupResult)) { - warn( - `setup() should not return VNodes directly - return a render function instead.` - ); - } - { - instance.devtoolsRawSetupState = setupResult; - } - instance.setupState = reactivity.proxyRefs(setupResult); - { - exposeSetupStateOnRenderContext(instance); - } - } else if (setupResult !== void 0) { - warn( - `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` - ); - } - finishComponentSetup(instance, isSSR); -} -let compile; -let installWithProxy; -function registerRuntimeCompiler(_compile) { - compile = _compile; - installWithProxy = (i) => { - if (i.render._rc) { - i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); - } - }; -} -const isRuntimeOnly = () => !compile; -function finishComponentSetup(instance, isSSR, skipOptions) { - const Component = instance.type; - if (!instance.render) { - if (!isSSR && compile && !Component.render) { - const template = Component.template || resolveMergedOptions(instance).template; - if (template) { - { - startMeasure(instance, `compile`); - } - const { isCustomElement, compilerOptions } = instance.appContext.config; - const { delimiters, compilerOptions: componentCompilerOptions } = Component; - const finalCompilerOptions = shared.extend( - shared.extend( - { - isCustomElement, - delimiters - }, - compilerOptions - ), - componentCompilerOptions - ); - Component.render = compile(template, finalCompilerOptions); - { - endMeasure(instance, `compile`); - } - } - } - instance.render = Component.render || shared.NOOP; - if (installWithProxy) { - installWithProxy(instance); - } - } - { - setCurrentInstance(instance); - reactivity.pauseTracking(); - try { - applyOptions(instance); - } finally { - reactivity.resetTracking(); - unsetCurrentInstance(); - } - } - if (!Component.render && instance.render === shared.NOOP && !isSSR) { - if (!compile && Component.template) { - warn( - `Component provided template option but runtime compilation is not supported in this build of Vue.` + (``) - /* should not happen */ - ); - } else { - warn(`Component is missing template or render function.`); - } - } -} -function getAttrsProxy(instance) { - return instance.attrsProxy || (instance.attrsProxy = new Proxy( - instance.attrs, - { - get(target, key) { - markAttrsAccessed(); - reactivity.track(instance, "get", "$attrs"); - return target[key]; - }, - set() { - warn(`setupContext.attrs is readonly.`); - return false; - }, - deleteProperty() { - warn(`setupContext.attrs is readonly.`); - return false; - } - } - )); -} -function getSlotsProxy(instance) { - return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, { - get(target, key) { - reactivity.track(instance, "get", "$slots"); - return target[key]; - } - })); -} -function createSetupContext(instance) { - const expose = (exposed) => { - { - if (instance.exposed) { - warn(`expose() should be called only once per setup().`); - } - if (exposed != null) { - let exposedType = typeof exposed; - if (exposedType === "object") { - if (shared.isArray(exposed)) { - exposedType = "array"; - } else if (reactivity.isRef(exposed)) { - exposedType = "ref"; - } - } - if (exposedType !== "object") { - warn( - `expose() should be passed a plain object, received ${exposedType}.` - ); - } - } - } - instance.exposed = exposed || {}; - }; - { - return Object.freeze({ - get attrs() { - return getAttrsProxy(instance); - }, - get slots() { - return getSlotsProxy(instance); - }, - get emit() { - return (event, ...args) => instance.emit(event, ...args); - }, - expose - }); - } -} -function getExposeProxy(instance) { - if (instance.exposed) { - return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), { - get(target, key) { - if (key in target) { - return target[key]; - } else if (key in publicPropertiesMap) { - return publicPropertiesMap[key](instance); - } - }, - has(target, key) { - return key in target || key in publicPropertiesMap; - } - })); - } -} -const classifyRE = /(?:^|[-_])(\w)/g; -const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); -function getComponentName(Component, includeInferred = true) { - return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; -} -function formatComponentName(instance, Component, isRoot = false) { - let name = getComponentName(Component); - if (!name && Component.__file) { - const match = Component.__file.match(/([^/\\]+)\.\w+$/); - if (match) { - name = match[1]; - } - } - if (!name && instance && instance.parent) { - const inferFromRegistry = (registry) => { - for (const key in registry) { - if (registry[key] === Component) { - return key; - } - } - }; - name = inferFromRegistry( - instance.components || instance.parent.type.components - ) || inferFromRegistry(instance.appContext.components); - } - return name ? classify(name) : isRoot ? `App` : `Anonymous`; -} -function isClassComponent(value) { - return shared.isFunction(value) && "__vccOpts" in value; -} - -const computed = (getterOrOptions, debugOptions) => { - return reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); -}; - -function h(type, propsOrChildren, children) { - const l = arguments.length; - if (l === 2) { - if (shared.isObject(propsOrChildren) && !shared.isArray(propsOrChildren)) { - if (isVNode(propsOrChildren)) { - return createVNode(type, null, [propsOrChildren]); - } - return createVNode(type, propsOrChildren); - } else { - return createVNode(type, null, propsOrChildren); - } - } else { - if (l > 3) { - children = Array.prototype.slice.call(arguments, 2); - } else if (l === 3 && isVNode(children)) { - children = [children]; - } - return createVNode(type, propsOrChildren, children); - } -} - -const ssrContextKey = Symbol.for("v-scx"); -const useSSRContext = () => { - { - const ctx = inject(ssrContextKey); - if (!ctx) { - warn( - `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` - ); - } - return ctx; - } -}; - -function isShallow(value) { - return !!(value && value["__v_isShallow"]); -} - -function initCustomFormatter() { - if (typeof window === "undefined") { - return; - } - const vueStyle = { style: "color:#3ba776" }; - const numberStyle = { style: "color:#0b1bc9" }; - const stringStyle = { style: "color:#b62e24" }; - const keywordStyle = { style: "color:#9d288c" }; - const formatter = { - header(obj) { - if (!shared.isObject(obj)) { - return null; - } - if (obj.__isVue) { - return ["div", vueStyle, `VueInstance`]; - } else if (reactivity.isRef(obj)) { - return [ - "div", - {}, - ["span", vueStyle, genRefFlag(obj)], - "<", - formatValue(obj.value), - `>` - ]; - } else if (reactivity.isReactive(obj)) { - return [ - "div", - {}, - ["span", vueStyle, isShallow(obj) ? "ShallowReactive" : "Reactive"], - "<", - formatValue(obj), - `>${reactivity.isReadonly(obj) ? ` (readonly)` : ``}` - ]; - } else if (reactivity.isReadonly(obj)) { - return [ - "div", - {}, - ["span", vueStyle, isShallow(obj) ? "ShallowReadonly" : "Readonly"], - "<", - formatValue(obj), - ">" - ]; - } - return null; - }, - hasBody(obj) { - return obj && obj.__isVue; - }, - body(obj) { - if (obj && obj.__isVue) { - return [ - "div", - {}, - ...formatInstance(obj.$) - ]; - } - } - }; - function formatInstance(instance) { - const blocks = []; - if (instance.type.props && instance.props) { - blocks.push(createInstanceBlock("props", reactivity.toRaw(instance.props))); - } - if (instance.setupState !== shared.EMPTY_OBJ) { - blocks.push(createInstanceBlock("setup", instance.setupState)); - } - if (instance.data !== shared.EMPTY_OBJ) { - blocks.push(createInstanceBlock("data", reactivity.toRaw(instance.data))); - } - const computed = extractKeys(instance, "computed"); - if (computed) { - blocks.push(createInstanceBlock("computed", computed)); - } - const injected = extractKeys(instance, "inject"); - if (injected) { - blocks.push(createInstanceBlock("injected", injected)); - } - blocks.push([ - "div", - {}, - [ - "span", - { - style: keywordStyle.style + ";opacity:0.66" - }, - "$ (internal): " - ], - ["object", { object: instance }] - ]); - return blocks; - } - function createInstanceBlock(type, target) { - target = shared.extend({}, target); - if (!Object.keys(target).length) { - return ["span", {}]; - } - return [ - "div", - { style: "line-height:1.25em;margin-bottom:0.6em" }, - [ - "div", - { - style: "color:#476582" - }, - type - ], - [ - "div", - { - style: "padding-left:1.25em" - }, - ...Object.keys(target).map((key) => { - return [ - "div", - {}, - ["span", keywordStyle, key + ": "], - formatValue(target[key], false) - ]; - }) - ] - ]; - } - function formatValue(v, asRaw = true) { - if (typeof v === "number") { - return ["span", numberStyle, v]; - } else if (typeof v === "string") { - return ["span", stringStyle, JSON.stringify(v)]; - } else if (typeof v === "boolean") { - return ["span", keywordStyle, v]; - } else if (shared.isObject(v)) { - return ["object", { object: asRaw ? reactivity.toRaw(v) : v }]; - } else { - return ["span", stringStyle, String(v)]; - } - } - function extractKeys(instance, type) { - const Comp = instance.type; - if (shared.isFunction(Comp)) { - return; - } - const extracted = {}; - for (const key in instance.ctx) { - if (isKeyOfType(Comp, key, type)) { - extracted[key] = instance.ctx[key]; - } - } - return extracted; - } - function isKeyOfType(Comp, key, type) { - const opts = Comp[type]; - if (shared.isArray(opts) && opts.includes(key) || shared.isObject(opts) && key in opts) { - return true; - } - if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { - return true; - } - if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) { - return true; - } - } - function genRefFlag(v) { - if (isShallow(v)) { - return `ShallowRef`; - } - if (v.effect) { - return `ComputedRef`; - } - return `Ref`; - } - if (window.devtoolsFormatters) { - window.devtoolsFormatters.push(formatter); - } else { - window.devtoolsFormatters = [formatter]; - } -} - -function withMemo(memo, render, cache, index) { - const cached = cache[index]; - if (cached && isMemoSame(cached, memo)) { - return cached; - } - const ret = render(); - ret.memo = memo.slice(); - return cache[index] = ret; -} -function isMemoSame(cached, memo) { - const prev = cached.memo; - if (prev.length != memo.length) { - return false; - } - for (let i = 0; i < prev.length; i++) { - if (shared.hasChanged(prev[i], memo[i])) { - return false; - } - } - if (isBlockTreeEnabled > 0 && currentBlock) { - currentBlock.push(cached); - } - return true; -} - -const version = "3.3.9"; -const _ssrUtils = { - createComponentInstance, - setupComponent, - renderComponentRoot, - setCurrentRenderingInstance, - isVNode: isVNode, - normalizeVNode -}; -const ssrUtils = _ssrUtils ; -const resolveFilter = null; -const compatUtils = null; - -exports.EffectScope = reactivity.EffectScope; -exports.ReactiveEffect = reactivity.ReactiveEffect; -exports.customRef = reactivity.customRef; -exports.effect = reactivity.effect; -exports.effectScope = reactivity.effectScope; -exports.getCurrentScope = reactivity.getCurrentScope; -exports.isProxy = reactivity.isProxy; -exports.isReactive = reactivity.isReactive; -exports.isReadonly = reactivity.isReadonly; -exports.isRef = reactivity.isRef; -exports.isShallow = reactivity.isShallow; -exports.markRaw = reactivity.markRaw; -exports.onScopeDispose = reactivity.onScopeDispose; -exports.proxyRefs = reactivity.proxyRefs; -exports.reactive = reactivity.reactive; -exports.readonly = reactivity.readonly; -exports.ref = reactivity.ref; -exports.shallowReactive = reactivity.shallowReactive; -exports.shallowReadonly = reactivity.shallowReadonly; -exports.shallowRef = reactivity.shallowRef; -exports.stop = reactivity.stop; -exports.toRaw = reactivity.toRaw; -exports.toRef = reactivity.toRef; -exports.toRefs = reactivity.toRefs; -exports.toValue = reactivity.toValue; -exports.triggerRef = reactivity.triggerRef; -exports.unref = reactivity.unref; -exports.camelize = shared.camelize; -exports.capitalize = shared.capitalize; -exports.normalizeClass = shared.normalizeClass; -exports.normalizeProps = shared.normalizeProps; -exports.normalizeStyle = shared.normalizeStyle; -exports.toDisplayString = shared.toDisplayString; -exports.toHandlerKey = shared.toHandlerKey; -exports.BaseTransition = BaseTransition; -exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; -exports.Comment = Comment; -exports.Fragment = Fragment; -exports.KeepAlive = KeepAlive; -exports.Static = Static; -exports.Suspense = Suspense; -exports.Teleport = Teleport; -exports.Text = Text; -exports.assertNumber = assertNumber; -exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; -exports.callWithErrorHandling = callWithErrorHandling; -exports.cloneVNode = cloneVNode; -exports.compatUtils = compatUtils; -exports.computed = computed; -exports.createBlock = createBlock; -exports.createCommentVNode = createCommentVNode; -exports.createElementBlock = createElementBlock; -exports.createElementVNode = createBaseVNode; -exports.createHydrationRenderer = createHydrationRenderer; -exports.createPropsRestProxy = createPropsRestProxy; -exports.createRenderer = createRenderer; -exports.createSlots = createSlots; -exports.createStaticVNode = createStaticVNode; -exports.createTextVNode = createTextVNode; -exports.createVNode = createVNode; -exports.defineAsyncComponent = defineAsyncComponent; -exports.defineComponent = defineComponent; -exports.defineEmits = defineEmits; -exports.defineExpose = defineExpose; -exports.defineModel = defineModel; -exports.defineOptions = defineOptions; -exports.defineProps = defineProps; -exports.defineSlots = defineSlots; -exports.getCurrentInstance = getCurrentInstance; -exports.getTransitionRawChildren = getTransitionRawChildren; -exports.guardReactiveProps = guardReactiveProps; -exports.h = h; -exports.handleError = handleError; -exports.hasInjectionContext = hasInjectionContext; -exports.initCustomFormatter = initCustomFormatter; -exports.inject = inject; -exports.isMemoSame = isMemoSame; -exports.isRuntimeOnly = isRuntimeOnly; -exports.isVNode = isVNode; -exports.mergeDefaults = mergeDefaults; -exports.mergeModels = mergeModels; -exports.mergeProps = mergeProps; -exports.nextTick = nextTick; -exports.onActivated = onActivated; -exports.onBeforeMount = onBeforeMount; -exports.onBeforeUnmount = onBeforeUnmount; -exports.onBeforeUpdate = onBeforeUpdate; -exports.onDeactivated = onDeactivated; -exports.onErrorCaptured = onErrorCaptured; -exports.onMounted = onMounted; -exports.onRenderTracked = onRenderTracked; -exports.onRenderTriggered = onRenderTriggered; -exports.onServerPrefetch = onServerPrefetch; -exports.onUnmounted = onUnmounted; -exports.onUpdated = onUpdated; -exports.openBlock = openBlock; -exports.popScopeId = popScopeId; -exports.provide = provide; -exports.pushScopeId = pushScopeId; -exports.queuePostFlushCb = queuePostFlushCb; -exports.registerRuntimeCompiler = registerRuntimeCompiler; -exports.renderList = renderList; -exports.renderSlot = renderSlot; -exports.resolveComponent = resolveComponent; -exports.resolveDirective = resolveDirective; -exports.resolveDynamicComponent = resolveDynamicComponent; -exports.resolveFilter = resolveFilter; -exports.resolveTransitionHooks = resolveTransitionHooks; -exports.setBlockTracking = setBlockTracking; -exports.setDevtoolsHook = setDevtoolsHook; -exports.setTransitionHooks = setTransitionHooks; -exports.ssrContextKey = ssrContextKey; -exports.ssrUtils = ssrUtils; -exports.toHandlers = toHandlers; -exports.transformVNodeArgs = transformVNodeArgs; -exports.useAttrs = useAttrs; -exports.useModel = useModel; -exports.useSSRContext = useSSRContext; -exports.useSlots = useSlots; -exports.useTransitionState = useTransitionState; -exports.version = version; -exports.warn = warn; -exports.watch = watch; -exports.watchEffect = watchEffect; -exports.watchPostEffect = watchPostEffect; -exports.watchSyncEffect = watchSyncEffect; -exports.withAsyncContext = withAsyncContext; -exports.withCtx = withCtx; -exports.withDefaults = withDefaults; -exports.withDirectives = withDirectives; -exports.withMemo = withMemo; -exports.withScopeId = withScopeId; diff --git a/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js b/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js index ac48f58..a2ed5e5 100644 --- a/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +++ b/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js @@ -1,3 +1,8 @@ +/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -5,21 +10,83 @@ Object.defineProperty(exports, '__esModule', { value: true }); var reactivity = require('@vue/reactivity'); var shared = require('@vue/shared'); -function warn$1(msg, ...args) { - return; +function pushWarningContext(vnode) { +} +function popWarningContext() { } function assertNumber(val, type) { return; } +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; function callWithErrorHandling(fn, instance, type, args) { - let res; try { - res = args ? fn(...args) : fn(); + return args ? fn(...args) : fn(); } catch (err) { handleError(err, instance, type); } - return res; } function callWithAsyncErrorHandling(fn, instance, type, args) { if (shared.isFunction(fn)) { @@ -31,18 +98,21 @@ function callWithAsyncErrorHandling(fn, instance, type, args) { } return res; } - const values = []; - for (let i = 0; i < fn.length; i++) { - values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + if (shared.isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; } - return values; } function handleError(err, instance, type, throwInDev = true) { const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || shared.EMPTY_OBJ; if (instance) { let cur = instance.parent; const exposedInstance = instance.proxy; - const errorInfo = type; + const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`; while (cur) { const errorCapturedHooks = cur.ec; if (errorCapturedHooks) { @@ -54,29 +124,29 @@ function handleError(err, instance, type, throwInDev = true) { } cur = cur.parent; } - const appErrorHandler = instance.appContext.config.errorHandler; - if (appErrorHandler) { - callWithErrorHandling( - appErrorHandler, - null, - 10, - [err, exposedInstance, errorInfo] - ); + if (errorHandler) { + reactivity.pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + reactivity.resetTracking(); return; } } - logError(err, type, contextVNode, throwInDev); + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); } -function logError(err, type, contextVNode, throwInDev = true) { - { +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + if (throwInProd) { + throw err; + } else { console.error(err); } } -let isFlushing = false; -let isFlushPending = false; const queue = []; -let flushIndex = 0; +let flushIndex = -1; const pendingPostFlushCbs = []; let activePostFlushCbs = null; let postFlushIndex = 0; @@ -93,7 +163,7 @@ function findInsertionIndex(id) { const middle = start + end >>> 1; const middleJob = queue[middle]; const middleJobId = getId(middleJob); - if (middleJobId < id || middleJobId === id && middleJob.pre) { + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { start = middle + 1; } else { end = middle; @@ -102,98 +172,109 @@ function findInsertionIndex(id) { return start; } function queueJob(job) { - if (!queue.length || !queue.includes( - job, - isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex - )) { - if (job.id == null) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { queue.push(job); } else { - queue.splice(findInsertionIndex(job.id), 0, job); + queue.splice(findInsertionIndex(jobId), 0, job); } + job.flags |= 1; queueFlush(); } } function queueFlush() { - if (!isFlushing && !isFlushPending) { - isFlushPending = true; + if (!currentFlushPromise) { currentFlushPromise = resolvedPromise.then(flushJobs); } } -function invalidateJob(job) { - const i = queue.indexOf(job); - if (i > flushIndex) { - queue.splice(i, 1); - } -} function queuePostFlushCb(cb) { if (!shared.isArray(cb)) { - if (!activePostFlushCbs || !activePostFlushCbs.includes( - cb, - cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex - )) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { pendingPostFlushCbs.push(cb); + cb.flags |= 1; } } else { pendingPostFlushCbs.push(...cb); } queueFlush(); } -function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { +function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { for (; i < queue.length; i++) { const cb = queue[i]; - if (cb && cb.pre) { + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } queue.splice(i, 1); i--; + if (cb.flags & 4) { + cb.flags &= ~1; + } cb(); + if (!(cb.flags & 4)) { + cb.flags &= ~1; + } } } } function flushPostFlushCbs(seen) { if (pendingPostFlushCbs.length) { - const deduped = [...new Set(pendingPostFlushCbs)]; + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); pendingPostFlushCbs.length = 0; if (activePostFlushCbs) { activePostFlushCbs.push(...deduped); return; } activePostFlushCbs = deduped; - activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { - activePostFlushCbs[postFlushIndex](); + const cb = activePostFlushCbs[postFlushIndex]; + if (cb.flags & 4) { + cb.flags &= ~1; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= ~1; } activePostFlushCbs = null; postFlushIndex = 0; } } -const getId = (job) => job.id == null ? Infinity : job.id; -const comparator = (a, b) => { - const diff = getId(a) - getId(b); - if (diff === 0) { - if (a.pre && !b.pre) - return -1; - if (b.pre && !a.pre) - return 1; - } - return diff; -}; +const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; function flushJobs(seen) { - isFlushPending = false; - isFlushing = true; - queue.sort(comparator); try { for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { const job = queue[flushIndex]; - if (job && job.active !== false) { + if (job && !(job.flags & 8)) { if (false) ; - callWithErrorHandling(job, null, 14); + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } } } } finally { - flushIndex = 0; + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= ~1; + } + } + flushIndex = -1; queue.length = 0; flushPostFlushCbs(); - isFlushing = false; currentFlushPromise = null; if (queue.length || pendingPostFlushCbs.length) { flushJobs(); @@ -201,136 +282,6 @@ function flushJobs(seen) { } } -exports.devtools = void 0; -let buffer = []; -function setDevtoolsHook(hook, target) { - var _a, _b; - exports.devtools = hook; - if (exports.devtools) { - exports.devtools.enabled = true; - buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args)); - buffer = []; - } else if ( - // handle late devtools injection - only do this if we are in an actual - // browser environment to avoid the timer handle stalling test runner exit - // (#4815) - typeof window !== "undefined" && // some envs mock window but not fully - window.HTMLElement && // also exclude jsdom - !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) - ) { - const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; - replay.push((newHook) => { - setDevtoolsHook(newHook, target); - }); - setTimeout(() => { - if (!exports.devtools) { - target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; - buffer = []; - } - }, 3e3); - } else { - buffer = []; - } -} - -function emit(instance, event, ...rawArgs) { - if (instance.isUnmounted) - return; - const props = instance.vnode.props || shared.EMPTY_OBJ; - let args = rawArgs; - const isModelListener = event.startsWith("update:"); - const modelArg = isModelListener && event.slice(7); - if (modelArg && modelArg in props) { - const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; - const { number, trim } = props[modifiersKey] || shared.EMPTY_OBJ; - if (trim) { - args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); - } - if (number) { - args = rawArgs.map(shared.looseToNumber); - } - } - let handlerName; - let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) - props[handlerName = shared.toHandlerKey(shared.camelize(event))]; - if (!handler && isModelListener) { - handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; - } - if (handler) { - callWithAsyncErrorHandling( - handler, - instance, - 6, - args - ); - } - const onceHandler = props[handlerName + `Once`]; - if (onceHandler) { - if (!instance.emitted) { - instance.emitted = {}; - } else if (instance.emitted[handlerName]) { - return; - } - instance.emitted[handlerName] = true; - callWithAsyncErrorHandling( - onceHandler, - instance, - 6, - args - ); - } -} -function normalizeEmitsOptions(comp, appContext, asMixin = false) { - const cache = appContext.emitsCache; - const cached = cache.get(comp); - if (cached !== void 0) { - return cached; - } - const raw = comp.emits; - let normalized = {}; - let hasExtends = false; - if (!shared.isFunction(comp)) { - const extendEmits = (raw2) => { - const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); - if (normalizedFromExtend) { - hasExtends = true; - shared.extend(normalized, normalizedFromExtend); - } - }; - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendEmits); - } - if (comp.extends) { - extendEmits(comp.extends); - } - if (comp.mixins) { - comp.mixins.forEach(extendEmits); - } - } - if (!raw && !hasExtends) { - if (shared.isObject(comp)) { - cache.set(comp, null); - } - return null; - } - if (shared.isArray(raw)) { - raw.forEach((key) => normalized[key] = null); - } else { - shared.extend(normalized, raw); - } - if (shared.isObject(comp)) { - cache.set(comp, normalized); - } - return normalized; -} -function isEmitListener(options, key) { - if (!options || !shared.isOn(key)) { - return false; - } - key = key.slice(2).replace(/Once$/, ""); - return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); -} - let currentRenderingInstance = null; let currentScopeId = null; function setCurrentRenderingInstance(instance) { @@ -347,8 +298,7 @@ function popScopeId() { } const withScopeId = (_id) => withCtx; function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { - if (!ctx) - return fn; + if (!ctx) return fn; if (fn._n) { return fn; } @@ -374,1015 +324,11 @@ function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { return renderFnWithContext; } -function markAttrsAccessed() { -} -function renderComponentRoot(instance) { - const { - type: Component, - vnode, - proxy, - withProxy, - props, - propsOptions: [propsOptions], - slots, - attrs, - emit, - render, - renderCache, - data, - setupState, - ctx, - inheritAttrs - } = instance; - let result; - let fallthroughAttrs; - const prev = setCurrentRenderingInstance(instance); - try { - if (vnode.shapeFlag & 4) { - const proxyToUse = withProxy || proxy; - const thisProxy = false ? new Proxy(proxyToUse, { - get(target, key, receiver) { - warn( - `Property '${String( - key - )}' was accessed via 'this'. Avoid using 'this' in templates.` - ); - return Reflect.get(target, key, receiver); - } - }) : proxyToUse; - result = normalizeVNode( - render.call( - thisProxy, - proxyToUse, - renderCache, - props, - setupState, - data, - ctx - ) - ); - fallthroughAttrs = attrs; - } else { - const render2 = Component; - if (false) ; - result = normalizeVNode( - render2.length > 1 ? render2( - props, - false ? { - get attrs() { - markAttrsAccessed(); - return attrs; - }, - slots, - emit - } : { attrs, slots, emit } - ) : render2( - props, - null - /* we know it doesn't need it */ - ) - ); - fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); - } - } catch (err) { - blockStack.length = 0; - handleError(err, instance, 1); - result = createVNode(Comment); - } - let root = result; - if (fallthroughAttrs && inheritAttrs !== false) { - const keys = Object.keys(fallthroughAttrs); - const { shapeFlag } = root; - if (keys.length) { - if (shapeFlag & (1 | 6)) { - if (propsOptions && keys.some(shared.isModelListener)) { - fallthroughAttrs = filterModelListeners( - fallthroughAttrs, - propsOptions - ); - } - root = cloneVNode(root, fallthroughAttrs); - } - } - } - if (vnode.dirs) { - root = cloneVNode(root); - root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; - } - if (vnode.transition) { - root.transition = vnode.transition; - } - { - result = root; - } - setCurrentRenderingInstance(prev); - return result; -} -function filterSingleRoot(children) { - let singleRoot; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - if (isVNode(child)) { - if (child.type !== Comment || child.children === "v-if") { - if (singleRoot) { - return; - } else { - singleRoot = child; - } - } - } else { - return; - } - } - return singleRoot; -} -const getFunctionalFallthrough = (attrs) => { - let res; - for (const key in attrs) { - if (key === "class" || key === "style" || shared.isOn(key)) { - (res || (res = {}))[key] = attrs[key]; - } - } - return res; -}; -const filterModelListeners = (attrs, props) => { - const res = {}; - for (const key in attrs) { - if (!shared.isModelListener(key) || !(key.slice(9) in props)) { - res[key] = attrs[key]; - } - } - return res; -}; -function shouldUpdateComponent(prevVNode, nextVNode, optimized) { - const { props: prevProps, children: prevChildren, component } = prevVNode; - const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; - const emits = component.emitsOptions; - if (nextVNode.dirs || nextVNode.transition) { - return true; - } - if (optimized && patchFlag >= 0) { - if (patchFlag & 1024) { - return true; - } - if (patchFlag & 16) { - if (!prevProps) { - return !!nextProps; - } - return hasPropsChanged(prevProps, nextProps, emits); - } else if (patchFlag & 8) { - const dynamicProps = nextVNode.dynamicProps; - for (let i = 0; i < dynamicProps.length; i++) { - const key = dynamicProps[i]; - if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { - return true; - } - } - } - } else { - if (prevChildren || nextChildren) { - if (!nextChildren || !nextChildren.$stable) { - return true; - } - } - if (prevProps === nextProps) { - return false; - } - if (!prevProps) { - return !!nextProps; - } - if (!nextProps) { - return true; - } - return hasPropsChanged(prevProps, nextProps, emits); - } - return false; -} -function hasPropsChanged(prevProps, nextProps, emitsOptions) { - const nextKeys = Object.keys(nextProps); - if (nextKeys.length !== Object.keys(prevProps).length) { - return true; - } - for (let i = 0; i < nextKeys.length; i++) { - const key = nextKeys[i]; - if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { - return true; - } - } - return false; -} -function updateHOCHostEl({ vnode, parent }, el) { - while (parent && parent.subTree === vnode) { - (vnode = parent.vnode).el = el; - parent = parent.parent; - } -} - -const COMPONENTS = "components"; -const DIRECTIVES = "directives"; -function resolveComponent(name, maybeSelfReference) { - return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; -} -const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); -function resolveDynamicComponent(component) { - if (shared.isString(component)) { - return resolveAsset(COMPONENTS, component, false) || component; - } else { - return component || NULL_DYNAMIC_COMPONENT; - } -} -function resolveDirective(name) { - return resolveAsset(DIRECTIVES, name); -} -function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { - const instance = currentRenderingInstance || currentInstance; - if (instance) { - const Component = instance.type; - if (type === COMPONENTS) { - const selfName = getComponentName( - Component, - false - /* do not include inferred name to avoid breaking existing code */ - ); - if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { - return Component; - } - } - const res = ( - // local registration - // check instance[type] first which is resolved for options API - resolve(instance[type] || Component[type], name) || // global registration - resolve(instance.appContext[type], name) - ); - if (!res && maybeSelfReference) { - return Component; - } - return res; - } -} -function resolve(registry, name) { - return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); -} - -const isSuspense = (type) => type.__isSuspense; -const SuspenseImpl = { - name: "Suspense", - // In order to make Suspense tree-shakable, we need to avoid importing it - // directly in the renderer. The renderer checks for the __isSuspense flag - // on a vnode's type and calls the `process` method, passing in renderer - // internals. - __isSuspense: true, - process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { - if (n1 == null) { - mountSuspense( - n2, - container, - anchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ); - } else { - patchSuspense( - n1, - n2, - container, - anchor, - parentComponent, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ); - } - }, - hydrate: hydrateSuspense, - create: createSuspenseBoundary, - normalize: normalizeSuspenseChildren -}; -const Suspense = SuspenseImpl ; -function triggerEvent(vnode, name) { - const eventListener = vnode.props && vnode.props[name]; - if (shared.isFunction(eventListener)) { - eventListener(); - } -} -function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { - const { - p: patch, - o: { createElement } - } = rendererInternals; - const hiddenContainer = createElement("div"); - const suspense = vnode.suspense = createSuspenseBoundary( - vnode, - parentSuspense, - parentComponent, - container, - hiddenContainer, - anchor, - isSVG, - slotScopeIds, - optimized, - rendererInternals - ); - patch( - null, - suspense.pendingBranch = vnode.ssContent, - hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds - ); - if (suspense.deps > 0) { - triggerEvent(vnode, "onPending"); - triggerEvent(vnode, "onFallback"); - patch( - null, - vnode.ssFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds - ); - setActiveBranch(suspense, vnode.ssFallback); - } else { - suspense.resolve(false, true); - } -} -function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { - const suspense = n2.suspense = n1.suspense; - suspense.vnode = n2; - n2.el = n1.el; - const newBranch = n2.ssContent; - const newFallback = n2.ssFallback; - const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; - if (pendingBranch) { - suspense.pendingBranch = newBranch; - if (isSameVNodeType(newBranch, pendingBranch)) { - patch( - pendingBranch, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } else if (isInFallback) { - patch( - activeBranch, - newFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, newFallback); - } - } else { - suspense.pendingId++; - if (isHydrating) { - suspense.isHydrating = false; - suspense.activeBranch = pendingBranch; - } else { - unmount(pendingBranch, parentComponent, suspense); - } - suspense.deps = 0; - suspense.effects.length = 0; - suspense.hiddenContainer = createElement("div"); - if (isInFallback) { - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } else { - patch( - activeBranch, - newFallback, - container, - anchor, - parentComponent, - null, - // fallback tree will not have suspense context - isSVG, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, newFallback); - } - } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch( - activeBranch, - newBranch, - container, - anchor, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - suspense.resolve(true); - } else { - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } - } - } - } else { - if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - patch( - activeBranch, - newBranch, - container, - anchor, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, newBranch); - } else { - triggerEvent(n2, "onPending"); - suspense.pendingBranch = newBranch; - suspense.pendingId++; - patch( - null, - newBranch, - suspense.hiddenContainer, - null, - parentComponent, - suspense, - isSVG, - slotScopeIds, - optimized - ); - if (suspense.deps <= 0) { - suspense.resolve(); - } else { - const { timeout, pendingId } = suspense; - if (timeout > 0) { - setTimeout(() => { - if (suspense.pendingId === pendingId) { - suspense.fallback(newFallback); - } - }, timeout); - } else if (timeout === 0) { - suspense.fallback(newFallback); - } - } - } - } -} -function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { - const { - p: patch, - m: move, - um: unmount, - n: next, - o: { parentNode, remove } - } = rendererInternals; - let parentSuspenseId; - const isSuspensible = isVNodeSuspensible(vnode); - if (isSuspensible) { - if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { - parentSuspenseId = parentSuspense.pendingId; - parentSuspense.deps++; - } - } - const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; - const suspense = { - vnode, - parent: parentSuspense, - parentComponent, - isSVG, - container, - hiddenContainer, - anchor, - deps: 0, - pendingId: 0, - timeout: typeof timeout === "number" ? timeout : -1, - activeBranch: null, - pendingBranch: null, - isInFallback: true, - isHydrating, - isUnmounted: false, - effects: [], - resolve(resume = false, sync = false) { - const { - vnode: vnode2, - activeBranch, - pendingBranch, - pendingId, - effects, - parentComponent: parentComponent2, - container: container2 - } = suspense; - let delayEnter = false; - if (suspense.isHydrating) { - suspense.isHydrating = false; - } else if (!resume) { - delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; - if (delayEnter) { - activeBranch.transition.afterLeave = () => { - if (pendingId === suspense.pendingId) { - move(pendingBranch, container2, anchor2, 0); - queuePostFlushCb(effects); - } - }; - } - let { anchor: anchor2 } = suspense; - if (activeBranch) { - anchor2 = next(activeBranch); - unmount(activeBranch, parentComponent2, suspense, true); - } - if (!delayEnter) { - move(pendingBranch, container2, anchor2, 0); - } - } - setActiveBranch(suspense, pendingBranch); - suspense.pendingBranch = null; - suspense.isInFallback = false; - let parent = suspense.parent; - let hasUnresolvedAncestor = false; - while (parent) { - if (parent.pendingBranch) { - parent.effects.push(...effects); - hasUnresolvedAncestor = true; - break; - } - parent = parent.parent; - } - if (!hasUnresolvedAncestor && !delayEnter) { - queuePostFlushCb(effects); - } - suspense.effects = []; - if (isSuspensible) { - if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { - parentSuspense.deps--; - if (parentSuspense.deps === 0 && !sync) { - parentSuspense.resolve(); - } - } - } - triggerEvent(vnode2, "onResolve"); - }, - fallback(fallbackVNode) { - if (!suspense.pendingBranch) { - return; - } - const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; - triggerEvent(vnode2, "onFallback"); - const anchor2 = next(activeBranch); - const mountFallback = () => { - if (!suspense.isInFallback) { - return; - } - patch( - null, - fallbackVNode, - container2, - anchor2, - parentComponent2, - null, - // fallback tree will not have suspense context - isSVG2, - slotScopeIds, - optimized - ); - setActiveBranch(suspense, fallbackVNode); - }; - const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; - if (delayEnter) { - activeBranch.transition.afterLeave = mountFallback; - } - suspense.isInFallback = true; - unmount( - activeBranch, - parentComponent2, - null, - // no suspense so unmount hooks fire now - true - // shouldRemove - ); - if (!delayEnter) { - mountFallback(); - } - }, - move(container2, anchor2, type) { - suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); - suspense.container = container2; - }, - next() { - return suspense.activeBranch && next(suspense.activeBranch); - }, - registerDep(instance, setupRenderEffect) { - const isInPendingSuspense = !!suspense.pendingBranch; - if (isInPendingSuspense) { - suspense.deps++; - } - const hydratedEl = instance.vnode.el; - instance.asyncDep.catch((err) => { - handleError(err, instance, 0); - }).then((asyncSetupResult) => { - if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { - return; - } - instance.asyncResolved = true; - const { vnode: vnode2 } = instance; - handleSetupResult(instance, asyncSetupResult, false); - if (hydratedEl) { - vnode2.el = hydratedEl; - } - const placeholder = !hydratedEl && instance.subTree.el; - setupRenderEffect( - instance, - vnode2, - // component may have been moved before resolve. - // if this is not a hydration, instance.subTree will be the comment - // placeholder. - parentNode(hydratedEl || instance.subTree.el), - // anchor will not be used if this is hydration, so only need to - // consider the comment placeholder case. - hydratedEl ? null : next(instance.subTree), - suspense, - isSVG, - optimized - ); - if (placeholder) { - remove(placeholder); - } - updateHOCHostEl(instance, vnode2.el); - if (isInPendingSuspense && --suspense.deps === 0) { - suspense.resolve(); - } - }); - }, - unmount(parentSuspense2, doRemove) { - suspense.isUnmounted = true; - if (suspense.activeBranch) { - unmount( - suspense.activeBranch, - parentComponent, - parentSuspense2, - doRemove - ); - } - if (suspense.pendingBranch) { - unmount( - suspense.pendingBranch, - parentComponent, - parentSuspense2, - doRemove - ); - } - } - }; - return suspense; -} -function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { - const suspense = vnode.suspense = createSuspenseBoundary( - vnode, - parentSuspense, - parentComponent, - node.parentNode, - document.createElement("div"), - null, - isSVG, - slotScopeIds, - optimized, - rendererInternals, - true - /* hydrating */ - ); - const result = hydrateNode( - node, - suspense.pendingBranch = vnode.ssContent, - parentComponent, - suspense, - slotScopeIds, - optimized - ); - if (suspense.deps === 0) { - suspense.resolve(false, true); - } - return result; -} -function normalizeSuspenseChildren(vnode) { - const { shapeFlag, children } = vnode; - const isSlotChildren = shapeFlag & 32; - vnode.ssContent = normalizeSuspenseSlot( - isSlotChildren ? children.default : children - ); - vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); -} -function normalizeSuspenseSlot(s) { - let block; - if (shared.isFunction(s)) { - const trackBlock = isBlockTreeEnabled && s._c; - if (trackBlock) { - s._d = false; - openBlock(); - } - s = s(); - if (trackBlock) { - s._d = true; - block = currentBlock; - closeBlock(); - } - } - if (shared.isArray(s)) { - const singleChild = filterSingleRoot(s); - s = singleChild; - } - s = normalizeVNode(s); - if (block && !s.dynamicChildren) { - s.dynamicChildren = block.filter((c) => c !== s); - } - return s; -} -function queueEffectWithSuspense(fn, suspense) { - if (suspense && suspense.pendingBranch) { - if (shared.isArray(fn)) { - suspense.effects.push(...fn); - } else { - suspense.effects.push(fn); - } - } else { - queuePostFlushCb(fn); - } -} -function setActiveBranch(suspense, branch) { - suspense.activeBranch = branch; - const { vnode, parentComponent } = suspense; - const el = vnode.el = branch.el; - if (parentComponent && parentComponent.subTree === vnode) { - parentComponent.vnode.el = el; - updateHOCHostEl(parentComponent, el); - } -} -function isVNodeSuspensible(vnode) { - var _a; - return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; -} - -function watchEffect(effect, options) { - return doWatch(effect, null, options); -} -function watchPostEffect(effect, options) { - return doWatch( - effect, - null, - { flush: "post" } - ); -} -function watchSyncEffect(effect, options) { - return doWatch( - effect, - null, - { flush: "sync" } - ); -} -const INITIAL_WATCHER_VALUE = {}; -function watch(source, cb, options) { - return doWatch(source, cb, options); -} -function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = shared.EMPTY_OBJ) { - var _a; - const instance = reactivity.getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; - let getter; - let forceTrigger = false; - let isMultiSource = false; - if (reactivity.isRef(source)) { - getter = () => source.value; - forceTrigger = reactivity.isShallow(source); - } else if (reactivity.isReactive(source)) { - getter = () => source; - deep = true; - } else if (shared.isArray(source)) { - isMultiSource = true; - forceTrigger = source.some((s) => reactivity.isReactive(s) || reactivity.isShallow(s)); - getter = () => source.map((s) => { - if (reactivity.isRef(s)) { - return s.value; - } else if (reactivity.isReactive(s)) { - return traverse(s); - } else if (shared.isFunction(s)) { - return callWithErrorHandling(s, instance, 2); - } else ; - }); - } else if (shared.isFunction(source)) { - if (cb) { - getter = () => callWithErrorHandling(source, instance, 2); - } else { - getter = () => { - if (instance && instance.isUnmounted) { - return; - } - if (cleanup) { - cleanup(); - } - return callWithAsyncErrorHandling( - source, - instance, - 3, - [onCleanup] - ); - }; - } - } else { - getter = shared.NOOP; - } - if (cb && deep) { - const baseGetter = getter; - getter = () => traverse(baseGetter()); - } - let cleanup; - let onCleanup = (fn) => { - cleanup = effect.onStop = () => { - callWithErrorHandling(fn, instance, 4); - cleanup = effect.onStop = void 0; - }; - }; - let ssrCleanup; - if (isInSSRComponentSetup) { - onCleanup = shared.NOOP; - if (!cb) { - getter(); - } else if (immediate) { - callWithAsyncErrorHandling(cb, instance, 3, [ - getter(), - isMultiSource ? [] : void 0, - onCleanup - ]); - } - if (flush === "sync") { - const ctx = useSSRContext(); - ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); - } else { - return shared.NOOP; - } - } - let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; - const job = () => { - if (!effect.active) { - return; - } - if (cb) { - const newValue = effect.run(); - if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue)) || false) { - if (cleanup) { - cleanup(); - } - callWithAsyncErrorHandling(cb, instance, 3, [ - newValue, - // pass undefined as the old value when it's changed for the first time - oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, - onCleanup - ]); - oldValue = newValue; - } - } else { - effect.run(); - } - }; - job.allowRecurse = !!cb; - let scheduler; - if (flush === "sync") { - scheduler = job; - } else if (flush === "post") { - scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); - } else { - job.pre = true; - if (instance) - job.id = instance.uid; - scheduler = () => queueJob(job); - } - const effect = new reactivity.ReactiveEffect(getter, scheduler); - if (cb) { - if (immediate) { - job(); - } else { - oldValue = effect.run(); - } - } else if (flush === "post") { - queuePostRenderEffect( - effect.run.bind(effect), - instance && instance.suspense - ); - } else { - effect.run(); - } - const unwatch = () => { - effect.stop(); - if (instance && instance.scope) { - shared.remove(instance.scope.effects, effect); - } - }; - if (ssrCleanup) - ssrCleanup.push(unwatch); - return unwatch; -} -function instanceWatch(source, value, options) { - const publicThis = this.proxy; - const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); - let cb; - if (shared.isFunction(value)) { - cb = value; - } else { - cb = value.handler; - options = value; - } - const cur = currentInstance; - setCurrentInstance(this); - const res = doWatch(getter, cb.bind(publicThis), options); - if (cur) { - setCurrentInstance(cur); - } else { - unsetCurrentInstance(); - } - return res; -} -function createPathGetter(ctx, path) { - const segments = path.split("."); - return () => { - let cur = ctx; - for (let i = 0; i < segments.length && cur; i++) { - cur = cur[segments[i]]; - } - return cur; - }; -} -function traverse(value, seen) { - if (!shared.isObject(value) || value["__v_skip"]) { - return value; - } - seen = seen || /* @__PURE__ */ new Set(); - if (seen.has(value)) { - return value; - } - seen.add(value); - if (reactivity.isRef(value)) { - traverse(value.value, seen); - } else if (shared.isArray(value)) { - for (let i = 0; i < value.length; i++) { - traverse(value[i], seen); - } - } else if (shared.isSet(value) || shared.isMap(value)) { - value.forEach((v) => { - traverse(v, seen); - }); - } else if (shared.isPlainObject(value)) { - for (const key in value) { - traverse(value[key], seen); - } - } - return value; -} - function withDirectives(vnode, directives) { - const internalInstance = currentRenderingInstance; - if (internalInstance === null) { + if (currentRenderingInstance === null) { return vnode; } - const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const instance = getComponentPublicInstance(currentRenderingInstance); const bindings = vnode.dirs || (vnode.dirs = []); for (let i = 0; i < directives.length; i++) { let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i]; @@ -1394,7 +340,7 @@ function withDirectives(vnode, directives) { }; } if (dir.deep) { - traverse(value); + reactivity.traverse(value); } bindings.push({ dir, @@ -1430,6 +376,327 @@ function invokeDirectiveHook(vnode, prevVNode, instance, name) { } } +const TeleportEndKey = Symbol("_vte"); +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (shared.isString(targetSelector)) { + if (!select) { + return null; + } else { + const target = select(targetSelector); + return target; + } + } else { + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (n1 == null) { + const placeholder = n2.el = createText(""); + const mainAnchor = n2.anchor = createText(""); + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + if (parentComponent && parentComponent.isCE) { + parentComponent.ce._teleportTarget = container2; + } + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = () => { + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = prepareAnchor(target, n2, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (!disabled) { + mount(target, targetAnchor); + updateCssVars(n2, false); + } + } + }; + if (disabled) { + mount(container, mainAnchor); + updateCssVars(n2, true); + } + if (isTeleportDeferred(n2.props)) { + queuePostRenderEffect(() => { + mountToTarget(); + n2.el.__isMounted = true; + }, parentSuspense); + } else { + mountToTarget(); + } + } else { + if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) { + queuePostRenderEffect(() => { + TeleportImpl.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + delete n1.el.__isMounted; + }, parentSuspense); + return; + } + n2.el = n1.el; + n2.targetStart = n1.targetStart; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, true); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } +}, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const disabled = isTeleportDisabled(vnode.props); + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetStart = targetNode; + vnode.targetAnchor = targetNode && nextSibling(targetNode); + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} +function prepareAnchor(target, vnode, createText, insert) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target); + insert(targetAnchor, target); + } + return targetAnchor; +} + const leaveCbKey = Symbol("_leaveCb"); const enterCbKey = Symbol("_enterCb"); function useTransitionState() { @@ -1468,71 +735,60 @@ const BaseTransitionPropsValidators = { onAfterAppear: TransitionHookValidator, onAppearCancelled: TransitionHookValidator }; +const recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; +}; const BaseTransitionImpl = { name: `BaseTransition`, props: BaseTransitionPropsValidators, setup(props, { slots }) { const instance = getCurrentInstance(); const state = useTransitionState(); - let prevTransitionKey; return () => { const children = slots.default && getTransitionRawChildren(slots.default(), true); if (!children || !children.length) { return; } - let child = children[0]; - if (children.length > 1) { - for (const c of children) { - if (c.type !== Comment) { - child = c; - break; - } - } - } + const child = findNonCommentChild(children); const rawProps = reactivity.toRaw(props); const { mode } = rawProps; if (state.isLeaving) { return emptyPlaceholder(child); } - const innerChild = getKeepAliveChild(child); + const innerChild = getInnerChild$1(child); if (!innerChild) { return emptyPlaceholder(child); } - const enterHooks = resolveTransitionHooks( + let enterHooks = resolveTransitionHooks( innerChild, rawProps, state, - instance + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks ); - setTransitionHooks(innerChild, enterHooks); - const oldChild = instance.subTree; - const oldInnerChild = oldChild && getKeepAliveChild(oldChild); - let transitionKeyChanged = false; - const { getTransitionKey } = innerChild.type; - if (getTransitionKey) { - const key = getTransitionKey(); - if (prevTransitionKey === void 0) { - prevTransitionKey = key; - } else if (key !== prevTransitionKey) { - prevTransitionKey = key; - transitionKeyChanged = true; - } + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); } - if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { - const leavingHooks = resolveTransitionHooks( + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) { + let leavingHooks = resolveTransitionHooks( oldInnerChild, rawProps, state, instance ); setTransitionHooks(oldInnerChild, leavingHooks); - if (mode === "out-in") { + if (mode === "out-in" && innerChild.type !== Comment) { state.isLeaving = true; leavingHooks.afterLeave = () => { state.isLeaving = false; - if (instance.update.active !== false) { + if (!(instance.job.flags & 8)) { instance.update(); } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; }; return emptyPlaceholder(child); } else if (mode === "in-out" && innerChild.type !== Comment) { @@ -1546,15 +802,36 @@ const BaseTransitionImpl = { earlyRemove(); el[leaveCbKey] = void 0; delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; }; - enterHooks.delayedLeave = delayedLeave; }; + } else { + oldInnerChild = void 0; } + } else if (oldInnerChild) { + oldInnerChild = void 0; } return child; }; } }; +function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + for (const c of children) { + if (c.type !== Comment) { + child = c; + break; + } + } + } + return child; +} const BaseTransition = BaseTransitionImpl; function getLeavingNodesForType(state, vnode) { const { leavingVNodes } = state; @@ -1565,7 +842,7 @@ function getLeavingNodesForType(state, vnode) { } return leavingVNodesCache; } -function resolveTransitionHooks(vnode, props, state, instance) { +function resolveTransitionHooks(vnode, props, state, instance, postClone) { const { appear, mode, @@ -1597,8 +874,7 @@ function resolveTransitionHooks(vnode, props, state, instance) { const done = args[1]; callHook(hook, args); if (shared.isArray(hook)) { - if (hook.every((hook2) => hook2.length <= 1)) - done(); + if (hook.every((hook2) => hook2.length <= 1)) done(); } else if (hook.length <= 1) { done(); } @@ -1642,8 +918,7 @@ function resolveTransitionHooks(vnode, props, state, instance) { } let called = false; const done = el[enterCbKey] = (cancelled) => { - if (called) - return; + if (called) return; called = true; if (cancelled) { callHook(cancelHook, [el]); @@ -1675,8 +950,7 @@ function resolveTransitionHooks(vnode, props, state, instance) { callHook(onBeforeLeave, [el]); let called = false; const done = el[leaveCbKey] = (cancelled) => { - if (called) - return; + if (called) return; called = true; remove(); if (cancelled) { @@ -1697,7 +971,15 @@ function resolveTransitionHooks(vnode, props, state, instance) { } }, clone(vnode2) { - return resolveTransitionHooks(vnode2, props, state, instance); + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; } }; return hooks; @@ -1709,15 +991,26 @@ function emptyPlaceholder(vnode) { return vnode; } } -function getKeepAliveChild(vnode) { - return isKeepAlive(vnode) ? ( - // #7121 ensure get the child component subtree in case - // it's been replaced during HMR - vnode.children ? vnode.children[0] : void 0 - ) : vnode; +function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && shared.isFunction(children.default)) { + return children.default(); + } + } } function setTransitionHooks(vnode, hooks) { if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; setTransitionHooks(vnode.component.subTree, hooks); } else if (vnode.shapeFlag & 128) { vnode.ssContent.transition = hooks.clone(vnode.ssContent); @@ -1733,8 +1026,7 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) { let child = children[i]; const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); if (child.type === Fragment) { - if (child.patchFlag & 128) - keyedFragmentCount++; + if (child.patchFlag & 128) keyedFragmentCount++; ret = ret.concat( getTransitionRawChildren(child.children, keepComment, key) ); @@ -1754,12 +1046,682 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) { // @__NO_SIDE_EFFECTS__ function defineComponent(options, extraOptions) { return shared.isFunction(options) ? ( - // #8326: extend call and options.name access are considered side-effects + // #8236: extend call and options.name access are considered side-effects // by Rollup, so we have to wrap it in a pure-annotated IIFE. /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))() ) : options; } +function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } + return ""; +} +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} + +function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = reactivity.shallowRef(null); + if (i) { + const refs = i.refs === shared.EMPTY_OBJ ? i.refs = {} : i.refs; + { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } + const ret = r; + return ret; +} + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (shared.isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = reactivity.toRaw(setupState); + const canSetSetupRef = setupState === shared.EMPTY_OBJ ? () => false : (key) => { + return shared.hasOwn(rawSetupState, key); + }; + if (oldRef != null && oldRef !== ref) { + if (shared.isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (reactivity.isRef(oldRef)) { + oldRef.value = null; + } + } + if (shared.isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = shared.isString(ref); + const _isRef = reactivity.isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + shared.isArray(existing) && shared.remove(existing, refValue); + } else { + if (!shared.isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else ; + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } + } +} + +let hasLoggedMismatchError = false; +const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; +}; +const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; +const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); +const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; +}; +const isComment = (node) => node.nodeType === 8; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else ; + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + if (forcePatch || patchFlag !== -1) { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + while (next) { + if (!isMismatchAllowed(el, 1 /* CHILDREN */)) { + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + if (el.textContent !== clientText) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + if (forcePatch || !optimized || patchFlag & (16 | 32)) { + const isCustomElement = el.tagName.includes("-"); + for (const key in props) { + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement) { + patchProp(el, key, null, props[key], void 0, parentComponent); + } + } + } else if (props.onClick) { + patchProp( + el, + "onClick", + null, + props.onClick, + void 0, + parentComponent + ); + } else if (patchFlag & 4 && reactivity.isReactive(props.style)) { + for (const key in props.style) props.style[key]; + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!isMismatchAllowed(container, 1 /* CHILDREN */)) { + logMismatchError(); + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) { + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate, hydrateNode]; +} +const allowMismatchAttr = "data-allow-mismatch"; +const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" +}; +function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr); + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 /* TEXT */ && list.includes("children")) { + return true; + } + return allowedAttr.split(",").includes(MismatchTypeString[allowedType]); + } +} + +const requestIdleCallback = shared.getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); +const cancelIdleCallback = shared.getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); +const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { timeout }); + return () => cancelIdleCallback(id); +}; +function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); +} +const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); +}; +const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } +}; +const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (shared.isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; +}; +function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } +} + const isAsyncWrapper = (i) => !!i.type.__asyncLoader; /*! #__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ @@ -1772,6 +1734,7 @@ function defineAsyncComponent(source) { loadingComponent, errorComponent, delay = 200, + hydrate: hydrateStrategy, timeout, // undefined = never times out suspensible = true, @@ -1812,11 +1775,28 @@ function defineAsyncComponent(source) { return defineComponent({ name: "AsyncComponentWrapper", __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + hydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : hydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, get __asyncResolved() { return resolvedComp; }, setup() { const instance = currentInstance; + markAsyncBoundary(instance); if (resolvedComp) { return () => createInnerComp(resolvedComp, instance); } @@ -1827,7 +1807,6 @@ function defineAsyncComponent(source) { instance, 13, !errorComponent - /* do not throw in dev if user provided error component */ ); }; if (suspensible && instance.suspense || isInSSRComponentSetup) { @@ -1862,7 +1841,7 @@ function defineAsyncComponent(source) { load().then(() => { loaded.value = true; if (instance.parent && isKeepAlive(instance.parent.vnode)) { - queueJob(instance.parent.update); + instance.parent.update(); } }).catch((err) => { onError(err); @@ -1925,7 +1904,7 @@ const KeepAliveImpl = { } } = sharedContext; const storageContainer = createElement("div"); - sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { const instance2 = vnode.component; move(vnode, container, anchor, 0, parentSuspense); patch( @@ -1935,7 +1914,7 @@ const KeepAliveImpl = { anchor, instance2, parentSuspense, - isSVG, + namespace, vnode.slotScopeIds, optimized ); @@ -1952,6 +1931,8 @@ const KeepAliveImpl = { }; sharedContext.deactivate = (vnode) => { const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); move(vnode, storageContainer, null, 1, parentSuspense); queuePostRenderEffect(() => { if (instance2.da) { @@ -1971,14 +1952,14 @@ const KeepAliveImpl = { function pruneCache(filter) { cache.forEach((vnode, key) => { const name = getComponentName(vnode.type); - if (name && (!filter || !filter(name))) { + if (name && !filter(name)) { pruneCacheEntry(key); } }); } function pruneCacheEntry(key) { const cached = cache.get(key); - if (!current || !isSameVNodeType(cached, current)) { + if (cached && (!current || !isSameVNodeType(cached, current))) { unmount(cached); } else if (current) { resetShapeFlag(current); @@ -1998,7 +1979,13 @@ const KeepAliveImpl = { let pendingCacheKey = null; const cacheSubtree = () => { if (pendingCacheKey != null) { - cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } } }; onMounted(cacheSubtree); @@ -2019,7 +2006,7 @@ const KeepAliveImpl = { return () => { pendingCacheKey = null; if (!slots.default) { - return null; + return current = null; } const children = slots.default(); const rawVNode = children[0]; @@ -2031,12 +2018,17 @@ const KeepAliveImpl = { return rawVNode; } let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } const comp = vnode.type; const name = getComponentName( isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp ); const { include, exclude, max } = props; if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= ~256; current = vnode; return rawVNode; } @@ -2077,6 +2069,7 @@ function matches(pattern, name) { } else if (shared.isString(pattern)) { return pattern.split(",").includes(name); } else if (shared.isRegExp(pattern)) { + pattern.lastIndex = 0; return pattern.test(name); } return false; @@ -2133,13 +2126,10 @@ function injectHook(type, hook, target = currentInstance, prepend = false) { if (target) { const hooks = target[type] || (target[type] = []); const wrappedHook = hook.__weh || (hook.__weh = (...args) => { - if (target.isUnmounted) { - return; - } reactivity.pauseTracking(); - setCurrentInstance(target); + const reset = setCurrentInstance(target); const res = callWithAsyncErrorHandling(hook, target, type, args); - unsetCurrentInstance(); + reset(); reactivity.resetTracking(); return res; }); @@ -2151,34 +2141,94 @@ function injectHook(type, hook, target = currentInstance, prepend = false) { return wrappedHook; } } -const createHook = (lifecycle) => (hook, target = currentInstance) => ( - // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) - (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) -); +const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; const onBeforeMount = createHook("bm"); const onMounted = createHook("m"); -const onBeforeUpdate = createHook("bu"); +const onBeforeUpdate = createHook( + "bu" +); const onUpdated = createHook("u"); -const onBeforeUnmount = createHook("bum"); +const onBeforeUnmount = createHook( + "bum" +); const onUnmounted = createHook("um"); -const onServerPrefetch = createHook("sp"); -const onRenderTriggered = createHook( - "rtg" -); -const onRenderTracked = createHook( - "rtc" +const onServerPrefetch = createHook( + "sp" ); +const onRenderTriggered = createHook("rtg"); +const onRenderTracked = createHook("rtc"); function onErrorCaptured(hook, target = currentInstance) { injectHook("ec", hook, target); } +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (shared.isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + return res; + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); +} + function renderList(source, renderItem, cache, index) { let ret; const cached = cache && cache[index]; - if (shared.isArray(source) || shared.isString(source)) { + const sourceIsArray = shared.isArray(source); + if (sourceIsArray || shared.isString(source)) { + const sourceIsReactiveArray = sourceIsArray && reactivity.isReactive(source); + let needsWrap = false; + if (sourceIsReactiveArray) { + needsWrap = !reactivity.isShallow(source); + source = reactivity.shallowReadArray(source); + } ret = new Array(source.length); for (let i = 0, l = source.length; i < l; i++) { - ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + ret[i] = renderItem( + needsWrap ? reactivity.toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); } } else if (typeof source === "number") { ret = new Array(source); @@ -2218,8 +2268,7 @@ function createSlots(slots, dynamicSlots) { } else if (slot) { slots[slot.name] = slot.key ? (...args) => { const res = slot.fn(...args); - if (res) - res.key = slot.key; + if (res) res.key = slot.key; return res; } : slot.fn; } @@ -2228,10 +2277,14 @@ function createSlots(slots, dynamicSlots) { } function renderSlot(slots, name, props = {}, fallback, noSlotted) { - if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { - if (name !== "default") - props.name = name; - return createVNode("slot", props, fallback && fallback()); + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + 64 + ); } let slot = slots[name]; if (slot && slot._c) { @@ -2239,12 +2292,14 @@ function renderSlot(slots, name, props = {}, fallback, noSlotted) { } openBlock(); const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; const rendered = createBlock( Fragment, { - key: props.key || // slot content array of a dynamic conditional slot may have a branch - // key attached in the `createSlots` helper, respect that - validSlotContent && validSlotContent.key || `_${name}` + key: (slotKey && !shared.isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 ? 64 : -2 @@ -2259,10 +2314,8 @@ function renderSlot(slots, name, props = {}, fallback, noSlotted) { } function ensureValidVNode(vnodes) { return vnodes.some((child) => { - if (!isVNode(child)) - return true; - if (child.type === Comment) - return false; + if (!isVNode(child)) return true; + if (child.type === Comment) return false; if (child.type === Fragment && !ensureValidVNode(child.children)) return false; return true; @@ -2278,10 +2331,8 @@ function toHandlers(obj, preserveCaseIfNecessary) { } const getPublicInstance = (i) => { - if (!i) - return null; - if (isStatefulComponent(i)) - return getExposeProxy(i) || i.proxy; + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); return getPublicInstance(i.parent); }; const publicPropertiesMap = ( @@ -2297,9 +2348,12 @@ const publicPropertiesMap = ( $refs: (i) => i.refs, $parent: (i) => getPublicInstance(i.parent), $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, $emit: (i) => i.emit, $options: (i) => resolveMergedOptions(i) , - $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)), + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), $watch: (i) => instanceWatch.bind(i) }) @@ -2307,6 +2361,9 @@ const publicPropertiesMap = ( const hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key); const PublicInstanceProxyHandlers = { get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } const { ctx, setupState, data, props, accessCache, type, appContext } = instance; let normalizedProps; if (key[0] !== "$") { @@ -2346,7 +2403,7 @@ const PublicInstanceProxyHandlers = { let cssModule, globalProperties; if (publicGetter) { if (key === "$attrs") { - reactivity.track(instance, "get", key); + reactivity.track(instance.attrs, "get", ""); } return publicGetter(instance); } else if ( @@ -2401,22 +2458,18 @@ const PublicInstanceProxyHandlers = { return Reflect.defineProperty(target, key, descriptor); } }; -const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend( - {}, - PublicInstanceProxyHandlers, - { - get(target, key) { - if (key === Symbol.unscopables) { - return; - } - return PublicInstanceProxyHandlers.get(target, key, target); - }, - has(_, key) { - const has = key[0] !== "_" && !shared.isGloballyAllowed(key); - return has; +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + if (key === Symbol.unscopables) { + return; } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !shared.isGloballyAllowed(key); + return has; } -); +}); function defineProps() { return null; @@ -2442,32 +2495,6 @@ function useSlots() { function useAttrs() { return getContext().attrs; } -function useModel(props, name, options) { - const i = getCurrentInstance(); - if (options && options.local) { - const proxy = reactivity.ref(props[name]); - watch( - () => props[name], - (v) => proxy.value = v - ); - watch(proxy, (value) => { - if (value !== props[name]) { - i.emit(`update:${name}`, value); - } - }); - return proxy; - } else { - return { - __v_isRef: true, - get value() { - return props[name]; - }, - set value(value) { - i.emit(`update:${name}`, value); - } - }; - } -} function getContext() { const i = getCurrentInstance(); return i.setupContext || (i.setupContext = createSetupContext(i)); @@ -2481,8 +2508,7 @@ function normalizePropsOrEmits(props) { function mergeDefaults(raw, defaults) { const props = normalizePropsOrEmits(raw); for (const key in defaults) { - if (key.startsWith("__skip")) - continue; + if (key.startsWith("__skip")) continue; let opt = props[key]; if (opt) { if (shared.isArray(opt) || shared.isFunction(opt)) { @@ -2500,10 +2526,8 @@ function mergeDefaults(raw, defaults) { return props; } function mergeModels(a, b) { - if (!a || !b) - return a || b; - if (shared.isArray(a) && shared.isArray(b)) - return a.concat(b); + if (!a || !b) return a || b; + if (shared.isArray(a) && shared.isArray(b)) return a.concat(b); return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); } function createPropsRestProxy(props, excludedKeys) { @@ -2663,10 +2687,11 @@ function applyOptions(instance) { if (inheritAttrs != null) { instance.inheritAttrs = inheritAttrs; } - if (components) - instance.components = components; - if (directives) - instance.directives = directives; + if (components) instance.components = components; + if (directives) instance.directives = directives; + if (serverPrefetch) { + markAsyncBoundary(instance); + } } function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) { if (shared.isArray(injectOptions)) { @@ -2681,7 +2706,6 @@ function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared opt.from || key, opt.default, true - /* treat default function as factory */ ); } else { injected = inject(opt.from || key); @@ -2709,14 +2733,18 @@ function callHook(hook, instance, type) { ); } function createWatcher(raw, ctx, publicThis, key) { - const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; if (shared.isString(raw)) { const handler = ctx[raw]; if (shared.isFunction(handler)) { - watch(getter, handler); + { + watch(getter, handler); + } } } else if (shared.isFunction(raw)) { - watch(getter, raw.bind(publicThis)); + { + watch(getter, raw.bind(publicThis)); + } } else if (shared.isObject(raw)) { if (shared.isArray(raw)) { raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); @@ -2855,10 +2883,8 @@ function mergeEmitsOrPropsOptions(to, from) { } } function mergeWatchOptions(to, from) { - if (!to) - return from; - if (!from) - return to; + if (!to) return from; + if (!from) return to; const merged = shared.extend(/* @__PURE__ */ Object.create(null), to); for (const key in from) { merged[key] = mergeAsArray(to[key], from[key]); @@ -2898,6 +2924,7 @@ function createAppAPI(render, hydrate) { } const context = createAppContext(); const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; let isMounted = false; const app = context.app = { _uid: uid$1++, @@ -2944,23 +2971,36 @@ function createAppAPI(render, hydrate) { context.directives[name] = directive; return app; }, - mount(rootContainer, isHydrate, isSVG) { + mount(rootContainer, isHydrate, namespace) { if (!isMounted) { - const vnode = createVNode(rootComponent, rootProps); + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } if (isHydrate && hydrate) { hydrate(vnode, rootContainer); } else { - render(vnode, rootContainer, isSVG); + render(vnode, rootContainer, namespace); } isMounted = true; app._container = rootContainer; rootContainer.__vue_app__ = app; - return getExposeProxy(vnode.component) || vnode.component.proxy; + return getComponentPublicInstance(vnode.component); } }, + onUnmount(cleanupFn) { + pluginCleanupFns.push(cleanupFn); + }, unmount() { if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); render(null, app._container); delete app._container.__vue_app__; } @@ -2970,11 +3010,12 @@ function createAppAPI(render, hydrate) { return app; }, runWithContext(fn) { + const lastApp = currentApp; currentApp = app; try { return fn(); } finally { - currentApp = null; + currentApp = lastApp; } } }; @@ -2996,7 +3037,7 @@ function provide(key, value) { function inject(key, defaultValue, treatDefaultAsFactory = false) { const instance = currentInstance || currentRenderingInstance; if (instance || currentApp) { - const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides; + const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; if (provides && key in provides) { return provides[key]; } else if (arguments.length > 1) { @@ -3008,10 +3049,13 @@ function hasInjectionContext() { return !!(currentInstance || currentRenderingInstance || currentApp); } +const internalObjectProto = {}; +const createInternalObject = () => Object.create(internalObjectProto); +const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + function initProps(instance, rawProps, isStateful, isSSR = false) { const props = {}; - const attrs = {}; - shared.def(attrs, InternalObjectKey, 1); + const attrs = createInternalObject(); instance.propsDefaults = /* @__PURE__ */ Object.create(null); setFullProps(instance, rawProps, props, attrs); for (const key in instance.propsOptions[0]) { @@ -3068,7 +3112,6 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { value, instance, false - /* isAbsent */ ); } } else { @@ -3100,7 +3143,6 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { void 0, instance, true - /* isAbsent */ ); } } else { @@ -3118,7 +3160,7 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { } } if (hasAttrsChanged) { - reactivity.trigger(instance, "set", "$attrs"); + reactivity.trigger(instance.attrs, "set", ""); } } function setFullProps(instance, rawProps, props, attrs) { @@ -3174,16 +3216,19 @@ function resolvePropValue(options, props, key, value, instance, isAbsent) { if (key in propsDefaults) { value = propsDefaults[key]; } else { - setCurrentInstance(instance); + const reset = setCurrentInstance(instance); value = propsDefaults[key] = defaultValue.call( null, props ); - unsetCurrentInstance(); + reset(); } } else { value = defaultValue; } + if (instance.ce) { + instance.ce._setProp(key, value); + } } if (opt[0 /* shouldCast */]) { if (isAbsent && !hasDefault) { @@ -3195,8 +3240,9 @@ function resolvePropValue(options, props, key, value, instance, isAbsent) { } return value; } +const mixinPropsCache = /* @__PURE__ */ new WeakMap(); function normalizePropsOptions(comp, appContext, asMixin = false) { - const cache = appContext.propsCache; + const cache = asMixin ? mixinPropsCache : appContext.propsCache; const cached = cache.get(comp); if (cached) { return cached; @@ -3210,8 +3256,7 @@ function normalizePropsOptions(comp, appContext, asMixin = false) { hasExtends = true; const [props, keys] = normalizePropsOptions(raw2, appContext, true); shared.extend(normalized, props); - if (keys) - needCastKeys.push(...keys); + if (keys) needCastKeys.push(...keys); }; if (!asMixin && appContext.mixins.length) { appContext.mixins.forEach(extendProps); @@ -3242,14 +3287,27 @@ function normalizePropsOptions(comp, appContext, asMixin = false) { if (validatePropName(normalizedKey)) { const opt = raw[key]; const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt); - if (prop) { - const booleanIndex = getTypeIndex(Boolean, prop.type); - const stringIndex = getTypeIndex(String, prop.type); - prop[0 /* shouldCast */] = booleanIndex > -1; - prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex; - if (booleanIndex > -1 || shared.hasOwn(prop, "default")) { - needCastKeys.push(normalizedKey); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (shared.isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = shared.isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } } + } else { + shouldCast = shared.isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || shared.hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); } } } @@ -3261,26 +3319,11 @@ function normalizePropsOptions(comp, appContext, asMixin = false) { return res; } function validatePropName(key) { - if (key[0] !== "$") { + if (key[0] !== "$" && !shared.isReservedProp(key)) { return true; } return false; } -function getType(ctor) { - const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/); - return match ? match[2] : ctor === null ? "null" : ""; -} -function isSameType(a, b) { - return getType(a) === getType(b); -} -function getTypeIndex(type, expectedTypes) { - if (shared.isArray(expectedTypes)) { - return expectedTypes.findIndex((t) => isSameType(t, type)); - } else if (shared.isFunction(expectedTypes)) { - return isSameType(expectedTypes, type) ? 0 : -1; - } - return -1; -} const isInternalKey = (key) => key[0] === "_" || key === "$stable"; const normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; @@ -3298,8 +3341,7 @@ const normalizeSlot = (key, rawSlot, ctx) => { const normalizeObjectSlots = (rawSlots, slots, instance) => { const ctx = rawSlots._ctx; for (const key in rawSlots) { - if (isInternalKey(key)) - continue; + if (isInternalKey(key)) continue; const value = rawSlots[key]; if (shared.isFunction(value)) { slots[key] = normalizeSlot(key, value, ctx); @@ -3313,24 +3355,28 @@ const normalizeVNodeSlots = (instance, children) => { const normalized = normalizeSlotValue(children); instance.slots.default = () => normalized; }; -const initSlots = (instance, children) => { +const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || key !== "_") { + slots[key] = children[key]; + } + } +}; +const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); if (instance.vnode.shapeFlag & 32) { const type = children._; if (type) { - instance.slots = reactivity.toRaw(children); - shared.def(children, "_", type); + assignSlots(slots, children, optimized); + if (optimized) { + shared.def(slots, "_", type, true); + } } else { - normalizeObjectSlots( - children, - instance.slots = {}); - } - } else { - instance.slots = {}; - if (children) { - normalizeVNodeSlots(instance, children); + normalizeObjectSlots(children, slots); } + } else if (children) { + normalizeVNodeSlots(instance, children); } - shared.def(instance.slots, InternalObjectKey, 1); }; const updateSlots = (instance, children, optimized) => { const { vnode, slots } = instance; @@ -3342,10 +3388,7 @@ const updateSlots = (instance, children, optimized) => { if (optimized && type === 1) { needDeletionCheck = false; } else { - shared.extend(slots, children); - if (!optimized && type === 1) { - delete slots._; - } + assignSlots(slots, children, optimized); } } else { needDeletionCheck = !children.$stable; @@ -3365,488 +3408,6 @@ const updateSlots = (instance, children, optimized) => { } }; -function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { - if (shared.isArray(rawRef)) { - rawRef.forEach( - (r, i) => setRef( - r, - oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), - parentSuspense, - vnode, - isUnmount - ) - ); - return; - } - if (isAsyncWrapper(vnode) && !isUnmount) { - return; - } - const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el; - const value = isUnmount ? null : refValue; - const { i: owner, r: ref } = rawRef; - const oldRef = oldRawRef && oldRawRef.r; - const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; - const setupState = owner.setupState; - if (oldRef != null && oldRef !== ref) { - if (shared.isString(oldRef)) { - refs[oldRef] = null; - if (shared.hasOwn(setupState, oldRef)) { - setupState[oldRef] = null; - } - } else if (reactivity.isRef(oldRef)) { - oldRef.value = null; - } - } - if (shared.isFunction(ref)) { - callWithErrorHandling(ref, owner, 12, [value, refs]); - } else { - const _isString = shared.isString(ref); - const _isRef = reactivity.isRef(ref); - if (_isString || _isRef) { - const doSet = () => { - if (rawRef.f) { - const existing = _isString ? shared.hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value; - if (isUnmount) { - shared.isArray(existing) && shared.remove(existing, refValue); - } else { - if (!shared.isArray(existing)) { - if (_isString) { - refs[ref] = [refValue]; - if (shared.hasOwn(setupState, ref)) { - setupState[ref] = refs[ref]; - } - } else { - ref.value = [refValue]; - if (rawRef.k) - refs[rawRef.k] = ref.value; - } - } else if (!existing.includes(refValue)) { - existing.push(refValue); - } - } - } else if (_isString) { - refs[ref] = value; - if (shared.hasOwn(setupState, ref)) { - setupState[ref] = value; - } - } else if (_isRef) { - ref.value = value; - if (rawRef.k) - refs[rawRef.k] = value; - } else ; - }; - if (value) { - doSet.id = -1; - queuePostRenderEffect(doSet, parentSuspense); - } else { - doSet(); - } - } - } -} - -let hasMismatch = false; -const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== "foreignObject"; -const isComment = (node) => node.nodeType === 8 /* COMMENT */; -function createHydrationFunctions(rendererInternals) { - const { - mt: mountComponent, - p: patch, - o: { - patchProp, - createText, - nextSibling, - parentNode, - remove, - insert, - createComment - } - } = rendererInternals; - const hydrate = (vnode, container) => { - if (!container.hasChildNodes()) { - patch(null, vnode, container); - flushPostFlushCbs(); - container._vnode = vnode; - return; - } - hasMismatch = false; - hydrateNode(container.firstChild, vnode, null, null, null); - flushPostFlushCbs(); - container._vnode = vnode; - if (hasMismatch && true) { - console.error(`Hydration completed but contains mismatches.`); - } - }; - const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { - const isFragmentStart = isComment(node) && node.data === "["; - const onMismatch = () => handleMismatch( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - isFragmentStart - ); - const { type, ref, shapeFlag, patchFlag } = vnode; - let domType = node.nodeType; - vnode.el = node; - if (patchFlag === -2) { - optimized = false; - vnode.dynamicChildren = null; - } - let nextNode = null; - switch (type) { - case Text: - if (domType !== 3 /* TEXT */) { - if (vnode.children === "") { - insert(vnode.el = createText(""), parentNode(node), node); - nextNode = node; - } else { - nextNode = onMismatch(); - } - } else { - if (node.data !== vnode.children) { - hasMismatch = true; - node.data = vnode.children; - } - nextNode = nextSibling(node); - } - break; - case Comment: - if (isTemplateNode(node)) { - nextNode = nextSibling(node); - replaceNode( - vnode.el = node.content.firstChild, - node, - parentComponent - ); - } else if (domType !== 8 /* COMMENT */ || isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = nextSibling(node); - } - break; - case Static: - if (isFragmentStart) { - node = nextSibling(node); - domType = node.nodeType; - } - if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) { - nextNode = node; - const needToAdoptContent = !vnode.children.length; - for (let i = 0; i < vnode.staticCount; i++) { - if (needToAdoptContent) - vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data; - if (i === vnode.staticCount - 1) { - vnode.anchor = nextNode; - } - nextNode = nextSibling(nextNode); - } - return isFragmentStart ? nextSibling(nextNode) : nextNode; - } else { - onMismatch(); - } - break; - case Fragment: - if (!isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = hydrateFragment( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - } - break; - default: - if (shapeFlag & 1) { - if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { - nextNode = onMismatch(); - } else { - nextNode = hydrateElement( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - } - } else if (shapeFlag & 6) { - vnode.slotScopeIds = slotScopeIds; - const container = parentNode(node); - if (isFragmentStart) { - nextNode = locateClosingAnchor(node); - } else if (isComment(node) && node.data === "teleport start") { - nextNode = locateClosingAnchor(node, node.data, "teleport end"); - } else { - nextNode = nextSibling(node); - } - mountComponent( - vnode, - container, - null, - parentComponent, - parentSuspense, - isSVGContainer(container), - optimized - ); - if (isAsyncWrapper(vnode)) { - let subTree; - if (isFragmentStart) { - subTree = createVNode(Fragment); - subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; - } else { - subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); - } - subTree.el = node; - vnode.component.subTree = subTree; - } - } else if (shapeFlag & 64) { - if (domType !== 8 /* COMMENT */) { - nextNode = onMismatch(); - } else { - nextNode = vnode.type.hydrate( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized, - rendererInternals, - hydrateChildren - ); - } - } else if (shapeFlag & 128) { - nextNode = vnode.type.hydrate( - node, - vnode, - parentComponent, - parentSuspense, - isSVGContainer(parentNode(node)), - slotScopeIds, - optimized, - rendererInternals, - hydrateNode - ); - } else ; - } - if (ref != null) { - setRef(ref, null, parentSuspense, vnode); - } - return nextNode; - }; - const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { - optimized = optimized || !!vnode.dynamicChildren; - const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; - const forcePatch = type === "input" || type === "option"; - if (forcePatch || patchFlag !== -1) { - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "created"); - } - if (props) { - if (forcePatch || !optimized || patchFlag & (16 | 32)) { - for (const key in props) { - if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers - key[0] === ".") { - patchProp( - el, - key, - null, - props[key], - false, - void 0, - parentComponent - ); - } - } - } else if (props.onClick) { - patchProp( - el, - "onClick", - null, - props.onClick, - false, - void 0, - parentComponent - ); - } - } - let vnodeHooks; - if (vnodeHooks = props && props.onVnodeBeforeMount) { - invokeVNodeHook(vnodeHooks, parentComponent, vnode); - } - let needCallTransitionHooks = false; - if (isTemplateNode(el)) { - needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; - const content = el.content.firstChild; - if (needCallTransitionHooks) { - transition.beforeEnter(content); - } - replaceNode(content, el, parentComponent); - vnode.el = el = content; - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); - } - if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { - queueEffectWithSuspense(() => { - vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); - needCallTransitionHooks && transition.enter(el); - dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); - }, parentSuspense); - } - if (shapeFlag & 16 && // skip if element has innerHTML / textContent - !(props && (props.innerHTML || props.textContent))) { - let next = hydrateChildren( - el.firstChild, - vnode, - el, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - while (next) { - hasMismatch = true; - const cur = next; - next = next.nextSibling; - remove(cur); - } - } else if (shapeFlag & 8) { - if (el.textContent !== vnode.children) { - hasMismatch = true; - el.textContent = vnode.children; - } - } - } - return el.nextSibling; - }; - const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { - optimized = optimized || !!parentVNode.dynamicChildren; - const children = parentVNode.children; - const l = children.length; - for (let i = 0; i < l; i++) { - const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); - if (node) { - node = hydrateNode( - node, - vnode, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - } else if (vnode.type === Text && !vnode.children) { - continue; - } else { - hasMismatch = true; - patch( - null, - vnode, - container, - null, - parentComponent, - parentSuspense, - isSVGContainer(container), - slotScopeIds - ); - } - } - return node; - }; - const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { - const { slotScopeIds: fragmentSlotScopeIds } = vnode; - if (fragmentSlotScopeIds) { - slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; - } - const container = parentNode(node); - const next = hydrateChildren( - nextSibling(node), - vnode, - container, - parentComponent, - parentSuspense, - slotScopeIds, - optimized - ); - if (next && isComment(next) && next.data === "]") { - return nextSibling(vnode.anchor = next); - } else { - hasMismatch = true; - insert(vnode.anchor = createComment(`]`), container, next); - return next; - } - }; - const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { - hasMismatch = true; - vnode.el = null; - if (isFragment) { - const end = locateClosingAnchor(node); - while (true) { - const next2 = nextSibling(node); - if (next2 && next2 !== end) { - remove(next2); - } else { - break; - } - } - } - const next = nextSibling(node); - const container = parentNode(node); - remove(node); - patch( - null, - vnode, - container, - next, - parentComponent, - parentSuspense, - isSVGContainer(container), - slotScopeIds - ); - return next; - }; - const locateClosingAnchor = (node, open = "[", close = "]") => { - let match = 0; - while (node) { - node = nextSibling(node); - if (node && isComment(node)) { - if (node.data === open) - match++; - if (node.data === close) { - if (match === 0) { - return nextSibling(node); - } else { - match--; - } - } - } - } - return node; - }; - const replaceNode = (newNode, oldNode, parentComponent) => { - const parentNode2 = oldNode.parentNode; - if (parentNode2) { - parentNode2.replaceChild(newNode, oldNode); - } - let parent = parentComponent; - while (parent) { - if (parent.vnode.el === oldNode) { - parent.vnode.el = parent.subTree.el = newNode; - } - parent = parent.parent; - } - }; - const isTemplateNode = (node) => { - return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === "template"; - }; - return [hydrate, hydrateNode]; -} - const queuePostRenderEffect = queueEffectWithSuspense ; function createRenderer(options) { return baseCreateRenderer(options); @@ -3871,7 +3432,7 @@ function baseCreateRenderer(options, createHydrationFns) { setScopeId: hostSetScopeId = shared.NOOP, insertStaticContent: hostInsertStaticContent } = options; - const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!n2.dynamicChildren) => { + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => { if (n1 === n2) { return; } @@ -3894,7 +3455,7 @@ function baseCreateRenderer(options, createHydrationFns) { break; case Static: if (n1 == null) { - mountStaticNode(n2, container, anchor, isSVG); + mountStaticNode(n2, container, anchor, namespace); } break; case Fragment: @@ -3905,7 +3466,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -3919,7 +3480,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -3931,7 +3492,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -3943,7 +3504,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized, internals @@ -3956,7 +3517,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized, internals @@ -3992,12 +3553,12 @@ function baseCreateRenderer(options, createHydrationFns) { n2.el = n1.el; } }; - const mountStaticNode = (n2, container, anchor, isSVG) => { + const mountStaticNode = (n2, container, anchor, namespace) => { [n2.el, n2.anchor] = hostInsertStaticContent( n2.children, container, anchor, - isSVG, + namespace, n2.el, n2.anchor ); @@ -4020,8 +3581,12 @@ function baseCreateRenderer(options, createHydrationFns) { } hostRemove(anchor); }; - const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { - isSVG = isSVG || n2.type === "svg"; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } if (n1 == null) { mountElement( n2, @@ -4029,7 +3594,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4039,19 +3604,19 @@ function baseCreateRenderer(options, createHydrationFns) { n2, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); } }; - const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { let el; let vnodeHook; - const { type, props, shapeFlag, transition, dirs } = vnode; + const { props, shapeFlag, transition, dirs } = vnode; el = vnode.el = hostCreateElement( vnode.type, - isSVG, + namespace, props && props.is, props ); @@ -4064,7 +3629,7 @@ function baseCreateRenderer(options, createHydrationFns) { null, parentComponent, parentSuspense, - isSVG && type !== "foreignObject", + resolveChildrenNamespace(vnode, namespace), slotScopeIds, optimized ); @@ -4076,21 +3641,11 @@ function baseCreateRenderer(options, createHydrationFns) { if (props) { for (const key in props) { if (key !== "value" && !shared.isReservedProp(key)) { - hostPatchProp( - el, - key, - null, - props[key], - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ); + hostPatchProp(el, key, null, props[key], namespace, parentComponent); } } if ("value" in props) { - hostPatchProp(el, "value", null, props.value); + hostPatchProp(el, "value", null, props.value, namespace); } if (vnodeHook = props.onVnodeBeforeMount) { invokeVNodeHook(vnodeHook, parentComponent, vnode); @@ -4123,7 +3678,7 @@ function baseCreateRenderer(options, createHydrationFns) { } if (parentComponent) { let subTree = parentComponent.subTree; - if (vnode === subTree) { + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { const parentVNode = parentComponent.vnode; setScopeId( el, @@ -4135,7 +3690,7 @@ function baseCreateRenderer(options, createHydrationFns) { } } }; - const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => { + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { for (let i = start; i < children.length; i++) { const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); patch( @@ -4145,13 +3700,13 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); } }; - const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { const el = n2.el = n1.el; let { patchFlag, dynamicChildren, dirs } = n2; patchFlag |= n1.patchFlag & 16; @@ -4166,7 +3721,9 @@ function baseCreateRenderer(options, createHydrationFns) { invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); } parentComponent && toggleRecurse(parentComponent, true); - const areChildrenSVG = isSVG && n2.type !== "foreignObject"; + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } if (dynamicChildren) { patchBlockChildren( n1.dynamicChildren, @@ -4174,7 +3731,7 @@ function baseCreateRenderer(options, createHydrationFns) { el, parentComponent, parentSuspense, - areChildrenSVG, + resolveChildrenNamespace(n2, namespace), slotScopeIds ); } else if (!optimized) { @@ -4185,30 +3742,22 @@ function baseCreateRenderer(options, createHydrationFns) { null, parentComponent, parentSuspense, - areChildrenSVG, + resolveChildrenNamespace(n2, namespace), slotScopeIds, false ); } if (patchFlag > 0) { if (patchFlag & 16) { - patchProps( - el, - n2, - oldProps, - newProps, - parentComponent, - parentSuspense, - isSVG - ); + patchProps(el, oldProps, newProps, parentComponent, namespace); } else { if (patchFlag & 2) { if (oldProps.class !== newProps.class) { - hostPatchProp(el, "class", null, newProps.class, isSVG); + hostPatchProp(el, "class", null, newProps.class, namespace); } } if (patchFlag & 4) { - hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG); + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); } if (patchFlag & 8) { const propsToUpdate = n2.dynamicProps; @@ -4217,17 +3766,7 @@ function baseCreateRenderer(options, createHydrationFns) { const prev = oldProps[key]; const next = newProps[key]; if (next !== prev || key === "value") { - hostPatchProp( - el, - key, - prev, - next, - isSVG, - n1.children, - parentComponent, - parentSuspense, - unmountChildren - ); + hostPatchProp(el, key, prev, next, namespace, parentComponent); } } } @@ -4238,15 +3777,7 @@ function baseCreateRenderer(options, createHydrationFns) { } } } else if (!optimized && dynamicChildren == null) { - patchProps( - el, - n2, - oldProps, - newProps, - parentComponent, - parentSuspense, - isSVG - ); + patchProps(el, oldProps, newProps, parentComponent, namespace); } if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { queuePostRenderEffect(() => { @@ -4255,7 +3786,7 @@ function baseCreateRenderer(options, createHydrationFns) { }, parentSuspense); } }; - const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => { + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { for (let i = 0; i < newChildren.length; i++) { const oldVNode = oldChildren[i]; const newVNode = newChildren[i]; @@ -4280,13 +3811,13 @@ function baseCreateRenderer(options, createHydrationFns) { null, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, true ); } }; - const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => { + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { if (oldProps !== newProps) { if (oldProps !== shared.EMPTY_OBJ) { for (const key in oldProps) { @@ -4296,40 +3827,26 @@ function baseCreateRenderer(options, createHydrationFns) { key, oldProps[key], null, - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren + namespace, + parentComponent ); } } } for (const key in newProps) { - if (shared.isReservedProp(key)) - continue; + if (shared.isReservedProp(key)) continue; const next = newProps[key]; const prev = oldProps[key]; if (next !== prev && key !== "value") { - hostPatchProp( - el, - key, - prev, - next, - isSVG, - vnode.children, - parentComponent, - parentSuspense, - unmountChildren - ); + hostPatchProp(el, key, prev, next, namespace, parentComponent); } } if ("value" in newProps) { - hostPatchProp(el, "value", oldProps.value, newProps.value); + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); } } }; - const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; @@ -4340,12 +3857,16 @@ function baseCreateRenderer(options, createHydrationFns) { hostInsert(fragmentStartAnchor, container, anchor); hostInsert(fragmentEndAnchor, container, anchor); mountChildren( - n2.children, + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], container, fragmentEndAnchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4359,7 +3880,7 @@ function baseCreateRenderer(options, createHydrationFns) { container, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds ); if ( @@ -4384,14 +3905,14 @@ function baseCreateRenderer(options, createHydrationFns) { fragmentEndAnchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); } } }; - const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { n2.slotScopeIds = slotScopeIds; if (n1 == null) { if (n2.shapeFlag & 512) { @@ -4399,7 +3920,7 @@ function baseCreateRenderer(options, createHydrationFns) { n2, container, anchor, - isSVG, + namespace, optimized ); } else { @@ -4409,7 +3930,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, optimized ); } @@ -4417,7 +3938,7 @@ function baseCreateRenderer(options, createHydrationFns) { updateComponent(n1, n2, optimized); } }; - const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => { + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { const instance = (initialVNode.component = createComponentInstance( initialVNode, parentComponent, @@ -4427,25 +3948,25 @@ function baseCreateRenderer(options, createHydrationFns) { instance.ctx.renderer = internals; } { - setupComponent(instance); + setupComponent(instance, false, optimized); } if (instance.asyncDep) { - parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect); + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); if (!initialVNode.el) { const placeholder = instance.subTree = createVNode(Comment); processCommentNode(null, placeholder, container, anchor); } - return; + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); } - setupRenderEffect( - instance, - initialVNode, - container, - anchor, - parentSuspense, - isSVG, - optimized - ); }; const updateComponent = (n1, n2, optimized) => { const instance = n2.component = n1.component; @@ -4455,7 +3976,6 @@ function baseCreateRenderer(options, createHydrationFns) { return; } else { instance.next = n2; - invalidateJob(instance.update); instance.update(); } } else { @@ -4463,12 +3983,12 @@ function baseCreateRenderer(options, createHydrationFns) { instance.vnode = n2; } }; - const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => { + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { const componentUpdateFn = () => { if (!instance.isMounted) { let vnodeHook; const { el, props } = initialVNode; - const { bm, m, parent } = instance; + const { bm, m, parent, root, type } = instance; const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); toggleRecurse(instance, false); if (bm) { @@ -4489,18 +4009,19 @@ function baseCreateRenderer(options, createHydrationFns) { null ); }; - if (isAsyncWrapperVNode) { - initialVNode.type.__asyncLoader().then( - // note: we are moving the render call into an async callback, - // which means it won't track dependencies - but it's ok because - // a server-rendered async wrapper is already in resolved state - // and it will never need to change. - () => !instance.isUnmounted && hydrateSubTree() + if (isAsyncWrapperVNode && type.__asyncHydrate) { + type.__asyncHydrate( + el, + instance, + hydrateSubTree ); } else { hydrateSubTree(); } } else { + if (root.ce) { + root.ce._injectChildStyle(type); + } const subTree = instance.subTree = renderComponentRoot(instance); patch( null, @@ -4509,7 +4030,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, instance, parentSuspense, - isSVG + namespace ); initialVNode.el = subTree.el; } @@ -4530,6 +4051,21 @@ function baseCreateRenderer(options, createHydrationFns) { initialVNode = container = anchor = null; } else { let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + if (!instance.isUnmounted) { + componentUpdateFn(); + } + }); + return; + } + } let originNext = next; let vnodeHook; toggleRecurse(instance, false); @@ -4558,7 +4094,7 @@ function baseCreateRenderer(options, createHydrationFns) { getNextHostNode(prevTree), instance, parentSuspense, - isSVG + namespace ); next.el = nextTree.el; if (originNext === null) { @@ -4575,14 +4111,14 @@ function baseCreateRenderer(options, createHydrationFns) { } } }; - const effect = instance.effect = new reactivity.ReactiveEffect( - componentUpdateFn, - () => queueJob(update), - instance.scope - // track it in component's effect scope - ); - const update = instance.update = () => effect.run(); - update.id = instance.uid; + instance.scope.on(); + const effect = instance.effect = new reactivity.ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); toggleRecurse(instance, true); update(); }; @@ -4594,10 +4130,10 @@ function baseCreateRenderer(options, createHydrationFns) { updateProps(instance, nextVNode.props, prevProps, optimized); updateSlots(instance, nextVNode.children, optimized); reactivity.pauseTracking(); - flushPreFlushCbs(); + flushPreFlushCbs(instance); reactivity.resetTracking(); }; - const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => { + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { const c1 = n1 && n1.children; const prevShapeFlag = n1 ? n1.shapeFlag : 0; const c2 = n2.children; @@ -4611,7 +4147,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4624,7 +4160,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4648,7 +4184,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4666,7 +4202,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4674,7 +4210,7 @@ function baseCreateRenderer(options, createHydrationFns) { } } }; - const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { c1 = c1 || shared.EMPTY_ARR; c2 = c2 || shared.EMPTY_ARR; const oldLength = c1.length; @@ -4690,7 +4226,7 @@ function baseCreateRenderer(options, createHydrationFns) { null, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4711,14 +4247,14 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized, commonLength ); } }; - const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { let i = 0; const l2 = c2.length; let e1 = c1.length - 1; @@ -4734,7 +4270,7 @@ function baseCreateRenderer(options, createHydrationFns) { null, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4754,7 +4290,7 @@ function baseCreateRenderer(options, createHydrationFns) { null, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4776,7 +4312,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4804,8 +4340,7 @@ function baseCreateRenderer(options, createHydrationFns) { let moved = false; let maxNewIndexSoFar = 0; const newIndexToOldIndexMap = new Array(toBePatched); - for (i = 0; i < toBePatched; i++) - newIndexToOldIndexMap[i] = 0; + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; for (i = s1; i <= e1; i++) { const prevChild = c1[i]; if (patched >= toBePatched) { @@ -4839,7 +4374,7 @@ function baseCreateRenderer(options, createHydrationFns) { null, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4860,7 +4395,7 @@ function baseCreateRenderer(options, createHydrationFns) { anchor, parentComponent, parentSuspense, - isSVG, + namespace, slotScopeIds, optimized ); @@ -4934,11 +4469,18 @@ function baseCreateRenderer(options, createHydrationFns) { dynamicChildren, shapeFlag, patchFlag, - dirs + dirs, + cacheIndex } = vnode; + if (patchFlag === -2) { + optimized = false; + } if (ref != null) { setRef(ref, null, parentSuspense, vnode, true); } + if (cacheIndex != null) { + parentComponent.renderCache[cacheIndex] = void 0; + } if (shapeFlag & 256) { parentComponent.ctx.deactivate(vnode); return; @@ -4964,11 +4506,15 @@ function baseCreateRenderer(options, createHydrationFns) { vnode, parentComponent, parentSuspense, - optimized, internals, doRemove ); - } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { unmountChildren( dynamicChildren, @@ -5031,13 +4577,15 @@ function baseCreateRenderer(options, createHydrationFns) { hostRemove(end); }; const unmountComponent = (instance, parentSuspense, doRemove) => { - const { bum, scope, update, subTree, um } = instance; + const { bum, scope, job, subTree, um, m, a } = instance; + invalidateMount(m); + invalidateMount(a); if (bum) { shared.invokeArrayFns(bum); } scope.stop(); - if (update) { - update.active = false; + if (job) { + job.flags |= 8; unmount(subTree, instance, parentSuspense, doRemove); } if (um) { @@ -5065,19 +4613,34 @@ function baseCreateRenderer(options, createHydrationFns) { if (vnode.shapeFlag & 128) { return vnode.suspense.next(); } - return hostNextSibling(vnode.anchor || vnode.el); + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; }; - const render = (vnode, container, isSVG) => { + let isFlushing = false; + const render = (vnode, container, namespace) => { if (vnode == null) { if (container._vnode) { unmount(container._vnode, null, null, true); } } else { - patch(container._vnode || null, vnode, container, null, null, null, isSVG); + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); } - flushPreFlushCbs(); - flushPostFlushCbs(); container._vnode = vnode; + if (!isFlushing) { + isFlushing = true; + flushPreFlushCbs(); + flushPostFlushCbs(); + isFlushing = false; + } }; const internals = { p: patch, @@ -5104,8 +4667,17 @@ function baseCreateRenderer(options, createHydrationFns) { createApp: createAppAPI(render, hydrate) }; } -function toggleRecurse({ effect, update }, allowed) { - effect.allowRecurse = update.allowRecurse = allowed; +function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; +} +function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= ~32; + job.flags &= ~4; + } } function needTransition(parentSuspense, transition) { return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; @@ -5122,7 +4694,7 @@ function traverseStaticChildren(n1, n2, shallow = false) { c2 = ch2[i] = cloneIfMounted(ch2[i]); c2.el = c1.el; } - if (!shallow) + if (!shallow && c2.patchFlag !== -2) traverseStaticChildren(c1, c2); } if (c2.type === Text) { @@ -5171,247 +4743,1059 @@ function getSequence(arr) { } return result; } - -const isTeleport = (type) => type.__isTeleport; -const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); -const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; -const resolveTarget = (props, select) => { - const targetSelector = props && props.to; - if (shared.isString(targetSelector)) { - if (!select) { - return null; +function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; } else { - const target = select(targetSelector); - return target; + return locateNonHydratedAsyncRoot(subComponent); } - } else { - return targetSelector; + } +} +function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + return ctx; } }; -const TeleportImpl = { - name: "Teleport", - __isTeleport: true, - process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) { - const { - mc: mountChildren, - pc: patchChildren, - pbc: patchBlockChildren, - o: { insert, querySelector, createText, createComment } - } = internals; - const disabled = isTeleportDisabled(n2.props); - let { shapeFlag, children, dynamicChildren } = n2; - if (n1 == null) { - const placeholder = n2.el = createText(""); - const mainAnchor = n2.anchor = createText(""); - insert(placeholder, container, anchor); - insert(mainAnchor, container, anchor); - const target = n2.target = resolveTarget(n2.props, querySelector); - const targetAnchor = n2.targetAnchor = createText(""); - if (target) { - insert(targetAnchor, target); - isSVG = isSVG || isTargetSVG(target); + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "post" } + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "sync" } + ); +} +function watch(source, cb, options) { + return doWatch(source, cb, options); +} +function doWatch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + const baseWatchOptions = shared.extend({}, options); + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = shared.NOOP; + watchStopHandle.resume = shared.NOOP; + watchStopHandle.pause = shared.NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); } - const mount = (container2, anchor2) => { - if (shapeFlag & 16) { - mountChildren( - children, - container2, - anchor2, + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = reactivity.watch(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (shared.isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} + +function useModel(props, name, options = shared.EMPTY_OBJ) { + const i = getCurrentInstance(); + const camelizedName = shared.camelize(name); + const hyphenatedName = shared.hyphenate(name); + const modifiers = getModelModifiers(props, camelizedName); + const res = reactivity.customRef((track, trigger) => { + let localValue; + let prevSetValue = shared.EMPTY_OBJ; + let prevEmittedValue; + watchSyncEffect(() => { + const propValue = props[camelizedName]; + if (shared.hasChanged(localValue, propValue)) { + localValue = propValue; + trigger(); + } + }); + return { + get() { + track(); + return options.get ? options.get(localValue) : localValue; + }, + set(value) { + const emittedValue = options.set ? options.set(value) : value; + if (!shared.hasChanged(emittedValue, localValue) && !(prevSetValue !== shared.EMPTY_OBJ && shared.hasChanged(value, prevSetValue))) { + return; + } + const rawProps = i.vnode.props; + if (!(rawProps && // check if parent has passed v-model + (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) { + localValue = value; + trigger(); + } + i.emit(`update:${name}`, emittedValue); + if (shared.hasChanged(value, emittedValue) && shared.hasChanged(value, prevSetValue) && !shared.hasChanged(emittedValue, prevEmittedValue)) { + trigger(); + } + prevSetValue = value; + prevEmittedValue = emittedValue; + } + }; + }); + res[Symbol.iterator] = () => { + let i2 = 0; + return { + next() { + if (i2 < 2) { + return { value: i2++ ? modifiers || shared.EMPTY_OBJ : res, done: false }; + } else { + return { done: true }; + } + } + }; + }; + return res; +} +const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${shared.camelize(modelName)}Modifiers`] || props[`${shared.hyphenate(modelName)}Modifiers`]; +}; + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || shared.EMPTY_OBJ; + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = rawArgs.map(shared.looseToNumber); + } + } + let handlerName; + let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = shared.toHandlerKey(shared.camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + shared.extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (shared.isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + shared.extend(normalized, raw); + } + if (shared.isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !shared.isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); +} + +function markAttrsAccessed() { +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = false ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + false ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (false) ; + result = normalizeVNode( + render2.length > 1 ? render2( + false ? shallowReadonly(props) : props, + false ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + false ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(shared.isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } + } + } + if (vnode.dirs) { + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + setTransitionHooks(root, vnode.transition); + } + { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || shared.isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!shared.isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (shared.isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, parentComponent, - parentSuspense, - isSVG, + null, + // fallback tree will not have suspense context + namespace, slotScopeIds, optimized ); + setActiveBranch(suspense, newFallback); } - }; - if (disabled) { - mount(container, mainAnchor); - } else if (target) { - mount(target, targetAnchor); } } else { - n2.el = n1.el; - const mainAnchor = n2.anchor = n1.anchor; - const target = n2.target = n1.target; - const targetAnchor = n2.targetAnchor = n1.targetAnchor; - const wasDisabled = isTeleportDisabled(n1.props); - const currentContainer = wasDisabled ? container : target; - const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; - isSVG = isSVG || isTargetSVG(target); - if (dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - currentContainer, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds - ); - traverseStaticChildren(n1, n2, true); - } else if (!optimized) { - patchChildren( - n1, - n2, - currentContainer, - currentAnchor, - parentComponent, - parentSuspense, - isSVG, - slotScopeIds, - false - ); + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); } - if (disabled) { - if (!wasDisabled) { - moveTeleport( - n2, - container, - mainAnchor, - internals, - 1 - ); + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); } else { - if (n2.props && n1.props && n2.props.to !== n1.props.to) { - n2.props.to = n1.props.to; - } - } - } else { - if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { - const nextTarget = n2.target = resolveTarget( - n2.props, - querySelector - ); - if (nextTarget) { - moveTeleport( - n2, - nextTarget, - null, - internals, - 0 - ); - } - } else if (wasDisabled) { - moveTeleport( - n2, - target, - targetAnchor, - internals, - 1 + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized ); + setActiveBranch(suspense, newFallback); } - } - } - updateCssVars(n2); - }, - remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) { - const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode; - if (target) { - hostRemove(targetAnchor); - } - doRemove && hostRemove(anchor); - if (shapeFlag & 16) { - const shouldRemove = doRemove || !isTeleportDisabled(props); - for (let i = 0; i < children.length; i++) { - const child = children[i]; - unmount( - child, - parentComponent, - parentSuspense, - shouldRemove, - !!child.dynamicChildren - ); - } - } - }, - move: moveTeleport, - hydrate: hydrateTeleport -}; -function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { - if (moveType === 0) { - insert(vnode.targetAnchor, container, parentAnchor); - } - const { el, anchor, shapeFlag, children, props } = vnode; - const isReorder = moveType === 2; - if (isReorder) { - insert(el, container, parentAnchor); - } - if (!isReorder || isTeleportDisabled(props)) { - if (shapeFlag & 16) { - for (let i = 0; i < children.length; i++) { - move( - children[i], + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, container, - parentAnchor, - 2 - ); - } - } - } - if (isReorder) { - insert(anchor, container, parentAnchor); - } -} -function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { - o: { nextSibling, parentNode, querySelector } -}, hydrateChildren) { - const target = vnode.target = resolveTarget( - vnode.props, - querySelector - ); - if (target) { - const targetNode = target._lpa || target.firstChild; - if (vnode.shapeFlag & 16) { - if (isTeleportDisabled(vnode.props)) { - vnode.anchor = hydrateChildren( - nextSibling(node), - vnode, - parentNode(node), + anchor, parentComponent, - parentSuspense, + suspense, + namespace, slotScopeIds, optimized ); - vnode.targetAnchor = targetNode; + suspense.resolve(true); } else { - vnode.anchor = nextSibling(node); - let targetAnchor = targetNode; - while (targetAnchor) { - targetAnchor = nextSibling(targetAnchor); - if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") { - vnode.targetAnchor = targetAnchor; - target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); - break; + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) === container2) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); } } - hydrateChildren( - targetNode, - vnode, - target, - parentComponent, - parentSuspense, + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, slotScopeIds, optimized ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect, optimized2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized2 + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); } } - updateCssVars(vnode); - } - return vnode.anchor && nextSibling(vnode.anchor); + }; + return suspense; } -const Teleport = TeleportImpl; -function updateCssVars(vnode) { - const ctx = vnode.ctx; - if (ctx && ctx.ut) { - let node = vnode.children[0].el; - while (node && node !== vnode.targetAnchor) { - if (node.nodeType === 1) - node.setAttribute("data-v-owner", ctx.uid); - node = node.nextSibling; - } - ctx.ut(); +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (shared.isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (shared.isArray(s)) { + const singleChild = filterSingleRoot(s); + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (shared.isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; } const Fragment = Symbol.for("v-fgt"); @@ -5428,8 +5812,11 @@ function closeBlock() { currentBlock = blockStack[blockStack.length - 1] || null; } let isBlockTreeEnabled = 1; -function setBlockTracking(value) { +function setBlockTracking(value, inVOnce = false) { isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } } function setupBlock(vnode) { vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null; @@ -5449,7 +5836,6 @@ function createElementBlock(type, props, children, patchFlag, dynamicProps, shap dynamicProps, shapeFlag, true - /* isBlock */ ) ); } @@ -5462,7 +5848,6 @@ function createBlock(type, props, children, patchFlag, dynamicProps) { patchFlag, dynamicProps, true - /* isBlock: prevent a block from tracking itself */ ) ); } @@ -5474,7 +5859,6 @@ function isSameVNodeType(n1, n2) { } function transformVNodeArgs(transformer) { } -const InternalObjectKey = `__vInternal`; const normalizeKey = ({ key }) => key != null ? key : null; const normalizeRef = ({ ref, @@ -5506,6 +5890,7 @@ function createBaseVNode(type, props = null, children = null, patchFlag = 0, dyn el: null, anchor: null, target: null, + targetStart: null, targetAnchor: null, staticCount: 0, shapeFlag, @@ -5558,7 +5943,7 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami currentBlock.push(cloned); } } - cloned.patchFlag |= -2; + cloned.patchFlag = -2; return cloned; } if (isClassComponent(type)) { @@ -5590,12 +5975,11 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami ); } function guardReactiveProps(props) { - if (!props) - return null; - return reactivity.isProxy(props) || InternalObjectKey in props ? shared.extend({}, props) : props; + if (!props) return null; + return reactivity.isProxy(props) || isInternalObject(props) ? shared.extend({}, props) : props; } -function cloneVNode(vnode, extraProps, mergeRef = false) { - const { props, ref, patchFlag, children } = vnode; +function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; const cloned = { __v_isVNode: true, @@ -5613,6 +5997,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false) { slotScopeIds: vnode.slotScopeIds, children: children, target: vnode.target, + targetStart: vnode.targetStart, targetAnchor: vnode.targetAnchor, staticCount: vnode.staticCount, shapeFlag: vnode.shapeFlag, @@ -5625,7 +6010,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false) { dynamicChildren: vnode.dynamicChildren, appContext: vnode.appContext, dirs: vnode.dirs, - transition: vnode.transition, + transition, // These should technically only be non-null on mounted VNodes. However, // they *should* be copied for kept-alive vnodes. So we just always copy // them since them being non-null during a mount doesn't affect the logic as @@ -5639,6 +6024,12 @@ function cloneVNode(vnode, extraProps, mergeRef = false) { ctx: vnode.ctx, ce: vnode.ce }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } return cloned; } function createTextVNode(text = " ", flag = 0) { @@ -5662,7 +6053,7 @@ function normalizeVNode(child) { // #3666, avoid reference pollution when reusing vnode child.slice() ); - } else if (typeof child === "object") { + } else if (isVNode(child)) { return cloneIfMounted(child); } else { return createVNode(Text, null, String(child)); @@ -5690,7 +6081,7 @@ function normalizeChildren(vnode, children) { } else { type = 32; const slotFlag = children._; - if (!slotFlag && !(InternalObjectKey in children)) { + if (!slotFlag && !isInternalObject(children)) { children._ctx = currentRenderingInstance; } else if (slotFlag === 3 && currentRenderingInstance) { if (currentRenderingInstance.slots._ === 1) { @@ -5766,6 +6157,7 @@ function createComponentInstance(vnode, parent, suspense) { effect: null, update: null, // will be set synchronously right after creation + job: null, scope: new reactivity.EffectScope( true /* detached */ @@ -5776,6 +6168,7 @@ function createComponentInstance(vnode, parent, suspense) { exposeProxy: null, withProxy: null, provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], accessCache: null, renderCache: [], // local resolved assets @@ -5801,8 +6194,6 @@ function createComponentInstance(vnode, parent, suspense) { refs: shared.EMPTY_OBJ, setupState: shared.EMPTY_OBJ, setupContext: null, - attrsProxy: null, - slotsProxy: null, // suspense related suspense, suspenseId: suspense ? suspense.pendingId : 0, @@ -5841,24 +6232,35 @@ function createComponentInstance(vnode, parent, suspense) { let currentInstance = null; const getCurrentInstance = () => currentInstance || currentRenderingInstance; let internalSetCurrentInstance; -let globalCurrentInstanceSetters; -let settersKey = "__VUE_INSTANCE_SETTERS__"; +let setInSSRSetupState; { - if (!(globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey])) { - globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey] = []; - } - globalCurrentInstanceSetters.push((i) => currentInstance = i); - internalSetCurrentInstance = (instance) => { - if (globalCurrentInstanceSetters.length > 1) { - globalCurrentInstanceSetters.forEach((s) => s(instance)); - } else { - globalCurrentInstanceSetters[0](instance); - } + const g = shared.getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; }; + internalSetCurrentInstance = registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => currentInstance = v + ); + setInSSRSetupState = registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => isInSSRComponentSetup = v + ); } const setCurrentInstance = (instance) => { + const prev = currentInstance; internalSetCurrentInstance(instance); instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; }; const unsetCurrentInstance = () => { currentInstance && currentInstance.scope.off(); @@ -5868,34 +6270,41 @@ function isStatefulComponent(instance) { return instance.vnode.shapeFlag & 4; } let isInSSRComponentSetup = false; -function setupComponent(instance, isSSR = false) { - isInSSRComponentSetup = isSSR; +function setupComponent(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); const { props, children } = instance.vnode; const isStateful = isStatefulComponent(instance); initProps(instance, props, isStateful, isSSR); - initSlots(instance, children); + initSlots(instance, children, optimized); const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; - isInSSRComponentSetup = false; + isSSR && setInSSRSetupState(false); return setupResult; } function setupStatefulComponent(instance, isSSR) { const Component = instance.type; instance.accessCache = /* @__PURE__ */ Object.create(null); - instance.proxy = reactivity.markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); const { setup } = Component; if (setup) { - const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; - setCurrentInstance(instance); reactivity.pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); const setupResult = callWithErrorHandling( setup, instance, 0, - [instance.props, setupContext] + [ + instance.props, + setupContext + ] ); + const isAsyncSetup = shared.isPromise(setupResult); reactivity.resetTracking(); - unsetCurrentInstance(); - if (shared.isPromise(setupResult)) { + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { setupResult.then(unsetCurrentInstance, unsetCurrentInstance); if (isSSR) { return setupResult.then((resolvedResult) => { @@ -5963,43 +6372,36 @@ function finishComponentSetup(instance, isSSR, skipOptions) { } } { - setCurrentInstance(instance); + const reset = setCurrentInstance(instance); reactivity.pauseTracking(); try { applyOptions(instance); } finally { reactivity.resetTracking(); - unsetCurrentInstance(); + reset(); } } } -function getAttrsProxy(instance) { - return instance.attrsProxy || (instance.attrsProxy = new Proxy( - instance.attrs, - { - get(target, key) { - reactivity.track(instance, "get", "$attrs"); - return target[key]; - } - } - )); -} +const attrsProxyHandlers = { + get(target, key) { + reactivity.track(target, "get", ""); + return target[key]; + } +}; function createSetupContext(instance) { const expose = (exposed) => { instance.exposed = exposed || {}; }; { return { - get attrs() { - return getAttrsProxy(instance); - }, + attrs: new Proxy(instance.attrs, attrsProxyHandlers), slots: instance.slots, emit: instance.emit, expose }; } } -function getExposeProxy(instance) { +function getComponentPublicInstance(instance) { if (instance.exposed) { return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), { get(target, key) { @@ -6013,6 +6415,8 @@ function getExposeProxy(instance) { return key in target || key in publicPropertiesMap; } })); + } else { + return instance.proxy; } } function getComponentName(Component, includeInferred = true) { @@ -6023,7 +6427,8 @@ function isClassComponent(value) { } const computed = (getterOrOptions, debugOptions) => { - return reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); + const c = reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); + return c; }; function h(type, propsOrChildren, children) { @@ -6047,14 +6452,6 @@ function h(type, propsOrChildren, children) { } } -const ssrContextKey = Symbol.for("v-scx"); -const useSSRContext = () => { - { - const ctx = inject(ssrContextKey); - return ctx; - } -}; - function initCustomFormatter() { { return; @@ -6068,6 +6465,7 @@ function withMemo(memo, render, cache, index) { } const ret = render(); ret.memo = memo.slice(); + ret.cacheIndex = index; return cache[index] = ret; } function isMemoSame(cached, memo) { @@ -6086,25 +6484,37 @@ function isMemoSame(cached, memo) { return true; } -const version = "3.3.9"; +const version = "3.5.13"; +const warn$1 = shared.NOOP; +const ErrorTypeStrings = ErrorTypeStrings$1 ; +const devtools = void 0; +const setDevtoolsHook = shared.NOOP; const _ssrUtils = { createComponentInstance, setupComponent, renderComponentRoot, setCurrentRenderingInstance, isVNode: isVNode, - normalizeVNode + normalizeVNode, + getComponentPublicInstance, + ensureValidVNode, + pushWarningContext, + popWarningContext }; const ssrUtils = _ssrUtils ; const resolveFilter = null; const compatUtils = null; +const DeprecationTypes = null; exports.EffectScope = reactivity.EffectScope; exports.ReactiveEffect = reactivity.ReactiveEffect; +exports.TrackOpTypes = reactivity.TrackOpTypes; +exports.TriggerOpTypes = reactivity.TriggerOpTypes; exports.customRef = reactivity.customRef; exports.effect = reactivity.effect; exports.effectScope = reactivity.effectScope; exports.getCurrentScope = reactivity.getCurrentScope; +exports.getCurrentWatcher = reactivity.getCurrentWatcher; exports.isProxy = reactivity.isProxy; exports.isReactive = reactivity.isReactive; exports.isReadonly = reactivity.isReadonly; @@ -6112,6 +6522,7 @@ exports.isRef = reactivity.isRef; exports.isShallow = reactivity.isShallow; exports.markRaw = reactivity.markRaw; exports.onScopeDispose = reactivity.onScopeDispose; +exports.onWatcherCleanup = reactivity.onWatcherCleanup; exports.proxyRefs = reactivity.proxyRefs; exports.reactive = reactivity.reactive; exports.readonly = reactivity.readonly; @@ -6136,6 +6547,9 @@ exports.toHandlerKey = shared.toHandlerKey; exports.BaseTransition = BaseTransition; exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; exports.Comment = Comment; +exports.DeprecationTypes = DeprecationTypes; +exports.ErrorCodes = ErrorCodes; +exports.ErrorTypeStrings = ErrorTypeStrings; exports.Fragment = Fragment; exports.KeepAlive = KeepAlive; exports.Static = Static; @@ -6167,12 +6581,17 @@ exports.defineModel = defineModel; exports.defineOptions = defineOptions; exports.defineProps = defineProps; exports.defineSlots = defineSlots; +exports.devtools = devtools; exports.getCurrentInstance = getCurrentInstance; exports.getTransitionRawChildren = getTransitionRawChildren; exports.guardReactiveProps = guardReactiveProps; exports.h = h; exports.handleError = handleError; exports.hasInjectionContext = hasInjectionContext; +exports.hydrateOnIdle = hydrateOnIdle; +exports.hydrateOnInteraction = hydrateOnInteraction; +exports.hydrateOnMediaQuery = hydrateOnMediaQuery; +exports.hydrateOnVisible = hydrateOnVisible; exports.initCustomFormatter = initCustomFormatter; exports.inject = inject; exports.isMemoSame = isMemoSame; @@ -6215,9 +6634,11 @@ exports.ssrUtils = ssrUtils; exports.toHandlers = toHandlers; exports.transformVNodeArgs = transformVNodeArgs; exports.useAttrs = useAttrs; +exports.useId = useId; exports.useModel = useModel; exports.useSSRContext = useSSRContext; exports.useSlots = useSlots; +exports.useTemplateRef = useTemplateRef; exports.useTransitionState = useTransitionState; exports.version = version; exports.warn = warn$1; diff --git a/.output/server/node_modules/@vue/runtime-core/index.js b/.output/server/node_modules/@vue/runtime-core/index.js deleted file mode 100644 index 50c4882..0000000 --- a/.output/server/node_modules/@vue/runtime-core/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/runtime-core.cjs.prod.js') -} else { - module.exports = require('./dist/runtime-core.cjs.js') -} diff --git a/.output/server/node_modules/@vue/runtime-core/package.json b/.output/server/node_modules/@vue/runtime-core/package.json index 280f78e..b1e2cfd 100644 --- a/.output/server/node_modules/@vue/runtime-core/package.json +++ b/.output/server/node_modules/@vue/runtime-core/package.json @@ -1,6 +1,6 @@ { "name": "@vue/runtime-core", - "version": "3.3.9", + "version": "3.5.13", "description": "@vue/runtime-core", "main": "index.js", "module": "dist/runtime-core.esm-bundler.js", @@ -9,6 +9,20 @@ "index.js", "dist" ], + "exports": { + ".": { + "types": "./dist/runtime-core.d.ts", + "node": { + "production": "./dist/runtime-core.cjs.prod.js", + "development": "./dist/runtime-core.cjs.js", + "default": "./dist/runtime-core.cjs.prod.js" + }, + "module": "./dist/runtime-core.esm-bundler.js", + "import": "./dist/runtime-core.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, "buildOptions": { "name": "VueRuntimeCore", "formats": [ @@ -32,7 +46,10 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme", "dependencies": { - "@vue/shared": "3.3.9", - "@vue/reactivity": "3.3.9" - } + "@vue/shared": "3.5.13", + "@vue/reactivity": "3.5.13" + }, + "__npminstall_done": true, + "_from": "@vue/runtime-core@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js b/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js deleted file mode 100644 index cde7331..0000000 --- a/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js +++ /dev/null @@ -1,1503 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var runtimeCore = require('@vue/runtime-core'); -var shared = require('@vue/shared'); - -const svgNS = "http://www.w3.org/2000/svg"; -const doc = typeof document !== "undefined" ? document : null; -const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); -const nodeOps = { - insert: (child, parent, anchor) => { - parent.insertBefore(child, anchor || null); - }, - remove: (child) => { - const parent = child.parentNode; - if (parent) { - parent.removeChild(child); - } - }, - createElement: (tag, isSVG, is, props) => { - const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0); - if (tag === "select" && props && props.multiple != null) { - el.setAttribute("multiple", props.multiple); - } - return el; - }, - createText: (text) => doc.createTextNode(text), - createComment: (text) => doc.createComment(text), - setText: (node, text) => { - node.nodeValue = text; - }, - setElementText: (el, text) => { - el.textContent = text; - }, - parentNode: (node) => node.parentNode, - nextSibling: (node) => node.nextSibling, - querySelector: (selector) => doc.querySelector(selector), - setScopeId(el, id) { - el.setAttribute(id, ""); - }, - // __UNSAFE__ - // Reason: innerHTML. - // Static content here can only come from compiled templates. - // As long as the user only uses trusted templates, this is safe. - insertStaticContent(content, parent, anchor, isSVG, start, end) { - const before = anchor ? anchor.previousSibling : parent.lastChild; - if (start && (start === end || start.nextSibling)) { - while (true) { - parent.insertBefore(start.cloneNode(true), anchor); - if (start === end || !(start = start.nextSibling)) - break; - } - } else { - templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content; - const template = templateContainer.content; - if (isSVG) { - const wrapper = template.firstChild; - while (wrapper.firstChild) { - template.appendChild(wrapper.firstChild); - } - template.removeChild(wrapper); - } - parent.insertBefore(template, anchor); - } - return [ - // first - before ? before.nextSibling : parent.firstChild, - // last - anchor ? anchor.previousSibling : parent.lastChild - ]; - } -}; - -const TRANSITION = "transition"; -const ANIMATION = "animation"; -const vtcKey = Symbol("_vtc"); -const Transition = (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots); -Transition.displayName = "Transition"; -const DOMTransitionPropsValidators = { - name: String, - type: String, - css: { - type: Boolean, - default: true - }, - duration: [String, Number, Object], - enterFromClass: String, - enterActiveClass: String, - enterToClass: String, - appearFromClass: String, - appearActiveClass: String, - appearToClass: String, - leaveFromClass: String, - leaveActiveClass: String, - leaveToClass: String -}; -const TransitionPropsValidators = Transition.props = /* @__PURE__ */ shared.extend( - {}, - runtimeCore.BaseTransitionPropsValidators, - DOMTransitionPropsValidators -); -const callHook = (hook, args = []) => { - if (shared.isArray(hook)) { - hook.forEach((h2) => h2(...args)); - } else if (hook) { - hook(...args); - } -}; -const hasExplicitCallback = (hook) => { - return hook ? shared.isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; -}; -function resolveTransitionProps(rawProps) { - const baseProps = {}; - for (const key in rawProps) { - if (!(key in DOMTransitionPropsValidators)) { - baseProps[key] = rawProps[key]; - } - } - if (rawProps.css === false) { - return baseProps; - } - const { - name = "v", - type, - duration, - enterFromClass = `${name}-enter-from`, - enterActiveClass = `${name}-enter-active`, - enterToClass = `${name}-enter-to`, - appearFromClass = enterFromClass, - appearActiveClass = enterActiveClass, - appearToClass = enterToClass, - leaveFromClass = `${name}-leave-from`, - leaveActiveClass = `${name}-leave-active`, - leaveToClass = `${name}-leave-to` - } = rawProps; - const durations = normalizeDuration(duration); - const enterDuration = durations && durations[0]; - const leaveDuration = durations && durations[1]; - const { - onBeforeEnter, - onEnter, - onEnterCancelled, - onLeave, - onLeaveCancelled, - onBeforeAppear = onBeforeEnter, - onAppear = onEnter, - onAppearCancelled = onEnterCancelled - } = baseProps; - const finishEnter = (el, isAppear, done) => { - removeTransitionClass(el, isAppear ? appearToClass : enterToClass); - removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); - done && done(); - }; - const finishLeave = (el, done) => { - el._isLeaving = false; - removeTransitionClass(el, leaveFromClass); - removeTransitionClass(el, leaveToClass); - removeTransitionClass(el, leaveActiveClass); - done && done(); - }; - const makeEnterHook = (isAppear) => { - return (el, done) => { - const hook = isAppear ? onAppear : onEnter; - const resolve = () => finishEnter(el, isAppear, done); - callHook(hook, [el, resolve]); - nextFrame(() => { - removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); - addTransitionClass(el, isAppear ? appearToClass : enterToClass); - if (!hasExplicitCallback(hook)) { - whenTransitionEnds(el, type, enterDuration, resolve); - } - }); - }; - }; - return shared.extend(baseProps, { - onBeforeEnter(el) { - callHook(onBeforeEnter, [el]); - addTransitionClass(el, enterFromClass); - addTransitionClass(el, enterActiveClass); - }, - onBeforeAppear(el) { - callHook(onBeforeAppear, [el]); - addTransitionClass(el, appearFromClass); - addTransitionClass(el, appearActiveClass); - }, - onEnter: makeEnterHook(false), - onAppear: makeEnterHook(true), - onLeave(el, done) { - el._isLeaving = true; - const resolve = () => finishLeave(el, done); - addTransitionClass(el, leaveFromClass); - forceReflow(); - addTransitionClass(el, leaveActiveClass); - nextFrame(() => { - if (!el._isLeaving) { - return; - } - removeTransitionClass(el, leaveFromClass); - addTransitionClass(el, leaveToClass); - if (!hasExplicitCallback(onLeave)) { - whenTransitionEnds(el, type, leaveDuration, resolve); - } - }); - callHook(onLeave, [el, resolve]); - }, - onEnterCancelled(el) { - finishEnter(el, false); - callHook(onEnterCancelled, [el]); - }, - onAppearCancelled(el) { - finishEnter(el, true); - callHook(onAppearCancelled, [el]); - }, - onLeaveCancelled(el) { - finishLeave(el); - callHook(onLeaveCancelled, [el]); - } - }); -} -function normalizeDuration(duration) { - if (duration == null) { - return null; - } else if (shared.isObject(duration)) { - return [NumberOf(duration.enter), NumberOf(duration.leave)]; - } else { - const n = NumberOf(duration); - return [n, n]; - } -} -function NumberOf(val) { - const res = shared.toNumber(val); - { - runtimeCore.assertNumber(res, "<transition> explicit duration"); - } - return res; -} -function addTransitionClass(el, cls) { - cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); - (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); -} -function removeTransitionClass(el, cls) { - cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); - const _vtc = el[vtcKey]; - if (_vtc) { - _vtc.delete(cls); - if (!_vtc.size) { - el[vtcKey] = void 0; - } - } -} -function nextFrame(cb) { - requestAnimationFrame(() => { - requestAnimationFrame(cb); - }); -} -let endId = 0; -function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { - const id = el._endId = ++endId; - const resolveIfNotStale = () => { - if (id === el._endId) { - resolve(); - } - }; - if (explicitTimeout) { - return setTimeout(resolveIfNotStale, explicitTimeout); - } - const { type, timeout, propCount } = getTransitionInfo(el, expectedType); - if (!type) { - return resolve(); - } - const endEvent = type + "end"; - let ended = 0; - const end = () => { - el.removeEventListener(endEvent, onEnd); - resolveIfNotStale(); - }; - const onEnd = (e) => { - if (e.target === el && ++ended >= propCount) { - end(); - } - }; - setTimeout(() => { - if (ended < propCount) { - end(); - } - }, timeout + 1); - el.addEventListener(endEvent, onEnd); -} -function getTransitionInfo(el, expectedType) { - const styles = window.getComputedStyle(el); - const getStyleProperties = (key) => (styles[key] || "").split(", "); - const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); - const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); - const transitionTimeout = getTimeout(transitionDelays, transitionDurations); - const animationDelays = getStyleProperties(`${ANIMATION}Delay`); - const animationDurations = getStyleProperties(`${ANIMATION}Duration`); - const animationTimeout = getTimeout(animationDelays, animationDurations); - let type = null; - let timeout = 0; - let propCount = 0; - if (expectedType === TRANSITION) { - if (transitionTimeout > 0) { - type = TRANSITION; - timeout = transitionTimeout; - propCount = transitionDurations.length; - } - } else if (expectedType === ANIMATION) { - if (animationTimeout > 0) { - type = ANIMATION; - timeout = animationTimeout; - propCount = animationDurations.length; - } - } else { - timeout = Math.max(transitionTimeout, animationTimeout); - type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; - propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; - } - const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( - getStyleProperties(`${TRANSITION}Property`).toString() - ); - return { - type, - timeout, - propCount, - hasTransform - }; -} -function getTimeout(delays, durations) { - while (delays.length < durations.length) { - delays = delays.concat(delays); - } - return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); -} -function toMs(s) { - if (s === "auto") - return 0; - return Number(s.slice(0, -1).replace(",", ".")) * 1e3; -} -function forceReflow() { - return document.body.offsetHeight; -} - -function patchClass(el, value, isSVG) { - const transitionClasses = el[vtcKey]; - if (transitionClasses) { - value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); - } - if (value == null) { - el.removeAttribute("class"); - } else if (isSVG) { - el.setAttribute("class", value); - } else { - el.className = value; - } -} - -const vShowOldKey = Symbol("_vod"); -const vShow = { - beforeMount(el, { value }, { transition }) { - el[vShowOldKey] = el.style.display === "none" ? "" : el.style.display; - if (transition && value) { - transition.beforeEnter(el); - } else { - setDisplay(el, value); - } - }, - mounted(el, { value }, { transition }) { - if (transition && value) { - transition.enter(el); - } - }, - updated(el, { value, oldValue }, { transition }) { - if (!value === !oldValue) - return; - if (transition) { - if (value) { - transition.beforeEnter(el); - setDisplay(el, true); - transition.enter(el); - } else { - transition.leave(el, () => { - setDisplay(el, false); - }); - } - } else { - setDisplay(el, value); - } - }, - beforeUnmount(el, { value }) { - setDisplay(el, value); - } -}; -function setDisplay(el, value) { - el.style.display = value ? el[vShowOldKey] : "none"; -} -function initVShowForSSR() { - vShow.getSSRProps = ({ value }) => { - if (!value) { - return { style: { display: "none" } }; - } - }; -} - -function patchStyle(el, prev, next) { - const style = el.style; - const isCssString = shared.isString(next); - if (next && !isCssString) { - if (prev && !shared.isString(prev)) { - for (const key in prev) { - if (next[key] == null) { - setStyle(style, key, ""); - } - } - } - for (const key in next) { - setStyle(style, key, next[key]); - } - } else { - const currentDisplay = style.display; - if (isCssString) { - if (prev !== next) { - style.cssText = next; - } - } else if (prev) { - el.removeAttribute("style"); - } - if (vShowOldKey in el) { - style.display = currentDisplay; - } - } -} -const semicolonRE = /[^\\];\s*$/; -const importantRE = /\s*!important$/; -function setStyle(style, name, val) { - if (shared.isArray(val)) { - val.forEach((v) => setStyle(style, name, v)); - } else { - if (val == null) - val = ""; - { - if (semicolonRE.test(val)) { - runtimeCore.warn( - `Unexpected semicolon at the end of '${name}' style value: '${val}'` - ); - } - } - if (name.startsWith("--")) { - style.setProperty(name, val); - } else { - const prefixed = autoPrefix(style, name); - if (importantRE.test(val)) { - style.setProperty( - shared.hyphenate(prefixed), - val.replace(importantRE, ""), - "important" - ); - } else { - style[prefixed] = val; - } - } - } -} -const prefixes = ["Webkit", "Moz", "ms"]; -const prefixCache = {}; -function autoPrefix(style, rawName) { - const cached = prefixCache[rawName]; - if (cached) { - return cached; - } - let name = runtimeCore.camelize(rawName); - if (name !== "filter" && name in style) { - return prefixCache[rawName] = name; - } - name = shared.capitalize(name); - for (let i = 0; i < prefixes.length; i++) { - const prefixed = prefixes[i] + name; - if (prefixed in style) { - return prefixCache[rawName] = prefixed; - } - } - return rawName; -} - -const xlinkNS = "http://www.w3.org/1999/xlink"; -function patchAttr(el, key, value, isSVG, instance) { - if (isSVG && key.startsWith("xlink:")) { - if (value == null) { - el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); - } else { - el.setAttributeNS(xlinkNS, key, value); - } - } else { - const isBoolean = shared.isSpecialBooleanAttr(key); - if (value == null || isBoolean && !shared.includeBooleanAttr(value)) { - el.removeAttribute(key); - } else { - el.setAttribute(key, isBoolean ? "" : value); - } - } -} - -function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) { - if (key === "innerHTML" || key === "textContent") { - if (prevChildren) { - unmountChildren(prevChildren, parentComponent, parentSuspense); - } - el[key] = value == null ? "" : value; - return; - } - const tag = el.tagName; - if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally - !tag.includes("-")) { - el._value = value; - const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value; - const newValue = value == null ? "" : value; - if (oldValue !== newValue) { - el.value = newValue; - } - if (value == null) { - el.removeAttribute(key); - } - return; - } - let needRemove = false; - if (value === "" || value == null) { - const type = typeof el[key]; - if (type === "boolean") { - value = shared.includeBooleanAttr(value); - } else if (value == null && type === "string") { - value = ""; - needRemove = true; - } else if (type === "number") { - value = 0; - needRemove = true; - } - } - try { - el[key] = value; - } catch (e) { - if (!needRemove) { - runtimeCore.warn( - `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`, - e - ); - } - } - needRemove && el.removeAttribute(key); -} - -function addEventListener(el, event, handler, options) { - el.addEventListener(event, handler, options); -} -function removeEventListener(el, event, handler, options) { - el.removeEventListener(event, handler, options); -} -const veiKey = Symbol("_vei"); -function patchEvent(el, rawName, prevValue, nextValue, instance = null) { - const invokers = el[veiKey] || (el[veiKey] = {}); - const existingInvoker = invokers[rawName]; - if (nextValue && existingInvoker) { - existingInvoker.value = nextValue; - } else { - const [name, options] = parseName(rawName); - if (nextValue) { - const invoker = invokers[rawName] = createInvoker(nextValue, instance); - addEventListener(el, name, invoker, options); - } else if (existingInvoker) { - removeEventListener(el, name, existingInvoker, options); - invokers[rawName] = void 0; - } - } -} -const optionsModifierRE = /(?:Once|Passive|Capture)$/; -function parseName(name) { - let options; - if (optionsModifierRE.test(name)) { - options = {}; - let m; - while (m = name.match(optionsModifierRE)) { - name = name.slice(0, name.length - m[0].length); - options[m[0].toLowerCase()] = true; - } - } - const event = name[2] === ":" ? name.slice(3) : shared.hyphenate(name.slice(2)); - return [event, options]; -} -let cachedNow = 0; -const p = /* @__PURE__ */ Promise.resolve(); -const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); -function createInvoker(initialValue, instance) { - const invoker = (e) => { - if (!e._vts) { - e._vts = Date.now(); - } else if (e._vts <= invoker.attached) { - return; - } - runtimeCore.callWithAsyncErrorHandling( - patchStopImmediatePropagation(e, invoker.value), - instance, - 5, - [e] - ); - }; - invoker.value = initialValue; - invoker.attached = getNow(); - return invoker; -} -function patchStopImmediatePropagation(e, value) { - if (shared.isArray(value)) { - const originalStop = e.stopImmediatePropagation; - e.stopImmediatePropagation = () => { - originalStop.call(e); - e._stopped = true; - }; - return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2)); - } else { - return value; - } -} - -const nativeOnRE = /^on[a-z]/; -const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => { - if (key === "class") { - patchClass(el, nextValue, isSVG); - } else if (key === "style") { - patchStyle(el, prevValue, nextValue); - } else if (shared.isOn(key)) { - if (!shared.isModelListener(key)) { - patchEvent(el, key, prevValue, nextValue, parentComponent); - } - } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { - patchDOMProp( - el, - key, - nextValue, - prevChildren, - parentComponent, - parentSuspense, - unmountChildren - ); - } else { - if (key === "true-value") { - el._trueValue = nextValue; - } else if (key === "false-value") { - el._falseValue = nextValue; - } - patchAttr(el, key, nextValue, isSVG); - } -}; -function shouldSetAsProp(el, key, value, isSVG) { - if (isSVG) { - if (key === "innerHTML" || key === "textContent") { - return true; - } - if (key in el && nativeOnRE.test(key) && shared.isFunction(value)) { - return true; - } - return false; - } - if (key === "spellcheck" || key === "draggable" || key === "translate") { - return false; - } - if (key === "form") { - return false; - } - if (key === "list" && el.tagName === "INPUT") { - return false; - } - if (key === "type" && el.tagName === "TEXTAREA") { - return false; - } - if (nativeOnRE.test(key) && shared.isString(value)) { - return false; - } - return key in el; -} - -/*! #__NO_SIDE_EFFECTS__ */ -// @__NO_SIDE_EFFECTS__ -function defineCustomElement(options, hydrate2) { - const Comp = runtimeCore.defineComponent(options); - class VueCustomElement extends VueElement { - constructor(initialProps) { - super(Comp, initialProps, hydrate2); - } - } - VueCustomElement.def = Comp; - return VueCustomElement; -} -/*! #__NO_SIDE_EFFECTS__ */ -const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => { - return /* @__PURE__ */ defineCustomElement(options, hydrate); -}; -const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { -}; -class VueElement extends BaseClass { - constructor(_def, _props = {}, hydrate2) { - super(); - this._def = _def; - this._props = _props; - /** - * @internal - */ - this._instance = null; - this._connected = false; - this._resolved = false; - this._numberProps = null; - this._ob = null; - if (this.shadowRoot && hydrate2) { - hydrate2(this._createVNode(), this.shadowRoot); - } else { - if (this.shadowRoot) { - runtimeCore.warn( - `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.` - ); - } - this.attachShadow({ mode: "open" }); - if (!this._def.__asyncLoader) { - this._resolveProps(this._def); - } - } - } - connectedCallback() { - this._connected = true; - if (!this._instance) { - if (this._resolved) { - this._update(); - } else { - this._resolveDef(); - } - } - } - disconnectedCallback() { - this._connected = false; - if (this._ob) { - this._ob.disconnect(); - this._ob = null; - } - runtimeCore.nextTick(() => { - if (!this._connected) { - render(null, this.shadowRoot); - this._instance = null; - } - }); - } - /** - * resolve inner component definition (handle possible async component) - */ - _resolveDef() { - this._resolved = true; - for (let i = 0; i < this.attributes.length; i++) { - this._setAttr(this.attributes[i].name); - } - this._ob = new MutationObserver((mutations) => { - for (const m of mutations) { - this._setAttr(m.attributeName); - } - }); - this._ob.observe(this, { attributes: true }); - const resolve = (def, isAsync = false) => { - const { props, styles } = def; - let numberProps; - if (props && !shared.isArray(props)) { - for (const key in props) { - const opt = props[key]; - if (opt === Number || opt && opt.type === Number) { - if (key in this._props) { - this._props[key] = shared.toNumber(this._props[key]); - } - (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[shared.camelize(key)] = true; - } - } - } - this._numberProps = numberProps; - if (isAsync) { - this._resolveProps(def); - } - this._applyStyles(styles); - this._update(); - }; - const asyncDef = this._def.__asyncLoader; - if (asyncDef) { - asyncDef().then((def) => resolve(def, true)); - } else { - resolve(this._def); - } - } - _resolveProps(def) { - const { props } = def; - const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {}); - for (const key of Object.keys(this)) { - if (key[0] !== "_" && declaredPropKeys.includes(key)) { - this._setProp(key, this[key], true, false); - } - } - for (const key of declaredPropKeys.map(shared.camelize)) { - Object.defineProperty(this, key, { - get() { - return this._getProp(key); - }, - set(val) { - this._setProp(key, val); - } - }); - } - } - _setAttr(key) { - let value = this.getAttribute(key); - const camelKey = shared.camelize(key); - if (this._numberProps && this._numberProps[camelKey]) { - value = shared.toNumber(value); - } - this._setProp(camelKey, value, false); - } - /** - * @internal - */ - _getProp(key) { - return this._props[key]; - } - /** - * @internal - */ - _setProp(key, val, shouldReflect = true, shouldUpdate = true) { - if (val !== this._props[key]) { - this._props[key] = val; - if (shouldUpdate && this._instance) { - this._update(); - } - if (shouldReflect) { - if (val === true) { - this.setAttribute(shared.hyphenate(key), ""); - } else if (typeof val === "string" || typeof val === "number") { - this.setAttribute(shared.hyphenate(key), val + ""); - } else if (!val) { - this.removeAttribute(shared.hyphenate(key)); - } - } - } - } - _update() { - render(this._createVNode(), this.shadowRoot); - } - _createVNode() { - const vnode = runtimeCore.createVNode(this._def, shared.extend({}, this._props)); - if (!this._instance) { - vnode.ce = (instance) => { - this._instance = instance; - instance.isCE = true; - { - instance.ceReload = (newStyles) => { - if (this._styles) { - this._styles.forEach((s) => this.shadowRoot.removeChild(s)); - this._styles.length = 0; - } - this._applyStyles(newStyles); - this._instance = null; - this._update(); - }; - } - const dispatch = (event, args) => { - this.dispatchEvent( - new CustomEvent(event, { - detail: args - }) - ); - }; - instance.emit = (event, ...args) => { - dispatch(event, args); - if (shared.hyphenate(event) !== event) { - dispatch(shared.hyphenate(event), args); - } - }; - let parent = this; - while (parent = parent && (parent.parentNode || parent.host)) { - if (parent instanceof VueElement) { - instance.parent = parent._instance; - instance.provides = parent._instance.provides; - break; - } - } - }; - } - return vnode; - } - _applyStyles(styles) { - if (styles) { - styles.forEach((css) => { - const s = document.createElement("style"); - s.textContent = css; - this.shadowRoot.appendChild(s); - { - (this._styles || (this._styles = [])).push(s); - } - }); - } - } -} - -function useCssModule(name = "$style") { - { - const instance = runtimeCore.getCurrentInstance(); - if (!instance) { - runtimeCore.warn(`useCssModule must be called inside setup()`); - return shared.EMPTY_OBJ; - } - const modules = instance.type.__cssModules; - if (!modules) { - runtimeCore.warn(`Current instance does not have CSS modules injected.`); - return shared.EMPTY_OBJ; - } - const mod = modules[name]; - if (!mod) { - runtimeCore.warn(`Current instance does not have CSS module named "${name}".`); - return shared.EMPTY_OBJ; - } - return mod; - } -} - -function useCssVars(getter) { - return; -} - -const positionMap = /* @__PURE__ */ new WeakMap(); -const newPositionMap = /* @__PURE__ */ new WeakMap(); -const moveCbKey = Symbol("_moveCb"); -const enterCbKey = Symbol("_enterCb"); -const TransitionGroupImpl = { - name: "TransitionGroup", - props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, { - tag: String, - moveClass: String - }), - setup(props, { slots }) { - const instance = runtimeCore.getCurrentInstance(); - const state = runtimeCore.useTransitionState(); - let prevChildren; - let children; - runtimeCore.onUpdated(() => { - if (!prevChildren.length) { - return; - } - const moveClass = props.moveClass || `${props.name || "v"}-move`; - if (!hasCSSTransform( - prevChildren[0].el, - instance.vnode.el, - moveClass - )) { - return; - } - prevChildren.forEach(callPendingCbs); - prevChildren.forEach(recordPosition); - const movedChildren = prevChildren.filter(applyTranslation); - forceReflow(); - movedChildren.forEach((c) => { - const el = c.el; - const style = el.style; - addTransitionClass(el, moveClass); - style.transform = style.webkitTransform = style.transitionDuration = ""; - const cb = el[moveCbKey] = (e) => { - if (e && e.target !== el) { - return; - } - if (!e || /transform$/.test(e.propertyName)) { - el.removeEventListener("transitionend", cb); - el[moveCbKey] = null; - removeTransitionClass(el, moveClass); - } - }; - el.addEventListener("transitionend", cb); - }); - }); - return () => { - const rawProps = runtimeCore.toRaw(props); - const cssTransitionProps = resolveTransitionProps(rawProps); - let tag = rawProps.tag || runtimeCore.Fragment; - prevChildren = children; - children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : []; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - if (child.key != null) { - runtimeCore.setTransitionHooks( - child, - runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) - ); - } else { - runtimeCore.warn(`<TransitionGroup> children must be keyed.`); - } - } - if (prevChildren) { - for (let i = 0; i < prevChildren.length; i++) { - const child = prevChildren[i]; - runtimeCore.setTransitionHooks( - child, - runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) - ); - positionMap.set(child, child.el.getBoundingClientRect()); - } - } - return runtimeCore.createVNode(tag, null, children); - }; - } -}; -const removeMode = (props) => delete props.mode; -/* @__PURE__ */ removeMode(TransitionGroupImpl.props); -const TransitionGroup = TransitionGroupImpl; -function callPendingCbs(c) { - const el = c.el; - if (el[moveCbKey]) { - el[moveCbKey](); - } - if (el[enterCbKey]) { - el[enterCbKey](); - } -} -function recordPosition(c) { - newPositionMap.set(c, c.el.getBoundingClientRect()); -} -function applyTranslation(c) { - const oldPos = positionMap.get(c); - const newPos = newPositionMap.get(c); - const dx = oldPos.left - newPos.left; - const dy = oldPos.top - newPos.top; - if (dx || dy) { - const s = c.el.style; - s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; - s.transitionDuration = "0s"; - return c; - } -} -function hasCSSTransform(el, root, moveClass) { - const clone = el.cloneNode(); - const _vtc = el[vtcKey]; - if (_vtc) { - _vtc.forEach((cls) => { - cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); - }); - } - moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); - clone.style.display = "none"; - const container = root.nodeType === 1 ? root : root.parentNode; - container.appendChild(clone); - const { hasTransform } = getTransitionInfo(clone); - container.removeChild(clone); - return hasTransform; -} - -const getModelAssigner = (vnode) => { - const fn = vnode.props["onUpdate:modelValue"] || false; - return shared.isArray(fn) ? (value) => shared.invokeArrayFns(fn, value) : fn; -}; -function onCompositionStart(e) { - e.target.composing = true; -} -function onCompositionEnd(e) { - const target = e.target; - if (target.composing) { - target.composing = false; - target.dispatchEvent(new Event("input")); - } -} -const assignKey = Symbol("_assign"); -const vModelText = { - created(el, { modifiers: { lazy, trim, number } }, vnode) { - el[assignKey] = getModelAssigner(vnode); - const castToNumber = number || vnode.props && vnode.props.type === "number"; - addEventListener(el, lazy ? "change" : "input", (e) => { - if (e.target.composing) - return; - let domValue = el.value; - if (trim) { - domValue = domValue.trim(); - } - if (castToNumber) { - domValue = shared.looseToNumber(domValue); - } - el[assignKey](domValue); - }); - if (trim) { - addEventListener(el, "change", () => { - el.value = el.value.trim(); - }); - } - if (!lazy) { - addEventListener(el, "compositionstart", onCompositionStart); - addEventListener(el, "compositionend", onCompositionEnd); - addEventListener(el, "change", onCompositionEnd); - } - }, - // set value on mounted so it's after min/max for type="range" - mounted(el, { value }) { - el.value = value == null ? "" : value; - }, - beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) { - el[assignKey] = getModelAssigner(vnode); - if (el.composing) - return; - const elValue = number || el.type === "number" ? shared.looseToNumber(el.value) : el.value; - const newValue = value == null ? "" : value; - if (elValue === newValue) { - return; - } - if (document.activeElement === el && el.type !== "range") { - if (lazy) { - return; - } - if (trim && el.value.trim() === newValue) { - return; - } - } - el.value = newValue; - } -}; -const vModelCheckbox = { - // #4096 array checkboxes need to be deep traversed - deep: true, - created(el, _, vnode) { - el[assignKey] = getModelAssigner(vnode); - addEventListener(el, "change", () => { - const modelValue = el._modelValue; - const elementValue = getValue(el); - const checked = el.checked; - const assign = el[assignKey]; - if (shared.isArray(modelValue)) { - const index = shared.looseIndexOf(modelValue, elementValue); - const found = index !== -1; - if (checked && !found) { - assign(modelValue.concat(elementValue)); - } else if (!checked && found) { - const filtered = [...modelValue]; - filtered.splice(index, 1); - assign(filtered); - } - } else if (shared.isSet(modelValue)) { - const cloned = new Set(modelValue); - if (checked) { - cloned.add(elementValue); - } else { - cloned.delete(elementValue); - } - assign(cloned); - } else { - assign(getCheckboxValue(el, checked)); - } - }); - }, - // set initial checked on mount to wait for true-value/false-value - mounted: setChecked, - beforeUpdate(el, binding, vnode) { - el[assignKey] = getModelAssigner(vnode); - setChecked(el, binding, vnode); - } -}; -function setChecked(el, { value, oldValue }, vnode) { - el._modelValue = value; - if (shared.isArray(value)) { - el.checked = shared.looseIndexOf(value, vnode.props.value) > -1; - } else if (shared.isSet(value)) { - el.checked = value.has(vnode.props.value); - } else if (value !== oldValue) { - el.checked = shared.looseEqual(value, getCheckboxValue(el, true)); - } -} -const vModelRadio = { - created(el, { value }, vnode) { - el.checked = shared.looseEqual(value, vnode.props.value); - el[assignKey] = getModelAssigner(vnode); - addEventListener(el, "change", () => { - el[assignKey](getValue(el)); - }); - }, - beforeUpdate(el, { value, oldValue }, vnode) { - el[assignKey] = getModelAssigner(vnode); - if (value !== oldValue) { - el.checked = shared.looseEqual(value, vnode.props.value); - } - } -}; -const vModelSelect = { - // <select multiple> value need to be deep traversed - deep: true, - created(el, { value, modifiers: { number } }, vnode) { - const isSetModel = shared.isSet(value); - addEventListener(el, "change", () => { - const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( - (o) => number ? shared.looseToNumber(getValue(o)) : getValue(o) - ); - el[assignKey]( - el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] - ); - }); - el[assignKey] = getModelAssigner(vnode); - }, - // set value in mounted & updated because <select> relies on its children - // <option>s. - mounted(el, { value }) { - setSelected(el, value); - }, - beforeUpdate(el, _binding, vnode) { - el[assignKey] = getModelAssigner(vnode); - }, - updated(el, { value }) { - setSelected(el, value); - } -}; -function setSelected(el, value) { - const isMultiple = el.multiple; - if (isMultiple && !shared.isArray(value) && !shared.isSet(value)) { - runtimeCore.warn( - `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` - ); - return; - } - for (let i = 0, l = el.options.length; i < l; i++) { - const option = el.options[i]; - const optionValue = getValue(option); - if (isMultiple) { - if (shared.isArray(value)) { - option.selected = shared.looseIndexOf(value, optionValue) > -1; - } else { - option.selected = value.has(optionValue); - } - } else { - if (shared.looseEqual(getValue(option), value)) { - if (el.selectedIndex !== i) - el.selectedIndex = i; - return; - } - } - } - if (!isMultiple && el.selectedIndex !== -1) { - el.selectedIndex = -1; - } -} -function getValue(el) { - return "_value" in el ? el._value : el.value; -} -function getCheckboxValue(el, checked) { - const key = checked ? "_trueValue" : "_falseValue"; - return key in el ? el[key] : checked; -} -const vModelDynamic = { - created(el, binding, vnode) { - callModelHook(el, binding, vnode, null, "created"); - }, - mounted(el, binding, vnode) { - callModelHook(el, binding, vnode, null, "mounted"); - }, - beforeUpdate(el, binding, vnode, prevVNode) { - callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); - }, - updated(el, binding, vnode, prevVNode) { - callModelHook(el, binding, vnode, prevVNode, "updated"); - } -}; -function resolveDynamicModel(tagName, type) { - switch (tagName) { - case "SELECT": - return vModelSelect; - case "TEXTAREA": - return vModelText; - default: - switch (type) { - case "checkbox": - return vModelCheckbox; - case "radio": - return vModelRadio; - default: - return vModelText; - } - } -} -function callModelHook(el, binding, vnode, prevVNode, hook) { - const modelToUse = resolveDynamicModel( - el.tagName, - vnode.props && vnode.props.type - ); - const fn = modelToUse[hook]; - fn && fn(el, binding, vnode, prevVNode); -} -function initVModelForSSR() { - vModelText.getSSRProps = ({ value }) => ({ value }); - vModelRadio.getSSRProps = ({ value }, vnode) => { - if (vnode.props && shared.looseEqual(vnode.props.value, value)) { - return { checked: true }; - } - }; - vModelCheckbox.getSSRProps = ({ value }, vnode) => { - if (shared.isArray(value)) { - if (vnode.props && shared.looseIndexOf(value, vnode.props.value) > -1) { - return { checked: true }; - } - } else if (shared.isSet(value)) { - if (vnode.props && value.has(vnode.props.value)) { - return { checked: true }; - } - } else if (value) { - return { checked: true }; - } - }; - vModelDynamic.getSSRProps = (binding, vnode) => { - if (typeof vnode.type !== "string") { - return; - } - const modelToUse = resolveDynamicModel( - // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase - vnode.type.toUpperCase(), - vnode.props && vnode.props.type - ); - if (modelToUse.getSSRProps) { - return modelToUse.getSSRProps(binding, vnode); - } - }; -} - -const systemModifiers = ["ctrl", "shift", "alt", "meta"]; -const modifierGuards = { - stop: (e) => e.stopPropagation(), - prevent: (e) => e.preventDefault(), - self: (e) => e.target !== e.currentTarget, - ctrl: (e) => !e.ctrlKey, - shift: (e) => !e.shiftKey, - alt: (e) => !e.altKey, - meta: (e) => !e.metaKey, - left: (e) => "button" in e && e.button !== 0, - middle: (e) => "button" in e && e.button !== 1, - right: (e) => "button" in e && e.button !== 2, - exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) -}; -const withModifiers = (fn, modifiers) => { - return (event, ...args) => { - for (let i = 0; i < modifiers.length; i++) { - const guard = modifierGuards[modifiers[i]]; - if (guard && guard(event, modifiers)) - return; - } - return fn(event, ...args); - }; -}; -const keyNames = { - esc: "escape", - space: " ", - up: "arrow-up", - left: "arrow-left", - right: "arrow-right", - down: "arrow-down", - delete: "backspace" -}; -const withKeys = (fn, modifiers) => { - return (event) => { - if (!("key" in event)) { - return; - } - const eventKey = shared.hyphenate(event.key); - if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) { - return fn(event); - } - }; -}; - -const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps); -let renderer; -let enabledHydration = false; -function ensureRenderer() { - return renderer || (renderer = runtimeCore.createRenderer(rendererOptions)); -} -function ensureHydrationRenderer() { - renderer = enabledHydration ? renderer : runtimeCore.createHydrationRenderer(rendererOptions); - enabledHydration = true; - return renderer; -} -const render = (...args) => { - ensureRenderer().render(...args); -}; -const hydrate = (...args) => { - ensureHydrationRenderer().hydrate(...args); -}; -const createApp = (...args) => { - const app = ensureRenderer().createApp(...args); - { - injectNativeTagCheck(app); - injectCompilerOptionsCheck(app); - } - const { mount } = app; - app.mount = (containerOrSelector) => { - const container = normalizeContainer(containerOrSelector); - if (!container) - return; - const component = app._component; - if (!shared.isFunction(component) && !component.render && !component.template) { - component.template = container.innerHTML; - } - container.innerHTML = ""; - const proxy = mount(container, false, container instanceof SVGElement); - if (container instanceof Element) { - container.removeAttribute("v-cloak"); - container.setAttribute("data-v-app", ""); - } - return proxy; - }; - return app; -}; -const createSSRApp = (...args) => { - const app = ensureHydrationRenderer().createApp(...args); - { - injectNativeTagCheck(app); - injectCompilerOptionsCheck(app); - } - const { mount } = app; - app.mount = (containerOrSelector) => { - const container = normalizeContainer(containerOrSelector); - if (container) { - return mount(container, true, container instanceof SVGElement); - } - }; - return app; -}; -function injectNativeTagCheck(app) { - Object.defineProperty(app.config, "isNativeTag", { - value: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag), - writable: false - }); -} -function injectCompilerOptionsCheck(app) { - if (runtimeCore.isRuntimeOnly()) { - const isCustomElement = app.config.isCustomElement; - Object.defineProperty(app.config, "isCustomElement", { - get() { - return isCustomElement; - }, - set() { - runtimeCore.warn( - `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` - ); - } - }); - const compilerOptions = app.config.compilerOptions; - const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. -- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. -- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader -- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`; - Object.defineProperty(app.config, "compilerOptions", { - get() { - runtimeCore.warn(msg); - return compilerOptions; - }, - set() { - runtimeCore.warn(msg); - } - }); - } -} -function normalizeContainer(container) { - if (shared.isString(container)) { - const res = document.querySelector(container); - if (!res) { - runtimeCore.warn( - `Failed to mount app: mount target selector "${container}" returned null.` - ); - } - return res; - } - if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") { - runtimeCore.warn( - `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` - ); - } - return container; -} -let ssrDirectiveInitialized = false; -const initDirectivesForSSR = () => { - if (!ssrDirectiveInitialized) { - ssrDirectiveInitialized = true; - initVModelForSSR(); - initVShowForSSR(); - } -} ; - -exports.Transition = Transition; -exports.TransitionGroup = TransitionGroup; -exports.VueElement = VueElement; -exports.createApp = createApp; -exports.createSSRApp = createSSRApp; -exports.defineCustomElement = defineCustomElement; -exports.defineSSRCustomElement = defineSSRCustomElement; -exports.hydrate = hydrate; -exports.initDirectivesForSSR = initDirectivesForSSR; -exports.render = render; -exports.useCssModule = useCssModule; -exports.useCssVars = useCssVars; -exports.vModelCheckbox = vModelCheckbox; -exports.vModelDynamic = vModelDynamic; -exports.vModelRadio = vModelRadio; -exports.vModelSelect = vModelSelect; -exports.vModelText = vModelText; -exports.vShow = vShow; -exports.withKeys = withKeys; -exports.withModifiers = withModifiers; -Object.keys(runtimeCore).forEach(function (k) { - if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeCore[k]; -}); diff --git a/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js b/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js index c108dc2..9e46c11 100644 --- a/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +++ b/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js @@ -1,3 +1,8 @@ +/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -5,7 +10,19 @@ Object.defineProperty(exports, '__esModule', { value: true }); var runtimeCore = require('@vue/runtime-core'); var shared = require('@vue/shared'); +let policy = void 0; +const tt = typeof window !== "undefined" && window.trustedTypes; +if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + } +} +const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; const svgNS = "http://www.w3.org/2000/svg"; +const mathmlNS = "http://www.w3.org/1998/Math/MathML"; const doc = typeof document !== "undefined" ? document : null; const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); const nodeOps = { @@ -18,8 +35,8 @@ const nodeOps = { parent.removeChild(child); } }, - createElement: (tag, isSVG, is, props) => { - const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0); + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); if (tag === "select" && props && props.multiple != null) { el.setAttribute("multiple", props.multiple); } @@ -43,18 +60,19 @@ const nodeOps = { // Reason: innerHTML. // Static content here can only come from compiled templates. // As long as the user only uses trusted templates, this is safe. - insertStaticContent(content, parent, anchor, isSVG, start, end) { + insertStaticContent(content, parent, anchor, namespace, start, end) { const before = anchor ? anchor.previousSibling : parent.lastChild; if (start && (start === end || start.nextSibling)) { while (true) { parent.insertBefore(start.cloneNode(true), anchor); - if (start === end || !(start = start.nextSibling)) - break; + if (start === end || !(start = start.nextSibling)) break; } } else { - templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content; + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); const template = templateContainer.content; - if (isSVG) { + if (namespace === "svg" || namespace === "mathml") { const wrapper = template.firstChild; while (wrapper.firstChild) { template.appendChild(wrapper.firstChild); @@ -75,8 +93,6 @@ const nodeOps = { const TRANSITION = "transition"; const ANIMATION = "animation"; const vtcKey = Symbol("_vtc"); -const Transition = (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots); -Transition.displayName = "Transition"; const DOMTransitionPropsValidators = { name: String, type: String, @@ -95,11 +111,19 @@ const DOMTransitionPropsValidators = { leaveActiveClass: String, leaveToClass: String }; -const TransitionPropsValidators = Transition.props = /* @__PURE__ */ shared.extend( +const TransitionPropsValidators = /* @__PURE__ */ shared.extend( {}, runtimeCore.BaseTransitionPropsValidators, DOMTransitionPropsValidators ); +const decorate$1 = (t) => { + t.displayName = "Transition"; + t.props = TransitionPropsValidators; + return t; +}; +const Transition = /* @__PURE__ */ decorate$1( + (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots) +); const callHook = (hook, args = []) => { if (shared.isArray(hook)) { hook.forEach((h2) => h2(...args)); @@ -147,7 +171,8 @@ function resolveTransitionProps(rawProps) { onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps; - const finishEnter = (el, isAppear, done) => { + const finishEnter = (el, isAppear, done, isCancelled) => { + el._enterCancelled = isCancelled; removeTransitionClass(el, isAppear ? appearToClass : enterToClass); removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); done && done(); @@ -190,8 +215,13 @@ function resolveTransitionProps(rawProps) { el._isLeaving = true; const resolve = () => finishLeave(el, done); addTransitionClass(el, leaveFromClass); - forceReflow(); - addTransitionClass(el, leaveActiveClass); + if (!el._enterCancelled) { + forceReflow(); + addTransitionClass(el, leaveActiveClass); + } else { + addTransitionClass(el, leaveActiveClass); + forceReflow(); + } nextFrame(() => { if (!el._isLeaving) { return; @@ -205,11 +235,11 @@ function resolveTransitionProps(rawProps) { callHook(onLeave, [el, resolve]); }, onEnterCancelled(el) { - finishEnter(el, false); + finishEnter(el, false, void 0, true); callHook(onEnterCancelled, [el]); }, onAppearCancelled(el) { - finishEnter(el, true); + finishEnter(el, true, void 0, true); callHook(onAppearCancelled, [el]); }, onLeaveCancelled(el) { @@ -259,7 +289,7 @@ function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { resolve(); } }; - if (explicitTimeout) { + if (explicitTimeout != null) { return setTimeout(resolveIfNotStale, explicitTimeout); } const { type, timeout, propCount } = getTransitionInfo(el, expectedType); @@ -330,8 +360,7 @@ function getTimeout(delays, durations) { return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); } function toMs(s) { - if (s === "auto") - return 0; + if (s === "auto") return 0; return Number(s.slice(0, -1).replace(",", ".")) * 1e3; } function forceReflow() { @@ -352,10 +381,11 @@ function patchClass(el, value, isSVG) { } } -const vShowOldKey = Symbol("_vod"); +const vShowOriginalDisplay = Symbol("_vod"); +const vShowHidden = Symbol("_vsh"); const vShow = { beforeMount(el, { value }, { transition }) { - el[vShowOldKey] = el.style.display === "none" ? "" : el.style.display; + el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; if (transition && value) { transition.beforeEnter(el); } else { @@ -368,8 +398,7 @@ const vShow = { } }, updated(el, { value, oldValue }, { transition }) { - if (!value === !oldValue) - return; + if (!value === !oldValue) return; if (transition) { if (value) { transition.beforeEnter(el); @@ -389,7 +418,8 @@ const vShow = { } }; function setDisplay(el, value) { - el.style.display = value ? el[vShowOldKey] : "none"; + el.style.display = value ? el[vShowOriginalDisplay] : "none"; + el[vShowHidden] = !value; } function initVShowForSSR() { vShow.getSSRProps = ({ value }) => { @@ -399,31 +429,57 @@ function initVShowForSSR() { }; } +const CSS_VAR_TEXT = Symbol(""); +function useCssVars(getter) { + return; +} + +const displayRE = /(^|;)\s*display\s*:/; function patchStyle(el, prev, next) { const style = el.style; const isCssString = shared.isString(next); + let hasControlledDisplay = false; if (next && !isCssString) { - if (prev && !shared.isString(prev)) { - for (const key in prev) { - if (next[key] == null) { - setStyle(style, key, ""); + if (prev) { + if (!shared.isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } } } } for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } setStyle(style, key, next[key]); } } else { - const currentDisplay = style.display; if (isCssString) { if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } style.cssText = next; + hasControlledDisplay = displayRE.test(next); } } else if (prev) { el.removeAttribute("style"); } - if (vShowOldKey in el) { - style.display = currentDisplay; + } + if (vShowOriginalDisplay in el) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + if (el[vShowHidden]) { + style.display = "none"; } } } @@ -432,8 +488,7 @@ function setStyle(style, name, val) { if (shared.isArray(val)) { val.forEach((v) => setStyle(style, name, v)); } else { - if (val == null) - val = ""; + if (val == null) val = ""; if (name.startsWith("--")) { style.setProperty(name, val); } else { @@ -472,7 +527,7 @@ function autoPrefix(style, rawName) { } const xlinkNS = "http://www.w3.org/1999/xlink"; -function patchAttr(el, key, value, isSVG, instance) { +function patchAttr(el, key, value, isSVG, instance, isBoolean = shared.isSpecialBooleanAttr(key)) { if (isSVG && key.startsWith("xlink:")) { if (value == null) { el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); @@ -480,35 +535,40 @@ function patchAttr(el, key, value, isSVG, instance) { el.setAttributeNS(xlinkNS, key, value); } } else { - const isBoolean = shared.isSpecialBooleanAttr(key); if (value == null || isBoolean && !shared.includeBooleanAttr(value)) { el.removeAttribute(key); } else { - el.setAttribute(key, isBoolean ? "" : value); + el.setAttribute( + key, + isBoolean ? "" : shared.isSymbol(value) ? String(value) : value + ); } } } -function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) { +function patchDOMProp(el, key, value, parentComponent, attrName) { if (key === "innerHTML" || key === "textContent") { - if (prevChildren) { - unmountChildren(prevChildren, parentComponent, parentSuspense); + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; } - el[key] = value == null ? "" : value; return; } const tag = el.tagName; if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally !tag.includes("-")) { - el._value = value; - const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value; - const newValue = value == null ? "" : value; - if (oldValue !== newValue) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { el.value = newValue; } if (value == null) { el.removeAttribute(key); } + el._value = value; return; } let needRemove = false; @@ -528,7 +588,7 @@ function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspe el[key] = value; } catch (e) { } - needRemove && el.removeAttribute(key); + needRemove && el.removeAttribute(attrName || key); } function addEventListener(el, event, handler, options) { @@ -546,7 +606,10 @@ function patchEvent(el, rawName, prevValue, nextValue, instance = null) { } else { const [name, options] = parseName(rawName); if (nextValue) { - const invoker = invokers[rawName] = createInvoker(nextValue, instance); + const invoker = invokers[rawName] = createInvoker( + nextValue, + instance + ); addEventListener(el, name, invoker, options); } else if (existingInvoker) { removeEventListener(el, name, existingInvoker, options); @@ -596,14 +659,18 @@ function patchStopImmediatePropagation(e, value) { originalStop.call(e); e._stopped = true; }; - return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2)); + return value.map( + (fn) => (e2) => !e2._stopped && fn && fn(e2) + ); } else { return value; } } -const nativeOnRE = /^on[a-z]/; -const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => { +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; if (key === "class") { patchClass(el, nextValue, isSVG); } else if (key === "style") { @@ -613,15 +680,15 @@ const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, p patchEvent(el, key, prevValue, nextValue, parentComponent); } } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { - patchDOMProp( - el, - key, - nextValue, - prevChildren, - parentComponent, - parentSuspense, - unmountChildren - ); + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && (/[A-Z]/.test(key) || !shared.isString(nextValue)) + ) { + patchDOMProp(el, shared.camelize(key), nextValue, parentComponent, key); } else { if (key === "true-value") { el._trueValue = nextValue; @@ -636,7 +703,7 @@ function shouldSetAsProp(el, key, value, isSVG) { if (key === "innerHTML" || key === "textContent") { return true; } - if (key in el && nativeOnRE.test(key) && shared.isFunction(value)) { + if (key in el && isNativeOn(key) && shared.isFunction(value)) { return true; } return false; @@ -653,72 +720,122 @@ function shouldSetAsProp(el, key, value, isSVG) { if (key === "type" && el.tagName === "TEXTAREA") { return false; } - if (nativeOnRE.test(key) && shared.isString(value)) { + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && shared.isString(value)) { return false; } return key in el; } +const REMOVAL = {}; /*! #__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ -function defineCustomElement(options, hydrate2) { - const Comp = runtimeCore.defineComponent(options); +function defineCustomElement(options, extraOptions, _createApp) { + const Comp = runtimeCore.defineComponent(options, extraOptions); + if (shared.isPlainObject(Comp)) shared.extend(Comp, extraOptions); class VueCustomElement extends VueElement { constructor(initialProps) { - super(Comp, initialProps, hydrate2); + super(Comp, initialProps, _createApp); } } VueCustomElement.def = Comp; return VueCustomElement; } /*! #__NO_SIDE_EFFECTS__ */ -const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => { - return /* @__PURE__ */ defineCustomElement(options, hydrate); +const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => { + return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp); }; const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { }; class VueElement extends BaseClass { - constructor(_def, _props = {}, hydrate2) { + constructor(_def, _props = {}, _createApp = createApp) { super(); this._def = _def; this._props = _props; + this._createApp = _createApp; + this._isVueCE = true; /** * @internal */ this._instance = null; + /** + * @internal + */ + this._app = null; + /** + * @internal + */ + this._nonce = this._def.nonce; this._connected = false; this._resolved = false; this._numberProps = null; + this._styleChildren = /* @__PURE__ */ new WeakSet(); this._ob = null; - if (this.shadowRoot && hydrate2) { - hydrate2(this._createVNode(), this.shadowRoot); + if (this.shadowRoot && _createApp !== createApp) { + this._root = this.shadowRoot; } else { - this.attachShadow({ mode: "open" }); - if (!this._def.__asyncLoader) { - this._resolveProps(this._def); + if (_def.shadowRoot !== false) { + this.attachShadow({ mode: "open" }); + this._root = this.shadowRoot; + } else { + this._root = this; } } + if (!this._def.__asyncLoader) { + this._resolveProps(this._def); + } } connectedCallback() { + if (!this.isConnected) return; + if (!this.shadowRoot) { + this._parseSlots(); + } this._connected = true; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + this._parent = parent; + break; + } + } if (!this._instance) { if (this._resolved) { + this._setParent(); this._update(); } else { - this._resolveDef(); + if (parent && parent._pendingResolve) { + this._pendingResolve = parent._pendingResolve.then(() => { + this._pendingResolve = void 0; + this._resolveDef(); + }); + } else { + this._resolveDef(); + } } } } + _setParent(parent = this._parent) { + if (parent) { + this._instance.parent = parent._instance; + this._instance.provides = parent._instance.provides; + } + } disconnectedCallback() { this._connected = false; - if (this._ob) { - this._ob.disconnect(); - this._ob = null; - } runtimeCore.nextTick(() => { if (!this._connected) { - render(null, this.shadowRoot); - this._instance = null; + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + this._app && this._app.unmount(); + if (this._instance) this._instance.ce = void 0; + this._app = this._instance = null; } }); } @@ -726,7 +843,9 @@ class VueElement extends BaseClass { * resolve inner component definition (handle possible async component) */ _resolveDef() { - this._resolved = true; + if (this._pendingResolve) { + return; + } for (let i = 0; i < this.attributes.length; i++) { this._setAttr(this.attributes[i].name); } @@ -737,6 +856,8 @@ class VueElement extends BaseClass { }); this._ob.observe(this, { attributes: true }); const resolve = (def, isAsync = false) => { + this._resolved = true; + this._pendingResolve = void 0; const { props, styles } = def; let numberProps; if (props && !shared.isArray(props)) { @@ -754,22 +875,44 @@ class VueElement extends BaseClass { if (isAsync) { this._resolveProps(def); } - this._applyStyles(styles); - this._update(); + if (this.shadowRoot) { + this._applyStyles(styles); + } + this._mount(def); }; const asyncDef = this._def.__asyncLoader; if (asyncDef) { - asyncDef().then((def) => resolve(def, true)); + this._pendingResolve = asyncDef().then( + (def) => resolve(this._def = def, true) + ); } else { resolve(this._def); } } + _mount(def) { + this._app = this._createApp(def); + if (def.configureApp) { + def.configureApp(this._app); + } + this._app._ceVNode = this._createVNode(); + this._app.mount(this._root); + const exposed = this._instance && this._instance.exposed; + if (!exposed) return; + for (const key in exposed) { + if (!shared.hasOwn(this, key)) { + Object.defineProperty(this, key, { + // unwrap ref to be consistent with public instance behavior + get: () => runtimeCore.unref(exposed[key]) + }); + } + } + } _resolveProps(def) { const { props } = def; const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {}); for (const key of Object.keys(this)) { if (key[0] !== "_" && declaredPropKeys.includes(key)) { - this._setProp(key, this[key], true, false); + this._setProp(key, this[key]); } } for (const key of declaredPropKeys.map(shared.camelize)) { @@ -778,18 +921,20 @@ class VueElement extends BaseClass { return this._getProp(key); }, set(val) { - this._setProp(key, val); + this._setProp(key, val, true, true); } }); } } _setAttr(key) { - let value = this.getAttribute(key); + if (key.startsWith("data-v-")) return; + const has = this.hasAttribute(key); + let value = has ? this.getAttribute(key) : REMOVAL; const camelKey = shared.camelize(key); - if (this._numberProps && this._numberProps[camelKey]) { + if (has && this._numberProps && this._numberProps[camelKey]) { value = shared.toNumber(value); } - this._setProp(camelKey, value, false); + this._setProp(camelKey, value, false, true); } /** * @internal @@ -800,13 +945,22 @@ class VueElement extends BaseClass { /** * @internal */ - _setProp(key, val, shouldReflect = true, shouldUpdate = true) { + _setProp(key, val, shouldReflect = true, shouldUpdate = false) { if (val !== this._props[key]) { - this._props[key] = val; + if (val === REMOVAL) { + delete this._props[key]; + } else { + this._props[key] = val; + if (key === "key" && this._app) { + this._app._ceVNode.key = val; + } + } if (shouldUpdate && this._instance) { this._update(); } if (shouldReflect) { + const ob = this._ob; + ob && ob.disconnect(); if (val === true) { this.setAttribute(shared.hyphenate(key), ""); } else if (typeof val === "string" || typeof val === "number") { @@ -814,23 +968,30 @@ class VueElement extends BaseClass { } else if (!val) { this.removeAttribute(shared.hyphenate(key)); } + ob && ob.observe(this, { attributes: true }); } } } _update() { - render(this._createVNode(), this.shadowRoot); + render(this._createVNode(), this._root); } _createVNode() { - const vnode = runtimeCore.createVNode(this._def, shared.extend({}, this._props)); + const baseProps = {}; + if (!this.shadowRoot) { + baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); + } + const vnode = runtimeCore.createVNode(this._def, shared.extend(baseProps, this._props)); if (!this._instance) { vnode.ce = (instance) => { this._instance = instance; + instance.ce = this; instance.isCE = true; const dispatch = (event, args) => { this.dispatchEvent( - new CustomEvent(event, { - detail: args - }) + new CustomEvent( + event, + shared.isPlainObject(args[0]) ? shared.extend({ detail: args }, args[0]) : { detail: args } + ) ); }; instance.emit = (event, ...args) => { @@ -839,27 +1000,92 @@ class VueElement extends BaseClass { dispatch(shared.hyphenate(event), args); } }; - let parent = this; - while (parent = parent && (parent.parentNode || parent.host)) { - if (parent instanceof VueElement) { - instance.parent = parent._instance; - instance.provides = parent._instance.provides; - break; - } - } + this._setParent(); }; } return vnode; } - _applyStyles(styles) { - if (styles) { - styles.forEach((css) => { - const s = document.createElement("style"); - s.textContent = css; - this.shadowRoot.appendChild(s); - }); + _applyStyles(styles, owner) { + if (!styles) return; + if (owner) { + if (owner === this._def || this._styleChildren.has(owner)) { + return; + } + this._styleChildren.add(owner); + } + const nonce = this._nonce; + for (let i = styles.length - 1; i >= 0; i--) { + const s = document.createElement("style"); + if (nonce) s.setAttribute("nonce", nonce); + s.textContent = styles[i]; + this.shadowRoot.prepend(s); } } + /** + * Only called when shadowRoot is false + */ + _parseSlots() { + const slots = this._slots = {}; + let n; + while (n = this.firstChild) { + const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; + (slots[slotName] || (slots[slotName] = [])).push(n); + this.removeChild(n); + } + } + /** + * Only called when shadowRoot is false + */ + _renderSlots() { + const outlets = (this._teleportTarget || this).querySelectorAll("slot"); + const scopeId = this._instance.type.__scopeId; + for (let i = 0; i < outlets.length; i++) { + const o = outlets[i]; + const slotName = o.getAttribute("name") || "default"; + const content = this._slots[slotName]; + const parent = o.parentNode; + if (content) { + for (const n of content) { + if (scopeId && n.nodeType === 1) { + const id = scopeId + "-s"; + const walker = document.createTreeWalker(n, 1); + n.setAttribute(id, ""); + let child; + while (child = walker.nextNode()) { + child.setAttribute(id, ""); + } + } + parent.insertBefore(n, o); + } + } else { + while (o.firstChild) parent.insertBefore(o.firstChild, o); + } + parent.removeChild(o); + } + } + /** + * @internal + */ + _injectChildStyle(comp) { + this._applyStyles(comp.styles, comp); + } + /** + * @internal + */ + _removeChildStyle(comp) { + } +} +function useHost(caller) { + const instance = runtimeCore.getCurrentInstance(); + const el = instance && instance.ce; + if (el) { + return el; + } + return null; +} +function useShadowRoot() { + const el = useHost(); + return el && el.shadowRoot; } function useCssModule(name = "$style") { @@ -880,15 +1106,15 @@ function useCssModule(name = "$style") { } } -function useCssVars(getter) { - return; -} - const positionMap = /* @__PURE__ */ new WeakMap(); const newPositionMap = /* @__PURE__ */ new WeakMap(); const moveCbKey = Symbol("_moveCb"); const enterCbKey = Symbol("_enterCb"); -const TransitionGroupImpl = { +const decorate = (t) => { + delete t.props.mode; + return t; +}; +const TransitionGroupImpl = /* @__PURE__ */ decorate({ name: "TransitionGroup", props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, { tag: String, @@ -937,7 +1163,28 @@ const TransitionGroupImpl = { const rawProps = runtimeCore.toRaw(props); const cssTransitionProps = resolveTransitionProps(rawProps); let tag = rawProps.tag || runtimeCore.Fragment; - prevChildren = children; + prevChildren = []; + if (children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.el && child.el instanceof Element) { + prevChildren.push(child); + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks( + child, + cssTransitionProps, + state, + instance + ) + ); + positionMap.set( + child, + child.el.getBoundingClientRect() + ); + } + } + } children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : []; for (let i = 0; i < children.length; i++) { const child = children[i]; @@ -948,22 +1195,10 @@ const TransitionGroupImpl = { ); } } - if (prevChildren) { - for (let i = 0; i < prevChildren.length; i++) { - const child = prevChildren[i]; - runtimeCore.setTransitionHooks( - child, - runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) - ); - positionMap.set(child, child.el.getBoundingClientRect()); - } - } return runtimeCore.createVNode(tag, null, children); }; } -}; -const removeMode = (props) => delete props.mode; -/* @__PURE__ */ removeMode(TransitionGroupImpl.props); +}); const TransitionGroup = TransitionGroupImpl; function callPendingCbs(c) { const el = c.el; @@ -1026,8 +1261,7 @@ const vModelText = { el[assignKey] = getModelAssigner(vnode); const castToNumber = number || vnode.props && vnode.props.type === "number"; addEventListener(el, lazy ? "change" : "input", (e) => { - if (e.target.composing) - return; + if (e.target.composing) return; let domValue = el.value; if (trim) { domValue = domValue.trim(); @@ -1052,17 +1286,16 @@ const vModelText = { mounted(el, { value }) { el.value = value == null ? "" : value; }, - beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) { + beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) { el[assignKey] = getModelAssigner(vnode); - if (el.composing) - return; - const elValue = number || el.type === "number" ? shared.looseToNumber(el.value) : el.value; + if (el.composing) return; + const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? shared.looseToNumber(el.value) : el.value; const newValue = value == null ? "" : value; if (elValue === newValue) { return; } if (document.activeElement === el && el.type !== "range") { - if (lazy) { + if (lazy && value === oldValue) { return; } if (trim && el.value.trim() === newValue) { @@ -1114,12 +1347,17 @@ const vModelCheckbox = { }; function setChecked(el, { value, oldValue }, vnode) { el._modelValue = value; + let checked; if (shared.isArray(value)) { - el.checked = shared.looseIndexOf(value, vnode.props.value) > -1; + checked = shared.looseIndexOf(value, vnode.props.value) > -1; } else if (shared.isSet(value)) { - el.checked = value.has(vnode.props.value); - } else if (value !== oldValue) { - el.checked = shared.looseEqual(value, getCheckboxValue(el, true)); + checked = value.has(vnode.props.value); + } else { + if (value === oldValue) return; + checked = shared.looseEqual(value, getCheckboxValue(el, true)); + } + if (el.checked !== checked) { + el.checked = checked; } } const vModelRadio = { @@ -1149,6 +1387,10 @@ const vModelSelect = { el[assignKey]( el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] ); + el._assigning = true; + runtimeCore.nextTick(() => { + el._assigning = false; + }); }); el[assignKey] = getModelAssigner(vnode); }, @@ -1161,29 +1403,34 @@ const vModelSelect = { el[assignKey] = getModelAssigner(vnode); }, updated(el, { value }) { - setSelected(el, value); + if (!el._assigning) { + setSelected(el, value); + } } }; function setSelected(el, value) { const isMultiple = el.multiple; - if (isMultiple && !shared.isArray(value) && !shared.isSet(value)) { + const isArrayValue = shared.isArray(value); + if (isMultiple && !isArrayValue && !shared.isSet(value)) { return; } for (let i = 0, l = el.options.length; i < l; i++) { const option = el.options[i]; const optionValue = getValue(option); if (isMultiple) { - if (shared.isArray(value)) { - option.selected = shared.looseIndexOf(value, optionValue) > -1; + if (isArrayValue) { + const optionType = typeof optionValue; + if (optionType === "string" || optionType === "number") { + option.selected = value.some((v) => String(v) === String(optionValue)); + } else { + option.selected = shared.looseIndexOf(value, optionValue) > -1; + } } else { option.selected = value.has(optionValue); } - } else { - if (shared.looseEqual(getValue(option), value)) { - if (el.selectedIndex !== i) - el.selectedIndex = i; - return; - } + } else if (shared.looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) el.selectedIndex = i; + return; } } if (!isMultiple && el.selectedIndex !== -1) { @@ -1286,14 +1533,15 @@ const modifierGuards = { exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) }; const withModifiers = (fn, modifiers) => { - return (event, ...args) => { + const cache = fn._withMods || (fn._withMods = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => { for (let i = 0; i < modifiers.length; i++) { const guard = modifierGuards[modifiers[i]]; - if (guard && guard(event, modifiers)) - return; + if (guard && guard(event, modifiers)) return; } return fn(event, ...args); - }; + }); }; const keyNames = { esc: "escape", @@ -1305,15 +1553,19 @@ const keyNames = { delete: "backspace" }; const withKeys = (fn, modifiers) => { - return (event) => { + const cache = fn._withKeys || (fn._withKeys = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event) => { if (!("key" in event)) { return; } const eventKey = shared.hyphenate(event.key); - if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) { + if (modifiers.some( + (k) => k === eventKey || keyNames[k] === eventKey + )) { return fn(event); } - }; + }); }; const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps); @@ -1338,14 +1590,15 @@ const createApp = (...args) => { const { mount } = app; app.mount = (containerOrSelector) => { const container = normalizeContainer(containerOrSelector); - if (!container) - return; + if (!container) return; const component = app._component; if (!shared.isFunction(component) && !component.render && !component.template) { component.template = container.innerHTML; } - container.innerHTML = ""; - const proxy = mount(container, false, container instanceof SVGElement); + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); if (container instanceof Element) { container.removeAttribute("v-cloak"); container.setAttribute("data-v-app", ""); @@ -1360,11 +1613,19 @@ const createSSRApp = (...args) => { app.mount = (containerOrSelector) => { const container = normalizeContainer(containerOrSelector); if (container) { - return mount(container, true, container instanceof SVGElement); + return mount(container, true, resolveRootNamespace(container)); } }; return app; }; +function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } +} function normalizeContainer(container) { if (shared.isString(container)) { const res = document.querySelector(container); @@ -1393,6 +1654,8 @@ exports.initDirectivesForSSR = initDirectivesForSSR; exports.render = render; exports.useCssModule = useCssModule; exports.useCssVars = useCssVars; +exports.useHost = useHost; +exports.useShadowRoot = useShadowRoot; exports.vModelCheckbox = vModelCheckbox; exports.vModelDynamic = vModelDynamic; exports.vModelRadio = vModelRadio; diff --git a/.output/server/node_modules/@vue/runtime-dom/index.js b/.output/server/node_modules/@vue/runtime-dom/index.js deleted file mode 100644 index cdc29b2..0000000 --- a/.output/server/node_modules/@vue/runtime-dom/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/runtime-dom.cjs.prod.js') -} else { - module.exports = require('./dist/runtime-dom.cjs.js') -} diff --git a/.output/server/node_modules/@vue/runtime-dom/package.json b/.output/server/node_modules/@vue/runtime-dom/package.json index 9985391..ad38027 100644 --- a/.output/server/node_modules/@vue/runtime-dom/package.json +++ b/.output/server/node_modules/@vue/runtime-dom/package.json @@ -1,6 +1,6 @@ { "name": "@vue/runtime-dom", - "version": "3.3.9", + "version": "3.5.13", "description": "@vue/runtime-dom", "main": "index.js", "module": "dist/runtime-dom.esm-bundler.js", @@ -10,6 +10,20 @@ "index.js", "dist" ], + "exports": { + ".": { + "types": "./dist/runtime-dom.d.ts", + "node": { + "production": "./dist/runtime-dom.cjs.prod.js", + "development": "./dist/runtime-dom.cjs.js", + "default": "./dist/runtime-dom.cjs.prod.js" + }, + "module": "./dist/runtime-dom.esm-bundler.js", + "import": "./dist/runtime-dom.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, "sideEffects": false, "buildOptions": { "name": "VueRuntimeDOM", @@ -35,8 +49,15 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme", "dependencies": { - "csstype": "^3.1.2", - "@vue/shared": "3.3.9", - "@vue/runtime-core": "3.3.9" - } + "csstype": "^3.1.3", + "@vue/shared": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/reactivity": "3.5.13" + }, + "devDependencies": { + "@types/trusted-types": "^2.0.7" + }, + "__npminstall_done": true, + "_from": "@vue/runtime-dom@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js b/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js deleted file mode 100644 index 040e61c..0000000 --- a/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js +++ /dev/null @@ -1,1086 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var Vue = require('vue'); -var shared = require('@vue/shared'); -var compilerSsr = require('@vue/compiler-ssr'); - -function _interopNamespaceDefault(e) { - var n = Object.create(null); - if (e) { - for (var k in e) { - n[k] = e[k]; - } - } - n.default = e; - return Object.freeze(n); -} - -var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue); - -const shouldIgnoreProp = shared.makeMap( - `,key,ref,innerHTML,textContent,ref_key,ref_for` -); -function ssrRenderAttrs(props, tag) { - let ret = ""; - for (const key in props) { - if (shouldIgnoreProp(key) || shared.isOn(key) || tag === "textarea" && key === "value") { - continue; - } - const value = props[key]; - if (key === "class") { - ret += ` class="${ssrRenderClass(value)}"`; - } else if (key === "style") { - ret += ` style="${ssrRenderStyle(value)}"`; - } else { - ret += ssrRenderDynamicAttr(key, value, tag); - } - } - return ret; -} -function ssrRenderDynamicAttr(key, value, tag) { - if (!isRenderableValue(value)) { - return ``; - } - const attrKey = tag && (tag.indexOf("-") > 0 || shared.isSVGTag(tag)) ? key : shared.propsToAttrMap[key] || key.toLowerCase(); - if (shared.isBooleanAttr(attrKey)) { - return shared.includeBooleanAttr(value) ? ` ${attrKey}` : ``; - } else if (shared.isSSRSafeAttrName(attrKey)) { - return value === "" ? ` ${attrKey}` : ` ${attrKey}="${shared.escapeHtml(value)}"`; - } else { - console.warn( - `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` - ); - return ``; - } -} -function ssrRenderAttr(key, value) { - if (!isRenderableValue(value)) { - return ``; - } - return ` ${key}="${shared.escapeHtml(value)}"`; -} -function isRenderableValue(value) { - if (value == null) { - return false; - } - const type = typeof value; - return type === "string" || type === "number" || type === "boolean"; -} -function ssrRenderClass(raw) { - return shared.escapeHtml(shared.normalizeClass(raw)); -} -function ssrRenderStyle(raw) { - if (!raw) { - return ""; - } - if (shared.isString(raw)) { - return shared.escapeHtml(raw); - } - const styles = shared.normalizeStyle(raw); - return shared.escapeHtml(shared.stringifyStyle(styles)); -} - -function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { - return renderComponentVNode( - Vue.createVNode(comp, props, children), - parentComponent, - slotScopeId - ); -} - -function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { - push(`<!--[-->`); - ssrRenderSlotInner( - slots, - slotName, - slotProps, - fallbackRenderFn, - push, - parentComponent, - slotScopeId - ); - push(`<!--]-->`); -} -function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { - const slotFn = slots[slotName]; - if (slotFn) { - const slotBuffer = []; - const bufferedPush = (item) => { - slotBuffer.push(item); - }; - const ret = slotFn( - slotProps, - bufferedPush, - parentComponent, - slotScopeId ? " " + slotScopeId : "" - ); - if (shared.isArray(ret)) { - renderVNodeChildren(push, ret, parentComponent, slotScopeId); - } else { - let isEmptySlot = true; - if (transition) { - isEmptySlot = false; - } else { - for (let i = 0; i < slotBuffer.length; i++) { - if (!isComment(slotBuffer[i])) { - isEmptySlot = false; - break; - } - } - } - if (isEmptySlot) { - if (fallbackRenderFn) { - fallbackRenderFn(); - } - } else { - for (let i = 0; i < slotBuffer.length; i++) { - push(slotBuffer[i]); - } - } - } - } else if (fallbackRenderFn) { - fallbackRenderFn(); - } -} -const commentTestRE = /^<!--.*-->$/s; -const commentRE = /<!--[^]*?-->/gm; -function isComment(item) { - if (typeof item !== "string" || !commentTestRE.test(item)) - return false; - if (item.length <= 8) - return true; - return !item.replace(commentRE, "").trim(); -} - -function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { - parentPush("<!--teleport start-->"); - const context = parentComponent.appContext.provides[Vue.ssrContextKey]; - const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); - const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); - const bufferIndex = targetBuffer.length; - let teleportContent; - if (disabled) { - contentRenderFn(parentPush); - teleportContent = `<!--teleport anchor-->`; - } else { - const { getBuffer, push } = createBuffer(); - contentRenderFn(push); - push(`<!--teleport anchor-->`); - teleportContent = getBuffer(); - } - targetBuffer.splice(bufferIndex, 0, teleportContent); - parentPush("<!--teleport end-->"); -} - -function ssrInterpolate(value) { - return shared.escapeHtml(shared.toDisplayString(value)); -} - -let shouldTrack = true; -const trackStack = []; -function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; -} -function resetTracking() { - const last = trackStack.pop(); - shouldTrack = last === void 0 ? true : last; -} - -function toRaw(observed) { - const raw = observed && observed["__v_raw"]; - return raw ? toRaw(raw) : observed; -} - -function isRef(r) { - return !!(r && r.__v_isRef === true); -} - -const stack = []; -function pushWarningContext(vnode) { - stack.push(vnode); -} -function popWarningContext() { - stack.pop(); -} -function warn(msg, ...args) { - pauseTracking(); - const instance = stack.length ? stack[stack.length - 1].component : null; - const appWarnHandler = instance && instance.appContext.config.warnHandler; - const trace = getComponentTrace(); - if (appWarnHandler) { - callWithErrorHandling( - appWarnHandler, - instance, - 11, - [ - msg + args.join(""), - instance && instance.proxy, - trace.map( - ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` - ).join("\n"), - trace - ] - ); - } else { - const warnArgs = [`[Vue warn]: ${msg}`, ...args]; - if (trace.length && // avoid spamming console during tests - true) { - warnArgs.push(` -`, ...formatTrace(trace)); - } - console.warn(...warnArgs); - } - resetTracking(); -} -function getComponentTrace() { - let currentVNode = stack[stack.length - 1]; - if (!currentVNode) { - return []; - } - const normalizedStack = []; - while (currentVNode) { - const last = normalizedStack[0]; - if (last && last.vnode === currentVNode) { - last.recurseCount++; - } else { - normalizedStack.push({ - vnode: currentVNode, - recurseCount: 0 - }); - } - const parentInstance = currentVNode.component && currentVNode.component.parent; - currentVNode = parentInstance && parentInstance.vnode; - } - return normalizedStack; -} -function formatTrace(trace) { - const logs = []; - trace.forEach((entry, i) => { - logs.push(...i === 0 ? [] : [` -`], ...formatTraceEntry(entry)); - }); - return logs; -} -function formatTraceEntry({ vnode, recurseCount }) { - const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; - const isRoot = vnode.component ? vnode.component.parent == null : false; - const open = ` at <${formatComponentName( - vnode.component, - vnode.type, - isRoot - )}`; - const close = `>` + postfix; - return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; -} -function formatProps(props) { - const res = []; - const keys = Object.keys(props); - keys.slice(0, 3).forEach((key) => { - res.push(...formatProp(key, props[key])); - }); - if (keys.length > 3) { - res.push(` ...`); - } - return res; -} -function formatProp(key, value, raw) { - if (shared.isString(value)) { - value = JSON.stringify(value); - return raw ? value : [`${key}=${value}`]; - } else if (typeof value === "number" || typeof value === "boolean" || value == null) { - return raw ? value : [`${key}=${value}`]; - } else if (isRef(value)) { - value = formatProp(key, toRaw(value.value), true); - return raw ? value : [`${key}=Ref<`, value, `>`]; - } else if (shared.isFunction(value)) { - return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; - } else { - value = toRaw(value); - return raw ? value : [`${key}=`, value]; - } -} - -const ErrorTypeStrings = { - ["sp"]: "serverPrefetch hook", - ["bc"]: "beforeCreate hook", - ["c"]: "created hook", - ["bm"]: "beforeMount hook", - ["m"]: "mounted hook", - ["bu"]: "beforeUpdate hook", - ["u"]: "updated", - ["bum"]: "beforeUnmount hook", - ["um"]: "unmounted hook", - ["a"]: "activated hook", - ["da"]: "deactivated hook", - ["ec"]: "errorCaptured hook", - ["rtc"]: "renderTracked hook", - ["rtg"]: "renderTriggered hook", - [0]: "setup function", - [1]: "render function", - [2]: "watcher getter", - [3]: "watcher callback", - [4]: "watcher cleanup function", - [5]: "native event handler", - [6]: "component event handler", - [7]: "vnode hook", - [8]: "directive hook", - [9]: "transition hook", - [10]: "app errorHandler", - [11]: "app warnHandler", - [12]: "ref function", - [13]: "async component loader", - [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" -}; -function callWithErrorHandling(fn, instance, type, args) { - let res; - try { - res = args ? fn(...args) : fn(); - } catch (err) { - handleError(err, instance, type); - } - return res; -} -function handleError(err, instance, type, throwInDev = true) { - const contextVNode = instance ? instance.vnode : null; - if (instance) { - let cur = instance.parent; - const exposedInstance = instance.proxy; - const errorInfo = ErrorTypeStrings[type] ; - while (cur) { - const errorCapturedHooks = cur.ec; - if (errorCapturedHooks) { - for (let i = 0; i < errorCapturedHooks.length; i++) { - if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { - return; - } - } - } - cur = cur.parent; - } - const appErrorHandler = instance.appContext.config.errorHandler; - if (appErrorHandler) { - callWithErrorHandling( - appErrorHandler, - null, - 10, - [err, exposedInstance, errorInfo] - ); - return; - } - } - logError(err, type, contextVNode, throwInDev); -} -function logError(err, type, contextVNode, throwInDev = true) { - { - const info = ErrorTypeStrings[type]; - if (contextVNode) { - pushWarningContext(contextVNode); - } - warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`); - if (contextVNode) { - popWarningContext(); - } - if (throwInDev) { - throw err; - } else { - console.error(err); - } - } -} - -let globalCurrentInstanceSetters; -let settersKey = "__VUE_INSTANCE_SETTERS__"; -{ - if (!(globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey])) { - globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey] = []; - } - globalCurrentInstanceSetters.push((i) => i); -} -const classifyRE = /(?:^|[-_])(\w)/g; -const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); -function getComponentName(Component, includeInferred = true) { - return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; -} -function formatComponentName(instance, Component, isRoot = false) { - let name = getComponentName(Component); - if (!name && Component.__file) { - const match = Component.__file.match(/([^/\\]+)\.\w+$/); - if (match) { - name = match[1]; - } - } - if (!name && instance && instance.parent) { - const inferFromRegistry = (registry) => { - for (const key in registry) { - if (registry[key] === Component) { - return key; - } - } - }; - name = inferFromRegistry( - instance.components || instance.parent.type.components - ) || inferFromRegistry(instance.appContext.components); - } - return name ? classify(name) : isRoot ? `App` : `Anonymous`; -} - -function ssrRenderList(source, renderItem) { - if (shared.isArray(source) || shared.isString(source)) { - for (let i = 0, l = source.length; i < l; i++) { - renderItem(source[i], i); - } - } else if (typeof source === "number") { - if (!Number.isInteger(source)) { - warn(`The v-for range expect an integer value but got ${source}.`); - return; - } - for (let i = 0; i < source; i++) { - renderItem(i + 1, i); - } - } else if (shared.isObject(source)) { - if (source[Symbol.iterator]) { - const arr = Array.from(source); - for (let i = 0, l = arr.length; i < l; i++) { - renderItem(arr[i], i); - } - } else { - const keys = Object.keys(source); - for (let i = 0, l = keys.length; i < l; i++) { - const key = keys[i]; - renderItem(source[key], key, i); - } - } - } -} - -async function ssrRenderSuspense(push, { default: renderContent }) { - if (renderContent) { - renderContent(); - } else { - push(`<!---->`); - } -} - -function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { - if (typeof dir !== "function" && dir.getSSRProps) { - return dir.getSSRProps( - { - dir, - instance, - value, - oldValue: void 0, - arg, - modifiers - }, - null - ) || {}; - } - return {}; -} - -const ssrLooseEqual = shared.looseEqual; -function ssrLooseContain(arr, value) { - return shared.looseIndexOf(arr, value) > -1; -} -function ssrRenderDynamicModel(type, model, value) { - switch (type) { - case "radio": - return shared.looseEqual(model, value) ? " checked" : ""; - case "checkbox": - return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; - default: - return ssrRenderAttr("value", model); - } -} -function ssrGetDynamicModelProps(existingProps = {}, model) { - const { type, value } = existingProps; - switch (type) { - case "radio": - return shared.looseEqual(model, value) ? { checked: true } : null; - case "checkbox": - return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; - default: - return { value: model }; - } -} - -var helpers = /*#__PURE__*/Object.freeze({ - __proto__: null, - ssrGetDirectiveProps: ssrGetDirectiveProps, - ssrGetDynamicModelProps: ssrGetDynamicModelProps, - ssrIncludeBooleanAttr: shared.includeBooleanAttr, - ssrInterpolate: ssrInterpolate, - ssrLooseContain: ssrLooseContain, - ssrLooseEqual: ssrLooseEqual, - ssrRenderAttr: ssrRenderAttr, - ssrRenderAttrs: ssrRenderAttrs, - ssrRenderClass: ssrRenderClass, - ssrRenderComponent: ssrRenderComponent, - ssrRenderDynamicAttr: ssrRenderDynamicAttr, - ssrRenderDynamicModel: ssrRenderDynamicModel, - ssrRenderList: ssrRenderList, - ssrRenderSlot: ssrRenderSlot, - ssrRenderSlotInner: ssrRenderSlotInner, - ssrRenderStyle: ssrRenderStyle, - ssrRenderSuspense: ssrRenderSuspense, - ssrRenderTeleport: ssrRenderTeleport, - ssrRenderVNode: renderVNode -}); - -const compileCache = /* @__PURE__ */ Object.create(null); -function ssrCompile(template, instance) { - const Component = instance.type; - const { isCustomElement, compilerOptions } = instance.appContext.config; - const { delimiters, compilerOptions: componentCompilerOptions } = Component; - const finalCompilerOptions = shared.extend( - shared.extend( - { - isCustomElement, - delimiters - }, - compilerOptions - ), - componentCompilerOptions - ); - finalCompilerOptions.isCustomElement = finalCompilerOptions.isCustomElement || shared.NO; - finalCompilerOptions.isNativeTag = finalCompilerOptions.isNativeTag || shared.NO; - const cacheKey = JSON.stringify( - { - template, - compilerOptions: finalCompilerOptions - }, - (key, value) => { - return shared.isFunction(value) ? value.toString() : value; - } - ); - const cached = compileCache[cacheKey]; - if (cached) { - return cached; - } - finalCompilerOptions.onError = (err) => { - { - const message = `[@vue/server-renderer] Template compilation error: ${err.message}`; - const codeFrame = err.loc && shared.generateCodeFrame( - template, - err.loc.start.offset, - err.loc.end.offset - ); - Vue.warn(codeFrame ? `${message} -${codeFrame}` : message); - } - }; - const { code } = compilerSsr.compile(template, finalCompilerOptions); - const requireMap = { - vue: Vue__namespace, - "vue/server-renderer": helpers - }; - const fakeRequire = (id) => requireMap[id]; - return compileCache[cacheKey] = Function("require", code)(fakeRequire); -} - -const { - createComponentInstance, - setCurrentRenderingInstance, - setupComponent, - renderComponentRoot, - normalizeVNode -} = Vue.ssrUtils; -function createBuffer() { - let appendable = false; - const buffer = []; - return { - getBuffer() { - return buffer; - }, - push(item) { - const isStringItem = shared.isString(item); - if (appendable && isStringItem) { - buffer[buffer.length - 1] += item; - } else { - buffer.push(item); - } - appendable = isStringItem; - if (shared.isPromise(item) || shared.isArray(item) && item.hasAsync) { - buffer.hasAsync = true; - } - } - }; -} -function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { - const instance = createComponentInstance(vnode, parentComponent, null); - const res = setupComponent( - instance, - true - /* isSSR */ - ); - const hasAsyncSetup = shared.isPromise(res); - const prefetches = instance.sp; - if (hasAsyncSetup || prefetches) { - let p = hasAsyncSetup ? res : Promise.resolve(); - if (prefetches) { - p = p.then( - () => Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy))) - ).catch(() => { - }); - } - return p.then(() => renderComponentSubTree(instance, slotScopeId)); - } else { - return renderComponentSubTree(instance, slotScopeId); - } -} -function renderComponentSubTree(instance, slotScopeId) { - const comp = instance.type; - const { getBuffer, push } = createBuffer(); - if (shared.isFunction(comp)) { - let root = renderComponentRoot(instance); - if (!comp.props) { - for (const key in instance.attrs) { - if (key.startsWith(`data-v-`)) { - (root.props || (root.props = {}))[key] = ``; - } - } - } - renderVNode(push, instance.subTree = root, instance, slotScopeId); - } else { - if ((!instance.render || instance.render === shared.NOOP) && !instance.ssrRender && !comp.ssrRender && shared.isString(comp.template)) { - comp.ssrRender = ssrCompile(comp.template, instance); - } - for (const e of instance.scope.effects) { - if (e.computed) - e.computed._cacheable = true; - } - const ssrRender = instance.ssrRender || comp.ssrRender; - if (ssrRender) { - let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; - let hasCloned = false; - let cur = instance; - while (true) { - const scopeId = cur.vnode.scopeId; - if (scopeId) { - if (!hasCloned) { - attrs = { ...attrs }; - hasCloned = true; - } - attrs[scopeId] = ""; - } - const parent = cur.parent; - if (parent && parent.subTree && parent.subTree === cur.vnode) { - cur = parent; - } else { - break; - } - } - if (slotScopeId) { - if (!hasCloned) - attrs = { ...attrs }; - attrs[slotScopeId.trim()] = ""; - } - const prev = setCurrentRenderingInstance(instance); - try { - ssrRender( - instance.proxy, - push, - instance, - attrs, - // compiler-optimized bindings - instance.props, - instance.setupState, - instance.data, - instance.ctx - ); - } finally { - setCurrentRenderingInstance(prev); - } - } else if (instance.render && instance.render !== shared.NOOP) { - renderVNode( - push, - instance.subTree = renderComponentRoot(instance), - instance, - slotScopeId - ); - } else { - const componentName = comp.name || comp.__file || `<Anonymous>`; - Vue.warn(`Component ${componentName} is missing template or render function.`); - push(`<!---->`); - } - } - return getBuffer(); -} -function renderVNode(push, vnode, parentComponent, slotScopeId) { - const { type, shapeFlag, children } = vnode; - switch (type) { - case Vue.Text: - push(shared.escapeHtml(children)); - break; - case Vue.Comment: - push( - children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->` - ); - break; - case Vue.Static: - push(children); - break; - case Vue.Fragment: - if (vnode.slotScopeIds) { - slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); - } - push(`<!--[-->`); - renderVNodeChildren( - push, - children, - parentComponent, - slotScopeId - ); - push(`<!--]-->`); - break; - default: - if (shapeFlag & 1) { - renderElementVNode(push, vnode, parentComponent, slotScopeId); - } else if (shapeFlag & 6) { - push(renderComponentVNode(vnode, parentComponent, slotScopeId)); - } else if (shapeFlag & 64) { - renderTeleportVNode(push, vnode, parentComponent, slotScopeId); - } else if (shapeFlag & 128) { - renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); - } else { - Vue.warn( - "[@vue/server-renderer] Invalid VNode type:", - type, - `(${typeof type})` - ); - } - } -} -function renderVNodeChildren(push, children, parentComponent, slotScopeId) { - for (let i = 0; i < children.length; i++) { - renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); - } -} -function renderElementVNode(push, vnode, parentComponent, slotScopeId) { - const tag = vnode.type; - let { props, children, shapeFlag, scopeId, dirs } = vnode; - let openTag = `<${tag}`; - if (dirs) { - props = applySSRDirectives(vnode, props, dirs); - } - if (props) { - openTag += ssrRenderAttrs(props, tag); - } - if (scopeId) { - openTag += ` ${scopeId}`; - } - let curParent = parentComponent; - let curVnode = vnode; - while (curParent && curVnode === curParent.subTree) { - curVnode = curParent.vnode; - if (curVnode.scopeId) { - openTag += ` ${curVnode.scopeId}`; - } - curParent = curParent.parent; - } - if (slotScopeId) { - openTag += ` ${slotScopeId}`; - } - push(openTag + `>`); - if (!shared.isVoidTag(tag)) { - let hasChildrenOverride = false; - if (props) { - if (props.innerHTML) { - hasChildrenOverride = true; - push(props.innerHTML); - } else if (props.textContent) { - hasChildrenOverride = true; - push(shared.escapeHtml(props.textContent)); - } else if (tag === "textarea" && props.value) { - hasChildrenOverride = true; - push(shared.escapeHtml(props.value)); - } - } - if (!hasChildrenOverride) { - if (shapeFlag & 8) { - push(shared.escapeHtml(children)); - } else if (shapeFlag & 16) { - renderVNodeChildren( - push, - children, - parentComponent, - slotScopeId - ); - } - } - push(`</${tag}>`); - } -} -function applySSRDirectives(vnode, rawProps, dirs) { - const toMerge = []; - for (let i = 0; i < dirs.length; i++) { - const binding = dirs[i]; - const { - dir: { getSSRProps } - } = binding; - if (getSSRProps) { - const props = getSSRProps(binding, vnode); - if (props) - toMerge.push(props); - } - } - return Vue.mergeProps(rawProps || {}, ...toMerge); -} -function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { - const target = vnode.props && vnode.props.to; - const disabled = vnode.props && vnode.props.disabled; - if (!target) { - if (!disabled) { - Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`); - } - return []; - } - if (!shared.isString(target)) { - Vue.warn( - `[@vue/server-renderer] Teleport target must be a query selector string.` - ); - return []; - } - ssrRenderTeleport( - push, - (push2) => { - renderVNodeChildren( - push2, - vnode.children, - parentComponent, - slotScopeId - ); - }, - target, - disabled || disabled === "", - parentComponent - ); -} - -const { isVNode: isVNode$1 } = Vue.ssrUtils; -async function unrollBuffer$1(buffer) { - if (buffer.hasAsync) { - let ret = ""; - for (let i = 0; i < buffer.length; i++) { - let item = buffer[i]; - if (shared.isPromise(item)) { - item = await item; - } - if (shared.isString(item)) { - ret += item; - } else { - ret += await unrollBuffer$1(item); - } - } - return ret; - } else { - return unrollBufferSync$1(buffer); - } -} -function unrollBufferSync$1(buffer) { - let ret = ""; - for (let i = 0; i < buffer.length; i++) { - let item = buffer[i]; - if (shared.isString(item)) { - ret += item; - } else { - ret += unrollBufferSync$1(item); - } - } - return ret; -} -async function renderToString(input, context = {}) { - if (isVNode$1(input)) { - return renderToString(Vue.createApp({ render: () => input }), context); - } - const vnode = Vue.createVNode(input._component, input._props); - vnode.appContext = input._context; - input.provide(Vue.ssrContextKey, context); - const buffer = await renderComponentVNode(vnode); - const result = await unrollBuffer$1(buffer); - await resolveTeleports(context); - if (context.__watcherHandles) { - for (const unwatch of context.__watcherHandles) { - unwatch(); - } - } - return result; -} -async function resolveTeleports(context) { - if (context.__teleportBuffers) { - context.teleports = context.teleports || {}; - for (const key in context.__teleportBuffers) { - context.teleports[key] = await unrollBuffer$1( - await Promise.all([context.__teleportBuffers[key]]) - ); - } - } -} - -const { isVNode } = Vue.ssrUtils; -async function unrollBuffer(buffer, stream) { - if (buffer.hasAsync) { - for (let i = 0; i < buffer.length; i++) { - let item = buffer[i]; - if (shared.isPromise(item)) { - item = await item; - } - if (shared.isString(item)) { - stream.push(item); - } else { - await unrollBuffer(item, stream); - } - } - } else { - unrollBufferSync(buffer, stream); - } -} -function unrollBufferSync(buffer, stream) { - for (let i = 0; i < buffer.length; i++) { - let item = buffer[i]; - if (shared.isString(item)) { - stream.push(item); - } else { - unrollBufferSync(item, stream); - } - } -} -function renderToSimpleStream(input, context, stream) { - if (isVNode(input)) { - return renderToSimpleStream( - Vue.createApp({ render: () => input }), - context, - stream - ); - } - const vnode = Vue.createVNode(input._component, input._props); - vnode.appContext = input._context; - input.provide(Vue.ssrContextKey, context); - Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => { - if (context.__watcherHandles) { - for (const unwatch of context.__watcherHandles) { - unwatch(); - } - } - }).then(() => stream.push(null)).catch((error) => { - stream.destroy(error); - }); - return stream; -} -function renderToStream(input, context = {}) { - console.warn( - `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` - ); - return renderToNodeStream(input, context); -} -function renderToNodeStream(input, context = {}) { - const stream = new (require("stream")).Readable({ read() { - } }) ; - if (!stream) { - throw new Error( - `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` - ); - } - return renderToSimpleStream(input, context, stream); -} -function pipeToNodeWritable(input, context = {}, writable) { - renderToSimpleStream(input, context, { - push(content) { - if (content != null) { - writable.write(content); - } else { - writable.end(); - } - }, - destroy(err) { - writable.destroy(err); - } - }); -} -function renderToWebStream(input, context = {}) { - if (typeof ReadableStream !== "function") { - throw new Error( - `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` - ); - } - const encoder = new TextEncoder(); - let cancelled = false; - return new ReadableStream({ - start(controller) { - renderToSimpleStream(input, context, { - push(content) { - if (cancelled) - return; - if (content != null) { - controller.enqueue(encoder.encode(content)); - } else { - controller.close(); - } - }, - destroy(err) { - controller.error(err); - } - }); - }, - cancel() { - cancelled = true; - } - }); -} -function pipeToWebWritable(input, context = {}, writable) { - const writer = writable.getWriter(); - const encoder = new TextEncoder(); - let hasReady = false; - try { - hasReady = shared.isPromise(writer.ready); - } catch (e) { - } - renderToSimpleStream(input, context, { - async push(content) { - if (hasReady) { - await writer.ready; - } - if (content != null) { - return writer.write(encoder.encode(content)); - } else { - return writer.close(); - } - }, - destroy(err) { - console.log(err); - writer.close(); - } - }); -} - -Vue.initDirectivesForSSR(); - -exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr; -exports.pipeToNodeWritable = pipeToNodeWritable; -exports.pipeToWebWritable = pipeToWebWritable; -exports.renderToNodeStream = renderToNodeStream; -exports.renderToSimpleStream = renderToSimpleStream; -exports.renderToStream = renderToStream; -exports.renderToString = renderToString; -exports.renderToWebStream = renderToWebStream; -exports.ssrGetDirectiveProps = ssrGetDirectiveProps; -exports.ssrGetDynamicModelProps = ssrGetDynamicModelProps; -exports.ssrInterpolate = ssrInterpolate; -exports.ssrLooseContain = ssrLooseContain; -exports.ssrLooseEqual = ssrLooseEqual; -exports.ssrRenderAttr = ssrRenderAttr; -exports.ssrRenderAttrs = ssrRenderAttrs; -exports.ssrRenderClass = ssrRenderClass; -exports.ssrRenderComponent = ssrRenderComponent; -exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr; -exports.ssrRenderDynamicModel = ssrRenderDynamicModel; -exports.ssrRenderList = ssrRenderList; -exports.ssrRenderSlot = ssrRenderSlot; -exports.ssrRenderSlotInner = ssrRenderSlotInner; -exports.ssrRenderStyle = ssrRenderStyle; -exports.ssrRenderSuspense = ssrRenderSuspense; -exports.ssrRenderTeleport = ssrRenderTeleport; -exports.ssrRenderVNode = renderVNode; diff --git a/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js b/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js index bc53616..b85ba7a 100644 --- a/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +++ b/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js @@ -1,3 +1,8 @@ +/** +* @vue/server-renderer v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -19,7 +24,7 @@ function _interopNamespaceDefault(e) { var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue); -const shouldIgnoreProp = shared.makeMap( +const shouldIgnoreProp = /* @__PURE__ */ shared.makeMap( `,key,ref,innerHTML,textContent,ref_key,ref_for` ); function ssrRenderAttrs(props, tag) { @@ -33,6 +38,8 @@ function ssrRenderAttrs(props, tag) { ret += ` class="${ssrRenderClass(value)}"`; } else if (key === "style") { ret += ` style="${ssrRenderStyle(value)}"`; + } else if (key === "className") { + ret += ` class="${String(value)}"`; } else { ret += ssrRenderDynamicAttr(key, value, tag); } @@ -40,7 +47,7 @@ function ssrRenderAttrs(props, tag) { return ret; } function ssrRenderDynamicAttr(key, value, tag) { - if (!isRenderableValue(value)) { + if (!shared.isRenderableAttrValue(value)) { return ``; } const attrKey = tag && (tag.indexOf("-") > 0 || shared.isSVGTag(tag)) ? key : shared.propsToAttrMap[key] || key.toLowerCase(); @@ -56,18 +63,11 @@ function ssrRenderDynamicAttr(key, value, tag) { } } function ssrRenderAttr(key, value) { - if (!isRenderableValue(value)) { + if (!shared.isRenderableAttrValue(value)) { return ``; } return ` ${key}="${shared.escapeHtml(value)}"`; } -function isRenderableValue(value) { - if (value == null) { - return false; - } - const type = typeof value; - return type === "string" || type === "number" || type === "boolean"; -} function ssrRenderClass(raw) { return shared.escapeHtml(shared.normalizeClass(raw)); } @@ -90,6 +90,7 @@ function ssrRenderComponent(comp, props = null, children = null, parentComponent ); } +const { ensureValidVNode } = Vue.ssrUtils; function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { push(`<!--[-->`); ssrRenderSlotInner( @@ -117,7 +118,17 @@ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, slotScopeId ? " " + slotScopeId : "" ); if (shared.isArray(ret)) { - renderVNodeChildren(push, ret, parentComponent, slotScopeId); + const validSlotContent = ensureValidVNode(ret); + if (validSlotContent) { + renderVNodeChildren( + push, + validSlotContent, + parentComponent, + slotScopeId + ); + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } } else { let isEmptySlot = true; if (transition) { @@ -135,7 +146,13 @@ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, fallbackRenderFn(); } } else { - for (let i = 0; i < slotBuffer.length; i++) { + let start = 0; + let end = slotBuffer.length; + if (transition && slotBuffer[0] === "<!--[-->" && slotBuffer[end - 1] === "<!--]-->") { + start++; + end--; + } + for (let i = start; i < end; i++) { push(slotBuffer[i]); } } @@ -144,13 +161,11 @@ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, fallbackRenderFn(); } } -const commentTestRE = /^<!--.*-->$/s; +const commentTestRE = /^<!--[\s\S]*-->$/; const commentRE = /<!--[^]*?-->/gm; function isComment(item) { - if (typeof item !== "string" || !commentTestRE.test(item)) - return false; - if (item.length <= 8) - return true; + if (typeof item !== "string" || !commentTestRE.test(item)) return false; + if (item.length <= 8) return true; return !item.replace(commentRE, "").trim(); } @@ -163,9 +178,10 @@ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parent let teleportContent; if (disabled) { contentRenderFn(parentPush); - teleportContent = `<!--teleport anchor-->`; + teleportContent = `<!--teleport start anchor--><!--teleport anchor-->`; } else { const { getBuffer, push } = createBuffer(); + push(`<!--teleport start anchor-->`); contentRenderFn(push); push(`<!--teleport anchor-->`); teleportContent = getBuffer(); @@ -216,7 +232,7 @@ function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { return dir.getSSRProps( { dir, - instance, + instance: Vue.ssrUtils.getComponentPublicInstance(instance.$), value, oldValue: void 0, arg, @@ -326,7 +342,9 @@ const { setCurrentRenderingInstance, setupComponent, renderComponentRoot, - normalizeVNode + normalizeVNode, + pushWarningContext, + popWarningContext } = Vue.ssrUtils; function createBuffer() { let appendable = false; @@ -339,9 +357,9 @@ function createBuffer() { const isStringItem = shared.isString(item); if (appendable && isStringItem) { buffer[buffer.length - 1] += item; - } else { - buffer.push(item); + return; } + buffer.push(item); appendable = isStringItem; if (shared.isPromise(item) || shared.isArray(item) && item.hasAsync) { buffer.hasAsync = true; @@ -350,22 +368,27 @@ function createBuffer() { }; } function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { - const instance = createComponentInstance(vnode, parentComponent, null); + const instance = vnode.component = createComponentInstance( + vnode, + parentComponent, + null + ); const res = setupComponent( instance, true /* isSSR */ ); const hasAsyncSetup = shared.isPromise(res); - const prefetches = instance.sp; + let prefetches = instance.sp; if (hasAsyncSetup || prefetches) { - let p = hasAsyncSetup ? res : Promise.resolve(); - if (prefetches) { - p = p.then( - () => Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy))) - ).catch(() => { - }); - } + const p = Promise.resolve(res).then(() => { + if (hasAsyncSetup) prefetches = instance.sp; + if (prefetches) { + return Promise.all( + prefetches.map((prefetch) => prefetch.call(instance.proxy)) + ); + } + }).catch(shared.NOOP); return p.then(() => renderComponentSubTree(instance, slotScopeId)); } else { return renderComponentSubTree(instance, slotScopeId); @@ -388,10 +411,6 @@ function renderComponentSubTree(instance, slotScopeId) { if ((!instance.render || instance.render === shared.NOOP) && !instance.ssrRender && !comp.ssrRender && shared.isString(comp.template)) { comp.ssrRender = ssrCompile(comp.template, instance); } - for (const e of instance.scope.effects) { - if (e.computed) - e.computed._cacheable = true; - } const ssrRender = instance.ssrRender || comp.ssrRender; if (ssrRender) { let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; @@ -414,9 +433,11 @@ function renderComponentSubTree(instance, slotScopeId) { } } if (slotScopeId) { - if (!hasCloned) - attrs = { ...attrs }; - attrs[slotScopeId.trim()] = ""; + if (!hasCloned) attrs = { ...attrs }; + const slotScopeIdList = slotScopeId.trim().split(" "); + for (let i = 0; i < slotScopeIdList.length; i++) { + attrs[slotScopeIdList[i]] = ""; + } } const prev = setCurrentRenderingInstance(instance); try { @@ -450,7 +471,10 @@ function renderComponentSubTree(instance, slotScopeId) { return getBuffer(); } function renderVNode(push, vnode, parentComponent, slotScopeId) { - const { type, shapeFlag, children } = vnode; + const { type, shapeFlag, children, dirs, props } = vnode; + if (dirs) { + vnode.props = applySSRDirectives(vnode, props, dirs); + } switch (type) { case Vue.Text: push(shared.escapeHtml(children)); @@ -501,11 +525,8 @@ function renderVNodeChildren(push, children, parentComponent, slotScopeId) { } function renderElementVNode(push, vnode, parentComponent, slotScopeId) { const tag = vnode.type; - let { props, children, shapeFlag, scopeId, dirs } = vnode; + let { props, children, shapeFlag, scopeId } = vnode; let openTag = `<${tag}`; - if (dirs) { - props = applySSRDirectives(vnode, props, dirs); - } if (props) { openTag += ssrRenderAttrs(props, tag); } @@ -563,8 +584,7 @@ function applySSRDirectives(vnode, rawProps, dirs) { } = binding; if (getSSRProps) { const props = getSSRProps(binding, vnode); - if (props) - toMerge.push(props); + if (props) toMerge.push(props); } } return Vue.mergeProps(rawProps || {}, ...toMerge); @@ -601,24 +621,36 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { } const { isVNode: isVNode$1 } = Vue.ssrUtils; -async function unrollBuffer$1(buffer) { - if (buffer.hasAsync) { - let ret = ""; - for (let i = 0; i < buffer.length; i++) { - let item = buffer[i]; - if (shared.isPromise(item)) { - item = await item; - } - if (shared.isString(item)) { - ret += item; - } else { - ret += await unrollBuffer$1(item); - } - } - return ret; - } else { - return unrollBufferSync$1(buffer); +function nestedUnrollBuffer(buffer, parentRet, startIndex) { + if (!buffer.hasAsync) { + return parentRet + unrollBufferSync$1(buffer); } + let ret = parentRet; + for (let i = startIndex; i < buffer.length; i += 1) { + const item = buffer[i]; + if (shared.isString(item)) { + ret += item; + continue; + } + if (shared.isPromise(item)) { + return item.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, ret, i); + }); + } + const result = nestedUnrollBuffer(item, ret, 0); + if (shared.isPromise(result)) { + return result.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, "", i); + }); + } + ret = result; + } + return ret; +} +function unrollBuffer$1(buffer) { + return nestedUnrollBuffer(buffer, "", 0); } function unrollBufferSync$1(buffer) { let ret = ""; @@ -717,7 +749,7 @@ function renderToStream(input, context = {}) { return renderToNodeStream(input, context); } function renderToNodeStream(input, context = {}) { - const stream = new (require("stream")).Readable({ read() { + const stream = new (require("node:stream")).Readable({ read() { } }) ; if (!stream) { throw new Error( @@ -752,8 +784,7 @@ function renderToWebStream(input, context = {}) { start(controller) { renderToSimpleStream(input, context, { push(content) { - if (cancelled) - return; + if (cancelled) return; if (content != null) { controller.enqueue(encoder.encode(content)); } else { diff --git a/.output/server/node_modules/@vue/server-renderer/index.js b/.output/server/node_modules/@vue/server-renderer/index.js deleted file mode 100644 index f5a3d90..0000000 --- a/.output/server/node_modules/@vue/server-renderer/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/server-renderer.cjs.prod.js') -} else { - module.exports = require('./dist/server-renderer.cjs.js') -} diff --git a/.output/server/node_modules/@vue/server-renderer/package.json b/.output/server/node_modules/@vue/server-renderer/package.json index ac3b53d..a75958e 100644 --- a/.output/server/node_modules/@vue/server-renderer/package.json +++ b/.output/server/node_modules/@vue/server-renderer/package.json @@ -1,6 +1,6 @@ { "name": "@vue/server-renderer", - "version": "3.3.9", + "version": "3.5.13", "description": "@vue/server-renderer", "main": "index.js", "module": "dist/server-renderer.esm-bundler.js", @@ -9,6 +9,20 @@ "index.js", "dist" ], + "exports": { + ".": { + "types": "./dist/server-renderer.d.ts", + "node": { + "production": "./dist/server-renderer.cjs.prod.js", + "development": "./dist/server-renderer.cjs.js", + "default": "./dist/server-renderer.cjs.prod.js" + }, + "module": "./dist/server-renderer.esm-bundler.js", + "import": "./dist/server-renderer.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, "buildOptions": { "name": "VueServerRenderer", "formats": [ @@ -32,10 +46,13 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/server-renderer#readme", "peerDependencies": { - "vue": "3.3.9" + "vue": "3.5.13" }, "dependencies": { - "@vue/compiler-ssr": "3.3.9", - "@vue/shared": "3.3.9" - } + "@vue/shared": "3.5.13", + "@vue/compiler-ssr": "3.5.13" + }, + "__npminstall_done": true, + "_from": "@vue/server-renderer@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/@vue/shared/dist/shared.cjs.js b/.output/server/node_modules/@vue/shared/dist/shared.cjs.js deleted file mode 100644 index 66a7b39..0000000 --- a/.output/server/node_modules/@vue/shared/dist/shared.cjs.js +++ /dev/null @@ -1,474 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function makeMap(str, expectsLowerCase) { - const map = /* @__PURE__ */ Object.create(null); - const list = str.split(","); - for (let i = 0; i < list.length; i++) { - map[list[i]] = true; - } - return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; -} - -const EMPTY_OBJ = Object.freeze({}) ; -const EMPTY_ARR = Object.freeze([]) ; -const NOOP = () => { -}; -const NO = () => false; -const onRE = /^on[^a-z]/; -const isOn = (key) => onRE.test(key); -const isModelListener = (key) => key.startsWith("onUpdate:"); -const extend = Object.assign; -const remove = (arr, el) => { - const i = arr.indexOf(el); - if (i > -1) { - arr.splice(i, 1); - } -}; -const hasOwnProperty = Object.prototype.hasOwnProperty; -const hasOwn = (val, key) => hasOwnProperty.call(val, key); -const isArray = Array.isArray; -const isMap = (val) => toTypeString(val) === "[object Map]"; -const isSet = (val) => toTypeString(val) === "[object Set]"; -const isDate = (val) => toTypeString(val) === "[object Date]"; -const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; -const isFunction = (val) => typeof val === "function"; -const isString = (val) => typeof val === "string"; -const isSymbol = (val) => typeof val === "symbol"; -const isObject = (val) => val !== null && typeof val === "object"; -const isPromise = (val) => { - return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); -}; -const objectToString = Object.prototype.toString; -const toTypeString = (value) => objectToString.call(value); -const toRawType = (value) => { - return toTypeString(value).slice(8, -1); -}; -const isPlainObject = (val) => toTypeString(val) === "[object Object]"; -const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; -const isReservedProp = /* @__PURE__ */ makeMap( - // the leading comma is intentional so empty string "" is also included - ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" -); -const isBuiltInDirective = /* @__PURE__ */ makeMap( - "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" -); -const cacheStringFunction = (fn) => { - const cache = /* @__PURE__ */ Object.create(null); - return (str) => { - const hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; -}; -const camelizeRE = /-(\w)/g; -const camelize = cacheStringFunction((str) => { - return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); -}); -const hyphenateRE = /\B([A-Z])/g; -const hyphenate = cacheStringFunction( - (str) => str.replace(hyphenateRE, "-$1").toLowerCase() -); -const capitalize = cacheStringFunction((str) => { - return str.charAt(0).toUpperCase() + str.slice(1); -}); -const toHandlerKey = cacheStringFunction((str) => { - const s = str ? `on${capitalize(str)}` : ``; - return s; -}); -const hasChanged = (value, oldValue) => !Object.is(value, oldValue); -const invokeArrayFns = (fns, arg) => { - for (let i = 0; i < fns.length; i++) { - fns[i](arg); - } -}; -const def = (obj, key, value) => { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - value - }); -}; -const looseToNumber = (val) => { - const n = parseFloat(val); - return isNaN(n) ? val : n; -}; -const toNumber = (val) => { - const n = isString(val) ? Number(val) : NaN; - return isNaN(n) ? val : n; -}; -let _globalThis; -const getGlobalThis = () => { - return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); -}; -const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; -function genPropsAccessExp(name) { - return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; -} - -const PatchFlagNames = { - [1]: `TEXT`, - [2]: `CLASS`, - [4]: `STYLE`, - [8]: `PROPS`, - [16]: `FULL_PROPS`, - [32]: `NEED_HYDRATION`, - [64]: `STABLE_FRAGMENT`, - [128]: `KEYED_FRAGMENT`, - [256]: `UNKEYED_FRAGMENT`, - [512]: `NEED_PATCH`, - [1024]: `DYNAMIC_SLOTS`, - [2048]: `DEV_ROOT_FRAGMENT`, - [-1]: `HOISTED`, - [-2]: `BAIL` -}; - -const slotFlagsText = { - [1]: "STABLE", - [2]: "DYNAMIC", - [3]: "FORWARDED" -}; - -const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; -const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); -const isGloballyWhitelisted = isGloballyAllowed; - -const range = 2; -function generateCodeFrame(source, start = 0, end = source.length) { - let lines = source.split(/(\r?\n)/); - const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); - lines = lines.filter((_, idx) => idx % 2 === 0); - let count = 0; - const res = []; - for (let i = 0; i < lines.length; i++) { - count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); - if (count >= start) { - for (let j = i - range; j <= i + range || end > count; j++) { - if (j < 0 || j >= lines.length) - continue; - const line = j + 1; - res.push( - `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` - ); - const lineLength = lines[j].length; - const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; - if (j === i) { - const pad = start - (count - (lineLength + newLineSeqLength)); - const length = Math.max( - 1, - end > count ? lineLength - pad : end - start - ); - res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); - } else if (j > i) { - if (end > count) { - const length = Math.max(Math.min(end - count, lineLength), 1); - res.push(` | ` + "^".repeat(length)); - } - count += lineLength + newLineSeqLength; - } - } - break; - } - } - return res.join("\n"); -} - -function normalizeStyle(value) { - if (isArray(value)) { - const res = {}; - for (let i = 0; i < value.length; i++) { - const item = value[i]; - const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); - if (normalized) { - for (const key in normalized) { - res[key] = normalized[key]; - } - } - } - return res; - } else if (isString(value) || isObject(value)) { - return value; - } -} -const listDelimiterRE = /;(?![^(]*\))/g; -const propertyDelimiterRE = /:([^]+)/; -const styleCommentRE = /\/\*[^]*?\*\//g; -function parseStringStyle(cssText) { - const ret = {}; - cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { - if (item) { - const tmp = item.split(propertyDelimiterRE); - tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); - } - }); - return ret; -} -function stringifyStyle(styles) { - let ret = ""; - if (!styles || isString(styles)) { - return ret; - } - for (const key in styles) { - const value = styles[key]; - const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); - if (isString(value) || typeof value === "number") { - ret += `${normalizedKey}:${value};`; - } - } - return ret; -} -function normalizeClass(value) { - let res = ""; - if (isString(value)) { - res = value; - } else if (isArray(value)) { - for (let i = 0; i < value.length; i++) { - const normalized = normalizeClass(value[i]); - if (normalized) { - res += normalized + " "; - } - } - } else if (isObject(value)) { - for (const name in value) { - if (value[name]) { - res += name + " "; - } - } - } - return res.trim(); -} -function normalizeProps(props) { - if (!props) - return null; - let { class: klass, style } = props; - if (klass && !isString(klass)) { - props.class = normalizeClass(klass); - } - if (style) { - props.style = normalizeStyle(style); - } - return props; -} - -const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; -const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; -const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; -const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); -const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); -const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); - -const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; -const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); -const isBooleanAttr = /* @__PURE__ */ makeMap( - specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` -); -function includeBooleanAttr(value) { - return !!value || value === ""; -} -const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; -const attrValidationCache = {}; -function isSSRSafeAttrName(name) { - if (attrValidationCache.hasOwnProperty(name)) { - return attrValidationCache[name]; - } - const isUnsafe = unsafeAttrCharRE.test(name); - if (isUnsafe) { - console.error(`unsafe attribute name: ${name}`); - } - return attrValidationCache[name] = !isUnsafe; -} -const propsToAttrMap = { - acceptCharset: "accept-charset", - className: "class", - htmlFor: "for", - httpEquiv: "http-equiv" -}; -const isKnownHtmlAttr = /* @__PURE__ */ makeMap( - `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` -); -const isKnownSvgAttr = /* @__PURE__ */ makeMap( - `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` -); - -const escapeRE = /["'&<>]/; -function escapeHtml(string) { - const str = "" + string; - const match = escapeRE.exec(str); - if (!match) { - return str; - } - let html = ""; - let escaped; - let index; - let lastIndex = 0; - for (index = match.index; index < str.length; index++) { - switch (str.charCodeAt(index)) { - case 34: - escaped = """; - break; - case 38: - escaped = "&"; - break; - case 39: - escaped = "'"; - break; - case 60: - escaped = "<"; - break; - case 62: - escaped = ">"; - break; - default: - continue; - } - if (lastIndex !== index) { - html += str.slice(lastIndex, index); - } - lastIndex = index + 1; - html += escaped; - } - return lastIndex !== index ? html + str.slice(lastIndex, index) : html; -} -const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; -function escapeHtmlComment(src) { - return src.replace(commentStripRE, ""); -} - -function looseCompareArrays(a, b) { - if (a.length !== b.length) - return false; - let equal = true; - for (let i = 0; equal && i < a.length; i++) { - equal = looseEqual(a[i], b[i]); - } - return equal; -} -function looseEqual(a, b) { - if (a === b) - return true; - let aValidType = isDate(a); - let bValidType = isDate(b); - if (aValidType || bValidType) { - return aValidType && bValidType ? a.getTime() === b.getTime() : false; - } - aValidType = isSymbol(a); - bValidType = isSymbol(b); - if (aValidType || bValidType) { - return a === b; - } - aValidType = isArray(a); - bValidType = isArray(b); - if (aValidType || bValidType) { - return aValidType && bValidType ? looseCompareArrays(a, b) : false; - } - aValidType = isObject(a); - bValidType = isObject(b); - if (aValidType || bValidType) { - if (!aValidType || !bValidType) { - return false; - } - const aKeysCount = Object.keys(a).length; - const bKeysCount = Object.keys(b).length; - if (aKeysCount !== bKeysCount) { - return false; - } - for (const key in a) { - const aHasKey = a.hasOwnProperty(key); - const bHasKey = b.hasOwnProperty(key); - if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { - return false; - } - } - } - return String(a) === String(b); -} -function looseIndexOf(arr, val) { - return arr.findIndex((item) => looseEqual(item, val)); -} - -const toDisplayString = (val) => { - return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); -}; -const replacer = (_key, val) => { - if (val && val.__v_isRef) { - return replacer(_key, val.value); - } else if (isMap(val)) { - return { - [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { - entries[`${key} =>`] = val2; - return entries; - }, {}) - }; - } else if (isSet(val)) { - return { - [`Set(${val.size})`]: [...val.values()] - }; - } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { - return String(val); - } - return val; -}; - -exports.EMPTY_ARR = EMPTY_ARR; -exports.EMPTY_OBJ = EMPTY_OBJ; -exports.NO = NO; -exports.NOOP = NOOP; -exports.PatchFlagNames = PatchFlagNames; -exports.camelize = camelize; -exports.capitalize = capitalize; -exports.def = def; -exports.escapeHtml = escapeHtml; -exports.escapeHtmlComment = escapeHtmlComment; -exports.extend = extend; -exports.genPropsAccessExp = genPropsAccessExp; -exports.generateCodeFrame = generateCodeFrame; -exports.getGlobalThis = getGlobalThis; -exports.hasChanged = hasChanged; -exports.hasOwn = hasOwn; -exports.hyphenate = hyphenate; -exports.includeBooleanAttr = includeBooleanAttr; -exports.invokeArrayFns = invokeArrayFns; -exports.isArray = isArray; -exports.isBooleanAttr = isBooleanAttr; -exports.isBuiltInDirective = isBuiltInDirective; -exports.isDate = isDate; -exports.isFunction = isFunction; -exports.isGloballyAllowed = isGloballyAllowed; -exports.isGloballyWhitelisted = isGloballyWhitelisted; -exports.isHTMLTag = isHTMLTag; -exports.isIntegerKey = isIntegerKey; -exports.isKnownHtmlAttr = isKnownHtmlAttr; -exports.isKnownSvgAttr = isKnownSvgAttr; -exports.isMap = isMap; -exports.isModelListener = isModelListener; -exports.isObject = isObject; -exports.isOn = isOn; -exports.isPlainObject = isPlainObject; -exports.isPromise = isPromise; -exports.isRegExp = isRegExp; -exports.isReservedProp = isReservedProp; -exports.isSSRSafeAttrName = isSSRSafeAttrName; -exports.isSVGTag = isSVGTag; -exports.isSet = isSet; -exports.isSpecialBooleanAttr = isSpecialBooleanAttr; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isVoidTag = isVoidTag; -exports.looseEqual = looseEqual; -exports.looseIndexOf = looseIndexOf; -exports.looseToNumber = looseToNumber; -exports.makeMap = makeMap; -exports.normalizeClass = normalizeClass; -exports.normalizeProps = normalizeProps; -exports.normalizeStyle = normalizeStyle; -exports.objectToString = objectToString; -exports.parseStringStyle = parseStringStyle; -exports.propsToAttrMap = propsToAttrMap; -exports.remove = remove; -exports.slotFlagsText = slotFlagsText; -exports.stringifyStyle = stringifyStyle; -exports.toDisplayString = toDisplayString; -exports.toHandlerKey = toHandlerKey; -exports.toNumber = toNumber; -exports.toRawType = toRawType; -exports.toTypeString = toTypeString; diff --git a/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js b/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js index 3f0e390..14b1902 100644 --- a/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +++ b/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js @@ -1,14 +1,18 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); -function makeMap(str, expectsLowerCase) { +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { const map = /* @__PURE__ */ Object.create(null); - const list = str.split(","); - for (let i = 0; i < list.length; i++) { - map[list[i]] = true; - } - return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; } const EMPTY_OBJ = {}; @@ -16,8 +20,8 @@ const EMPTY_ARR = []; const NOOP = () => { }; const NO = () => false; -const onRE = /^on[^a-z]/; -const isOn = (key) => onRE.test(key); +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); const isModelListener = (key) => key.startsWith("onUpdate:"); const extend = Object.assign; const remove = (arr, el) => { @@ -62,9 +66,11 @@ const cacheStringFunction = (fn) => { }; }; const camelizeRE = /-(\w)/g; -const camelize = cacheStringFunction((str) => { - return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); -}); +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); const hyphenateRE = /\B([A-Z])/g; const hyphenate = cacheStringFunction( (str) => str.replace(hyphenateRE, "-$1").toLowerCase() @@ -72,20 +78,23 @@ const hyphenate = cacheStringFunction( const capitalize = cacheStringFunction((str) => { return str.charAt(0).toUpperCase() + str.slice(1); }); -const toHandlerKey = cacheStringFunction((str) => { - const s = str ? `on${capitalize(str)}` : ``; - return s; -}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); const hasChanged = (value, oldValue) => !Object.is(value, oldValue); -const invokeArrayFns = (fns, arg) => { +const invokeArrayFns = (fns, ...arg) => { for (let i = 0; i < fns.length; i++) { - fns[i](arg); + fns[i](...arg); } }; -const def = (obj, key, value) => { +const def = (obj, key, value, writable = false) => { Object.defineProperty(obj, key, { configurable: true, enumerable: false, + writable, value }); }; @@ -105,7 +114,43 @@ const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; function genPropsAccessExp(name) { return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; } +function genCacheKey(source, options) { + return source + JSON.stringify( + options, + (_, val) => typeof val === "function" ? val.toString() : val + ); +} +const PatchFlags = { + "TEXT": 1, + "1": "TEXT", + "CLASS": 2, + "2": "CLASS", + "STYLE": 4, + "4": "STYLE", + "PROPS": 8, + "8": "PROPS", + "FULL_PROPS": 16, + "16": "FULL_PROPS", + "NEED_HYDRATION": 32, + "32": "NEED_HYDRATION", + "STABLE_FRAGMENT": 64, + "64": "STABLE_FRAGMENT", + "KEYED_FRAGMENT": 128, + "128": "KEYED_FRAGMENT", + "UNKEYED_FRAGMENT": 256, + "256": "UNKEYED_FRAGMENT", + "NEED_PATCH": 512, + "512": "NEED_PATCH", + "DYNAMIC_SLOTS": 1024, + "1024": "DYNAMIC_SLOTS", + "DEV_ROOT_FRAGMENT": 2048, + "2048": "DEV_ROOT_FRAGMENT", + "CACHED": -1, + "-1": "CACHED", + "BAIL": -2, + "-2": "BAIL" +}; const PatchFlagNames = { [1]: `TEXT`, [2]: `CLASS`, @@ -123,18 +168,54 @@ const PatchFlagNames = { [-2]: `BAIL` }; +const ShapeFlags = { + "ELEMENT": 1, + "1": "ELEMENT", + "FUNCTIONAL_COMPONENT": 2, + "2": "FUNCTIONAL_COMPONENT", + "STATEFUL_COMPONENT": 4, + "4": "STATEFUL_COMPONENT", + "TEXT_CHILDREN": 8, + "8": "TEXT_CHILDREN", + "ARRAY_CHILDREN": 16, + "16": "ARRAY_CHILDREN", + "SLOTS_CHILDREN": 32, + "32": "SLOTS_CHILDREN", + "TELEPORT": 64, + "64": "TELEPORT", + "SUSPENSE": 128, + "128": "SUSPENSE", + "COMPONENT_SHOULD_KEEP_ALIVE": 256, + "256": "COMPONENT_SHOULD_KEEP_ALIVE", + "COMPONENT_KEPT_ALIVE": 512, + "512": "COMPONENT_KEPT_ALIVE", + "COMPONENT": 6, + "6": "COMPONENT" +}; + +const SlotFlags = { + "STABLE": 1, + "1": "STABLE", + "DYNAMIC": 2, + "2": "DYNAMIC", + "FORWARDED": 3, + "3": "FORWARDED" +}; const slotFlagsText = { [1]: "STABLE", [2]: "DYNAMIC", [3]: "FORWARDED" }; -const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); const isGloballyWhitelisted = isGloballyAllowed; const range = 2; function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; let lines = source.split(/(\r?\n)/); const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); lines = lines.filter((_, idx) => idx % 2 === 0); @@ -144,8 +225,7 @@ function generateCodeFrame(source, start = 0, end = source.length) { count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); if (count >= start) { for (let j = i - range; j <= i + range || end > count; j++) { - if (j < 0 || j >= lines.length) - continue; + if (j < 0 || j >= lines.length) continue; const line = j + 1; res.push( `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` @@ -204,14 +284,13 @@ function parseStringStyle(cssText) { return ret; } function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; let ret = ""; - if (!styles || isString(styles)) { - return ret; - } for (const key in styles) { const value = styles[key]; - const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); ret += `${normalizedKey}:${value};`; } } @@ -238,8 +317,7 @@ function normalizeClass(value) { return res.trim(); } function normalizeProps(props) { - if (!props) - return null; + if (!props) return null; let { class: klass, style } = props; if (klass && !isString(klass)) { props.class = normalizeClass(klass); @@ -252,9 +330,11 @@ function normalizeProps(props) { const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; @@ -287,8 +367,18 @@ const isKnownHtmlAttr = /* @__PURE__ */ makeMap( `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` ); const isKnownSvgAttr = /* @__PURE__ */ makeMap( - `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` ); +const isKnownMathMLAttr = /* @__PURE__ */ makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} const escapeRE = /["'&<>]/; function escapeHtml(string) { @@ -333,10 +423,16 @@ const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; function escapeHtmlComment(src) { return src.replace(commentStripRE, ""); } +const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => doubleEscape ? s === '"' ? '\\\\\\"' : `\\\\${s}` : `\\${s}` + ); +} function looseCompareArrays(a, b) { - if (a.length !== b.length) - return false; + if (a.length !== b.length) return false; let equal = true; for (let i = 0; equal && i < a.length; i++) { equal = looseEqual(a[i], b[i]); @@ -344,8 +440,7 @@ function looseCompareArrays(a, b) { return equal; } function looseEqual(a, b) { - if (a === b) - return true; + if (a === b) return true; let aValidType = isDate(a); let bValidType = isDate(b); if (aValidType || bValidType) { @@ -386,42 +481,64 @@ function looseIndexOf(arr, val) { return arr.findIndex((item) => looseEqual(item, val)); } +const isRef = (val) => { + return !!(val && val["__v_isRef"] === true); +}; const toDisplayString = (val) => { - return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); }; const replacer = (_key, val) => { - if (val && val.__v_isRef) { + if (isRef(val)) { return replacer(_key, val.value); } else if (isMap(val)) { return { - [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { - entries[`${key} =>`] = val2; - return entries; - }, {}) + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) }; } else if (isSet(val)) { return { - [`Set(${val.size})`]: [...val.values()] + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) }; + } else if (isSymbol(val)) { + return stringifySymbol(val); } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { return String(val); } return val; }; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; exports.EMPTY_ARR = EMPTY_ARR; exports.EMPTY_OBJ = EMPTY_OBJ; exports.NO = NO; exports.NOOP = NOOP; exports.PatchFlagNames = PatchFlagNames; +exports.PatchFlags = PatchFlags; +exports.ShapeFlags = ShapeFlags; +exports.SlotFlags = SlotFlags; exports.camelize = camelize; exports.capitalize = capitalize; +exports.cssVarNameEscapeSymbolsRE = cssVarNameEscapeSymbolsRE; exports.def = def; exports.escapeHtml = escapeHtml; exports.escapeHtmlComment = escapeHtmlComment; exports.extend = extend; +exports.genCacheKey = genCacheKey; exports.genPropsAccessExp = genPropsAccessExp; exports.generateCodeFrame = generateCodeFrame; +exports.getEscapedCssVarName = getEscapedCssVarName; exports.getGlobalThis = getGlobalThis; exports.hasChanged = hasChanged; exports.hasOwn = hasOwn; @@ -438,14 +555,17 @@ exports.isGloballyWhitelisted = isGloballyWhitelisted; exports.isHTMLTag = isHTMLTag; exports.isIntegerKey = isIntegerKey; exports.isKnownHtmlAttr = isKnownHtmlAttr; +exports.isKnownMathMLAttr = isKnownMathMLAttr; exports.isKnownSvgAttr = isKnownSvgAttr; exports.isMap = isMap; +exports.isMathMLTag = isMathMLTag; exports.isModelListener = isModelListener; exports.isObject = isObject; exports.isOn = isOn; exports.isPlainObject = isPlainObject; exports.isPromise = isPromise; exports.isRegExp = isRegExp; +exports.isRenderableAttrValue = isRenderableAttrValue; exports.isReservedProp = isReservedProp; exports.isSSRSafeAttrName = isSSRSafeAttrName; exports.isSVGTag = isSVGTag; diff --git a/.output/server/node_modules/@vue/shared/index.js b/.output/server/node_modules/@vue/shared/index.js deleted file mode 100644 index a2ee43e..0000000 --- a/.output/server/node_modules/@vue/shared/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/shared.cjs.prod.js') -} else { - module.exports = require('./dist/shared.cjs.js') -} diff --git a/.output/server/node_modules/@vue/shared/package.json b/.output/server/node_modules/@vue/shared/package.json index c09c39e..1487b5c 100644 --- a/.output/server/node_modules/@vue/shared/package.json +++ b/.output/server/node_modules/@vue/shared/package.json @@ -1,6 +1,6 @@ { "name": "@vue/shared", - "version": "3.3.9", + "version": "3.5.13", "description": "internal utils shared across @vue packages", "main": "index.js", "module": "dist/shared.esm-bundler.js", @@ -9,6 +9,20 @@ "index.js", "dist" ], + "exports": { + ".": { + "types": "./dist/shared.d.ts", + "node": { + "production": "./dist/shared.cjs.prod.js", + "development": "./dist/shared.cjs.js", + "default": "./dist/shared.cjs.prod.js" + }, + "module": "./dist/shared.esm-bundler.js", + "import": "./dist/shared.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, "sideEffects": false, "buildOptions": { "formats": [ @@ -29,5 +43,8 @@ "bugs": { "url": "https://github.com/vuejs/core/issues" }, - "homepage": "https://github.com/vuejs/core/tree/main/packages/shared#readme" + "homepage": "https://github.com/vuejs/core/tree/main/packages/shared#readme", + "__npminstall_done": true, + "_from": "@vue/shared@3.5.13", + "_resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/asynckit/package.json b/.output/server/node_modules/asynckit/package.json index 7853738..6949540 100644 --- a/.output/server/node_modules/asynckit/package.json +++ b/.output/server/node_modules/asynckit/package.json @@ -59,5 +59,8 @@ "tap-spec": "^4.1.1", "tape": "^4.5.1" }, - "dependencies": {} + "dependencies": {}, + "__npminstall_done": true, + "_from": "asynckit@0.4.0", + "_resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/axios/lib/adapters/adapters.js b/.output/server/node_modules/axios/lib/adapters/adapters.js index 550997d..b466dd5 100644 --- a/.output/server/node_modules/axios/lib/adapters/adapters.js +++ b/.output/server/node_modules/axios/lib/adapters/adapters.js @@ -1,11 +1,13 @@ import utils from '../utils.js'; import httpAdapter from './http.js'; import xhrAdapter from './xhr.js'; +import fetchAdapter from './fetch.js'; import AxiosError from "../core/AxiosError.js"; const knownAdapters = { http: httpAdapter, - xhr: xhrAdapter + xhr: xhrAdapter, + fetch: fetchAdapter } utils.forEach(knownAdapters, (fn, value) => { diff --git a/.output/server/node_modules/axios/lib/adapters/fetch.js b/.output/server/node_modules/axios/lib/adapters/fetch.js new file mode 100644 index 0000000..f871a05 --- /dev/null +++ b/.output/server/node_modules/axios/lib/adapters/fetch.js @@ -0,0 +1,229 @@ +import platform from "../platform/index.js"; +import utils from "../utils.js"; +import AxiosError from "../core/AxiosError.js"; +import composeSignals from "../helpers/composeSignals.js"; +import {trackStream} from "../helpers/trackStream.js"; +import AxiosHeaders from "../core/AxiosHeaders.js"; +import {progressEventReducer, progressEventDecorator, asyncDecorator} from "../helpers/progressEventReducer.js"; +import resolveConfig from "../helpers/resolveConfig.js"; +import settle from "../core/settle.js"; + +const isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function'; +const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function'; + +// used only inside the fetch adapter +const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ? + ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : + async (str) => new Uint8Array(await new Response(str).arrayBuffer()) +); + +const test = (fn, ...args) => { + try { + return !!fn(...args); + } catch (e) { + return false + } +} + +const supportsRequestStream = isReadableStreamSupported && test(() => { + let duplexAccessed = false; + + const hasContentType = new Request(platform.origin, { + body: new ReadableStream(), + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + }, + }).headers.has('Content-Type'); + + return duplexAccessed && !hasContentType; +}); + +const DEFAULT_CHUNK_SIZE = 64 * 1024; + +const supportsResponseStream = isReadableStreamSupported && + test(() => utils.isReadableStream(new Response('').body)); + + +const resolvers = { + stream: supportsResponseStream && ((res) => res.body) +}; + +isFetchSupported && (((res) => { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => { + !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() : + (_, config) => { + throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config); + }) + }); +})(new Response)); + +const getBodyLength = async (body) => { + if (body == null) { + return 0; + } + + if(utils.isBlob(body)) { + return body.size; + } + + if(utils.isSpecCompliantForm(body)) { + const _request = new Request(platform.origin, { + method: 'POST', + body, + }); + return (await _request.arrayBuffer()).byteLength; + } + + if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) { + return body.byteLength; + } + + if(utils.isURLSearchParams(body)) { + body = body + ''; + } + + if(utils.isString(body)) { + return (await encodeText(body)).byteLength; + } +} + +const resolveBodyLength = async (headers, body) => { + const length = utils.toFiniteNumber(headers.getContentLength()); + + return length == null ? getBodyLength(body) : length; +} + +export default isFetchSupported && (async (config) => { + let { + url, + method, + data, + signal, + cancelToken, + timeout, + onDownloadProgress, + onUploadProgress, + responseType, + headers, + withCredentials = 'same-origin', + fetchOptions + } = resolveConfig(config); + + responseType = responseType ? (responseType + '').toLowerCase() : 'text'; + + let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); + + let request; + + const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { + composedSignal.unsubscribe(); + }); + + let requestContentLength; + + try { + if ( + onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' && + (requestContentLength = await resolveBodyLength(headers, data)) !== 0 + ) { + let _request = new Request(url, { + method: 'POST', + body: data, + duplex: "half" + }); + + let contentTypeHeader; + + if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { + headers.setContentType(contentTypeHeader) + } + + if (_request.body) { + const [onProgress, flush] = progressEventDecorator( + requestContentLength, + progressEventReducer(asyncDecorator(onUploadProgress)) + ); + + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + } + + if (!utils.isString(withCredentials)) { + withCredentials = withCredentials ? 'include' : 'omit'; + } + + // Cloudflare Workers throws when credentials are defined + // see https://github.com/cloudflare/workerd/issues/902 + const isCredentialsSupported = "credentials" in Request.prototype; + request = new Request(url, { + ...fetchOptions, + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: "half", + credentials: isCredentialsSupported ? withCredentials : undefined + }); + + let response = await fetch(request); + + const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + + if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + const options = {}; + + ['status', 'statusText', 'headers'].forEach(prop => { + options[prop] = response[prop]; + }); + + const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length')); + + const [onProgress, flush] = onDownloadProgress && progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + ) || []; + + response = new Response( + trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), + options + ); + } + + responseType = responseType || 'text'; + + let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config); + + !isStreamResponse && unsubscribe && unsubscribe(); + + return await new Promise((resolve, reject) => { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders.from(response.headers), + status: response.status, + statusText: response.statusText, + config, + request + }) + }) + } catch (err) { + unsubscribe && unsubscribe(); + + if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) { + throw Object.assign( + new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request), + { + cause: err.cause || err + } + ) + } + + throw AxiosError.from(err, err && err.code, config, request); + } +}); + + diff --git a/.output/server/node_modules/axios/lib/adapters/http.js b/.output/server/node_modules/axios/lib/adapters/http.js index 03f0f96..0577bf0 100644 --- a/.output/server/node_modules/axios/lib/adapters/http.js +++ b/.output/server/node_modules/axios/lib/adapters/http.js @@ -4,7 +4,7 @@ import utils from './../utils.js'; import settle from './../core/settle.js'; import buildFullPath from '../core/buildFullPath.js'; import buildURL from './../helpers/buildURL.js'; -import {getProxyForUrl} from 'proxy-from-env'; +import proxyFromEnv from 'proxy-from-env'; import http from 'http'; import https from 'https'; import util from 'util'; @@ -19,11 +19,12 @@ import fromDataURI from '../helpers/fromDataURI.js'; import stream from 'stream'; import AxiosHeaders from '../core/AxiosHeaders.js'; import AxiosTransformStream from '../helpers/AxiosTransformStream.js'; -import EventEmitter from 'events'; +import {EventEmitter} from 'events'; import formDataToStream from "../helpers/formDataToStream.js"; import readBlob from "../helpers/readBlob.js"; import ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js'; import callbackify from "../helpers/callbackify.js"; +import {progressEventReducer, progressEventDecorator, asyncDecorator} from "../helpers/progressEventReducer.js"; const zlibOptions = { flush: zlib.constants.Z_SYNC_FLUSH, @@ -45,6 +46,14 @@ const supportedProtocols = platform.protocols.map(protocol => { return protocol + ':'; }); +const flushOnFinish = (stream, [throttled, flush]) => { + stream + .on('end', flush) + .on('error', flush); + + return throttled; +} + /** * If the proxy or config beforeRedirects functions are defined, call them with the options * object. @@ -53,12 +62,12 @@ const supportedProtocols = platform.protocols.map(protocol => { * * @returns {Object<string, any>} */ -function dispatchBeforeRedirect(options) { +function dispatchBeforeRedirect(options, responseDetails) { if (options.beforeRedirects.proxy) { options.beforeRedirects.proxy(options); } if (options.beforeRedirects.config) { - options.beforeRedirects.config(options); + options.beforeRedirects.config(options, responseDetails); } } @@ -74,7 +83,7 @@ function dispatchBeforeRedirect(options) { function setProxy(options, configProxy, location) { let proxy = configProxy; if (!proxy && proxy !== false) { - const proxyUrl = getProxyForUrl(location); + const proxyUrl = proxyFromEnv.getProxyForUrl(location); if (proxyUrl) { proxy = new URL(proxyUrl); } @@ -171,6 +180,10 @@ export default isHttpAdapterSupported && function httpAdapter(config) { // hotfix to support opt.all option which is required for node 20.x lookup = (hostname, opt, cb) => { _lookup(hostname, opt, (err, arg0, arg1) => { + if (err) { + return cb(err); + } + const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); @@ -215,8 +228,8 @@ export default isHttpAdapterSupported && function httpAdapter(config) { } // Parse url - const fullPath = buildFullPath(config.baseURL, config.url); - const parsed = new URL(fullPath, 'http://localhost'); + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); const protocol = parsed.protocol || supportedProtocols[0]; if (protocol === 'data:') { @@ -274,8 +287,7 @@ export default isHttpAdapterSupported && function httpAdapter(config) { // Only set header if it hasn't been set in config headers.set('User-Agent', 'axios/' + VERSION, false); - const onDownloadProgress = config.onDownloadProgress; - const onUploadProgress = config.onUploadProgress; + const {onUploadProgress, onDownloadProgress} = config; const maxRate = config.maxRate; let maxUploadRate = undefined; let maxDownloadRate = undefined; @@ -302,7 +314,7 @@ export default isHttpAdapterSupported && function httpAdapter(config) { } catch (e) { } } - } else if (utils.isBlob(data)) { + } else if (utils.isBlob(data) || utils.isFile(data)) { data.size && headers.setContentType(data.type || 'application/octet-stream'); headers.setContentLength(data.size || 0); data = stream.Readable.from(readBlob(data)); @@ -348,15 +360,16 @@ export default isHttpAdapterSupported && function httpAdapter(config) { } data = stream.pipeline([data, new AxiosTransformStream({ - length: contentLength, maxRate: utils.toFiniteNumber(maxUploadRate) })], utils.noop); - onUploadProgress && data.on('progress', progress => { - onUploadProgress(Object.assign(progress, { - upload: true - })); - }); + onUploadProgress && data.on('progress', flushOnFinish( + data, + progressEventDecorator( + contentLength, + progressEventReducer(asyncDecorator(onUploadProgress), false, 3) + ) + )); } // HTTP basic authentication @@ -414,7 +427,7 @@ export default isHttpAdapterSupported && function httpAdapter(config) { if (config.socketPath) { options.socketPath = config.socketPath; } else { - options.hostname = parsed.hostname; + options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname; options.port = parsed.port; setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); } @@ -455,17 +468,18 @@ export default isHttpAdapterSupported && function httpAdapter(config) { const responseLength = +res.headers['content-length']; - if (onDownloadProgress) { + if (onDownloadProgress || maxDownloadRate) { const transformStream = new AxiosTransformStream({ - length: utils.toFiniteNumber(responseLength), maxRate: utils.toFiniteNumber(maxDownloadRate) }); - onDownloadProgress && transformStream.on('progress', progress => { - onDownloadProgress(Object.assign(progress, { - download: true - })); - }); + onDownloadProgress && transformStream.on('progress', flushOnFinish( + transformStream, + progressEventDecorator( + responseLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) + ) + )); streams.push(transformStream); } @@ -555,7 +569,7 @@ export default isHttpAdapterSupported && function httpAdapter(config) { } const err = new AxiosError( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + 'stream has been aborted', AxiosError.ERR_BAD_RESPONSE, config, lastRequest diff --git a/.output/server/node_modules/axios/lib/adapters/xhr.js b/.output/server/node_modules/axios/lib/adapters/xhr.js index 26126b2..a7ee548 100644 --- a/.output/server/node_modules/axios/lib/adapters/xhr.js +++ b/.output/server/node_modules/axios/lib/adapters/xhr.js @@ -1,93 +1,41 @@ -'use strict'; - import utils from './../utils.js'; import settle from './../core/settle.js'; -import cookies from './../helpers/cookies.js'; -import buildURL from './../helpers/buildURL.js'; -import buildFullPath from '../core/buildFullPath.js'; -import isURLSameOrigin from './../helpers/isURLSameOrigin.js'; import transitionalDefaults from '../defaults/transitional.js'; import AxiosError from '../core/AxiosError.js'; import CanceledError from '../cancel/CanceledError.js'; import parseProtocol from '../helpers/parseProtocol.js'; import platform from '../platform/index.js'; import AxiosHeaders from '../core/AxiosHeaders.js'; -import speedometer from '../helpers/speedometer.js'; - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} +import {progressEventReducer} from '../helpers/progressEventReducer.js'; +import resolveConfig from "../helpers/resolveConfig.js"; const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; export default isXHRAdapterSupported && function (config) { return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; + const _config = resolveConfig(config); + let requestData = _config.data; + const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); + let {responseType, onUploadProgress, onDownloadProgress} = _config; let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; + function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - let contentType; - - if (utils.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } + _config.signal && _config.signal.removeEventListener('abort', onCanceled); } let request = new XMLHttpRequest(); - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + request.open(_config.method.toUpperCase(), _config.url, true); // Set the request timeout in MS - request.timeout = config.timeout; + request.timeout = _config.timeout; function onloadend() { if (!request) { @@ -167,10 +115,10 @@ export default isXHRAdapterSupported && function (config) { // Handle timeout request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; + let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; } reject(new AxiosError( timeoutErrorMessage, @@ -182,22 +130,6 @@ export default isXHRAdapterSupported && function (config) { request = null; }; - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - // Remove Content-Type if data is undefined requestData === undefined && requestHeaders.setContentType(null); @@ -209,26 +141,31 @@ export default isXHRAdapterSupported && function (config) { } // Add withCredentials to request if needed - if (!utils.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; + if (!utils.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; } // Add responseType to request if needed if (responseType && responseType !== 'json') { - request.responseType = config.responseType; + request.responseType = _config.responseType; } // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + if (onDownloadProgress) { + ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true)); + request.addEventListener('progress', downloadThrottled); } // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + if (onUploadProgress && request.upload) { + ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress)); + + request.upload.addEventListener('progress', uploadThrottled); + + request.upload.addEventListener('loadend', flushUpload); } - if (config.cancelToken || config.signal) { + if (_config.cancelToken || _config.signal) { // Handle cancellation // eslint-disable-next-line func-names onCanceled = cancel => { @@ -240,13 +177,13 @@ export default isXHRAdapterSupported && function (config) { request = null; }; - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled); } } - const protocol = parseProtocol(fullPath); + const protocol = parseProtocol(_config.url); if (protocol && platform.protocols.indexOf(protocol) === -1) { reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); diff --git a/.output/server/node_modules/axios/lib/cancel/CancelToken.js b/.output/server/node_modules/axios/lib/cancel/CancelToken.js index 20d8f68..0fc2025 100644 --- a/.output/server/node_modules/axios/lib/cancel/CancelToken.js +++ b/.output/server/node_modules/axios/lib/cancel/CancelToken.js @@ -102,6 +102,20 @@ class CancelToken { } } + toAbortSignal() { + const controller = new AbortController(); + + const abort = (err) => { + controller.abort(err); + }; + + this.subscribe(abort); + + controller.signal.unsubscribe = () => this.unsubscribe(abort); + + return controller.signal; + } + /** * Returns an object that contains a new `CancelToken` and a function that, when called, * cancels the `CancelToken`. diff --git a/.output/server/node_modules/axios/lib/core/Axios.js b/.output/server/node_modules/axios/lib/core/Axios.js index 465d765..386dc01 100644 --- a/.output/server/node_modules/axios/lib/core/Axios.js +++ b/.output/server/node_modules/axios/lib/core/Axios.js @@ -35,7 +35,34 @@ class Axios { * * @returns {Promise} The Promise to be fulfilled */ - request(configOrUrl, config) { + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy = {}; + + Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + try { + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack + } + } catch (e) { + // ignore the case where "stack" is an un-writable property + } + } + + throw err; + } + } + + _request(configOrUrl, config) { /*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API if (typeof configOrUrl === 'string') { @@ -70,6 +97,20 @@ class Axios { } } + // Set config.allowAbsoluteUrls + if (config.allowAbsoluteUrls !== undefined) { + // do nothing + } else if (this.defaults.allowAbsoluteUrls !== undefined) { + config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config.allowAbsoluteUrls = true; + } + + validator.assertOptions(config, { + baseUrl: validators.spelling('baseURL'), + withXsrfToken: validators.spelling('withXSRFToken') + }, true); + // Set config.method config.method = (config.method || this.defaults.method || 'get').toLowerCase(); @@ -160,7 +201,7 @@ class Axios { getUri(config) { config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); return buildURL(fullPath, config.params, config.paramsSerializer); } } diff --git a/.output/server/node_modules/axios/lib/core/AxiosError.js b/.output/server/node_modules/axios/lib/core/AxiosError.js index 7141a8c..73da248 100644 --- a/.output/server/node_modules/axios/lib/core/AxiosError.js +++ b/.output/server/node_modules/axios/lib/core/AxiosError.js @@ -27,7 +27,10 @@ function AxiosError(message, code, config, request, response) { code && (this.code = code); config && (this.config = config); request && (this.request = request); - response && (this.response = response); + if (response) { + this.response = response; + this.status = response.status ? response.status : null; + } } utils.inherits(AxiosError, Error, { @@ -47,7 +50,7 @@ utils.inherits(AxiosError, Error, { // Axios config: utils.toJSONObject(this.config), code: this.code, - status: this.response && this.response.status ? this.response.status : null + status: this.status }; } }); diff --git a/.output/server/node_modules/axios/lib/core/AxiosHeaders.js b/.output/server/node_modules/axios/lib/core/AxiosHeaders.js index 558ad8f..7b576e9 100644 --- a/.output/server/node_modules/axios/lib/core/AxiosHeaders.js +++ b/.output/server/node_modules/axios/lib/core/AxiosHeaders.js @@ -100,6 +100,10 @@ class AxiosHeaders { setHeaders(header, valueOrRewrite) } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils.isHeaders(header)) { + for (const [key, value] of header.entries()) { + setHeader(value, key, rewrite); + } } else { header != null && setHeader(valueOrRewrite, header, rewrite); } diff --git a/.output/server/node_modules/axios/lib/core/buildFullPath.js b/.output/server/node_modules/axios/lib/core/buildFullPath.js index b60927c..ba07b22 100644 --- a/.output/server/node_modules/axios/lib/core/buildFullPath.js +++ b/.output/server/node_modules/axios/lib/core/buildFullPath.js @@ -13,8 +13,9 @@ import combineURLs from '../helpers/combineURLs.js'; * * @returns {string} The combined full path */ -export default function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { +export default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + let isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && isRelativeUrl || allowAbsoluteUrls == false) { return combineURLs(baseURL, requestedURL); } return requestedURL; diff --git a/.output/server/node_modules/axios/lib/core/mergeConfig.js b/.output/server/node_modules/axios/lib/core/mergeConfig.js index bbbf96d..c510073 100644 --- a/.output/server/node_modules/axios/lib/core/mergeConfig.js +++ b/.output/server/node_modules/axios/lib/core/mergeConfig.js @@ -3,7 +3,7 @@ import utils from '../utils.js'; import AxiosHeaders from "./AxiosHeaders.js"; -const headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing; +const headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing; /** * Config-specific merge-function which creates a new config-object @@ -19,7 +19,7 @@ export default function mergeConfig(config1, config2) { config2 = config2 || {}; const config = {}; - function getMergedValue(target, source, caseless) { + function getMergedValue(target, source, prop, caseless) { if (utils.isPlainObject(target) && utils.isPlainObject(source)) { return utils.merge.call({caseless}, target, source); } else if (utils.isPlainObject(source)) { @@ -31,11 +31,11 @@ export default function mergeConfig(config1, config2) { } // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { + function mergeDeepProperties(a, b, prop , caseless) { if (!utils.isUndefined(b)) { - return getMergedValue(a, b, caseless); + return getMergedValue(a, b, prop , caseless); } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); + return getMergedValue(undefined, a, prop , caseless); } } @@ -93,7 +93,7 @@ export default function mergeConfig(config1, config2) { socketPath: defaultToConfig2, responseEncoding: defaultToConfig2, validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) + headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true) }; utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { diff --git a/.output/server/node_modules/axios/lib/defaults/index.js b/.output/server/node_modules/axios/lib/defaults/index.js index a883bfe..e543fea 100644 --- a/.output/server/node_modules/axios/lib/defaults/index.js +++ b/.output/server/node_modules/axios/lib/defaults/index.js @@ -37,7 +37,7 @@ const defaults = { transitional: transitionalDefaults, - adapter: ['xhr', 'http'], + adapter: ['xhr', 'http', 'fetch'], transformRequest: [function transformRequest(data, headers) { const contentType = headers.getContentType() || ''; @@ -51,9 +51,6 @@ const defaults = { const isFormData = utils.isFormData(data); if (isFormData) { - if (!hasJSONContentType) { - return data; - } return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; } @@ -61,7 +58,8 @@ const defaults = { utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || - utils.isBlob(data) + utils.isBlob(data) || + utils.isReadableStream(data) ) { return data; } @@ -104,6 +102,10 @@ const defaults = { const forcedJSONParsing = transitional && transitional.forcedJSONParsing; const JSONRequested = this.responseType === 'json'; + if (utils.isResponse(data) || utils.isReadableStream(data)) { + return data; + } + if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { const silentJSONParsing = transitional && transitional.silentJSONParsing; const strictJSONParsing = !silentJSONParsing && JSONRequested; diff --git a/.output/server/node_modules/axios/lib/env/data.js b/.output/server/node_modules/axios/lib/env/data.js index 143f506..5e3de01 100644 --- a/.output/server/node_modules/axios/lib/env/data.js +++ b/.output/server/node_modules/axios/lib/env/data.js @@ -1 +1 @@ -export const VERSION = "1.6.2"; \ No newline at end of file +export const VERSION = "1.8.3"; \ No newline at end of file diff --git a/.output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js b/.output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js index 8e8c6d4..4140071 100644 --- a/.output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js +++ b/.output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js @@ -2,8 +2,6 @@ import stream from 'stream'; import utils from '../utils.js'; -import throttle from './throttle.js'; -import speedometer from './speedometer.js'; const kInternals = Symbol('internals'); @@ -24,12 +22,8 @@ class AxiosTransformStream extends stream.Transform{ readableHighWaterMark: options.chunkSize }); - const self = this; - const internals = this[kInternals] = { - length: options.length, timeWindow: options.timeWindow, - ticksRate: options.ticksRate, chunkSize: options.chunkSize, maxRate: options.maxRate, minChunkSize: options.minChunkSize, @@ -41,8 +35,6 @@ class AxiosTransformStream extends stream.Transform{ onReadCallback: null }; - const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); - this.on('newListener', event => { if (event === 'progress') { if (!internals.isCaptured) { @@ -50,38 +42,6 @@ class AxiosTransformStream extends stream.Transform{ } } }); - - let bytesNotified = 0; - - internals.updateProgress = throttle(function throttledHandler() { - const totalBytes = internals.length; - const bytesTransferred = internals.bytesSeen; - const progressBytes = bytesTransferred - bytesNotified; - if (!progressBytes || self.destroyed) return; - - const rate = _speedometer(progressBytes); - - bytesNotified = bytesTransferred; - - process.nextTick(() => { - self.emit('progress', { - 'loaded': bytesTransferred, - 'total': totalBytes, - 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, - 'bytes': progressBytes, - 'rate': rate ? rate : undefined, - 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? - (totalBytes - bytesTransferred) / rate : undefined - }); - }); - }, internals.ticksRate); - - const onFinish = () => { - internals.updateProgress(true); - }; - - this.once('end', onFinish); - this.once('error', onFinish); } _read(size) { @@ -95,7 +55,6 @@ class AxiosTransformStream extends stream.Transform{ } _transform(chunk, encoding, callback) { - const self = this; const internals = this[kInternals]; const maxRate = internals.maxRate; @@ -107,16 +66,14 @@ class AxiosTransformStream extends stream.Transform{ const bytesThreshold = (maxRate / divider); const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; - function pushChunk(_chunk, _callback) { + const pushChunk = (_chunk, _callback) => { const bytes = Buffer.byteLength(_chunk); internals.bytesSeen += bytes; internals.bytes += bytes; - if (internals.isCaptured) { - internals.updateProgress(); - } + internals.isCaptured && this.emit('progress', internals.bytesSeen); - if (self.push(_chunk)) { + if (this.push(_chunk)) { process.nextTick(_callback); } else { internals.onReadCallback = () => { @@ -181,11 +138,6 @@ class AxiosTransformStream extends stream.Transform{ } }); } - - setLength(length) { - this[kInternals].length = +length; - return this; - } } export default AxiosTransformStream; diff --git a/.output/server/node_modules/axios/lib/helpers/buildURL.js b/.output/server/node_modules/axios/lib/helpers/buildURL.js index d769fdf..5c5eb57 100644 --- a/.output/server/node_modules/axios/lib/helpers/buildURL.js +++ b/.output/server/node_modules/axios/lib/helpers/buildURL.js @@ -26,7 +26,7 @@ function encode(val) { * * @param {string} url The base of the url (e.g., http://www.google.com) * @param {object} [params] The params to be appended - * @param {?object} options + * @param {?(object|Function)} options * * @returns {string} The formatted url */ @@ -38,6 +38,12 @@ export default function buildURL(url, params, options) { const _encode = options && options.encode || encode; + if (utils.isFunction(options)) { + options = { + serialize: options + }; + } + const serializeFn = options && options.serialize; let serializedParams; diff --git a/.output/server/node_modules/axios/lib/helpers/combineURLs.js b/.output/server/node_modules/axios/lib/helpers/combineURLs.js index cba9a23..9f04f02 100644 --- a/.output/server/node_modules/axios/lib/helpers/combineURLs.js +++ b/.output/server/node_modules/axios/lib/helpers/combineURLs.js @@ -10,6 +10,6 @@ */ export default function combineURLs(baseURL, relativeURL) { return relativeURL - ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; } diff --git a/.output/server/node_modules/axios/lib/helpers/composeSignals.js b/.output/server/node_modules/axios/lib/helpers/composeSignals.js new file mode 100644 index 0000000..84087c8 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/composeSignals.js @@ -0,0 +1,48 @@ +import CanceledError from "../cancel/CanceledError.js"; +import AxiosError from "../core/AxiosError.js"; +import utils from '../utils.js'; + +const composeSignals = (signals, timeout) => { + const {length} = (signals = signals ? signals.filter(Boolean) : []); + + if (timeout || length) { + let controller = new AbortController(); + + let aborted; + + const onabort = function (reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + const err = reason instanceof Error ? reason : this.reason; + controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err)); + } + } + + let timer = timeout && setTimeout(() => { + timer = null; + onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT)) + }, timeout) + + const unsubscribe = () => { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach(signal => { + signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort); + }); + signals = null; + } + } + + signals.forEach((signal) => signal.addEventListener('abort', onabort)); + + const {signal} = controller; + + signal.unsubscribe = () => utils.asap(unsubscribe); + + return signal; + } +} + +export default composeSignals; diff --git a/.output/server/node_modules/axios/lib/helpers/formDataToJSON.js b/.output/server/node_modules/axios/lib/helpers/formDataToJSON.js index f4581df..906ce60 100644 --- a/.output/server/node_modules/axios/lib/helpers/formDataToJSON.js +++ b/.output/server/node_modules/axios/lib/helpers/formDataToJSON.js @@ -49,6 +49,9 @@ function arrayToObject(arr) { function formDataToJSON(formData) { function buildPath(path, value, target, index) { let name = path[index++]; + + if (name === '__proto__') return true; + const isNumericKey = Number.isFinite(+name); const isLast = index >= path.length; name = !name && utils.isArray(target) ? target.length : name; diff --git a/.output/server/node_modules/axios/lib/helpers/formDataToStream.js b/.output/server/node_modules/axios/lib/helpers/formDataToStream.js index 9187e73..972b99f 100644 --- a/.output/server/node_modules/axios/lib/helpers/formDataToStream.js +++ b/.output/server/node_modules/axios/lib/helpers/formDataToStream.js @@ -1,11 +1,12 @@ -import {TextEncoder} from 'util'; +import util from 'util'; import {Readable} from 'stream'; import utils from "../utils.js"; import readBlob from "./readBlob.js"; +import platform from "../platform/index.js"; -const BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_'; +const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; -const textEncoder = new TextEncoder(); +const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder(); const CRLF = '\r\n'; const CRLF_BYTES = textEncoder.encode(CRLF); @@ -63,7 +64,7 @@ const formDataToStream = (form, headersHandler, options) => { const { tag = 'form-data-boundary', size = 25, - boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET) + boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET) } = options || {}; if(!utils.isFormData(form)) { diff --git a/.output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js b/.output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js index a8678a4..6a92aa1 100644 --- a/.output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js +++ b/.output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js @@ -1,67 +1,14 @@ -'use strict'; - -import utils from './../utils.js'; import platform from '../platform/index.js'; -export default platform.hasStandardBrowserEnv ? +export default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => { + url = new URL(url, platform.origin); -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); + return ( + origin.protocol === url.protocol && + origin.host === url.host && + (isMSIE || origin.port === url.port) + ); +})( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) +) : () => true; diff --git a/.output/server/node_modules/axios/lib/helpers/progressEventReducer.js b/.output/server/node_modules/axios/lib/helpers/progressEventReducer.js new file mode 100644 index 0000000..ff601cc --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/progressEventReducer.js @@ -0,0 +1,44 @@ +import speedometer from "./speedometer.js"; +import throttle from "./throttle.js"; +import utils from "../utils.js"; + +export const progressEventReducer = (listener, isDownloadStream, freq = 3) => { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return throttle(e => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? (loaded / total) : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e, + lengthComputable: total != null, + [isDownloadStream ? 'download' : 'upload']: true + }; + + listener(data); + }, freq); +} + +export const progressEventDecorator = (total, throttled) => { + const lengthComputable = total != null; + + return [(loaded) => throttled[0]({ + lengthComputable, + total, + loaded + }), throttled[1]]; +} + +export const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args)); diff --git a/.output/server/node_modules/axios/lib/helpers/resolveConfig.js b/.output/server/node_modules/axios/lib/helpers/resolveConfig.js new file mode 100644 index 0000000..7b16882 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/resolveConfig.js @@ -0,0 +1,57 @@ +import platform from "../platform/index.js"; +import utils from "../utils.js"; +import isURLSameOrigin from "./isURLSameOrigin.js"; +import cookies from "./cookies.js"; +import buildFullPath from "../core/buildFullPath.js"; +import mergeConfig from "../core/mergeConfig.js"; +import AxiosHeaders from "../core/AxiosHeaders.js"; +import buildURL from "./buildURL.js"; + +export default (config) => { + const newConfig = mergeConfig({}, config); + + let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig; + + newConfig.headers = headers = AxiosHeaders.from(headers); + + newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer); + + // HTTP basic authentication + if (auth) { + headers.set('Authorization', 'Basic ' + + btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : '')) + ); + } + + let contentType; + + if (utils.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(undefined); // Let the browser set it + } else if ((contentType = headers.getContentType()) !== false) { + // fix semicolon duplication issue for ReactNative FormData implementation + const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; + headers.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); + } + } + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + // Add xsrf header + const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + + return newConfig; +} + diff --git a/.output/server/node_modules/axios/lib/helpers/throttle.js b/.output/server/node_modules/axios/lib/helpers/throttle.js index 6969df1..e256272 100644 --- a/.output/server/node_modules/axios/lib/helpers/throttle.js +++ b/.output/server/node_modules/axios/lib/helpers/throttle.js @@ -1,5 +1,3 @@ -'use strict'; - /** * Throttle decorator * @param {Function} fn @@ -8,26 +6,39 @@ */ function throttle(fn, freq) { let timestamp = 0; - const threshold = 1000 / freq; - let timer = null; - return function throttled(force, args) { + let threshold = 1000 / freq; + let lastArgs; + let timer; + + const invoke = (args, now = Date.now()) => { + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn.apply(null, args); + } + + const throttled = (...args) => { const now = Date.now(); - if (force || now - timestamp > threshold) { - if (timer) { - clearTimeout(timer); - timer = null; + const passed = now - timestamp; + if ( passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + invoke(lastArgs) + }, threshold - passed); } - timestamp = now; - return fn.apply(null, args); } - if (!timer) { - timer = setTimeout(() => { - timer = null; - timestamp = Date.now(); - return fn.apply(null, args); - }, threshold - (now - timestamp)); - } - }; + } + + const flush = () => lastArgs && invoke(lastArgs); + + return [throttled, flush]; } export default throttle; diff --git a/.output/server/node_modules/axios/lib/helpers/trackStream.js b/.output/server/node_modules/axios/lib/helpers/trackStream.js new file mode 100644 index 0000000..95d6008 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/trackStream.js @@ -0,0 +1,87 @@ + +export const streamChunk = function* (chunk, chunkSize) { + let len = chunk.byteLength; + + if (!chunkSize || len < chunkSize) { + yield chunk; + return; + } + + let pos = 0; + let end; + + while (pos < len) { + end = pos + chunkSize; + yield chunk.slice(pos, end); + pos = end; + } +} + +export const readBytes = async function* (iterable, chunkSize) { + for await (const chunk of readStream(iterable)) { + yield* streamChunk(chunk, chunkSize); + } +} + +const readStream = async function* (stream) { + if (stream[Symbol.asyncIterator]) { + yield* stream; + return; + } + + const reader = stream.getReader(); + try { + for (;;) { + const {done, value} = await reader.read(); + if (done) { + break; + } + yield value; + } + } finally { + await reader.cancel(); + } +} + +export const trackStream = (stream, chunkSize, onProgress, onFinish) => { + const iterator = readBytes(stream, chunkSize); + + let bytes = 0; + let done; + let _onFinish = (e) => { + if (!done) { + done = true; + onFinish && onFinish(e); + } + } + + return new ReadableStream({ + async pull(controller) { + try { + const {done, value} = await iterator.next(); + + if (done) { + _onFinish(); + controller.close(); + return; + } + + let len = value.byteLength; + if (onProgress) { + let loadedBytes = bytes += len; + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err) { + _onFinish(err); + throw err; + } + }, + cancel(reason) { + _onFinish(reason); + return iterator.return(); + } + }, { + highWaterMark: 2 + }) +} diff --git a/.output/server/node_modules/axios/lib/helpers/validator.js b/.output/server/node_modules/axios/lib/helpers/validator.js index 14b4696..1270568 100644 --- a/.output/server/node_modules/axios/lib/helpers/validator.js +++ b/.output/server/node_modules/axios/lib/helpers/validator.js @@ -52,6 +52,14 @@ validators.transitional = function transitional(validator, version, message) { }; }; +validators.spelling = function spelling(correctSpelling) { + return (value, opt) => { + // eslint-disable-next-line no-console + console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); + return true; + } +}; + /** * Assert object's properties type * diff --git a/.output/server/node_modules/axios/lib/platform/common/utils.js b/.output/server/node_modules/axios/lib/platform/common/utils.js index 56fe79a..52a3186 100644 --- a/.output/server/node_modules/axios/lib/platform/common/utils.js +++ b/.output/server/node_modules/axios/lib/platform/common/utils.js @@ -1,5 +1,7 @@ const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; +const _navigator = typeof navigator === 'object' && navigator || undefined; + /** * Determine if we're running in a standard browser environment * @@ -17,10 +19,8 @@ const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'unde * * @returns {boolean} */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); +const hasStandardBrowserEnv = hasBrowserEnv && + (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); /** * Determine if we're running in a standard browser webWorker environment @@ -40,8 +40,12 @@ const hasStandardBrowserWebWorkerEnv = (() => { ); })(); +const origin = hasBrowserEnv && window.location.href || 'http://localhost'; + export { hasBrowserEnv, hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv + hasStandardBrowserEnv, + _navigator as navigator, + origin } diff --git a/.output/server/node_modules/axios/lib/platform/node/index.js b/.output/server/node_modules/axios/lib/platform/node/index.js index aef514a..cd1ca0c 100644 --- a/.output/server/node_modules/axios/lib/platform/node/index.js +++ b/.output/server/node_modules/axios/lib/platform/node/index.js @@ -1,6 +1,30 @@ +import crypto from 'crypto'; import URLSearchParams from './classes/URLSearchParams.js' import FormData from './classes/FormData.js' +const ALPHA = 'abcdefghijklmnopqrstuvwxyz' + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT +} + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const {length} = alphabet; + const randomValues = new Uint32Array(size); + crypto.randomFillSync(randomValues); + for (let i = 0; i < size; i++) { + str += alphabet[randomValues[i] % length]; + } + + return str; +} + + export default { isNode: true, classes: { @@ -8,5 +32,7 @@ export default { FormData, Blob: typeof Blob !== 'undefined' && Blob || null }, + ALPHABET, + generateString, protocols: [ 'http', 'https', 'file', 'data' ] }; diff --git a/.output/server/node_modules/axios/lib/utils.js b/.output/server/node_modules/axios/lib/utils.js index a386b77..c48eb1e 100644 --- a/.output/server/node_modules/axios/lib/utils.js +++ b/.output/server/node_modules/axios/lib/utils.js @@ -209,6 +209,8 @@ const isFormData = (thing) => { */ const isURLSearchParams = kindOfTest('URLSearchParams'); +const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest); + /** * Trim excess whitespace off the beginning and end of a string * @@ -597,28 +599,7 @@ const toObjectSet = (arrayOrString, delimiter) => { const noop = () => {} const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -} - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz' - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -} - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0] - } - - return str; + return value != null && Number.isFinite(value = +value) ? value : defaultValue; } /** @@ -668,6 +649,36 @@ const isAsyncFn = kindOfTest('AsyncFunction'); const isThenable = (thing) => thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); +// original code +// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 + +const _setImmediate = ((setImmediateSupported, postMessageSupported) => { + if (setImmediateSupported) { + return setImmediate; + } + + return postMessageSupported ? ((token, callbacks) => { + _global.addEventListener("message", ({source, data}) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, false); + + return (cb) => { + callbacks.push(cb); + _global.postMessage(token, "*"); + } + })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb); +})( + typeof setImmediate === 'function', + isFunction(_global.postMessage) +); + +const asap = typeof queueMicrotask !== 'undefined' ? + queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate); + +// ********************* + export default { isArray, isArrayBuffer, @@ -679,6 +690,10 @@ export default { isBoolean, isObject, isPlainObject, + isReadableStream, + isRequest, + isResponse, + isHeaders, isUndefined, isDate, isFile, @@ -714,10 +729,10 @@ export default { findKey, global: _global, isContextDefined, - ALPHABET, - generateString, isSpecCompliantForm, toJSONObject, isAsyncFn, - isThenable + isThenable, + setImmediate: _setImmediate, + asap }; diff --git a/.output/server/node_modules/axios/package.json b/.output/server/node_modules/axios/package.json index 28c14c8..1c037dc 100644 --- a/.output/server/node_modules/axios/package.json +++ b/.output/server/node_modules/axios/package.json @@ -1,6 +1,6 @@ { "name": "axios", - "version": "1.6.2", + "version": "1.8.3", "description": "Promise based HTTP client for the browser and node.js", "main": "index.js", "exports": { @@ -80,41 +80,41 @@ }, "homepage": "https://axios-http.com", "devDependencies": { - "@babel/core": "^7.18.2", - "@babel/preset-env": "^7.18.2", - "@commitlint/cli": "^17.3.0", - "@commitlint/config-conventional": "^17.3.0", + "@babel/core": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@commitlint/cli": "^17.8.1", + "@commitlint/config-conventional": "^17.8.1", "@release-it/conventional-changelog": "^5.1.1", "@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-commonjs": "^15.1.0", "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-multi-entry": "^4.0.0", + "@rollup/plugin-multi-entry": "^4.1.0", "@rollup/plugin-node-resolve": "^9.0.0", - "abortcontroller-polyfill": "^1.7.3", + "abortcontroller-polyfill": "^1.7.5", "auto-changelog": "^2.4.0", - "body-parser": "^1.20.0", - "chalk": "^5.2.0", + "body-parser": "^1.20.2", + "chalk": "^5.3.0", "coveralls": "^3.1.1", "cross-env": "^7.0.3", "dev-null": "^0.1.1", "dtslint": "^4.2.1", "es6-promise": "^4.2.8", - "eslint": "^8.17.0", - "express": "^4.18.1", - "formdata-node": "^5.0.0", - "formidable": "^2.0.1", + "eslint": "^8.56.0", + "express": "^4.18.2", + "formdata-node": "^5.0.1", + "formidable": "^2.1.2", "fs-extra": "^10.1.0", "get-stream": "^3.0.0", "gulp": "^4.0.2", "gzip-size": "^7.0.0", - "handlebars": "^4.7.7", - "husky": "^8.0.2", + "handlebars": "^4.7.8", + "husky": "^8.0.3", "istanbul-instrumenter-loader": "^3.0.1", - "jasmine-core": "^2.4.1", + "jasmine-core": "^2.99.1", "karma": "^6.3.17", - "karma-chrome-launcher": "^3.1.1", + "karma-chrome-launcher": "^3.2.0", "karma-firefox-launcher": "^2.1.2", - "karma-jasmine": "^1.1.1", + "karma-jasmine": "^1.1.2", "karma-jasmine-ajax": "^0.1.13", "karma-rollup-preprocessor": "^7.0.8", "karma-safari-launcher": "^1.0.0", @@ -122,12 +122,12 @@ "karma-sinon": "^1.0.5", "karma-sourcemap-loader": "^0.3.8", "memoizee": "^0.4.15", - "minimist": "^1.2.7", - "mocha": "^10.0.0", + "minimist": "^1.2.8", + "mocha": "^10.3.0", "multer": "^1.4.4", - "pretty-bytes": "^6.0.0", - "release-it": "^15.5.1", - "rollup": "^2.67.0", + "pretty-bytes": "^6.1.1", + "release-it": "^15.11.0", + "rollup": "^2.79.1", "rollup-plugin-auto-external": "^2.0.0", "rollup-plugin-bundle-size": "^1.0.3", "rollup-plugin-terser": "^7.0.2", @@ -135,7 +135,8 @@ "stream-throttle": "^0.1.3", "string-replace-async": "^3.0.2", "terser-webpack-plugin": "^4.2.3", - "typescript": "^4.8.4" + "typescript": "^4.9.5", + "@rollup/plugin-alias": "^5.1.0" }, "browser": { "./lib/adapters/http.js": "./lib/helpers/null.js", @@ -146,7 +147,7 @@ "unpkg": "dist/axios.min.js", "typings": "./index.d.ts", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" }, @@ -159,8 +160,8 @@ "contributors": [ "Matt Zabriskie (https://github.com/mzabriskie)", "Nick Uraltsev (https://github.com/nickuraltsev)", - "Jay (https://github.com/jasonsaayman)", "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", + "Jay (https://github.com/jasonsaayman)", "Emily Morehouse (https://github.com/emilyemorehouse)", "Rubén Norte (https://github.com/rubennorte)", "Justin Beckwith (https://github.com/JustinBeckwith)", @@ -214,5 +215,8 @@ "extends": [ "@commitlint/config-conventional" ] - } + }, + "__npminstall_done": true, + "_from": "axios@1.8.3", + "_resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.3.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/call-bind-apply-helpers/actualApply.js b/.output/server/node_modules/call-bind-apply-helpers/actualApply.js new file mode 100644 index 0000000..ffa5135 --- /dev/null +++ b/.output/server/node_modules/call-bind-apply-helpers/actualApply.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); + +var $apply = require('./functionApply'); +var $call = require('./functionCall'); +var $reflectApply = require('./reflectApply'); + +/** @type {import('./actualApply')} */ +module.exports = $reflectApply || bind.call($call, $apply); diff --git a/.output/server/node_modules/call-bind-apply-helpers/functionApply.js b/.output/server/node_modules/call-bind-apply-helpers/functionApply.js new file mode 100644 index 0000000..c71df9c --- /dev/null +++ b/.output/server/node_modules/call-bind-apply-helpers/functionApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionApply')} */ +module.exports = Function.prototype.apply; diff --git a/.output/server/node_modules/call-bind-apply-helpers/functionCall.js b/.output/server/node_modules/call-bind-apply-helpers/functionCall.js new file mode 100644 index 0000000..7a8d873 --- /dev/null +++ b/.output/server/node_modules/call-bind-apply-helpers/functionCall.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionCall')} */ +module.exports = Function.prototype.call; diff --git a/.output/server/node_modules/call-bind-apply-helpers/index.js b/.output/server/node_modules/call-bind-apply-helpers/index.js new file mode 100644 index 0000000..2f6dab4 --- /dev/null +++ b/.output/server/node_modules/call-bind-apply-helpers/index.js @@ -0,0 +1,15 @@ +'use strict'; + +var bind = require('function-bind'); +var $TypeError = require('es-errors/type'); + +var $call = require('./functionCall'); +var $actualApply = require('./actualApply'); + +/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ +module.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== 'function') { + throw new $TypeError('a function is required'); + } + return $actualApply(bind, $call, args); +}; diff --git a/.output/server/node_modules/call-bind-apply-helpers/package.json b/.output/server/node_modules/call-bind-apply-helpers/package.json new file mode 100644 index 0000000..13b1103 --- /dev/null +++ b/.output/server/node_modules/call-bind-apply-helpers/package.json @@ -0,0 +1,88 @@ +{ + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "description": "Helper functions around Function call/apply/bind, for use in `call-bind`", + "main": "index.js", + "exports": { + ".": "./index.js", + "./actualApply": "./actualApply.js", + "./applyBind": "./applyBind.js", + "./functionApply": "./functionApply.js", + "./functionCall": "./functionCall.js", + "./reflectApply": "./reflectApply.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind-apply-helpers.git" + }, + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind-apply-helpers/issues" + }, + "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.3", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/for-each": "^0.3.3", + "@types/function-bind": "^1.1.10", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "__npminstall_done": true, + "_from": "call-bind-apply-helpers@1.0.2", + "_resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/call-bind-apply-helpers/reflectApply.js b/.output/server/node_modules/call-bind-apply-helpers/reflectApply.js new file mode 100644 index 0000000..3d03caa --- /dev/null +++ b/.output/server/node_modules/call-bind-apply-helpers/reflectApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./reflectApply')} */ +module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; diff --git a/.output/server/node_modules/combined-stream/package.json b/.output/server/node_modules/combined-stream/package.json index 2830f91..1debcea 100644 --- a/.output/server/node_modules/combined-stream/package.json +++ b/.output/server/node_modules/combined-stream/package.json @@ -21,5 +21,8 @@ "devDependencies": { "far": "~0.0.7" }, - "license": "MIT" + "license": "MIT", + "__npminstall_done": true, + "_from": "combined-stream@1.0.8", + "_resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/debug/package.json b/.output/server/node_modules/debug/package.json index f2c58a7..aed8a88 100644 --- a/.output/server/node_modules/debug/package.json +++ b/.output/server/node_modules/debug/package.json @@ -1,6 +1,6 @@ { "name": "debug", - "version": "4.3.4", + "version": "4.4.0", "repository": { "type": "git", "url": "git://github.com/debug-js/debug.git" @@ -16,7 +16,7 @@ "LICENSE", "README.md" ], - "author": "Josh Junon <josh.junon@protonmail.com>", + "author": "Josh Junon (https://github.com/qix-)", "contributors": [ "TJ Holowaychuk <tj@vision-media.ca>", "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)", @@ -26,12 +26,12 @@ "scripts": { "lint": "xo", "test": "npm run test:node && npm run test:browser && npm run lint", - "test:node": "istanbul cover _mocha -- test.js", + "test:node": "istanbul cover _mocha -- test.js test.node.js", "test:browser": "karma start --single-run", "test:coverage": "cat ./coverage/lcov.info | coveralls" }, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "devDependencies": { "brfs": "^2.0.1", @@ -44,6 +44,7 @@ "karma-mocha": "^1.3.0", "mocha": "^5.2.0", "mocha-lcov-reporter": "^1.2.0", + "sinon": "^14.0.0", "xo": "^0.23.0" }, "peerDependenciesMeta": { @@ -55,5 +56,13 @@ "browser": "./src/browser.js", "engines": { "node": ">=6.0" - } + }, + "xo": { + "rules": { + "import/extensions": "off" + } + }, + "__npminstall_done": true, + "_from": "debug@4.4.0", + "_resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/debug/src/browser.js b/.output/server/node_modules/debug/src/browser.js index cd0fc35..df8e179 100644 --- a/.output/server/node_modules/debug/src/browser.js +++ b/.output/server/node_modules/debug/src/browser.js @@ -125,14 +125,17 @@ function useColors() { return false; } + let m; + // Is webkit? http://stackoverflow.com/a/16459606/376773 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + // eslint-disable-next-line no-return-assign return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || // Is firebug? http://stackoverflow.com/a/398120/376773 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || // Is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || // Double check webkit in userAgent just in case we are in a worker (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); } diff --git a/.output/server/node_modules/debug/src/common.js b/.output/server/node_modules/debug/src/common.js index e3291b2..528c7ec 100644 --- a/.output/server/node_modules/debug/src/common.js +++ b/.output/server/node_modules/debug/src/common.js @@ -166,26 +166,64 @@ function setup(env) { createDebug.names = []; createDebug.skips = []; - let i; - const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - const len = split.length; + const split = (typeof namespaces === 'string' ? namespaces : '') + .trim() + .replace(' ', ',') + .split(',') + .filter(Boolean); - for (i = 0; i < len; i++) { - if (!split[i]) { - // ignore empty strings - continue; - } - - namespaces = split[i].replace(/\*/g, '.*?'); - - if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + for (const ns of split) { + if (ns[0] === '-') { + createDebug.skips.push(ns.slice(1)); } else { - createDebug.names.push(new RegExp('^' + namespaces + '$')); + createDebug.names.push(ns); } } } + /** + * Checks if the given string matches a namespace template, honoring + * asterisks as wildcards. + * + * @param {String} search + * @param {String} template + * @return {Boolean} + */ + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { + // Match character or proceed with wildcard + if (template[templateIndex] === '*') { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; // Skip the '*' + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition + // Backtrack to the last '*' and try to match more characters + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; // No match + } + } + + // Handle trailing '*' in template + while (templateIndex < template.length && template[templateIndex] === '*') { + templateIndex++; + } + + return templateIndex === template.length; + } + /** * Disable debug output. * @@ -194,8 +232,8 @@ function setup(env) { */ function disable() { const namespaces = [ - ...createDebug.names.map(toNamespace), - ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ...createDebug.names, + ...createDebug.skips.map(namespace => '-' + namespace) ].join(','); createDebug.enable(''); return namespaces; @@ -209,21 +247,14 @@ function setup(env) { * @api public */ function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } - - let i; - let len; - - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { return false; } } - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { return true; } } @@ -231,19 +262,6 @@ function setup(env) { return false; } - /** - * Convert regexp to namespace - * - * @param {RegExp} regxep - * @return {String} namespace - * @api private - */ - function toNamespace(regexp) { - return regexp.toString() - .substring(2, regexp.toString().length - 2) - .replace(/\.\*\?$/, '*'); - } - /** * Coerce `val`. * diff --git a/.output/server/node_modules/debug/src/node.js b/.output/server/node_modules/debug/src/node.js index 79bc085..715560a 100644 --- a/.output/server/node_modules/debug/src/node.js +++ b/.output/server/node_modules/debug/src/node.js @@ -187,11 +187,11 @@ function getDate() { } /** - * Invokes `util.format()` with the specified arguments and writes to stderr. + * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. */ function log(...args) { - return process.stderr.write(util.format(...args) + '\n'); + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); } /** diff --git a/.output/server/node_modules/delayed-stream/package.json b/.output/server/node_modules/delayed-stream/package.json index 0f278e8..b444657 100644 --- a/.output/server/node_modules/delayed-stream/package.json +++ b/.output/server/node_modules/delayed-stream/package.json @@ -23,5 +23,8 @@ "devDependencies": { "fake": "0.2.0", "far": "0.0.1" - } + }, + "__npminstall_done": true, + "_from": "delayed-stream@1.0.0", + "_resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/devalue/package.json b/.output/server/node_modules/devalue/package.json index 4bf13e2..5fa3ff6 100644 --- a/.output/server/node_modules/devalue/package.json +++ b/.output/server/node_modules/devalue/package.json @@ -1,8 +1,9 @@ { "name": "devalue", "description": "Gets the job done when JSON.stringify can't", - "version": "4.3.2", + "version": "5.1.1", "repository": "Rich-Harris/devalue", + "sideEffects": false, "exports": { ".": { "types": "./types/index.d.ts", @@ -25,9 +26,12 @@ "scripts": { "build": "dts-buddy", "test": "uvu test", - "prepublishOnly": "npm test && publint && npm run build" + "prepublishOnly": "npm test && npm run build && publint" }, "license": "MIT", "type": "module", - "packageManager": "pnpm@8.5.1" + "packageManager": "pnpm@8.5.1", + "__npminstall_done": true, + "_from": "devalue@5.1.1", + "_resolved": "https://registry.npmmirror.com/devalue/-/devalue-5.1.1.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/devalue/src/base64.js b/.output/server/node_modules/devalue/src/base64.js new file mode 100644 index 0000000..23bd6b6 --- /dev/null +++ b/.output/server/node_modules/devalue/src/base64.js @@ -0,0 +1,110 @@ +/** + * Base64 Encodes an arraybuffer + * @param {ArrayBuffer} arraybuffer + * @returns {string} + */ +export function encode64(arraybuffer) { + const dv = new DataView(arraybuffer); + let binaryString = ""; + + for (let i = 0; i < arraybuffer.byteLength; i++) { + binaryString += String.fromCharCode(dv.getUint8(i)); + } + + return binaryToAscii(binaryString); +} + +/** + * Decodes a base64 string into an arraybuffer + * @param {string} string + * @returns {ArrayBuffer} + */ +export function decode64(string) { + const binaryString = asciiToBinary(string); + const arraybuffer = new ArrayBuffer(binaryString.length); + const dv = new DataView(arraybuffer); + + for (let i = 0; i < arraybuffer.byteLength; i++) { + dv.setUint8(i, binaryString.charCodeAt(i)); + } + + return arraybuffer; +} + +const KEY_STRING = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +/** + * Substitute for atob since it's deprecated in node. + * Does not do any input validation. + * + * @see https://github.com/jsdom/abab/blob/master/lib/atob.js + * + * @param {string} data + * @returns {string} + */ +function asciiToBinary(data) { + if (data.length % 4 === 0) { + data = data.replace(/==?$/, ""); + } + + let output = ""; + let buffer = 0; + let accumulatedBits = 0; + + for (let i = 0; i < data.length; i++) { + buffer <<= 6; + buffer |= KEY_STRING.indexOf(data[i]); + accumulatedBits += 6; + if (accumulatedBits === 24) { + output += String.fromCharCode((buffer & 0xff0000) >> 16); + output += String.fromCharCode((buffer & 0xff00) >> 8); + output += String.fromCharCode(buffer & 0xff); + buffer = accumulatedBits = 0; + } + } + if (accumulatedBits === 12) { + buffer >>= 4; + output += String.fromCharCode(buffer); + } else if (accumulatedBits === 18) { + buffer >>= 2; + output += String.fromCharCode((buffer & 0xff00) >> 8); + output += String.fromCharCode(buffer & 0xff); + } + return output; +} + +/** + * Substitute for btoa since it's deprecated in node. + * Does not do any input validation. + * + * @see https://github.com/jsdom/abab/blob/master/lib/btoa.js + * + * @param {string} str + * @returns {string} + */ +function binaryToAscii(str) { + let out = ""; + for (let i = 0; i < str.length; i += 3) { + /** @type {[number, number, number, number]} */ + const groupsOfSix = [undefined, undefined, undefined, undefined]; + groupsOfSix[0] = str.charCodeAt(i) >> 2; + groupsOfSix[1] = (str.charCodeAt(i) & 0x03) << 4; + if (str.length > i + 1) { + groupsOfSix[1] |= str.charCodeAt(i + 1) >> 4; + groupsOfSix[2] = (str.charCodeAt(i + 1) & 0x0f) << 2; + } + if (str.length > i + 2) { + groupsOfSix[2] |= str.charCodeAt(i + 2) >> 6; + groupsOfSix[3] = str.charCodeAt(i + 2) & 0x3f; + } + for (let j = 0; j < groupsOfSix.length; j++) { + if (typeof groupsOfSix[j] === "undefined") { + out += "="; + } else { + out += KEY_STRING[groupsOfSix[j]]; + } + } + } + return out; +} diff --git a/.output/server/node_modules/devalue/src/parse.js b/.output/server/node_modules/devalue/src/parse.js index 54cdeba..f0fe2c1 100644 --- a/.output/server/node_modules/devalue/src/parse.js +++ b/.output/server/node_modules/devalue/src/parse.js @@ -1,3 +1,4 @@ +import { decode64 } from './base64.js'; import { HOLE, NAN, @@ -101,6 +102,32 @@ export function unflatten(parsed, revivers) { } break; + case "Int8Array": + case "Uint8Array": + case "Uint8ClampedArray": + case "Int16Array": + case "Uint16Array": + case "Int32Array": + case "Uint32Array": + case "Float32Array": + case "Float64Array": + case "BigInt64Array": + case "BigUint64Array": { + const TypedArrayConstructor = globalThis[type]; + const base64 = value[1]; + const arraybuffer = decode64(base64); + const typedArray = new TypedArrayConstructor(arraybuffer); + hydrated[index] = typedArray; + break; + } + + case "ArrayBuffer": { + const base64 = value[1]; + const arraybuffer = decode64(base64); + hydrated[index] = arraybuffer; + break; + } + default: throw new Error(`Unknown type ${type}`); } diff --git a/.output/server/node_modules/devalue/src/stringify.js b/.output/server/node_modules/devalue/src/stringify.js index 8ce427e..df291fd 100644 --- a/.output/server/node_modules/devalue/src/stringify.js +++ b/.output/server/node_modules/devalue/src/stringify.js @@ -1,8 +1,10 @@ import { DevalueError, + enumerable_symbols, get_type, is_plain_object, is_primitive, + stringify_key, stringify_string } from './utils.js'; import { @@ -13,6 +15,7 @@ import { POSITIVE_INFINITY, UNDEFINED } from './constants.js'; +import { encode64 } from './base64.js'; /** * Turn a value into a JSON string that can be parsed with `devalue.parse` @@ -28,8 +31,10 @@ export function stringify(value, reducers) { /** @type {Array<{ key: string, fn: (value: any) => any }>} */ const custom = []; - for (const key in reducers) { - custom.push({ key, fn: reducers[key] }); + if (reducers) { + for (const key of Object.getOwnPropertyNames(reducers)) { + custom.push({ key, fn: reducers[key] }); + } } /** @type {string[]} */ @@ -81,7 +86,8 @@ export function stringify(value, reducers) { break; case 'Date': - str = `["Date","${thing.toISOString()}"]`; + const valid = !isNaN(thing.getDate()); + str = `["Date","${valid ? thing.toISOString() : ''}"]`; break; case 'RegExp': @@ -128,11 +134,39 @@ export function stringify(value, reducers) { `.get(${is_primitive(key) ? stringify_primitive(key) : '...'})` ); str += `,${flatten(key)},${flatten(value)}`; + keys.pop(); } str += ']'; break; + case "Int8Array": + case "Uint8Array": + case "Uint8ClampedArray": + case "Int16Array": + case "Uint16Array": + case "Int32Array": + case "Uint32Array": + case "Float32Array": + case "Float64Array": + case "BigInt64Array": + case "BigUint64Array": { + /** @type {import("./types.js").TypedArray} */ + const typedArray = thing; + const base64 = encode64(typedArray.buffer); + str = '["' + type + '","' + base64 + '"]'; + break; + } + + case "ArrayBuffer": { + /** @type {ArrayBuffer} */ + const arraybuffer = thing; + const base64 = encode64(arraybuffer); + + str = `["ArrayBuffer","${base64}"]`; + break; + } + default: if (!is_plain_object(thing)) { throw new DevalueError( @@ -141,7 +175,7 @@ export function stringify(value, reducers) { ); } - if (Object.getOwnPropertySymbols(thing).length > 0) { + if (enumerable_symbols(thing).length > 0) { throw new DevalueError( `Cannot stringify POJOs with symbolic keys`, keys @@ -151,7 +185,7 @@ export function stringify(value, reducers) { if (Object.getPrototypeOf(thing) === null) { str = '["null"'; for (const key in thing) { - keys.push(`.${key}`); + keys.push(stringify_key(key)); str += `,${stringify_string(key)},${flatten(thing[key])}`; keys.pop(); } @@ -162,7 +196,7 @@ export function stringify(value, reducers) { for (const key in thing) { if (started) str += ','; started = true; - keys.push(`.${key}`); + keys.push(stringify_key(key)); str += `${stringify_string(key)}:${flatten(thing[key])}`; keys.pop(); } diff --git a/.output/server/node_modules/devalue/src/uneval.js b/.output/server/node_modules/devalue/src/uneval.js index 21a98a4..ce3ef34 100644 --- a/.output/server/node_modules/devalue/src/uneval.js +++ b/.output/server/node_modules/devalue/src/uneval.js @@ -1,9 +1,11 @@ import { DevalueError, + enumerable_symbols, escaped, get_type, is_plain_object, is_primitive, + stringify_key, stringify_string } from './utils.js'; @@ -80,6 +82,22 @@ export function uneval(value, replacer) { keys.pop(); } break; + + case "Int8Array": + case "Uint8Array": + case "Uint8ClampedArray": + case "Int16Array": + case "Uint16Array": + case "Int32Array": + case "Uint32Array": + case "Float32Array": + case "Float64Array": + case "BigInt64Array": + case "BigUint64Array": + return; + + case "ArrayBuffer": + return; default: if (!is_plain_object(thing)) { @@ -89,7 +107,7 @@ export function uneval(value, replacer) { ); } - if (Object.getOwnPropertySymbols(thing).length > 0) { + if (enumerable_symbols(thing).length > 0) { throw new DevalueError( `Cannot stringify POJOs with symbolic keys`, keys @@ -97,7 +115,7 @@ export function uneval(value, replacer) { } for (const key in thing) { - keys.push(`.${key}`); + keys.push(stringify_key(key)); walk(thing[key]); keys.pop(); } @@ -159,6 +177,27 @@ export function uneval(value, replacer) { case 'Set': case 'Map': return `new ${type}([${Array.from(thing).map(stringify).join(',')}])`; + + case "Int8Array": + case "Uint8Array": + case "Uint8ClampedArray": + case "Int16Array": + case "Uint16Array": + case "Int32Array": + case "Uint32Array": + case "Float32Array": + case "Float64Array": + case "BigInt64Array": + case "BigUint64Array": { + /** @type {import("./types.js").TypedArray} */ + const typedArray = thing; + return `new ${type}([${typedArray.toString()}])`; + } + + case "ArrayBuffer": { + const ui8 = new Uint8Array(thing); + return `new Uint8Array([${ui8.toString()}]).buffer`; + } default: const obj = `{${Object.keys(thing) diff --git a/.output/server/node_modules/devalue/src/utils.js b/.output/server/node_modules/devalue/src/utils.js index 5dea3ef..9dc9e51 100644 --- a/.output/server/node_modules/devalue/src/utils.js +++ b/.output/server/node_modules/devalue/src/utils.js @@ -97,3 +97,17 @@ export function stringify_string(str) { return `"${last_pos === 0 ? str : result + str.slice(last_pos)}"`; } + +/** @param {Record<string | symbol, any>} object */ +export function enumerable_symbols(object) { + return Object.getOwnPropertySymbols(object).filter( + (symbol) => Object.getOwnPropertyDescriptor(object, symbol).enumerable + ); +} + +const is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/; + +/** @param {string} key */ +export function stringify_key(key) { + return is_identifier.test(key) ? '.' + key : '[' + JSON.stringify(key) + ']'; +} diff --git a/.output/server/node_modules/dunder-proto/get.js b/.output/server/node_modules/dunder-proto/get.js new file mode 100644 index 0000000..45093df --- /dev/null +++ b/.output/server/node_modules/dunder-proto/get.js @@ -0,0 +1,30 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); + +var hasProtoAccessor; +try { + // eslint-disable-next-line no-extra-parens, no-proto + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +// eslint-disable-next-line no-extra-parens +var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +var $Object = Object; +var $getPrototypeOf = $Object.getPrototypeOf; + +/** @type {import('./get')} */ +module.exports = desc && typeof desc.get === 'function' + ? callBind([desc.get]) + : typeof $getPrototypeOf === 'function' + ? /** @type {import('./get')} */ function getDunder(value) { + // eslint-disable-next-line eqeqeq + return $getPrototypeOf(value == null ? value : $Object(value)); + } + : false; diff --git a/.output/server/node_modules/dunder-proto/package.json b/.output/server/node_modules/dunder-proto/package.json new file mode 100644 index 0000000..11d3ad9 --- /dev/null +++ b/.output/server/node_modules/dunder-proto/package.json @@ -0,0 +1,79 @@ +{ + "name": "dunder-proto", + "version": "1.0.1", + "description": "If available, the `Object.prototype.__proto__` accessor and mutator, call-bound", + "main": false, + "exports": { + "./get": "./get.js", + "./set": "./set.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/dunder-proto.git" + }, + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/dunder-proto/issues" + }, + "homepage": "https://github.com/es-shims/dunder-proto#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/tape": "^5.7.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "__npminstall_done": true, + "_from": "dunder-proto@1.0.1", + "_resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/entities/lib/decode.js b/.output/server/node_modules/entities/lib/decode.js new file mode 100644 index 0000000..aa4a42c --- /dev/null +++ b/.output/server/node_modules/entities/lib/decode.js @@ -0,0 +1,536 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0; +var decode_data_html_js_1 = __importDefault(require("./generated/decode-data-html.js")); +exports.htmlDecodeTree = decode_data_html_js_1.default; +var decode_data_xml_js_1 = __importDefault(require("./generated/decode-data-xml.js")); +exports.xmlDecodeTree = decode_data_xml_js_1.default; +var decode_codepoint_js_1 = __importStar(require("./decode_codepoint.js")); +exports.decodeCodePoint = decode_codepoint_js_1.default; +var decode_codepoint_js_2 = require("./decode_codepoint.js"); +Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } }); +Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } }); +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +var TO_LOWER_BIT = 32; +var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {})); +function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); +} +function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code)); +} +/** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + */ +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} +var EntityDecoderState; +(function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +var DecodingMode; +(function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {})); +/** + * Token decoder with support of writing partial entities. + */ +var EntityDecoder = /** @class */ (function () { + function EntityDecoder( + /** The tree used to decode entities. */ + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + } + /** Resets the instance to make it reusable. */ + EntityDecoder.prototype.startEntity = function (decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + }; + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.write = function (str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); + } + } + }; + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericStart = function (str, offset) { + if (offset >= str.length) { + return -1; + } + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + }; + EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) { + if (start !== end) { + var digitCount = end - start; + this.result = + this.result * Math.pow(base, digitCount) + + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; + } + }; + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericHex = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); + } + } + this.addToNumericResult(str, startIdx, offset, 16); + return -1; + }; + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericDecimal = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); + } + } + this.addToNumericResult(str, startIdx, offset, 10); + return -1; + }; + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + }; + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNamedEntity = function (str, offset) { + var decodeTree = this.decodeTree; + var current = decodeTree[this.treeIndex]; + // The mask is the number of bytes of the value, including the current byte. + var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + var char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + } + return -1; + }; + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () { + var _a; + var _b = this, result = _b.result, decodeTree = _b.decodeTree; + var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + }; + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) { + var decodeTree = this.decodeTree; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + }; + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.end = function () { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + }; + return EntityDecoder; +}()); +exports.EntityDecoder = EntityDecoder; +/** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree) { + var ret = ""; + var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); }); + return function decodeWithTrie(str, decodeMode) { + var lastIndex = 0; + var offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + var len = decoder.write(str, + // Skip the "&" + offset + 1); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + // If `len` is 0, skip the current `&` and continue. + offset = len === 0 ? lastIndex + 1 : lastIndex; + } + var result = ret + str.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + ret = ""; + return result; + }; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +function determineBranch(decodeTree, current, nodeIdx, char) { + var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + var jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + var value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + var lo = nodeIdx; + var hi = lo + branchCount - 1; + while (lo <= hi) { + var mid = (lo + hi) >>> 1; + var midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; +} +exports.determineBranch = determineBranch; +var htmlDecoder = getDecoder(decode_data_html_js_1.default); +var xmlDecoder = getDecoder(decode_data_xml_js_1.default); +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +function decodeHTML(str, mode) { + if (mode === void 0) { mode = DecodingMode.Legacy; } + return htmlDecoder(str, mode); +} +exports.decodeHTML = decodeHTML; +/** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLAttribute(str) { + return htmlDecoder(str, DecodingMode.Attribute); +} +exports.decodeHTMLAttribute = decodeHTMLAttribute; +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLStrict(str) { + return htmlDecoder(str, DecodingMode.Strict); +} +exports.decodeHTMLStrict = decodeHTMLStrict; +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeXML(str) { + return xmlDecoder(str, DecodingMode.Strict); +} +exports.decodeXML = decodeXML; +//# sourceMappingURL=decode.js.map \ No newline at end of file diff --git a/.output/server/node_modules/entities/lib/decode_codepoint.js b/.output/server/node_modules/entities/lib/decode_codepoint.js new file mode 100644 index 0000000..1205346 --- /dev/null +++ b/.output/server/node_modules/entities/lib/decode_codepoint.js @@ -0,0 +1,76 @@ +"use strict"; +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.replaceCodePoint = exports.fromCodePoint = void 0; +var decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +exports.fromCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins +(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) { + var output = ""; + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + output += String.fromCharCode(codePoint); + return output; +}; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return 0xfffd; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; +} +exports.replaceCodePoint = replaceCodePoint; +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +function decodeCodePoint(codePoint) { + return (0, exports.fromCodePoint)(replaceCodePoint(codePoint)); +} +exports.default = decodeCodePoint; +//# sourceMappingURL=decode_codepoint.js.map \ No newline at end of file diff --git a/.output/server/node_modules/entities/lib/generated/decode-data-html.js b/.output/server/node_modules/entities/lib/generated/decode-data-html.js new file mode 100644 index 0000000..295cd9b --- /dev/null +++ b/.output/server/node_modules/entities/lib/generated/decode-data-html.js @@ -0,0 +1,9 @@ +"use strict"; +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map(function (c) { return c.charCodeAt(0); })); +//# sourceMappingURL=decode-data-html.js.map \ No newline at end of file diff --git a/.output/server/node_modules/entities/lib/generated/decode-data-xml.js b/.output/server/node_modules/entities/lib/generated/decode-data-xml.js new file mode 100644 index 0000000..8fee783 --- /dev/null +++ b/.output/server/node_modules/entities/lib/generated/decode-data-xml.js @@ -0,0 +1,9 @@ +"use strict"; +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map(function (c) { return c.charCodeAt(0); })); +//# sourceMappingURL=decode-data-xml.js.map \ No newline at end of file diff --git a/.output/server/node_modules/entities/package.json b/.output/server/node_modules/entities/package.json new file mode 100644 index 0000000..b0c9844 --- /dev/null +++ b/.output/server/node_modules/entities/package.json @@ -0,0 +1,93 @@ +{ + "name": "entities", + "version": "4.5.0", + "description": "Encode & decode XML and HTML entities with ease & speed", + "author": "Felix Boehm <me@feedic.com>", + "funding": "https://github.com/fb55/entities?sponsor=1", + "sideEffects": false, + "keywords": [ + "entity", + "decoding", + "encoding", + "html", + "xml", + "html entities" + ], + "directories": { + "lib": "lib/" + }, + "main": "lib/index.js", + "types": "lib/index.d.ts", + "module": "lib/esm/index.js", + "exports": { + ".": { + "require": "./lib/index.js", + "import": "./lib/esm/index.js" + }, + "./lib/decode.js": { + "require": "./lib/decode.js", + "import": "./lib/esm/decode.js" + }, + "./lib/escape.js": { + "require": "./lib/escape.js", + "import": "./lib/esm/escape.js" + } + }, + "files": [ + "lib/**/*" + ], + "engines": { + "node": ">=0.12" + }, + "devDependencies": { + "@types/jest": "^28.1.8", + "@types/node": "^18.15.11", + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "eslint": "^8.38.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-node": "^11.1.0", + "jest": "^28.1.3", + "prettier": "^2.8.7", + "ts-jest": "^28.0.8", + "typedoc": "^0.24.1", + "typescript": "^5.0.4" + }, + "scripts": { + "test": "npm run test:jest && npm run lint", + "test:jest": "jest", + "lint": "npm run lint:es && npm run lint:prettier", + "lint:es": "eslint .", + "lint:prettier": "npm run prettier -- --check", + "format": "npm run format:es && npm run format:prettier", + "format:es": "npm run lint:es -- --fix", + "format:prettier": "npm run prettier -- --write", + "prettier": "prettier '**/*.{ts,md,json,yml}'", + "build": "npm run build:cjs && npm run build:esm", + "build:cjs": "tsc --sourceRoot https://raw.githubusercontent.com/fb55/entities/$(git rev-parse HEAD)/src/", + "build:esm": "npm run build:cjs -- --module esnext --target es2019 --outDir lib/esm && echo '{\"type\":\"module\"}' > lib/esm/package.json", + "build:docs": "typedoc --hideGenerator src/index.ts", + "build:trie": "ts-node scripts/write-decode-map.ts", + "build:encode-trie": "ts-node scripts/write-encode-map.ts", + "prepare": "npm run build" + }, + "repository": { + "type": "git", + "url": "git://github.com/fb55/entities.git" + }, + "license": "BSD-2-Clause", + "jest": { + "preset": "ts-jest", + "coverageProvider": "v8", + "moduleNameMapper": { + "^(.*)\\.js$": "$1" + } + }, + "prettier": { + "tabWidth": 4, + "proseWrap": "always" + }, + "__npminstall_done": true, + "_from": "entities@4.5.0", + "_resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/es-define-property/index.js b/.output/server/node_modules/es-define-property/index.js new file mode 100644 index 0000000..e0a2925 --- /dev/null +++ b/.output/server/node_modules/es-define-property/index.js @@ -0,0 +1,14 @@ +'use strict'; + +/** @type {import('.')} */ +var $defineProperty = Object.defineProperty || false; +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +module.exports = $defineProperty; diff --git a/.output/server/node_modules/es-define-property/package.json b/.output/server/node_modules/es-define-property/package.json new file mode 100644 index 0000000..3b29341 --- /dev/null +++ b/.output/server/node_modules/es-define-property/package.json @@ -0,0 +1,84 @@ +{ + "name": "es-define-property", + "version": "1.0.1", + "description": "`Object.defineProperty`, but not IE 8's broken one.", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-define-property.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "define", + "property", + "defineProperty", + "Object.defineProperty" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-define-property/issues" + }, + "homepage": "https://github.com/ljharb/es-define-property#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/gopd": "^1.0.3", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "gopd": "^1.2.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "__npminstall_done": true, + "_from": "es-define-property@1.0.1", + "_resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/es-errors/eval.js b/.output/server/node_modules/es-errors/eval.js new file mode 100644 index 0000000..725ccb6 --- /dev/null +++ b/.output/server/node_modules/es-errors/eval.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./eval')} */ +module.exports = EvalError; diff --git a/.output/server/node_modules/es-errors/index.js b/.output/server/node_modules/es-errors/index.js new file mode 100644 index 0000000..cc0c521 --- /dev/null +++ b/.output/server/node_modules/es-errors/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Error; diff --git a/.output/server/node_modules/es-errors/package.json b/.output/server/node_modules/es-errors/package.json new file mode 100644 index 0000000..5aec5b0 --- /dev/null +++ b/.output/server/node_modules/es-errors/package.json @@ -0,0 +1,83 @@ +{ + "name": "es-errors", + "version": "1.3.0", + "description": "A simple cache for a few of the JS Error constructors.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./eval": "./eval.js", + "./range": "./range.js", + "./ref": "./ref.js", + "./syntax": "./syntax.js", + "./type": "./type.js", + "./uri": "./uri.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "aud --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-errors.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "error", + "typeerror", + "syntaxerror", + "rangeerror" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-errors/issues" + }, + "homepage": "https://github.com/ljharb/es-errors#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eclint": "^2.8.1", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "__npminstall_done": true, + "_from": "es-errors@1.3.0", + "_resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/es-errors/range.js b/.output/server/node_modules/es-errors/range.js new file mode 100644 index 0000000..2044fe0 --- /dev/null +++ b/.output/server/node_modules/es-errors/range.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./range')} */ +module.exports = RangeError; diff --git a/.output/server/node_modules/es-errors/ref.js b/.output/server/node_modules/es-errors/ref.js new file mode 100644 index 0000000..d7c430f --- /dev/null +++ b/.output/server/node_modules/es-errors/ref.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./ref')} */ +module.exports = ReferenceError; diff --git a/.output/server/node_modules/es-errors/syntax.js b/.output/server/node_modules/es-errors/syntax.js new file mode 100644 index 0000000..5f5fdde --- /dev/null +++ b/.output/server/node_modules/es-errors/syntax.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./syntax')} */ +module.exports = SyntaxError; diff --git a/.output/server/node_modules/es-errors/type.js b/.output/server/node_modules/es-errors/type.js new file mode 100644 index 0000000..9769e44 --- /dev/null +++ b/.output/server/node_modules/es-errors/type.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./type')} */ +module.exports = TypeError; diff --git a/.output/server/node_modules/es-errors/uri.js b/.output/server/node_modules/es-errors/uri.js new file mode 100644 index 0000000..e9cd1c7 --- /dev/null +++ b/.output/server/node_modules/es-errors/uri.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./uri')} */ +module.exports = URIError; diff --git a/.output/server/node_modules/es-object-atoms/index.js b/.output/server/node_modules/es-object-atoms/index.js new file mode 100644 index 0000000..1d33cef --- /dev/null +++ b/.output/server/node_modules/es-object-atoms/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Object; diff --git a/.output/server/node_modules/es-object-atoms/package.json b/.output/server/node_modules/es-object-atoms/package.json new file mode 100644 index 0000000..eb6bac9 --- /dev/null +++ b/.output/server/node_modules/es-object-atoms/package.json @@ -0,0 +1,83 @@ +{ + "name": "es-object-atoms", + "version": "1.1.1", + "description": "ES Object-related atoms: Object, ToObject, RequireObjectCoercible", + "main": "index.js", + "exports": { + ".": "./index.js", + "./RequireObjectCoercible": "./RequireObjectCoercible.js", + "./isObject": "./isObject.js", + "./ToObject": "./ToObject.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@\">= 10.2\" audit --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-object-atoms.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "toobject", + "coercible" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-object-atoms/issues" + }, + "homepage": "https://github.com/ljharb/es-object-atoms#readme", + "dependencies": { + "es-errors": "^1.3.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "__npminstall_done": true, + "_from": "es-object-atoms@1.1.1", + "_resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/es-set-tostringtag/index.js b/.output/server/node_modules/es-set-tostringtag/index.js new file mode 100644 index 0000000..6b6b49c --- /dev/null +++ b/.output/server/node_modules/es-set-tostringtag/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); + +var hasToStringTag = require('has-tostringtag/shams')(); +var hasOwn = require('hasown'); +var $TypeError = require('es-errors/type'); + +var toStringTag = hasToStringTag ? Symbol.toStringTag : null; + +/** @type {import('.')} */ +module.exports = function setToStringTag(object, value) { + var overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force; + var nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable; + if ( + (typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean') + || (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean') + ) { + throw new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans'); + } + if (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) { + if ($defineProperty) { + $defineProperty(object, toStringTag, { + configurable: !nonConfigurable, + enumerable: false, + value: value, + writable: false + }); + } else { + object[toStringTag] = value; // eslint-disable-line no-param-reassign + } + } +}; diff --git a/.output/server/node_modules/es-set-tostringtag/package.json b/.output/server/node_modules/es-set-tostringtag/package.json new file mode 100644 index 0000000..e084f58 --- /dev/null +++ b/.output/server/node_modules/es-set-tostringtag/package.json @@ -0,0 +1,81 @@ +{ + "name": "es-set-tostringtag", + "version": "2.1.0", + "description": "A helper to optimistically set Symbol.toStringTag, when possible.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@\">= 10.2\" audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/es-set-tostringtag.git" + }, + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/es-set-tostringtag/issues" + }, + "homepage": "https://github.com/es-shims/es-set-tostringtag#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/get-intrinsic": "^1.2.3", + "@types/has-symbols": "^1.0.2", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "./test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "__npminstall_done": true, + "_from": "es-set-tostringtag@2.1.0", + "_resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/estree-walker/package.json b/.output/server/node_modules/estree-walker/package.json index 08014bb..1754504 100644 --- a/.output/server/node_modules/estree-walker/package.json +++ b/.output/server/node_modules/estree-walker/package.json @@ -33,5 +33,8 @@ "dist", "types", "README.md" - ] + ], + "__npminstall_done": true, + "_from": "estree-walker@2.0.2", + "_resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/follow-redirects/index.js b/.output/server/node_modules/follow-redirects/index.js index 057c6b1..a30b32c 100644 --- a/.output/server/node_modules/follow-redirects/index.js +++ b/.output/server/node_modules/follow-redirects/index.js @@ -6,6 +6,41 @@ var Writable = require("stream").Writable; var assert = require("assert"); var debug = require("./debug"); +// Preventive platform detection +// istanbul ignore next +(function detectUnsupportedEnvironment() { + var looksLikeNode = typeof process !== "undefined"; + var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined"; + var looksLikeV8 = isFunction(Error.captureStackTrace); + if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) { + console.warn("The follow-redirects package should be excluded from browser builds."); + } +}()); + +// Whether to use the native URL object or the legacy url module +var useNativeURL = false; +try { + assert(new URL("")); +} +catch (error) { + useNativeURL = error.code === "ERR_INVALID_URL"; +} + +// URL fields to preserve in copy operations +var preservedUrlFields = [ + "auth", + "host", + "hostname", + "href", + "path", + "pathname", + "port", + "protocol", + "query", + "search", + "hash", +]; + // Create handlers that pass events from native requests var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; var eventHandlers = Object.create(null); @@ -15,19 +50,20 @@ events.forEach(function (event) { }; }); +// Error types with codes var InvalidUrlError = createErrorType( "ERR_INVALID_URL", "Invalid URL", TypeError ); -// Error types with codes var RedirectionError = createErrorType( "ERR_FR_REDIRECTION_FAILURE", "Redirected request failed" ); var TooManyRedirectsError = createErrorType( "ERR_FR_TOO_MANY_REDIRECTS", - "Maximum number of redirects exceeded" + "Maximum number of redirects exceeded", + RedirectionError ); var MaxBodyLengthExceededError = createErrorType( "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", @@ -62,7 +98,13 @@ function RedirectableRequest(options, responseCallback) { // React to responses of native requests var self = this; this._onNativeResponse = function (response) { - self._processResponse(response); + try { + self._processResponse(response); + } + catch (cause) { + self.emit("error", cause instanceof RedirectionError ? + cause : new RedirectionError({ cause: cause })); + } }; // Perform the first request @@ -280,8 +322,7 @@ RedirectableRequest.prototype._performRequest = function () { var protocol = this._options.protocol; var nativeProtocol = this._options.nativeProtocols[protocol]; if (!nativeProtocol) { - this.emit("error", new TypeError("Unsupported protocol " + protocol)); - return; + throw new TypeError("Unsupported protocol " + protocol); } // If specified, use the agent corresponding to the protocol @@ -316,17 +357,17 @@ RedirectableRequest.prototype._performRequest = function () { var buffers = this._requestBodyBuffers; (function writeNext(error) { // Only write if this request has not been redirected yet - /* istanbul ignore else */ + // istanbul ignore else if (request === self._currentRequest) { // Report any write errors - /* istanbul ignore if */ + // istanbul ignore if if (error) { self.emit("error", error); } // Write the next buffer if there are still left else if (i < buffers.length) { var buffer = buffers[i++]; - /* istanbul ignore else */ + // istanbul ignore else if (!request.finished) { request.write(buffer.data, buffer.encoding, writeNext); } @@ -380,8 +421,7 @@ RedirectableRequest.prototype._processResponse = function (response) { // RFC7231§6.4: A client SHOULD detect and intervene // in cyclical redirections (i.e., "infinite" redirection loops). if (++this._redirectCount > this._options.maxRedirects) { - this.emit("error", new TooManyRedirectsError()); - return; + throw new TooManyRedirectsError(); } // Store the request headers if applicable @@ -415,34 +455,24 @@ RedirectableRequest.prototype._processResponse = function (response) { var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); // If the redirect is relative, carry over the host of the last request - var currentUrlParts = url.parse(this._currentUrl); + var currentUrlParts = parseUrl(this._currentUrl); var currentHost = currentHostHeader || currentUrlParts.host; var currentUrl = /^\w+:/.test(location) ? this._currentUrl : url.format(Object.assign(currentUrlParts, { host: currentHost })); - // Determine the URL of the redirection - var redirectUrl; - try { - redirectUrl = url.resolve(currentUrl, location); - } - catch (cause) { - this.emit("error", new RedirectionError({ cause: cause })); - return; - } - // Create the redirected request - debug("redirecting to", redirectUrl); + var redirectUrl = resolveUrl(location, currentUrl); + debug("redirecting to", redirectUrl.href); this._isRedirect = true; - var redirectUrlParts = url.parse(redirectUrl); - Object.assign(this._options, redirectUrlParts); + spreadUrlObject(redirectUrl, this._options); // Drop confidential headers when redirecting to a less secure protocol // or to a different domain that is not a superdomain - if (redirectUrlParts.protocol !== currentUrlParts.protocol && - redirectUrlParts.protocol !== "https:" || - redirectUrlParts.host !== currentHost && - !isSubdomain(redirectUrlParts.host, currentHost)) { - removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers); + if (redirectUrl.protocol !== currentUrlParts.protocol && + redirectUrl.protocol !== "https:" || + redirectUrl.host !== currentHost && + !isSubdomain(redirectUrl.host, currentHost)) { + removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); } // Evaluate the beforeRedirect callback @@ -456,23 +486,12 @@ RedirectableRequest.prototype._processResponse = function (response) { method: method, headers: requestHeaders, }; - try { - beforeRedirect(this._options, responseDetails, requestDetails); - } - catch (err) { - this.emit("error", err); - return; - } + beforeRedirect(this._options, responseDetails, requestDetails); this._sanitizeOptions(this._options); } // Perform the redirected request - try { - this._performRequest(); - } - catch (cause) { - this.emit("error", new RedirectionError({ cause: cause })); - } + this._performRequest(); }; // Wraps the key/value object of protocols with redirect functionality @@ -492,27 +511,16 @@ function wrap(protocols) { // Executes a request, following redirects function request(input, options, callback) { - // Parse parameters - if (isString(input)) { - var parsed; - try { - parsed = urlToOptions(new URL(input)); - } - catch (err) { - /* istanbul ignore next */ - parsed = url.parse(input); - } - if (!isString(parsed.protocol)) { - throw new InvalidUrlError({ input }); - } - input = parsed; + // Parse parameters, ensuring that input is an object + if (isURL(input)) { + input = spreadUrlObject(input); } - else if (URL && (input instanceof URL)) { - input = urlToOptions(input); + else if (isString(input)) { + input = spreadUrlObject(parseUrl(input)); } else { callback = options; - options = input; + options = validateUrl(input); input = { protocol: protocol }; } if (isFunction(options)) { @@ -551,27 +559,57 @@ function wrap(protocols) { return exports; } -/* istanbul ignore next */ function noop() { /* empty */ } -// from https://github.com/nodejs/node/blob/master/lib/internal/url.js -function urlToOptions(urlObject) { - var options = { - protocol: urlObject.protocol, - hostname: urlObject.hostname.startsWith("[") ? - /* istanbul ignore next */ - urlObject.hostname.slice(1, -1) : - urlObject.hostname, - hash: urlObject.hash, - search: urlObject.search, - pathname: urlObject.pathname, - path: urlObject.pathname + urlObject.search, - href: urlObject.href, - }; - if (urlObject.port !== "") { - options.port = Number(urlObject.port); +function parseUrl(input) { + var parsed; + // istanbul ignore else + if (useNativeURL) { + parsed = new URL(input); } - return options; + else { + // Ensure the URL is valid and absolute + parsed = validateUrl(url.parse(input)); + if (!isString(parsed.protocol)) { + throw new InvalidUrlError({ input }); + } + } + return parsed; +} + +function resolveUrl(relative, base) { + // istanbul ignore next + return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative)); +} + +function validateUrl(input) { + if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { + throw new InvalidUrlError({ input: input.href || input }); + } + if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { + throw new InvalidUrlError({ input: input.href || input }); + } + return input; +} + +function spreadUrlObject(urlObject, target) { + var spread = target || {}; + for (var key of preservedUrlFields) { + spread[key] = urlObject[key]; + } + + // Fix IPv6 hostname + if (spread.hostname.startsWith("[")) { + spread.hostname = spread.hostname.slice(1, -1); + } + // Ensure port is a number + if (spread.port !== "") { + spread.port = Number(spread.port); + } + // Concatenate path + spread.path = spread.search ? spread.pathname + spread.search : spread.pathname; + + return spread; } function removeMatchingHeaders(regex, headers) { @@ -589,7 +627,10 @@ function removeMatchingHeaders(regex, headers) { function createErrorType(code, message, baseClass) { // Create constructor function CustomError(properties) { - Error.captureStackTrace(this, this.constructor); + // istanbul ignore else + if (isFunction(Error.captureStackTrace)) { + Error.captureStackTrace(this, this.constructor); + } Object.assign(this, properties || {}); this.code = code; this.message = this.cause ? message + ": " + this.cause.message : message; @@ -597,8 +638,16 @@ function createErrorType(code, message, baseClass) { // Attach constructor and set default properties CustomError.prototype = new (baseClass || Error)(); - CustomError.prototype.constructor = CustomError; - CustomError.prototype.name = "Error [" + code + "]"; + Object.defineProperties(CustomError.prototype, { + constructor: { + value: CustomError, + enumerable: false, + }, + name: { + value: "Error [" + code + "]", + enumerable: false, + }, + }); return CustomError; } @@ -628,6 +677,10 @@ function isBuffer(value) { return typeof value === "object" && ("length" in value); } +function isURL(value) { + return URL && value instanceof URL; +} + // Exports module.exports = wrap({ http: http, https: https }); module.exports.wrap = wrap; diff --git a/.output/server/node_modules/follow-redirects/package.json b/.output/server/node_modules/follow-redirects/package.json index 2248eff..3e479a1 100644 --- a/.output/server/node_modules/follow-redirects/package.json +++ b/.output/server/node_modules/follow-redirects/package.json @@ -1,6 +1,6 @@ { "name": "follow-redirects", - "version": "1.15.3", + "version": "1.15.9", "description": "HTTP and HTTPS modules that follow redirects.", "license": "MIT", "main": "index.js", @@ -16,7 +16,7 @@ }, "repository": { "type": "git", - "url": "git@github.com:follow-redirects/follow-redirects.git" + "url": "git+ssh://git@github.com/follow-redirects/follow-redirects.git" }, "homepage": "https://github.com/follow-redirects/follow-redirects", "bugs": { @@ -54,5 +54,8 @@ "lolex": "^3.1.0", "mocha": "^6.0.2", "nyc": "^14.1.1" - } + }, + "__npminstall_done": true, + "_from": "follow-redirects@1.15.9", + "_resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/form-data/lib/form_data.js b/.output/server/node_modules/form-data/lib/form_data.js index 18dc819..3479d18 100644 --- a/.output/server/node_modules/form-data/lib/form_data.js +++ b/.output/server/node_modules/form-data/lib/form_data.js @@ -8,6 +8,7 @@ var fs = require('fs'); var Stream = require('stream').Stream; var mime = require('mime-types'); var asynckit = require('asynckit'); +var setToStringTag = require('es-set-tostringtag'); var populate = require('./populate.js'); // Public API @@ -61,7 +62,7 @@ FormData.prototype.append = function(field, value, options) { } // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { + if (Array.isArray(value)) { // Please convert your array into string // the way web server expects it this._error(new Error('Arrays are not supported.')); @@ -102,7 +103,7 @@ FormData.prototype._trackLength = function(header, value, options) { FormData.LINE_BREAK.length; // empty or either doesn't have path or not an http response or not a stream - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) { + if (!value || ( !value.path && !(value.readable && Object.prototype.hasOwnProperty.call(value, 'httpVersion')) && !(value instanceof Stream))) { return; } @@ -113,8 +114,7 @@ FormData.prototype._trackLength = function(header, value, options) { }; FormData.prototype._lengthRetriever = function(value, callback) { - - if (value.hasOwnProperty('fd')) { + if (Object.prototype.hasOwnProperty.call(value, 'fd')) { // take read range into a account // `end` = Infinity –> read file till the end @@ -149,11 +149,11 @@ FormData.prototype._lengthRetriever = function(value, callback) { } // or http response - } else if (value.hasOwnProperty('httpVersion')) { + } else if (Object.prototype.hasOwnProperty.call(value, 'httpVersion')) { callback(null, +value.headers['content-length']); // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { + } else if (Object.prototype.hasOwnProperty.call(value, 'httpModule')) { // wait till response come back value.on('response', function(response) { value.pause(); @@ -193,22 +193,23 @@ FormData.prototype._multiPartHeader = function(field, value, options) { var header; for (var prop in headers) { - if (!headers.hasOwnProperty(prop)) continue; - header = headers[prop]; + if (Object.prototype.hasOwnProperty.call(headers, prop)) { + header = headers[prop]; - // skip nullish headers. - if (header == null) { - continue; - } + // skip nullish headers. + if (header == null) { + continue; + } - // convert all headers to arrays. - if (!Array.isArray(header)) { - header = [header]; - } + // convert all headers to arrays. + if (!Array.isArray(header)) { + header = [header]; + } - // add non-empty headers. - if (header.length) { - contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; + // add non-empty headers. + if (header.length) { + contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; + } } } @@ -229,7 +230,7 @@ FormData.prototype._getContentDisposition = function(value, options) { // formidable and the browser add a name property // fs- and request- streams have path property filename = path.basename(options.filename || value.name || value.path); - } else if (value.readable && value.hasOwnProperty('httpVersion')) { + } else if (value.readable && Object.prototype.hasOwnProperty.call(value, 'httpVersion')) { // or try http response filename = path.basename(value.client._httpMessage.path || ''); } @@ -257,7 +258,7 @@ FormData.prototype._getContentType = function(value, options) { } // or if it's http-reponse - if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { + if (!contentType && value.readable && Object.prototype.hasOwnProperty.call(value, 'httpVersion')) { contentType = value.headers['content-type']; } @@ -298,7 +299,7 @@ FormData.prototype.getHeaders = function(userHeaders) { }; for (header in userHeaders) { - if (userHeaders.hasOwnProperty(header)) { + if (Object.prototype.hasOwnProperty.call(userHeaders, header)) { formHeaders[header.toLowerCase()] = userHeaders[header]; } } @@ -319,7 +320,7 @@ FormData.prototype.getBoundary = function() { }; FormData.prototype.getBuffer = function() { - var dataBuffer = new Buffer.alloc( 0 ); + var dataBuffer = new Buffer.alloc(0); var boundary = this.getBoundary(); // Create the form content. Add Line breaks to the end of data. @@ -499,3 +500,4 @@ FormData.prototype._error = function(err) { FormData.prototype.toString = function () { return '[object FormData]'; }; +setToStringTag(FormData, 'FormData'); diff --git a/.output/server/node_modules/form-data/package.json b/.output/server/node_modules/form-data/package.json index 43e7193..eeecedf 100644 --- a/.output/server/node_modules/form-data/package.json +++ b/.output/server/node_modules/form-data/package.json @@ -2,7 +2,7 @@ "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)", "name": "form-data", "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", - "version": "4.0.0", + "version": "4.0.2", "repository": { "type": "git", "url": "git://github.com/form-data/form-data.git" @@ -11,13 +11,16 @@ "browser": "./lib/browser", "typings": "./index.d.ts", "scripts": { - "pretest": "rimraf coverage test/tmp", - "test": "istanbul cover test/run.js", - "posttest": "istanbul report lcov text", - "lint": "eslint lib/*.js test/*.js test/integration/*.js", + "pretest": "npm run lint", + "pretests-only": "rimraf coverage test/tmp", + "tests-only": "istanbul cover test/run.js", + "posttests-only": "istanbul report lcov text", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "lint": "eslint --ext=js,mjs .", "report": "istanbul report lcov text", "ci-lint": "is-node-modern 8 && npm run lint || is-node-not-modern 8", - "ci-test": "npm run test && npm run browser && npm run report", + "ci-test": "npm run tests-only && npm run browser && npm run report", "predebug": "rimraf coverage test/tmp", "debug": "verbose=1 ./test/run.js", "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage", @@ -40,29 +43,35 @@ "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "devDependencies": { - "@types/node": "^12.0.10", - "browserify": "^13.1.1", + "@types/combined-stream": "^1.0.6", + "@types/mime-types": "^2.1.4", + "@types/node": "^12.20.55", + "browserify": "^13.3.0", "browserify-istanbul": "^2.0.0", - "coveralls": "^3.0.4", - "cross-spawn": "^6.0.5", - "eslint": "^6.0.1", + "coveralls": "^3.1.1", + "cross-spawn": "^6.0.6", + "eslint": "^6.8.0", "fake": "^0.2.2", "far": "^0.0.7", - "formidable": "^1.0.17", - "in-publish": "^2.0.0", + "formidable": "^1.2.6", + "in-publish": "^2.0.1", "is-node-modern": "^1.0.0", "istanbul": "^0.4.5", "obake": "^0.1.2", - "puppeteer": "^1.19.0", - "pkgfiles": "^2.3.0", - "pre-commit": "^1.1.3", - "request": "^2.88.0", + "pkgfiles": "^2.3.2", + "pre-commit": "^1.2.2", + "puppeteer": "^1.20.0", + "request": "~2.87.0", "rimraf": "^2.7.1", - "tape": "^4.6.2", - "typescript": "^3.5.2" + "tape": "^5.9.0", + "typescript": "^3.9.10" }, - "license": "MIT" + "license": "MIT", + "__npminstall_done": true, + "_from": "form-data@4.0.2", + "_resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/function-bind/implementation.js b/.output/server/node_modules/function-bind/implementation.js new file mode 100644 index 0000000..fd4384c --- /dev/null +++ b/.output/server/node_modules/function-bind/implementation.js @@ -0,0 +1,84 @@ +'use strict'; + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; diff --git a/.output/server/node_modules/function-bind/index.js b/.output/server/node_modules/function-bind/index.js new file mode 100644 index 0000000..3bb6b96 --- /dev/null +++ b/.output/server/node_modules/function-bind/index.js @@ -0,0 +1,5 @@ +'use strict'; + +var implementation = require('./implementation'); + +module.exports = Function.prototype.bind || implementation; diff --git a/.output/server/node_modules/function-bind/package.json b/.output/server/node_modules/function-bind/package.json new file mode 100644 index 0000000..ddf879e --- /dev/null +++ b/.output/server/node_modules/function-bind/package.json @@ -0,0 +1,90 @@ +{ + "name": "function-bind", + "version": "1.1.2", + "description": "Implementation of Function.prototype.bind", + "keywords": [ + "function", + "bind", + "shim", + "es5" + ], + "author": "Raynos <raynos2@gmail.com>", + "repository": { + "type": "git", + "url": "https://github.com/Raynos/function-bind.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "main": "index", + "homepage": "https://github.com/Raynos/function-bind", + "contributors": [ + { + "name": "Raynos" + }, + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "bugs": { + "url": "https://github.com/Raynos/function-bind/issues", + "email": "raynos2@gmail.com" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "license": "MIT", + "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npmignore --auto --commentLines=autogenerated", + "pretest": "npm run lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "nyc tape 'test/**/*.js'", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "__npminstall_done": true, + "_from": "function-bind@1.1.2", + "_resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/get-intrinsic/index.js b/.output/server/node_modules/get-intrinsic/index.js new file mode 100644 index 0000000..bd1d94b --- /dev/null +++ b/.output/server/node_modules/get-intrinsic/index.js @@ -0,0 +1,378 @@ +'use strict'; + +var undefined; + +var $Object = require('es-object-atoms'); + +var $Error = require('es-errors'); +var $EvalError = require('es-errors/eval'); +var $RangeError = require('es-errors/range'); +var $ReferenceError = require('es-errors/ref'); +var $SyntaxError = require('es-errors/syntax'); +var $TypeError = require('es-errors/type'); +var $URIError = require('es-errors/uri'); + +var abs = require('math-intrinsics/abs'); +var floor = require('math-intrinsics/floor'); +var max = require('math-intrinsics/max'); +var min = require('math-intrinsics/min'); +var pow = require('math-intrinsics/pow'); +var round = require('math-intrinsics/round'); +var sign = require('math-intrinsics/sign'); + +var $Function = Function; + +// eslint-disable-next-line consistent-return +var getEvalledConstructor = function (expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); + } catch (e) {} +}; + +var $gOPD = require('gopd'); +var $defineProperty = require('es-define-property'); + +var throwTypeError = function () { + throw new $TypeError(); +}; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = require('has-symbols')(); + +var getProto = require('get-proto'); +var $ObjectGPO = require('get-proto/Object.getPrototypeOf'); +var $ReflectGPO = require('get-proto/Reflect.getPrototypeOf'); + +var $apply = require('call-bind-apply-helpers/functionApply'); +var $call = require('call-bind-apply-helpers/functionCall'); + +var needsEval = {}; + +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + __proto__: null, + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': $Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': $EvalError, + '%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, + '%Function%': $Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': $Object, + '%Object.getOwnPropertyDescriptor%': $gOPD, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': $RangeError, + '%ReferenceError%': $ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%URIError%': $URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, + + '%Function.prototype.call%': $call, + '%Function.prototype.apply%': $apply, + '%Object.defineProperty%': $defineProperty, + '%Object.getPrototypeOf%': $ObjectGPO, + '%Math.abs%': abs, + '%Math.floor%': floor, + '%Math.max%': max, + '%Math.min%': min, + '%Math.pow%': pow, + '%Math.round%': round, + '%Math.sign%': sign, + '%Reflect.getPrototypeOf%': $ReflectGPO +}; + +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + +var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getEvalledConstructor('async function () {}'); + } else if (name === '%GeneratorFunction%') { + value = getEvalledConstructor('function* () {}'); + } else if (name === '%AsyncGeneratorFunction%') { + value = getEvalledConstructor('async function* () {}'); + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; +}; + +var LEGACY_ALIASES = { + __proto__: null, + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] +}; + +var bind = require('function-bind'); +var hasOwn = require('hasown'); +var $concat = bind.call($call, Array.prototype.concat); +var $spliceApply = bind.call($apply, Array.prototype.splice); +var $replace = bind.call($call, String.prototype.replace); +var $strSlice = bind.call($call, String.prototype.slice); +var $exec = bind.call($call, RegExp.prototype.exec); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; +}; diff --git a/.output/server/node_modules/get-intrinsic/package.json b/.output/server/node_modules/get-intrinsic/package.json new file mode 100644 index 0000000..54406ef --- /dev/null +++ b/.output/server/node_modules/get-intrinsic/package.json @@ -0,0 +1,100 @@ +{ + "name": "get-intrinsic", + "version": "1.3.0", + "description": "Get and robustly cache all JS language-level intrinsics at first require time", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-intrinsic.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "intrinsic", + "getintrinsic", + "es-abstract" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-intrinsic/issues" + }, + "homepage": "https://github.com/ljharb/get-intrinsic#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "auto-changelog": "^2.5.0", + "call-bound": "^1.0.3", + "encoding": "^0.1.13", + "es-abstract": "^1.23.9", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "make-async-function": "^1.0.0", + "make-async-generator-function": "^1.0.0", + "make-generator-function": "^2.0.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/GetIntrinsic.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "__npminstall_done": true, + "_from": "get-intrinsic@1.3.0", + "_resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/get-proto/Object.getPrototypeOf.js b/.output/server/node_modules/get-proto/Object.getPrototypeOf.js new file mode 100644 index 0000000..c2cbbdf --- /dev/null +++ b/.output/server/node_modules/get-proto/Object.getPrototypeOf.js @@ -0,0 +1,6 @@ +'use strict'; + +var $Object = require('es-object-atoms'); + +/** @type {import('./Object.getPrototypeOf')} */ +module.exports = $Object.getPrototypeOf || null; diff --git a/.output/server/node_modules/get-proto/Reflect.getPrototypeOf.js b/.output/server/node_modules/get-proto/Reflect.getPrototypeOf.js new file mode 100644 index 0000000..e6c51be --- /dev/null +++ b/.output/server/node_modules/get-proto/Reflect.getPrototypeOf.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./Reflect.getPrototypeOf')} */ +module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; diff --git a/.output/server/node_modules/get-proto/index.js b/.output/server/node_modules/get-proto/index.js new file mode 100644 index 0000000..7e5747b --- /dev/null +++ b/.output/server/node_modules/get-proto/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var reflectGetProto = require('./Reflect.getPrototypeOf'); +var originalGetProto = require('./Object.getPrototypeOf'); + +var getDunderProto = require('dunder-proto/get'); + +/** @type {import('.')} */ +module.exports = reflectGetProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return reflectGetProto(O); + } + : originalGetProto + ? function getProto(O) { + if (!O || (typeof O !== 'object' && typeof O !== 'function')) { + throw new TypeError('getProto: not an object'); + } + // @ts-expect-error TS can't narrow inside a closure, for some reason + return originalGetProto(O); + } + : getDunderProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return getDunderProto(O); + } + : null; diff --git a/.output/server/node_modules/get-proto/package.json b/.output/server/node_modules/get-proto/package.json new file mode 100644 index 0000000..46efbc2 --- /dev/null +++ b/.output/server/node_modules/get-proto/package.json @@ -0,0 +1,84 @@ +{ + "name": "get-proto", + "version": "1.0.1", + "description": "Robustly get the [[Prototype]] of an object", + "main": "index.js", + "exports": { + ".": "./index.js", + "./Reflect.getPrototypeOf": "./Reflect.getPrototypeOf.js", + "./Object.getPrototypeOf": "./Object.getPrototypeOf.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@\">=10.2\" audit --production", + "tests-only": "nyc tape 'test/**/*.js'", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-proto.git" + }, + "keywords": [ + "get", + "proto", + "prototype", + "getPrototypeOf", + "[[Prototype]]" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-proto/issues" + }, + "homepage": "https://github.com/ljharb/get-proto#readme", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "testling": { + "files": "test/index.js" + }, + "__npminstall_done": true, + "_from": "get-proto@1.0.1", + "_resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/gopd/gOPD.js b/.output/server/node_modules/gopd/gOPD.js new file mode 100644 index 0000000..cf9616c --- /dev/null +++ b/.output/server/node_modules/gopd/gOPD.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./gOPD')} */ +module.exports = Object.getOwnPropertyDescriptor; diff --git a/.output/server/node_modules/gopd/index.js b/.output/server/node_modules/gopd/index.js new file mode 100644 index 0000000..a4081b0 --- /dev/null +++ b/.output/server/node_modules/gopd/index.js @@ -0,0 +1,15 @@ +'use strict'; + +/** @type {import('.')} */ +var $gOPD = require('./gOPD'); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; diff --git a/.output/server/node_modules/gopd/package.json b/.output/server/node_modules/gopd/package.json new file mode 100644 index 0000000..04d9da5 --- /dev/null +++ b/.output/server/node_modules/gopd/package.json @@ -0,0 +1,80 @@ +{ + "name": "gopd", + "version": "1.2.0", + "description": "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./gOPD": "./gOPD.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "tsc -p . && attw -P", + "lint": "eslint --ext=js,mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/gopd.git" + }, + "keywords": [ + "ecmascript", + "javascript", + "getownpropertydescriptor", + "property", + "descriptor" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/gopd/issues" + }, + "homepage": "https://github.com/ljharb/gopd#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "__npminstall_done": true, + "_from": "gopd@1.2.0", + "_resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/has-symbols/index.js b/.output/server/node_modules/has-symbols/index.js new file mode 100644 index 0000000..fa65265 --- /dev/null +++ b/.output/server/node_modules/has-symbols/index.js @@ -0,0 +1,14 @@ +'use strict'; + +var origSymbol = typeof Symbol !== 'undefined' && Symbol; +var hasSymbolSham = require('./shams'); + +/** @type {import('.')} */ +module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); +}; diff --git a/.output/server/node_modules/has-symbols/package.json b/.output/server/node_modules/has-symbols/package.json new file mode 100644 index 0000000..fcfe085 --- /dev/null +++ b/.output/server/node_modules/has-symbols/package.json @@ -0,0 +1,114 @@ +{ + "name": "has-symbols", + "version": "1.1.0", + "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.", + "main": "index.js", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "tests-only": "npm run test:stock && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/has-symbols.git" + }, + "keywords": [ + "Symbol", + "symbols", + "typeof", + "sham", + "polyfill", + "native", + "core-js", + "ES6" + ], + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/has-symbols/issues" + }, + "homepage": "https://github.com/ljharb/has-symbols#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/core-js": "^2.5.8", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "core-js": "^2.6.12", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "types" + ] + }, + "__npminstall_done": true, + "_from": "has-symbols@1.1.0", + "_resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/has-symbols/shams.js b/.output/server/node_modules/has-symbols/shams.js new file mode 100644 index 0000000..f97b474 --- /dev/null +++ b/.output/server/node_modules/has-symbols/shams.js @@ -0,0 +1,45 @@ +'use strict'; + +/** @type {import('./shams')} */ +/* eslint complexity: [2, 18], max-statements: [2, 33] */ +module.exports = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + // eslint-disable-next-line no-extra-parens + var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; +}; diff --git a/.output/server/node_modules/has-tostringtag/package.json b/.output/server/node_modules/has-tostringtag/package.json new file mode 100644 index 0000000..20dc062 --- /dev/null +++ b/.output/server/node_modules/has-tostringtag/package.json @@ -0,0 +1,111 @@ +{ + "name": "has-tostringtag", + "version": "1.0.2", + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "description": "Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams.", + "license": "MIT", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": [ + { + "types": "./index.d.ts", + "default": "./index.js" + }, + "./index.js" + ], + "./shams": [ + { + "types": "./shams.d.ts", + "default": "./shams.js" + }, + "./shams.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "npm run test:stock && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/has-tostringtag.git" + }, + "bugs": { + "url": "https://github.com/inspect-js/has-tostringtag/issues" + }, + "homepage": "https://github.com/inspect-js/has-tostringtag#readme", + "keywords": [ + "javascript", + "ecmascript", + "symbol", + "symbols", + "tostringtag", + "Symbol.toStringTag" + ], + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/has-symbols": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "core-js": "^2.6.12", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "__npminstall_done": true, + "_from": "has-tostringtag@1.0.2", + "_resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/has-tostringtag/shams.js b/.output/server/node_modules/has-tostringtag/shams.js new file mode 100644 index 0000000..809580d --- /dev/null +++ b/.output/server/node_modules/has-tostringtag/shams.js @@ -0,0 +1,8 @@ +'use strict'; + +var hasSymbols = require('has-symbols/shams'); + +/** @type {import('.')} */ +module.exports = function hasToStringTagShams() { + return hasSymbols() && !!Symbol.toStringTag; +}; diff --git a/.output/server/node_modules/hasown/index.js b/.output/server/node_modules/hasown/index.js new file mode 100644 index 0000000..34e6059 --- /dev/null +++ b/.output/server/node_modules/hasown/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = require('function-bind'); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); diff --git a/.output/server/node_modules/hasown/package.json b/.output/server/node_modules/hasown/package.json new file mode 100644 index 0000000..3c203fe --- /dev/null +++ b/.output/server/node_modules/hasown/package.json @@ -0,0 +1,95 @@ +{ + "name": "hasown", + "version": "2.0.2", + "description": "A robust, ES3 compatible, \"has own property\" predicate.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "index.d.ts", + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "npm run tsc", + "pretest": "npm run lint", + "tsc": "tsc -p .", + "posttsc": "attw -P", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/hasOwn.git" + }, + "keywords": [ + "has", + "hasOwnProperty", + "hasOwn", + "has-own", + "own", + "has", + "property", + "in", + "javascript", + "ecmascript" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/hasOwn/issues" + }, + "homepage": "https://github.com/inspect-js/hasOwn#readme", + "dependencies": { + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.15.1", + "@ljharb/eslint-config": "^21.1.0", + "@ljharb/tsconfig": "^0.2.0", + "@types/function-bind": "^1.1.10", + "@types/mock-property": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "mock-property": "^1.0.3", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.5", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "test" + ] + }, + "__npminstall_done": true, + "_from": "hasown@2.0.2", + "_resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/hookable/package.json b/.output/server/node_modules/hookable/package.json index 6dd3883..bb7c509 100644 --- a/.output/server/node_modules/hookable/package.json +++ b/.output/server/node_modules/hookable/package.json @@ -45,5 +45,8 @@ "release": "pnpm test && pnpm build && changelogen --release --push && pnpm publish", "test": "pnpm lint && vitest run --coverage", "test:types": "tsc --noEmit" - } + }, + "__npminstall_done": true, + "_from": "hookable@5.5.3", + "_resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/math-intrinsics/abs.js b/.output/server/node_modules/math-intrinsics/abs.js new file mode 100644 index 0000000..a751424 --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/abs.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./abs')} */ +module.exports = Math.abs; diff --git a/.output/server/node_modules/math-intrinsics/floor.js b/.output/server/node_modules/math-intrinsics/floor.js new file mode 100644 index 0000000..ab0e5d7 --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/floor.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./floor')} */ +module.exports = Math.floor; diff --git a/.output/server/node_modules/math-intrinsics/isNaN.js b/.output/server/node_modules/math-intrinsics/isNaN.js new file mode 100644 index 0000000..e36475c --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/isNaN.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNaN')} */ +module.exports = Number.isNaN || function isNaN(a) { + return a !== a; +}; diff --git a/.output/server/node_modules/math-intrinsics/max.js b/.output/server/node_modules/math-intrinsics/max.js new file mode 100644 index 0000000..edb55df --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/max.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./max')} */ +module.exports = Math.max; diff --git a/.output/server/node_modules/math-intrinsics/min.js b/.output/server/node_modules/math-intrinsics/min.js new file mode 100644 index 0000000..5a4a7c7 --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/min.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./min')} */ +module.exports = Math.min; diff --git a/.output/server/node_modules/math-intrinsics/package.json b/.output/server/node_modules/math-intrinsics/package.json new file mode 100644 index 0000000..5b75632 --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/package.json @@ -0,0 +1,89 @@ +{ + "name": "math-intrinsics", + "version": "1.1.0", + "description": "ES Math-related intrinsics and helpers, robustly cached.", + "main": false, + "exports": { + "./abs": "./abs.js", + "./floor": "./floor.js", + "./isFinite": "./isFinite.js", + "./isInteger": "./isInteger.js", + "./isNaN": "./isNaN.js", + "./isNegativeZero": "./isNegativeZero.js", + "./max": "./max.js", + "./min": "./min.js", + "./mod": "./mod.js", + "./pow": "./pow.js", + "./sign": "./sign.js", + "./round": "./round.js", + "./constants/maxArrayLength": "./constants/maxArrayLength.js", + "./constants/maxSafeInteger": "./constants/maxSafeInteger.js", + "./constants/maxValue": "./constants/maxValue.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@'>= 10.2' audit --production", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/math-intrinsics.git" + }, + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/math-intrinsics/issues" + }, + "homepage": "https://github.com/es-shims/math-intrinsics#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/for-each": "^0.3.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "es-value-fixtures": "^1.5.0", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.3", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "__npminstall_done": true, + "_from": "math-intrinsics@1.1.0", + "_resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz" +} \ No newline at end of file diff --git a/.output/server/node_modules/math-intrinsics/pow.js b/.output/server/node_modules/math-intrinsics/pow.js new file mode 100644 index 0000000..c0a4103 --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/pow.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./pow')} */ +module.exports = Math.pow; diff --git a/.output/server/node_modules/math-intrinsics/round.js b/.output/server/node_modules/math-intrinsics/round.js new file mode 100644 index 0000000..b792156 --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/round.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./round')} */ +module.exports = Math.round; diff --git a/.output/server/node_modules/math-intrinsics/sign.js b/.output/server/node_modules/math-intrinsics/sign.js new file mode 100644 index 0000000..9e5173c --- /dev/null +++ b/.output/server/node_modules/math-intrinsics/sign.js @@ -0,0 +1,11 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./sign')} */ +module.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : +1; +}; diff --git a/.output/server/node_modules/mime-db/package.json b/.output/server/node_modules/mime-db/package.json index b9d5786..1664c9f 100644 --- a/.output/server/node_modules/mime-db/package.json +++ b/.output/server/node_modules/mime-db/package.json @@ -56,5 +56,8 @@ "test-cov": "nyc --reporter=html --reporter=text npm test", "update": "npm run fetch && npm run build", "version": "node scripts/version-history.js && git add HISTORY.md" - } + }, + "__npminstall_done": true, + "_from": "mime-db@1.52.0", + "_resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/mime-types/package.json b/.output/server/node_modules/mime-types/package.json index 70409da..5e27c7c 100644 --- a/.output/server/node_modules/mime-types/package.json +++ b/.output/server/node_modules/mime-types/package.json @@ -40,5 +40,8 @@ "test": "mocha --reporter spec test/test.js", "test-ci": "nyc --reporter=lcov --reporter=text npm test", "test-cov": "nyc --reporter=html --reporter=text npm test" - } + }, + "__npminstall_done": true, + "_from": "mime-types@2.1.35", + "_resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/ms/index.js b/.output/server/node_modules/ms/index.js index c4498bc..ea734fb 100644 --- a/.output/server/node_modules/ms/index.js +++ b/.output/server/node_modules/ms/index.js @@ -23,7 +23,7 @@ var y = d * 365.25; * @api public */ -module.exports = function(val, options) { +module.exports = function (val, options) { options = options || {}; var type = typeof val; if (type === 'string' && val.length > 0) { diff --git a/.output/server/node_modules/ms/package.json b/.output/server/node_modules/ms/package.json index 3408eef..99d2d9b 100644 --- a/.output/server/node_modules/ms/package.json +++ b/.output/server/node_modules/ms/package.json @@ -1,8 +1,8 @@ { "name": "ms", - "version": "2.1.2", + "version": "2.1.3", "description": "Tiny millisecond conversion utility", - "repository": "zeit/ms", + "repository": "vercel/ms", "main": "./index", "files": [ "index.js" @@ -28,10 +28,14 @@ }, "license": "MIT", "devDependencies": { - "eslint": "4.12.1", + "eslint": "4.18.2", "expect.js": "0.3.1", "husky": "0.14.3", "lint-staged": "5.0.0", - "mocha": "4.0.1" - } + "mocha": "4.0.1", + "prettier": "2.0.5" + }, + "__npminstall_done": true, + "_from": "ms@2.1.3", + "_resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/proxy-from-env/package.json b/.output/server/node_modules/proxy-from-env/package.json index cf47990..9e420e9 100644 --- a/.output/server/node_modules/proxy-from-env/package.json +++ b/.output/server/node_modules/proxy-from-env/package.json @@ -30,5 +30,8 @@ "eslint": "^6.8.0", "istanbul": "^0.4.5", "mocha": "^7.1.0" - } + }, + "__npminstall_done": true, + "_from": "proxy-from-env@1.1.0", + "_resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/source-map-js/lib/source-map-consumer.js b/.output/server/node_modules/source-map-js/lib/source-map-consumer.js index db0a532..ee66114 100644 --- a/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +++ b/.output/server/node_modules/source-map-js/lib/source-map-consumer.js @@ -151,7 +151,9 @@ SourceMapConsumer.prototype.eachMapping = for (var i = 0, n = mappings.length; i < n; i++) { var mapping = mappings[i]; var source = mapping.source === null ? null : sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, sourceMapURL); + if(source !== null) { + source = util.computeSourceURL(sourceRoot, source, sourceMapURL); + } boundCallback({ source: source, generatedLine: mapping.generatedLine, @@ -1142,7 +1144,9 @@ IndexedSourceMapConsumer.prototype._parseMappings = var mapping = sectionMappings[j]; var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + if(source !== null) { + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + } this._sources.add(source); source = this._sources.indexOf(source); diff --git a/.output/server/node_modules/source-map-js/package.json b/.output/server/node_modules/source-map-js/package.json index e6fd929..7820159 100644 --- a/.output/server/node_modules/source-map-js/package.json +++ b/.output/server/node_modules/source-map-js/package.json @@ -1,7 +1,7 @@ { "name": "source-map-js", "description": "Generates and consumes source maps", - "version": "1.2.0", + "version": "1.2.1", "homepage": "https://github.com/7rulnik/source-map-js", "author": "Valentin 7rulnik Semirulnik <v7rulnik@gmail.com>", "contributors": [ @@ -67,5 +67,8 @@ "clean-publish": { "cleanDocs": true }, - "typings": "source-map.d.ts" + "typings": "source-map.d.ts", + "__npminstall_done": true, + "_from": "source-map-js@1.2.1", + "_resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/supports-color/index.js b/.output/server/node_modules/supports-color/index.js index 4ce0a2d..b22d50e 100644 --- a/.output/server/node_modules/supports-color/index.js +++ b/.output/server/node_modules/supports-color/index.js @@ -31,17 +31,29 @@ if ( } function envForceColor() { - if ('FORCE_COLOR' in env) { - if (env.FORCE_COLOR === 'true') { - return 1; - } - - if (env.FORCE_COLOR === 'false') { - return 0; - } - - return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + if (!('FORCE_COLOR' in env)) { + return; } + + if (env.FORCE_COLOR === 'true') { + return 1; + } + + if (env.FORCE_COLOR === 'false') { + return 0; + } + + if (env.FORCE_COLOR.length === 0) { + return 1; + } + + const level = Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + + if (![0, 1, 2, 3].includes(level)) { + return; + } + + return level; } function translateLevel(level) { @@ -112,11 +124,11 @@ function _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) { } if ('CI' in env) { - if ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) { + if (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) { return 3; } - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + if (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { return 1; } diff --git a/.output/server/node_modules/supports-color/package.json b/.output/server/node_modules/supports-color/package.json index dce0080..4fa447c 100644 --- a/.output/server/node_modules/supports-color/package.json +++ b/.output/server/node_modules/supports-color/package.json @@ -1,6 +1,6 @@ { "name": "supports-color", - "version": "9.4.0", + "version": "10.0.0", "description": "Detect whether a terminal supports color", "license": "MIT", "repository": "chalk/supports-color", @@ -12,15 +12,16 @@ }, "type": "module", "exports": { + "types": "./index.d.ts", "node": "./index.js", "default": "./browser.js" }, + "sideEffects": false, "engines": { - "node": ">=12" + "node": ">=18" }, "scripts": { - "//test": "xo && ava && tsd", - "test": "tsd" + "test": "xo && ava && tsd" }, "files": [ "index.js", @@ -51,10 +52,16 @@ "16m" ], "devDependencies": { - "@types/node": "^20.3.2", - "ava": "^5.3.1", - "import-fresh": "^3.3.0", - "tsd": "^0.18.0", - "xo": "^0.54.2" - } + "@types/node": "^22.10.2", + "ava": "^6.2.0", + "tsd": "^0.31.2", + "xo": "^0.60.0" + }, + "ava": { + "serial": true, + "workerThreads": false + }, + "__npminstall_done": true, + "_from": "supports-color@10.0.0", + "_resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-10.0.0.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/ufo/package.json b/.output/server/node_modules/ufo/package.json index 90dc8a5..719e957 100644 --- a/.output/server/node_modules/ufo/package.json +++ b/.output/server/node_modules/ufo/package.json @@ -43,5 +43,8 @@ "untyped": "^1.4.2", "vitest": "^2.0.3" }, - "packageManager": "pnpm@9.5.0" + "packageManager": "pnpm@9.5.0", + "__npminstall_done": true, + "_from": "ufo@1.5.4", + "_resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/unhead/dist/index.mjs b/.output/server/node_modules/unhead/dist/index.mjs index 80a13aa..85ded09 100644 --- a/.output/server/node_modules/unhead/dist/index.mjs +++ b/.output/server/node_modules/unhead/dist/index.mjs @@ -1,637 +1,9 @@ -import { createHooks } from 'hookable'; -import { DomPlugin } from '@unhead/dom'; -import { defineHeadPlugin, tagDedupeKey, tagWeight, HasElementTags, hashCode, NetworkEvents, SortModifiers, processTemplateParams, resolveTitleTemplate, IsBrowser, normaliseEntryTags, composableNames, whitelistSafeInput, unpackMeta } from '@unhead/shared'; -export { composableNames } from '@unhead/shared'; - -const UsesMergeStrategy = ["templateParams", "htmlAttrs", "bodyAttrs"]; -const DedupePlugin = defineHeadPlugin({ - hooks: { - "tag:normalise": function({ tag }) { - ["hid", "vmid", "key"].forEach((key) => { - if (tag.props[key]) { - tag.key = tag.props[key]; - delete tag.props[key]; - } - }); - const generatedKey = tagDedupeKey(tag); - const dedupe = generatedKey || (tag.key ? `${tag.tag}:${tag.key}` : false); - if (dedupe) - tag._d = dedupe; - }, - "tags:resolve": function(ctx) { - const deduping = {}; - ctx.tags.forEach((tag) => { - const dedupeKey = (tag.key ? `${tag.tag}:${tag.key}` : tag._d) || tag._p; - const dupedTag = deduping[dedupeKey]; - if (dupedTag) { - let strategy = tag?.tagDuplicateStrategy; - if (!strategy && UsesMergeStrategy.includes(tag.tag)) - strategy = "merge"; - if (strategy === "merge") { - const oldProps = dupedTag.props; - ["class", "style"].forEach((key) => { - if (tag.props[key] && oldProps[key]) { - if (key === "style" && !oldProps[key].endsWith(";")) - oldProps[key] += ";"; - tag.props[key] = `${oldProps[key]} ${tag.props[key]}`; - } - }); - deduping[dedupeKey].props = { - ...oldProps, - ...tag.props - }; - return; - } else if (tag._e === dupedTag._e) { - dupedTag._duped = dupedTag._duped || []; - tag._d = `${dupedTag._d}:${dupedTag._duped.length + 1}`; - dupedTag._duped.push(tag); - return; - } else if (tagWeight(tag) > tagWeight(dupedTag)) { - return; - } - } - const propCount = Object.keys(tag.props).length + (tag.innerHTML ? 1 : 0) + (tag.textContent ? 1 : 0); - if (HasElementTags.includes(tag.tag) && propCount === 0) { - delete deduping[dedupeKey]; - return; - } - deduping[dedupeKey] = tag; - }); - const newTags = []; - Object.values(deduping).forEach((tag) => { - const dupes = tag._duped; - delete tag._duped; - newTags.push(tag); - if (dupes) - newTags.push(...dupes); - }); - ctx.tags = newTags; - ctx.tags = ctx.tags.filter((t) => !(t.tag === "meta" && (t.props.name || t.props.property) && !t.props.content)); - } - } -}); - -const PayloadPlugin = defineHeadPlugin({ - mode: "server", - hooks: { - "tags:resolve": function(ctx) { - const payload = {}; - ctx.tags.filter((tag) => ["titleTemplate", "templateParams", "title"].includes(tag.tag) && tag._m === "server").forEach((tag) => { - payload[tag.tag] = tag.tag.startsWith("title") ? tag.textContent : tag.props; - }); - Object.keys(payload).length && ctx.tags.push({ - tag: "script", - innerHTML: JSON.stringify(payload), - props: { id: "unhead:payload", type: "application/json" } - }); - } - } -}); - -const ValidEventTags = ["script", "link", "bodyAttrs"]; -function stripEventHandlers(tag) { - const props = {}; - const eventHandlers = {}; - Object.entries(tag.props).forEach(([key, value]) => { - if (key.startsWith("on") && typeof value === "function") { - if (NetworkEvents.includes(key)) - props[key] = `this.dataset.${key} = true`; - eventHandlers[key] = value; - } else { - props[key] = value; - } - }); - return { props, eventHandlers }; -} -const EventHandlersPlugin = defineHeadPlugin((head) => ({ - hooks: { - "tags:resolve": function(ctx) { - for (const tag of ctx.tags) { - if (ValidEventTags.includes(tag.tag)) { - const { props, eventHandlers } = stripEventHandlers(tag); - tag.props = props; - if (Object.keys(eventHandlers).length) { - if (tag.props.src || tag.props.href) - tag.key = tag.key || hashCode(tag.props.src || tag.props.href); - tag._eventHandlers = eventHandlers; - } - } - } - }, - "dom:renderTag": function(ctx, dom, track) { - if (!ctx.tag._eventHandlers) - return; - const $eventListenerTarget = ctx.tag.tag === "bodyAttrs" ? dom.defaultView : ctx.$el; - Object.entries(ctx.tag._eventHandlers).forEach(([k, value]) => { - const sdeKey = `${ctx.tag._d || ctx.tag._p}:${k}`; - const eventName = k.slice(2).toLowerCase(); - const eventDedupeKey = `data-h-${eventName}`; - track(ctx.id, sdeKey, () => { - }); - if (ctx.$el.hasAttribute(eventDedupeKey)) - return; - ctx.$el.setAttribute(eventDedupeKey, ""); - let observer; - const handler = (e) => { - value(e); - observer?.disconnect(); - }; - if (k in ctx.$el.dataset) { - handler(new Event(k.replace("on", ""))); - } else if (NetworkEvents.includes(k) && typeof MutationObserver !== "undefined") { - observer = new MutationObserver((e) => { - const hasAttr = e.some((m) => m.attributeName === `data-${k}`); - if (hasAttr) { - handler(new Event(k.replace("on", ""))); - observer?.disconnect(); - } - }); - observer.observe(ctx.$el, { - attributes: true - }); - } else { - $eventListenerTarget.addEventListener(eventName, handler); - } - track(ctx.id, sdeKey, () => { - observer?.disconnect(); - $eventListenerTarget.removeEventListener(eventName, handler); - ctx.$el.removeAttribute(eventDedupeKey); - }); - }); - } - } -})); - -const DupeableTags = ["link", "style", "script", "noscript"]; -const HashKeyedPlugin = defineHeadPlugin({ - hooks: { - "tag:normalise": ({ tag }) => { - if (tag.key && DupeableTags.includes(tag.tag)) { - tag.props["data-hid"] = tag._h = hashCode(tag.key); - } - } - } -}); - -const SortPlugin = defineHeadPlugin({ - hooks: { - "tags:resolve": (ctx) => { - const tagPositionForKey = (key) => ctx.tags.find((tag) => tag._d === key)?._p; - for (const { prefix, offset } of SortModifiers) { - for (const tag of ctx.tags.filter((tag2) => typeof tag2.tagPriority === "string" && tag2.tagPriority.startsWith(prefix))) { - const position = tagPositionForKey( - tag.tagPriority.replace(prefix, "") - ); - if (typeof position !== "undefined") - tag._p = position + offset; - } - } - ctx.tags.sort((a, b) => a._p - b._p).sort((a, b) => tagWeight(a) - tagWeight(b)); - } - } -}); - -const SupportedAttrs = { - meta: "content", - link: "href", - htmlAttrs: "lang" -}; -const TemplateParamsPlugin = defineHeadPlugin((head) => ({ - hooks: { - "tags:resolve": (ctx) => { - const { tags } = ctx; - const title = tags.find((tag) => tag.tag === "title")?.textContent; - const idx = tags.findIndex((tag) => tag.tag === "templateParams"); - const params = idx !== -1 ? tags[idx].props : {}; - const sep = params.separator || "|"; - delete params.separator; - params.pageTitle = processTemplateParams(params.pageTitle || title || "", params, sep); - for (const tag of tags.filter((t) => t.processTemplateParams !== false)) { - const v = SupportedAttrs[tag.tag]; - if (v && typeof tag.props[v] === "string") { - tag.props[v] = processTemplateParams(tag.props[v], params, sep); - } else if (tag.processTemplateParams === true || ["titleTemplate", "title"].includes(tag.tag)) { - ["innerHTML", "textContent"].forEach((p) => { - if (typeof tag[p] === "string") - tag[p] = processTemplateParams(tag[p], params, sep); - }); - } - } - head._templateParams = params; - head._separator = sep; - ctx.tags = tags.filter((tag) => tag.tag !== "templateParams"); - } - } -})); - -const TitleTemplatePlugin = defineHeadPlugin({ - hooks: { - "tags:resolve": (ctx) => { - const { tags } = ctx; - let titleTemplateIdx = tags.findIndex((i) => i.tag === "titleTemplate"); - const titleIdx = tags.findIndex((i) => i.tag === "title"); - if (titleIdx !== -1 && titleTemplateIdx !== -1) { - const newTitle = resolveTitleTemplate( - tags[titleTemplateIdx].textContent, - tags[titleIdx].textContent - ); - if (newTitle !== null) { - tags[titleIdx].textContent = newTitle || tags[titleIdx].textContent; - } else { - delete tags[titleIdx]; - } - } else if (titleTemplateIdx !== -1) { - const newTitle = resolveTitleTemplate( - tags[titleTemplateIdx].textContent - ); - if (newTitle !== null) { - tags[titleTemplateIdx].textContent = newTitle; - tags[titleTemplateIdx].tag = "title"; - titleTemplateIdx = -1; - } - } - if (titleTemplateIdx !== -1) { - delete tags[titleTemplateIdx]; - } - ctx.tags = tags.filter(Boolean); - } - } -}); - -const XSSPlugin = defineHeadPlugin({ - hooks: { - "tags:afterResolve": function(ctx) { - for (const tag of ctx.tags) { - if (typeof tag.innerHTML === "string") { - if (tag.innerHTML && ["application/ld+json", "application/json"].includes(tag.props.type)) { - tag.innerHTML = tag.innerHTML.replace(/</g, "\\u003C"); - } else { - tag.innerHTML = tag.innerHTML.replace(new RegExp(`</${tag.tag}`, "g"), `<\\/${tag.tag}`); - } - } - } - } - } -}); - -let activeHead; -// @__NO_SIDE_EFFECTS__ -function createHead(options = {}) { - const head = createHeadCore(options); - head.use(DomPlugin()); - return activeHead = head; -} -// @__NO_SIDE_EFFECTS__ -function createServerHead(options = {}) { - return activeHead = createHeadCore(options); -} -function filterMode(mode, ssr) { - return !mode || mode === "server" && ssr || mode === "client" && !ssr; -} -function createHeadCore(options = {}) { - const hooks = createHooks(); - hooks.addHooks(options.hooks || {}); - options.document = options.document || (IsBrowser ? document : void 0); - const ssr = !options.document; - const updated = () => { - head.dirty = true; - hooks.callHook("entries:updated", head); - }; - let entryCount = 0; - let entries = []; - const plugins = []; - const head = { - plugins, - dirty: false, - resolvedOptions: options, - hooks, - headEntries() { - return entries; - }, - use(p) { - const plugin = typeof p === "function" ? p(head) : p; - if (!plugin.key || !plugins.some((p2) => p2.key === plugin.key)) { - plugins.push(plugin); - filterMode(plugin.mode, ssr) && hooks.addHooks(plugin.hooks || {}); - } - }, - push(input, entryOptions) { - delete entryOptions?.head; - const entry = { - _i: entryCount++, - input, - ...entryOptions - }; - if (filterMode(entry.mode, ssr)) { - entries.push(entry); - updated(); - } - return { - dispose() { - entries = entries.filter((e) => e._i !== entry._i); - hooks.callHook("entries:updated", head); - updated(); - }, - // a patch is the same as creating a new entry, just a nice DX - patch(input2) { - entries = entries.map((e) => { - if (e._i === entry._i) { - e.input = entry.input = input2; - } - return e; - }); - updated(); - } - }; - }, - async resolveTags() { - const resolveCtx = { tags: [], entries: [...entries] }; - await hooks.callHook("entries:resolve", resolveCtx); - for (const entry of resolveCtx.entries) { - const resolved = entry.resolvedInput || entry.input; - entry.resolvedInput = await (entry.transform ? entry.transform(resolved) : resolved); - if (entry.resolvedInput) { - for (const tag of await normaliseEntryTags(entry)) { - const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions }; - await hooks.callHook("tag:normalise", tagCtx); - resolveCtx.tags.push(tagCtx.tag); - } - } - } - await hooks.callHook("tags:beforeResolve", resolveCtx); - await hooks.callHook("tags:resolve", resolveCtx); - await hooks.callHook("tags:afterResolve", resolveCtx); - return resolveCtx.tags; - }, - ssr - }; - [ - DedupePlugin, - PayloadPlugin, - EventHandlersPlugin, - HashKeyedPlugin, - SortPlugin, - TemplateParamsPlugin, - TitleTemplatePlugin, - XSSPlugin, - ...options?.plugins || [] - ].forEach((p) => head.use(p)); - head.hooks.callHook("init", head); - return head; -} - -// @__NO_SIDE_EFFECTS__ -function HashHydrationPlugin() { - return defineHeadPlugin({}); -} - -const importRe = /@import/; -// @__NO_SIDE_EFFECTS__ -function CapoPlugin(options) { - return defineHeadPlugin({ - hooks: { - "tags:beforeResolve": function({ tags }) { - for (const tag of tags) { - if (tag.tagPosition && tag.tagPosition !== "head") - continue; - tag.tagPriority = tag.tagPriority || tagWeight(tag); - if (tag.tagPriority !== 100) - continue; - const isTruthy = (val) => val === "" || val === true; - const isScript = tag.tag === "script"; - const isLink = tag.tag === "link"; - if (isScript && isTruthy(tag.props.async)) { - tag.tagPriority = 30; - } else if (tag.tag === "style" && tag.innerHTML && importRe.test(tag.innerHTML)) { - tag.tagPriority = 40; - } else if (isScript && tag.props.src && !isTruthy(tag.props.defer) && !isTruthy(tag.props.async) && tag.props.type !== "module" && !tag.props.type?.endsWith("json")) { - tag.tagPriority = 50; - } else if (isLink && tag.props.rel === "stylesheet" || tag.tag === "style") { - tag.tagPriority = 60; - } else if (isLink && ["preload", "modulepreload"].includes(tag.props.rel)) { - tag.tagPriority = 70; - } else if (isScript && isTruthy(tag.props.defer) && tag.props.src && !isTruthy(tag.props.async)) { - tag.tagPriority = 80; - } else if (isLink && ["prefetch", "dns-prefetch", "prerender"].includes(tag.props.rel)) { - tag.tagPriority = 90; - } - } - options?.track && tags.push({ - tag: "htmlAttrs", - props: { - "data-capo": "" - } - }); - } - } - }); -} - -const unheadComposablesImports = [ - { - from: "unhead", - imports: composableNames - } -]; - -function getActiveHead() { - return activeHead; -} - -function useHead(input, options = {}) { - const head = options.head || getActiveHead(); - return head?.push(input, options); -} - -function useHeadSafe(input, options = {}) { - return useHead(input, { - ...options || {}, - transform: whitelistSafeInput - }); -} - -function useServerHead(input, options = {}) { - return useHead(input, { ...options, mode: "server" }); -} - -function useServerHeadSafe(input, options = {}) { - return useHeadSafe(input, { ...options, mode: "server" }); -} - -function useSeoMeta(input, options) { - const { title, titleTemplate, ...meta } = input; - return useHead({ - title, - titleTemplate, - // we need to input the meta so the reactivity will be resolved - // @ts-expect-error runtime type - _flatMeta: meta - }, { - ...options, - transform(t) { - const meta2 = unpackMeta({ ...t._flatMeta }); - delete t._flatMeta; - return { - // @ts-expect-error runtime type - ...t, - meta: meta2 - }; - } - }); -} - -function useServerSeoMeta(input, options) { - return useSeoMeta(input, { - ...options || {}, - mode: "server" - }); -} - -const UseScriptDefaults = { - defer: true, - fetchpriority: "low" -}; -function useScript(input, _options) { - const options = _options || {}; - const head = options.head || getActiveHead(); - if (!head) - throw new Error("No active head found, please provide a head instance or use the useHead composable"); - const id = input.key || hashCode(input.src || (typeof input.innerHTML === "string" ? input.innerHTML : "")); - const key = `use-script.${id}`; - if (head._scripts?.[id]) - return head._scripts[id]; - async function transform(entry) { - const script2 = await (options.transform || ((input2) => input2))(entry.script[0]); - const ctx = { script: script2 }; - await head.hooks.callHook("script:transform", ctx); - return { script: [ctx.script] }; - } - function maybeHintEarlyConnection(rel) { - if ( - // opt-out - options.skipEarlyConnections || !input.src.includes("//") || !head.ssr - ) - return; - const key2 = `use-script.${id}.early-connection`; - head.push({ - link: [{ key: key2, rel, href: new URL(input.src).origin }] - }, { mode: "server" }); - } - const script = { - id, - status: "awaitingLoad", - loaded: false, - remove() { - if (script.status === "loaded") { - script.entry?.dispose(); - script.status = "removed"; - head.hooks.callHook(`script:updated`, hookCtx); - delete head._scripts?.[id]; - return true; - } - return false; - }, - waitForLoad() { - return new Promise((resolve) => { - if (script.status === "loaded") - resolve(options.use()); - function watchForScriptLoaded({ script: script2 }) { - if (script2.id === id && script2.status === "loaded") { - resolve(options.use?.()); - head.hooks.removeHook("script:updated", watchForScriptLoaded); - } - } - head.hooks.hook("script:updated", watchForScriptLoaded); - }); - }, - load() { - if (script.status !== "awaitingLoad") - return script.waitForLoad(); - script.status = "loading"; - head.hooks.callHook(`script:updated`, hookCtx); - script.entry = head.push({ - script: [ - // async by default - { ...UseScriptDefaults, ...input, key } - ] - }, { - ...options, - // @ts-expect-error untyped - transform, - head - }); - return script.waitForLoad(); - } - }; - const hookCtx = { script }; - NetworkEvents.forEach((fn) => { - const _fn = typeof input[fn] === "function" ? input[fn].bind({}) : null; - input[fn] = (e) => { - script.status = fn === "onload" ? "loaded" : fn === "onerror" ? "error" : "loading"; - head.hooks.callHook(`script:updated`, hookCtx); - _fn && _fn(e); - }; - }); - let trigger = options.trigger; - if (trigger) { - const isIdle = trigger === "idle"; - if (isIdle) { - if (head.ssr) - trigger = "manual"; - else - trigger = new Promise((resolve) => requestIdleCallback(() => resolve())); - } - trigger === "manual" && (trigger = new Promise(() => { - })); - trigger instanceof Promise && trigger.then(script.load); - maybeHintEarlyConnection(isIdle ? "preconnect" : "dns-prefetch"); - } else { - script.load(); - maybeHintEarlyConnection("preconnect"); - } - function resolveInnerHtmlLoad(ctx) { - if (ctx.tag.key === key) { - if (ctx.tag.innerHTML) { - setTimeout( - () => { - script.status = "loaded"; - head.hooks.callHook("script:updated", hookCtx); - typeof input.onload === "function" && input.onload(new Event("load")); - }, - 5 - /* give inline script a chance to run */ - ); - } - head.hooks.removeHook("dom:renderTag", resolveInnerHtmlLoad); - } - } - head.hooks.hook("dom:renderTag", resolveInnerHtmlLoad); - const instance = new Proxy({}, { - get(_, fn) { - const stub = options.stub?.({ script, fn }); - if (stub) - return stub; - if (fn === "$script") - return script; - return (...args) => { - if (head.ssr || !options.use) - return; - if (script.loaded) { - const api = options.use(); - return api[fn](...args); - } else { - return script.waitForLoad().then( - (api) => { - api[fn](...args); - } - ); - } - }; - } - }); - head._scripts = head._scripts || {}; - head._scripts[id] = instance; - return instance; -} - -export { CapoPlugin, HashHydrationPlugin, createHead, createHeadCore, createServerHead, getActiveHead, unheadComposablesImports, useHead, useHeadSafe, useScript, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta }; +export { u as useHead, a as useHeadSafe, b as useSeoMeta, c as useServerHead, d as useServerHeadSafe, e as useServerSeoMeta } from './shared/unhead.BPM0-cfG.mjs'; +export { c as createHeadCore, a as createUnhead } from './shared/unhead.B52g_5xR.mjs'; +export { u as useScript } from './shared/unhead.B578PsDV.mjs'; +import './shared/unhead.CApf5sj3.mjs'; +import './shared/unhead.DQc16pHI.mjs'; +import './shared/unhead.yem5I2v_.mjs'; +import 'hookable'; +import './shared/unhead.BaPU1zLf.mjs'; +import './shared/unhead.DZbvapt-.mjs'; diff --git a/.output/server/node_modules/unhead/dist/plugins.mjs b/.output/server/node_modules/unhead/dist/plugins.mjs new file mode 100644 index 0000000..873cb24 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/plugins.mjs @@ -0,0 +1,94 @@ +export { A as AliasSortingPlugin, D as DeprecationsPlugin, P as PromisesPlugin, T as TemplateParamsPlugin } from './shared/unhead.DnNYlT4k.mjs'; +import { d as defineHeadPlugin } from './shared/unhead.CApf5sj3.mjs'; +export { F as FlatMetaPlugin, S as SafeInputPlugin } from './shared/unhead.CApf5sj3.mjs'; +import './shared/unhead.DZbvapt-.mjs'; +import './shared/unhead.kVuXtrDW.mjs'; +import './shared/unhead.DQc16pHI.mjs'; +import './shared/unhead.yem5I2v_.mjs'; + +function CanonicalPlugin(options) { + return (head) => { + function resolvePath(path) { + if (options?.customResolver) { + return options.customResolver(path); + } + let host = options.canonicalHost || (!head.ssr ? window.location.origin : ""); + if (!host.startsWith("http") && !host.startsWith("//")) { + host = `https://${host}`; + } + host = new URL(host).origin; + if (path.startsWith("http") || path.startsWith("//")) + return path; + try { + return new URL(path, host).toString(); + } catch { + return path; + } + } + return { + key: "canonical", + hooks: { + "tags:resolve": (ctx) => { + for (const tag of ctx.tags) { + if (tag.tag === "meta") { + if (tag.props.property?.startsWith("og:image") || tag.props.name?.startsWith("twitter:image")) { + tag.props.content = resolvePath(tag.props.content); + } else if (tag.props?.property === "og:url") { + tag.props.content = resolvePath(tag.props.content); + } + } else if (tag.tag === "link" && tag.props.rel === "canonical") { + tag.props.href = resolvePath(tag.props.href); + } + } + } + } + }; + }; +} + +function InferSeoMetaPlugin(options = {}) { + return defineHeadPlugin((head) => { + head.push({ + meta: [ + { + name: "twitter:card", + content: options.twitterCard || "summary_large_image", + tagPriority: "low" + }, + { + "property": "og:title", + "tagPriority": "low", + "data-infer": "" + }, + { + "property": "og:description", + "tagPriority": "low", + "data-infer": "" + } + ] + }); + return { + key: "infer-seo-meta", + hooks: { + "tags:beforeResolve": ({ tagMap }) => { + let title = head._title || ""; + const titleTemplate = head._titleTemplate; + const ogTitle = tagMap.get("meta:og:title"); + if (typeof ogTitle?.props["data-infer"] !== "undefined") { + if (titleTemplate) { + title = typeof titleTemplate === "function" ? titleTemplate(title) : titleTemplate.replace("%s", title); + } + ogTitle.props.content = options.ogTitle ? options.ogTitle(title) : title || ""; + } + const description = tagMap.get("meta:description")?.props?.content; + const ogDescription = tagMap.get("meta:og:description"); + if (typeof ogDescription?.props["data-infer"] !== "undefined") { + ogDescription.props.content = options.ogDescription ? options.ogDescription(description) : description || ""; + } + } + } + }; + }); +} + +export { CanonicalPlugin, InferSeoMetaPlugin, defineHeadPlugin }; diff --git a/.output/server/node_modules/unhead/dist/scripts.mjs b/.output/server/node_modules/unhead/dist/scripts.mjs new file mode 100644 index 0000000..1300f42 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/scripts.mjs @@ -0,0 +1,30 @@ +export { r as resolveScriptKey, u as useScript } from './shared/unhead.B578PsDV.mjs'; +import './shared/unhead.yem5I2v_.mjs'; + +function createSpyProxy(target, onApply) { + const stack = []; + let stackIdx = -1; + const handler = (reuseStack = false) => ({ + get(_, prop, receiver) { + if (!reuseStack) { + stackIdx++; + stack[stackIdx] = []; + } + const v = Reflect.get(_, prop, receiver); + if (typeof v === "object" || typeof v === "function") { + stack[stackIdx].push({ type: "get", key: prop }); + return new Proxy(v, handler(true)); + } + stack[stackIdx].push({ type: "get", key: prop, value: v }); + return v; + }, + apply(_, __, args) { + stack[stackIdx].push({ type: "apply", key: "", args }); + onApply(stack); + return Reflect.apply(_, __, args); + } + }); + return new Proxy(target, handler()); +} + +export { createSpyProxy }; diff --git a/.output/server/node_modules/unhead/dist/server.mjs b/.output/server/node_modules/unhead/dist/server.mjs new file mode 100644 index 0000000..57ba172 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/server.mjs @@ -0,0 +1,214 @@ +import { a as createUnhead } from './shared/unhead.B52g_5xR.mjs'; +import { T as TagsWithInnerContent, S as SelfClosingTags$1 } from './shared/unhead.yem5I2v_.mjs'; +import 'hookable'; +import './shared/unhead.BaPU1zLf.mjs'; +import './shared/unhead.DZbvapt-.mjs'; + +function createHead(options = {}) { + const unhead = createUnhead({ + ...options, + // @ts-expect-error untyped + document: false, + propResolvers: [ + ...options.propResolvers || [], + (k, v) => { + if (k && k.startsWith("on") && typeof v === "function") { + return `this.dataset.${k}fired = true`; + } + return v; + } + ], + init: [ + options.disableDefaults ? void 0 : { + htmlAttrs: { + lang: "en" + }, + meta: [ + { + charset: "utf-8" + }, + { + name: "viewport", + content: "width=device-width, initial-scale=1" + } + ] + }, + ...options.init || [] + ] + }); + unhead.use({ + key: "server", + hooks: { + "tags:resolve": function(ctx) { + const title = ctx.tagMap.get("title"); + const titleTemplate = ctx.tagMap.get("titleTemplate"); + const templateParams = ctx.tagMap.get("templateParams"); + const payload = { + title: title?.mode === "server" ? unhead._title : void 0, + titleTemplate: titleTemplate?.mode === "server" ? unhead._titleTemplate : void 0, + templateParams: templateParams?.mode === "server" ? unhead._templateParams : void 0 + }; + if (Object.values(payload).some(Boolean)) { + ctx.tags.push({ + tag: "script", + innerHTML: JSON.stringify(payload), + props: { id: "unhead:payload", type: "application/json" } + }); + } + } + } + }); + return unhead; +} + +const Attrs = /(\w+)(?:=["']([^"']*)["'])?/g; +const HtmlTag = /<html[^>]*>/; +const BodyTag = /<body[^>]*>/; +const HeadContent = /<head[^>]*>(.*?)<\/head>/s; +const SelfClosingTags = /<(meta|link|base)[^>]*>/g; +const ClosingTags = /<(title|script|style)[^>]*>[\s\S]*?<\/\1>/g; +const NewLines = /(\n\s*)+/g; +function extractAttributes(tag) { + const inner = tag.match(/<([^>]*)>/)?.[1].split(" ").slice(1).join(" "); + if (!inner) + return {}; + const attrs = inner.match(Attrs); + return attrs?.reduce((acc, attr) => { + const sep = attr.indexOf("="); + const key = sep > 0 ? attr.slice(0, sep) : attr; + const val = sep > 0 ? attr.slice(sep + 1).slice(1, -1) : true; + return { ...acc, [key]: val }; + }, {}) || {}; +} +function extractUnheadInputFromHtml(html) { + const input = {}; + input.htmlAttrs = extractAttributes(html.match(HtmlTag)?.[0] || ""); + html = html.replace(HtmlTag, "<html>"); + input.bodyAttrs = extractAttributes(html.match(BodyTag)?.[0] || ""); + html = html.replace(BodyTag, "<body>"); + const innerHead = html.match(HeadContent)?.[1] || ""; + innerHead.match(SelfClosingTags)?.forEach((s) => { + html = html.replace(s, ""); + const tag = s.split(" ")[0].slice(1); + input[tag] = input[tag] || []; + input[tag].push(extractAttributes(s)); + }); + innerHead.match(ClosingTags)?.map((tag) => tag.trim()).filter(Boolean).forEach((tag) => { + html = html.replace(tag, ""); + const type = tag.match(/<([a-z-]+)/)?.[1]; + const res = extractAttributes(tag); + const innerContent = tag.match(/>([\s\S]*)</)?.[1]; + if (innerContent) { + res[type !== "script" ? "textContent" : "innerHTML"] = innerContent; + } + if (type === "title") { + input.title = res; + } else { + input[type] = input[type] || []; + input[type].push(res); + } + }); + html = html.replace(NewLines, "\n"); + return { html, input }; +} + +function encodeAttribute(value) { + return String(value).replace(/"/g, """); +} +function propsToString(props) { + let attrs = ""; + for (const key in props) { + if (!Object.hasOwn(props, key)) + continue; + let value = props[key]; + if ((key === "class" || key === "style") && typeof value !== "string") { + value = key === "class" ? Array.from(value).join(" ") : Array.from(value).map(([k, v]) => `${k}:${v}`).join(";"); + } + if (value !== false && value !== null) { + attrs += value === true ? ` ${key}` : ` ${key}="${encodeAttribute(value)}"`; + } + } + return attrs; +} + +function escapeHtml(str) { + return str.replace(/[&<>"'/]/g, (char) => { + switch (char) { + case "&": + return "&"; + case "<": + return "<"; + case ">": + return ">"; + case '"': + return """; + case "'": + return "'"; + case "/": + return "/"; + default: + return char; + } + }); +} +function tagToString(tag) { + const attrs = propsToString(tag.props); + const openTag = `<${tag.tag}${attrs}>`; + if (!TagsWithInnerContent.has(tag.tag)) + return SelfClosingTags$1.has(tag.tag) ? openTag : `${openTag}</${tag.tag}>`; + let content = String(tag.innerHTML || ""); + if (tag.textContent) + content = escapeHtml(String(tag.textContent)); + return SelfClosingTags$1.has(tag.tag) ? openTag : `${openTag}${content}</${tag.tag}>`; +} + +function ssrRenderTags(tags, options) { + const schema = { htmlAttrs: {}, bodyAttrs: {}, tags: { head: "", bodyClose: "", bodyOpen: "" } }; + const lineBreaks = !options?.omitLineBreaks ? "\n" : ""; + for (const tag of tags) { + if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") { + Object.assign(schema[tag.tag], tag.props); + continue; + } + const s = tagToString(tag); + const tagPosition = tag.tagPosition || "head"; + schema.tags[tagPosition] += schema.tags[tagPosition] ? `${lineBreaks}${s}` : s; + } + return { + headTags: schema.tags.head, + bodyTags: schema.tags.bodyClose, + bodyTagsOpen: schema.tags.bodyOpen, + htmlAttrs: propsToString(schema.htmlAttrs), + bodyAttrs: propsToString(schema.bodyAttrs) + }; +} + +async function renderSSRHead(head, options) { + const beforeRenderCtx = { shouldRender: true }; + await head.hooks.callHook("ssr:beforeRender", beforeRenderCtx); + if (!beforeRenderCtx.shouldRender) { + return { + headTags: "", + bodyTags: "", + bodyTagsOpen: "", + htmlAttrs: "", + bodyAttrs: "" + }; + } + const ctx = { tags: options?.resolvedTags || await head.resolveTags() }; + await head.hooks.callHook("ssr:render", ctx); + const html = ssrRenderTags(ctx.tags, options); + const renderCtx = { tags: ctx.tags, html }; + await head.hooks.callHook("ssr:rendered", renderCtx); + return renderCtx.html; +} + +async function transformHtmlTemplate(head, html, options) { + const { html: parsedHtml, input } = extractUnheadInputFromHtml(html); + head.push(input, { _index: 0 }); + const headHtml = await renderSSRHead(head, options); + return parsedHtml.replace("<html>", `<html${headHtml.htmlAttrs}>`).replace("<body>", `<body>${headHtml.bodyTagsOpen ? ` +${headHtml.bodyTagsOpen}` : ``}`).replace("<body>", `<body${headHtml.bodyAttrs}>`).replace("</head>", `${headHtml.headTags}</head>`).replace("</body>", `${headHtml.bodyTags}</body>`); +} + +export { createHead, escapeHtml, extractUnheadInputFromHtml, propsToString, renderSSRHead, ssrRenderTags, tagToString, transformHtmlTemplate }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.B52g_5xR.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.B52g_5xR.mjs new file mode 100644 index 0000000..3b49b27 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.B52g_5xR.mjs @@ -0,0 +1,170 @@ +import { createHooks } from 'hookable'; +import { n as normalizeEntryToTags, d as dedupeKey, i as isMetaArrayDupeKey } from './unhead.BaPU1zLf.mjs'; +import { t as tagWeight, s as sortTags } from './unhead.DZbvapt-.mjs'; +import { c as UsesMergeStrategy, V as ValidHeadTags } from './unhead.yem5I2v_.mjs'; + +function registerPlugin(head, p) { + const plugin = typeof p === "function" ? p(head) : p; + const key = plugin.key || String(head.plugins.size + 1); + const exists = head.plugins.get(key); + if (!exists) { + head.plugins.set(key, plugin); + head.hooks.addHooks(plugin.hooks || {}); + } +} +function createHeadCore(resolvedOptions = {}) { + return createUnhead(resolvedOptions); +} +function createUnhead(resolvedOptions = {}) { + const hooks = createHooks(); + hooks.addHooks(resolvedOptions.hooks || {}); + const ssr = !resolvedOptions.document; + const entries = /* @__PURE__ */ new Map(); + const plugins = /* @__PURE__ */ new Map(); + const normalizeQueue = []; + const head = { + _entryCount: 1, + // 0 is reserved for internal use + plugins, + dirty: false, + resolvedOptions, + hooks, + ssr, + entries, + headEntries() { + return [...entries.values()]; + }, + use: (p) => registerPlugin(head, p), + push(input, _options) { + const options = { ..._options || {} }; + delete options.head; + const _i = options._index ?? head._entryCount++; + const inst = { _i, input, options }; + const _ = { + _poll(rm = false) { + head.dirty = true; + !rm && normalizeQueue.push(_i); + hooks.callHook("entries:updated", head); + }, + dispose() { + if (entries.delete(_i)) { + _._poll(true); + } + }, + // a patch is the same as creating a new entry, just a nice DX + patch(input2) { + if (!options.mode || options.mode === "server" && ssr || options.mode === "client" && !ssr) { + inst.input = input2; + entries.set(_i, inst); + _._poll(); + } + } + }; + _.patch(input); + return _; + }, + async resolveTags() { + const ctx = { + tagMap: /* @__PURE__ */ new Map(), + tags: [], + entries: [...head.entries.values()] + }; + await hooks.callHook("entries:resolve", ctx); + while (normalizeQueue.length) { + const i = normalizeQueue.shift(); + const e = entries.get(i); + if (e) { + const normalizeCtx = { + tags: normalizeEntryToTags(e.input, resolvedOptions.propResolvers || []).map((t) => Object.assign(t, e.options)), + entry: e + }; + await hooks.callHook("entries:normalize", normalizeCtx); + e._tags = normalizeCtx.tags.map((t, i2) => { + t._w = tagWeight(head, t); + t._p = (e._i << 10) + i2; + t._d = dedupeKey(t); + return t; + }); + } + } + let hasFlatMeta = false; + ctx.entries.flatMap((e) => (e._tags || []).map((t) => ({ ...t, props: { ...t.props } }))).sort(sortTags).reduce((acc, next) => { + const k = String(next._d || next._p); + if (!acc.has(k)) + return acc.set(k, next); + const prev = acc.get(k); + const strategy = next?.tagDuplicateStrategy || (UsesMergeStrategy.has(next.tag) ? "merge" : null) || (next.key && next.key === prev.key ? "merge" : null); + if (strategy === "merge") { + const newProps = { ...prev.props }; + Object.entries(next.props).forEach(([p, v]) => ( + // @ts-expect-error untyped + newProps[p] = p === "style" ? new Map([...prev.props.style || /* @__PURE__ */ new Map(), ...v]) : p === "class" ? /* @__PURE__ */ new Set([...prev.props.class || /* @__PURE__ */ new Set(), ...v]) : v + )); + acc.set(k, { ...next, props: newProps }); + } else if (next._p >> 10 === prev._p >> 10 && isMetaArrayDupeKey(next._d)) { + acc.set(k, Object.assign([...Array.isArray(prev) ? prev : [prev], next], next)); + hasFlatMeta = true; + } else if (next._w === prev._w ? next._p > prev._p : next?._w < prev?._w) { + acc.set(k, next); + } + return acc; + }, ctx.tagMap); + const title = ctx.tagMap.get("title"); + const titleTemplate = ctx.tagMap.get("titleTemplate"); + head._title = title?.textContent; + if (titleTemplate) { + const titleTemplateFn = titleTemplate?.textContent; + head._titleTemplate = typeof titleTemplateFn === "string" ? titleTemplateFn : void 0; + if (titleTemplateFn) { + let newTitle = typeof titleTemplateFn === "function" ? titleTemplateFn(title?.textContent) : titleTemplateFn; + if (typeof newTitle === "string" && !head.plugins.has("template-params")) { + newTitle = newTitle.replace("%s", title?.textContent || ""); + } + if (title) { + newTitle === null ? ctx.tagMap.delete("title") : ctx.tagMap.set("title", { ...title, textContent: newTitle }); + } else { + titleTemplate.tag = "title"; + titleTemplate.textContent = newTitle; + } + } + } + ctx.tags = Array.from(ctx.tagMap.values()); + if (hasFlatMeta) { + ctx.tags = ctx.tags.flat().sort(sortTags); + } + await hooks.callHook("tags:beforeResolve", ctx); + await hooks.callHook("tags:resolve", ctx); + await hooks.callHook("tags:afterResolve", ctx); + const finalTags = []; + for (const t of ctx.tags) { + const { innerHTML, tag, props } = t; + if (!ValidHeadTags.has(tag)) { + continue; + } + if (Object.keys(props).length === 0 && !t.innerHTML && !t.textContent) { + continue; + } + if (tag === "meta" && !props.content && !props["http-equiv"] && !props.charset) { + continue; + } + if (tag === "script" && innerHTML) { + if (props.type?.endsWith("json")) { + const v = typeof innerHTML === "string" ? innerHTML : JSON.stringify(innerHTML); + t.innerHTML = v.replace(/</g, "\\u003C"); + } else if (typeof innerHTML === "string") { + t.innerHTML = innerHTML.replace(new RegExp(`</${tag}`, "g"), `<\\/${tag}`); + } + t._d = dedupeKey(t); + } + finalTags.push(t); + } + return finalTags; + } + }; + (resolvedOptions?.plugins || []).forEach((p) => registerPlugin(head, p)); + head.hooks.callHook("init", head); + resolvedOptions.init?.forEach((e) => e && head.push(e)); + return head; +} + +export { createUnhead as a, createHeadCore as c }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs new file mode 100644 index 0000000..2603f83 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs @@ -0,0 +1,266 @@ +import { b as ScriptNetworkEvents } from './unhead.yem5I2v_.mjs'; + +function createNoopedRecordingProxy(instance = {}) { + const stack = []; + let stackIdx = -1; + const handler = (reuseStack = false) => ({ + get(_, prop, receiver) { + if (!reuseStack) { + const v = Reflect.get(_, prop, receiver); + if (typeof v !== "undefined") { + return v; + } + stackIdx++; + stack[stackIdx] = []; + } + stack[stackIdx].push({ type: "get", key: prop }); + return new Proxy(() => { + }, handler(true)); + }, + apply(_, __, args) { + stack[stackIdx].push({ type: "apply", key: "", args }); + return void 0; + } + }); + return { + proxy: new Proxy(instance || {}, handler()), + stack + }; +} +function createForwardingProxy(target) { + const handler = { + get(_, prop, receiver) { + const v = Reflect.get(_, prop, receiver); + if (typeof v === "object") { + return new Proxy(v, handler); + } + return v; + }, + apply(_, __, args) { + Reflect.apply(_, __, args); + return void 0; + } + }; + return new Proxy(target, handler); +} +function replayProxyRecordings(target, stack) { + stack.forEach((recordings) => { + let context = target; + let prevContext = target; + recordings.forEach(({ type, key, args }) => { + if (type === "get") { + prevContext = context; + context = context[key]; + } else if (type === "apply") { + context = context.call(prevContext, ...args); + } + }); + }); +} + +function resolveScriptKey(input) { + return input.key || input.src || (typeof input.innerHTML === "string" ? input.innerHTML : ""); +} +const PreconnectServerModes = ["preconnect", "dns-prefetch"]; +function useScript(head, _input, _options) { + const input = typeof _input === "string" ? { src: _input } : _input; + const options = _options || {}; + const id = resolveScriptKey(input); + const prevScript = head._scripts?.[id]; + if (prevScript) { + prevScript.setupTriggerHandler(options.trigger); + return prevScript; + } + options.beforeInit?.(); + const syncStatus = (s) => { + script.status = s; + head.hooks.callHook(`script:updated`, hookCtx); + }; + ScriptNetworkEvents.forEach((fn) => { + const k = fn; + const _fn = typeof input[k] === "function" ? input[k].bind(options.eventContext) : null; + input[k] = (e) => { + syncStatus(fn === "onload" ? "loaded" : fn === "onerror" ? "error" : "loading"); + _fn?.(e); + }; + }); + const _cbs = { loaded: [], error: [] }; + const _uniqueCbs = /* @__PURE__ */ new Set(); + const _registerCb = (key, cb, options2) => { + if (head.ssr) { + return; + } + if (options2?.key) { + const key2 = `${options2?.key}:${options2.key}`; + if (_uniqueCbs.has(key2)) { + return; + } + _uniqueCbs.add(key2); + } + if (_cbs[key]) { + const i = _cbs[key].push(cb); + return () => _cbs[key]?.splice(i - 1, 1); + } + cb(script.instance); + return () => { + }; + }; + const loadPromise = new Promise((resolve) => { + if (head.ssr) + return; + const emit = (api) => requestAnimationFrame(() => resolve(api)); + const _ = head.hooks.hook("script:updated", ({ script: script2 }) => { + const status = script2.status; + if (script2.id === id && (status === "loaded" || status === "error")) { + if (status === "loaded") { + if (typeof options.use === "function") { + const api = options.use(); + if (api) { + emit(api); + } + } else { + emit({}); + } + } else if (status === "error") { + resolve(false); + } + _(); + } + }); + }); + const script = { + _loadPromise: loadPromise, + instance: !head.ssr && options?.use?.() || null, + proxy: null, + id, + status: "awaitingLoad", + remove() { + script._triggerAbortController?.abort(); + script._triggerPromises = []; + script._warmupEl?.dispose(); + if (script.entry) { + script.entry.dispose(); + script.entry = void 0; + syncStatus("removed"); + delete head._scripts?.[id]; + return true; + } + return false; + }, + warmup(rel) { + const { src } = input; + const isCrossOrigin = !src.startsWith("/") || src.startsWith("//"); + const isPreconnect = rel && PreconnectServerModes.includes(rel); + let href = src; + if (!rel || isPreconnect && !isCrossOrigin) { + return; + } + if (isPreconnect) { + const $url = new URL(src); + href = `${$url.protocol}//${$url.host}`; + } + const link = { + href, + rel, + crossorigin: typeof input.crossorigin !== "undefined" ? input.crossorigin : isCrossOrigin ? "anonymous" : void 0, + referrerpolicy: typeof input.referrerpolicy !== "undefined" ? input.referrerpolicy : isCrossOrigin ? "no-referrer" : void 0, + fetchpriority: typeof input.fetchpriority !== "undefined" ? input.fetchpriority : "low", + integrity: input.integrity, + as: rel === "preload" ? "script" : void 0 + }; + script._warmupEl = head.push({ link: [link] }, { head, tagPriority: "high" }); + return script._warmupEl; + }, + load(cb) { + script._triggerAbortController?.abort(); + script._triggerPromises = []; + if (!script.entry) { + syncStatus("loading"); + const defaults = { + defer: true, + fetchpriority: "low" + }; + if (input.src && (input.src.startsWith("http") || input.src.startsWith("//"))) { + defaults.crossorigin = "anonymous"; + defaults.referrerpolicy = "no-referrer"; + } + script.entry = head.push({ + script: [{ ...defaults, ...input }] + }, options); + } + if (cb) + _registerCb("loaded", cb); + return loadPromise; + }, + onLoaded(cb, options2) { + return _registerCb("loaded", cb, options2); + }, + onError(cb, options2) { + return _registerCb("error", cb, options2); + }, + setupTriggerHandler(trigger) { + if (script.status !== "awaitingLoad") { + return; + } + if ((typeof trigger === "undefined" || trigger === "client") && !head.ssr || trigger === "server") { + script.load(); + } else if (trigger instanceof Promise) { + if (head.ssr) { + return; + } + if (!script._triggerAbortController) { + script._triggerAbortController = new AbortController(); + script._triggerAbortPromise = new Promise((resolve) => { + script._triggerAbortController.signal.addEventListener("abort", () => { + script._triggerAbortController = null; + resolve(); + }); + }); + } + script._triggerPromises = script._triggerPromises || []; + const idx = script._triggerPromises.push(Promise.race([ + trigger.then((v) => typeof v === "undefined" || v ? script.load : void 0), + script._triggerAbortPromise + ]).catch(() => { + }).then((res) => { + res?.(); + }).finally(() => { + script._triggerPromises?.splice(idx, 1); + })); + } else if (typeof trigger === "function") { + trigger(script.load); + } + }, + _cbs + }; + loadPromise.then((api) => { + if (api !== false) { + script.instance = api; + _cbs.loaded?.forEach((cb) => cb(api)); + _cbs.loaded = null; + } else { + _cbs.error?.forEach((cb) => cb()); + _cbs.error = null; + } + }); + const hookCtx = { script }; + script.setupTriggerHandler(options.trigger); + if (options.use) { + const { proxy, stack } = createNoopedRecordingProxy(head.ssr ? {} : options.use() || {}); + script.proxy = proxy; + script.onLoaded((instance) => { + replayProxyRecordings(instance, stack); + script.proxy = createForwardingProxy(instance); + }); + } + if (!options.warmupStrategy && (typeof options.trigger === "undefined" || options.trigger === "client")) { + options.warmupStrategy = "preload"; + } + if (options.warmupStrategy) { + script.warmup(options.warmupStrategy); + } + head._scripts = Object.assign(head._scripts || {}, { [id]: script }); + return script; +} + +export { resolveScriptKey as r, useScript as u }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs new file mode 100644 index 0000000..526b74b --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs @@ -0,0 +1,44 @@ +import { S as SafeInputPlugin, F as FlatMetaPlugin } from './unhead.CApf5sj3.mjs'; + +function useHead(unhead, input, options = {}) { + return unhead.push(input || {}, options); +} +function useHeadSafe(unhead, input = {}, options = {}) { + unhead.use(SafeInputPlugin); + return useHead(unhead, input, Object.assign(options, { _safe: true })); +} +function useSeoMeta(unhead, input = {}, options) { + unhead.use(FlatMetaPlugin); + function normalize(input2) { + if (input2._flatMeta) { + return input2; + } + const { title, titleTemplate, ...meta } = input2 || {}; + return { + title, + titleTemplate, + _flatMeta: meta + }; + } + const entry = unhead.push(normalize(input), options); + const corePatch = entry.patch; + if (!entry.__patched) { + entry.patch = (input2) => corePatch(normalize(input2)); + entry.__patched = true; + } + return entry; +} +function useServerHead(unhead, input = {}, options = {}) { + options.mode = "server"; + return unhead.push(input, options); +} +function useServerHeadSafe(unhead, input = {}, options = {}) { + options.mode = "server"; + return useHeadSafe(unhead, input, { ...options, mode: "server" }); +} +function useServerSeoMeta(unhead, input = {}, options) { + options.mode = "server"; + return useSeoMeta(unhead, input, { ...options, mode: "server" }); +} + +export { useHeadSafe as a, useSeoMeta as b, useServerHead as c, useServerHeadSafe as d, useServerSeoMeta as e, useHead as u }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.BaPU1zLf.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.BaPU1zLf.mjs new file mode 100644 index 0000000..1f479ca --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.BaPU1zLf.mjs @@ -0,0 +1,177 @@ +import { U as UniqueTags, T as TagsWithInnerContent, M as MetaTagsArrayable, a as TagConfigKeys, D as DupeableTags } from './unhead.yem5I2v_.mjs'; + +const allowedMetaProperties = ["name", "property", "http-equiv"]; +function isMetaArrayDupeKey(v) { + const k = v.split(":")[1]; + return MetaTagsArrayable.has(k); +} +function dedupeKey(tag) { + const { props, tag: name } = tag; + if (UniqueTags.has(name)) + return name; + if (name === "link" && props.rel === "canonical") + return "canonical"; + if (props.charset) + return "charset"; + if (tag.tag === "meta") { + for (const n of allowedMetaProperties) { + if (props[n] !== void 0) { + return `${name}:${props[n]}`; + } + } + } + if (tag.key) { + return `${name}:key:${tag.key}`; + } + if (props.id) { + return `${name}:id:${props.id}`; + } + if (TagsWithInnerContent.has(name)) { + const v = tag.textContent || tag.innerHTML; + if (v) { + return `${name}:content:${v}`; + } + } +} +function hashTag(tag) { + const dedupe = tag._h || tag._d; + if (dedupe) + return dedupe; + const inner = tag.textContent || tag.innerHTML; + if (inner) + return inner; + return `${tag.tag}:${Object.entries(tag.props).map(([k, v]) => `${k}:${String(v)}`).join(",")}`; +} + +function walkResolver(val, resolve, key) { + const type = typeof val; + if (type === "function") { + if (!key || key !== "titleTemplate" && !(key[0] === "o" && key[1] === "n")) { + val = val(); + } + } + let v; + if (resolve) { + v = resolve(key, val); + } + if (Array.isArray(v)) { + return v.map((r) => walkResolver(r, resolve)); + } + if (v?.constructor === Object) { + const next = {}; + for (const key2 of Object.keys(v)) { + next[key2] = walkResolver(v[key2], resolve, key2); + } + return next; + } + return v; +} + +function normalizeStyleClassProps(key, value) { + const store = key === "style" ? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Set(); + function processValue(rawValue) { + const value2 = rawValue.trim(); + if (!value2) + return; + if (key === "style") { + const [k, ...v] = value2.split(":").map((s) => s.trim()); + if (k && v.length) + store.set(k, v.join(":")); + } else { + value2.split(" ").filter(Boolean).forEach((c) => store.add(c)); + } + } + if (typeof value === "string") { + key === "style" ? value.split(";").forEach(processValue) : processValue(value); + } else if (Array.isArray(value)) { + value.forEach((item) => processValue(item)); + } else if (value && typeof value === "object") { + Object.entries(value).forEach(([k, v]) => { + if (v && v !== "false") { + key === "style" ? store.set(k.trim(), v) : processValue(k); + } + }); + } + return store; +} +function normalizeProps(tag, input) { + tag.props = tag.props || {}; + if (!input) { + return tag; + } + Object.entries(input).forEach(([key, value]) => { + if (value === null) { + tag.props[key] = null; + return; + } + if (key === "class" || key === "style") { + tag.props[key] = normalizeStyleClassProps(key, value); + return; + } + if (TagConfigKeys.has(key)) { + if (["textContent", "innerHTML"].includes(key) && typeof value === "object") { + let type = input.type; + if (!input.type) { + type = "application/json"; + } + if (!type?.endsWith("json") && type !== "speculationrules") { + return; + } + input.type = type; + tag.props.type = type; + tag[key] = JSON.stringify(value); + } else { + tag[key] = value; + } + return; + } + const strValue = String(value); + const isDataKey = key.startsWith("data-"); + if (strValue === "true" || strValue === "") { + tag.props[key] = isDataKey ? "true" : true; + } else if (!value && isDataKey && strValue === "false") { + tag.props[key] = "false"; + } else if (value !== void 0) { + tag.props[key] = value; + } + }); + return tag; +} +function normalizeTag(tagName, _input) { + const input = typeof _input === "object" && typeof _input !== "function" ? _input : { [tagName === "script" || tagName === "noscript" || tagName === "style" ? "innerHTML" : "textContent"]: _input }; + const tag = normalizeProps({ tag: tagName, props: {} }, input); + if (tag.key && DupeableTags.has(tag.tag)) { + tag.props["data-hid"] = tag._h = tag.key; + } + if (tag.tag === "script" && typeof tag.innerHTML === "object") { + tag.innerHTML = JSON.stringify(tag.innerHTML); + tag.props.type = tag.props.type || "application/json"; + } + return Array.isArray(tag.props.content) ? tag.props.content.map((v) => ({ ...tag, props: { ...tag.props, content: v } })) : tag; +} +function normalizeEntryToTags(input, propResolvers) { + if (!input) { + return []; + } + if (typeof input === "function") { + input = input(); + } + const resolvers = (key, val) => { + for (let i = 0; i < propResolvers.length; i++) { + val = propResolvers[i](key, val); + } + return val; + }; + input = resolvers(void 0, input); + const tags = []; + input = walkResolver(input, resolvers); + Object.entries(input || {}).forEach(([key, value]) => { + if (value === void 0) + return; + for (const v of Array.isArray(value) ? value : [value]) + tags.push(normalizeTag(key, v)); + }); + return tags.flat(); +} + +export { normalizeProps as a, dedupeKey as d, hashTag as h, isMetaArrayDupeKey as i, normalizeEntryToTags as n, walkResolver as w }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs new file mode 100644 index 0000000..aef0b62 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs @@ -0,0 +1,148 @@ +import { u as unpackMeta } from './unhead.DQc16pHI.mjs'; + +function defineHeadPlugin(plugin) { + return plugin; +} + +const FlatMetaPlugin = /* @__PURE__ */ defineHeadPlugin({ + key: "flatMeta", + hooks: { + "entries:normalize": (ctx) => { + const tagsToAdd = []; + ctx.tags = ctx.tags.map((t) => { + if (t.tag !== "_flatMeta") { + return t; + } + tagsToAdd.push(unpackMeta(t.props).map((p) => ({ + ...t, + tag: "meta", + props: p + }))); + return false; + }).filter(Boolean).concat(...tagsToAdd); + } + } +}); + +const WhitelistAttributes = { + htmlAttrs: /* @__PURE__ */ new Set(["class", "style", "lang", "dir"]), + bodyAttrs: /* @__PURE__ */ new Set(["class", "style"]), + meta: /* @__PURE__ */ new Set(["name", "property", "charset", "content", "media"]), + noscript: /* @__PURE__ */ new Set(["textContent"]), + style: /* @__PURE__ */ new Set(["media", "textContent", "nonce", "title", "blocking"]), + script: /* @__PURE__ */ new Set(["type", "textContent", "nonce", "blocking"]), + link: /* @__PURE__ */ new Set(["color", "crossorigin", "fetchpriority", "href", "hreflang", "imagesrcset", "imagesizes", "integrity", "media", "referrerpolicy", "rel", "sizes", "type"]) +}; +function acceptDataAttrs(value) { + return Object.fromEntries( + Object.entries(value || {}).filter(([key]) => key === "id" || key.startsWith("data-")) + ); +} +function makeTagSafe(tag) { + let next = {}; + const { tag: type, props: prev } = tag; + switch (type) { + // always safe + case "title": + case "titleTemplate": + case "templateParams": + next = prev; + break; + case "htmlAttrs": + case "bodyAttrs": + WhitelistAttributes[type].forEach((attr) => { + if (prev[attr]) { + next[attr] = prev[attr]; + } + }); + break; + case "style": + next = acceptDataAttrs(prev); + WhitelistAttributes.style.forEach((key) => { + if (prev[key]) { + next[key] = prev[key]; + } + }); + break; + // meta is safe, except for http-equiv + case "meta": + WhitelistAttributes.meta.forEach((key) => { + if (prev[key]) { + next[key] = prev[key]; + } + }); + break; + // link tags we don't allow stylesheets, scripts, preloading, prerendering, prefetching, etc + case "link": + WhitelistAttributes.link.forEach((key) => { + const val = prev[key]; + if (!val) { + return; + } + if (key === "rel" && (val === "canonical" || val === "modulepreload" || val === "prerender" || val === "preload" || val === "prefetch")) { + return; + } + if (key === "href") { + if (val.includes("javascript:") || val.includes("data:")) { + return; + } + next[key] = val; + } else if (val) { + next[key] = val; + } + }); + if (!next.href && !next.imagesrcset || !next.rel) { + return false; + } + break; + case "noscript": + WhitelistAttributes.noscript.forEach((key) => { + if (prev[key]) { + next[key] = prev[key]; + } + }); + break; + // we only allow JSON in scripts + case "script": + if (!tag.textContent || !prev.type?.endsWith("json")) { + return false; + } + WhitelistAttributes.script.forEach((s) => { + if (prev[s] === "textContent") { + try { + const jsonVal = typeof prev[s] === "string" ? JSON.parse(prev[s]) : prev[s]; + next[s] = JSON.stringify(jsonVal, null, 0); + } catch { + } + } else if (prev[s]) { + next[s] = prev[s]; + } + }); + break; + } + if (!Object.keys(next).length && !tag.tag.endsWith("Attrs")) { + return false; + } + tag.props = { ...acceptDataAttrs(prev), ...next }; + return tag; +} +const SafeInputPlugin = ( + /* @PURE */ + defineHeadPlugin({ + key: "safe", + hooks: { + "entries:normalize": (ctx) => { + if (ctx.entry.options?._safe) { + ctx.tags = ctx.tags.reduce((acc, tag) => { + const safeTag = makeTagSafe(tag); + if (safeTag) + acc.push(safeTag); + return acc; + }, []); + } + } + } + }) +); + +export { FlatMetaPlugin as F, SafeInputPlugin as S, defineHeadPlugin as d }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs new file mode 100644 index 0000000..ab33b82 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs @@ -0,0 +1,196 @@ +import { M as MetaTagsArrayable } from './unhead.yem5I2v_.mjs'; + +const NAMESPACES = { + META: /* @__PURE__ */ new Set(["twitter"]), + OG: /* @__PURE__ */ new Set(["og", "book", "article", "profile", "fb"]), + MEDIA: /* @__PURE__ */ new Set(["ogImage", "ogVideo", "ogAudio", "twitterImage"]), + HTTP_EQUIV: /* @__PURE__ */ new Set(["contentType", "defaultStyle", "xUaCompatible"]) +}; +const META_ALIASES = { + articleExpirationTime: "article:expiration_time", + articleModifiedTime: "article:modified_time", + articlePublishedTime: "article:published_time", + bookReleaseDate: "book:release_date", + fbAppId: "fb:app_id", + ogAudioSecureUrl: "og:audio:secure_url", + ogAudioUrl: "og:audio", + ogImageSecureUrl: "og:image:secure_url", + ogImageUrl: "og:image", + ogSiteName: "og:site_name", + ogVideoSecureUrl: "og:video:secure_url", + ogVideoUrl: "og:video", + profileFirstName: "profile:first_name", + profileLastName: "profile:last_name", + profileUsername: "profile:username", + msapplicationConfig: "msapplication-Config", + msapplicationTileColor: "msapplication-TileColor", + msapplicationTileImage: "msapplication-TileImage" +}; +const MetaPackingSchema = { + appleItunesApp: { + unpack: { + entrySeparator: ", ", + // @ts-expect-error untyped + resolve: ({ key, value }) => `${fixKeyCase(key)}=${value}` + } + }, + refresh: { + metaKey: "http-equiv", + unpack: { + entrySeparator: ";", + // @ts-expect-error untyped + resolve: ({ key, value }) => key === "seconds" ? `${value}` : void 0 + } + }, + robots: { + unpack: { + entrySeparator: ", ", + // @ts-expect-error untyped + resolve: ({ key, value }) => typeof value === "boolean" ? fixKeyCase(key) : `${fixKeyCase(key)}:${value}` + } + }, + contentSecurityPolicy: { + metaKey: "http-equiv", + unpack: { + entrySeparator: "; ", + // @ts-expect-error untyped + resolve: ({ key, value }) => `${fixKeyCase(key)} ${value}` + } + }, + charset: {} +}; +function fixKeyCase(key) { + const updated = key.replace(/([A-Z])/g, "-$1").toLowerCase(); + const prefixIndex = updated.indexOf("-"); + return prefixIndex === -1 ? updated : NAMESPACES.META.has(updated.slice(0, prefixIndex)) || NAMESPACES.OG.has(updated.slice(0, prefixIndex)) ? key.replace(/([A-Z])/g, ":$1").toLowerCase() : updated; +} +function sanitizeObject(input) { + return Object.fromEntries(Object.entries(input).filter(([k, v]) => String(v) !== "false" && k)); +} +function transformObject(obj) { + return Array.isArray(obj) ? obj.map(transformObject) : !obj || typeof obj !== "object" ? obj : Object.fromEntries(Object.entries(obj).map(([k, v]) => [fixKeyCase(k), transformObject(v)])); +} +function unpackToString(value, options = {}) { + const { entrySeparator = "", keyValueSeparator = "", wrapValue, resolve } = options; + return Object.entries(value).map(([key, val]) => { + if (resolve) { + const resolved = resolve({ key, value: val }); + if (resolved !== void 0) + return resolved; + } + const processedVal = typeof val === "object" ? unpackToString(val, options) : typeof val === "number" ? val.toString() : typeof val === "string" && wrapValue ? `${wrapValue}${val.replace(new RegExp(wrapValue, "g"), `\\${wrapValue}`)}${wrapValue}` : val; + return `${key}${keyValueSeparator}${processedVal}`; + }).join(entrySeparator); +} +function handleObjectEntry(key, value) { + const sanitizedValue = sanitizeObject(value); + const fixedKey = fixKeyCase(key); + const attr = resolveMetaKeyType(fixedKey); + if (!MetaTagsArrayable.has(fixedKey)) { + return [{ [attr]: fixedKey, ...sanitizedValue }]; + } + const input = Object.fromEntries( + Object.entries(sanitizedValue).map(([k, v]) => [`${key}${k === "url" ? "" : `${k[0].toUpperCase()}${k.slice(1)}`}`, v]) + ); + return unpackMeta(input || {}).sort((a, b) => (a[attr]?.length || 0) - (b[attr]?.length || 0)); +} +function resolveMetaKeyType(key) { + if (MetaPackingSchema[key]?.metaKey === "http-equiv" || NAMESPACES.HTTP_EQUIV.has(key)) { + return "http-equiv"; + } + const fixed = fixKeyCase(key); + const colonIndex = fixed.indexOf(":"); + return colonIndex === -1 ? "name" : NAMESPACES.OG.has(fixed.slice(0, colonIndex)) ? "property" : "name"; +} +function resolveMetaKeyValue(key) { + return META_ALIASES[key] || fixKeyCase(key); +} +function resolvePackedMetaObjectValue(value, key) { + if (key === "refresh") + return `${value.seconds};url=${value.url}`; + return unpackToString(transformObject(value), { + keyValueSeparator: "=", + entrySeparator: ", ", + resolve: ({ value: value2, key: key2 }) => value2 === null ? "" : typeof value2 === "boolean" ? key2 : void 0, + // @ts-expect-error untyped + ...MetaPackingSchema[key]?.unpack + }); +} +function unpackMeta(input) { + const extras = []; + const primitives = {}; + for (const [key, value] of Object.entries(input)) { + if (Array.isArray(value)) { + if (key === "themeColor") { + value.forEach((v) => { + if (typeof v === "object" && v !== null) { + extras.push({ name: "theme-color", ...v }); + } + }); + continue; + } + for (const v of value) { + if (typeof v === "object" && v !== null) { + const urlProps = []; + const otherProps = []; + for (const [propKey, propValue] of Object.entries(v)) { + const metaKey = `${key}${propKey === "url" ? "" : `:${propKey}`}`; + const meta2 = unpackMeta({ [metaKey]: propValue }); + (propKey === "url" ? urlProps : otherProps).push(...meta2); + } + extras.push(...urlProps, ...otherProps); + } else { + extras.push(...typeof v === "string" ? unpackMeta({ [key]: v }) : handleObjectEntry(key, v)); + } + } + continue; + } + if (typeof value === "object" && value) { + if (NAMESPACES.MEDIA.has(key)) { + const prefix = key.startsWith("twitter") ? "twitter" : "og"; + const type = key.replace(/^(og|twitter)/, "").toLowerCase(); + const metaKey = prefix === "twitter" ? "name" : "property"; + if (value.url) { + extras.push({ + [metaKey]: `${prefix}:${type}`, + content: value.url + }); + } + if (value.secureUrl) { + extras.push({ + [metaKey]: `${prefix}:${type}:secure_url`, + content: value.secureUrl + }); + } + for (const [propKey, propValue] of Object.entries(value)) { + if (propKey !== "url" && propKey !== "secureUrl") { + extras.push({ + [metaKey]: `${prefix}:${type}:${propKey}`, + // @ts-expect-error untyped + content: propValue + }); + } + } + } else if (MetaTagsArrayable.has(fixKeyCase(key))) { + extras.push(...handleObjectEntry(key, value)); + } else { + primitives[key] = sanitizeObject(value); + } + } else { + primitives[key] = value; + } + } + const meta = Object.entries(primitives).map(([key, value]) => { + if (key === "charset") + return { charset: value === null ? "_null" : value }; + const metaKey = resolveMetaKeyType(key); + const keyValue = resolveMetaKeyValue(key); + const processedValue = value === null ? "_null" : typeof value === "object" ? resolvePackedMetaObjectValue(value, key) : typeof value === "number" ? value.toString() : value; + return metaKey === "http-equiv" ? { "http-equiv": keyValue, "content": processedValue } : { [metaKey]: keyValue, content: processedValue }; + }); + return [...extras, ...meta].map( + (m) => !("content" in m) ? m : m.content === "_null" ? { ...m, content: null } : m + ); +} + +export { resolveMetaKeyValue as a, resolvePackedMetaObjectValue as b, resolveMetaKeyType as r, unpackMeta as u }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs new file mode 100644 index 0000000..396b90f --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs @@ -0,0 +1,70 @@ +const sortTags = (a, b) => a._w === b._w ? a._p - b._p : a._w - b._w; +const TAG_WEIGHTS = { + base: -10, + title: 10 +}; +const TAG_ALIASES = { + critical: -8, + high: -1, + low: 2 +}; +const WEIGHT_MAP = { + meta: { + "content-security-policy": -30, + "charset": -20, + "viewport": -15 + }, + link: { + "preconnect": 20, + "stylesheet": 60, + "preload": 70, + "modulepreload": 70, + "prefetch": 90, + "dns-prefetch": 90, + "prerender": 90 + }, + script: { + async: 30, + defer: 80, + sync: 50 + }, + style: { + imported: 40, + sync: 60 + } +}; +const ImportStyleRe = /@import/; +const isTruthy = (val) => val === "" || val === true; +function tagWeight(head, tag) { + if (typeof tag.tagPriority === "number") + return tag.tagPriority; + let weight = 100; + const offset = TAG_ALIASES[tag.tagPriority] || 0; + const weightMap = head.resolvedOptions.disableCapoSorting ? { + link: {}, + script: {}, + style: {} + } : WEIGHT_MAP; + if (tag.tag in TAG_WEIGHTS) { + weight = TAG_WEIGHTS[tag.tag]; + } else if (tag.tag === "meta") { + const metaType = tag.props["http-equiv"] === "content-security-policy" ? "content-security-policy" : tag.props.charset ? "charset" : tag.props.name === "viewport" ? "viewport" : null; + if (metaType) + weight = WEIGHT_MAP.meta[metaType]; + } else if (tag.tag === "link" && tag.props.rel) { + weight = weightMap.link[tag.props.rel]; + } else if (tag.tag === "script") { + if (isTruthy(tag.props.async)) { + weight = weightMap.script.async; + } else if (tag.props.src && !isTruthy(tag.props.defer) && !isTruthy(tag.props.async) && tag.props.type !== "module" && !tag.props.type?.endsWith("json")) { + weight = weightMap.script.sync; + } else if (isTruthy(tag.props.defer) && tag.props.src && !isTruthy(tag.props.async)) { + weight = weightMap.script.defer; + } + } else if (tag.tag === "style") { + weight = tag.innerHTML && ImportStyleRe.test(tag.innerHTML) ? weightMap.style.imported : weightMap.style.sync; + } + return (weight || 100) + offset; +} + +export { sortTags as s, tagWeight as t }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.DnNYlT4k.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.DnNYlT4k.mjs new file mode 100644 index 0000000..547bf03 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.DnNYlT4k.mjs @@ -0,0 +1,155 @@ +import { d as defineHeadPlugin } from './unhead.CApf5sj3.mjs'; +import { s as sortTags } from './unhead.DZbvapt-.mjs'; +import { p as processTemplateParams } from './unhead.kVuXtrDW.mjs'; + +const formatKey = (k) => !k.includes(":key") ? k.split(":").join(":key:") : k; +const AliasSortingPlugin = defineHeadPlugin({ + key: "aliasSorting", + hooks: { + "tags:resolve": (ctx) => { + let m = false; + for (const t of ctx.tags) { + const p = t.tagPriority; + if (!p) + continue; + const s = String(p); + if (s.startsWith("before:")) { + const k = formatKey(s.slice(7)); + const l = ctx.tagMap.get(k); + if (l) { + if (typeof l.tagPriority === "number") + t.tagPriority = l.tagPriority; + t._p = l._p - 1; + m = true; + } + } else if (s.startsWith("after:")) { + const k = formatKey(s.slice(6)); + const l = ctx.tagMap.get(k); + if (l) { + if (typeof l.tagPriority === "number") + t.tagPriority = l.tagPriority; + t._p = l._p + 1; + m = true; + } + } + } + if (m) + ctx.tags = ctx.tags.sort(sortTags); + } + } +}); + +const DeprecationsPlugin = /* @__PURE__ */ defineHeadPlugin({ + key: "deprecations", + hooks: { + "entries:normalize": ({ tags }) => { + for (const tag of tags) { + if (tag.props.children) { + tag.innerHTML = tag.props.children; + delete tag.props.children; + } + if (tag.props.hid) { + tag.key = tag.props.hid; + delete tag.props.hid; + } + if (tag.props.vmid) { + tag.key = tag.props.vmid; + delete tag.props.vmid; + } + if (tag.props.body) { + tag.tagPosition = "bodyClose"; + delete tag.props.body; + } + } + } + } +}); + +async function walkPromises(v) { + const type = typeof v; + if (type === "function") { + return v; + } + if (v instanceof Promise) { + return await v; + } + if (Array.isArray(v)) { + return await Promise.all(v.map((r) => walkPromises(r))); + } + if (v?.constructor === Object) { + const next = {}; + for (const key of Object.keys(v)) { + next[key] = await walkPromises(v[key]); + } + return next; + } + return v; +} +const PromisesPlugin = /* @__PURE__ */ defineHeadPlugin({ + key: "promises", + hooks: { + "entries:resolve": async (ctx) => { + const promises = []; + for (const k in ctx.entries) { + if (!ctx.entries[k]._promisesProcessed) { + promises.push( + walkPromises(ctx.entries[k].input).then((val) => { + ctx.entries[k].input = val; + ctx.entries[k]._promisesProcessed = true; + }) + ); + } + } + await Promise.all(promises); + } + } +}); + +const SupportedAttrs = { + meta: "content", + link: "href", + htmlAttrs: "lang" +}; +const contentAttrs = ["innerHTML", "textContent"]; +const TemplateParamsPlugin = /* @__PURE__ */ defineHeadPlugin((head) => { + return { + key: "template-params", + hooks: { + "tags:resolve": ({ tagMap, tags }) => { + const params = tagMap.get("templateParams")?.props || {}; + const sep = params.separator || "|"; + delete params.separator; + params.pageTitle = processTemplateParams( + // find templateParams + params.pageTitle || head._title || "", + params, + sep + ); + for (const tag of tags) { + if (tag.processTemplateParams === false) { + continue; + } + const v = SupportedAttrs[tag.tag]; + if (v && typeof tag.props[v] === "string") { + tag.props[v] = processTemplateParams(tag.props[v], params, sep); + } else if (tag.processTemplateParams || tag.tag === "titleTemplate" || tag.tag === "title") { + for (const p of contentAttrs) { + if (typeof tag[p] === "string") + tag[p] = processTemplateParams(tag[p], params, sep, tag.tag === "script" && tag.props.type.endsWith("json")); + } + } + } + head._templateParams = params; + head._separator = sep; + }, + "tags:afterResolve": ({ tagMap }) => { + const title = tagMap.get("title"); + if (title?.textContent && title.processTemplateParams !== false) { + title.textContent = processTemplateParams(title.textContent, head._templateParams, head._separator); + } + } + } + }; +}); + +export { AliasSortingPlugin as A, DeprecationsPlugin as D, PromisesPlugin as P, TemplateParamsPlugin as T }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.kVuXtrDW.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.kVuXtrDW.mjs new file mode 100644 index 0000000..02a439c --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.kVuXtrDW.mjs @@ -0,0 +1,48 @@ +const SepSub = "%separator"; +const SepSubRE = new RegExp(`${SepSub}(?:\\s*${SepSub})*`, "g"); +function sub(p, token, isJson = false) { + let val; + if (token === "s" || token === "pageTitle") { + val = p.pageTitle; + } else if (token.includes(".")) { + const dotIndex = token.indexOf("."); + val = p[token.substring(0, dotIndex)]?.[token.substring(dotIndex + 1)]; + } else { + val = p[token]; + } + if (val !== void 0) { + return isJson ? (val || "").replace(/</g, "\\u003C").replace(/"/g, '\\"') : val || ""; + } + return void 0; +} +function processTemplateParams(s, p, sep, isJson = false) { + if (typeof s !== "string" || !s.includes("%")) + return s; + let decoded = s; + try { + decoded = decodeURI(s); + } catch { + } + const tokens = decoded.match(/%\w+(?:\.\w+)?/g); + if (!tokens) { + return s; + } + const hasSepSub = s.includes(SepSub); + s = s.replace(/%\w+(?:\.\w+)?/g, (token) => { + if (token === SepSub || !tokens.includes(token)) { + return token; + } + const re = sub(p, token.slice(1), isJson); + return re !== void 0 ? re : token; + }).trim(); + if (hasSepSub) { + if (s.endsWith(SepSub)) + s = s.slice(0, -SepSub.length); + if (s.startsWith(SepSub)) + s = s.slice(SepSub.length); + s = s.replace(SepSubRE, sep || "").trim(); + } + return s; +} + +export { processTemplateParams as p }; diff --git a/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs b/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs new file mode 100644 index 0000000..19e6f2b --- /dev/null +++ b/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs @@ -0,0 +1,38 @@ +const SelfClosingTags = /* @__PURE__ */ new Set(["meta", "link", "base"]); +const DupeableTags = /* @__PURE__ */ new Set(["link", "style", "script", "noscript"]); +const TagsWithInnerContent = /* @__PURE__ */ new Set(["title", "titleTemplate", "script", "style", "noscript"]); +const HasElementTags = /* @__PURE__ */ new Set([ + "base", + "meta", + "link", + "style", + "script", + "noscript" +]); +const ValidHeadTags = /* @__PURE__ */ new Set([ + "title", + "base", + "htmlAttrs", + "bodyAttrs", + "meta", + "link", + "style", + "script", + "noscript" +]); +const UniqueTags = /* @__PURE__ */ new Set(["base", "title", "titleTemplate", "bodyAttrs", "htmlAttrs", "templateParams"]); +const TagConfigKeys = /* @__PURE__ */ new Set(["key", "tagPosition", "tagPriority", "tagDuplicateStrategy", "innerHTML", "textContent", "processTemplateParams"]); +const ScriptNetworkEvents = /* @__PURE__ */ new Set(["onload", "onerror"]); +const UsesMergeStrategy = /* @__PURE__ */ new Set(["templateParams", "htmlAttrs", "bodyAttrs"]); +const MetaTagsArrayable = /* @__PURE__ */ new Set([ + "theme-color", + "google-site-verification", + "og", + "article", + "book", + "profile", + "twitter", + "author" +]); + +export { DupeableTags as D, HasElementTags as H, MetaTagsArrayable as M, SelfClosingTags as S, TagsWithInnerContent as T, UniqueTags as U, ValidHeadTags as V, TagConfigKeys as a, ScriptNetworkEvents as b, UsesMergeStrategy as c }; diff --git a/.output/server/node_modules/unhead/dist/utils.mjs b/.output/server/node_modules/unhead/dist/utils.mjs new file mode 100644 index 0000000..8a017d5 --- /dev/null +++ b/.output/server/node_modules/unhead/dist/utils.mjs @@ -0,0 +1,5 @@ +export { D as DupeableTags, H as HasElementTags, M as MetaTagsArrayable, b as ScriptNetworkEvents, S as SelfClosingTags, a as TagConfigKeys, T as TagsWithInnerContent, U as UniqueTags, c as UsesMergeStrategy, V as ValidHeadTags } from './shared/unhead.yem5I2v_.mjs'; +export { d as dedupeKey, h as hashTag, i as isMetaArrayDupeKey, n as normalizeEntryToTags, a as normalizeProps, w as walkResolver } from './shared/unhead.BaPU1zLf.mjs'; +export { r as resolveMetaKeyType, a as resolveMetaKeyValue, b as resolvePackedMetaObjectValue, u as unpackMeta } from './shared/unhead.DQc16pHI.mjs'; +export { s as sortTags, t as tagWeight } from './shared/unhead.DZbvapt-.mjs'; +export { p as processTemplateParams } from './shared/unhead.kVuXtrDW.mjs'; diff --git a/.output/server/node_modules/unhead/package.json b/.output/server/node_modules/unhead/package.json index 0244b5f..2629661 100644 --- a/.output/server/node_modules/unhead/package.json +++ b/.output/server/node_modules/unhead/package.json @@ -1,8 +1,17 @@ { "name": "unhead", "type": "module", - "version": "1.8.8", - "author": "Harlan Wilton <harlan@harlanzw.com>", + "version": "2.0.0-rc.10", + "description": "Full-stack <head> manager built for any framework.", + "author": { + "name": "Harlan Wilton", + "email": "harlan@harlanzw.com", + "url": "https://harlanzw.com/" + }, + "publishConfig": { + "access": "public", + "tag": "next" + }, "license": "MIT", "funding": "https://github.com/sponsors/harlan-zw", "homepage": "https://unhead.unjs.io", @@ -18,25 +27,78 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "default": "./dist/index.mjs" + }, + "./plugins": { + "types": "./dist/plugins.d.ts", + "default": "./dist/plugins.mjs" + }, + "./server": { + "types": "./dist/server.d.ts", + "default": "./dist/server.mjs" + }, + "./client": { + "types": "./dist/client.d.ts", + "default": "./dist/client.mjs" + }, + "./legacy": { + "types": "./dist/legacy.d.ts", + "default": "./dist/legacy.mjs" + }, + "./utils": { + "types": "./dist/utils.d.ts", + "default": "./dist/utils.mjs" + }, + "./types": { + "types": "./dist/types.d.ts", + "default": "./dist/types.mjs" + }, + "./scripts": { + "types": "./dist/scripts.d.ts", + "default": "./dist/scripts.mjs" } }, - "main": "dist/index.cjs", + "main": "dist/index.mjs", "module": "dist/index.mjs", "types": "dist/index.d.ts", + "optionalPlugins": { + "*": { + "plugins": [ + "dist/plugins" + ], + "server": [ + "dist/server" + ], + "client": [ + "dist/client" + ], + "legacy": [ + "dist/legacy" + ], + "types": [ + "dist/types" + ], + "utils": [ + "dist/utils" + ], + "scripts": [ + "dist/scripts" + ] + } + }, "files": [ + "*.d.ts", "dist" ], "dependencies": { - "hookable": "^5.5.3", - "@unhead/shared": "1.8.8", - "@unhead/schema": "1.8.8", - "@unhead/dom": "1.8.8" + "hookable": "^5.5.3" }, "scripts": { - "build": "unbuild .", - "stub": "unbuild . --stub", - "export:sizes": "npx export-size . -r" - } + "build": "unbuild", + "stub": "unbuild --stub", + "test:attw": "attw --pack" + }, + "__npminstall_done": true, + "_from": "unhead@2.0.0-rc.10", + "_resolved": "https://registry.npmmirror.com/unhead/-/unhead-2.0.0-rc.10.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs b/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs index 7a59541..c172e82 100644 --- a/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +++ b/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs @@ -120,7 +120,7 @@ function getRequestDependencies(ssrContext, rendererContext) { function renderStyles(ssrContext, rendererContext) { const { styles } = getRequestDependencies(ssrContext, rendererContext); return Object.values(styles).map( - (resource) => renderLinkToString({ rel: "stylesheet", href: rendererContext.buildAssetsURL(resource.file) }) + (resource) => renderLinkToString({ rel: "stylesheet", href: rendererContext.buildAssetsURL(resource.file), crossorigin: "" }) ).join(""); } function getResources(ssrContext, rendererContext) { @@ -140,7 +140,7 @@ function getPreloadLinks(ssrContext, rendererContext) { rel: resource.module ? "modulepreload" : "preload", as: resource.resourceType, type: resource.mimeType ?? null, - crossorigin: resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, + crossorigin: resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, href: rendererContext.buildAssetsURL(resource.file) })); } @@ -150,7 +150,7 @@ function getPrefetchLinks(ssrContext, rendererContext) { rel: "prefetch", as: resource.resourceType, type: resource.mimeType ?? null, - crossorigin: resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, + crossorigin: resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, href: rendererContext.buildAssetsURL(resource.file) })); } @@ -169,7 +169,7 @@ function createRenderer(createApp, renderOptions) { rendererContext, async renderToString(ssrContext) { ssrContext._registeredComponents = ssrContext._registeredComponents || /* @__PURE__ */ new Set(); - const _createApp = await Promise.resolve(createApp).then((r) => r.default || r); + const _createApp = await Promise.resolve(createApp).then((r) => "default" in r ? r.default : r); const app = await _createApp(ssrContext); const html = await renderOptions.renderToString(app, ssrContext); const wrap = (fn) => () => fn(ssrContext, rendererContext); diff --git a/.output/server/node_modules/vue-bundle-renderer/package.json b/.output/server/node_modules/vue-bundle-renderer/package.json index b326df1..37ca726 100644 --- a/.output/server/node_modules/vue-bundle-renderer/package.json +++ b/.output/server/node_modules/vue-bundle-renderer/package.json @@ -1,6 +1,6 @@ { "name": "vue-bundle-renderer", - "version": "2.0.0", + "version": "2.1.1", "description": "Bundle Renderer for Vue 3.0", "repository": "nuxt-contrib/vue-bundle-renderer", "license": "MIT", @@ -23,28 +23,31 @@ "dist", "runtime.d.ts" ], - "dependencies": { - "ufo": "^1.2.0" - }, - "devDependencies": { - "@nuxtjs/eslint-config-typescript": "^12.0.0", - "@types/node": "^18.17.1", - "@vitest/coverage-v8": "^0.33.0", - "changelogen": "^0.5.4", - "eslint": "^8.46.0", - "expect-type": "^0.16.0", - "typescript": "^5.1.6", - "unbuild": "^1.2.1", - "vite": "^4.4.7", - "vitest": "0.33.0", - "vue": "3.3.4" - }, - "packageManager": "pnpm@8.6.11", "scripts": { "build": "unbuild", "dev": "vitest", - "lint": "eslint --ext .ts src", - "release": "pnpm test && pnpm build && changelogen --release --push && pnpm publish", + "lint": "eslint src", + "prepack": "unbuild", + "release": "pnpm test && pnpm build && changelogen --release --push && npm publish", "test": "pnpm lint && pnpm vitest run --coverage && tsc --noEmit" - } + }, + "dependencies": { + "ufo": "^1.5.4" + }, + "devDependencies": { + "@types/node": "^20.16.6", + "@vitest/coverage-v8": "^2.1.1", + "changelogen": "^0.5.7", + "eslint": "^9.11.1", + "typescript": "^5.6.2", + "unbuild": "^2.0.0", + "vite": "^5.4.7", + "vitest": "2.1.1", + "vue": "3.5.8", + "@nuxt/eslint-config": "^0.5.7" + }, + "packageManager": "pnpm@9.11.0", + "__npminstall_done": true, + "_from": "vue-bundle-renderer@2.1.1", + "_resolved": "https://registry.npmmirror.com/vue-bundle-renderer/-/vue-bundle-renderer-2.1.1.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/vue/dist/vue.cjs.js b/.output/server/node_modules/vue/dist/vue.cjs.js index 7d00eb5..ef543fa 100644 --- a/.output/server/node_modules/vue/dist/vue.cjs.js +++ b/.output/server/node_modules/vue/dist/vue.cjs.js @@ -1,3 +1,8 @@ +/** +* vue v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -29,7 +34,7 @@ function compileToFunction(template, options) { return shared.NOOP; } } - const key = template; + const key = shared.genCacheKey(template, options); const cached = compileCache[key]; if (cached) { return cached; diff --git a/.output/server/node_modules/vue/dist/vue.cjs.prod.js b/.output/server/node_modules/vue/dist/vue.cjs.prod.js index a23c7fc..82c078c 100644 --- a/.output/server/node_modules/vue/dist/vue.cjs.prod.js +++ b/.output/server/node_modules/vue/dist/vue.cjs.prod.js @@ -1,3 +1,8 @@ +/** +* vue v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); @@ -28,7 +33,7 @@ function compileToFunction(template, options) { return shared.NOOP; } } - const key = template; + const key = shared.genCacheKey(template, options); const cached = compileCache[key]; if (cached) { return cached; diff --git a/.output/server/node_modules/vue/index.mjs b/.output/server/node_modules/vue/index.mjs index 8b43612..fcb9204 100644 --- a/.output/server/node_modules/vue/index.mjs +++ b/.output/server/node_modules/vue/index.mjs @@ -1 +1 @@ -export * from './index.js' \ No newline at end of file +export * from './index.js' diff --git a/.output/server/node_modules/vue/package.json b/.output/server/node_modules/vue/package.json index 96a91dc..cae9aaa 100644 --- a/.output/server/node_modules/vue/package.json +++ b/.output/server/node_modules/vue/package.json @@ -1,6 +1,6 @@ { "name": "vue", - "version": "3.3.9", + "version": "3.5.13", "description": "The progressive JavaScript framework for building modern web UI.", "main": "index.js", "module": "dist/vue.runtime.esm-bundler.js", @@ -14,10 +14,7 @@ "compiler-sfc", "server-renderer", "jsx-runtime", - "jsx.d.ts", - "macros.d.ts", - "macros-global.d.ts", - "ref-macros.d.ts" + "jsx.d.ts" ], "exports": { ".": { @@ -28,6 +25,11 @@ }, "require": { "types": "./dist/vue.d.ts", + "node": { + "production": "./dist/vue.cjs.prod.js", + "development": "./dist/vue.cjs.js", + "default": "./dist/vue.cjs.prod.js" + }, "default": "./index.js" } }, @@ -65,10 +67,7 @@ }, "./jsx": "./jsx.d.ts", "./dist/*": "./dist/*", - "./package.json": "./package.json", - "./macros": "./macros.d.ts", - "./macros-global": "./macros-global.d.ts", - "./ref-macros": "./ref-macros.d.ts" + "./package.json": "./package.json" }, "buildOptions": { "name": "Vue", @@ -96,11 +95,11 @@ }, "homepage": "https://github.com/vuejs/core/tree/main/packages/vue#readme", "dependencies": { - "@vue/shared": "3.3.9", - "@vue/runtime-dom": "3.3.9", - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-sfc": "3.3.9", - "@vue/server-renderer": "3.3.9" + "@vue/shared": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/compiler-sfc": "3.5.13" }, "peerDependencies": { "typescript": "*" @@ -109,5 +108,8 @@ "typescript": { "optional": true } - } + }, + "__npminstall_done": true, + "_from": "vue@3.5.13", + "_resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz" } \ No newline at end of file diff --git a/.output/server/node_modules/vue/server-renderer/index.mjs b/.output/server/node_modules/vue/server-renderer/index.mjs index 3e081c1..ac61472 100644 --- a/.output/server/node_modules/vue/server-renderer/index.mjs +++ b/.output/server/node_modules/vue/server-renderer/index.mjs @@ -1 +1 @@ -export * from '@vue/server-renderer' \ No newline at end of file +export * from '@vue/server-renderer' diff --git a/.output/server/package.json b/.output/server/package.json index 6b9e74d..4cadd1f 100644 --- a/.output/server/package.json +++ b/.output/server/package.json @@ -1 +1 @@ -{"name":"nuxt-app-prod","version":"0.0.0","type":"module","private":true,"dependencies":{"@babel/parser":"7.25.0","@unhead/dom":"1.8.8","@unhead/shared":"1.8.8","@unhead/ssr":"1.8.8","@vue/compiler-core":"3.3.9","@vue/compiler-dom":"3.3.9","@vue/compiler-ssr":"3.3.9","@vue/reactivity":"3.3.9","@vue/runtime-core":"3.3.9","@vue/runtime-dom":"3.3.9","@vue/server-renderer":"3.3.9","@vue/shared":"3.3.9","asynckit":"0.4.0","axios":"1.6.2","combined-stream":"1.0.8","debug":"4.3.4","delayed-stream":"1.0.0","devalue":"4.3.2","estree-walker":"2.0.2","follow-redirects":"1.15.3","form-data":"4.0.0","hookable":"5.5.3","mime-db":"1.52.0","mime-types":"2.1.35","ms":"2.1.2","proxy-from-env":"1.1.0","source-map-js":"1.2.0","supports-color":"9.4.0","ufo":"1.5.4","unhead":"1.8.8","vue":"3.3.9","vue-bundle-renderer":"2.0.0"}} \ No newline at end of file +{"name":"nuxt-app-prod","version":"0.0.0","type":"module","private":true,"dependencies":{"@babel/parser":"7.26.10","@vue/compiler-core":"3.5.13","@vue/compiler-dom":"3.5.13","@vue/compiler-ssr":"3.5.13","@vue/reactivity":"3.5.13","@vue/runtime-core":"3.5.13","@vue/runtime-dom":"3.5.13","@vue/server-renderer":"3.5.13","@vue/shared":"3.5.13","asynckit":"0.4.0","axios":"1.8.3","call-bind-apply-helpers":"1.0.2","combined-stream":"1.0.8","debug":"4.4.0","delayed-stream":"1.0.0","devalue":"5.1.1","dunder-proto":"1.0.1","entities":"4.5.0","es-define-property":"1.0.1","es-errors":"1.3.0","es-object-atoms":"1.1.1","es-set-tostringtag":"2.1.0","estree-walker":"2.0.2","follow-redirects":"1.15.9","form-data":"4.0.2","function-bind":"1.1.2","get-intrinsic":"1.3.0","get-proto":"1.0.1","gopd":"1.2.0","has-symbols":"1.1.0","has-tostringtag":"1.0.2","hasown":"2.0.2","hookable":"5.5.3","math-intrinsics":"1.1.0","mime-db":"1.52.0","mime-types":"2.1.35","ms":"2.1.3","proxy-from-env":"1.1.0","source-map-js":"1.2.1","supports-color":"10.0.0","ufo":"1.5.4","unhead":"2.0.0-rc.10","vue":"3.5.13","vue-bundle-renderer":"2.1.1"}} \ No newline at end of file diff --git a/components/commentList.vue b/components/commentList.vue index 050c245..bdfe54f 100644 --- a/components/commentList.vue +++ b/components/commentList.vue @@ -17,7 +17,7 @@ <div class="bottom flexacenter"> <div class="operate flexacenter"> - <div class="item" :class="{ 'pitch': editEmojiState }"> + <div class="item" :class="{ pitch: editEmojiState }"> <img class="icon" src="@/img/smiling-face.png" @click="openEditEmoji()" alt="" /> <div class="emoji-box"> <div class="emoji-icon" v-for="item in emojiData" :key="item" @click="selectEditEmoji(item)">{{ item }}</div> @@ -25,7 +25,7 @@ </div> <div class="item flexacenter" @click="judgeLogin()"> <input class="file" type="file" @change="handleFileUpload($event)" accept=".png, .jpg, .jpeg" /> - <img class="icon" style="border-radius: 0;" src="@/img/picture-icon.png" alt="" /> + <img class="icon" style="border-radius: 0" src="@/img/picture-icon.png" alt="" /> <span class="file-hint">最多可上传1张图片,支持在输入框中直接粘贴图片。</span> </div> </div> @@ -55,7 +55,7 @@ <div class="bottom flexacenter"> <div class="operate flexacenter"> - <div class="item" :class="{ 'pitch': emojiState }"> + <div class="item" :class="{ pitch: emojiState }"> <img class="icon" src="/img/smiling-face.png" @click="openEmoji()" alt="" /> <div class="emoji-box"> <div class="emoji-icon" v-for="item in emojiData" :key="item" @click="selectEmoji(item)">{{ item }}</div> @@ -63,7 +63,7 @@ </div> <div class="item flexacenter" @click="judgeLogin()"> <input class="file" type="file" @change="handleFileUpload($event)" accept=".png, .jpg, .jpeg" /> - <img class="icon" style="border-radius: 0;" src="/img/picture-icon.png" alt="" /> + <img class="icon" style="border-radius: 0" src="/img/picture-icon.png" alt="" /> <span class="file-hint">最多可上传1张图片,支持在输入框中直接粘贴图片。</span> </div> </div> @@ -79,6 +79,8 @@ <div class="comments-username" @click="openUserInfo(index)">{{ item["nickname"] || "匿名用户" }}</div> <div class="comments-time">{{ handleDate(item["timestamp"]) }}</div> <div class="comments-identity" v-if="item['isauthor'] == 1">提问者</div> + <img class="comments-title" v-if="item['groupimage']" :src="item.groupimage" :alt="item.grouptitle" style="height: 17px" /> + <div class="avatar-box flexflex" v-if="item['avatarState']"> <a class="avatar-item flexcenter" target="_blank" @click.prevent="sendMessage(item['uin'])"> <img class="avatar-icon" src="@/img/send-messages-icon.png" /> @@ -124,7 +126,7 @@ </div> <div class="bottom flexacenter"> <div class="operate flexacenter"> - <div class="item" :class="{ 'pitch': item.emojiState }"> + <div class="item" :class="{ pitch: item.emojiState }"> <img class="icon" src="/img/smiling-face.png" @click="openEmoji(index)" alt="" /> <div class="emoji-box"> <div class="emoji-icon" v-for="item in emojiData" :key="item" @click="selectEmoji(item, index)">{{ item }}</div> @@ -132,7 +134,7 @@ </div> <div class="item flexacenter" @click="judgeLogin()"> <input class="file" type="file" @change="handleFileUpload($event, index)" accept=".png, .jpg, .jpeg" /> - <img class="icon" style="border-radius: 0;" src="/img/picture-icon.png" alt="" /> + <img class="icon" style="border-radius: 0" src="/img/picture-icon.png" alt="" /> <span class="file-hint">最多可上传1张图片,支持在输入框中直接粘贴图片。</span> </div> </div> @@ -150,6 +152,7 @@ <!-- <div class="comments-identity" v-if="ite['questioner'] == 1">提问者</div> --> <!-- <div class="comments-identity" v-else-if="ite['isauthor'] == 1">回答者</div> --> <div class="comments-identity" v-if="ite['isauthor'] == 1">提问者</div> + <img class="comments-title" v-if="ite['groupimage']" :src="ite.groupimage" :alt="ite.grouptitle" style="height: 17px" /> <div class="avatar-box flexflex" v-if="ite['avatarState']"> <a class="avatar-item flexcenter" target="_blank" @click.prevent="sendMessage(ite['uin'])"> <img class="avatar-icon" src="@/img/send-messages-icon.png" /> @@ -199,7 +202,7 @@ </div> <div class="bottom flexacenter"> <div class="operate flexacenter"> - <div class="item" :class="{ 'pitch': ite.emojiState }"> + <div class="item" :class="{ pitch: ite.emojiState }"> <img class="icon" src="/img/smiling-face.png" @click="openEmoji(index, i)" alt="" /> <div class="emoji-box"> <div class="emoji-icon" v-for="item in emojiData" :key="item" @click="selectEmoji(item, index, i)">{{ item }}</div> @@ -207,7 +210,7 @@ </div> <div class="item flexacenter" @click="judgeLogin()"> <input class="file" type="file" @change="handleFileUpload($event, index, i)" accept=".png, .jpg, .jpeg" /> - <img class="icon" style="border-radius: 0;" src="/img/picture-icon.png" alt="" /> + <img class="icon" style="border-radius: 0" src="/img/picture-icon.png" alt="" /> <span class="file-hint">最多可上传1张图片,支持在输入框中直接粘贴图片。</span> </div> </div> @@ -229,103 +232,103 @@ <script setup> const props = defineProps({ token: String, -}) +}); onMounted(() => { // getComment() -}) -let permissions = ref([]) +}); +let permissions = ref([]); onMounted(() => { // setTimeout(() => { // permissions.value = window["permissions"] || [] // // permissions.value = ["comment.edit", "comment.delete"] // }, 1000) -}) +}); -const emit = defineEmits() +const emit = defineEmits(); -const $ajax = inject("$ajax") -const $ajaxGET = inject("$ajaxGET") -const detailsToken = inject("detailsToken") -const handleDate = inject("handleDate") -const isNeedLogin = inject("isNeedLogin") -const handleMsg = inject("handleMsg") -const uploadImg = inject("uploadImg") -const handleAnswerText = inject("handleAnswerText") -const emojiMaskState = inject("emojiMaskState") -const user = inject("user") -const goLogin = inject("goLogin") +const $ajax = inject("$ajax"); +const $ajaxGET = inject("$ajaxGET"); +const detailsToken = inject("detailsToken"); +const handleDate = inject("handleDate"); +const isNeedLogin = inject("isNeedLogin"); +const handleMsg = inject("handleMsg"); +const uploadImg = inject("uploadImg"); +const handleAnswerText = inject("handleAnswerText"); +const emojiMaskState = inject("emojiMaskState"); +const user = inject("user"); +const goLogin = inject("goLogin"); -const detailLoading = inject("detailLoading") +const detailLoading = inject("detailLoading"); // 点击ta的主页 -const TAHomePage = uin => { - redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&uid=${uin}`) -} +const TAHomePage = (uin) => { + redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&uid=${uin}`); +}; // 点击发送信息 -const sendMessage = uin => { +const sendMessage = (uin) => { if (uin && typeof messagePrivateItem == "function") { - messagePrivateItem({ uin: uin }) - return - } else redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${uin}`) -} + messagePrivateItem({ uin: uin }); + return; + } else redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${uin}`); +}; // 跳转 url -const redirectToExternalWebsite = url => { - const link = document.createElement("a") - link.href = url - link.target = "_blank" - link.click() -} +const redirectToExternalWebsite = (url) => { + const link = document.createElement("a"); + link.href = url; + link.target = "_blank"; + link.click(); +}; -const commentList = ref([]) -let commentCount = ref(0) -let commentTotalCount = ref(0) -let commentPage = ref(1) -let isgetCommentSate = false // 请求评论状态 -let alreadyCommentIdList = [] +const commentList = ref([]); +let commentCount = ref(0); +let commentTotalCount = ref(0); +let commentPage = ref(1); +let isgetCommentSate = false; // 请求评论状态 +let alreadyCommentIdList = []; const getComment = () => { - if (commentPage.value == 0 || isgetCommentSate) return - isgetCommentSate = true + if (commentPage.value == 0 || isgetCommentSate) return; + isgetCommentSate = true; $ajax("/api/comment/lists", { token: detailsToken.value, page: commentPage.value, limit: 1500, }) - .then(res => { - if (res.code != 200) return - let data = res.data + .then((res) => { + if (res.code != 200) return; + let data = res.data; data.data.forEach((element, index) => { - element["isReplyBoxShow"] = 0 + element["isReplyBoxShow"] = 0; // element.timestamp = util.timeformat(element.timestamp, 2) if (element.child.length > 0) { - element.child.forEach(el => { + element.child.forEach((el) => { // el.timestamp = util.timeformat(el.timestamp, 2) - el["isReplyBoxShow"] = 0 - }) + el["isReplyBoxShow"] = 0; + }); } - }) + }); if (commentPage.value > 1) { - let alreadyCommentIdList = alreadyCommentIdList + let alreadyCommentIdList = alreadyCommentIdList; for (let index = 0; index < data.data.length; index++) { if (alreadyCommentIdList.includes(data.data[index].id)) { - data.data.splice(index, 1) - index-- + data.data.splice(index, 1); + index--; } } } - commentList.value = commentList.value.concat(data.data) + commentList.value = commentList.value.concat(data.data); // console.log("commentList", commentList.value) - commentCount.value = data.count - commentTotalCount.value = data.comments - commentPage.value = data.count > commentList.length ? commentPage.value + 1 : 0 + commentCount.value = data.count; + commentTotalCount.value = data.comments; + commentPage.value = data.count > commentList.length ? commentPage.value + 1 : 0; // console.log("commentList", commentList) // this.setData({ @@ -336,206 +339,206 @@ const getComment = () => { // }) }) .finally(() => { - isgetCommentSate = false - }) -} + isgetCommentSate = false; + }); +}; -let picture = ref({}) +let picture = ref({}); // 监听 detailsToken 的变化 watch( detailsToken, (newValue, oldValue) => { if (newValue !== oldValue) { - commentPage.value = 1 - commentList.value = [] - picture.value = {} - commentTotalCount.value = 0 - commentCount.value = 0 - alreadyCommentIdList = [] - getComment() + commentPage.value = 1; + commentList.value = []; + picture.value = {}; + commentTotalCount.value = 0; + commentCount.value = 0; + alreadyCommentIdList = []; + getComment(); } }, { immediate: true } -) +); -const maxSize = 20 * 1024 * 1024 // 20MB +const maxSize = 20 * 1024 * 1024; // 20MB const handleFileUpload = (event, index, i) => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - closeEmoji() - const file = event.target.files[0] // 获取选择的文件 + closeEmoji(); + const file = event.target.files[0]; // 获取选择的文件 - if (!file) return + if (!file) return; if (file.size > maxSize) { - handleMsg("error", "文件大小不能超过 20MB") - return + handleMsg("error", "文件大小不能超过 20MB"); + return; } - const reader = new FileReader() - reader.onload = e => { - const base64 = e.target.result - uploadImg(base64).then(res => { + const reader = new FileReader(); + reader.onload = (e) => { + const base64 = e.target.result; + uploadImg(base64).then((res) => { const obj = { base64, ...res, - } + }; - if (editCommentState.value) editPicture.value = obj + if (editCommentState.value) editPicture.value = obj; else { - if (i != undefined) commentList.value[index].child[i]["picture"] = obj - else if (index != undefined) commentList.value[index]["picture"] = obj - else picture.value = obj + if (i != undefined) commentList.value[index].child[i]["picture"] = obj; + else if (index != undefined) commentList.value[index]["picture"] = obj; + else picture.value = obj; } - handleMsg("success", "上传成功") - }) - } - reader.readAsDataURL(file) -} + handleMsg("success", "上传成功"); + }); + }; + reader.readAsDataURL(file); +}; // 删除上传的图片 const closeFileUpload = (index, i) => { - if (i != undefined) commentList.value[index].child[i]["picture"] = {} - else if (index != undefined) commentList.value[index]["picture"] = {} - else picture.value = {} -} + if (i != undefined) commentList.value[index].child[i]["picture"] = {}; + else if (index != undefined) commentList.value[index]["picture"] = {}; + else picture.value = {}; +}; // -let emojiState = ref(false) +let emojiState = ref(false); -const emojiData = ["😀", "😁", "😆", "😅", "😂", "😉", "😍", "🥰", "😋", "😜", "🤪", "😎", "🤩", "🥳", "😔", "🙁", "😭", "😡", "😳", "🤗", "🤔", "🤭", "🤫", "😯", "😵", "🙄", "🥴", "🤢", "🤑", "🤠", "👌", "✌️", "🤟", "🤘", "🤙", "👍", "👎", "✊", "👏", "🤝", "🙏", "💪", "❤️", "💔", "🌹", "🥀", "🎉", "🎁", "🧧", "🌙", "⭐", "🌍", "💌", "📬", "🚗", "🚕", "🚲", "🛵", "🚀", "🚁", "⛵", "🚢", "🍎", "🍐", "🍊", "🍉", "🍓", "🍑", "🍔", "🍟", "🍕", "🥪", "🍜", "🍡", "🍨", "🍦", "🎂", "🍰", "🍭", "🍿", "🍩", "🧃", "🍹"] +const emojiData = ["😀", "😁", "😆", "😅", "😂", "😉", "😍", "🥰", "😋", "😜", "🤪", "😎", "🤩", "🥳", "😔", "🙁", "😭", "😡", "😳", "🤗", "🤔", "🤭", "🤫", "😯", "😵", "🙄", "🥴", "🤢", "🤑", "🤠", "👌", "✌️", "🤟", "🤘", "🤙", "👍", "👎", "✊", "👏", "🤝", "🙏", "💪", "❤️", "💔", "🌹", "🥀", "🎉", "🎁", "🧧", "🌙", "⭐", "🌍", "💌", "📬", "🚗", "🚕", "🚲", "🛵", "🚀", "🚁", "⛵", "🚢", "🍎", "🍐", "🍊", "🍉", "🍓", "🍑", "🍔", "🍟", "🍕", "🥪", "🍜", "🍡", "🍨", "🍦", "🎂", "🍰", "🍭", "🍿", "🍩", "🧃", "🍹"]; // 打开 Emoji const openEmoji = (index, i) => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - if (i != undefined) commentList.value[index].child[i]["emojiState"] = true - else if (index != undefined) commentList.value[index]["emojiState"] = true + if (i != undefined) commentList.value[index].child[i]["emojiState"] = true; + else if (index != undefined) commentList.value[index]["emojiState"] = true; else { - closeEmoji() - closeAnswerCommentsChild() - emojiState.value = true + closeEmoji(); + closeAnswerCommentsChild(); + emojiState.value = true; } - emojiMaskState.value = true -} + emojiMaskState.value = true; +}; // 关闭 Emoji const closeEmoji = (index, i) => { - commentList.value.forEach(ele => { - ele["emojiState"] = false + commentList.value.forEach((ele) => { + ele["emojiState"] = false; if (ele["child"] && ele["child"].length != 0) { - ele["child"].forEach(el => { - el["emojiState"] = false - }) + ele["child"].forEach((el) => { + el["emojiState"] = false; + }); } - }) + }); - emojiState.value = false - emojiMaskState.value = false - editEmojiState.value = false -} + emojiState.value = false; + emojiMaskState.value = false; + editEmojiState.value = false; +}; defineExpose({ closeEmoji, -}) +}); // 选择 Emoji const selectEmoji = (key, index, i) => { - closeEmoji() + closeEmoji(); if (i != undefined) { - if (!commentList.value[index]["child"][i]["commentInput"]) commentList.value[index]["child"][i]["commentInput"] = "" - commentList.value[index]["child"][i]["commentInput"] += key + if (!commentList.value[index]["child"][i]["commentInput"]) commentList.value[index]["child"][i]["commentInput"] = ""; + commentList.value[index]["child"][i]["commentInput"] += key; } else if (index != undefined) { - if (!commentList.value[index]["commentInput"]) commentList.value[index]["commentInput"] = "" - commentList.value[index]["commentInput"] += key + if (!commentList.value[index]["commentInput"]) commentList.value[index]["commentInput"] = ""; + commentList.value[index]["commentInput"] += key; } else { - inputTextarea.value += key + inputTextarea.value += key; } -} +}; // 自动输入框增高 -const autoResize = e => { - e.target.style.height = "auto" // 重置高度 - e.target.style.height = `${e.target.scrollHeight}px` // 设置为内容高度 -} +const autoResize = (e) => { + e.target.style.height = "auto"; // 重置高度 + e.target.style.height = `${e.target.scrollHeight}px`; // 设置为内容高度 +}; const handleInputPaste = (event, index, ii) => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - const items = event.clipboardData.items // 获取粘贴的内容 + const items = event.clipboardData.items; // 获取粘贴的内容 for (let i = 0; i < items.length; i++) { - const item = items[i] + const item = items[i]; if (item.type.startsWith("image/")) { - event.preventDefault() - const file = item.getAsFile() // 获取文件 + event.preventDefault(); + const file = item.getAsFile(); // 获取文件 if (file.size > maxSize) { - handleMsg("error", "文件大小不能超过 20MB") - return + handleMsg("error", "文件大小不能超过 20MB"); + return; } - const reader = new FileReader() - reader.onload = e => { - const base64 = e.target.result + const reader = new FileReader(); + reader.onload = (e) => { + const base64 = e.target.result; - uploadImg(base64).then(res => { + uploadImg(base64).then((res) => { const obj = { base64, ...res, - } - if (editCommentState.value) editPicture.value = obj + }; + if (editCommentState.value) editPicture.value = obj; else { - if (ii != undefined) commentList.value[index].child[ii]["picture"] = obj - else if (index != undefined) commentList.value[index]["picture"] = obj - else picture.value = obj + if (ii != undefined) commentList.value[index].child[ii]["picture"] = obj; + else if (index != undefined) commentList.value[index]["picture"] = obj; + else picture.value = obj; } - handleMsg("success", "上传成功") - }) - } - reader.readAsDataURL(file) + handleMsg("success", "上传成功"); + }); + }; + reader.readAsDataURL(file); } } -} +}; -let inputTextarea = ref("") +let inputTextarea = ref(""); // 提交回答-评论 const submitAnswerComments = (index, i) => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - let content = "" - let parentid = null - let token = detailsToken.value - let image = {} + let content = ""; + let parentid = null; + let token = detailsToken.value; + let image = {}; if (i != null) { - content = commentList.value[index]["child"][i]["commentInput"] - parentid = commentList.value[index]["child"][i]["id"] - image = commentList.value[index]["child"][i]["picture"] + content = commentList.value[index]["child"][i]["commentInput"]; + parentid = commentList.value[index]["child"][i]["id"]; + image = commentList.value[index]["child"][i]["picture"]; } else if (index != null) { - content = commentList.value[index]["commentInput"] - parentid = commentList.value[index]["id"] - image = commentList.value[index]["picture"] + content = commentList.value[index]["commentInput"]; + parentid = commentList.value[index]["id"]; + image = commentList.value[index]["picture"]; } else { - content = inputTextarea.value - image = picture.value + content = inputTextarea.value; + image = picture.value; } - detailLoading.value = true + detailLoading.value = true; $ajax("/api/comment/submit", { content, @@ -543,12 +546,12 @@ const submitAnswerComments = (index, i) => { parentid, image: image ? { aid: image.aid, url: image.url } : null, }) - .then(res => { + .then((res) => { if (res.code != 200) { - handleMsg("error", res["message"]) - return + handleMsg("error", res["message"]); + return; } - let data = res.data + let data = res.data; if (i != null) { let targetData = { @@ -562,10 +565,10 @@ const submitAnswerComments = (index, i) => { }, ...data, image, - } + }; - commentList.value[index]["child"].push(targetData) - commentList.value[index]["childnum"]++ + commentList.value[index]["child"].push(targetData); + commentList.value[index]["childnum"]++; } else if (index != null) { let targetData = { id: data["commentid"], @@ -576,9 +579,9 @@ const submitAnswerComments = (index, i) => { reply: [], ...data, image, - } - commentList.value[index]["child"].unshift(targetData) - commentList.value[index]["childnum"]++ + }; + commentList.value[index]["child"].unshift(targetData); + commentList.value[index]["childnum"]++; } else { let targetData = { id: data["commentid"], @@ -589,87 +592,87 @@ const submitAnswerComments = (index, i) => { ...data, child: [], image, - } - commentList.value.unshift(targetData) + }; + commentList.value.unshift(targetData); // commentCount.value++ - inputTextarea.value = "" - picture.value = {} + inputTextarea.value = ""; + picture.value = {}; } - commentTotalCount.value = data.count || 0 + commentTotalCount.value = data.count || 0; - emit("updateAnswers", data.count) + emit("updateAnswers", data.count); // targetAnswerList[index]["commentnum"] = data["count"] - closeAnswerCommentsChild() + closeAnswerCommentsChild(); - handleMsg("success", res["message"] || "操作成功") + handleMsg("success", res["message"] || "操作成功"); }) .finally(() => { - detailLoading.value = false - }) -} + detailLoading.value = false; + }); +}; // 回答-评论 点赞 const operateAnswerCommentsLike = (token, index, i) => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } $ajax("/api/comment/like", { token, - }).then(res => { - if (res.code != 200) return - let data = res.data + }).then((res) => { + if (res.code != 200) return; + let data = res.data; if (i != undefined) { - commentList.value[index].child[i]["islike"] = data["status"] - commentList.value[index].child[i]["likenum"] = data["likenum"] + commentList.value[index].child[i]["islike"] = data["status"]; + commentList.value[index].child[i]["likenum"] = data["likenum"]; } else { - commentList.value[index]["islike"] = data["status"] - commentList.value[index]["likenum"] = data["likenum"] + commentList.value[index]["islike"] = data["status"]; + commentList.value[index]["likenum"] = data["likenum"]; } - handleMsg("success", res["message"] || "操作成功") - }) -} + handleMsg("success", res["message"] || "操作成功"); + }); +}; // 打开 回答-评论 的子评论 const openAnswerCommentsChild = (index, i) => { // console.log("isNeedLogin", isNeedLogin) if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - closeAnswerCommentsChild() + closeAnswerCommentsChild(); - if (i == null) commentList.value[index]["childState"] = true - else commentList.value[index]["child"][i]["childState"] = true -} + if (i == null) commentList.value[index]["childState"] = true; + else commentList.value[index]["child"][i]["childState"] = true; +}; // 关闭 回答-评论 的子评论 const closeAnswerCommentsChild = () => { - commentList.value.forEach(ele => { - ele["childState"] = false - ele["commentInput"] = "" // 删除原本输入值 + commentList.value.forEach((ele) => { + ele["childState"] = false; + ele["commentInput"] = ""; // 删除原本输入值 if (ele["child"] && ele["child"].length != 0) { - ele["child"].forEach(el => { - el["childState"] = false - el["commentInput"] = "" - }) + ele["child"].forEach((el) => { + el["childState"] = false; + el["commentInput"] = ""; + }); } - }) -} + }); +}; // 获取剩下的子评论 const alsoCommentsData = (index, i) => { // const targetAnswerList = [...answerList.value] - const parentid = commentList.value[index]["id"] - const token = detailsToken.value + const parentid = commentList.value[index]["id"]; + const token = detailsToken.value; $ajax("/api/comment/childrenList", { token, @@ -677,154 +680,154 @@ const alsoCommentsData = (index, i) => { limit: 2000, page: 1, childlimit: 3, - }).then(res => { - if (res.code != 200) return - let data = res.data + }).then((res) => { + if (res.code != 200) return; + let data = res.data; - let merged = [...commentList.value[index]["child"], ...data.data.filter(item2 => !commentList.value[index]["child"].find(item1 => item1.id == item2.id))] + let merged = [...commentList.value[index]["child"], ...data.data.filter((item2) => !commentList.value[index]["child"].find((item1) => item1.id == item2.id))]; - commentList.value[index]["child"] = merged + commentList.value[index]["child"] = merged; // answerList.value = targetAnswerList - }) -} + }); +}; -const handleMenuState = inject("handleMenuState") +const handleMenuState = inject("handleMenuState"); const openMenuState = (index, i) => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - let reportToken = "" - if (i === undefined) reportToken = commentList.value[index]["token"] - else reportToken = commentList.value[index]["child"][i]["token"] - handleMenuState(reportToken) -} + let reportToken = ""; + if (i === undefined) reportToken = commentList.value[index]["token"]; + else reportToken = commentList.value[index]["child"][i]["token"]; + handleMenuState(reportToken); +}; const openUserInfo = (index, i) => { - if (i != undefined && commentList.value[index].child[i]["uin"] > 0) commentList.value[index].child[i]["avatarState"] = true - else if (i == undefined && index != undefined && commentList.value[index]["uin"] > 0) commentList.value[index]["avatarState"] = true -} + if (i != undefined && commentList.value[index].child[i]["uin"] > 0) commentList.value[index].child[i]["avatarState"] = true; + else if (i == undefined && index != undefined && commentList.value[index]["uin"] > 0) commentList.value[index]["avatarState"] = true; +}; const closeUserInfo = (index, i) => { - if (i != undefined) commentList.value[index].child[i]["avatarState"] = false - else if (index != undefined) commentList.value[index]["avatarState"] = false -} + if (i != undefined) commentList.value[index].child[i]["avatarState"] = false; + else if (index != undefined) commentList.value[index]["avatarState"] = false; +}; // 点击删除 const commentDelete = (token, index, i) => { $ajax("/api/comment/commentDelete", { token, - }).then(res => { + }).then((res) => { if (res.code != 200) { - ElMessage.error(res.message) - return + ElMessage.error(res.message); + return; } if (i >= 0) { - commentList.value[index].child.splice(i, 1) - commentList.value[index].childnum -= 1 + commentList.value[index].child.splice(i, 1); + commentList.value[index].childnum -= 1; } else { - commentTotalCount.value -= commentList.value[index].childnum - commentList.value.splice(index, 1) + commentTotalCount.value -= commentList.value[index].childnum; + commentList.value.splice(index, 1); } - commentTotalCount.value -= 1 - }) -} + commentTotalCount.value -= 1; + }); +}; const judgeLogin = () => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } -} +}; -let editCommentState = ref(false) -let editToken = "" -let editPicture = ref({}) -let editInput = ref("") -let editEmojiState = ref(false) -const editInputRef = ref(null) +let editCommentState = ref(false); +let editToken = ""; +let editPicture = ref({}); +let editInput = ref(""); +let editEmojiState = ref(false); +const editInputRef = ref(null); const openEdit = (token, index, i) => { - const list = JSON.parse(JSON.stringify(commentList.value)) - let target = {} - if (i != null) target = list[index]["child"][i] - else target = list[index] - console.log(token, index, i, target) - editToken = target.token || "" - editInput.value = target.content || "" - editPicture.value = target.image || {} + const list = JSON.parse(JSON.stringify(commentList.value)); + let target = {}; + if (i != null) target = list[index]["child"][i]; + else target = list[index]; + console.log(token, index, i, target); + editToken = target.token || ""; + editInput.value = target.content || ""; + editPicture.value = target.image || {}; - editCommentState.value = true + editCommentState.value = true; nextTick(() => { - console.log("editInput.value", editInputRef.value) - editInputRef.value.style.height = `${editInputRef.value.scrollHeight}px` - }) -} + console.log("editInput.value", editInputRef.value); + editInputRef.value.style.height = `${editInputRef.value.scrollHeight}px`; + }); +}; const closeEdit = () => { - editPicture.value = {} - editToken = "" - editInput.value = "" - editCommentState.value = false -} + editPicture.value = {}; + editToken = ""; + editInput.value = ""; + editCommentState.value = false; +}; // 打开 Emoji const openEditEmoji = (index, i) => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - editEmojiState.value = true -} + editEmojiState.value = true; +}; -const selectEditEmoji = key => { - closeEmoji() - editInput.value += key -} +const selectEditEmoji = (key) => { + closeEmoji(); + editInput.value += key; +}; const postEditComment = () => { if (isNeedLogin.value) { - goLogin() - return + goLogin(); + return; } - const image = editPicture.value + const image = editPicture.value; $ajax("/api/comment/commentsEditSubmit", { content: editInput.value, token: editToken, image: image ? { aid: image.aid, url: image.url } : null, - }).then(res => { + }).then((res) => { if (res.code != 200) { - ElMessage.error(res.message) - return + ElMessage.error(res.message); + return; } - commentList.value.forEach(element => { + commentList.value.forEach((element) => { if (element.token == editToken) { - element["content"] = editInput.value - element["image"] = image + element["content"] = editInput.value; + element["image"] = image; } element.child && - element.child.forEach(ele => { + element.child.forEach((ele) => { if (ele.token == editToken) { - ele["content"] = editInput.value - ele["image"] = image + ele["content"] = editInput.value; + ele["image"] = image; } - }) - }) + }); + }); - editPicture.value = {} - editToken = "" - editCommentState.value = false - editEmojiState.value = false - ElMessage.success(res.message) - }) -} + editPicture.value = {}; + editToken = ""; + editCommentState.value = false; + editEmojiState.value = false; + ElMessage.success(res.message); + }); +}; -const closeEditFileUpload = () => (editPicture.value = {}) +const closeEditFileUpload = () => (editPicture.value = {}); </script> <style scoped></style> diff --git a/nuxt.config.ts b/nuxt.config.ts index 0655bc2..749821c 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,64 +1,70 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ - ssr: true, - components: true, - buildModules: ['@nuxtjs/composition-api/module'], - env: { - baseUrl: process.env.BASE_URL || "http://localhost:3000", - }, - app: { - buildAssetsDir: "/static/", + ssr: true, + components: true, + buildModules: ['@nuxtjs/composition-api/module'], - head: { - link: [ - { - rel: "stylesheet", - href: "//bbs.gter.net/data/cache/style_2_common.css?Z62", - }, - ], - script: [ - {src: "https://app.gter.net/bottom?tpl=header&menukey=ask"}, - {src: "https://app.gter.net/bottom?tpl=footer,popupnotification", body: true}, - { - src: "//bbs.gter.net/static/js/common.js", - body: true, - charset: "gb2312", - }, - { - innerHTML: ` - window.userInfoWin = {} - STYLEID = "2"; - STATICURL = "static/"; - IMGDIR = "https://bbs.gter.net/template/archy_plt8/image"; - VERHASH = "Z62"; - charset = "gbk"; - discuz_uid = "0"; - cookiepre = "4B5x_c0ae_"; - cookiedomain = "gter.net"; - cookiepath = "/"; - showusercard = "1"; - attackevasive = "0"; - disallowfloat = ""; - creditnotice = ","; - defaultstyle = ""; - REPORTURL = "aHR0cDovL2Jicy5ndGVyLm5ldC9mb3J1bS5waHA/dGlkPTI0MDYzNTYmZ290bz1sYXN0cG9zdA=="; - SITEURL = "https://ask.gter.net/"; - JSPATH = "static/js/";`, - type: "text/javascript", - charset: "utf-8", - }, - ], - }, - }, - head: { - meta: [{charset: "utf-8"}, {name: "viewport", content: "width=device-width, initial-scale=1"}, {"http-equiv": "Cache-Control", content: "no-cache, no-store, must-revalidate"}, {"http-equiv": "Pragma", content: "no-cache"}, {"http-equiv": "Expires", content: "0"}], - }, - devtools: {enabled: true}, - build: { - loaders: { - imgUrl: {limit: 10000}, - }, - }, - modules: ['@element-plus/nuxt'], - -}) + env: { + baseUrl: process.env.BASE_URL || "http://localhost:3000", + }, + + app: { + buildAssetsDir: "/static/", + + head: { + link: [ + { + rel: "stylesheet", + href: "//bbs.gter.net/data/cache/style_2_common.css?Z62", + }, + ], + script: [ + {src: "https://app.gter.net/bottom?tpl=header&menukey=ask"}, + {src: "https://app.gter.net/bottom?tpl=footer,popupnotification", body: true}, + { + src: "//bbs.gter.net/static/js/common.js", + body: true, + charset: "gb2312", + }, + { + innerHTML: ` + window.userInfoWin = {} + STYLEID = "2"; + STATICURL = "static/"; + IMGDIR = "https://bbs.gter.net/template/archy_plt8/image"; + VERHASH = "Z62"; + charset = "gbk"; + discuz_uid = "0"; + cookiepre = "4B5x_c0ae_"; + cookiedomain = "gter.net"; + cookiepath = "/"; + showusercard = "1"; + attackevasive = "0"; + disallowfloat = ""; + creditnotice = ","; + defaultstyle = ""; + REPORTURL = "aHR0cDovL2Jicy5ndGVyLm5ldC9mb3J1bS5waHA/dGlkPTI0MDYzNTYmZ290bz1sYXN0cG9zdA=="; + SITEURL = "https://ask.gter.net/"; + JSPATH = "static/js/";`, + type: "text/javascript", + charset: "utf-8", + }, + ], + }, + }, + + head: { + meta: [{charset: "utf-8"}, {name: "viewport", content: "width=device-width, initial-scale=1"}, {"http-equiv": "Cache-Control", content: "no-cache, no-store, must-revalidate"}, {"http-equiv": "Pragma", content: "no-cache"}, {"http-equiv": "Expires", content: "0"}], + }, + + devtools: {enabled: true}, + + build: { + loaders: { + imgUrl: {limit: 10000}, + }, + }, + + modules: ['@element-plus/nuxt'], + compatibilityDate: "2025-03-21", +}) \ No newline at end of file