diff --git a/yopa-web/resources/.gitignore b/yopa-web/resources/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/yopa-web/resources/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/yopa-web/resources/index.tmp b/yopa-web/resources/index.tmp deleted file mode 100644 index ad1aff5..0000000 --- a/yopa-web/resources/index.tmp +++ /dev/null @@ -1,64 +0,0 @@ -{% extends "_layout" %} - -{% block title -%} - Index -{%- endblock %} - -{% block nav -%} -Home -{%- endblock %} - -{% block content -%} - -

Welcome to tera on actix

- -New model - -

Defined models:

- - - -{%- endblock %} diff --git a/yopa-web/resources/package.json b/yopa-web/resources/package.json new file mode 100644 index 0000000..64740aa --- /dev/null +++ b/yopa-web/resources/package.json @@ -0,0 +1,31 @@ +{ + "name": "rollup-test", + "version": "1.0.0", + "main": "index.js", + "license": "proprietary", + "devDependencies": { + "@rollup/plugin-alias": "^2.2.0", + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-node-resolve": "^11.1.0", + "@rollup/plugin-replace": "^2.2.0", + "@vue/compiler-sfc": "^3.0.5", + "npm-run-all": "^4.1.5", + "rollup": "^2.36.2", + "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-vue": "^6.0.0-beta.10", + "@rollup/plugin-json": "4.1", + "serve": "^11.3.2" + }, + "scripts": { + "build": "rollup -c", + "watch": "rollup -c -w", + "dev": "npm-run-all --parallel start watch", + "start": "serve public" + }, + "dependencies": { + "axios": "^0.21.1", + "lodash-es": "^4.17.20", + "rollup-plugin-scss": "^2.6.1", + "vue": "^3.0.5" + } +} diff --git a/yopa-web/resources/rollup.config.js b/yopa-web/resources/rollup.config.js new file mode 100644 index 0000000..41cadb7 --- /dev/null +++ b/yopa-web/resources/rollup.config.js @@ -0,0 +1,55 @@ +import pluginNodeResolve from '@rollup/plugin-node-resolve'; +import pluginCommonJs from '@rollup/plugin-commonjs'; +import { terser } from 'rollup-plugin-terser'; +import rollupReplace from '@rollup/plugin-replace'; +import pluginAlias from '@rollup/plugin-alias'; +import pluginJson from '@rollup/plugin-json'; +import pluginVue from 'rollup-plugin-vue'; +import pluginScss from 'rollup-plugin-scss'; + +// `npm run build` -> `production` is true +// `npm run dev` -> `production` is false +const production = !process.env.ROLLUP_WATCH; + +export default { + input: 'src/main.js', + output: { + file: 'static/bundle.js', + format: 'iife', // immediately-invoked function expression — suitable for + + diff --git a/yopa-web/resources/src/components/DecimalValue.vue b/yopa-web/resources/src/components/DecimalValue.vue new file mode 100644 index 0000000..125966d --- /dev/null +++ b/yopa-web/resources/src/components/DecimalValue.vue @@ -0,0 +1,31 @@ + + + diff --git a/yopa-web/resources/src/components/IntegerValue.vue b/yopa-web/resources/src/components/IntegerValue.vue new file mode 100644 index 0000000..b14e6c9 --- /dev/null +++ b/yopa-web/resources/src/components/IntegerValue.vue @@ -0,0 +1,31 @@ + + + diff --git a/yopa-web/resources/src/components/NewObjectForm.vue b/yopa-web/resources/src/components/NewObjectForm.vue new file mode 100644 index 0000000..ace99d9 --- /dev/null +++ b/yopa-web/resources/src/components/NewObjectForm.vue @@ -0,0 +1,141 @@ + + + diff --git a/yopa-web/resources/src/components/NewRelationForm.vue b/yopa-web/resources/src/components/NewRelationForm.vue new file mode 100644 index 0000000..6a87e19 --- /dev/null +++ b/yopa-web/resources/src/components/NewRelationForm.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/yopa-web/resources/src/components/PropertyField.vue b/yopa-web/resources/src/components/PropertyField.vue new file mode 100644 index 0000000..e2afc10 --- /dev/null +++ b/yopa-web/resources/src/components/PropertyField.vue @@ -0,0 +1,59 @@ + + + diff --git a/yopa-web/resources/src/components/StringValue.vue b/yopa-web/resources/src/components/StringValue.vue new file mode 100644 index 0000000..a95e472 --- /dev/null +++ b/yopa-web/resources/src/components/StringValue.vue @@ -0,0 +1,31 @@ + + + diff --git a/yopa-web/resources/src/main.js b/yopa-web/resources/src/main.js new file mode 100644 index 0000000..37e0065 --- /dev/null +++ b/yopa-web/resources/src/main.js @@ -0,0 +1,36 @@ +import * as Vue from "vue"; + +import './style/app.scss'; + +import StringValue from "./components/StringValue.vue"; +import DecimalValue from "./components/DecimalValue.vue"; +import BooleanValue from "./components/BooleanValue.vue"; +import IntegerValue from "./components/IntegerValue.vue"; +import PropertyField from "./components/PropertyField.vue"; +import NewObjectForm from "./components/NewObjectForm.vue"; +import NewRelationForm from "./components/NewRelationForm.vue"; + +function registerComponents(app) { + app.component('string-value', StringValue); + app.component('integer-value', IntegerValue); + app.component('decimal-value', DecimalValue); + app.component('boolean-value', BooleanValue); + app.component('property', PropertyField); + app.component('new-relation', NewRelationForm); +} + +window.onLoad = function (callback) { + document.addEventListener('DOMContentLoaded', callback); +} + +window.Yopa = { + newObjectForm(opts) { + // Opts: model_id, schema, objects (named objects for relations) + let app = window.app = Vue.createApp(NewObjectForm, opts); + registerComponents(app); + let instance = app.mount('#new-object-form'); + + // ... + return instance; + } +}; diff --git a/yopa-web/resources/src/style/_common.scss b/yopa-web/resources/src/style/_common.scss new file mode 100644 index 0000000..b44166a --- /dev/null +++ b/yopa-web/resources/src/style/_common.scss @@ -0,0 +1,222 @@ +*, *::before, *::after { + box-sizing: border-box; +} + +html, textarea, select { + font-family: "IBM Plex", "DejaVu Sans", "Helvetica", sans-serif; +} + +.Form { + display: block; + width: 900px; + margin: 0 auto; +} + +nav.top-nav { + margin-bottom: .5rem; + border-bottom: 1px solid silver; +} + +nav.top-nav, .content { + margin: 0 auto; + width: 900px; +} + +a { + color: gray; + text-decoration: none; +} + +a:hover { + color: black; + text-decoration: underline; +} + +nav.top-nav a { + display: inline-block; + padding: .75rem; + + color: gray; + text-decoration: none; +} + +nav.top-nav a:hover { + color: black; + text-decoration: underline; +} + +.Form .Row { + display: flex; + padding: .25rem; +} + +.Form .Row.indented { + padding-left: 10.25rem; +} + +input[type="text"], +input[type="number"], +textarea, +.tag-input { + border: 1px solid silver; + padding: 0.5rem; + border-radius: 5px; + font-size: 1rem; +} + +input[type="text"]:focus, +input[type="number"]:focus, +textarea:focus, +.tag-input.active { + box-shadow: inset 0 0 0 1px #3c97ff; + border-color: #3c97ff; + outline: 0 none !important; +} + +.Form label { + flex-shrink: 0; + width: 10rem; + height: 2.1rem; + line-height: 2.1rem; + vertical-align: middle; + text-align: right; + display: inline-block; + padding-right: .5rem; + align-self: flex-start; +} + +.Form input[type="text"], +.Form input[type="number"], +.Form select { + height: 2.1rem; + width: 15rem; +} + +.Form textarea { + flex-shrink: 1; + width: 30rem; + height: 6rem; +} + +.Form label.checkbox-wrap { + width: 15rem; + padding-right: 1rem; + text-align: left !important; +} + +.tag-input { + position: relative; + width: 30rem; + padding-bottom: 0rem !important; +} + +.tag-input input, +.tag-input input:focus { + border: 0 transparent; + padding: 0; + margin: 0; + box-shadow: none; + outline: 0 none !important; +} + +/* + +.cards-table { + border-collapse: collapse; + margin: 0 auto; + margin-top: 1rem; +} + +.cards-table .actions { + font-size: 90%; +} + +.cards-table td, +.cards-table th { + padding: .5rem; +} + +.cards-table thead th { + border-bottom: 2px solid silver; +} + +.cards-table tbody td { + border-bottom: 1px solid silver; +} + +.cards-table tbody tr:last-child td { + border-bottom: 2px solid silver; +} + +.cards-table td.tags { + padding: .25rem; +} + +.cards-table .tag { + background: #E2E1DF; + font-size: 90%; + padding: 0.25rem .45rem; + border-radius: 3px; + display: inline-block; +} + +.paginate { + margin: 1rem auto; + width: 300px; + text-align: center; + white-space: nowrap; +} + +.paginate span, +.paginate a { + padding: .5rem 1rem; + border-radius: .5rem; + border: 1px solid silver; + text-decoration: none; +} + +.paginate span.num { + border: 1px solid #ccc; + color: gray; +} + +.paginate a { + cursor: pointer; + user-select: none; +} + +.paginate a:hover { + background: #ccc; + text-decoration: none; +} + +.paginate .disabled { + opacity: .5; + cursor: default; +} + +.paginate .disabled:hover { + color: gray; + background: transparent; +} + +*/ + +li { + padding-bottom: .5rem; +} + +.toast { + border: 1px solid black; + border-radius: 5px; + padding: .5rem; + margin: .5rem 0; +} + +.toast.error { + border-color: #dc143c; +} + +.toast.success { + border-color: #32cd32; +} diff --git a/yopa-web/resources/src/style/app.scss b/yopa-web/resources/src/style/app.scss new file mode 100644 index 0000000..5b76bc3 --- /dev/null +++ b/yopa-web/resources/src/style/app.scss @@ -0,0 +1,10 @@ +@import "common"; + +.EditForm th { + text-align: left; + vertical-align: top; +} + +label { + cursor: pointer; +} diff --git a/yopa-web/resources/src/utils.js b/yopa-web/resources/src/utils.js new file mode 100644 index 0000000..80b5065 --- /dev/null +++ b/yopa-web/resources/src/utils.js @@ -0,0 +1,26 @@ +export function uniqueId() { + return 'f' + + Math.random().toString(16).replace('.', '') + + (+new Date()).toString(16); +} + +export function keyBy(array, keyfunc) { + let result = {}; + for(let item of array) { + if (typeof keyfunc == 'string') { + result[item[keyfunc]] = item; + } else { + result[keyfunc(item)] = item; + } + } + return result; +} + +export function objCopy(object) { + return JSON.parse(JSON.stringify(object)); +} + +export function castId(id) { + // TODO no-op after switching to UUIDs + return +id; +} diff --git a/yopa-web/resources/static/bundle.js b/yopa-web/resources/static/bundle.js new file mode 100644 index 0000000..144e780 --- /dev/null +++ b/yopa-web/resources/static/bundle.js @@ -0,0 +1,2 @@ +!function(){"use strict";function e(e,t){const n=Object.create(null),o=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}const t=e("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl"),n=e("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function o(e){if(S(e)){const t={};for(let n=0;n{if(e){const n=e.split(i);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function a(e){let t="";if(R(e))t=e;else if(S(e))for(let n=0;nu(e,t)))}const f=e=>null==e?"":P(e)?JSON.stringify(e,p,2):String(e),p=(e,t)=>O(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:C(t)?{[`Set(${t.size})`]:[...t.values()]}:!P(t)||S(t)||I(t)?t:String(t),h=Object.freeze({}),m=Object.freeze([]),g=()=>{},v=()=>!1,y=/^on[^a-z]/,b=e=>y.test(e),_=e=>e.startsWith("onUpdate:"),w=Object.assign,x=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},j=Object.prototype.hasOwnProperty,k=(e,t)=>j.call(e,t),S=Array.isArray,O=e=>"[object Map]"===N(e),C=e=>"[object Set]"===N(e),$=e=>e instanceof Date,E=e=>"function"==typeof e,R=e=>"string"==typeof e,A=e=>"symbol"==typeof e,P=e=>null!==e&&"object"==typeof e,F=e=>P(e)&&E(e.then)&&E(e.catch),T=Object.prototype.toString,N=e=>T.call(e),V=e=>N(e).slice(8,-1),I=e=>"[object Object]"===N(e),M=e=>R(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,U=e(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),L=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},B=/-(\w)/g,D=L((e=>e.replace(B,((e,t)=>t?t.toUpperCase():"")))),q=/\B([A-Z])/g,H=L((e=>e.replace(q,"-$1").toLowerCase())),z=L((e=>e.charAt(0).toUpperCase()+e.slice(1))),J=L((e=>e?`on${z(e)}`:"")),W=(e,t)=>e!==t&&(e==e||t==t),K=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},X=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Y;const Z=new WeakMap,Q=[];let ee;const te=Symbol("iterate"),ne=Symbol("Map key iterate");function oe(e,t=h){(function(e){return e&&!0===e._isEffect})(e)&&(e=e.raw);const n=function(e,t){const n=function(){if(!n.active)return t.scheduler?void 0:e();if(!Q.includes(n)){se(n);try{return le.push(ae),ae=!0,Q.push(n),ee=n,e()}finally{Q.pop(),ue(),ee=Q[Q.length-1]}}};return n.id=ie++,n.allowRecurse=!!t.allowRecurse,n._isEffect=!0,n.active=!0,n.raw=e,n.deps=[],n.options=t,n}(e,t);return t.lazy||n(),n}function re(e){e.active&&(se(e),e.options.onStop&&e.options.onStop(),e.active=!1)}let ie=0;function se(e){const{deps:t}=e;if(t.length){for(let n=0;n{e&&e.forEach((e=>{(e!==ee||e.allowRecurse)&&a.add(e)}))};if("clear"===t)s.forEach(l);else if("length"===n&&S(e))s.forEach(((e,t)=>{("length"===t||t>=o)&&l(e)}));else switch(void 0!==n&&l(s.get(n)),t){case"add":S(e)?M(n)&&l(s.get("length")):(l(s.get(te)),O(e)&&l(s.get(ne)));break;case"delete":S(e)||(l(s.get(te)),O(e)&&l(s.get(ne)));break;case"set":O(e)&&l(s.get(te))}a.forEach((s=>{s.options.onTrigger&&s.options.onTrigger({effect:s,target:e,key:n,type:t,newValue:o,oldValue:r,oldTarget:i}),s.options.scheduler?s.options.scheduler(s):s()}))}const pe=new Set(Object.getOwnPropertyNames(Symbol).map((e=>Symbol[e])).filter(A)),he=be(),me=be(!1,!0),ge=be(!0),ve=be(!0,!0),ye={};function be(e=!1,t=!1){return function(n,o,r){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_raw"===o&&r===(e?Ke:We).get(n))return n;const i=S(n);if(!e&&i&&k(ye,o))return Reflect.get(ye,o,r);const s=Reflect.get(n,o,r);if(A(o)?pe.has(o):"__proto__"===o||"__v_isRef"===o)return s;if(e||de(n,"get",o),t)return s;if(ot(s)){return!i||!M(o)?s.value:s}return P(s)?e?Xe(s):Ge(s):s}}["includes","indexOf","lastIndexOf"].forEach((e=>{const t=Array.prototype[e];ye[e]=function(...e){const n=nt(this);for(let e=0,t=this.length;e{const t=Array.prototype[e];ye[e]=function(...e){ce();const n=t.apply(this,e);return ue(),n}}));function _e(e=!1){return function(t,n,o,r){const i=t[n];if(!e&&(o=nt(o),!S(t)&&ot(i)&&!ot(o)))return i.value=o,!0;const s=S(t)&&M(n)?Number(n)(console.warn(`Set operation on key "${String(t)}" failed: target is readonly.`,e),!0),deleteProperty:(e,t)=>(console.warn(`Delete operation on key "${String(t)}" failed: target is readonly.`,e),!0)},je=w({},we,{get:me,set:_e(!0)}),ke=w({},xe,{get:ve}),Se=e=>P(e)?Ge(e):e,Oe=e=>P(e)?Xe(e):e,Ce=e=>e,$e=e=>Reflect.getPrototypeOf(e);function Ee(e,t,n=!1,o=!1){const r=nt(e=e.__v_raw),i=nt(t);t!==i&&!n&&de(r,"get",t),!n&&de(r,"get",i);const{has:s}=$e(r),a=n?Oe:o?Ce:Se;return s.call(r,t)?a(e.get(t)):s.call(r,i)?a(e.get(i)):void 0}function Re(e,t=!1){const n=this.__v_raw,o=nt(n),r=nt(e);return e!==r&&!t&&de(o,"has",e),!t&&de(o,"has",r),e===r?n.has(e):n.has(e)||n.has(r)}function Ae(e,t=!1){return e=e.__v_raw,!t&&de(nt(e),"iterate",te),Reflect.get(e,"size",e)}function Pe(e){e=nt(e);const t=nt(this),n=$e(t).has.call(t,e);return t.add(e),n||fe(t,"add",e,e),this}function Fe(e,t){t=nt(t);const n=nt(this),{has:o,get:r}=$e(n);let i=o.call(n,e);i?Je(n,o,e):(e=nt(e),i=o.call(n,e));const s=r.call(n,e);return n.set(e,t),i?W(t,s)&&fe(n,"set",e,t,s):fe(n,"add",e,t),this}function Te(e){const t=nt(this),{has:n,get:o}=$e(t);let r=n.call(t,e);r?Je(t,n,e):(e=nt(e),r=n.call(t,e));const i=o?o.call(t,e):void 0,s=t.delete(e);return r&&fe(t,"delete",e,void 0,i),s}function Ne(){const e=nt(this),t=0!==e.size,n=O(e)?new Map(e):new Set(e),o=e.clear();return t&&fe(e,"clear",void 0,void 0,n),o}function Ve(e,t){return function(n,o){const r=this,i=r.__v_raw,s=nt(i),a=e?Oe:t?Ce:Se;return!e&&de(s,"iterate",te),i.forEach(((e,t)=>n.call(o,a(e),a(t),r)))}}function Ie(e,t,n){return function(...o){const r=this.__v_raw,i=nt(r),s=O(i),a="entries"===e||e===Symbol.iterator&&s,l="keys"===e&&s,c=r[e](...o),u=t?Oe:n?Ce:Se;return!t&&de(i,"iterate",l?ne:te),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:a?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function Me(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";console.warn(`${z(e)} operation ${n}failed: target is readonly.`,nt(this))}return"delete"!==e&&this}}const Ue={get(e){return Ee(this,e)},get size(){return Ae(this)},has:Re,add:Pe,set:Fe,delete:Te,clear:Ne,forEach:Ve(!1,!1)},Le={get(e){return Ee(this,e,!1,!0)},get size(){return Ae(this)},has:Re,add:Pe,set:Fe,delete:Te,clear:Ne,forEach:Ve(!1,!0)},Be={get(e){return Ee(this,e,!0)},get size(){return Ae(this,!0)},has(e){return Re.call(this,e,!0)},add:Me("add"),set:Me("set"),delete:Me("delete"),clear:Me("clear"),forEach:Ve(!0,!1)};function De(e,t){const n=t?Le:e?Be:Ue;return(t,o,r)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(k(n,o)&&o in t?n:t,o,r)}["keys","values","entries",Symbol.iterator].forEach((e=>{Ue[e]=Ie(e,!1,!1),Be[e]=Ie(e,!0,!1),Le[e]=Ie(e,!1,!0)}));const qe={get:De(!1,!1)},He={get:De(!1,!0)},ze={get:De(!0,!1)};function Je(e,t,n){const o=nt(n);if(o!==n&&t.call(e,o)){const t=V(e);console.warn(`Reactive ${t} contains both the raw and reactive versions of the same object${"Map"===t?" 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 We=new WeakMap,Ke=new WeakMap;function Ge(e){return e&&e.__v_isReadonly?e:Ze(e,!1,we,qe)}function Xe(e){return Ze(e,!0,xe,ze)}function Ye(e){return Ze(e,!0,ke,ze)}function Ze(e,t,n,o){if(!P(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const r=t?Ke:We,i=r.get(e);if(i)return i;const s=(a=e).__v_skip||!Object.isExtensible(a)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(V(a));var a;if(0===s)return e;const l=new Proxy(e,2===s?o:n);return r.set(e,l),l}function Qe(e){return et(e)?Qe(e.__v_raw):!(!e||!e.__v_isReactive)}function et(e){return!(!e||!e.__v_isReadonly)}function tt(e){return Qe(e)||et(e)}function nt(e){return e&&nt(e.__v_raw)||e}function ot(e){return Boolean(e&&!0===e.__v_isRef)}const rt={get:(e,t,n)=>{return ot(o=Reflect.get(e,t,n))?o.value:o;var o},set:(e,t,n,o)=>{const r=e[t];return ot(r)&&!ot(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function it(e){return Qe(e)?e:new Proxy(e,rt)}class st{constructor(e,t){this._object=e,this._key=t,this.__v_isRef=!0}get value(){return this._object[this._key]}set value(e){this._object[this._key]=e}}class at{constructor(e,t,n){this._setter=t,this._dirty=!0,this.__v_isRef=!0,this.effect=oe(e,{lazy:!0,scheduler:()=>{this._dirty||(this._dirty=!0,fe(nt(this),"set","value"))}}),this.__v_isReadonly=n}get value(){return this._dirty&&(this._value=this.effect(),this._dirty=!1),de(nt(this),"get","value"),this._value}set value(e){this._setter(e)}}const lt=[];function ct(e){lt.push(e)}function ut(){lt.pop()}function dt(e,...t){ce();const n=lt.length?lt[lt.length-1].component:null,o=n&&n.appContext.config.warnHandler,r=function(){let e=lt[lt.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}();if(o)mt(o,n,11,[e+t.join(""),n&&n.proxy,r.map((({vnode:e})=>`at <${wr(n,e.type)}>`)).join("\n"),r]);else{const n=[`[Vue warn]: ${e}`,...t];r.length&&n.push("\n",...function(e){const t=[];return e.forEach(((e,n)=>{t.push(...0===n?[]:["\n"],...function({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=!!e.component&&null==e.component.parent,r=` at <${wr(e.component,e.type,o)}`,i=">"+n;return e.props?[r,...ft(e.props),i]:[r+i]}(e))})),t}(r)),console.warn(...n)}ue()}function ft(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach((n=>{t.push(...pt(n,e[n]))})),n.length>3&&t.push(" ..."),t}function pt(e,t,n){return R(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):"number"==typeof t||"boolean"==typeof t||null==t?n?t:[`${e}=${t}`]:ot(t)?(t=pt(e,nt(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):E(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=nt(t),n?t:[`${e}=`,t])}const ht={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/vue-next"};function mt(e,t,n,o){let r;try{r=o?e(...o):e()}catch(e){vt(e,t,n)}return r}function gt(e,t,n,o){if(E(e)){const r=mt(e,t,n,o);return r&&F(r)&&r.catch((e=>{vt(e,t,n)})),r}const r=[];for(let i=0;iMt(e)-Mt(t))),Ct=0;Ctnull==e.id?1/0:e.id;function Ut(e){bt=!1,yt=!0,Vt(e=e||new Map),_t.sort(((e,t)=>Mt(e)-Mt(t)));try{for(wt=0;wt<_t.length;wt++){const t=_t[wt];t&&(Lt(e,t),mt(t,null,14))}}finally{wt=0,_t.length=0,It(e),yt=!1,Et=null,(_t.length||St.length)&&Ut(e)}}function Lt(e,t){if(e.has(t)){const n=e.get(t);if(n>100)throw new Error("Maximum recursive updates exceeded. 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.");e.set(t,n+1)}else e.set(t,1)}let Bt=!1;const Dt=new Set;("undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}).__VUE_HMR_RUNTIME__={createRecord:zt(Ht),rerender:zt((function(e,t){const n=qt.get(e);if(!n)return;t&&(n.component.render=t);Array.from(n.instances).forEach((e=>{t&&(e.render=t),e.renderCache=[],Bt=!0,e.update(),Bt=!1}))})),reload:zt((function(e,t){const n=qt.get(e);if(!n)return;const{component:o,instances:r}=n;if(!Dt.has(o)){t=xr(t)?t.__vccOpts:t,w(o,t);for(const e in o)e in t||delete o[e];Dt.add(o),Nt((()=>{Dt.delete(o)}))}Array.from(r).forEach((e=>{e.parent?Pt(e.parent.update):e.appContext.reload?e.appContext.reload():"undefined"!=typeof window?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}))}))};const qt=new Map;function Ht(e,t){return t||(dt("HMR API usage is out of date.\nPlease upgrade vue-loader/vite/rollup-plugin-vue or other relevant depdendency that handles Vue SFC compilation."),t={}),!qt.has(e)&&(qt.set(e,{component:xr(t)?t.__vccOpts:t,instances:new Set}),!0)}function zt(e){return(t,n)=>{try{return e(t,n)}catch(e){console.error(e),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Jt;const Wt=Xt("component:added"),Kt=Xt("component:updated"),Gt=Xt("component:removed");function Xt(e){return t=>{Jt&&Jt.emit(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}function Yt(e,t,...n){const o=e.vnode.props||h;{const{emitsOptions:o,propsOptions:[r]}=e;if(o)if(t in o){const e=o[t];if(E(e)){e(...n)||dt(`Invalid event arguments: event validation failed for event "${t}".`)}}else r&&J(t)in r||dt(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${J(t)}" prop.`)}let r=n;const i=t.startsWith("update:"),s=i&&t.slice(7);if(s&&s in o){const e=`${"modelValue"===s?"model":s}Modifiers`,{number:t,trim:i}=o[e]||h;i?r=n.map((e=>e.trim())):t&&(r=n.map(X))}!function(e,t,n){Jt&&Jt.emit("component:emit",e.appContext.app,e,t,n)}(e,t,r);{const n=t.toLowerCase();n!==t&&o[J(n)]&&dt(`Event "${n}" is emitted in component ${wr(e,e.type)} but the handler is registered for "${t}". 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 "${H(t)}" instead of "${t}".`)}let a=J(D(t)),l=o[a];!l&&i&&(a=J(H(t)),l=o[a]),l&>(l,e,6,r);const c=o[a+"Once"];if(c){if(e.emitted){if(e.emitted[a])return}else(e.emitted={})[a]=!0;gt(c,e,6,r)}}function Zt(e,t,n=!1){if(!t.deopt&&void 0!==e.__emits)return e.__emits;const o=e.emits;let r={},i=!1;if(!E(e)){const o=e=>{i=!0,w(r,Zt(e,t,!0))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return o||i?(S(o)?o.forEach((e=>r[e]=null)):w(r,o),e.__emits=r):e.__emits=null}function Qt(e,t){return!(!e||!b(t))&&(t=t.slice(2).replace(/Once$/,""),k(e,t[0].toLowerCase()+t.slice(1))||k(e,H(t))||k(e,t))}let en=null;function tn(e){en=e}let nn=!1;function on(){nn=!0}function rn(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:i,propsOptions:[s],slots:a,attrs:l,emit:c,render:u,renderCache:d,data:f,setupState:p,ctx:h}=e;let m;en=e,nn=!1;try{let e;if(4&n.shapeFlag){const t=r||o;m=zo(u.call(t,t,d,i,p,f,h)),e=l}else{const n=t;l===i&&on(),m=zo(n.length>1?n(i,{get attrs(){return on(),l},slots:a,emit:c}):n(i,null)),e=t.props?l:ln(l)}let g,v=m;if(2048&m.patchFlag&&([v,g]=sn(m)),!1!==t.inheritAttrs&&e){const t=Object.keys(e),{shapeFlag:n}=v;if(t.length)if(1&n||6&n)s&&t.some(_)&&(e=cn(e,s)),v=Do(v,e);else if(!nn&&v.type!==Eo){const e=Object.keys(l),t=[],n=[];for(let o=0,r=e.length;o renders non-element root node that cannot be animated."),v.transition=n.transition),g?g(v):m=v}catch(t){vt(t,e,1),m=Bo(Eo)}return en=null,m}const sn=e=>{const t=e.children,n=e.dynamicChildren,o=an(t);if(!o)return[e,void 0];const r=t.indexOf(o),i=n?n.indexOf(o):-1;return[zo(o),o=>{t[r]=o,n&&(i>-1?n[i]=o:o.patchFlag>0&&(e.dynamicChildren=[...n,o]))}]};function an(e){let t;for(let n=0;n{let t;for(const n in e)("class"===n||"style"===n||b(n))&&((t||(t={}))[n]=e[n]);return t},cn=(e,t)=>{const n={};for(const o in e)_(o)&&o.slice(9)in t||(n[o]=e[o]);return n},un=e=>6&e.shapeFlag||1&e.shapeFlag||e.type===Eo;function dn(e,t,n){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let r=0;r slots expect a single root node."),e=t}return zo(e)}let pn=0;const hn=e=>pn+=e;function mn(e,t=en){if(!t)return e;const n=(...n)=>{pn||Fo(!0);const o=en;tn(t);const r=e(...n);return tn(o),pn||To(),r};return n._c=!0,n}let gn=null;const vn=[];function yn(e){vn.push(gn=e)}function bn(){vn.pop(),gn=vn[vn.length-1]||null}function _n(e){return t=>mn((function(){yn(e);const n=t.apply(this,arguments);return bn(),n}))}function wn(e,t,n,o=!1){const r={},i={};G(i,Mo,1),xn(e,t,r,i),En(r,e),n?e.props=o?r:Ze(r,!1,je,He):e.type.props?e.props=r:e.props=i,e.attrs=i}function xn(e,t,n,o){const[r,i]=e.propsOptions;if(t)for(const i in t){const s=t[i];if(U(i))continue;let a;r&&k(r,a=D(i))?n[a]=s:Qt(e.emitsOptions,i)||(o[i]=s)}if(i){const t=nt(n);for(let o=0;o{s=!0;const[n,o]=kn(e,t,!0);w(r,n),o&&i.push(...o)};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}if(!o&&!s)return e.__props=m;if(S(o))for(let e=0;e-1,s[1]=n<0||e-1||k(s,"default"))&&i.push(t)}}}}return e.__props=[r,i]}function Sn(e){return"$"!==e[0]||(dt(`Invalid prop name: "${e}" is a reserved property.`),!1)}function On(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function Cn(e,t){return On(e)===On(t)}function $n(e,t){if(S(t)){for(let n=0,o=t.length;n"boolean"===e.toLowerCase()))}(r,i)&&(o+=` with value ${s}`);o+=`, got ${i} `,Tn(i)&&(o+=`with value ${a}.`);return o}(e,t,i))}s&&!s(t)&&dt('Invalid prop: custom validator check failed for prop "'+e+'".')}}const An=e("String,Number,Boolean,Function,Symbol");function Pn(e,t){let n;const o=On(t);if(An(o)){const r=typeof e;n=r===o.toLowerCase(),n||"object"!==r||(n=e instanceof t)}else n="Object"===o?P(e):"Array"===o?S(e):e instanceof t;return{valid:n,expectedType:o}}function Fn(e,t){return"String"===t?`"${e}"`:"Number"===t?`${Number(e)}`:`${e}`}function Tn(e){return["string","number","boolean"].some((t=>e.toLowerCase()===t))}function Nn(e,t,n=ur,o=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;ce(),dr(n);const r=gt(t,n,e,o);return dr(null),ue(),r});return o?r.unshift(i):r.push(i),i}dt(`${J(ht[e].replace(/ hook$/,""))} 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 Vn=e=>(t,n=ur)=>!hr&&Nn(e,t,n),In=Vn("bm"),Mn=Vn("m"),Un=Vn("bu"),Ln=Vn("u"),Bn=Vn("bum"),Dn=Vn("um"),qn=Vn("rtg"),Hn=Vn("rtc"),zn={};function Jn(e,t,n){return E(t)||dt("`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."),Wn(e,t,n)}function Wn(e,t,{immediate:n,deep:o,flush:r,onTrack:i,onTrigger:s}=h,a=ur){t||(void 0!==n&&dt('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),void 0!==o&&dt('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const l=e=>{dt("Invalid watch source: ",e,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")};let c,u,d=!1;if(ot(e)?(c=()=>e.value,d=!!e._shallow):Qe(e)?(c=()=>e,o=!0):S(e)?c=()=>e.map((e=>ot(e)?e.value:Qe(e)?Gn(e):E(e)?mt(e,a,2):void l(e))):E(e)?c=t?()=>mt(e,a,2):()=>{if(!a||!a.isUnmounted)return u&&u(),mt(e,a,3,[f])}:(c=g,l(e)),t&&o){const e=c;c=()=>Gn(e())}const f=e=>{u=y.options.onStop=()=>{mt(e,a,4)}};let p=S(e)?[]:zn;const m=()=>{if(y.active)if(t){const e=y();(o||d||W(e,p))&&(u&&u(),gt(t,a,3,[e,p===zn?void 0:p,f]),p=e)}else y()};let v;m.allowRecurse=!!t,v="sync"===r?m:"post"===r?()=>vo(m,a&&a.suspense):()=>{!a||a.isMounted?function(e){Tt(e,jt,xt,kt)}(m):m()};const y=oe(c,{lazy:!0,onTrack:i,onTrigger:s,scheduler:v});return yr(y,a),t?n?m():p=y():"post"===r?vo(y,a&&a.suspense):y(),()=>{re(y),a&&x(a.effects,y)}}function Kn(e,t,n){const o=this.proxy;return Wn(R(e)?()=>o[e]:e.bind(o),t.bind(o),n,this)}function Gn(e,t=new Set){if(!P(e)||t.has(e))return e;if(t.add(e),ot(e))Gn(e.value,t);else if(S(e))for(let n=0;n{Gn(e,t)}));else for(const n in e)Gn(e[n],t);return e}const Xn=e=>e.type.__isKeepAlive;function Yn(e,t,n=ur){const o=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}e()});if(Nn(t,o,n),n){let e=n.parent;for(;e&&e.parent;)Xn(e.parent.vnode)&&Zn(o,t,n,e),e=e.parent}}function Zn(e,t,n,o){const r=Nn(t,e,o,!0);Dn((()=>{x(o[t],r)}),n)}const Qn=e=>"_"===e[0]||"$stable"===e,eo=e=>S(e)?e.map(zo):[zo(e)],to=(e,t,n)=>mn((n=>(ur&&dt(`Slot "${e}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`),eo(t(n)))),n),no=(e,t)=>{const n=e._ctx;for(const o in e){if(Qn(o))continue;const r=e[o];if(E(r))t[o]=to(o,r,n);else if(null!=r){dt(`Non-function value encountered for slot "${o}". Prefer function slots for better performance.`);const e=eo(r);t[o]=()=>e}}},oo=(e,t)=>{Xn(e.vnode)||dt("Non-function value encountered for default slot. Prefer function slots for better performance.");const n=eo(t);e.slots.default=()=>n},ro=e("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text");function io(e){ro(e)&&dt("Do not use built-in directive ids as custom directive id: "+e)}function so(e,t){const n=en;if(null===n)return dt("withDirectives can only be used inside render functions."),e;const o=n.proxy,r=e.dirs||(e.dirs=[]);for(let e=0;e(i.has(e)?dt("Plugin has already been applied to target app."):e&&E(e.install)?(i.add(e),e.install(a,...t)):E(e)?(i.add(e),e(a,...t)):dt('A plugin must either be a function or an object with an "install" function.'),a),mixin:e=>(r.mixins.includes(e)?dt("Mixin has already been applied to target app"+(e.name?`: ${e.name}`:"")):(r.mixins.push(e),(e.props||e.emits)&&(r.deopt=!0)),a),component:(e,t)=>(pr(e,r.config),t?(r.components[e]&&dt(`Component "${e}" has already been registered in target app.`),r.components[e]=t,a):r.components[e]),directive:(e,t)=>(io(e),t?(r.directives[e]&&dt(`Directive "${e}" has already been registered in target app.`),r.directives[e]=t,a):r.directives[e]),mount(i,l){if(!s){const c=Bo(n,o);return c.appContext=r,r.reload=()=>{e(Do(c),i)},l&&t?t(c,i):e(c,i),s=!0,a._container=i,i.__vue_app__=a,function(e,t){Jt&&Jt.emit("app:init",e,t,{Fragment:Co,Text:$o,Comment:Eo,Static:Ro})}(a,Sr),c.component.proxy}dt("App has already been mounted.\nIf 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(){s?(e(null,a._container),function(e){Jt&&Jt.emit("app:unmount",e)}(a)):dt("Cannot unmount an app that is not mounted.")},provide:(e,t)=>(e in r.provides&&dt(`App already provides property with key "${String(e)}". It will be overwritten with the new value.`),r.provides[e]=t,a)};return a}}function ho(e,t){e.appContext.config.performance&&go()&&uo.mark(`vue-${t}-${e.uid}`)}function mo(e,t){if(e.appContext.config.performance&&go()){const n=`vue-${t}-${e.uid}`,o=n+":end";uo.mark(o),uo.measure(`<${wr(e,e.type)}> ${t}`,n,o),uo.clearMarks(n),uo.clearMarks(o)}}function go(){return void 0!==co||("undefined"!=typeof window&&window.performance?(co=!0,uo=window.performance):co=!1),co}const vo=function(e,t){t&&t.pendingBranch?S(e)?t.effects.push(...e):t.effects.push(e):Nt(e)},yo=(e,t,n,o)=>{if(S(e))return void e.forEach(((e,r)=>yo(e,t&&(S(t)?t[r]:t),n,o)));let r;r=!o||o.type.__asyncLoader?null:4&o.shapeFlag?o.component.exposed||o.component.proxy:o.el;const{i:i,r:s}=e;if(!i)return void dt("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");const a=t&&t.r,l=i.refs===h?i.refs={}:i.refs,c=i.setupState;if(null!=a&&a!==s&&(R(a)?(l[a]=null,k(c,a)&&(c[a]=null)):ot(a)&&(a.value=null)),R(s)){const e=()=>{l[s]=r,k(c,s)&&(c[s]=r)};r?(e.id=-1,vo(e,n)):e()}else if(ot(s)){const e=()=>{s.value=r};r?(e.id=-1,vo(e,n)):e()}else E(s)?mt(s,i,12,[r,l]):dt("Invalid template ref type:",r,`(${typeof r})`)};function bo(e){return function(e,t){const{insert:n,remove:o,patchProp:r,forcePatchProp:i,createElement:s,createText:a,createComment:l,setText:c,setElementText:u,parentNode:d,nextSibling:f,setScopeId:p=g,cloneNode:v,insertStaticContent:y}=e,b=(e,t,n,o=null,r=null,i=null,s=!1,a=!1)=>{e&&!Io(e,t)&&(o=ne(e),Y(e,r,i,!0),e=null),-2===t.patchFlag&&(a=!1,t.dynamicChildren=null);const{type:l,ref:c,shapeFlag:u}=t;switch(l){case $o:_(e,t,n,o);break;case Eo:x(e,t,n,o);break;case Ro:null==e?j(t,n,o,s):S(e,t,n,s);break;case Co:V(e,t,n,o,r,i,s,a);break;default:1&u?$(e,t,n,o,r,i,s,a):6&u?I(e,t,n,o,r,i,s,a):64&u||128&u?l.process(e,t,n,o,r,i,s,a,se):dt("Invalid VNode type:",l,`(${typeof l})`)}null!=c&&r&&yo(c,e&&e.ref,i,t)},_=(e,t,o,r)=>{if(null==e)n(t.el=a(t.children),o,r);else{const n=t.el=e.el;t.children!==e.children&&c(n,t.children)}},x=(e,t,o,r)=>{null==e?n(t.el=l(t.children||""),o,r):t.el=e.el},j=(e,t,n,o)=>{[e.el,e.anchor]=y(e.children,t,n,o)},S=(e,t,n,o)=>{if(t.children!==e.children){const r=f(e.anchor);C(e),[t.el,t.anchor]=y(t.children,n,r,o)}else t.el=e.el,t.anchor=e.anchor},O=({el:e,anchor:t},o,r)=>{let i;for(;e&&e!==t;)i=f(e),n(e,o,r),e=i;n(t,o,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),o(e),e=n;o(t)},$=(e,t,n,o,r,i,s,a)=>{s=s||"svg"===t.type,null==e?E(t,n,o,r,i,s,a):P(e,t,r,i,s,a)},E=(e,t,o,i,a,l,c)=>{let d,f;const{type:p,props:h,shapeFlag:m,transition:g,scopeId:v,patchFlag:y,dirs:b}=e;if(d=e.el=s(e.type,l,h&&h.is),8&m?u(d,e.children):16&m&&A(e.children,d,null,i,a,l&&"foreignObject"!==p,c||!!e.dynamicChildren),b&&ao(e,null,i,"created"),h){for(const t in h)U(t)||r(d,t,null,h[t],l,e.children,i,a,te);(f=h.onVnodeBeforeMount)&&_o(f,i,e)}R(d,v,e,i),Object.defineProperty(d,"__vnode",{value:e,enumerable:!1}),Object.defineProperty(d,"__vueParentComponent",{value:i,enumerable:!1}),b&&ao(e,null,i,"beforeMount");const _=(!a||a&&!a.pendingBranch)&&g&&!g.persisted;_&&g.beforeEnter(d),n(d,t,o),((f=h&&h.onVnodeMounted)||_||b)&&vo((()=>{f&&_o(f,i,e),_&&g.enter(d),b&&ao(e,null,i,"mounted")}),a)},R=(e,t,n,o)=>{if(t&&p(e,t),o){const r=o.type.__scopeId;r&&r!==t&&p(e,r+"-s");let i=o.subTree;i.type===Co&&(i=an(i.children)||i),n===i&&R(e,o.vnode.scopeId,o.vnode,o.parent)}},A=(e,t,n,o,r,i,s,a=0)=>{for(let l=a;l{const l=t.el=e.el;let{patchFlag:c,dynamicChildren:d,dirs:f}=t;c|=16&e.patchFlag;const p=e.props||h,m=t.props||h;let g;if((g=m.onVnodeBeforeUpdate)&&_o(g,n,t,e),f&&ao(t,e,n,"beforeUpdate"),Bt&&(c=0,a=!1,d=null),c>0){if(16&c)N(l,t,p,m,n,o,s);else if(2&c&&p.class!==m.class&&r(l,"class",null,m.class,s),4&c&&r(l,"style",p.style,m.style,s),8&c){const a=t.dynamicProps;for(let t=0;t{g&&_o(g,n,t,e),f&&ao(t,e,n,"updated")}),o)},T=(e,t,n,o,r,i)=>{for(let s=0;s{if(n!==o){for(const c in o){if(U(c))continue;const u=o[c],d=n[c];(u!==d||i&&i(e,c))&&r(e,c,d,u,l,t.children,s,a,te)}if(n!==h)for(const i in n)U(i)||i in o||r(e,i,n[i],null,l,t.children,s,a,te)}},V=(e,t,o,r,i,s,l,c)=>{const u=t.el=e?e.el:a(""),d=t.anchor=e?e.anchor:a("");let{patchFlag:f,dynamicChildren:p}=t;f>0&&(c=!0),Bt&&(f=0,c=!1,p=null),null==e?(n(u,o,r),n(d,o,r),A(t.children,o,d,i,s,l,c)):f>0&&64&f&&p&&e.dynamicChildren?(T(e.dynamicChildren,p,o,i,s,l),i&&i.type.__hmrId?wo(e,t):(null!=t.key||i&&t===i.subTree)&&wo(e,t,!0)):z(e,t,o,d,i,s,l,c)},I=(e,t,n,o,r,i,s,a)=>{null==e?512&t.shapeFlag?r.ctx.activate(t,n,o,s,a):M(t,n,o,r,i,s,a):L(e,t,a)},M=(e,t,n,o,r,i,s)=>{const a=e.component=function(e,t,n){const o=e.type,r=(t?t.appContext:e.appContext)||lr,i={uid:cr++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,update:null,render:null,proxy:null,exposed:null,withProxy:null,effects:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:kn(o,r),emitsOptions:Zt(o,r),emit:null,emitted:null,ctx:h,data:h,props:h,attrs:h,slots:h,refs:h,setupState:h,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,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};return i.ctx=function(e){const t={};Object.defineProperty(t,"_",{configurable:!0,enumerable:!1,get:()=>e}),Object.keys(ir).forEach((n=>{Object.defineProperty(t,n,{configurable:!0,enumerable:!1,get:()=>ir[n](e),set:g})}));const{globalProperties:n}=e.appContext.config;return Object.keys(n).forEach((e=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,get:()=>n[e],set:g})})),t}(i),i.root=t?t.root:i,i.emit=Yt.bind(null,i),Wt(i),i}(e,o,r);if(a.type.__hmrId&&function(e){const t=e.type.__hmrId;let n=qt.get(t);n||(Ht(t,e.type),n=qt.get(t)),n.instances.add(e)}(a),ct(e),ho(a,"mount"),Xn(e)&&(a.ctx.renderer=se),ho(a,"init"),function(e,t=!1){hr=t;const{props:n,children:o,shapeFlag:r}=e.vnode,i=4&r;wn(e,n,i,t),((e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=t,G(t,"_",n)):no(t,e.slots={})}else e.slots={},t&&oo(e,t);G(e.slots,Mo,1)})(e,o);const s=i?function(e,t){const n=e.type;n.name&&pr(n.name,e.appContext.config);if(n.components){const t=Object.keys(n.components);for(let n=0;n{Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>e.props[n],set:g})}))}(e);const{setup:o}=n;if(o){const n=e.setupContext=o.length>1?function(e){const t=t=>{e.exposed&&dt("expose() should be called only once per setup()."),e.exposed=it(t)};return Object.freeze({get props(){return e.props},get attrs(){return new Proxy(e.attrs,vr)},get slots(){return Ye(e.slots)},get emit(){return(t,...n)=>e.emit(t,...n)},expose:t})}(e):null;ur=e,ce();const r=mt(o,e,0,[Ye(e.props),n]);if(ue(),ur=null,F(r)){if(t)return r.then((t=>{mr(e,t)}));e.asyncDep=r}else mr(e,r)}else gr(e)}(e,t):void 0;hr=!1}(a),mo(a,"init"),a.asyncDep){if(r&&r.registerDep(a,B),!e.el){const e=a.subTree=Bo(Eo);x(null,e,t,n)}}else B(a,e,t,n,r,i,s),ut(),mo(a,"mount")},L=(e,t,n)=>{const o=t.component=e.component;if(function(e,t,n){const{props:o,children:r,component:i}=e,{props:s,children:a,patchFlag:l}=t,c=i.emitsOptions;if((r||a)&&Bt)return!0;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!r&&!a||a&&a.$stable)||o!==s&&(o?!s||dn(o,s,c):!!s);if(1024&l)return!0;if(16&l)return o?dn(o,s,c):!!s;if(8&l){const e=t.dynamicProps;for(let t=0;t-1&&_t.splice(t,1)}(o.update),o.update()}else t.component=e.component,t.el=e.el,o.vnode=t},B=(e,t,n,o,r,i,s)=>{e.update=oe((function(){if(e.isMounted){let t,{next:n,bu:o,u:a,parent:l,vnode:c}=e,u=n;ct(n||e.vnode),n?(n.el=c.el,q(e,n,s)):n=c,o&&K(o),(t=n.props&&n.props.onVnodeBeforeUpdate)&&_o(t,l,n,c),ho(e,"render");const f=rn(e);mo(e,"render");const p=e.subTree;e.subTree=f,ho(e,"patch"),b(p,f,d(p.el),ne(p),e,r,i),mo(e,"patch"),n.el=f.el,null===u&&function({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}(e,f.el),a&&vo(a,r),(t=n.props&&n.props.onVnodeUpdated)&&vo((()=>{_o(t,l,n,c)}),r),Kt(e),ut()}else{let s;const{el:a,props:l}=t,{bm:c,m:u,parent:d}=e;c&&K(c),(s=l&&l.onVnodeBeforeMount)&&_o(s,d,t),ho(e,"render");const f=e.subTree=rn(e);if(mo(e,"render"),a&&le?(ho(e,"hydrate"),le(t.el,f,e,r),mo(e,"hydrate")):(ho(e,"patch"),b(null,f,n,o,e,r,i),mo(e,"patch"),t.el=f.el),u&&vo(u,r),s=l&&l.onVnodeMounted){const e=t;vo((()=>{_o(s,d,e)}),r)}const{a:p}=e;p&&256&t.shapeFlag&&vo(p,r),e.isMounted=!0,t=n=o=null}}),function(e){return{scheduler:Pt,allowRecurse:!0,onTrack:e.rtc?t=>K(e.rtc,t):void 0,onTrigger:e.rtg?t=>K(e.rtg,t):void 0}}(e))},q=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:s}}=e,a=nt(r),[l]=e.propsOptions;if(e.type.__hmrId||e.parent&&e.parent.type.__hmrId||!(o||s>0)||16&s){let o;xn(e,t,r,i);for(const i in a)t&&(k(t,i)||(o=H(i))!==i&&k(t,o))||(l?!n||void 0===n[i]&&void 0===n[o]||(r[i]=jn(l,t||h,i,void 0,e)):delete r[i]);if(i!==a)for(const e in i)t&&k(t,e)||delete i[e]}else if(8&s){const n=e.vnode.dynamicProps;for(let o=0;o{const{vnode:n,slots:o}=e;let r=!0,i=h;if(32&n.shapeFlag){const e=t._;e?Bt?w(o,t):1===e?r=!1:w(o,t):(r=!t.$stable,no(t,o)),i=t}else t&&(oo(e,t),i={default:1});if(r)for(const e in o)Qn(e)||e in i||delete o[e]})(e,t.children),Vt(void 0,e.update)},z=(e,t,n,o,r,i,s,a=!1)=>{const l=e&&e.children,c=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:p}=t;if(f>0){if(128&f)return void W(l,d,n,o,r,i,s,a);if(256&f)return void J(l,d,n,o,r,i,s,a)}8&p?(16&c&&te(l,r,i),d!==l&&u(n,d)):16&c?16&p?W(l,d,n,o,r,i,s,a):te(l,r,i,!0):(8&c&&u(n,""),16&p&&A(d,n,o,r,i,s,a))},J=(e,t,n,o,r,i,s,a)=>{t=t||m;const l=(e=e||m).length,c=t.length,u=Math.min(l,c);let d;for(d=0;dc?te(e,r,i,!0,!1,u):A(t,n,o,r,i,s,a,u)},W=(e,t,n,o,r,i,s,a)=>{let l=0;const c=t.length;let u=e.length-1,d=c-1;for(;l<=u&&l<=d;){const o=e[l],c=t[l]=a?Jo(t[l]):zo(t[l]);if(!Io(o,c))break;b(o,c,n,null,r,i,s,a),l++}for(;l<=u&&l<=d;){const o=e[u],l=t[d]=a?Jo(t[d]):zo(t[d]);if(!Io(o,l))break;b(o,l,n,null,r,i,s,a),u--,d--}if(l>u){if(l<=d){const e=d+1,u=ed)for(;l<=u;)Y(e[l],r,i,!0),l++;else{const f=l,p=l,h=new Map;for(l=p;l<=d;l++){const e=t[l]=a?Jo(t[l]):zo(t[l]);null!=e.key&&(h.has(e.key)&&dt("Duplicate keys found during update:",JSON.stringify(e.key),"Make sure keys are unique."),h.set(e.key,l))}let g,v=0;const y=d-p+1;let _=!1,w=0;const x=new Array(y);for(l=0;l=y){Y(o,r,i,!0);continue}let c;if(null!=o.key)c=h.get(o.key);else for(g=p;g<=d;g++)if(0===x[g-p]&&Io(o,t[g])){c=g;break}void 0===c?Y(o,r,i,!0):(x[c-p]=l+1,c>=w?w=c:_=!0,b(o,t[c],n,null,r,i,s,a),v++)}const j=_?function(e){const t=e.slice(),n=[0];let o,r,i,s,a;const l=e.length;for(o=0;o0&&(t[o]=n[i-1]),n[i]=o)}}i=n.length,s=n[i-1];for(;i-- >0;)n[i]=s,s=t[s];return n}(x):m;for(g=j.length-1,l=y-1;l>=0;l--){const e=p+l,a=t[e],u=e+1{const{el:s,type:a,transition:l,children:c,shapeFlag:u}=e;if(6&u)return void X(e.component.subTree,t,o,r);if(128&u)return void e.suspense.move(t,o,r);if(64&u)return void a.move(e,t,o,se);if(a===Co){n(s,t,o);for(let e=0;el.enter(s)),i);else{const{leave:e,delayLeave:r,afterLeave:i}=l,a=()=>n(s,t,o),c=()=>{e(s,(()=>{a(),i&&i()}))};r?r(s,a,c):c()}else n(s,t,o)},Y=(e,t,n,o=!1,r=!1)=>{const{type:i,props:s,ref:a,children:l,dynamicChildren:c,shapeFlag:u,patchFlag:d,dirs:f}=e;if(null!=a&&yo(a,null,n,null),256&u)return void t.ctx.deactivate(e);const p=1&u&&f;let h;if((h=s&&s.onVnodeBeforeUnmount)&&_o(h,t,e),6&u)ee(e.component,n,o);else{if(128&u)return void e.suspense.unmount(n,o);p&&ao(e,null,t,"beforeUnmount"),c&&(i!==Co||d>0&&64&d)?te(c,t,n,!1,!0):(i===Co&&(128&d||256&d)||!r&&16&u)&&te(l,t,n),64&u&&(o||!xo(e.props))&&e.type.remove(e,se),o&&Z(e)}((h=s&&s.onVnodeUnmounted)||p)&&vo((()=>{h&&_o(h,t,e),p&&ao(e,null,t,"unmounted")}),n)},Z=e=>{const{type:t,el:n,anchor:r,transition:i}=e;if(t===Co)return void Q(n,r);if(t===Ro)return void C(e);const s=()=>{o(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){const{leave:t,delayLeave:o}=i,r=()=>t(n,s);o?o(e.el,s,r):r()}else s()},Q=(e,t)=>{let n;for(;e!==t;)n=f(e),o(e),e=n;o(t)},ee=(e,t,n)=>{e.type.__hmrId&&function(e){qt.get(e.type.__hmrId).instances.delete(e)}(e);const{bum:o,effects:r,update:i,subTree:s,um:a}=e;if(o&&K(o),r)for(let e=0;e{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve()),Gt(e)},te=(e,t,n,o=!1,r=!1,i=0)=>{for(let s=i;s6&e.shapeFlag?ne(e.component.subTree):128&e.shapeFlag?e.suspense.next():f(e.anchor||e.el),ie=(e,t)=>{null==e?t._vnode&&Y(t._vnode,null,null,!0):b(t._vnode||null,e,t),It(),t._vnode=e},se={p:b,um:Y,m:X,r:Z,mt:M,mc:A,pc:z,pbc:T,n:ne,o:e};let ae,le;t&&([ae,le]=t(se));return{render:ie,hydrate:ae,createApp:po(ie,ae)}}(e)}function _o(e,t,n,o=null){gt(e,t,7,[n,o])}function wo(e,t,n=!1){const o=e.children,r=t.children;if(S(o)&&S(r))for(let e=0;ee&&(e.disabled||""===e.disabled),jo="components";function ko(e){return function(e,t,n=!0){const o=en||ur;if(o){const r=o.type;if(e===jo){if("_self"===t)return r;const e=_r(r);if(e&&(e===t||e===D(t)||e===z(D(t))))return r}const i=Oo(o[e]||r[e],t)||Oo(o.appContext[e],t);return n&&!i&&dt(`Failed to resolve ${e.slice(0,-1)}: ${t}`),i}dt(`resolve${z(e.slice(0,-1))} can only be used in render() or setup().`)}(jo,e)||e}const So=Symbol();function Oo(e,t){return e&&(e[t]||e[D(t)]||e[z(D(t))])}const Co=Symbol("Fragment"),$o=Symbol("Text"),Eo=Symbol("Comment"),Ro=Symbol("Static"),Ao=[];let Po=null;function Fo(e=!1){Ao.push(Po=e?null:[])}function To(){Ao.pop(),Po=Ao[Ao.length-1]||null}function No(e,t,n,o,r){const i=Bo(e,t,n,o,r,!0);return i.dynamicChildren=Po||m,To(),Po&&Po.push(i),i}function Vo(e){return!!e&&!0===e.__v_isVNode}function Io(e,t){return!(6&t.shapeFlag&&Dt.has(t.type))&&(e.type===t.type&&e.key===t.key)}const Mo="__vInternal",Uo=({key:e})=>null!=e?e:null,Lo=({ref:e})=>null!=e?R(e)||ot(e)||E(e)?{i:en,r:e}:e:null,Bo=(...e)=>function(e,t=null,n=null,r=0,i=null,s=!1){e&&e!==So||(e||dt(`Invalid vnode type when creating vnode: ${e}.`),e=Eo);if(Vo(e)){const o=Do(e,t,!0);return n&&Wo(o,n),o}xr(e)&&(e=e.__vccOpts);if(t){(tt(t)||Mo in t)&&(t=w({},t));let{class:e,style:n}=t;e&&!R(e)&&(t.class=a(e)),P(n)&&(tt(n)&&!S(n)&&(n=w({},n)),t.style=o(n))}const l=R(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:P(e)?4:E(e)?2:0;4&l&&tt(e)&&dt("Vue received a Component which 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`.","\nComponent that was made reactive: ",e=nt(e));const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Uo(t),ref:t&&Lo(t),scopeId:gn,children:null,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null};c.key!=c.key&&dt("VNode created with invalid key (NaN). VNode type:",c.type);if(Wo(c,n),128&l){const{content:e,fallback:t}=function(e){const{shapeFlag:t,children:n}=e;let o,r;return 32&t?(o=fn(n.default),r=fn(n.fallback)):(o=fn(n),r=zo(null)),{content:o,fallback:r}}(c);c.ssContent=e,c.ssFallback=t}!s&&Po&&(r>0||6&l)&&32!==r&&Po.push(c);return c}(...e);function Do(e,t,n=!1){const{props:r,ref:i,patchFlag:s}=e,l=t?function(...e){const t=w({},e[0]);for(let n=1;n1)return n&&E(t)?t():t;dt(`injection "${String(e)}" not found.`)}else dt("inject() can only be used inside setup() or functional components.")}let Go=!1;function Xo(e,t,n=[],o=[],r=[],i=!1){const{mixins:s,extends:a,data:l,computed:c,methods:u,watch:d,provide:f,inject:p,components:m,directives:v,beforeMount:y,mounted:b,beforeUpdate:_,updated:x,activated:j,deactivated:k,beforeDestroy:O,beforeUnmount:C,destroyed:$,unmounted:R,render:A,renderTracked:F,renderTriggered:T,errorCaptured:N,expose:V}=t,I=e.proxy,M=e.ctx,U=e.appContext.mixins;i&&A&&e.render===g&&(e.render=A),i||(Go=!0,Yo("beforeCreate","bc",t,e,U),Go=!1,er(e,U,n,o,r)),a&&Xo(e,a,n,o,r,!0),s&&er(e,s,n,o,r);const L=function(){const e=Object.create(null);return(t,n)=>{e[n]?dt(`${t} property "${n}" is already defined in ${e[n]}.`):e[n]=t}}();{const[t]=e.propsOptions;if(t)for(const e in t)L("Props",e)}if(p)if(S(p))for(let e=0;etr(e,t,I))),l&&tr(e,l,I);{const t=nt(e.data);for(const e in t)L("Data",e),"$"!==e[0]&&"_"!==e[0]&&Object.defineProperty(M,e,{configurable:!0,enumerable:!0,get:()=>t[e],set:g})}}if(c)for(const e in c){const t=c[e],n=E(t)?t.bind(I,I):E(t.get)?t.get.bind(I,I):g;n===g&&dt(`Computed property "${e}" has no getter.`);const o=jr({get:n,set:!E(t)&&E(t.set)?t.set.bind(I):()=>{dt(`Write operation failed: computed property "${e}" is readonly.`)}});Object.defineProperty(M,e,{enumerable:!0,configurable:!0,get:()=>o.value,set:e=>o.value=e}),L("Computed",e)}var B;if(d&&o.push(d),!i&&o.length&&o.forEach((e=>{for(const t in e)nr(e[t],M,I,t)})),f&&r.push(f),!i&&r.length&&r.forEach((e=>{const t=E(e)?e.call(I):e;Reflect.ownKeys(t).forEach((e=>{!function(e,t){if(ur){let n=ur.provides;const o=ur.parent&&ur.parent.provides;o===n&&(n=ur.provides=Object.create(o)),n[e]=t}else dt("provide() can only be used inside setup().")}(e,t[e])}))})),i&&(m&&w(e.components||(e.components=w({},e.type.components)),m),v&&w(e.directives||(e.directives=w({},e.type.directives)),v)),i||Yo("created","c",t,e,U),y&&In(y.bind(I)),b&&Mn(b.bind(I)),_&&Un(_.bind(I)),x&&Ln(x.bind(I)),j&&Yn(j.bind(I),"a",B),k&&function(e,t){Yn(e,"da",t)}(k.bind(I)),N&&((e,t=ur)=>{Nn("ec",e,t)})(N.bind(I)),F&&Hn(F.bind(I)),T&&qn(T.bind(I)),O&&dt("`beforeDestroy` has been renamed to `beforeUnmount`."),C&&Bn(C.bind(I)),$&&dt("`destroyed` has been renamed to `unmounted`."),R&&Dn(R.bind(I)),S(V))if(i)dt("The `expose` option is ignored when used in mixins.");else if(V.length){const t=e.exposed||(e.exposed=it({}));V.forEach((e=>{t[e]=function(e,t){return ot(e[t])?e[t]:new st(e,t)}(I,e)}))}else e.exposed||(e.exposed=h)}function Yo(e,t,n,o,r){Qo(e,t,r,o);const{extends:i,mixins:s}=n;i&&Zo(e,t,i,o),s&&Qo(e,t,s,o);const a=n[e];a&>(a.bind(o.proxy),o,t)}function Zo(e,t,n,o){n.extends&&Zo(e,t,n.extends,o);const r=n[e];r&>(r.bind(o.proxy),o,t)}function Qo(e,t,n,o){for(let r=0;r."),P(o)?e.data===h?e.data=Ge(o):w(e.data,o):dt("data() should return an object.")}function nr(e,t,n,o){const r=o.includes(".")?function(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;en[o];if(R(e)){const n=t[e];E(n)?Jn(r,n):dt(`Invalid watch handler specified by key "${e}"`,n)}else if(E(e))Jn(r,e.bind(n));else if(P(e))if(S(e))e.forEach((e=>nr(e,t,n,o)));else{const o=E(e.handler)?e.handler.bind(n):t[e.handler];E(o)?Jn(r,o,e):dt(`Invalid watch handler specified by key "${e.handler}"`,o)}else dt(`Invalid watch option: "${o}"`,e)}function or(e,t,n){const o=n.appContext.config.optionMergeStrategies,{mixins:r,extends:i}=t;i&&or(e,i,n),r&&r.forEach((t=>or(e,t,n)));for(const r in t)o&&k(o,r)?e[r]=o[r](e[r],t[r],n.proxy,r):e[r]=t[r]}const rr=e=>e&&(e.proxy?e.proxy:rr(e.parent)),ir=w(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Ye(e.props),$attrs:e=>Ye(e.attrs),$slots:e=>Ye(e.slots),$refs:e=>Ye(e.refs),$parent:e=>rr(e.parent),$root:e=>e.root&&e.root.proxy,$emit:e=>e.emit,$options:e=>function(e){const t=e.type,{__merged:n,mixins:o,extends:r}=t;if(n)return n;const i=e.appContext.mixins;if(!i.length&&!o&&!r)return t;const s={};return i.forEach((t=>or(s,t,e))),or(s,t,e),t.__merged=s}(e),$forceUpdate:e=>()=>Pt(e.update),$nextTick:e=>At.bind(e.proxy),$watch:e=>Kn.bind(e)}),sr={get({_:e},t){const{ctx:n,setupState:o,data:r,props:i,accessCache:s,type:a,appContext:l}=e;if("__v_skip"===t)return!0;if("__isVue"===t)return!0;let c;if("$"!==t[0]){const a=s[t];if(void 0!==a)switch(a){case 0:return o[t];case 1:return r[t];case 3:return n[t];case 2:return i[t]}else{if(o!==h&&k(o,t))return s[t]=0,o[t];if(r!==h&&k(r,t))return s[t]=1,r[t];if((c=e.propsOptions[0])&&k(c,t))return s[t]=2,i[t];if(n!==h&&k(n,t))return s[t]=3,n[t];Go||(s[t]=4)}}const u=ir[t];let d,f;return u?("$attrs"===t&&(de(e,"get",t),on()),u(e)):(d=a.__cssModules)&&(d=d[t])?d:n!==h&&k(n,t)?(s[t]=3,n[t]):(f=l.config.globalProperties,k(f,t)?f[t]:void(!en||R(t)&&0===t.indexOf("__v")||(r===h||"$"!==t[0]&&"_"!==t[0]||!k(r,t)?dt(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`):dt(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`))))},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;if(r!==h&&k(r,t))r[t]=n;else if(o!==h&&k(o,t))o[t]=n;else if(t in e.props)return dt(`Attempting to mutate prop "${t}". Props are readonly.`,e),!1;return"$"===t[0]&&t.slice(1)in e?(dt(`Attempting to mutate public property "${t}". Properties starting with $ are reserved and readonly.`,e),!1):(t in e.appContext.config.globalProperties?Object.defineProperty(i,t,{enumerable:!0,configurable:!0,value:n}):i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,propsOptions:i}},s){let a;return void 0!==n[s]||e!==h&&k(e,s)||t!==h&&k(t,s)||(a=i[0])&&k(a,s)||k(o,s)||k(ir,s)||k(r.config.globalProperties,s)},ownKeys:e=>(dt("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."),Reflect.ownKeys(e))},ar=w({},sr,{get(e,t){if(t!==Symbol.unscopables)return sr.get(e,t,e)},has(e,n){const o="_"!==n[0]&&!t(n);return!o&&sr.has(e,n)&&dt(`Property ${JSON.stringify(n)} should not start with _ which is a reserved prefix for Vue internals.`),o}});const lr=lo();let cr=0;let ur=null;const dr=e=>{ur=e},fr=e("slot,component");function pr(e,t){const n=t.isNativeTag||v;(fr(e)||n(e))&&dt("Do not use built-in or reserved HTML elements as component id: "+e)}let hr=!1;function mr(e,t,n){E(t)?e.render=t:P(t)?(Vo(t)&&dt("setup() should not return VNodes directly - return a render function instead."),e.devtoolsRawSetupState=t,e.setupState=it(t),function(e){const{ctx:t,setupState:n}=e;Object.keys(nt(n)).forEach((e=>{"$"!==e[0]&&"_"!==e[0]?Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:()=>n[e],set:g}):dt(`setup() return property ${JSON.stringify(e)} should not start with "$" or "_" which are reserved prefixes for Vue internals.`)}))}(e)):void 0!==t&&dt("setup() should return an object. Received: "+(null===t?"null":typeof t)),gr(e)}function gr(e,t){const n=e.type;e.render||(e.render=n.render||g,e.render._rc&&(e.withProxy=new Proxy(e.ctx,ar))),ur=e,ce(),Xo(e,n),ue(),ur=null,n.render||e.render!==g||(n.template?dt('Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".'):dt("Component is missing template or render function."))}const vr={get:(e,t)=>(on(),e[t]),set:()=>(dt("setupContext.attrs is readonly."),!1),deleteProperty:()=>(dt("setupContext.attrs is readonly."),!1)};function yr(e,t=ur){t&&(t.effects||(t.effects=[])).push(e)}const br=/(?:^|[-_])(\w)/g;function _r(e){return E(e)&&e.displayName||e.name}function wr(e,t,n=!1){let o=_r(t);if(!o&&t.__file){const e=t.__file.match(/([^/\\]+)\.\w+$/);e&&(o=e[1])}if(!o&&e&&e.parent){const n=e=>{for(const n in e)if(e[n]===t)return n};o=n(e.components||e.parent.type.components)||n(e.appContext.components)}return o?o.replace(br,(e=>e.toUpperCase())).replace(/[-_]/g,""):n?"App":"Anonymous"}function xr(e){return E(e)&&"__vccOpts"in e}function jr(e){const t=function(e){let t,n;return E(e)?(t=e,n=()=>{console.warn("Write operation failed: computed value is readonly")}):(t=e.get,n=e.set),new at(t,n,E(e)||!e.set)}(e);return yr(t.effect),t}function kr(e,t){let n;if(S(e)||R(e)){n=new Array(e.length);for(let o=0,r=e.length;o{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n)=>t?Cr.createElementNS(Or,e):Cr.createElement(e,n?{is:n}:void 0),createText:e=>Cr.createTextNode(e),createComment:e=>Cr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Cr.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode:e=>e.cloneNode(!0),insertStaticContent(e,t,n,o){const r=o?Er||(Er=Cr.createElementNS(Or,"svg")):$r||($r=Cr.createElement("div"));r.innerHTML=e;const i=r.firstChild;let s=i,a=s;for(;s;)a=s,Rr.insert(s,t,n),s=r.firstChild;return[i,a]}};const Ar=/\s*!important$/;function Pr(e,t,n){if(S(n))n.forEach((n=>Pr(e,t,n)));else if(t.startsWith("--"))e.setProperty(t,n);else{const o=function(e,t){const n=Tr[t];if(n)return n;let o=D(t);if("filter"!==o&&o in e)return Tr[t]=o;o=z(o);for(let n=0;ndocument.createEvent("Event").timeStamp&&(Vr=()=>performance.now());let Ir=0;const Mr=Promise.resolve(),Ur=()=>{Ir=0};function Lr(e,t,n,o){e.addEventListener(t,n,o)}function Br(e,t,n,o,r=null){const i=e._vei||(e._vei={}),s=i[t];if(o&&s)s.value=o;else{const[n,a]=function(e){let t;if(Dr.test(e)){let n;for(t={};n=e.match(Dr);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e.slice(2).toLowerCase(),t]}(t);if(o){Lr(e,n,i[t]=function(e,t){const n=e=>{(e.timeStamp||Vr())>=n.attached-1&>(function(e,t){if(S(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=(()=>Ir||(Mr.then(Ur),Ir=Vr()))(),n}(o,r),a)}else s&&(!function(e,t,n,o){e.removeEventListener(t,n,o)}(e,n,s,a),i[t]=void 0)}}const Dr=/(?:Once|Passive|Capture)$/;const qr=/^on[a-z]/;const Hr=e=>{const t=e.props["onUpdate:modelValue"];return S(t)?e=>K(t,e):t};function zr(e){e.target.composing=!0}function Jr(e){const t=e.target;t.composing&&(t.composing=!1,function(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}(t,"input"))}const Wr={created(e,{modifiers:{lazy:t,trim:n,number:o}},r){e._assign=Hr(r);const i=o||"number"===e.type;Lr(e,t?"change":"input",(t=>{if(t.target.composing)return;let o=e.value;n?o=o.trim():i&&(o=X(o)),e._assign(o)})),n&&Lr(e,"change",(()=>{e.value=e.value.trim()})),t||(Lr(e,"compositionstart",zr),Lr(e,"compositionend",Jr),Lr(e,"change",Jr))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{trim:n,number:o}},r){if(e._assign=Hr(r),e.composing)return;if(document.activeElement===e){if(n&&e.value.trim()===t)return;if((o||"number"===e.type)&&X(e.value)===t)return}const i=null==t?"":t;e.value!==i&&(e.value=i)}},Kr={created(e,t,n){e._assign=Hr(n),Lr(e,"change",(()=>{const t=e._modelValue,n=Zr(e),o=e.checked,r=e._assign;if(S(t)){const e=d(t,n),i=-1!==e;if(o&&!i)r(t.concat(n));else if(!o&&i){const n=[...t];n.splice(e,1),r(n)}}else if(C(t)){const e=new Set(t);o?e.add(n):e.delete(n),r(e)}else r(Qr(e,o))}))},mounted:Gr,beforeUpdate(e,t,n){e._assign=Hr(n),Gr(e,t,n)}};function Gr(e,{value:t,oldValue:n},o){e._modelValue=t,S(t)?e.checked=d(t,o.props.value)>-1:C(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=u(t,Qr(e,!0)))}const Xr={created(e,{value:t,modifiers:{number:n}},o){const r=C(t);Lr(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?X(Zr(e)):Zr(e)));e._assign(e.multiple?r?new Set(t):t:t[0])})),e._assign=Hr(o)},mounted(e,{value:t}){Yr(e,t)},beforeUpdate(e,t,n){e._assign=Hr(n)},updated(e,{value:t}){Yr(e,t)}};function Yr(e,t){const n=e.multiple;if(!n||S(t)||C(t)){for(let o=0,r=e.options.length;o-1:r.selected=t.has(i);else if(u(Zr(r),t))return void(e.selectedIndex=o)}n||(e.selectedIndex=-1)}else dt(``\r\n if (shapeFlag & 8 /* TEXT_CHILDREN */) {\r\n hostSetElementText(el, vnode.children);\r\n }\r\n else if (shapeFlag & 16 /* ARRAY_CHILDREN */) {\r\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', optimized || !!vnode.dynamicChildren);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\r\n }\r\n // props\r\n if (props) {\r\n for (const key in props) {\r\n if (!isReservedProp(key)) {\r\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n if ((vnodeHook = props.onVnodeBeforeMount)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n }\r\n }\r\n // scopeId\r\n setScopeId(el, scopeId, vnode, parentComponent);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n Object.defineProperty(el, '__vnode', {\r\n value: vnode,\r\n enumerable: false\r\n });\r\n Object.defineProperty(el, '__vueParentComponent', {\r\n value: parentComponent,\r\n enumerable: false\r\n });\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\r\n }\r\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\r\n // #1689 For inside suspense + suspense resolved case, just call it\r\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\r\n transition &&\r\n !transition.persisted;\r\n if (needCallTransitionHooks) {\r\n transition.beforeEnter(el);\r\n }\r\n hostInsert(el, container, anchor);\r\n if ((vnodeHook = props && props.onVnodeMounted) ||\r\n needCallTransitionHooks ||\r\n dirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\r\n needCallTransitionHooks && transition.enter(el);\r\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\r\n }, parentSuspense);\r\n }\r\n };\r\n const setScopeId = (el, scopeId, vnode, parentComponent) => {\r\n if (scopeId) {\r\n hostSetScopeId(el, scopeId);\r\n }\r\n if (parentComponent) {\r\n const treeOwnerId = parentComponent.type.__scopeId;\r\n // vnode's own scopeId and the current patched component's scopeId is\r\n // different - this is a slot content node.\r\n if (treeOwnerId && treeOwnerId !== scopeId) {\r\n hostSetScopeId(el, treeOwnerId + '-s');\r\n }\r\n let subTree = parentComponent.subTree;\r\n if ((process.env.NODE_ENV !== 'production') && subTree.type === Fragment) {\r\n subTree =\r\n filterSingleRoot(subTree.children) || subTree;\r\n }\r\n if (vnode === subTree) {\r\n setScopeId(el, parentComponent.vnode.scopeId, parentComponent.vnode, parentComponent.parent);\r\n }\r\n }\r\n };\r\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, optimized, start = 0) => {\r\n for (let i = start; i < children.length; i++) {\r\n const child = (children[i] = optimized\r\n ? cloneIfMounted(children[i])\r\n : normalizeVNode(children[i]));\r\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n };\r\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, optimized) => {\r\n const el = (n2.el = n1.el);\r\n let { patchFlag, dynamicChildren, dirs } = n2;\r\n // #1426 take the old vnode's patch flag into account since user may clone a\r\n // compiler-generated vnode, which de-opts to FULL_PROPS\r\n patchFlag |= n1.patchFlag & 16 /* FULL_PROPS */;\r\n const oldProps = n1.props || EMPTY_OBJ;\r\n const newProps = n2.props || EMPTY_OBJ;\r\n let vnodeHook;\r\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\r\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\r\n }\r\n if (dirs) {\r\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\r\n // HMR updated, force full diff\r\n patchFlag = 0;\r\n optimized = false;\r\n dynamicChildren = null;\r\n }\r\n if (patchFlag > 0) {\r\n // the presence of a patchFlag means this element's render code was\r\n // generated by the compiler and can take the fast path.\r\n // in this path old node and new node are guaranteed to have the same shape\r\n // (i.e. at the exact same position in the source template)\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n // element props contain dynamic keys, full diff needed\r\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\r\n }\r\n else {\r\n // class\r\n // this flag is matched when the element has dynamic class bindings.\r\n if (patchFlag & 2 /* CLASS */) {\r\n if (oldProps.class !== newProps.class) {\r\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\r\n }\r\n }\r\n // style\r\n // this flag is matched when the element has dynamic style bindings\r\n if (patchFlag & 4 /* STYLE */) {\r\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\r\n }\r\n // props\r\n // This flag is matched when the element has dynamic prop/attr bindings\r\n // other than class and style. The keys of dynamic prop/attrs are saved for\r\n // faster iteration.\r\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\r\n // bail out and go through a full diff because we need to unset the old key\r\n if (patchFlag & 8 /* PROPS */) {\r\n // if the flag is present then dynamicProps must be non-null\r\n const propsToUpdate = n2.dynamicProps;\r\n for (let i = 0; i < propsToUpdate.length; i++) {\r\n const key = propsToUpdate[i];\r\n const prev = oldProps[key];\r\n const next = newProps[key];\r\n if (next !== prev ||\r\n (hostForcePatchProp && hostForcePatchProp(el, key))) {\r\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n }\r\n }\r\n // text\r\n // This flag is matched when the element has only dynamic text children.\r\n if (patchFlag & 1 /* TEXT */) {\r\n if (n1.children !== n2.children) {\r\n hostSetElementText(el, n2.children);\r\n }\r\n }\r\n }\r\n else if (!optimized && dynamicChildren == null) {\r\n // unoptimized, full diff\r\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\r\n }\r\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\r\n if (dynamicChildren) {\r\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG);\r\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\r\n traverseStaticChildren(n1, n2);\r\n }\r\n }\r\n else if (!optimized) {\r\n // full diff\r\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG);\r\n }\r\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\r\n queuePostRenderEffect(() => {\r\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\r\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\r\n }, parentSuspense);\r\n }\r\n };\r\n // The fast path for blocks.\r\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG) => {\r\n for (let i = 0; i < newChildren.length; i++) {\r\n const oldVNode = oldChildren[i];\r\n const newVNode = newChildren[i];\r\n // Determine the container (parent element) for the patch.\r\n const container = \r\n // - In the case of a Fragment, we need to provide the actual parent\r\n // of the Fragment itself so it can move its children.\r\n oldVNode.type === Fragment ||\r\n // - In the case of different nodes, there is going to be a replacement\r\n // which also requires the correct parent container\r\n !isSameVNodeType(oldVNode, newVNode) ||\r\n // - In the case of a component, it could contain anything.\r\n oldVNode.shapeFlag & 6 /* COMPONENT */ ||\r\n oldVNode.shapeFlag & 64 /* TELEPORT */\r\n ? hostParentNode(oldVNode.el)\r\n : // In other cases, the parent container is not actually used so we\r\n // just pass the block element here to avoid a DOM parentNode call.\r\n fallbackContainer;\r\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, true);\r\n }\r\n };\r\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\r\n if (oldProps !== newProps) {\r\n for (const key in newProps) {\r\n // empty string is not valid prop\r\n if (isReservedProp(key))\r\n continue;\r\n const next = newProps[key];\r\n const prev = oldProps[key];\r\n if (next !== prev ||\r\n (hostForcePatchProp && hostForcePatchProp(el, key))) {\r\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n if (oldProps !== EMPTY_OBJ) {\r\n for (const key in oldProps) {\r\n if (!isReservedProp(key) && !(key in newProps)) {\r\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\r\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\r\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\r\n let { patchFlag, dynamicChildren } = n2;\r\n if (patchFlag > 0) {\r\n optimized = true;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\r\n // HMR updated, force full diff\r\n patchFlag = 0;\r\n optimized = false;\r\n dynamicChildren = null;\r\n }\r\n if (n1 == null) {\r\n hostInsert(fragmentStartAnchor, container, anchor);\r\n hostInsert(fragmentEndAnchor, container, anchor);\r\n // a fragment can only have array children\r\n // since they are either generated by the compiler, or implicitly created\r\n // from arrays.\r\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, optimized);\r\n }\r\n else {\r\n if (patchFlag > 0 &&\r\n patchFlag & 64 /* STABLE_FRAGMENT */ &&\r\n dynamicChildren &&\r\n // #2715 the previous fragment could've been a BAILed one as a result\r\n // of renderSlot() with no valid children\r\n n1.dynamicChildren) {\r\n // a stable fragment (template root or