diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index e4d9041a..00145525 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e21b16d6..727c63de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -85,6 +85,10 @@
android:name="com.xiaoyv.bangumi.ui.feature.user.UserActivity"
android:configChanges="orientation|keyboard|screenSize"
android:exported="false" />
+
\ No newline at end of file
diff --git a/app/src/main/assets/h5/assets/BlogPostView-OrFRmmMq.js b/app/src/main/assets/h5/assets/BlogPostView-ftvsLkAw.js
similarity index 77%
rename from app/src/main/assets/h5/assets/BlogPostView-OrFRmmMq.js
rename to app/src/main/assets/h5/assets/BlogPostView-ftvsLkAw.js
index 1e93a786..2c5b2856 100644
--- a/app/src/main/assets/h5/assets/BlogPostView-OrFRmmMq.js
+++ b/app/src/main/assets/h5/assets/BlogPostView-ftvsLkAw.js
@@ -1 +1 @@
-import{d as C,r as k,o as N,c as r,a as o,t as i,g as u,v as p,h as m,w as v,F as B,b as V,e as A,f as c,p as x,i as y,j as E,_ as R}from"./index-rKUtB4UX.js";const n=d=>(x("data-v-a6481913"),d=d(),y(),d),S={key:0,class:"blog-post"},P={class:"blog-post-title"},U={class:"blog-post-info"},z={class:"blog-post-author"},J={class:"blog-post-time"},I={class:"blog-post-form"},M=n(()=>o("div",{class:"title"},"标题",-1)),O=n(()=>o("div",{class:"title"},[E("正文内容"),o("span",{class:"sub-tip"},"支持BBCode")],-1)),$=n(()=>o("div",{class:"title"},"标签",-1)),j=n(()=>o("div",{class:"title"},"隐私设置",-1)),D={class:"blog-post-ratio"},F=n(()=>o("div",{class:"title"},"关联",-1)),H={key:0,class:"blog-post-relative"},L={class:"blog-post-relative-subject"},Q={class:"tip"},T=["onClick"],G=["src"],K={class:"title"},q=C({__name:"BlogPostView",setup(d){const s=k({}),h={setPostInfo:t=>{t.related=w(t.related),t.filled=!0,t.userName.length===0&&(t.userName="未登录"),s.value=t},addRelated:t=>{if(t.id==null||t.id.length===0)return;const e=s.value,l=e.related||[];for(let a=0;aJSON.stringify(s.value)},g=t=>{const e=s.value;e.isPublic=t,s.value=e},f=t=>{const e=t.target;e.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/wcAAwAB/9+p2gAAAABJRU5ErkJggg=="},b=t=>{window.android&&window.android.onClickRelated(JSON.stringify(t),t.empty)},_=t=>{let e=0;return t.forEach(l=>{(l.id||"").length>0&&e++}),e},w=t=>(_(t)==0&&t.push({titleNative:"添加关联",cover:"",empty:!0}),t);return N(()=>{window.blogPost=h,window.mounted=!0}),(t,e)=>s.value.filled===!0?(c(),r("div",S,[o("div",P,i(s.value.pageName||"发表内容"),1),o("div",U,[o("div",z,i(s.value.userName),1),o("div",J,i(s.value.time),1)]),o("div",I,[M,u(o("input",{name:"title",type:"text",class:"input",placeholder:"请输入标题","onUpdate:modelValue":e[0]||(e[0]=l=>s.value.title=l)},null,512),[[p,s.value.title]]),O,u(o("textarea",{name:"content",class:"textarea",rows:"8",placeholder:"请输入内容","onUpdate:modelValue":e[1]||(e[1]=l=>s.value.content=l)},null,512),[[p,s.value.content]]),$,u(o("input",{name:"tags",type:"text",class:"input",placeholder:"请输入标签,多个空格分割","onUpdate:modelValue":e[2]||(e[2]=l=>s.value.tags=l)},null,512),[[p,s.value.tags]]),j,o("div",D,[o("div",{class:m(["ratio",{selected:s.value.isPublic}]),onClick:e[3]||(e[3]=v(l=>g(!0),["stop"]))},"公开",2),o("div",{class:m(["ratio",{selected:!s.value.isPublic}]),onClick:e[4]||(e[4]=v(l=>g(!1),["stop"]))},"仅好友可见",2)]),F]),(s.value.related||[]).length>0?(c(),r("div",H,[o("div",L,[o("div",Q,"关联的条目 "+i(_(s.value.related))+" 个",1),(c(!0),r(B,null,V(s.value.related,l=>(c(),r("div",{class:"relative",onClick:v(a=>b(l),["stop"])},[o("img",{src:l.cover,alt:"img",onError:e[5]||(e[5]=a=>f(a))},null,40,G),o("div",K,"# "+i(l.titleNative),1)],8,T))),256))])])):A("",!0)])):A("",!0)}}),X=R(q,[["__scopeId","data-v-a6481913"]]);export{X as default};
+import{d as C,r as k,o as N,c as r,a as o,t as a,g as u,v as p,h as m,w as v,F as B,b as V,e as A,f as c,p as x,i as y,j as E,_ as R}from"./index-d9vlfaLW.js";const n=d=>(x("data-v-e900ccf0"),d=d(),y(),d),S={key:0,class:"blog-post"},P={class:"blog-post-title"},U={class:"blog-post-info"},z={class:"blog-post-author"},J={class:"blog-post-time"},I={class:"blog-post-form"},M=n(()=>o("div",{class:"title"},"标题",-1)),O=n(()=>o("div",{class:"title"},[E("正文内容"),o("span",{class:"sub-tip"},"支持BBCode")],-1)),$=n(()=>o("div",{class:"title"},"标签",-1)),j=n(()=>o("div",{class:"title"},"隐私设置",-1)),D={class:"blog-post-ratio"},F=n(()=>o("div",{class:"title"},"关联",-1)),H={key:0,class:"blog-post-relative"},L={class:"blog-post-relative-subject"},Q={class:"tip"},T=["onClick"],G=["src"],K={class:"title"},q=C({__name:"BlogPostView",setup(d){const s=k({}),h={setPostInfo:t=>{t.related=w(t.related),t.filled=!0,t.userName.length===0&&(t.userName="未登录"),s.value=t},addRelated:t=>{if(t.id==null||t.id.length===0)return;const e=s.value,l=e.related||[];for(let i=0;iJSON.stringify(s.value)},g=t=>{const e=s.value;e.isPublic=t,s.value=e},f=t=>{const e=t.target;e.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/wcAAwAB/9+p2gAAAABJRU5ErkJggg=="},b=t=>{window.android&&window.android.onClickRelated(JSON.stringify(t),t.empty)},_=t=>{let e=0;return t.forEach(l=>{(l.id||"").length>0&&e++}),e},w=t=>(_(t)==0&&t.push({titleNative:"添加关联",cover:"",empty:!0}),t);return N(()=>{window.blogPost=h,window.mounted=!0}),(t,e)=>s.value.filled===!0?(c(),r("div",S,[o("div",P,a(s.value.pageName||"发表内容"),1),o("div",U,[o("div",z,a(s.value.userName),1),o("div",J,a(s.value.time),1)]),o("div",I,[M,u(o("input",{name:"title",type:"text",class:"input",placeholder:"请输入标题","onUpdate:modelValue":e[0]||(e[0]=l=>s.value.title=l)},null,512),[[p,s.value.title]]),O,u(o("textarea",{name:"content",class:"textarea",rows:"8",placeholder:"请输入内容","onUpdate:modelValue":e[1]||(e[1]=l=>s.value.content=l)},null,512),[[p,s.value.content]]),$,u(o("input",{name:"tags",type:"text",class:"input",placeholder:"请输入标签,多个空格分割","onUpdate:modelValue":e[2]||(e[2]=l=>s.value.tags=l)},null,512),[[p,s.value.tags]]),j,o("div",D,[o("div",{class:m(["ratio",{selected:s.value.isPublic}]),onClick:e[3]||(e[3]=v(l=>g(!0),["stop"]))},"公开",2),o("div",{class:m(["ratio",{selected:!s.value.isPublic}]),onClick:e[4]||(e[4]=v(l=>g(!1),["stop"]))},"仅好友可见",2)]),F]),(s.value.related||[]).length>0?(c(),r("div",H,[o("div",L,[o("div",Q,"关联的条目 "+a(_(s.value.related))+" 个",1),(c(!0),r(B,null,V(s.value.related,l=>(c(),r("div",{class:"relative",onClick:v(i=>b(l),["stop"])},[o("img",{src:l.cover,alt:"img",onError:e[5]||(e[5]=i=>f(i))},null,40,G),o("div",K,"# "+a(l.titleNative),1)],8,T))),256))])])):A("",!0)])):A("",!0)}}),X=R(q,[["__scopeId","data-v-e900ccf0"]]);export{X as default};
diff --git a/app/src/main/assets/h5/assets/BlogPostView-jIs4DhhU.css b/app/src/main/assets/h5/assets/BlogPostView-jIs4DhhU.css
deleted file mode 100644
index e833833f..00000000
--- a/app/src/main/assets/h5/assets/BlogPostView-jIs4DhhU.css
+++ /dev/null
@@ -1 +0,0 @@
-.blog-post[data-v-a6481913]{height:100%;width:100%;overflow-x:hidden;overflow-y:scroll;-webkit-user-select:none!important;user-select:none!important;padding-bottom:300px}.blog-post *[data-v-a6481913]{-webkit-user-select:none!important;user-select:none!important}.blog-post img[data-v-a6481913]{display:block;max-width:100%;height:auto;border-radius:6px;margin:12px 0;border:1px rgba(204,204,204,.4980392157) solid!important}.blog-post img[smileid][data-v-a6481913]{margin:4px 6px 4px 0!important;vertical-align:bottom!important;border:1px solid #ff80ab!important;padding:1px!important;height:20px!important;width:20px!important;min-width:unset!important;border-radius:4px!important}.blog-post .sub-tip[data-v-a6481913]{padding:12px;opacity:.5;font-size:75%;color:#00bfff}.blog-post-title[data-v-a6481913]{font-weight:800!important;font-size:20px;margin:12px 16px;display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;-webkit-box-orient:vertical;text-overflow:ellipsis}.blog-post-info[data-v-a6481913]{display:flex;flex-direction:row;align-items:center;font-size:15px;margin-left:16px}.blog-post-info .blog-post-author[data-v-a6481913]{color:#00bfff;margin-right:6px}.blog-post-info .blog-post-time[data-v-a6481913]{color:#888}.blog-post-form[data-v-a6481913]{width:100%;padding:0 16px;margin-top:16px}.blog-post-form .title[data-v-a6481913]{font-size:18px;font-weight:700;margin-bottom:16px;margin-top:6px}.blog-post-form .input[data-v-a6481913]{width:100%;padding:8px;font-size:16px;border:none!important;outline:none!important;background-color:#cccccc3f;border-radius:6px;margin-bottom:12px}.blog-post-form .textarea[data-v-a6481913]{width:100%;padding:8px;font-size:16px;border:none!important;outline:none!important;background-color:#cccccc3f;border-radius:6px;margin-bottom:12px;resize:none}.blog-post-relative[data-v-a6481913]{width:100%}.blog-post-relative .blog-post-relative-subject[data-v-a6481913]{margin:0 16px 16px;padding:12px;border-radius:6px;background:rgba(204,204,204,.2470588235)}.blog-post-relative .blog-post-relative-subject .relative[data-v-a6481913]{width:100%;display:flex;flex-flow:row nowrap;align-items:center;margin-top:6px}.blog-post-relative .blog-post-relative-subject img[data-v-a6481913]{margin:6px 0;height:44px;width:44px;border-radius:6px;background:rgba(204,204,204,.4980392157)}.blog-post-relative .blog-post-relative-subject .title[data-v-a6481913]{width:0;flex:1;padding:2px 6px 4px 12px;color:#00bfff}.blog-post-ratio[data-v-a6481913]{display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:16px}.blog-post-ratio .ratio[data-v-a6481913]{font-size:14px;border-radius:6px;background:rgba(204,204,204,.4980392157);padding:6px;margin-right:12px}.blog-post-ratio .ratio.selected[data-v-a6481913]{color:#fff;background:deepskyblue}
diff --git a/app/src/main/assets/h5/assets/BlogPostView-zhMUHJSq.css b/app/src/main/assets/h5/assets/BlogPostView-zhMUHJSq.css
new file mode 100644
index 00000000..304f460a
--- /dev/null
+++ b/app/src/main/assets/h5/assets/BlogPostView-zhMUHJSq.css
@@ -0,0 +1 @@
+.blog-post[data-v-e900ccf0]{height:100%;width:100%;overflow-x:hidden;overflow-y:scroll;-webkit-user-select:none!important;user-select:none!important;padding-bottom:300px}.blog-post *[data-v-e900ccf0]{-webkit-user-select:none!important;user-select:none!important}.blog-post .sub-tip[data-v-e900ccf0]{padding:12px;opacity:.5;font-size:75%;color:#00bfff}.blog-post-title[data-v-e900ccf0]{font-weight:800!important;font-size:20px;margin:12px 16px;display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;-webkit-box-orient:vertical;text-overflow:ellipsis}.blog-post-info[data-v-e900ccf0]{display:flex;flex-direction:row;align-items:center;font-size:15px;margin-left:16px}.blog-post-info .blog-post-author[data-v-e900ccf0]{color:#00bfff;margin-right:6px}.blog-post-info .blog-post-time[data-v-e900ccf0]{color:#888}.blog-post-form[data-v-e900ccf0]{width:100%;padding:0 16px;margin-top:16px}.blog-post-form .title[data-v-e900ccf0]{font-size:18px;font-weight:700;margin-bottom:16px;margin-top:6px}.blog-post-form .input[data-v-e900ccf0]{width:100%;padding:8px;font-size:16px;border:none!important;outline:none!important;background-color:#cccccc3f;border-radius:6px;margin-bottom:12px}.blog-post-form .textarea[data-v-e900ccf0]{width:100%;padding:8px;font-size:16px;border:none!important;outline:none!important;background-color:#cccccc3f;border-radius:6px;margin-bottom:12px;resize:none}.blog-post-relative[data-v-e900ccf0]{width:100%}.blog-post-relative .blog-post-relative-subject[data-v-e900ccf0]{margin:0 16px 16px;padding:12px;border-radius:6px;background:rgba(204,204,204,.2470588235)}.blog-post-relative .blog-post-relative-subject .relative[data-v-e900ccf0]{width:100%;display:flex;flex-flow:row nowrap;align-items:center;margin-top:6px}.blog-post-relative .blog-post-relative-subject img[data-v-e900ccf0]{margin:6px 0;height:44px;width:44px;border-radius:6px;background:rgba(204,204,204,.4980392157)}.blog-post-relative .blog-post-relative-subject .title[data-v-e900ccf0]{width:0;flex:1;padding:2px 6px 4px 12px;color:#00bfff}.blog-post-ratio[data-v-e900ccf0]{display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:16px}.blog-post-ratio .ratio[data-v-e900ccf0]{font-size:14px;border-radius:6px;background:rgba(204,204,204,.4980392157);padding:6px;margin-right:12px}.blog-post-ratio .ratio.selected[data-v-e900ccf0]{color:#fff;background:deepskyblue}
diff --git a/app/src/main/assets/h5/assets/BlogView-m7VaFbfD.js b/app/src/main/assets/h5/assets/BlogView-wYkXqj2w.js
similarity index 98%
rename from app/src/main/assets/h5/assets/BlogView-m7VaFbfD.js
rename to app/src/main/assets/h5/assets/BlogView-wYkXqj2w.js
index 8cb06124..d27adf57 100644
--- a/app/src/main/assets/h5/assets/BlogView-m7VaFbfD.js
+++ b/app/src/main/assets/h5/assets/BlogView-wYkXqj2w.js
@@ -1 +1 @@
-import{d as j,r as I,o as E,c as n,a as t,t as a,F as f,b as C,e as p,w as r,n as U,f as l}from"./index-rKUtB4UX.js";import{c as k}from"./common-lLZLEzU9.js";const A={class:"blog",id:"blog"},D={class:"blog-title"},F={class:"blog-info"},O={class:"blog-author"},Q={class:"blog-time"},q={key:0,class:"blog-relative"},z={class:"blog-relative-subject"},G={class:"tip"},K=["onClick"],P=["src"],W={class:"title"},X=["innerHTML"],Y={key:1,class:"blog-tag"},Z=t("div",{class:"tip"},"标签:",-1),tt={class:"blog-tag-item"},et={key:2,class:"divider"},st={key:3,class:"blog-comment"},ot={class:"blog-comment-title"},nt=t("div",{class:"title"},"精选留言",-1),lt=t("div",{style:{flex:"1"}},null,-1),it={class:"blog-comment-item"},ct=["src","onClick"],at={class:"comment-content"},dt=["onClick"],rt=["onClick"],_t={class:"time"},vt=["innerHTML","onClick"],ut=t("div",{style:{height:"12px"}},null,-1),gt={class:"blog-comment-item"},ht=["src","onClick"],pt=["onClick"],kt={class:"info"},wt=["onClick"],yt={class:"time"},ft=["innerHTML"],Ct={key:4,class:"blog-space"},Rt=j({__name:"BlogView",setup(bt){const s=I(),N=I(),J={loadBlogDetail:async i=>{s.value=i,await U();const d=N.value;k.injectImageClick(d)}},x=i=>{const d=(i||"").trim(),c=" ",_=c+d.replace(/ /g," ").trim().replace(/(\r\n|\n|\r)\s+/g,"$1").replace(/(\r\n|\n|\r)/g,`$1${c}`);return console.log(_),_},b=(i,d,c)=>{const _=i.target;if(k.injectHandleItemClick(_))return;k.scrollIntoView(i,document.getElementById("blog"),c==null);const v=(c==null?void 0:c.replyJs)||"",y=d.replyJs||"",g=v.length>0,h=g?v:y,u=c||d;if(window.android){if(h.length>0){g&&(u.replyQuote=k.handleQuote(u.userName,u.replyContent)),window.android.onReplyUser(v.length>0?v:h,JSON.stringify(u));return}window.android.onNeedLogin()}},S=i=>{k.scrollIntoView(i,document.getElementById("blog"),!0),window.android&&window.android.onReplyNew()},V=i=>{window.android&&window.android.onClickRelated(JSON.stringify(i))},w=i=>{window.android&&window.android.onClickUser(i.userId||"")};return E(()=>{window.blog=J,window.mounted=!0}),(i,d)=>{var c,_,v,y,g,h,u,R,M,H,L,T,$,B;return l(),n("div",A,[t("div",D,a((c=s.value)==null?void 0:c.title),1),t("div",F,[t("div",O,a((_=s.value)==null?void 0:_.userName),1),t("div",Q,a((v=s.value)==null?void 0:v.time),1)]),(((y=s.value)==null?void 0:y.related)||[]).length>0?(l(),n("div",q,[t("div",z,[t("div",G,"关联的条目 "+a((h=(g=s.value)==null?void 0:g.related)==null?void 0:h.length)+" 个",1),(l(!0),n(f,null,C(((u=s.value)==null?void 0:u.related)||[],e=>(l(),n("div",{class:"relative",onClick:r(o=>V(e),["stop"])},[t("img",{src:e.cover,alt:"img"},null,8,P),t("div",W,"# "+a(e.titleNative),1)],8,K))),256))])])):p("",!0),t("div",{class:"blog-content",ref_key:"blogContentRef",ref:N,innerHTML:x((R=s.value)==null?void 0:R.content)},null,8,X),(((M=s.value)==null?void 0:M.tags)||[]).length>0?(l(),n("div",Y,[Z,(l(!0),n(f,null,C(((H=s.value)==null?void 0:H.tags)||[],e=>(l(),n("div",tt,a(e.title),1))),256))])):p("",!0),(L=s.value)!=null&&L.content?(l(),n("hr",et)):p("",!0),(T=s.value)!=null&&T.content?(l(),n("div",st,[t("div",ot,[nt,lt,t("div",{class:"write",onClick:d[0]||(d[0]=r(e=>S(e),["stop"]))},"写留言")]),(l(!0),n(f,null,C((($=s.value)==null?void 0:$.comments)||[],e=>(l(),n("div",it,[t("img",{class:"avatar",src:e.userAvatar,alt:"img",onClick:r(o=>w(e),["stop"])},null,8,ct),t("div",at,[t("div",{class:"info",onClick:r(o=>b(o,e,null),["stop"])},[t("div",{class:"user-name",onClick:r(o=>w(e),["stop"])},a(e.userName),9,rt),t("div",_t,a(e.time),1)],8,dt),t("div",{class:"blog-html",innerHTML:e.replyContent,onClick:r(o=>b(o,e,null),["stop"])},null,8,vt),ut,(l(!0),n(f,null,C(e.topicSubReply||[],o=>(l(),n("div",gt,[t("img",{class:"avatar sub",src:o.userAvatar,alt:"img",onClick:r(m=>w(o),["stop"])},null,8,ht),t("div",{class:"comment-content",onClick:r(m=>b(m,e,o),["stop"])},[t("div",kt,[t("div",{class:"user-name",onClick:r(m=>w(o),["stop"])},a(o.userName),9,wt),t("div",yt,a(o.time),1)]),t("div",{class:"blog-html",innerHTML:o.replyContent},null,8,ft)],8,pt)]))),256))])]))),256))])):p("",!0),(B=s.value)!=null&&B.content?(l(),n("div",Ct," 我是有底线的 ")):p("",!0)])}}});export{Rt as default};
+import{d as j,r as I,o as E,c as n,a as t,t as a,F as f,b as C,e as p,w as r,n as U,f as l}from"./index-d9vlfaLW.js";import{c as k}from"./common-lLZLEzU9.js";const A={class:"blog",id:"blog"},D={class:"blog-title"},F={class:"blog-info"},O={class:"blog-author"},Q={class:"blog-time"},q={key:0,class:"blog-relative"},z={class:"blog-relative-subject"},G={class:"tip"},K=["onClick"],P=["src"],W={class:"title"},X=["innerHTML"],Y={key:1,class:"blog-tag"},Z=t("div",{class:"tip"},"标签:",-1),tt={class:"blog-tag-item"},et={key:2,class:"divider"},st={key:3,class:"blog-comment"},ot={class:"blog-comment-title"},nt=t("div",{class:"title"},"精选留言",-1),lt=t("div",{style:{flex:"1"}},null,-1),it={class:"blog-comment-item"},ct=["src","onClick"],at={class:"comment-content"},dt=["onClick"],rt=["onClick"],_t={class:"time"},vt=["innerHTML","onClick"],ut=t("div",{style:{height:"12px"}},null,-1),gt={class:"blog-comment-item"},ht=["src","onClick"],pt=["onClick"],kt={class:"info"},wt=["onClick"],yt={class:"time"},ft=["innerHTML"],Ct={key:4,class:"blog-space"},Rt=j({__name:"BlogView",setup(bt){const s=I(),N=I(),J={loadBlogDetail:async i=>{s.value=i,await U();const d=N.value;k.injectImageClick(d)}},x=i=>{const d=(i||"").trim(),c=" ",_=c+d.replace(/ /g," ").trim().replace(/(\r\n|\n|\r)\s+/g,"$1").replace(/(\r\n|\n|\r)/g,`$1${c}`);return console.log(_),_},b=(i,d,c)=>{const _=i.target;if(k.injectHandleItemClick(_))return;k.scrollIntoView(i,document.getElementById("blog"),c==null);const v=(c==null?void 0:c.replyJs)||"",y=d.replyJs||"",g=v.length>0,h=g?v:y,u=c||d;if(window.android){if(h.length>0){g&&(u.replyQuote=k.handleQuote(u.userName,u.replyContent)),window.android.onReplyUser(v.length>0?v:h,JSON.stringify(u));return}window.android.onNeedLogin()}},S=i=>{k.scrollIntoView(i,document.getElementById("blog"),!0),window.android&&window.android.onReplyNew()},V=i=>{window.android&&window.android.onClickRelated(JSON.stringify(i))},w=i=>{window.android&&window.android.onClickUser(i.userId||"")};return E(()=>{window.blog=J,window.mounted=!0}),(i,d)=>{var c,_,v,y,g,h,u,R,M,H,L,T,$,B;return l(),n("div",A,[t("div",D,a((c=s.value)==null?void 0:c.title),1),t("div",F,[t("div",O,a((_=s.value)==null?void 0:_.userName),1),t("div",Q,a((v=s.value)==null?void 0:v.time),1)]),(((y=s.value)==null?void 0:y.related)||[]).length>0?(l(),n("div",q,[t("div",z,[t("div",G,"关联的条目 "+a((h=(g=s.value)==null?void 0:g.related)==null?void 0:h.length)+" 个",1),(l(!0),n(f,null,C(((u=s.value)==null?void 0:u.related)||[],e=>(l(),n("div",{class:"relative",onClick:r(o=>V(e),["stop"])},[t("img",{src:e.cover,alt:"img"},null,8,P),t("div",W,"# "+a(e.titleNative),1)],8,K))),256))])])):p("",!0),t("div",{class:"blog-content",ref_key:"blogContentRef",ref:N,innerHTML:x((R=s.value)==null?void 0:R.content)},null,8,X),(((M=s.value)==null?void 0:M.tags)||[]).length>0?(l(),n("div",Y,[Z,(l(!0),n(f,null,C(((H=s.value)==null?void 0:H.tags)||[],e=>(l(),n("div",tt,a(e.title),1))),256))])):p("",!0),(L=s.value)!=null&&L.content?(l(),n("hr",et)):p("",!0),(T=s.value)!=null&&T.content?(l(),n("div",st,[t("div",ot,[nt,lt,t("div",{class:"write",onClick:d[0]||(d[0]=r(e=>S(e),["stop"]))},"写留言")]),(l(!0),n(f,null,C((($=s.value)==null?void 0:$.comments)||[],e=>(l(),n("div",it,[t("img",{class:"avatar",src:e.userAvatar,alt:"img",onClick:r(o=>w(e),["stop"])},null,8,ct),t("div",at,[t("div",{class:"info",onClick:r(o=>b(o,e,null),["stop"])},[t("div",{class:"user-name",onClick:r(o=>w(e),["stop"])},a(e.userName),9,rt),t("div",_t,a(e.time),1)],8,dt),t("div",{class:"blog-html",innerHTML:e.replyContent,onClick:r(o=>b(o,e,null),["stop"])},null,8,vt),ut,(l(!0),n(f,null,C(e.topicSubReply||[],o=>(l(),n("div",gt,[t("img",{class:"avatar sub",src:o.userAvatar,alt:"img",onClick:r(m=>w(o),["stop"])},null,8,ht),t("div",{class:"comment-content",onClick:r(m=>b(m,e,o),["stop"])},[t("div",kt,[t("div",{class:"user-name",onClick:r(m=>w(o),["stop"])},a(o.userName),9,wt),t("div",yt,a(o.time),1)]),t("div",{class:"blog-html",innerHTML:o.replyContent},null,8,ft)],8,pt)]))),256))])]))),256))])):p("",!0),(B=s.value)!=null&&B.content?(l(),n("div",Ct," 我是有底线的 ")):p("",!0)])}}});export{Rt as default};
diff --git a/app/src/main/assets/h5/assets/IndexView-dxAMKnLj.js b/app/src/main/assets/h5/assets/IndexView-0Igj9hiw.js
similarity index 50%
rename from app/src/main/assets/h5/assets/IndexView-dxAMKnLj.js
rename to app/src/main/assets/h5/assets/IndexView-0Igj9hiw.js
index f6256c58..c522f2b0 100644
--- a/app/src/main/assets/h5/assets/IndexView-dxAMKnLj.js
+++ b/app/src/main/assets/h5/assets/IndexView-0Igj9hiw.js
@@ -1 +1 @@
-import{_ as e}from"./index-rKUtB4UX.js";const n={};function r(c,t){return null}const o=e(n,[["render",r]]);export{o as default};
+import{_ as e}from"./index-d9vlfaLW.js";const n={};function r(c,t){return null}const o=e(n,[["render",r]]);export{o as default};
diff --git a/app/src/main/assets/h5/assets/SignView-AL40_vmq.css b/app/src/main/assets/h5/assets/SignView-AL40_vmq.css
new file mode 100644
index 00000000..a563c194
--- /dev/null
+++ b/app/src/main/assets/h5/assets/SignView-AL40_vmq.css
@@ -0,0 +1 @@
+.sign[data-v-adb61f4d]{height:100%;width:100%;overflow-x:hidden;overflow-y:scroll;color:#333}.sign .sign-html[data-v-adb61f4d]{padding:16px}
diff --git a/app/src/main/assets/h5/assets/SignView-_SZy8b_O.js b/app/src/main/assets/h5/assets/SignView-_SZy8b_O.js
new file mode 100644
index 00000000..657e8e4d
--- /dev/null
+++ b/app/src/main/assets/h5/assets/SignView-_SZy8b_O.js
@@ -0,0 +1 @@
+import{d as o,r as t,o as a,c as i,a as c,f as d,_ as r}from"./index-d9vlfaLW.js";const _={class:"sign"},l=["innerHTML"],u=o({__name:"SignView",setup(g){const e=t(""),s={setSign:n=>{e.value=n.sign}};return a(()=>{window.sign=s,window.mounted=!0}),(n,p)=>(d(),i("div",_,[c("div",{class:"sign-html",innerHTML:e.value},null,8,l)]))}}),m=r(u,[["__scopeId","data-v-adb61f4d"]]);export{m as default};
diff --git a/app/src/main/assets/h5/assets/TopicView-IGTEuiX4.js b/app/src/main/assets/h5/assets/TopicView-IGTEuiX4.js
new file mode 100644
index 00000000..0402ed75
--- /dev/null
+++ b/app/src/main/assets/h5/assets/TopicView-IGTEuiX4.js
@@ -0,0 +1 @@
+import{d as H,r as f,o as L,c as d,a as t,t as a,w as c,e as h,F as g,b as C,n as $,f as r}from"./index-d9vlfaLW.js";import{c as _}from"./common-lLZLEzU9.js";const I={key:0,class:"topic",id:"topic"},J={class:"topic-title"},x={class:"topic-info"},B={class:"topic-author"},S={class:"topic-time"},V={class:"topic-relative"},j={class:"topic-relative-subject"},A=t("div",{class:"tip"},"关联的讨论",-1),E=["src"],U={class:"title"},D=["innerHTML"],F={key:0,class:"divider"},O={class:"topic-comment"},Q={class:"topic-comment-title"},q=t("div",{class:"title"},"精选留言",-1),z=t("div",{style:{flex:"1"}},null,-1),G={class:"topic-comment-item"},K=["src","onClick"],P={class:"comment-content"},W=["onClick"],X=["onClick"],Y={class:"time"},Z=["innerHTML","onClick"],b=t("div",{style:{height:"12px"}},null,-1),tt={class:"topic-comment-item"},et=["src","onClick"],it=["onClick"],ot={class:"info"},st=["onClick"],nt={class:"time"},ct=["innerHTML"],lt={key:1,class:"topic-space"},_t=H({__name:"TopicView",setup(at){const o=f({}),k=f(),m={loadTopicDetail:async s=>{o.value=s,await $();const n=k.value;_.injectImageClick(n)}},N=s=>{const n=(s||"").trim(),e=" ",i=e+n.replace(/ /g," ").trim().replace(/(\r\n|\n|\r)\s+/g,"$1").replace(/(\r\n|\n|\r)/g,`$1${e}`);return console.log(i),i},v=(s,n,e)=>{const i=s.target;if(_.injectHandleItemClick(i))return;_.scrollIntoView(s,document.getElementById("topic"),e==null);const l=(e==null?void 0:e.replyJs)||"",R=n.replyJs||"",w=l.length>0,y=w?l:R,u=e||n;if(window.android){if(y.length>0){w&&(u.replyQuote=_.handleQuote(u.userName,u.replyContent)),window.android.onReplyUser(l.length>0?l:y,JSON.stringify(e||n));return}window.android.onNeedLogin()}},T=s=>{_.scrollIntoView(s,document.getElementById("topic"),!0),window.android&&window.android.onReplyNew()},M=s=>{window.android&&window.android.onClickRelated(JSON.stringify(s))},p=s=>{window.android&&window.android.onClickUser(s.userId||"")};return L(()=>{window.topic=m,window.mounted=!0}),(s,n)=>o.value.content||o.value.comments?(r(),d("div",I,[t("div",J,a(o.value.title),1),t("div",x,[t("div",B,a(o.value.userName),1),t("div",S,a(o.value.time),1)]),t("div",V,[t("div",j,[A,t("div",{class:"relative",onClick:n[0]||(n[0]=c(e=>M(o.value),["stop"]))},[t("img",{src:o.value.headerAvatar,alt:"img"},null,8,E),t("div",U,"# "+a(o.value.headerName),1)])])]),t("div",{class:"topic-content",ref_key:"topicContentRef",ref:k,innerHTML:N(o.value.content)},null,8,D),o.value.content?(r(),d("hr",F)):h("",!0),t("div",O,[t("div",Q,[q,z,t("div",{class:"write",onClick:n[1]||(n[1]=c(e=>T(e),["stop"]))},"写留言")]),(r(!0),d(g,null,C(o.value.comments||[],e=>(r(),d("div",G,[t("img",{class:"avatar",src:e.userAvatar,alt:"img",onClick:c(i=>p(e),["stop"])},null,8,K),t("div",P,[t("div",{class:"info",onClick:c(i=>v(i,e,null),["stop"])},[t("div",{class:"user-name",onClick:c(i=>p(e),["stop"])},a(e.userName),9,X),t("div",Y,a(e.time),1)],8,W),t("div",{class:"topic-html",innerHTML:e.replyContent,onClick:c(i=>v(i,e,null),["stop"])},null,8,Z),b,(r(!0),d(g,null,C(e.topicSubReply||[],i=>(r(),d("div",tt,[t("img",{class:"avatar sub",src:i.userAvatar,alt:"img",onClick:c(l=>p(i),["stop"])},null,8,et),t("div",{class:"comment-content",onClick:c(l=>v(l,e,i),["stop"])},[t("div",ot,[t("div",{class:"user-name",onClick:c(l=>p(i),["stop"])},a(i.userName),9,st),t("div",nt,a(i.time),1)]),t("div",{class:"topic-html",innerHTML:i.replyContent},null,8,ct)],8,it)]))),256))])]))),256))]),o.value.content?(r(),d("div",lt," 我是有底线的 ")):h("",!0)])):h("",!0)}});export{_t as default};
diff --git a/app/src/main/assets/h5/assets/TopicView-d3GpFRy7.js b/app/src/main/assets/h5/assets/TopicView-d3GpFRy7.js
deleted file mode 100644
index a285cc7b..00000000
--- a/app/src/main/assets/h5/assets/TopicView-d3GpFRy7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as H,r as f,o as L,c as a,a as t,t as d,w as c,e as v,F as g,b as C,n as $,f as r}from"./index-rKUtB4UX.js";import{c as _}from"./common-lLZLEzU9.js";const I={key:0,class:"topic",id:"topic"},J={class:"topic-title"},x={class:"topic-info"},B={class:"topic-author"},S={class:"topic-time"},V={class:"topic-relative"},j={class:"topic-relative-subject"},A=t("div",{class:"tip"},"关联的讨论",-1),E=["src"],U={class:"title"},D=["innerHTML"],F={key:0,class:"divider"},O={key:1,class:"topic-comment"},Q={class:"topic-comment-title"},q=t("div",{class:"title"},"精选留言",-1),z=t("div",{style:{flex:"1"}},null,-1),G={class:"topic-comment-item"},K=["src","onClick"],P={class:"comment-content"},W=["onClick"],X=["onClick"],Y={class:"time"},Z=["innerHTML","onClick"],b=t("div",{style:{height:"12px"}},null,-1),tt={class:"topic-comment-item"},et=["src","onClick"],ot=["onClick"],it={class:"info"},st=["onClick"],nt={class:"time"},ct=["innerHTML"],lt={key:2,class:"topic-space"},_t=H({__name:"TopicView",setup(at){const i=f({}),k=f(),m={loadTopicDetail:async s=>{i.value=s,await $();const n=k.value;_.injectImageClick(n)}},N=s=>{const n=(s||"").trim(),e=" ",o=e+n.replace(/ /g," ").trim().replace(/(\r\n|\n|\r)\s+/g,"$1").replace(/(\r\n|\n|\r)/g,`$1${e}`);return console.log(o),o},u=(s,n,e)=>{const o=s.target;if(_.injectHandleItemClick(o))return;_.scrollIntoView(s,document.getElementById("topic"),e==null);const l=(e==null?void 0:e.replyJs)||"",R=n.replyJs||"",w=l.length>0,y=w?l:R,h=e||n;if(window.android){if(y.length>0){w&&(h.replyQuote=_.handleQuote(h.userName,h.replyContent)),window.android.onReplyUser(l.length>0?l:y,JSON.stringify(e||n));return}window.android.onNeedLogin()}},T=s=>{_.scrollIntoView(s,document.getElementById("topic"),!0),window.android&&window.android.onReplyNew()},M=s=>{window.android&&window.android.onClickRelated(JSON.stringify(s))},p=s=>{window.android&&window.android.onClickUser(s.userId||"")};return L(()=>{window.topic=m,window.mounted=!0}),(s,n)=>i.value.content||i.value.comments?(r(),a("div",I,[t("div",J,d(i.value.title),1),t("div",x,[t("div",B,d(i.value.userName),1),t("div",S,d(i.value.time),1)]),t("div",V,[t("div",j,[A,t("div",{class:"relative",onClick:n[0]||(n[0]=c(e=>M(i.value),["stop"]))},[t("img",{src:i.value.headerAvatar,alt:"img"},null,8,E),t("div",U,"# "+d(i.value.headerName),1)])])]),t("div",{class:"topic-content",ref_key:"topicContentRef",ref:k,innerHTML:N(i.value.content)},null,8,D),i.value.content?(r(),a("hr",F)):v("",!0),i.value.content?(r(),a("div",O,[t("div",Q,[q,z,t("div",{class:"write",onClick:n[1]||(n[1]=c(e=>T(e),["stop"]))},"写留言")]),(r(!0),a(g,null,C(i.value.comments||[],e=>(r(),a("div",G,[t("img",{class:"avatar",src:e.userAvatar,alt:"img",onClick:c(o=>p(e),["stop"])},null,8,K),t("div",P,[t("div",{class:"info",onClick:c(o=>u(o,e,null),["stop"])},[t("div",{class:"user-name",onClick:c(o=>p(e),["stop"])},d(e.userName),9,X),t("div",Y,d(e.time),1)],8,W),t("div",{class:"topic-html",innerHTML:e.replyContent,onClick:c(o=>u(o,e,null),["stop"])},null,8,Z),b,(r(!0),a(g,null,C(e.topicSubReply||[],o=>(r(),a("div",tt,[t("img",{class:"avatar sub",src:o.userAvatar,alt:"img",onClick:c(l=>p(o),["stop"])},null,8,et),t("div",{class:"comment-content",onClick:c(l=>u(l,e,o),["stop"])},[t("div",it,[t("div",{class:"user-name",onClick:c(l=>p(o),["stop"])},d(o.userName),9,st),t("div",nt,d(o.time),1)]),t("div",{class:"topic-html",innerHTML:o.replyContent},null,8,ct)],8,ot)]))),256))])]))),256))])):v("",!0),i.value.content?(r(),a("div",lt," 我是有底线的 ")):v("",!0)])):v("",!0)}});export{_t as default};
diff --git a/app/src/main/assets/h5/assets/index-rKUtB4UX.js b/app/src/main/assets/h5/assets/index-d9vlfaLW.js
similarity index 84%
rename from app/src/main/assets/h5/assets/index-rKUtB4UX.js
rename to app/src/main/assets/h5/assets/index-d9vlfaLW.js
index c5e7c8a3..544527ac 100644
--- a/app/src/main/assets/h5/assets/index-rKUtB4UX.js
+++ b/app/src/main/assets/h5/assets/index-d9vlfaLW.js
@@ -1,11 +1,11 @@
-(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();function Zn(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const J={},ht=[],Ie=()=>{},Oo=()=>!1,Ao=/^on[^a-z]/,cn=e=>Ao.test(e),Gn=e=>e.startsWith("onUpdate:"),se=Object.assign,es=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},To=Object.prototype.hasOwnProperty,U=(e,t)=>To.call(e,t),j=Array.isArray,pt=e=>fn(e)==="[object Map]",_r=e=>fn(e)==="[object Set]",B=e=>typeof e=="function",G=e=>typeof e=="string",un=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",yr=e=>(X(e)||B(e))&&B(e.then)&&B(e.catch),br=Object.prototype.toString,fn=e=>br.call(e),So=e=>fn(e).slice(8,-1),vr=e=>fn(e)==="[object Object]",ts=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Yt=Zn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),an=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Io=/-(\w)/g,Me=an(e=>e.replace(Io,(t,n)=>n?n.toUpperCase():"")),Mo=/\B([A-Z])/g,wt=an(e=>e.replace(Mo,"-$1").toLowerCase()),dn=an(e=>e.charAt(0).toUpperCase()+e.slice(1)),Rn=an(e=>e?`on${dn(e)}`:""),st=(e,t)=>!Object.is(e,t),Jt=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ln=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Es;const jn=()=>Es||(Es=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ns(e){if(j(e)){const t={};for(let n=0;n{if(n){const s=n.split(Fo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ss(e){let t="";if(G(e))t=e;else if(j(e))for(let n=0;nG(e)?e:e==null?"":j(e)||X(e)&&(e.toString===br||!B(e.toString))?JSON.stringify(e,xr,2):String(e),xr=(e,t)=>t&&t.__v_isRef?xr(e,t.value):pt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:_r(t)?{[`Set(${t.size})`]:[...t.values()]}:X(t)&&!j(t)&&!vr(t)?String(t):t;let _e;class Bo{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=_e;try{return _e=this,t()}finally{_e=n}}}on(){_e=this}off(){_e=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},wr=e=>(e.w&Qe)>0,Rr=e=>(e.n&Qe)>0,Do=({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{(d==="length"||!un(d)&&d>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":j(e)?ts(n)&&l.push(i.get("length")):(l.push(i.get(tt)),pt(e)&&l.push(i.get(Bn)));break;case"delete":j(e)||(l.push(i.get(tt)),pt(e)&&l.push(i.get(Bn)));break;case"set":pt(e)&&l.push(i.get(tt));break}if(l.length===1)l[0]&&Kn(l[0]);else{const c=[];for(const a of l)a&&c.push(...a);Kn(rs(c))}}function Kn(e,t){const n=j(e)?e:[...e];for(const s of n)s.computed&&ws(s);for(const s of n)s.computed||ws(s)}function ws(e,t){(e!==ye||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Wo=Zn("__proto__,__v_isRef,__isVue"),Or=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(un)),Rs=zo();function zo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=k(this);for(let o=0,i=this.length;o{e[t]=function(...n){Rt();const s=k(this)[t].apply(this,n);return Pt(),s}}),e}function qo(e){const t=k(this);return de(t,"has",e),t.hasOwnProperty(e)}class Ar{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,s){const r=this._isReadonly,o=this._shallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw"&&s===(r?o?oi:Mr:o?Ir:Sr).get(t))return t;const i=j(t);if(!r){if(i&&U(Rs,n))return Reflect.get(Rs,n,s);if(n==="hasOwnProperty")return qo}const l=Reflect.get(t,n,s);return(un(n)?Or.has(n):Wo(n))||(r||de(t,"get",n),o)?l:le(l)?i&&ts(n)?l:l.value:X(l)?r?Fr(l):pn(l):l}}class Tr extends Ar{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(yt(o)&&le(o)&&!le(s))return!1;if(!this._shallow&&(!nn(s)&&!yt(s)&&(o=k(o),s=k(s)),!j(t)&&le(o)&&!le(s)))return o.value=s,!0;const i=j(t)&&ts(n)?Number(n)e,hn=e=>Reflect.getPrototypeOf(e);function kt(e,t,n=!1,s=!1){e=e.__v_raw;const r=k(e),o=k(t);n||(st(t,o)&&de(r,"get",t),de(r,"get",o));const{has:i}=hn(r),l=s?is:n?us:jt;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));e!==r&&e.get(t)}function Wt(e,t=!1){const n=this.__v_raw,s=k(n),r=k(e);return t||(st(e,r)&&de(s,"has",e),de(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function zt(e,t=!1){return e=e.__v_raw,!t&&de(k(e),"iterate",tt),Reflect.get(e,"size",e)}function Ps(e){e=k(e);const t=k(this);return hn(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function Cs(e,t){t=k(t);const n=k(this),{has:s,get:r}=hn(n);let o=s.call(n,e);o||(e=k(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?st(t,i)&&He(n,"set",e,t):He(n,"add",e,t),this}function Os(e){const t=k(this),{has:n,get:s}=hn(t);let r=n.call(t,e);r||(e=k(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&He(t,"delete",e,void 0),o}function As(){const e=k(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function qt(e,t){return function(s,r){const o=this,i=o.__v_raw,l=k(i),c=t?is:e?us:jt;return!e&&de(l,"iterate",tt),i.forEach((a,d)=>s.call(r,c(a),c(d),o))}}function Vt(e,t,n){return function(...s){const r=this.__v_raw,o=k(r),i=pt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),d=n?is:t?us:jt;return!t&&de(o,"iterate",c?Bn:tt),{next(){const{value:p,done:g}=a.next();return g?{value:p,done:g}:{value:l?[d(p[0]),d(p[1])]:d(p),done:g}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Xo(){const e={get(o){return kt(this,o)},get size(){return zt(this)},has:Wt,add:Ps,set:Cs,delete:Os,clear:As,forEach:qt(!1,!1)},t={get(o){return kt(this,o,!1,!0)},get size(){return zt(this)},has:Wt,add:Ps,set:Cs,delete:Os,clear:As,forEach:qt(!1,!0)},n={get(o){return kt(this,o,!0)},get size(){return zt(this,!0)},has(o){return Wt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!1)},s={get(o){return kt(this,o,!0,!0)},get size(){return zt(this,!0)},has(o){return Wt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Vt(o,!1,!1),n[o]=Vt(o,!0,!1),t[o]=Vt(o,!1,!0),s[o]=Vt(o,!0,!0)}),[e,n,t,s]}const[Zo,Go,ei,ti]=Xo();function ls(e,t){const n=t?e?ti:ei:e?Go:Zo;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(U(n,r)&&r in s?n:s,r,o)}const ni={get:ls(!1,!1)},si={get:ls(!1,!0)},ri={get:ls(!0,!1)},Sr=new WeakMap,Ir=new WeakMap,Mr=new WeakMap,oi=new WeakMap;function ii(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function li(e){return e.__v_skip||!Object.isExtensible(e)?0:ii(So(e))}function pn(e){return yt(e)?e:cs(e,!1,Qo,ni,Sr)}function Nr(e){return cs(e,!1,Jo,si,Ir)}function Fr(e){return cs(e,!0,Yo,ri,Mr)}function cs(e,t,n,s,r){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=li(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function gt(e){return yt(e)?gt(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function nn(e){return!!(e&&e.__v_isShallow)}function Lr(e){return gt(e)||yt(e)}function k(e){const t=e&&e.__v_raw;return t?k(t):e}function jr(e){return tn(e,"__v_skip",!0),e}const jt=e=>X(e)?pn(e):e,us=e=>X(e)?Fr(e):e;function Hr(e){qe&&ye&&(e=k(e),Cr(e.dep||(e.dep=rs())))}function $r(e,t){e=k(e);const n=e.dep;n&&Kn(n)}function le(e){return!!(e&&e.__v_isRef===!0)}function ci(e){return Br(e,!1)}function ui(e){return Br(e,!0)}function Br(e,t){return le(e)?e:new fi(e,t)}class fi{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:k(t),this._value=n?t:jt(t)}get value(){return Hr(this),this._value}set value(t){const n=this.__v_isShallow||nn(t)||yt(t);t=n?t:k(t),st(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:jt(t),$r(this))}}function mt(e){return le(e)?e.value:e}const ai={get:(e,t,n)=>mt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return le(r)&&!le(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Kr(e){return gt(e)?e:new Proxy(e,ai)}class di{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new os(t,()=>{this._dirty||(this._dirty=!0,$r(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=k(this);return Hr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function hi(e,t,n=!1){let s,r;const o=B(e);return o?(s=e,r=Ie):(s=e.get,r=e.set),new di(s,r,o||!r,n)}function Ve(e,t,n,s){let r;try{r=s?e(...s):e()}catch(o){gn(o,t,n)}return r}function Ee(e,t,n,s){if(B(e)){const o=Ve(e,t,n,s);return o&&yr(o)&&o.catch(i=>{gn(i,t,n)}),o}const r=[];for(let o=0;o>>1,r=ie[s],o=$t(r);oSe&&ie.splice(t,1)}function _i(e){j(e)?_t.push(...e):(!Le||!Le.includes(e,e.allowRecurse?Ze+1:Ze))&&_t.push(e),kr()}function Ts(e,t=Ht?Se+1:0){for(;t$t(n)-$t(s)),Ze=0;Zee.id==null?1/0:e.id,yi=(e,t)=>{const n=$t(e)-$t(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function zr(e){Un=!1,Ht=!0,ie.sort(yi);try{for(Se=0;SeG(E)?E.trim():E)),p&&(r=n.map(Ln))}let l,c=s[l=Rn(t)]||s[l=Rn(Me(t))];!c&&o&&(c=s[l=Rn(wt(t))]),c&&Ee(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ee(a,e,6,r)}}function qr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!B(e)){const c=a=>{const d=qr(a,t,!0);d&&(l=!0,se(i,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(X(e)&&s.set(e,null),null):(j(o)?o.forEach(c=>i[c]=null):se(i,o),X(e)&&s.set(e,i),i)}function mn(e,t){return!e||!cn(t)?!1:(t=t.slice(2).replace(/Once$/,""),U(e,t[0].toLowerCase()+t.slice(1))||U(e,wt(t))||U(e,t))}let pe=null,_n=null;function sn(e){const t=pe;return pe=e,_n=e&&e.type.__scopeId||null,t}function gu(e){_n=e}function mu(){_n=null}function vi(e,t=pe,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Ks(-1);const o=sn(t);let i;try{i=e(...r)}finally{sn(o),s._d&&Ks(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Pn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:d,renderCache:p,data:g,setupState:E,ctx:A,inheritAttrs:S}=e;let $,N;const F=sn(e);try{if(n.shapeFlag&4){const L=r||s,ee=L;$=Te(d.call(ee,L,p,o,E,g,A)),N=c}else{const L=t;$=Te(L.length>1?L(o,{attrs:c,slots:l,emit:a}):L(o,null)),N=t.props?c:Ei(c)}}catch(L){Nt.length=0,gn(L,e,1),$=ae(rt)}let D=$;if(N&&S!==!1){const L=Object.keys(N),{shapeFlag:ee}=D;L.length&&ee&7&&(i&&L.some(Gn)&&(N=xi(N,i)),D=bt(D,N))}return n.dirs&&(D=bt(D),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition&&(D.transition=n.transition),$=D,sn(F),$}const Ei=e=>{let t;for(const n in e)(n==="class"||n==="style"||cn(n))&&((t||(t={}))[n]=e[n]);return t},xi=(e,t)=>{const n={};for(const s in e)(!Gn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function wi(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Ss(s,i,a):!!i;if(c&8){const d=t.dynamicProps;for(let p=0;pe.__isSuspense;function Ti(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):_i(e)}const Qt={};function Xt(e,t,n){return Qr(e,t,n)}function Qr(e,t,{immediate:n,deep:s,flush:r,onTrack:o,onTrigger:i}=J){var l;const c=Uo()===((l=ne)==null?void 0:l.scope)?ne:null;let a,d=!1,p=!1;if(le(e)?(a=()=>e.value,d=nn(e)):gt(e)?(a=()=>e,s=!0):j(e)?(p=!0,d=e.some(L=>gt(L)||nn(L)),a=()=>e.map(L=>{if(le(L))return L.value;if(gt(L))return et(L);if(B(L))return Ve(L,c,2)})):B(e)?t?a=()=>Ve(e,c,2):a=()=>{if(!(c&&c.isUnmounted))return g&&g(),Ee(e,c,3,[E])}:a=Ie,t&&s){const L=a;a=()=>et(L())}let g,E=L=>{g=F.onStop=()=>{Ve(L,c,4),g=F.onStop=void 0}},A;if(Kt)if(E=Ie,t?n&&Ee(t,c,3,[a(),p?[]:void 0,E]):a(),r==="sync"){const L=Rl();A=L.__watcherHandles||(L.__watcherHandles=[])}else return Ie;let S=p?new Array(e.length).fill(Qt):Qt;const $=()=>{if(F.active)if(t){const L=F.run();(s||d||(p?L.some((ee,re)=>st(ee,S[re])):st(L,S)))&&(g&&g(),Ee(t,c,3,[L,S===Qt?void 0:p&&S[0]===Qt?[]:S,E]),S=L)}else F.run()};$.allowRecurse=!!t;let N;r==="sync"?N=$:r==="post"?N=()=>fe($,c&&c.suspense):($.pre=!0,c&&($.id=c.uid),N=()=>as($));const F=new os(a,N);t?n?$():S=F.run():r==="post"?fe(F.run.bind(F),c&&c.suspense):F.run();const D=()=>{F.stop(),c&&c.scope&&es(c.scope.effects,F)};return A&&A.push(D),D}function Si(e,t,n){const s=this.proxy,r=G(e)?e.includes(".")?Yr(s,e):()=>s[e]:e.bind(s,s);let o;B(t)?o=t:(o=t.handler,n=t);const i=ne;vt(this);const l=Qr(r,o.bind(s),n);return i?vt(i):nt(),l}function Yr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{et(n,t)});else if(vr(e))for(const n in e)et(e[n],t);return e}function _u(e,t){const n=pe;if(n===null)return e;const s=En(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let o=0;o!!e.type.__asyncLoader,Xr=e=>e.type.__isKeepAlive;function Ii(e,t){Zr(e,"a",t)}function Mi(e,t){Zr(e,"da",t)}function Zr(e,t,n=ne){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(yn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Xr(r.parent.vnode)&&Ni(s,t,n,r),r=r.parent}}function Ni(e,t,n,s){const r=yn(t,e,s,!0);Gr(()=>{es(s[t],r)},n)}function yn(e,t,n=ne,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Rt(),vt(n);const l=Ee(t,n,e,i);return nt(),Pt(),l});return s?r.unshift(o):r.push(o),o}}const Be=e=>(t,n=ne)=>(!Kt||e==="sp")&&yn(e,(...s)=>t(...s),n),Fi=Be("bm"),Li=Be("m"),ji=Be("bu"),Hi=Be("u"),$i=Be("bum"),Gr=Be("um"),Bi=Be("sp"),Ki=Be("rtg"),Ui=Be("rtc");function Di(e,t=ne){yn("ec",e,t)}function yu(e,t,n,s){let r;const o=n&&n[s];if(j(e)||G(e)){r=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;le?ho(e)?En(e)||e.proxy:Dn(e.parent):null,Mt=se(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=>Dn(e.parent),$root:e=>Dn(e.root),$emit:e=>e.emit,$options:e=>ds(e),$forceUpdate:e=>e.f||(e.f=()=>as(e.update)),$nextTick:e=>e.n||(e.n=Dr.bind(e.proxy)),$watch:e=>Si.bind(e)}),Cn=(e,t)=>e!==J&&!e.__isScriptSetup&&U(e,t),ki={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const E=i[t];if(E!==void 0)switch(E){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Cn(s,t))return i[t]=1,s[t];if(r!==J&&U(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&U(a,t))return i[t]=3,o[t];if(n!==J&&U(n,t))return i[t]=4,n[t];kn&&(i[t]=0)}}const d=Mt[t];let p,g;if(d)return t==="$attrs"&&de(e,"get",t),d(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(n!==J&&U(n,t))return i[t]=4,n[t];if(g=c.config.globalProperties,U(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Cn(r,t)?(r[t]=n,!0):s!==J&&U(s,t)?(s[t]=n,!0):U(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==J&&U(e,i)||Cn(t,i)||(l=o[0])&&U(l,i)||U(s,i)||U(Mt,i)||U(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:U(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ms(e){return j(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let kn=!0;function Wi(e){const t=ds(e),n=e.proxy,s=e.ctx;kn=!1,t.beforeCreate&&Ns(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:d,beforeMount:p,mounted:g,beforeUpdate:E,updated:A,activated:S,deactivated:$,beforeDestroy:N,beforeUnmount:F,destroyed:D,unmounted:L,render:ee,renderTracked:re,renderTriggered:ge,errorCaptured:we,serverPrefetch:ot,expose:Re,inheritAttrs:Ke,components:Ye,directives:Pe,filters:Ct}=t;if(a&&zi(a,s,null),i)for(const Q in i){const W=i[Q];B(W)&&(s[Q]=W.bind(n))}if(r){const Q=r.call(n,n);X(Q)&&(e.data=pn(Q))}if(kn=!0,o)for(const Q in o){const W=o[Q],Ne=B(W)?W.bind(n,n):B(W.get)?W.get.bind(n,n):Ie,Ue=!B(W)&&B(W.set)?W.set.bind(n):Ie,Ce=be({get:Ne,set:Ue});Object.defineProperty(s,Q,{enumerable:!0,configurable:!0,get:()=>Ce.value,set:ue=>Ce.value=ue})}if(l)for(const Q in l)eo(l[Q],s,n,Q);if(c){const Q=B(c)?c.call(n):c;Reflect.ownKeys(Q).forEach(W=>{Gt(W,Q[W])})}d&&Ns(d,e,"c");function te(Q,W){j(W)?W.forEach(Ne=>Q(Ne.bind(n))):W&&Q(W.bind(n))}if(te(Fi,p),te(Li,g),te(ji,E),te(Hi,A),te(Ii,S),te(Mi,$),te(Di,we),te(Ui,re),te(Ki,ge),te($i,F),te(Gr,L),te(Bi,ot),j(Re))if(Re.length){const Q=e.exposed||(e.exposed={});Re.forEach(W=>{Object.defineProperty(Q,W,{get:()=>n[W],set:Ne=>n[W]=Ne})})}else e.exposed||(e.exposed={});ee&&e.render===Ie&&(e.render=ee),Ke!=null&&(e.inheritAttrs=Ke),Ye&&(e.components=Ye),Pe&&(e.directives=Pe)}function zi(e,t,n=Ie){j(e)&&(e=Wn(e));for(const s in e){const r=e[s];let o;X(r)?"default"in r?o=$e(r.from||s,r.default,!0):o=$e(r.from||s):o=$e(r),le(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Ns(e,t,n){Ee(j(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function eo(e,t,n,s){const r=s.includes(".")?Yr(n,s):()=>n[s];if(G(e)){const o=t[e];B(o)&&Xt(r,o)}else if(B(e))Xt(r,e.bind(n));else if(X(e))if(j(e))e.forEach(o=>eo(o,t,n,s));else{const o=B(e.handler)?e.handler.bind(n):t[e.handler];B(o)&&Xt(r,o,e)}}function ds(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>rn(c,a,i,!0)),rn(c,t,i)),X(t)&&o.set(t,c),c}function rn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&rn(e,o,n,!0),r&&r.forEach(i=>rn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=qi[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const qi={data:Fs,props:Ls,emits:Ls,methods:It,computed:It,beforeCreate:ce,created:ce,beforeMount:ce,mounted:ce,beforeUpdate:ce,updated:ce,beforeDestroy:ce,beforeUnmount:ce,destroyed:ce,unmounted:ce,activated:ce,deactivated:ce,errorCaptured:ce,serverPrefetch:ce,components:It,directives:It,watch:Qi,provide:Fs,inject:Vi};function Fs(e,t){return t?e?function(){return se(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function Vi(e,t){return It(Wn(e),Wn(t))}function Wn(e){if(j(e)){const t={};for(let n=0;n1)return n&&B(t)?t.call(s&&s.proxy):t}}function Xi(e,t,n,s=!1){const r={},o={};tn(o,vn,1),e.propsDefaults=Object.create(null),no(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Nr(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Zi(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=k(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const d=e.vnode.dynamicProps;for(let p=0;p{c=!0;const[g,E]=so(p,t,!0);se(i,g),E&&l.push(...E)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!o&&!c)return X(e)&&s.set(e,ht),ht;if(j(o))for(let d=0;d-1,E[1]=S<0||A-1||U(E,"default"))&&l.push(p)}}}const a=[i,l];return X(e)&&s.set(e,a),a}function js(e){return e[0]!=="$"}function Hs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function $s(e,t){return Hs(e)===Hs(t)}function Bs(e,t){return j(t)?t.findIndex(n=>$s(n,e)):B(t)&&$s(t,e)?0:-1}const ro=e=>e[0]==="_"||e==="$stable",hs=e=>j(e)?e.map(Te):[Te(e)],Gi=(e,t,n)=>{if(t._n)return t;const s=vi((...r)=>hs(t(...r)),n);return s._c=!1,s},oo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ro(r))continue;const o=e[r];if(B(o))t[r]=Gi(r,o,s);else if(o!=null){const i=hs(o);t[r]=()=>i}}},io=(e,t)=>{const n=hs(t);e.slots.default=()=>n},el=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=k(t),tn(t,"_",n)):oo(t,e.slots={})}else e.slots={},t&&io(e,t);tn(e.slots,vn,1)},tl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=J;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(se(r,t),!n&&l===1&&delete r._):(o=!t.$stable,oo(t,r)),i=t}else t&&(io(e,t),i={default:1});if(o)for(const l in r)!ro(l)&&i[l]==null&&delete r[l]};function qn(e,t,n,s,r=!1){if(j(e)){e.forEach((g,E)=>qn(g,t&&(j(t)?t[E]:t),n,s,r));return}if(Zt(s)&&!r)return;const o=s.shapeFlag&4?En(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,d=l.refs===J?l.refs={}:l.refs,p=l.setupState;if(a!=null&&a!==c&&(G(a)?(d[a]=null,U(p,a)&&(p[a]=null)):le(a)&&(a.value=null)),B(c))Ve(c,l,12,[i,d]);else{const g=G(c),E=le(c);if(g||E){const A=()=>{if(e.f){const S=g?U(p,c)?p[c]:d[c]:c.value;r?j(S)&&es(S,o):j(S)?S.includes(o)||S.push(o):g?(d[c]=[o],U(p,c)&&(p[c]=d[c])):(c.value=[o],e.k&&(d[e.k]=c.value))}else g?(d[c]=i,U(p,c)&&(p[c]=i)):E&&(c.value=i,e.k&&(d[e.k]=i))};i?(A.id=-1,fe(A,n)):A()}}}const fe=Ti;function nl(e){return sl(e)}function sl(e,t){const n=jn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:d,parentNode:p,nextSibling:g,setScopeId:E=Ie,insertStaticContent:A}=e,S=(u,f,h,m=null,y=null,b=null,P=!1,x=null,w=!!f.dynamicChildren)=>{if(u===f)return;u&&!At(u,f)&&(m=_(u),ue(u,y,b,!0),u=null),f.patchFlag===-2&&(w=!1,f.dynamicChildren=null);const{type:v,ref:I,shapeFlag:O}=f;switch(v){case bn:$(u,f,h,m);break;case rt:N(u,f,h,m);break;case On:u==null&&F(f,h,m,P);break;case je:Ye(u,f,h,m,y,b,P,x,w);break;default:O&1?ee(u,f,h,m,y,b,P,x,w):O&6?Pe(u,f,h,m,y,b,P,x,w):(O&64||O&128)&&v.process(u,f,h,m,y,b,P,x,w,R)}I!=null&&y&&qn(I,u&&u.ref,b,f||u,!f)},$=(u,f,h,m)=>{if(u==null)s(f.el=l(f.children),h,m);else{const y=f.el=u.el;f.children!==u.children&&a(y,f.children)}},N=(u,f,h,m)=>{u==null?s(f.el=c(f.children||""),h,m):f.el=u.el},F=(u,f,h,m)=>{[u.el,u.anchor]=A(u.children,f,h,m,u.el,u.anchor)},D=({el:u,anchor:f},h,m)=>{let y;for(;u&&u!==f;)y=g(u),s(u,h,m),u=y;s(f,h,m)},L=({el:u,anchor:f})=>{let h;for(;u&&u!==f;)h=g(u),r(u),u=h;r(f)},ee=(u,f,h,m,y,b,P,x,w)=>{P=P||f.type==="svg",u==null?re(f,h,m,y,b,P,x,w):ot(u,f,y,b,P,x,w)},re=(u,f,h,m,y,b,P,x)=>{let w,v;const{type:I,props:O,shapeFlag:M,transition:H,dirs:K}=u;if(w=u.el=i(u.type,b,O&&O.is,O),M&8?d(w,u.children):M&16&&we(u.children,w,null,m,y,b&&I!=="foreignObject",P,x),K&&Je(u,null,m,"created"),ge(w,u,u.scopeId,P,m),O){for(const V in O)V!=="value"&&!Yt(V)&&o(w,V,null,O[V],b,u.children,m,y,oe);"value"in O&&o(w,"value",null,O.value),(v=O.onVnodeBeforeMount)&&Ae(v,m,u)}K&&Je(u,null,m,"beforeMount");const Y=rl(y,H);Y&&H.beforeEnter(w),s(w,f,h),((v=O&&O.onVnodeMounted)||Y||K)&&fe(()=>{v&&Ae(v,m,u),Y&&H.enter(w),K&&Je(u,null,m,"mounted")},y)},ge=(u,f,h,m,y)=>{if(h&&E(u,h),m)for(let b=0;b{for(let v=w;v{const x=f.el=u.el;let{patchFlag:w,dynamicChildren:v,dirs:I}=f;w|=u.patchFlag&16;const O=u.props||J,M=f.props||J;let H;h&&Xe(h,!1),(H=M.onVnodeBeforeUpdate)&&Ae(H,h,f,u),I&&Je(f,u,h,"beforeUpdate"),h&&Xe(h,!0);const K=y&&f.type!=="foreignObject";if(v?Re(u.dynamicChildren,v,x,h,m,K,b):P||W(u,f,x,null,h,m,K,b,!1),w>0){if(w&16)Ke(x,f,O,M,h,m,y);else if(w&2&&O.class!==M.class&&o(x,"class",null,M.class,y),w&4&&o(x,"style",O.style,M.style,y),w&8){const Y=f.dynamicProps;for(let V=0;V{H&&Ae(H,h,f,u),I&&Je(f,u,h,"updated")},m)},Re=(u,f,h,m,y,b,P)=>{for(let x=0;x{if(h!==m){if(h!==J)for(const x in h)!Yt(x)&&!(x in m)&&o(u,x,h[x],null,P,f.children,y,b,oe);for(const x in m){if(Yt(x))continue;const w=m[x],v=h[x];w!==v&&x!=="value"&&o(u,x,v,w,P,f.children,y,b,oe)}"value"in m&&o(u,"value",h.value,m.value)}},Ye=(u,f,h,m,y,b,P,x,w)=>{const v=f.el=u?u.el:l(""),I=f.anchor=u?u.anchor:l("");let{patchFlag:O,dynamicChildren:M,slotScopeIds:H}=f;H&&(x=x?x.concat(H):H),u==null?(s(v,h,m),s(I,h,m),we(f.children,h,I,y,b,P,x,w)):O>0&&O&64&&M&&u.dynamicChildren?(Re(u.dynamicChildren,M,h,y,b,P,x),(f.key!=null||y&&f===y.subTree)&&lo(u,f,!0)):W(u,f,h,I,y,b,P,x,w)},Pe=(u,f,h,m,y,b,P,x,w)=>{f.slotScopeIds=x,u==null?f.shapeFlag&512?y.ctx.activate(f,h,m,P,w):Ct(f,h,m,y,b,P,w):it(u,f,w)},Ct=(u,f,h,m,y,b,P)=>{const x=u.component=ml(u,m,y);if(Xr(u)&&(x.ctx.renderer=R),_l(x),x.asyncDep){if(y&&y.registerDep(x,te),!u.el){const w=x.subTree=ae(rt);N(null,w,f,h)}return}te(x,u,f,h,y,b,P)},it=(u,f,h)=>{const m=f.component=u.component;if(wi(u,f,h))if(m.asyncDep&&!m.asyncResolved){Q(m,f,h);return}else m.next=f,mi(m.update),m.update();else f.el=u.el,m.vnode=f},te=(u,f,h,m,y,b,P)=>{const x=()=>{if(u.isMounted){let{next:I,bu:O,u:M,parent:H,vnode:K}=u,Y=I,V;Xe(u,!1),I?(I.el=K.el,Q(u,I,P)):I=K,O&&Jt(O),(V=I.props&&I.props.onVnodeBeforeUpdate)&&Ae(V,H,I,K),Xe(u,!0);const Z=Pn(u),me=u.subTree;u.subTree=Z,S(me,Z,p(me.el),_(me),u,y,b),I.el=Z.el,Y===null&&Ri(u,Z.el),M&&fe(M,y),(V=I.props&&I.props.onVnodeUpdated)&&fe(()=>Ae(V,H,I,K),y)}else{let I;const{el:O,props:M}=f,{bm:H,m:K,parent:Y}=u,V=Zt(f);if(Xe(u,!1),H&&Jt(H),!V&&(I=M&&M.onVnodeBeforeMount)&&Ae(I,Y,f),Xe(u,!0),O&&z){const Z=()=>{u.subTree=Pn(u),z(O,u.subTree,u,y,null)};V?f.type.__asyncLoader().then(()=>!u.isUnmounted&&Z()):Z()}else{const Z=u.subTree=Pn(u);S(null,Z,h,m,u,y,b),f.el=Z.el}if(K&&fe(K,y),!V&&(I=M&&M.onVnodeMounted)){const Z=f;fe(()=>Ae(I,Y,Z),y)}(f.shapeFlag&256||Y&&Zt(Y.vnode)&&Y.vnode.shapeFlag&256)&&u.a&&fe(u.a,y),u.isMounted=!0,f=h=m=null}},w=u.effect=new os(x,()=>as(v),u.scope),v=u.update=()=>w.run();v.id=u.uid,Xe(u,!0),v()},Q=(u,f,h)=>{f.component=u;const m=u.vnode.props;u.vnode=f,u.next=null,Zi(u,f.props,m,h),tl(u,f.children,h),Rt(),Ts(),Pt()},W=(u,f,h,m,y,b,P,x,w=!1)=>{const v=u&&u.children,I=u?u.shapeFlag:0,O=f.children,{patchFlag:M,shapeFlag:H}=f;if(M>0){if(M&128){Ue(v,O,h,m,y,b,P,x,w);return}else if(M&256){Ne(v,O,h,m,y,b,P,x,w);return}}H&8?(I&16&&oe(v,y,b),O!==v&&d(h,O)):I&16?H&16?Ue(v,O,h,m,y,b,P,x,w):oe(v,y,b,!0):(I&8&&d(h,""),H&16&&we(O,h,m,y,b,P,x,w))},Ne=(u,f,h,m,y,b,P,x,w)=>{u=u||ht,f=f||ht;const v=u.length,I=f.length,O=Math.min(v,I);let M;for(M=0;MI?oe(u,y,b,!0,!1,O):we(f,h,m,y,b,P,x,w,O)},Ue=(u,f,h,m,y,b,P,x,w)=>{let v=0;const I=f.length;let O=u.length-1,M=I-1;for(;v<=O&&v<=M;){const H=u[v],K=f[v]=w?We(f[v]):Te(f[v]);if(At(H,K))S(H,K,h,null,y,b,P,x,w);else break;v++}for(;v<=O&&v<=M;){const H=u[O],K=f[M]=w?We(f[M]):Te(f[M]);if(At(H,K))S(H,K,h,null,y,b,P,x,w);else break;O--,M--}if(v>O){if(v<=M){const H=M+1,K=HM)for(;v<=O;)ue(u[v],y,b,!0),v++;else{const H=v,K=v,Y=new Map;for(v=K;v<=M;v++){const he=f[v]=w?We(f[v]):Te(f[v]);he.key!=null&&Y.set(he.key,v)}let V,Z=0;const me=M-K+1;let ut=!1,ys=0;const Ot=new Array(me);for(v=0;v=me){ue(he,y,b,!0);continue}let Oe;if(he.key!=null)Oe=Y.get(he.key);else for(V=K;V<=M;V++)if(Ot[V-K]===0&&At(he,f[V])){Oe=V;break}Oe===void 0?ue(he,y,b,!0):(Ot[Oe-K]=v+1,Oe>=ys?ys=Oe:ut=!0,S(he,f[Oe],h,null,y,b,P,x,w),Z++)}const bs=ut?ol(Ot):ht;for(V=bs.length-1,v=me-1;v>=0;v--){const he=K+v,Oe=f[he],vs=he+1{const{el:b,type:P,transition:x,children:w,shapeFlag:v}=u;if(v&6){Ce(u.component.subTree,f,h,m);return}if(v&128){u.suspense.move(f,h,m);return}if(v&64){P.move(u,f,h,R);return}if(P===je){s(b,f,h);for(let O=0;Ox.enter(b),y);else{const{leave:O,delayLeave:M,afterLeave:H}=x,K=()=>s(b,f,h),Y=()=>{O(b,()=>{K(),H&&H()})};M?M(b,K,Y):Y()}else s(b,f,h)},ue=(u,f,h,m=!1,y=!1)=>{const{type:b,props:P,ref:x,children:w,dynamicChildren:v,shapeFlag:I,patchFlag:O,dirs:M}=u;if(x!=null&&qn(x,null,h,u,!0),I&256){f.ctx.deactivate(u);return}const H=I&1&&M,K=!Zt(u);let Y;if(K&&(Y=P&&P.onVnodeBeforeUnmount)&&Ae(Y,f,u),I&6)Dt(u.component,h,m);else{if(I&128){u.suspense.unmount(h,m);return}H&&Je(u,null,f,"beforeUnmount"),I&64?u.type.remove(u,f,h,y,R,m):v&&(b!==je||O>0&&O&64)?oe(v,f,h,!1,!0):(b===je&&O&384||!y&&I&16)&&oe(w,f,h),m&<(u)}(K&&(Y=P&&P.onVnodeUnmounted)||H)&&fe(()=>{Y&&Ae(Y,f,u),H&&Je(u,null,f,"unmounted")},h)},lt=u=>{const{type:f,el:h,anchor:m,transition:y}=u;if(f===je){ct(h,m);return}if(f===On){L(u);return}const b=()=>{r(h),y&&!y.persisted&&y.afterLeave&&y.afterLeave()};if(u.shapeFlag&1&&y&&!y.persisted){const{leave:P,delayLeave:x}=y,w=()=>P(h,b);x?x(u.el,b,w):w()}else b()},ct=(u,f)=>{let h;for(;u!==f;)h=g(u),r(u),u=h;r(f)},Dt=(u,f,h)=>{const{bum:m,scope:y,update:b,subTree:P,um:x}=u;m&&Jt(m),y.stop(),b&&(b.active=!1,ue(P,u,f,h)),x&&fe(x,f),fe(()=>{u.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},oe=(u,f,h,m=!1,y=!1,b=0)=>{for(let P=b;Pu.shapeFlag&6?_(u.component.subTree):u.shapeFlag&128?u.suspense.next():g(u.anchor||u.el),C=(u,f,h)=>{u==null?f._vnode&&ue(f._vnode,null,null,!0):S(f._vnode||null,u,f,null,null,null,h),Ts(),Wr(),f._vnode=u},R={p:S,um:ue,m:Ce,r:lt,mt:Ct,mc:we,pc:W,pbc:Re,n:_,o:e};let T,z;return t&&([T,z]=t(R)),{render:C,hydrate:T,createApp:Ji(C,T)}}function Xe({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function rl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function lo(e,t,n=!1){const s=e.children,r=t.children;if(j(s)&&j(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}const il=e=>e.__isTeleport,je=Symbol.for("v-fgt"),bn=Symbol.for("v-txt"),rt=Symbol.for("v-cmt"),On=Symbol.for("v-stc"),Nt=[];let ve=null;function co(e=!1){Nt.push(ve=e?null:[])}function ll(){Nt.pop(),ve=Nt[Nt.length-1]||null}let Bt=1;function Ks(e){Bt+=e}function uo(e){return e.dynamicChildren=Bt>0?ve||ht:null,ll(),Bt>0&&ve&&ve.push(e),e}function cl(e,t,n,s,r,o){return uo(ao(e,t,n,s,r,o,!0))}function ul(e,t,n,s,r){return uo(ae(e,t,n,s,r,!0))}function Vn(e){return e?e.__v_isVNode===!0:!1}function At(e,t){return e.type===t.type&&e.key===t.key}const vn="__vInternal",fo=({key:e})=>e??null,en=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?G(e)||le(e)||B(e)?{i:pe,r:e,k:t,f:!!n}:e:null);function ao(e,t=null,n=null,s=0,r=null,o=e===je?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&fo(t),ref:t&&en(t),scopeId:_n,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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:pe};return l?(ps(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=G(n)?8:16),Bt>0&&!i&&ve&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&ve.push(c),c}const ae=fl;function fl(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Ci)&&(e=rt),Vn(e)){const l=bt(e,t,!0);return n&&ps(l,n),Bt>0&&!o&&ve&&(l.shapeFlag&6?ve[ve.indexOf(e)]=l:ve.push(l)),l.patchFlag|=-2,l}if(xl(e)&&(e=e.__vccOpts),t){t=al(t);let{class:l,style:c}=t;l&&!G(l)&&(t.class=ss(l)),X(c)&&(Lr(c)&&!j(c)&&(c=se({},c)),t.style=ns(c))}const i=G(e)?1:Ai(e)?128:il(e)?64:X(e)?4:B(e)?2:0;return ao(e,t,n,s,r,i,o,!0)}function al(e){return e?Lr(e)||vn in e?se({},e):e:null}function bt(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:i}=e,l=t?hl(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&fo(l),ref:t&&t.ref?n&&r?j(r)?r.concat(en(t)):[r,en(t)]:en(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==je?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&bt(e.ssContent),ssFallback:e.ssFallback&&bt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function dl(e=" ",t=0){return ae(bn,null,e,t)}function bu(e="",t=!1){return t?(co(),ul(rt,null,e)):ae(rt,null,e)}function Te(e){return e==null||typeof e=="boolean"?ae(rt):j(e)?ae(je,null,e.slice()):typeof e=="object"?We(e):ae(bn,null,String(e))}function We(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bt(e)}function ps(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(j(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ps(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(vn in t)?t._ctx=pe:r===3&&pe&&(pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:pe},n=32):(t=String(t),s&64?(n=16,t=[dl(t)]):n=8);e.children=t,e.shapeFlag|=n}function hl(...e){const t={};for(let n=0;nne=e),gs=e=>{ft.length>1?ft.forEach(t=>t(e)):ft[0](e)};const vt=e=>{gs(e),e.scope.on()},nt=()=>{ne&&ne.scope.off(),gs(null)};function ho(e){return e.vnode.shapeFlag&4}let Kt=!1;function _l(e,t=!1){Kt=t;const{props:n,children:s}=e.vnode,r=ho(e);Xi(e,n,r,t),el(e,s);const o=r?yl(e,t):void 0;return Kt=!1,o}function yl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=jr(new Proxy(e.ctx,ki));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?vl(e):null;vt(e),Rt();const o=Ve(s,e,0,[e.props,r]);if(Pt(),nt(),yr(o)){if(o.then(nt,nt),t)return o.then(i=>{Ds(e,i,t)}).catch(i=>{gn(i,e,0)});e.asyncDep=o}else Ds(e,o,t)}else po(e,t)}function Ds(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=Kr(t)),po(e,n)}let ks;function po(e,t,n){const s=e.type;if(!e.render){if(!t&&ks&&!s.render){const r=s.template||ds(e).template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,a=se(se({isCustomElement:o,delimiters:l},i),c);s.render=ks(r,a)}}e.render=s.render||Ie}{vt(e),Rt();try{Wi(e)}finally{Pt(),nt()}}}function bl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return de(e,"get","$attrs"),t[n]}}))}function vl(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return bl(e)},slots:e.slots,emit:e.emit,expose:t}}function En(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Kr(jr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Mt)return Mt[n](e)},has(t,n){return n in t||n in Mt}}))}function El(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function xl(e){return B(e)&&"__vccOpts"in e}const be=(e,t)=>hi(e,t,Kt);function go(e,t,n){const s=arguments.length;return s===2?X(t)&&!j(t)?Vn(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Vn(n)&&(n=[n]),ae(e,t,n))}const wl=Symbol.for("v-scx"),Rl=()=>$e(wl),Pl="3.3.9",Cl="http://www.w3.org/2000/svg",Ge=typeof document<"u"?document:null,Ws=Ge&&Ge.createElement("template"),Ol={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 r=t?Ge.createElementNS(Cl,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Ws.innerHTML=s?``:e;const l=Ws.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]}},Al=Symbol("_vtc");function Tl(e,t,n){const s=e[Al];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Sl=Symbol("_vod");function Il(e,t,n){const s=e.style,r=G(n);if(n&&!r){if(t&&!G(t))for(const o in t)n[o]==null&&Qn(s,o,"");for(const o in n)Qn(s,o,n[o])}else{const o=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),Sl in e&&(s.display=o)}}const zs=/\s*!important$/;function Qn(e,t,n){if(j(n))n.forEach(s=>Qn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ml(e,t);zs.test(n)?e.setProperty(wt(s),n.replace(zs,""),"important"):e[s]=n}}const qs=["Webkit","Moz","ms"],An={};function Ml(e,t){const n=An[t];if(n)return n;let s=Me(t);if(s!=="filter"&&s in e)return An[t]=s;s=dn(s);for(let r=0;rTn||($l.then(()=>Tn=0),Tn=Date.now());function Kl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ee(Ul(s,n.value),t,5,[s])};return n.value=e,n.attached=Bl(),n}function Ul(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Js=/^on[a-z]/,Dl=(e,t,n,s,r=!1,o,i,l,c)=>{t==="class"?Tl(e,s,r):t==="style"?Il(e,n,s):cn(t)?Gn(t)||jl(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):kl(e,t,s,r))?Fl(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Nl(e,t,s,r))};function kl(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Js.test(t)&&B(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Js.test(t)&&G(n)?!1:t in e}const Xs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?n=>Jt(t,n):t};function Wl(e){e.target.composing=!0}function Zs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Sn=Symbol("_assign"),vu={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Sn]=Xs(r);const o=s||r.props&&r.props.type==="number";at(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=Ln(l)),e[Sn](l)}),n&&at(e,"change",()=>{e.value=e.value.trim()}),t||(at(e,"compositionstart",Wl),at(e,"compositionend",Zs),at(e,"change",Zs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},o){if(e[Sn]=Xs(o),e.composing)return;const i=r||e.type==="number"?Ln(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===l)||(e.value=l))}},zl=["ctrl","shift","alt","meta"],ql={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)=>zl.some(n=>e[`${n}Key`]&&!t.includes(n))},Eu=(e,t)=>(n,...s)=>{for(let r=0;r{const t=Ql().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Jl(s);if(!r)return;const o=t._component;!B(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Jl(e){return G(e)?document.querySelector(e):e}const Xl=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Zl={},Gl={id:"main"};function ec(e,t){const n=Pi("router-view");return co(),cl("div",Gl,[ae(n)])}const tc=Xl(Zl,[["render",ec],["__scopeId","data-v-5d2b6343"]]);/*!
+(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();function Zn(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const J={},ht=[],Ie=()=>{},Oo=()=>!1,Ao=/^on[^a-z]/,fn=e=>Ao.test(e),Gn=e=>e.startsWith("onUpdate:"),se=Object.assign,es=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},To=Object.prototype.hasOwnProperty,U=(e,t)=>To.call(e,t),j=Array.isArray,pt=e=>dn(e)==="[object Map]",_r=e=>dn(e)==="[object Set]",B=e=>typeof e=="function",G=e=>typeof e=="string",an=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",yr=e=>(X(e)||B(e))&&B(e.then)&&B(e.catch),br=Object.prototype.toString,dn=e=>br.call(e),So=e=>dn(e).slice(8,-1),vr=e=>dn(e)==="[object Object]",ts=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Xt=Zn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Io=/-(\w)/g,Me=hn(e=>e.replace(Io,(t,n)=>n?n.toUpperCase():"")),Mo=/\B([A-Z])/g,wt=hn(e=>e.replace(Mo,"-$1").toLowerCase()),pn=hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Pn=hn(e=>e?`on${pn(e)}`:""),st=(e,t)=>!Object.is(e,t),Zt=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ln=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Es;const jn=()=>Es||(Es=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ns(e){if(j(e)){const t={};for(let n=0;n{if(n){const s=n.split(Fo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ss(e){let t="";if(G(e))t=e;else if(j(e))for(let n=0;nG(e)?e:e==null?"":j(e)||X(e)&&(e.toString===br||!B(e.toString))?JSON.stringify(e,xr,2):String(e),xr=(e,t)=>t&&t.__v_isRef?xr(e,t.value):pt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:_r(t)?{[`Set(${t.size})`]:[...t.values()]}:X(t)&&!j(t)&&!vr(t)?String(t):t;let _e;class Bo{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=_e;try{return _e=this,t()}finally{_e=n}}}on(){_e=this}off(){_e=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},wr=e=>(e.w&Qe)>0,Rr=e=>(e.n&Qe)>0,Do=({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{(d==="length"||!an(d)&&d>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":j(e)?ts(n)&&l.push(i.get("length")):(l.push(i.get(tt)),pt(e)&&l.push(i.get(Bn)));break;case"delete":j(e)||(l.push(i.get(tt)),pt(e)&&l.push(i.get(Bn)));break;case"set":pt(e)&&l.push(i.get(tt));break}if(l.length===1)l[0]&&Kn(l[0]);else{const c=[];for(const a of l)a&&c.push(...a);Kn(rs(c))}}function Kn(e,t){const n=j(e)?e:[...e];for(const s of n)s.computed&&ws(s);for(const s of n)s.computed||ws(s)}function ws(e,t){(e!==ye||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Wo=Zn("__proto__,__v_isRef,__isVue"),Or=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(an)),Rs=zo();function zo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=k(this);for(let o=0,i=this.length;o{e[t]=function(...n){Rt();const s=k(this)[t].apply(this,n);return Pt(),s}}),e}function qo(e){const t=k(this);return de(t,"has",e),t.hasOwnProperty(e)}class Ar{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,s){const r=this._isReadonly,o=this._shallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw"&&s===(r?o?oi:Mr:o?Ir:Sr).get(t))return t;const i=j(t);if(!r){if(i&&U(Rs,n))return Reflect.get(Rs,n,s);if(n==="hasOwnProperty")return qo}const l=Reflect.get(t,n,s);return(an(n)?Or.has(n):Wo(n))||(r||de(t,"get",n),o)?l:le(l)?i&&ts(n)?l:l.value:X(l)?r?Fr(l):mn(l):l}}class Tr extends Ar{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(yt(o)&&le(o)&&!le(s))return!1;if(!this._shallow&&(!rn(s)&&!yt(s)&&(o=k(o),s=k(s)),!j(t)&&le(o)&&!le(s)))return o.value=s,!0;const i=j(t)&&ts(n)?Number(n)e,gn=e=>Reflect.getPrototypeOf(e);function Wt(e,t,n=!1,s=!1){e=e.__v_raw;const r=k(e),o=k(t);n||(st(t,o)&&de(r,"get",t),de(r,"get",o));const{has:i}=gn(r),l=s?is:n?us:jt;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));e!==r&&e.get(t)}function zt(e,t=!1){const n=this.__v_raw,s=k(n),r=k(e);return t||(st(e,r)&&de(s,"has",e),de(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function qt(e,t=!1){return e=e.__v_raw,!t&&de(k(e),"iterate",tt),Reflect.get(e,"size",e)}function Ps(e){e=k(e);const t=k(this);return gn(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function Cs(e,t){t=k(t);const n=k(this),{has:s,get:r}=gn(n);let o=s.call(n,e);o||(e=k(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?st(t,i)&&He(n,"set",e,t):He(n,"add",e,t),this}function Os(e){const t=k(this),{has:n,get:s}=gn(t);let r=n.call(t,e);r||(e=k(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&He(t,"delete",e,void 0),o}function As(){const e=k(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function Vt(e,t){return function(s,r){const o=this,i=o.__v_raw,l=k(i),c=t?is:e?us:jt;return!e&&de(l,"iterate",tt),i.forEach((a,d)=>s.call(r,c(a),c(d),o))}}function Qt(e,t,n){return function(...s){const r=this.__v_raw,o=k(r),i=pt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),d=n?is:t?us:jt;return!t&&de(o,"iterate",c?Bn:tt),{next(){const{value:p,done:g}=a.next();return g?{value:p,done:g}:{value:l?[d(p[0]),d(p[1])]:d(p),done:g}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Xo(){const e={get(o){return Wt(this,o)},get size(){return qt(this)},has:zt,add:Ps,set:Cs,delete:Os,clear:As,forEach:Vt(!1,!1)},t={get(o){return Wt(this,o,!1,!0)},get size(){return qt(this)},has:zt,add:Ps,set:Cs,delete:Os,clear:As,forEach:Vt(!1,!0)},n={get(o){return Wt(this,o,!0)},get size(){return qt(this,!0)},has(o){return zt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:Vt(!0,!1)},s={get(o){return Wt(this,o,!0,!0)},get size(){return qt(this,!0)},has(o){return zt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:Vt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Qt(o,!1,!1),n[o]=Qt(o,!0,!1),t[o]=Qt(o,!1,!0),s[o]=Qt(o,!0,!0)}),[e,n,t,s]}const[Zo,Go,ei,ti]=Xo();function ls(e,t){const n=t?e?ti:ei:e?Go:Zo;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(U(n,r)&&r in s?n:s,r,o)}const ni={get:ls(!1,!1)},si={get:ls(!1,!0)},ri={get:ls(!0,!1)},Sr=new WeakMap,Ir=new WeakMap,Mr=new WeakMap,oi=new WeakMap;function ii(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function li(e){return e.__v_skip||!Object.isExtensible(e)?0:ii(So(e))}function mn(e){return yt(e)?e:cs(e,!1,Qo,ni,Sr)}function Nr(e){return cs(e,!1,Jo,si,Ir)}function Fr(e){return cs(e,!0,Yo,ri,Mr)}function cs(e,t,n,s,r){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=li(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function gt(e){return yt(e)?gt(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function rn(e){return!!(e&&e.__v_isShallow)}function Lr(e){return gt(e)||yt(e)}function k(e){const t=e&&e.__v_raw;return t?k(t):e}function jr(e){return sn(e,"__v_skip",!0),e}const jt=e=>X(e)?mn(e):e,us=e=>X(e)?Fr(e):e;function Hr(e){qe&&ye&&(e=k(e),Cr(e.dep||(e.dep=rs())))}function $r(e,t){e=k(e);const n=e.dep;n&&Kn(n)}function le(e){return!!(e&&e.__v_isRef===!0)}function ci(e){return Br(e,!1)}function ui(e){return Br(e,!0)}function Br(e,t){return le(e)?e:new fi(e,t)}class fi{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:k(t),this._value=n?t:jt(t)}get value(){return Hr(this),this._value}set value(t){const n=this.__v_isShallow||rn(t)||yt(t);t=n?t:k(t),st(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:jt(t),$r(this))}}function mt(e){return le(e)?e.value:e}const ai={get:(e,t,n)=>mt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return le(r)&&!le(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Kr(e){return gt(e)?e:new Proxy(e,ai)}class di{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new os(t,()=>{this._dirty||(this._dirty=!0,$r(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=k(this);return Hr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function hi(e,t,n=!1){let s,r;const o=B(e);return o?(s=e,r=Ie):(s=e.get,r=e.set),new di(s,r,o||!r,n)}function Ve(e,t,n,s){let r;try{r=s?e(...s):e()}catch(o){_n(o,t,n)}return r}function Ee(e,t,n,s){if(B(e)){const o=Ve(e,t,n,s);return o&&yr(o)&&o.catch(i=>{_n(i,t,n)}),o}const r=[];for(let o=0;o>>1,r=ie[s],o=$t(r);oSe&&ie.splice(t,1)}function _i(e){j(e)?_t.push(...e):(!Le||!Le.includes(e,e.allowRecurse?Ze+1:Ze))&&_t.push(e),kr()}function Ts(e,t=Ht?Se+1:0){for(;t$t(n)-$t(s)),Ze=0;Zee.id==null?1/0:e.id,yi=(e,t)=>{const n=$t(e)-$t(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function zr(e){Un=!1,Ht=!0,ie.sort(yi);try{for(Se=0;SeG(E)?E.trim():E)),p&&(r=n.map(Ln))}let l,c=s[l=Pn(t)]||s[l=Pn(Me(t))];!c&&o&&(c=s[l=Pn(wt(t))]),c&&Ee(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ee(a,e,6,r)}}function qr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!B(e)){const c=a=>{const d=qr(a,t,!0);d&&(l=!0,se(i,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(X(e)&&s.set(e,null),null):(j(o)?o.forEach(c=>i[c]=null):se(i,o),X(e)&&s.set(e,i),i)}function yn(e,t){return!e||!fn(t)?!1:(t=t.slice(2).replace(/Once$/,""),U(e,t[0].toLowerCase()+t.slice(1))||U(e,wt(t))||U(e,t))}let pe=null,bn=null;function on(e){const t=pe;return pe=e,bn=e&&e.type.__scopeId||null,t}function mu(e){bn=e}function _u(){bn=null}function vi(e,t=pe,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Ks(-1);const o=on(t);let i;try{i=e(...r)}finally{on(o),s._d&&Ks(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Cn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:d,renderCache:p,data:g,setupState:E,ctx:A,inheritAttrs:S}=e;let $,N;const F=on(e);try{if(n.shapeFlag&4){const L=r||s,ee=L;$=Te(d.call(ee,L,p,o,E,g,A)),N=c}else{const L=t;$=Te(L.length>1?L(o,{attrs:c,slots:l,emit:a}):L(o,null)),N=t.props?c:Ei(c)}}catch(L){Nt.length=0,_n(L,e,1),$=ae(rt)}let D=$;if(N&&S!==!1){const L=Object.keys(N),{shapeFlag:ee}=D;L.length&&ee&7&&(i&&L.some(Gn)&&(N=xi(N,i)),D=bt(D,N))}return n.dirs&&(D=bt(D),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition&&(D.transition=n.transition),$=D,on(F),$}const Ei=e=>{let t;for(const n in e)(n==="class"||n==="style"||fn(n))&&((t||(t={}))[n]=e[n]);return t},xi=(e,t)=>{const n={};for(const s in e)(!Gn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function wi(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Ss(s,i,a):!!i;if(c&8){const d=t.dynamicProps;for(let p=0;pe.__isSuspense;function Ti(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):_i(e)}const Yt={};function Gt(e,t,n){return Qr(e,t,n)}function Qr(e,t,{immediate:n,deep:s,flush:r,onTrack:o,onTrigger:i}=J){var l;const c=Uo()===((l=ne)==null?void 0:l.scope)?ne:null;let a,d=!1,p=!1;if(le(e)?(a=()=>e.value,d=rn(e)):gt(e)?(a=()=>e,s=!0):j(e)?(p=!0,d=e.some(L=>gt(L)||rn(L)),a=()=>e.map(L=>{if(le(L))return L.value;if(gt(L))return et(L);if(B(L))return Ve(L,c,2)})):B(e)?t?a=()=>Ve(e,c,2):a=()=>{if(!(c&&c.isUnmounted))return g&&g(),Ee(e,c,3,[E])}:a=Ie,t&&s){const L=a;a=()=>et(L())}let g,E=L=>{g=F.onStop=()=>{Ve(L,c,4),g=F.onStop=void 0}},A;if(Kt)if(E=Ie,t?n&&Ee(t,c,3,[a(),p?[]:void 0,E]):a(),r==="sync"){const L=Rl();A=L.__watcherHandles||(L.__watcherHandles=[])}else return Ie;let S=p?new Array(e.length).fill(Yt):Yt;const $=()=>{if(F.active)if(t){const L=F.run();(s||d||(p?L.some((ee,re)=>st(ee,S[re])):st(L,S)))&&(g&&g(),Ee(t,c,3,[L,S===Yt?void 0:p&&S[0]===Yt?[]:S,E]),S=L)}else F.run()};$.allowRecurse=!!t;let N;r==="sync"?N=$:r==="post"?N=()=>fe($,c&&c.suspense):($.pre=!0,c&&($.id=c.uid),N=()=>as($));const F=new os(a,N);t?n?$():S=F.run():r==="post"?fe(F.run.bind(F),c&&c.suspense):F.run();const D=()=>{F.stop(),c&&c.scope&&es(c.scope.effects,F)};return A&&A.push(D),D}function Si(e,t,n){const s=this.proxy,r=G(e)?e.includes(".")?Yr(s,e):()=>s[e]:e.bind(s,s);let o;B(t)?o=t:(o=t.handler,n=t);const i=ne;vt(this);const l=Qr(r,o.bind(s),n);return i?vt(i):nt(),l}function Yr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{et(n,t)});else if(vr(e))for(const n in e)et(e[n],t);return e}function yu(e,t){const n=pe;if(n===null)return e;const s=wn(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let o=0;o!!e.type.__asyncLoader,Xr=e=>e.type.__isKeepAlive;function Ii(e,t){Zr(e,"a",t)}function Mi(e,t){Zr(e,"da",t)}function Zr(e,t,n=ne){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(vn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Xr(r.parent.vnode)&&Ni(s,t,n,r),r=r.parent}}function Ni(e,t,n,s){const r=vn(t,e,s,!0);Gr(()=>{es(s[t],r)},n)}function vn(e,t,n=ne,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Rt(),vt(n);const l=Ee(t,n,e,i);return nt(),Pt(),l});return s?r.unshift(o):r.push(o),o}}const Be=e=>(t,n=ne)=>(!Kt||e==="sp")&&vn(e,(...s)=>t(...s),n),Fi=Be("bm"),Li=Be("m"),ji=Be("bu"),Hi=Be("u"),$i=Be("bum"),Gr=Be("um"),Bi=Be("sp"),Ki=Be("rtg"),Ui=Be("rtc");function Di(e,t=ne){vn("ec",e,t)}function bu(e,t,n,s){let r;const o=n&&n[s];if(j(e)||G(e)){r=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;le?ho(e)?wn(e)||e.proxy:Dn(e.parent):null,Mt=se(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=>Dn(e.parent),$root:e=>Dn(e.root),$emit:e=>e.emit,$options:e=>ds(e),$forceUpdate:e=>e.f||(e.f=()=>as(e.update)),$nextTick:e=>e.n||(e.n=Dr.bind(e.proxy)),$watch:e=>Si.bind(e)}),On=(e,t)=>e!==J&&!e.__isScriptSetup&&U(e,t),ki={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const E=i[t];if(E!==void 0)switch(E){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(On(s,t))return i[t]=1,s[t];if(r!==J&&U(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&U(a,t))return i[t]=3,o[t];if(n!==J&&U(n,t))return i[t]=4,n[t];kn&&(i[t]=0)}}const d=Mt[t];let p,g;if(d)return t==="$attrs"&&de(e,"get",t),d(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(n!==J&&U(n,t))return i[t]=4,n[t];if(g=c.config.globalProperties,U(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return On(r,t)?(r[t]=n,!0):s!==J&&U(s,t)?(s[t]=n,!0):U(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==J&&U(e,i)||On(t,i)||(l=o[0])&&U(l,i)||U(s,i)||U(Mt,i)||U(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:U(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ms(e){return j(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let kn=!0;function Wi(e){const t=ds(e),n=e.proxy,s=e.ctx;kn=!1,t.beforeCreate&&Ns(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:d,beforeMount:p,mounted:g,beforeUpdate:E,updated:A,activated:S,deactivated:$,beforeDestroy:N,beforeUnmount:F,destroyed:D,unmounted:L,render:ee,renderTracked:re,renderTriggered:ge,errorCaptured:we,serverPrefetch:ot,expose:Re,inheritAttrs:Ke,components:Ye,directives:Pe,filters:Ct}=t;if(a&&zi(a,s,null),i)for(const Q in i){const W=i[Q];B(W)&&(s[Q]=W.bind(n))}if(r){const Q=r.call(n,n);X(Q)&&(e.data=mn(Q))}if(kn=!0,o)for(const Q in o){const W=o[Q],Ne=B(W)?W.bind(n,n):B(W.get)?W.get.bind(n,n):Ie,Ue=!B(W)&&B(W.set)?W.set.bind(n):Ie,Ce=be({get:Ne,set:Ue});Object.defineProperty(s,Q,{enumerable:!0,configurable:!0,get:()=>Ce.value,set:ue=>Ce.value=ue})}if(l)for(const Q in l)eo(l[Q],s,n,Q);if(c){const Q=B(c)?c.call(n):c;Reflect.ownKeys(Q).forEach(W=>{tn(W,Q[W])})}d&&Ns(d,e,"c");function te(Q,W){j(W)?W.forEach(Ne=>Q(Ne.bind(n))):W&&Q(W.bind(n))}if(te(Fi,p),te(Li,g),te(ji,E),te(Hi,A),te(Ii,S),te(Mi,$),te(Di,we),te(Ui,re),te(Ki,ge),te($i,F),te(Gr,L),te(Bi,ot),j(Re))if(Re.length){const Q=e.exposed||(e.exposed={});Re.forEach(W=>{Object.defineProperty(Q,W,{get:()=>n[W],set:Ne=>n[W]=Ne})})}else e.exposed||(e.exposed={});ee&&e.render===Ie&&(e.render=ee),Ke!=null&&(e.inheritAttrs=Ke),Ye&&(e.components=Ye),Pe&&(e.directives=Pe)}function zi(e,t,n=Ie){j(e)&&(e=Wn(e));for(const s in e){const r=e[s];let o;X(r)?"default"in r?o=$e(r.from||s,r.default,!0):o=$e(r.from||s):o=$e(r),le(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Ns(e,t,n){Ee(j(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function eo(e,t,n,s){const r=s.includes(".")?Yr(n,s):()=>n[s];if(G(e)){const o=t[e];B(o)&&Gt(r,o)}else if(B(e))Gt(r,e.bind(n));else if(X(e))if(j(e))e.forEach(o=>eo(o,t,n,s));else{const o=B(e.handler)?e.handler.bind(n):t[e.handler];B(o)&&Gt(r,o,e)}}function ds(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>ln(c,a,i,!0)),ln(c,t,i)),X(t)&&o.set(t,c),c}function ln(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&ln(e,o,n,!0),r&&r.forEach(i=>ln(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=qi[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const qi={data:Fs,props:Ls,emits:Ls,methods:It,computed:It,beforeCreate:ce,created:ce,beforeMount:ce,mounted:ce,beforeUpdate:ce,updated:ce,beforeDestroy:ce,beforeUnmount:ce,destroyed:ce,unmounted:ce,activated:ce,deactivated:ce,errorCaptured:ce,serverPrefetch:ce,components:It,directives:It,watch:Qi,provide:Fs,inject:Vi};function Fs(e,t){return t?e?function(){return se(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function Vi(e,t){return It(Wn(e),Wn(t))}function Wn(e){if(j(e)){const t={};for(let n=0;n1)return n&&B(t)?t.call(s&&s.proxy):t}}function Xi(e,t,n,s=!1){const r={},o={};sn(o,xn,1),e.propsDefaults=Object.create(null),no(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Nr(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Zi(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=k(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const d=e.vnode.dynamicProps;for(let p=0;p{c=!0;const[g,E]=so(p,t,!0);se(i,g),E&&l.push(...E)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!o&&!c)return X(e)&&s.set(e,ht),ht;if(j(o))for(let d=0;d-1,E[1]=S<0||A-1||U(E,"default"))&&l.push(p)}}}const a=[i,l];return X(e)&&s.set(e,a),a}function js(e){return e[0]!=="$"}function Hs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function $s(e,t){return Hs(e)===Hs(t)}function Bs(e,t){return j(t)?t.findIndex(n=>$s(n,e)):B(t)&&$s(t,e)?0:-1}const ro=e=>e[0]==="_"||e==="$stable",hs=e=>j(e)?e.map(Te):[Te(e)],Gi=(e,t,n)=>{if(t._n)return t;const s=vi((...r)=>hs(t(...r)),n);return s._c=!1,s},oo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ro(r))continue;const o=e[r];if(B(o))t[r]=Gi(r,o,s);else if(o!=null){const i=hs(o);t[r]=()=>i}}},io=(e,t)=>{const n=hs(t);e.slots.default=()=>n},el=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=k(t),sn(t,"_",n)):oo(t,e.slots={})}else e.slots={},t&&io(e,t);sn(e.slots,xn,1)},tl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=J;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(se(r,t),!n&&l===1&&delete r._):(o=!t.$stable,oo(t,r)),i=t}else t&&(io(e,t),i={default:1});if(o)for(const l in r)!ro(l)&&i[l]==null&&delete r[l]};function qn(e,t,n,s,r=!1){if(j(e)){e.forEach((g,E)=>qn(g,t&&(j(t)?t[E]:t),n,s,r));return}if(en(s)&&!r)return;const o=s.shapeFlag&4?wn(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,d=l.refs===J?l.refs={}:l.refs,p=l.setupState;if(a!=null&&a!==c&&(G(a)?(d[a]=null,U(p,a)&&(p[a]=null)):le(a)&&(a.value=null)),B(c))Ve(c,l,12,[i,d]);else{const g=G(c),E=le(c);if(g||E){const A=()=>{if(e.f){const S=g?U(p,c)?p[c]:d[c]:c.value;r?j(S)&&es(S,o):j(S)?S.includes(o)||S.push(o):g?(d[c]=[o],U(p,c)&&(p[c]=d[c])):(c.value=[o],e.k&&(d[e.k]=c.value))}else g?(d[c]=i,U(p,c)&&(p[c]=i)):E&&(c.value=i,e.k&&(d[e.k]=i))};i?(A.id=-1,fe(A,n)):A()}}}const fe=Ti;function nl(e){return sl(e)}function sl(e,t){const n=jn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:d,parentNode:p,nextSibling:g,setScopeId:E=Ie,insertStaticContent:A}=e,S=(u,f,h,m=null,y=null,b=null,P=!1,x=null,w=!!f.dynamicChildren)=>{if(u===f)return;u&&!At(u,f)&&(m=_(u),ue(u,y,b,!0),u=null),f.patchFlag===-2&&(w=!1,f.dynamicChildren=null);const{type:v,ref:I,shapeFlag:O}=f;switch(v){case En:$(u,f,h,m);break;case rt:N(u,f,h,m);break;case An:u==null&&F(f,h,m,P);break;case je:Ye(u,f,h,m,y,b,P,x,w);break;default:O&1?ee(u,f,h,m,y,b,P,x,w):O&6?Pe(u,f,h,m,y,b,P,x,w):(O&64||O&128)&&v.process(u,f,h,m,y,b,P,x,w,R)}I!=null&&y&&qn(I,u&&u.ref,b,f||u,!f)},$=(u,f,h,m)=>{if(u==null)s(f.el=l(f.children),h,m);else{const y=f.el=u.el;f.children!==u.children&&a(y,f.children)}},N=(u,f,h,m)=>{u==null?s(f.el=c(f.children||""),h,m):f.el=u.el},F=(u,f,h,m)=>{[u.el,u.anchor]=A(u.children,f,h,m,u.el,u.anchor)},D=({el:u,anchor:f},h,m)=>{let y;for(;u&&u!==f;)y=g(u),s(u,h,m),u=y;s(f,h,m)},L=({el:u,anchor:f})=>{let h;for(;u&&u!==f;)h=g(u),r(u),u=h;r(f)},ee=(u,f,h,m,y,b,P,x,w)=>{P=P||f.type==="svg",u==null?re(f,h,m,y,b,P,x,w):ot(u,f,y,b,P,x,w)},re=(u,f,h,m,y,b,P,x)=>{let w,v;const{type:I,props:O,shapeFlag:M,transition:H,dirs:K}=u;if(w=u.el=i(u.type,b,O&&O.is,O),M&8?d(w,u.children):M&16&&we(u.children,w,null,m,y,b&&I!=="foreignObject",P,x),K&&Je(u,null,m,"created"),ge(w,u,u.scopeId,P,m),O){for(const V in O)V!=="value"&&!Xt(V)&&o(w,V,null,O[V],b,u.children,m,y,oe);"value"in O&&o(w,"value",null,O.value),(v=O.onVnodeBeforeMount)&&Ae(v,m,u)}K&&Je(u,null,m,"beforeMount");const Y=rl(y,H);Y&&H.beforeEnter(w),s(w,f,h),((v=O&&O.onVnodeMounted)||Y||K)&&fe(()=>{v&&Ae(v,m,u),Y&&H.enter(w),K&&Je(u,null,m,"mounted")},y)},ge=(u,f,h,m,y)=>{if(h&&E(u,h),m)for(let b=0;b{for(let v=w;v{const x=f.el=u.el;let{patchFlag:w,dynamicChildren:v,dirs:I}=f;w|=u.patchFlag&16;const O=u.props||J,M=f.props||J;let H;h&&Xe(h,!1),(H=M.onVnodeBeforeUpdate)&&Ae(H,h,f,u),I&&Je(f,u,h,"beforeUpdate"),h&&Xe(h,!0);const K=y&&f.type!=="foreignObject";if(v?Re(u.dynamicChildren,v,x,h,m,K,b):P||W(u,f,x,null,h,m,K,b,!1),w>0){if(w&16)Ke(x,f,O,M,h,m,y);else if(w&2&&O.class!==M.class&&o(x,"class",null,M.class,y),w&4&&o(x,"style",O.style,M.style,y),w&8){const Y=f.dynamicProps;for(let V=0;V{H&&Ae(H,h,f,u),I&&Je(f,u,h,"updated")},m)},Re=(u,f,h,m,y,b,P)=>{for(let x=0;x{if(h!==m){if(h!==J)for(const x in h)!Xt(x)&&!(x in m)&&o(u,x,h[x],null,P,f.children,y,b,oe);for(const x in m){if(Xt(x))continue;const w=m[x],v=h[x];w!==v&&x!=="value"&&o(u,x,v,w,P,f.children,y,b,oe)}"value"in m&&o(u,"value",h.value,m.value)}},Ye=(u,f,h,m,y,b,P,x,w)=>{const v=f.el=u?u.el:l(""),I=f.anchor=u?u.anchor:l("");let{patchFlag:O,dynamicChildren:M,slotScopeIds:H}=f;H&&(x=x?x.concat(H):H),u==null?(s(v,h,m),s(I,h,m),we(f.children,h,I,y,b,P,x,w)):O>0&&O&64&&M&&u.dynamicChildren?(Re(u.dynamicChildren,M,h,y,b,P,x),(f.key!=null||y&&f===y.subTree)&&lo(u,f,!0)):W(u,f,h,I,y,b,P,x,w)},Pe=(u,f,h,m,y,b,P,x,w)=>{f.slotScopeIds=x,u==null?f.shapeFlag&512?y.ctx.activate(f,h,m,P,w):Ct(f,h,m,y,b,P,w):it(u,f,w)},Ct=(u,f,h,m,y,b,P)=>{const x=u.component=ml(u,m,y);if(Xr(u)&&(x.ctx.renderer=R),_l(x),x.asyncDep){if(y&&y.registerDep(x,te),!u.el){const w=x.subTree=ae(rt);N(null,w,f,h)}return}te(x,u,f,h,y,b,P)},it=(u,f,h)=>{const m=f.component=u.component;if(wi(u,f,h))if(m.asyncDep&&!m.asyncResolved){Q(m,f,h);return}else m.next=f,mi(m.update),m.update();else f.el=u.el,m.vnode=f},te=(u,f,h,m,y,b,P)=>{const x=()=>{if(u.isMounted){let{next:I,bu:O,u:M,parent:H,vnode:K}=u,Y=I,V;Xe(u,!1),I?(I.el=K.el,Q(u,I,P)):I=K,O&&Zt(O),(V=I.props&&I.props.onVnodeBeforeUpdate)&&Ae(V,H,I,K),Xe(u,!0);const Z=Cn(u),me=u.subTree;u.subTree=Z,S(me,Z,p(me.el),_(me),u,y,b),I.el=Z.el,Y===null&&Ri(u,Z.el),M&&fe(M,y),(V=I.props&&I.props.onVnodeUpdated)&&fe(()=>Ae(V,H,I,K),y)}else{let I;const{el:O,props:M}=f,{bm:H,m:K,parent:Y}=u,V=en(f);if(Xe(u,!1),H&&Zt(H),!V&&(I=M&&M.onVnodeBeforeMount)&&Ae(I,Y,f),Xe(u,!0),O&&z){const Z=()=>{u.subTree=Cn(u),z(O,u.subTree,u,y,null)};V?f.type.__asyncLoader().then(()=>!u.isUnmounted&&Z()):Z()}else{const Z=u.subTree=Cn(u);S(null,Z,h,m,u,y,b),f.el=Z.el}if(K&&fe(K,y),!V&&(I=M&&M.onVnodeMounted)){const Z=f;fe(()=>Ae(I,Y,Z),y)}(f.shapeFlag&256||Y&&en(Y.vnode)&&Y.vnode.shapeFlag&256)&&u.a&&fe(u.a,y),u.isMounted=!0,f=h=m=null}},w=u.effect=new os(x,()=>as(v),u.scope),v=u.update=()=>w.run();v.id=u.uid,Xe(u,!0),v()},Q=(u,f,h)=>{f.component=u;const m=u.vnode.props;u.vnode=f,u.next=null,Zi(u,f.props,m,h),tl(u,f.children,h),Rt(),Ts(),Pt()},W=(u,f,h,m,y,b,P,x,w=!1)=>{const v=u&&u.children,I=u?u.shapeFlag:0,O=f.children,{patchFlag:M,shapeFlag:H}=f;if(M>0){if(M&128){Ue(v,O,h,m,y,b,P,x,w);return}else if(M&256){Ne(v,O,h,m,y,b,P,x,w);return}}H&8?(I&16&&oe(v,y,b),O!==v&&d(h,O)):I&16?H&16?Ue(v,O,h,m,y,b,P,x,w):oe(v,y,b,!0):(I&8&&d(h,""),H&16&&we(O,h,m,y,b,P,x,w))},Ne=(u,f,h,m,y,b,P,x,w)=>{u=u||ht,f=f||ht;const v=u.length,I=f.length,O=Math.min(v,I);let M;for(M=0;MI?oe(u,y,b,!0,!1,O):we(f,h,m,y,b,P,x,w,O)},Ue=(u,f,h,m,y,b,P,x,w)=>{let v=0;const I=f.length;let O=u.length-1,M=I-1;for(;v<=O&&v<=M;){const H=u[v],K=f[v]=w?We(f[v]):Te(f[v]);if(At(H,K))S(H,K,h,null,y,b,P,x,w);else break;v++}for(;v<=O&&v<=M;){const H=u[O],K=f[M]=w?We(f[M]):Te(f[M]);if(At(H,K))S(H,K,h,null,y,b,P,x,w);else break;O--,M--}if(v>O){if(v<=M){const H=M+1,K=HM)for(;v<=O;)ue(u[v],y,b,!0),v++;else{const H=v,K=v,Y=new Map;for(v=K;v<=M;v++){const he=f[v]=w?We(f[v]):Te(f[v]);he.key!=null&&Y.set(he.key,v)}let V,Z=0;const me=M-K+1;let ut=!1,ys=0;const Ot=new Array(me);for(v=0;v=me){ue(he,y,b,!0);continue}let Oe;if(he.key!=null)Oe=Y.get(he.key);else for(V=K;V<=M;V++)if(Ot[V-K]===0&&At(he,f[V])){Oe=V;break}Oe===void 0?ue(he,y,b,!0):(Ot[Oe-K]=v+1,Oe>=ys?ys=Oe:ut=!0,S(he,f[Oe],h,null,y,b,P,x,w),Z++)}const bs=ut?ol(Ot):ht;for(V=bs.length-1,v=me-1;v>=0;v--){const he=K+v,Oe=f[he],vs=he+1{const{el:b,type:P,transition:x,children:w,shapeFlag:v}=u;if(v&6){Ce(u.component.subTree,f,h,m);return}if(v&128){u.suspense.move(f,h,m);return}if(v&64){P.move(u,f,h,R);return}if(P===je){s(b,f,h);for(let O=0;Ox.enter(b),y);else{const{leave:O,delayLeave:M,afterLeave:H}=x,K=()=>s(b,f,h),Y=()=>{O(b,()=>{K(),H&&H()})};M?M(b,K,Y):Y()}else s(b,f,h)},ue=(u,f,h,m=!1,y=!1)=>{const{type:b,props:P,ref:x,children:w,dynamicChildren:v,shapeFlag:I,patchFlag:O,dirs:M}=u;if(x!=null&&qn(x,null,h,u,!0),I&256){f.ctx.deactivate(u);return}const H=I&1&&M,K=!en(u);let Y;if(K&&(Y=P&&P.onVnodeBeforeUnmount)&&Ae(Y,f,u),I&6)kt(u.component,h,m);else{if(I&128){u.suspense.unmount(h,m);return}H&&Je(u,null,f,"beforeUnmount"),I&64?u.type.remove(u,f,h,y,R,m):v&&(b!==je||O>0&&O&64)?oe(v,f,h,!1,!0):(b===je&&O&384||!y&&I&16)&&oe(w,f,h),m&<(u)}(K&&(Y=P&&P.onVnodeUnmounted)||H)&&fe(()=>{Y&&Ae(Y,f,u),H&&Je(u,null,f,"unmounted")},h)},lt=u=>{const{type:f,el:h,anchor:m,transition:y}=u;if(f===je){ct(h,m);return}if(f===An){L(u);return}const b=()=>{r(h),y&&!y.persisted&&y.afterLeave&&y.afterLeave()};if(u.shapeFlag&1&&y&&!y.persisted){const{leave:P,delayLeave:x}=y,w=()=>P(h,b);x?x(u.el,b,w):w()}else b()},ct=(u,f)=>{let h;for(;u!==f;)h=g(u),r(u),u=h;r(f)},kt=(u,f,h)=>{const{bum:m,scope:y,update:b,subTree:P,um:x}=u;m&&Zt(m),y.stop(),b&&(b.active=!1,ue(P,u,f,h)),x&&fe(x,f),fe(()=>{u.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},oe=(u,f,h,m=!1,y=!1,b=0)=>{for(let P=b;Pu.shapeFlag&6?_(u.component.subTree):u.shapeFlag&128?u.suspense.next():g(u.anchor||u.el),C=(u,f,h)=>{u==null?f._vnode&&ue(f._vnode,null,null,!0):S(f._vnode||null,u,f,null,null,null,h),Ts(),Wr(),f._vnode=u},R={p:S,um:ue,m:Ce,r:lt,mt:Ct,mc:we,pc:W,pbc:Re,n:_,o:e};let T,z;return t&&([T,z]=t(R)),{render:C,hydrate:T,createApp:Ji(C,T)}}function Xe({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function rl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function lo(e,t,n=!1){const s=e.children,r=t.children;if(j(s)&&j(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}const il=e=>e.__isTeleport,je=Symbol.for("v-fgt"),En=Symbol.for("v-txt"),rt=Symbol.for("v-cmt"),An=Symbol.for("v-stc"),Nt=[];let ve=null;function co(e=!1){Nt.push(ve=e?null:[])}function ll(){Nt.pop(),ve=Nt[Nt.length-1]||null}let Bt=1;function Ks(e){Bt+=e}function uo(e){return e.dynamicChildren=Bt>0?ve||ht:null,ll(),Bt>0&&ve&&ve.push(e),e}function cl(e,t,n,s,r,o){return uo(ao(e,t,n,s,r,o,!0))}function ul(e,t,n,s,r){return uo(ae(e,t,n,s,r,!0))}function Vn(e){return e?e.__v_isVNode===!0:!1}function At(e,t){return e.type===t.type&&e.key===t.key}const xn="__vInternal",fo=({key:e})=>e??null,nn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?G(e)||le(e)||B(e)?{i:pe,r:e,k:t,f:!!n}:e:null);function ao(e,t=null,n=null,s=0,r=null,o=e===je?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&fo(t),ref:t&&nn(t),scopeId:bn,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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:pe};return l?(ps(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=G(n)?8:16),Bt>0&&!i&&ve&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&ve.push(c),c}const ae=fl;function fl(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Ci)&&(e=rt),Vn(e)){const l=bt(e,t,!0);return n&&ps(l,n),Bt>0&&!o&&ve&&(l.shapeFlag&6?ve[ve.indexOf(e)]=l:ve.push(l)),l.patchFlag|=-2,l}if(xl(e)&&(e=e.__vccOpts),t){t=al(t);let{class:l,style:c}=t;l&&!G(l)&&(t.class=ss(l)),X(c)&&(Lr(c)&&!j(c)&&(c=se({},c)),t.style=ns(c))}const i=G(e)?1:Ai(e)?128:il(e)?64:X(e)?4:B(e)?2:0;return ao(e,t,n,s,r,i,o,!0)}function al(e){return e?Lr(e)||xn in e?se({},e):e:null}function bt(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:i}=e,l=t?hl(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&fo(l),ref:t&&t.ref?n&&r?j(r)?r.concat(nn(t)):[r,nn(t)]:nn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==je?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&bt(e.ssContent),ssFallback:e.ssFallback&&bt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function dl(e=" ",t=0){return ae(En,null,e,t)}function vu(e="",t=!1){return t?(co(),ul(rt,null,e)):ae(rt,null,e)}function Te(e){return e==null||typeof e=="boolean"?ae(rt):j(e)?ae(je,null,e.slice()):typeof e=="object"?We(e):ae(En,null,String(e))}function We(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bt(e)}function ps(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(j(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ps(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(xn in t)?t._ctx=pe:r===3&&pe&&(pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:pe},n=32):(t=String(t),s&64?(n=16,t=[dl(t)]):n=8);e.children=t,e.shapeFlag|=n}function hl(...e){const t={};for(let n=0;nne=e),gs=e=>{ft.length>1?ft.forEach(t=>t(e)):ft[0](e)};const vt=e=>{gs(e),e.scope.on()},nt=()=>{ne&&ne.scope.off(),gs(null)};function ho(e){return e.vnode.shapeFlag&4}let Kt=!1;function _l(e,t=!1){Kt=t;const{props:n,children:s}=e.vnode,r=ho(e);Xi(e,n,r,t),el(e,s);const o=r?yl(e,t):void 0;return Kt=!1,o}function yl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=jr(new Proxy(e.ctx,ki));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?vl(e):null;vt(e),Rt();const o=Ve(s,e,0,[e.props,r]);if(Pt(),nt(),yr(o)){if(o.then(nt,nt),t)return o.then(i=>{Ds(e,i,t)}).catch(i=>{_n(i,e,0)});e.asyncDep=o}else Ds(e,o,t)}else po(e,t)}function Ds(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=Kr(t)),po(e,n)}let ks;function po(e,t,n){const s=e.type;if(!e.render){if(!t&&ks&&!s.render){const r=s.template||ds(e).template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,a=se(se({isCustomElement:o,delimiters:l},i),c);s.render=ks(r,a)}}e.render=s.render||Ie}{vt(e),Rt();try{Wi(e)}finally{Pt(),nt()}}}function bl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return de(e,"get","$attrs"),t[n]}}))}function vl(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return bl(e)},slots:e.slots,emit:e.emit,expose:t}}function wn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Kr(jr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Mt)return Mt[n](e)},has(t,n){return n in t||n in Mt}}))}function El(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function xl(e){return B(e)&&"__vccOpts"in e}const be=(e,t)=>hi(e,t,Kt);function go(e,t,n){const s=arguments.length;return s===2?X(t)&&!j(t)?Vn(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Vn(n)&&(n=[n]),ae(e,t,n))}const wl=Symbol.for("v-scx"),Rl=()=>$e(wl),Pl="3.3.9",Cl="http://www.w3.org/2000/svg",Ge=typeof document<"u"?document:null,Ws=Ge&&Ge.createElement("template"),Ol={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 r=t?Ge.createElementNS(Cl,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Ws.innerHTML=s?``:e;const l=Ws.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]}},Al=Symbol("_vtc");function Tl(e,t,n){const s=e[Al];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Sl=Symbol("_vod");function Il(e,t,n){const s=e.style,r=G(n);if(n&&!r){if(t&&!G(t))for(const o in t)n[o]==null&&Qn(s,o,"");for(const o in n)Qn(s,o,n[o])}else{const o=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),Sl in e&&(s.display=o)}}const zs=/\s*!important$/;function Qn(e,t,n){if(j(n))n.forEach(s=>Qn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ml(e,t);zs.test(n)?e.setProperty(wt(s),n.replace(zs,""),"important"):e[s]=n}}const qs=["Webkit","Moz","ms"],Tn={};function Ml(e,t){const n=Tn[t];if(n)return n;let s=Me(t);if(s!=="filter"&&s in e)return Tn[t]=s;s=pn(s);for(let r=0;rSn||($l.then(()=>Sn=0),Sn=Date.now());function Kl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ee(Ul(s,n.value),t,5,[s])};return n.value=e,n.attached=Bl(),n}function Ul(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Js=/^on[a-z]/,Dl=(e,t,n,s,r=!1,o,i,l,c)=>{t==="class"?Tl(e,s,r):t==="style"?Il(e,n,s):fn(t)?Gn(t)||jl(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):kl(e,t,s,r))?Fl(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Nl(e,t,s,r))};function kl(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Js.test(t)&&B(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Js.test(t)&&G(n)?!1:t in e}const Xs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?n=>Zt(t,n):t};function Wl(e){e.target.composing=!0}function Zs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const In=Symbol("_assign"),Eu={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[In]=Xs(r);const o=s||r.props&&r.props.type==="number";at(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=Ln(l)),e[In](l)}),n&&at(e,"change",()=>{e.value=e.value.trim()}),t||(at(e,"compositionstart",Wl),at(e,"compositionend",Zs),at(e,"change",Zs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},o){if(e[In]=Xs(o),e.composing)return;const i=r||e.type==="number"?Ln(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===l)||(e.value=l))}},zl=["ctrl","shift","alt","meta"],ql={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)=>zl.some(n=>e[`${n}Key`]&&!t.includes(n))},xu=(e,t)=>(n,...s)=>{for(let r=0;r{const t=Ql().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Jl(s);if(!r)return;const o=t._component;!B(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Jl(e){return G(e)?document.querySelector(e):e}const Xl=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Zl={},Gl={id:"main"};function ec(e,t){const n=Pi("router-view");return co(),cl("div",Gl,[ae(n)])}const tc=Xl(Zl,[["render",ec],["__scopeId","data-v-5d2b6343"]]);/*!
* vue-router v4.2.5
* (c) 2023 Eduardo San Martin Morote
* @license MIT
- */const dt=typeof window<"u";function nc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const q=Object.assign;function In(e,t){const n={};for(const s in t){const r=t[s];n[s]=xe(r)?r.map(e):e(r)}return n}const Ft=()=>{},xe=Array.isArray,sc=/\/$/,rc=e=>e.replace(sc,"");function Mn(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return l=0&&(c=-1),c>-1&&(s=t.slice(0,c),o=t.slice(c+1,l>-1?l:t.length),r=e(o)),l>-1&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=cc(s??t,n),{fullPath:s+(o&&"?")+o+i,path:s,query:r,hash:i}}function oc(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function er(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ic(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Et(t.matched[s],n.matched[r])&&mo(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Et(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function mo(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!lc(e[n],t[n]))return!1;return!0}function lc(e,t){return xe(e)?tr(e,t):xe(t)?tr(t,e):e===t}function tr(e,t){return xe(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function cc(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i-(i===s.length?1:0)).join("/")}var Ut;(function(e){e.pop="pop",e.push="push"})(Ut||(Ut={}));var Lt;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Lt||(Lt={}));function uc(e){if(!e)if(dt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),rc(e)}const fc=/^[^#]+#/;function ac(e,t){return e.replace(fc,"#")+t}function dc(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const xn=()=>({left:window.pageXOffset,top:window.pageYOffset});function hc(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=dc(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function nr(e,t){return(history.state?history.state.position-t:-1)+e}const Yn=new Map;function pc(e,t){Yn.set(e,t)}function gc(e){const t=Yn.get(e);return Yn.delete(e),t}let mc=()=>location.protocol+"//"+location.host;function _o(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let l=r.includes(e.slice(o))?e.slice(o).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),er(c,"")}return er(n,e)+s+r}function _c(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const E=_o(e,location),A=n.value,S=t.value;let $=0;if(g){if(n.value=E,t.value=g,i&&i===A){i=null;return}$=S?g.position-S.position:0}else s(E);r.forEach(N=>{N(n.value,A,{delta:$,type:Ut.pop,direction:$?$>0?Lt.forward:Lt.back:Lt.unknown})})};function c(){i=n.value}function a(g){r.push(g);const E=()=>{const A=r.indexOf(g);A>-1&&r.splice(A,1)};return o.push(E),E}function d(){const{history:g}=window;g.state&&g.replaceState(q({},g.state,{scroll:xn()}),"")}function p(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:c,listen:a,destroy:p}}function sr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?xn():null}}function yc(e){const{history:t,location:n}=window,s={value:_o(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,d){const p=e.indexOf("#"),g=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+c:mc()+e+c;try{t[d?"replaceState":"pushState"](a,"",g),r.value=a}catch(E){console.error(E),n[d?"replace":"assign"](g)}}function i(c,a){const d=q({},t.state,sr(r.value.back,c,r.value.forward,!0),a,{position:r.value.position});o(c,d,!0),s.value=c}function l(c,a){const d=q({},r.value,t.state,{forward:c,scroll:xn()});o(d.current,d,!0);const p=q({},sr(s.value,c,null),{position:d.position+1},a);o(c,p,!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function bc(e){e=uc(e);const t=yc(e),n=_c(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=q({location:"",base:e,go:s,createHref:ac.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function vc(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),bc(e)}function Ec(e){return typeof e=="string"||e&&typeof e=="object"}function yo(e){return typeof e=="string"||typeof e=="symbol"}const ke={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},bo=Symbol("");var rr;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(rr||(rr={}));function xt(e,t){return q(new Error,{type:e,[bo]:!0},t)}function Fe(e,t){return e instanceof Error&&bo in e&&(t==null||!!(e.type&t))}const or="[^/]+?",xc={sensitive:!1,strict:!1,start:!0,end:!0},wc=/[.+*?^${}()[\]/\\]/g;function Rc(e,t){const n=q({},xc,t),s=[];let r=n.start?"^":"";const o=[];for(const a of e){const d=a.length?[]:[90];n.strict&&!a.length&&(r+="/");for(let p=0;pt.length?t.length===1&&t[0]===80?1:-1:0}function Cc(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Oc={type:0,value:""},Ac=/[a-zA-Z0-9_]/;function Tc(e){if(!e)return[[]];if(e==="/")return[[Oc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(E){throw new Error(`ERR (${n})/"${a}": ${E}`)}let n=0,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",d="";function p(){a&&(n===0?o.push({type:0,value:a}):n===1||n===2||n===3?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:a,regexp:d,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function g(){a+=c}for(;l{i(F)}:Ft}function i(d){if(yo(d)){const p=s.get(d);p&&(s.delete(d),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(d);p>-1&&(n.splice(p,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function l(){return n}function c(d){let p=0;for(;p=0&&(d.record.path!==n[p].record.path||!vo(d,n[p]));)p++;n.splice(p,0,d),d.record.name&&!cr(d)&&s.set(d.record.name,d)}function a(d,p){let g,E={},A,S;if("name"in d&&d.name){if(g=s.get(d.name),!g)throw xt(1,{location:d});S=g.record.name,E=q(lr(p.params,g.keys.filter(F=>!F.optional).map(F=>F.name)),d.params&&lr(d.params,g.keys.map(F=>F.name))),A=g.stringify(E)}else if("path"in d)A=d.path,g=n.find(F=>F.re.test(A)),g&&(E=g.parse(A),S=g.record.name);else{if(g=p.name?s.get(p.name):n.find(F=>F.re.test(p.path)),!g)throw xt(1,{location:d,currentLocation:p});S=g.record.name,E=q({},p.params,d.params),A=g.stringify(E)}const $=[];let N=g;for(;N;)$.unshift(N.record),N=N.parent;return{name:S,path:A,params:E,matched:$,meta:Fc($)}}return e.forEach(d=>o(d)),{addRoute:o,resolve:a,removeRoute:i,getRoutes:l,getRecordMatcher:r}}function lr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Mc(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:Nc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function Nc(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function cr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Fc(e){return e.reduce((t,n)=>q(t,n.meta),{})}function ur(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function vo(e,t){return t.children.some(n=>n===e||vo(e,n))}const Eo=/#/g,Lc=/&/g,jc=/\//g,Hc=/=/g,$c=/\?/g,xo=/\+/g,Bc=/%5B/g,Kc=/%5D/g,wo=/%5E/g,Uc=/%60/g,Ro=/%7B/g,Dc=/%7C/g,Po=/%7D/g,kc=/%20/g;function ms(e){return encodeURI(""+e).replace(Dc,"|").replace(Bc,"[").replace(Kc,"]")}function Wc(e){return ms(e).replace(Ro,"{").replace(Po,"}").replace(wo,"^")}function Jn(e){return ms(e).replace(xo,"%2B").replace(kc,"+").replace(Eo,"%23").replace(Lc,"%26").replace(Uc,"`").replace(Ro,"{").replace(Po,"}").replace(wo,"^")}function zc(e){return Jn(e).replace(Hc,"%3D")}function qc(e){return ms(e).replace(Eo,"%23").replace($c,"%3F")}function Vc(e){return e==null?"":qc(e).replace(jc,"%2F")}function ln(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function Qc(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&Jn(o)):[s&&Jn(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Yc(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=xe(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Jc=Symbol(""),ar=Symbol(""),_s=Symbol(""),Co=Symbol(""),Xn=Symbol("");function Tt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function ze(e,t,n,s,r){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((i,l)=>{const c=p=>{p===!1?l(xt(4,{from:n,to:t})):p instanceof Error?l(p):Ec(p)?l(xt(2,{from:t,to:p})):(o&&s.enterCallbacks[r]===o&&typeof p=="function"&&o.push(p),i())},a=e.call(s&&s.instances[r],t,n,c);let d=Promise.resolve(a);e.length<3&&(d=d.then(c)),d.catch(p=>l(p))})}function Nn(e,t,n,s){const r=[];for(const o of e)for(const i in o.components){let l=o.components[i];if(!(t!=="beforeRouteEnter"&&!o.instances[i]))if(Xc(l)){const a=(l.__vccOpts||l)[t];a&&r.push(ze(a,n,s,o,i))}else{let c=l();r.push(()=>c.then(a=>{if(!a)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${o.path}"`));const d=nc(a)?a.default:a;o.components[i]=d;const g=(d.__vccOpts||d)[t];return g&&ze(g,n,s,o,i)()}))}}return r}function Xc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function dr(e){const t=$e(_s),n=$e(Co),s=be(()=>t.resolve(mt(e.to))),r=be(()=>{const{matched:c}=s.value,{length:a}=c,d=c[a-1],p=n.matched;if(!d||!p.length)return-1;const g=p.findIndex(Et.bind(null,d));if(g>-1)return g;const E=hr(c[a-2]);return a>1&&hr(d)===E&&p[p.length-1].path!==E?p.findIndex(Et.bind(null,c[a-2])):g}),o=be(()=>r.value>-1&&tu(n.params,s.value.params)),i=be(()=>r.value>-1&&r.value===n.matched.length-1&&mo(n.params,s.value.params));function l(c={}){return eu(c)?t[mt(e.replace)?"replace":"push"](mt(e.to)).catch(Ft):Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}const Zc=Jr({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:dr,setup(e,{slots:t}){const n=pn(dr(e)),{options:s}=$e(_s),r=be(()=>({[pr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[pr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:go("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Gc=Zc;function eu(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function tu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!xe(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function hr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const pr=(e,t,n)=>e??t??n,nu=Jr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=$e(Xn),r=be(()=>e.route||s.value),o=$e(ar,0),i=be(()=>{let a=mt(o);const{matched:d}=r.value;let p;for(;(p=d[a])&&!p.components;)a++;return a}),l=be(()=>r.value.matched[i.value]);Gt(ar,be(()=>i.value+1)),Gt(Jc,l),Gt(Xn,r);const c=ci();return Xt(()=>[c.value,l.value,e.name],([a,d,p],[g,E,A])=>{d&&(d.instances[p]=a,E&&E!==d&&a&&a===g&&(d.leaveGuards.size||(d.leaveGuards=E.leaveGuards),d.updateGuards.size||(d.updateGuards=E.updateGuards))),a&&d&&(!E||!Et(d,E)||!g)&&(d.enterCallbacks[p]||[]).forEach(S=>S(a))},{flush:"post"}),()=>{const a=r.value,d=e.name,p=l.value,g=p&&p.components[d];if(!g)return gr(n.default,{Component:g,route:a});const E=p.props[d],A=E?E===!0?a.params:typeof E=="function"?E(a):E:null,$=go(g,q({},A,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(p.instances[d]=null)},ref:c}));return gr(n.default,{Component:$,route:a})||$}}});function gr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const su=nu;function ru(e){const t=Ic(e.routes,e),n=e.parseQuery||Qc,s=e.stringifyQuery||fr,r=e.history,o=Tt(),i=Tt(),l=Tt(),c=ui(ke);let a=ke;dt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=In.bind(null,_=>""+_),p=In.bind(null,Vc),g=In.bind(null,ln);function E(_,C){let R,T;return yo(_)?(R=t.getRecordMatcher(_),T=C):T=_,t.addRoute(T,R)}function A(_){const C=t.getRecordMatcher(_);C&&t.removeRoute(C)}function S(){return t.getRoutes().map(_=>_.record)}function $(_){return!!t.getRecordMatcher(_)}function N(_,C){if(C=q({},C||c.value),typeof _=="string"){const h=Mn(n,_,C.path),m=t.resolve({path:h.path},C),y=r.createHref(h.fullPath);return q(h,m,{params:g(m.params),hash:ln(h.hash),redirectedFrom:void 0,href:y})}let R;if("path"in _)R=q({},_,{path:Mn(n,_.path,C.path).path});else{const h=q({},_.params);for(const m in h)h[m]==null&&delete h[m];R=q({},_,{params:p(h)}),C.params=p(C.params)}const T=t.resolve(R,C),z=_.hash||"";T.params=d(g(T.params));const u=oc(s,q({},_,{hash:Wc(z),path:T.path})),f=r.createHref(u);return q({fullPath:u,hash:z,query:s===fr?Yc(_.query):_.query||{}},T,{redirectedFrom:void 0,href:f})}function F(_){return typeof _=="string"?Mn(n,_,c.value.path):q({},_)}function D(_,C){if(a!==_)return xt(8,{from:C,to:_})}function L(_){return ge(_)}function ee(_){return L(q(F(_),{replace:!0}))}function re(_){const C=_.matched[_.matched.length-1];if(C&&C.redirect){const{redirect:R}=C;let T=typeof R=="function"?R(_):R;return typeof T=="string"&&(T=T.includes("?")||T.includes("#")?T=F(T):{path:T},T.params={}),q({query:_.query,hash:_.hash,params:"path"in T?{}:_.params},T)}}function ge(_,C){const R=a=N(_),T=c.value,z=_.state,u=_.force,f=_.replace===!0,h=re(R);if(h)return ge(q(F(h),{state:typeof h=="object"?q({},z,h.state):z,force:u,replace:f}),C||R);const m=R;m.redirectedFrom=C;let y;return!u&&ic(s,T,R)&&(y=xt(16,{to:m,from:T}),Ce(T,T,!0,!1)),(y?Promise.resolve(y):Re(m,T)).catch(b=>Fe(b)?Fe(b,2)?b:Ue(b):W(b,m,T)).then(b=>{if(b){if(Fe(b,2))return ge(q({replace:f},F(b.to),{state:typeof b.to=="object"?q({},z,b.to.state):z,force:u}),C||m)}else b=Ye(m,T,!0,f,z);return Ke(m,T,b),b})}function we(_,C){const R=D(_,C);return R?Promise.reject(R):Promise.resolve()}function ot(_){const C=ct.values().next().value;return C&&typeof C.runWithContext=="function"?C.runWithContext(_):_()}function Re(_,C){let R;const[T,z,u]=ou(_,C);R=Nn(T.reverse(),"beforeRouteLeave",_,C);for(const h of T)h.leaveGuards.forEach(m=>{R.push(ze(m,_,C))});const f=we.bind(null,_,C);return R.push(f),oe(R).then(()=>{R=[];for(const h of o.list())R.push(ze(h,_,C));return R.push(f),oe(R)}).then(()=>{R=Nn(z,"beforeRouteUpdate",_,C);for(const h of z)h.updateGuards.forEach(m=>{R.push(ze(m,_,C))});return R.push(f),oe(R)}).then(()=>{R=[];for(const h of u)if(h.beforeEnter)if(xe(h.beforeEnter))for(const m of h.beforeEnter)R.push(ze(m,_,C));else R.push(ze(h.beforeEnter,_,C));return R.push(f),oe(R)}).then(()=>(_.matched.forEach(h=>h.enterCallbacks={}),R=Nn(u,"beforeRouteEnter",_,C),R.push(f),oe(R))).then(()=>{R=[];for(const h of i.list())R.push(ze(h,_,C));return R.push(f),oe(R)}).catch(h=>Fe(h,8)?h:Promise.reject(h))}function Ke(_,C,R){l.list().forEach(T=>ot(()=>T(_,C,R)))}function Ye(_,C,R,T,z){const u=D(_,C);if(u)return u;const f=C===ke,h=dt?history.state:{};R&&(T||f?r.replace(_.fullPath,q({scroll:f&&h&&h.scroll},z)):r.push(_.fullPath,z)),c.value=_,Ce(_,C,R,f),Ue()}let Pe;function Ct(){Pe||(Pe=r.listen((_,C,R)=>{if(!Dt.listening)return;const T=N(_),z=re(T);if(z){ge(q(z,{replace:!0}),T).catch(Ft);return}a=T;const u=c.value;dt&&pc(nr(u.fullPath,R.delta),xn()),Re(T,u).catch(f=>Fe(f,12)?f:Fe(f,2)?(ge(f.to,T).then(h=>{Fe(h,20)&&!R.delta&&R.type===Ut.pop&&r.go(-1,!1)}).catch(Ft),Promise.reject()):(R.delta&&r.go(-R.delta,!1),W(f,T,u))).then(f=>{f=f||Ye(T,u,!1),f&&(R.delta&&!Fe(f,8)?r.go(-R.delta,!1):R.type===Ut.pop&&Fe(f,20)&&r.go(-1,!1)),Ke(T,u,f)}).catch(Ft)}))}let it=Tt(),te=Tt(),Q;function W(_,C,R){Ue(_);const T=te.list();return T.length?T.forEach(z=>z(_,C,R)):console.error(_),Promise.reject(_)}function Ne(){return Q&&c.value!==ke?Promise.resolve():new Promise((_,C)=>{it.add([_,C])})}function Ue(_){return Q||(Q=!_,Ct(),it.list().forEach(([C,R])=>_?R(_):C()),it.reset()),_}function Ce(_,C,R,T){const{scrollBehavior:z}=e;if(!dt||!z)return Promise.resolve();const u=!R&&gc(nr(_.fullPath,0))||(T||!R)&&history.state&&history.state.scroll||null;return Dr().then(()=>z(_,C,u)).then(f=>f&&hc(f)).catch(f=>W(f,_,C))}const ue=_=>r.go(_);let lt;const ct=new Set,Dt={currentRoute:c,listening:!0,addRoute:E,removeRoute:A,hasRoute:$,getRoutes:S,resolve:N,options:e,push:L,replace:ee,go:ue,back:()=>ue(-1),forward:()=>ue(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:te.add,isReady:Ne,install(_){const C=this;_.component("RouterLink",Gc),_.component("RouterView",su),_.config.globalProperties.$router=C,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>mt(c)}),dt&&!lt&&c.value===ke&&(lt=!0,L(r.location).catch(z=>{}));const R={};for(const z in ke)Object.defineProperty(R,z,{get:()=>c.value[z],enumerable:!0});_.provide(_s,C),_.provide(Co,Nr(R)),_.provide(Xn,c);const T=_.unmount;ct.add(_),_.unmount=function(){ct.delete(_),ct.size<1&&(a=ke,Pe&&Pe(),Pe=null,c.value=ke,lt=!1,Q=!1),T()}}};function oe(_){return _.reduce((C,R)=>C.then(()=>ot(R)),Promise.resolve())}return Dt}function ou(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iEt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Et(a,c))||r.push(c))}return[n,s,r]}const iu="modulepreload",lu=function(e,t){return new URL(e,t).href},mr={},wn=function(t,n,s){if(!n||n.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=lu(o,s),o in mr)return;mr[o]=!0;const i=o.endsWith(".css"),l=i?'[rel="stylesheet"]':"";if(!!s)for(let d=r.length-1;d>=0;d--){const p=r[d];if(p.href===o&&(!i||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${l}`))return;const a=document.createElement("link");if(a.rel=i?"stylesheet":iu,i||(a.as="script",a.crossOrigin=""),a.href=o,document.head.appendChild(a),i)return new Promise((d,p)=>{a.addEventListener("load",d),a.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},cu=()=>wn(()=>import("./BlogView-m7VaFbfD.js"),__vite__mapDeps([0,1,2]),import.meta.url),uu=()=>wn(()=>import("./BlogPostView-OrFRmmMq.js"),__vite__mapDeps([3,4]),import.meta.url),fu=()=>wn(()=>import("./IndexView-dxAMKnLj.js"),__vite__mapDeps([]),import.meta.url),au=()=>wn(()=>import("./TopicView-d3GpFRy7.js"),__vite__mapDeps([5,1,6]),import.meta.url),Fn={blog:"blog",blogPost:"blog-post",index:"index",topic:"topic"},du=[{path:"/",component:fu},{name:Fn.blog,path:"/blog",component:cu},{name:Fn.topic,path:"/topic",component:au},{name:Fn.blogPost,path:"/blog-post",component:uu}],hu=ru({routes:du,history:vc()});Yl(tc).use(hu).mount("#app");export{je as F,Xl as _,ao as a,yu as b,cl as c,Jr as d,bu as e,co as f,_u as g,ss as h,mu as i,dl as j,Dr as n,Li as o,gu as p,ci as r,pu as t,vu as v,Eu as w};
+ */const dt=typeof window<"u";function nc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const q=Object.assign;function Mn(e,t){const n={};for(const s in t){const r=t[s];n[s]=xe(r)?r.map(e):e(r)}return n}const Ft=()=>{},xe=Array.isArray,sc=/\/$/,rc=e=>e.replace(sc,"");function Nn(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return l=0&&(c=-1),c>-1&&(s=t.slice(0,c),o=t.slice(c+1,l>-1?l:t.length),r=e(o)),l>-1&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=cc(s??t,n),{fullPath:s+(o&&"?")+o+i,path:s,query:r,hash:i}}function oc(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function er(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ic(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Et(t.matched[s],n.matched[r])&&mo(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Et(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function mo(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!lc(e[n],t[n]))return!1;return!0}function lc(e,t){return xe(e)?tr(e,t):xe(t)?tr(t,e):e===t}function tr(e,t){return xe(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function cc(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i-(i===s.length?1:0)).join("/")}var Ut;(function(e){e.pop="pop",e.push="push"})(Ut||(Ut={}));var Lt;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Lt||(Lt={}));function uc(e){if(!e)if(dt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),rc(e)}const fc=/^[^#]+#/;function ac(e,t){return e.replace(fc,"#")+t}function dc(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Rn=()=>({left:window.pageXOffset,top:window.pageYOffset});function hc(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=dc(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function nr(e,t){return(history.state?history.state.position-t:-1)+e}const Yn=new Map;function pc(e,t){Yn.set(e,t)}function gc(e){const t=Yn.get(e);return Yn.delete(e),t}let mc=()=>location.protocol+"//"+location.host;function _o(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let l=r.includes(e.slice(o))?e.slice(o).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),er(c,"")}return er(n,e)+s+r}function _c(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const E=_o(e,location),A=n.value,S=t.value;let $=0;if(g){if(n.value=E,t.value=g,i&&i===A){i=null;return}$=S?g.position-S.position:0}else s(E);r.forEach(N=>{N(n.value,A,{delta:$,type:Ut.pop,direction:$?$>0?Lt.forward:Lt.back:Lt.unknown})})};function c(){i=n.value}function a(g){r.push(g);const E=()=>{const A=r.indexOf(g);A>-1&&r.splice(A,1)};return o.push(E),E}function d(){const{history:g}=window;g.state&&g.replaceState(q({},g.state,{scroll:Rn()}),"")}function p(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:c,listen:a,destroy:p}}function sr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Rn():null}}function yc(e){const{history:t,location:n}=window,s={value:_o(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,d){const p=e.indexOf("#"),g=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+c:mc()+e+c;try{t[d?"replaceState":"pushState"](a,"",g),r.value=a}catch(E){console.error(E),n[d?"replace":"assign"](g)}}function i(c,a){const d=q({},t.state,sr(r.value.back,c,r.value.forward,!0),a,{position:r.value.position});o(c,d,!0),s.value=c}function l(c,a){const d=q({},r.value,t.state,{forward:c,scroll:Rn()});o(d.current,d,!0);const p=q({},sr(s.value,c,null),{position:d.position+1},a);o(c,p,!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function bc(e){e=uc(e);const t=yc(e),n=_c(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=q({location:"",base:e,go:s,createHref:ac.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function vc(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),bc(e)}function Ec(e){return typeof e=="string"||e&&typeof e=="object"}function yo(e){return typeof e=="string"||typeof e=="symbol"}const ke={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},bo=Symbol("");var rr;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(rr||(rr={}));function xt(e,t){return q(new Error,{type:e,[bo]:!0},t)}function Fe(e,t){return e instanceof Error&&bo in e&&(t==null||!!(e.type&t))}const or="[^/]+?",xc={sensitive:!1,strict:!1,start:!0,end:!0},wc=/[.+*?^${}()[\]/\\]/g;function Rc(e,t){const n=q({},xc,t),s=[];let r=n.start?"^":"";const o=[];for(const a of e){const d=a.length?[]:[90];n.strict&&!a.length&&(r+="/");for(let p=0;pt.length?t.length===1&&t[0]===80?1:-1:0}function Cc(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Oc={type:0,value:""},Ac=/[a-zA-Z0-9_]/;function Tc(e){if(!e)return[[]];if(e==="/")return[[Oc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(E){throw new Error(`ERR (${n})/"${a}": ${E}`)}let n=0,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",d="";function p(){a&&(n===0?o.push({type:0,value:a}):n===1||n===2||n===3?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:a,regexp:d,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function g(){a+=c}for(;l{i(F)}:Ft}function i(d){if(yo(d)){const p=s.get(d);p&&(s.delete(d),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(d);p>-1&&(n.splice(p,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function l(){return n}function c(d){let p=0;for(;p=0&&(d.record.path!==n[p].record.path||!vo(d,n[p]));)p++;n.splice(p,0,d),d.record.name&&!cr(d)&&s.set(d.record.name,d)}function a(d,p){let g,E={},A,S;if("name"in d&&d.name){if(g=s.get(d.name),!g)throw xt(1,{location:d});S=g.record.name,E=q(lr(p.params,g.keys.filter(F=>!F.optional).map(F=>F.name)),d.params&&lr(d.params,g.keys.map(F=>F.name))),A=g.stringify(E)}else if("path"in d)A=d.path,g=n.find(F=>F.re.test(A)),g&&(E=g.parse(A),S=g.record.name);else{if(g=p.name?s.get(p.name):n.find(F=>F.re.test(p.path)),!g)throw xt(1,{location:d,currentLocation:p});S=g.record.name,E=q({},p.params,d.params),A=g.stringify(E)}const $=[];let N=g;for(;N;)$.unshift(N.record),N=N.parent;return{name:S,path:A,params:E,matched:$,meta:Fc($)}}return e.forEach(d=>o(d)),{addRoute:o,resolve:a,removeRoute:i,getRoutes:l,getRecordMatcher:r}}function lr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Mc(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:Nc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function Nc(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function cr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Fc(e){return e.reduce((t,n)=>q(t,n.meta),{})}function ur(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function vo(e,t){return t.children.some(n=>n===e||vo(e,n))}const Eo=/#/g,Lc=/&/g,jc=/\//g,Hc=/=/g,$c=/\?/g,xo=/\+/g,Bc=/%5B/g,Kc=/%5D/g,wo=/%5E/g,Uc=/%60/g,Ro=/%7B/g,Dc=/%7C/g,Po=/%7D/g,kc=/%20/g;function ms(e){return encodeURI(""+e).replace(Dc,"|").replace(Bc,"[").replace(Kc,"]")}function Wc(e){return ms(e).replace(Ro,"{").replace(Po,"}").replace(wo,"^")}function Jn(e){return ms(e).replace(xo,"%2B").replace(kc,"+").replace(Eo,"%23").replace(Lc,"%26").replace(Uc,"`").replace(Ro,"{").replace(Po,"}").replace(wo,"^")}function zc(e){return Jn(e).replace(Hc,"%3D")}function qc(e){return ms(e).replace(Eo,"%23").replace($c,"%3F")}function Vc(e){return e==null?"":qc(e).replace(jc,"%2F")}function un(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function Qc(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&Jn(o)):[s&&Jn(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Yc(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=xe(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Jc=Symbol(""),ar=Symbol(""),_s=Symbol(""),Co=Symbol(""),Xn=Symbol("");function Tt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function ze(e,t,n,s,r){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((i,l)=>{const c=p=>{p===!1?l(xt(4,{from:n,to:t})):p instanceof Error?l(p):Ec(p)?l(xt(2,{from:t,to:p})):(o&&s.enterCallbacks[r]===o&&typeof p=="function"&&o.push(p),i())},a=e.call(s&&s.instances[r],t,n,c);let d=Promise.resolve(a);e.length<3&&(d=d.then(c)),d.catch(p=>l(p))})}function Fn(e,t,n,s){const r=[];for(const o of e)for(const i in o.components){let l=o.components[i];if(!(t!=="beforeRouteEnter"&&!o.instances[i]))if(Xc(l)){const a=(l.__vccOpts||l)[t];a&&r.push(ze(a,n,s,o,i))}else{let c=l();r.push(()=>c.then(a=>{if(!a)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${o.path}"`));const d=nc(a)?a.default:a;o.components[i]=d;const g=(d.__vccOpts||d)[t];return g&&ze(g,n,s,o,i)()}))}}return r}function Xc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function dr(e){const t=$e(_s),n=$e(Co),s=be(()=>t.resolve(mt(e.to))),r=be(()=>{const{matched:c}=s.value,{length:a}=c,d=c[a-1],p=n.matched;if(!d||!p.length)return-1;const g=p.findIndex(Et.bind(null,d));if(g>-1)return g;const E=hr(c[a-2]);return a>1&&hr(d)===E&&p[p.length-1].path!==E?p.findIndex(Et.bind(null,c[a-2])):g}),o=be(()=>r.value>-1&&tu(n.params,s.value.params)),i=be(()=>r.value>-1&&r.value===n.matched.length-1&&mo(n.params,s.value.params));function l(c={}){return eu(c)?t[mt(e.replace)?"replace":"push"](mt(e.to)).catch(Ft):Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}const Zc=Jr({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:dr,setup(e,{slots:t}){const n=mn(dr(e)),{options:s}=$e(_s),r=be(()=>({[pr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[pr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:go("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Gc=Zc;function eu(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function tu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!xe(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function hr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const pr=(e,t,n)=>e??t??n,nu=Jr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=$e(Xn),r=be(()=>e.route||s.value),o=$e(ar,0),i=be(()=>{let a=mt(o);const{matched:d}=r.value;let p;for(;(p=d[a])&&!p.components;)a++;return a}),l=be(()=>r.value.matched[i.value]);tn(ar,be(()=>i.value+1)),tn(Jc,l),tn(Xn,r);const c=ci();return Gt(()=>[c.value,l.value,e.name],([a,d,p],[g,E,A])=>{d&&(d.instances[p]=a,E&&E!==d&&a&&a===g&&(d.leaveGuards.size||(d.leaveGuards=E.leaveGuards),d.updateGuards.size||(d.updateGuards=E.updateGuards))),a&&d&&(!E||!Et(d,E)||!g)&&(d.enterCallbacks[p]||[]).forEach(S=>S(a))},{flush:"post"}),()=>{const a=r.value,d=e.name,p=l.value,g=p&&p.components[d];if(!g)return gr(n.default,{Component:g,route:a});const E=p.props[d],A=E?E===!0?a.params:typeof E=="function"?E(a):E:null,$=go(g,q({},A,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(p.instances[d]=null)},ref:c}));return gr(n.default,{Component:$,route:a})||$}}});function gr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const su=nu;function ru(e){const t=Ic(e.routes,e),n=e.parseQuery||Qc,s=e.stringifyQuery||fr,r=e.history,o=Tt(),i=Tt(),l=Tt(),c=ui(ke);let a=ke;dt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Mn.bind(null,_=>""+_),p=Mn.bind(null,Vc),g=Mn.bind(null,un);function E(_,C){let R,T;return yo(_)?(R=t.getRecordMatcher(_),T=C):T=_,t.addRoute(T,R)}function A(_){const C=t.getRecordMatcher(_);C&&t.removeRoute(C)}function S(){return t.getRoutes().map(_=>_.record)}function $(_){return!!t.getRecordMatcher(_)}function N(_,C){if(C=q({},C||c.value),typeof _=="string"){const h=Nn(n,_,C.path),m=t.resolve({path:h.path},C),y=r.createHref(h.fullPath);return q(h,m,{params:g(m.params),hash:un(h.hash),redirectedFrom:void 0,href:y})}let R;if("path"in _)R=q({},_,{path:Nn(n,_.path,C.path).path});else{const h=q({},_.params);for(const m in h)h[m]==null&&delete h[m];R=q({},_,{params:p(h)}),C.params=p(C.params)}const T=t.resolve(R,C),z=_.hash||"";T.params=d(g(T.params));const u=oc(s,q({},_,{hash:Wc(z),path:T.path})),f=r.createHref(u);return q({fullPath:u,hash:z,query:s===fr?Yc(_.query):_.query||{}},T,{redirectedFrom:void 0,href:f})}function F(_){return typeof _=="string"?Nn(n,_,c.value.path):q({},_)}function D(_,C){if(a!==_)return xt(8,{from:C,to:_})}function L(_){return ge(_)}function ee(_){return L(q(F(_),{replace:!0}))}function re(_){const C=_.matched[_.matched.length-1];if(C&&C.redirect){const{redirect:R}=C;let T=typeof R=="function"?R(_):R;return typeof T=="string"&&(T=T.includes("?")||T.includes("#")?T=F(T):{path:T},T.params={}),q({query:_.query,hash:_.hash,params:"path"in T?{}:_.params},T)}}function ge(_,C){const R=a=N(_),T=c.value,z=_.state,u=_.force,f=_.replace===!0,h=re(R);if(h)return ge(q(F(h),{state:typeof h=="object"?q({},z,h.state):z,force:u,replace:f}),C||R);const m=R;m.redirectedFrom=C;let y;return!u&&ic(s,T,R)&&(y=xt(16,{to:m,from:T}),Ce(T,T,!0,!1)),(y?Promise.resolve(y):Re(m,T)).catch(b=>Fe(b)?Fe(b,2)?b:Ue(b):W(b,m,T)).then(b=>{if(b){if(Fe(b,2))return ge(q({replace:f},F(b.to),{state:typeof b.to=="object"?q({},z,b.to.state):z,force:u}),C||m)}else b=Ye(m,T,!0,f,z);return Ke(m,T,b),b})}function we(_,C){const R=D(_,C);return R?Promise.reject(R):Promise.resolve()}function ot(_){const C=ct.values().next().value;return C&&typeof C.runWithContext=="function"?C.runWithContext(_):_()}function Re(_,C){let R;const[T,z,u]=ou(_,C);R=Fn(T.reverse(),"beforeRouteLeave",_,C);for(const h of T)h.leaveGuards.forEach(m=>{R.push(ze(m,_,C))});const f=we.bind(null,_,C);return R.push(f),oe(R).then(()=>{R=[];for(const h of o.list())R.push(ze(h,_,C));return R.push(f),oe(R)}).then(()=>{R=Fn(z,"beforeRouteUpdate",_,C);for(const h of z)h.updateGuards.forEach(m=>{R.push(ze(m,_,C))});return R.push(f),oe(R)}).then(()=>{R=[];for(const h of u)if(h.beforeEnter)if(xe(h.beforeEnter))for(const m of h.beforeEnter)R.push(ze(m,_,C));else R.push(ze(h.beforeEnter,_,C));return R.push(f),oe(R)}).then(()=>(_.matched.forEach(h=>h.enterCallbacks={}),R=Fn(u,"beforeRouteEnter",_,C),R.push(f),oe(R))).then(()=>{R=[];for(const h of i.list())R.push(ze(h,_,C));return R.push(f),oe(R)}).catch(h=>Fe(h,8)?h:Promise.reject(h))}function Ke(_,C,R){l.list().forEach(T=>ot(()=>T(_,C,R)))}function Ye(_,C,R,T,z){const u=D(_,C);if(u)return u;const f=C===ke,h=dt?history.state:{};R&&(T||f?r.replace(_.fullPath,q({scroll:f&&h&&h.scroll},z)):r.push(_.fullPath,z)),c.value=_,Ce(_,C,R,f),Ue()}let Pe;function Ct(){Pe||(Pe=r.listen((_,C,R)=>{if(!kt.listening)return;const T=N(_),z=re(T);if(z){ge(q(z,{replace:!0}),T).catch(Ft);return}a=T;const u=c.value;dt&&pc(nr(u.fullPath,R.delta),Rn()),Re(T,u).catch(f=>Fe(f,12)?f:Fe(f,2)?(ge(f.to,T).then(h=>{Fe(h,20)&&!R.delta&&R.type===Ut.pop&&r.go(-1,!1)}).catch(Ft),Promise.reject()):(R.delta&&r.go(-R.delta,!1),W(f,T,u))).then(f=>{f=f||Ye(T,u,!1),f&&(R.delta&&!Fe(f,8)?r.go(-R.delta,!1):R.type===Ut.pop&&Fe(f,20)&&r.go(-1,!1)),Ke(T,u,f)}).catch(Ft)}))}let it=Tt(),te=Tt(),Q;function W(_,C,R){Ue(_);const T=te.list();return T.length?T.forEach(z=>z(_,C,R)):console.error(_),Promise.reject(_)}function Ne(){return Q&&c.value!==ke?Promise.resolve():new Promise((_,C)=>{it.add([_,C])})}function Ue(_){return Q||(Q=!_,Ct(),it.list().forEach(([C,R])=>_?R(_):C()),it.reset()),_}function Ce(_,C,R,T){const{scrollBehavior:z}=e;if(!dt||!z)return Promise.resolve();const u=!R&&gc(nr(_.fullPath,0))||(T||!R)&&history.state&&history.state.scroll||null;return Dr().then(()=>z(_,C,u)).then(f=>f&&hc(f)).catch(f=>W(f,_,C))}const ue=_=>r.go(_);let lt;const ct=new Set,kt={currentRoute:c,listening:!0,addRoute:E,removeRoute:A,hasRoute:$,getRoutes:S,resolve:N,options:e,push:L,replace:ee,go:ue,back:()=>ue(-1),forward:()=>ue(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:te.add,isReady:Ne,install(_){const C=this;_.component("RouterLink",Gc),_.component("RouterView",su),_.config.globalProperties.$router=C,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>mt(c)}),dt&&!lt&&c.value===ke&&(lt=!0,L(r.location).catch(z=>{}));const R={};for(const z in ke)Object.defineProperty(R,z,{get:()=>c.value[z],enumerable:!0});_.provide(_s,C),_.provide(Co,Nr(R)),_.provide(Xn,c);const T=_.unmount;ct.add(_),_.unmount=function(){ct.delete(_),ct.size<1&&(a=ke,Pe&&Pe(),Pe=null,c.value=ke,lt=!1,Q=!1),T()}}};function oe(_){return _.reduce((C,R)=>C.then(()=>ot(R)),Promise.resolve())}return kt}function ou(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iEt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Et(a,c))||r.push(c))}return[n,s,r]}const iu="modulepreload",lu=function(e,t){return new URL(e,t).href},mr={},Dt=function(t,n,s){if(!n||n.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=lu(o,s),o in mr)return;mr[o]=!0;const i=o.endsWith(".css"),l=i?'[rel="stylesheet"]':"";if(!!s)for(let d=r.length-1;d>=0;d--){const p=r[d];if(p.href===o&&(!i||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${l}`))return;const a=document.createElement("link");if(a.rel=i?"stylesheet":iu,i||(a.as="script",a.crossOrigin=""),a.href=o,document.head.appendChild(a),i)return new Promise((d,p)=>{a.addEventListener("load",d),a.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},cu=()=>Dt(()=>import("./BlogView-wYkXqj2w.js"),__vite__mapDeps([0,1,2]),import.meta.url),uu=()=>Dt(()=>import("./BlogPostView-ftvsLkAw.js"),__vite__mapDeps([3,4]),import.meta.url),fu=()=>Dt(()=>import("./IndexView-0Igj9hiw.js"),__vite__mapDeps([]),import.meta.url),au=()=>Dt(()=>import("./TopicView-IGTEuiX4.js"),__vite__mapDeps([5,1,6]),import.meta.url),du=()=>Dt(()=>import("./SignView-_SZy8b_O.js"),__vite__mapDeps([7,8]),import.meta.url),Jt={blog:"blog",blogPost:"blog-post",index:"index",topic:"topic",sign:"sign"},hu=[{path:"/",component:fu},{name:Jt.blog,path:"/blog",component:cu},{name:Jt.topic,path:"/topic",component:au},{name:Jt.blogPost,path:"/blog-post",component:uu},{name:Jt.sign,path:"/sign",component:du}],pu=ru({routes:hu,history:vc()});Yl(tc).use(pu).mount("#app");export{je as F,Xl as _,ao as a,bu as b,cl as c,Jr as d,vu as e,co as f,yu as g,ss as h,_u as i,dl as j,Dr as n,Li as o,mu as p,ci as r,gu as t,Eu as v,xu as w};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
- __vite__mapDeps.viteFileDeps = ["./BlogView-m7VaFbfD.js","./common-lLZLEzU9.js","./BlogView-YY7Ol-zX.css","./BlogPostView-OrFRmmMq.js","./BlogPostView-jIs4DhhU.css","./TopicView-d3GpFRy7.js","./TopicView-a2VEYOOD.css"]
+ __vite__mapDeps.viteFileDeps = ["./BlogView-wYkXqj2w.js","./common-lLZLEzU9.js","./BlogView-YY7Ol-zX.css","./BlogPostView-ftvsLkAw.js","./BlogPostView-zhMUHJSq.css","./TopicView-IGTEuiX4.js","./TopicView-a2VEYOOD.css","./SignView-_SZy8b_O.js","./SignView-AL40_vmq.css"]
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}
\ No newline at end of file
diff --git a/app/src/main/assets/h5/index.html b/app/src/main/assets/h5/index.html
index 1f3112c0..5ac22dc1 100644
--- a/app/src/main/assets/h5/index.html
+++ b/app/src/main/assets/h5/index.html
@@ -6,7 +6,7 @@
Bangumi for Android
-
+
diff --git a/app/src/main/assets/h5/test.http b/app/src/main/assets/h5/test.http
index f02a7276..1e3ffe11 100644
--- a/app/src/main/assets/h5/test.http
+++ b/app/src/main/assets/h5/test.http
@@ -1,10 +1,43 @@
-GET https://bgm.tv/rakuen/topic/group/390577 HTTP/2
-Host: bgm.tv
+GET https://files.catbox.moe/f2y4ka.jpg HTTP/2
+User-Agent: Dalvik/2.1.0 Mozilla (Linux; U; Android 13; Pixel 4 XL Build/TP1A.221005.002)
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
+Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.6,zh-HK;q=0.4,en;q=0.2
+Accept-Encoding: gzip, deflate, br
+Sec-Fetch-Dest: empty
+Sec-Fetch-Mode: cors
+Sec-Fetch-Site: cross-site
+Pragma: no-cache
+Cache-Control: no-cache
+TE: trailers
+Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.6,zh-HK;q=0.4,en;q=0.2
+Connection: Keep-Alive
+###
+GET https://files.catbox.moe/f2y4ka.jpg HTTP/2
+Host: files.catbox.moe
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:120.0) Gecko/20100101 Firefox/120.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.6,zh-HK;q=0.4,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
+Upgrade-Insecure-Requests: 1
+Sec-Fetch-Dest: document
+Sec-Fetch-Mode: navigate
+Sec-Fetch-Site: none
+Sec-Fetch-User: ?1
+Pragma: no-cache
+Cache-Control: no-cache
+TE: trailers
+###
+GET https://p.sda1.dev/13/9621cf793cbc6ba5dce57b06b40e2c78/image.png h2
+Sec-Fetch-Dest: empty
+Sec-Fetch-Mode: cors
+Sec-Fetch-Site: cross-site
Pragma: no-cache
Cache-Control: no-cache
-TE: trailers
\ No newline at end of file
+TE: trailers
+Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.6,zh-HK;q=0.4,en;q=0.2
+User-Agent: Mozilla (Linux; U; Android 13; Pixel 4 XL Build/TP1A.221005.002)
+Referer: https://p.sda1.dev/13/9621cf793cbc6ba5dce57b06b40e2c78/image.png
+Host: p.sda1.dev
+Connection: Keep-Alive
+Accept-Encoding: gzip
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/helper/RouteHelper.kt b/app/src/main/java/com/xiaoyv/bangumi/helper/RouteHelper.kt
index b26f9c60..54d7250d 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/helper/RouteHelper.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/helper/RouteHelper.kt
@@ -7,6 +7,7 @@ import com.xiaoyv.bangumi.ui.discover.blog.detail.BlogActivity
import com.xiaoyv.bangumi.ui.feature.calendar.CalendarActivity
import com.xiaoyv.bangumi.ui.feature.login.LoginActivity
import com.xiaoyv.bangumi.ui.feature.musmme.MusumeActivity
+import com.xiaoyv.bangumi.ui.feature.person.PersonActivity
import com.xiaoyv.bangumi.ui.feature.post.PostActivity
import com.xiaoyv.bangumi.ui.feature.preview.image.PreviewImageActivity
import com.xiaoyv.bangumi.ui.feature.topic.TopicActivity
@@ -90,4 +91,8 @@ object RouteHelper {
fun jumpUserDetail(userId: String) {
UserActivity::class.open(bundleOf(NavKey.KEY_STRING to userId))
}
+
+ fun jumpPerson(personId: String) {
+ PersonActivity::class.open(bundleOf(NavKey.KEY_STRING to personId))
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonActivity.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonActivity.kt
new file mode 100644
index 00000000..63596d55
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonActivity.kt
@@ -0,0 +1,74 @@
+package com.xiaoyv.bangumi.ui.feature.person
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.MenuItem
+import com.google.android.material.tabs.TabLayoutMediator
+import com.xiaoyv.bangumi.databinding.ActivityPersonBinding
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModelActivity
+import com.xiaoyv.blueprint.constant.NavKey
+import com.xiaoyv.common.kts.initNavBack
+import com.xiaoyv.common.kts.randomOffset
+import com.xiaoyv.common.kts.randomX
+import com.xiaoyv.common.kts.randomY
+
+/**
+ * Class: [PersonActivity]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonActivity : BaseViewModelActivity() {
+
+ private val vpAdapter by lazy {
+ PersonAdapter(supportFragmentManager, this.lifecycle)
+ }
+
+ private val tabLayoutMediator by lazy {
+ TabLayoutMediator(binding.tableLayout, binding.vpContent) { tab, position ->
+ tab.text = vpAdapter.tabs[position].title
+ }
+ }
+
+ override fun initIntentData(intent: Intent, bundle: Bundle, isNewIntent: Boolean) {
+ viewModel.personId = bundle.getString(NavKey.KEY_STRING).orEmpty()
+ }
+
+ override fun initView() {
+ randomX(binding.topLeftTextView, randomOffset)
+ randomY(binding.topLeftTextView, randomOffset)
+
+ randomX(binding.middleLeftTextView, randomOffset)
+ randomY(binding.middleLeftTextView, randomOffset)
+
+ randomX(binding.bottomLeftTextView, randomOffset)
+ randomY(binding.bottomLeftTextView, randomOffset)
+
+ randomX(binding.topRightTextView, randomOffset)
+ randomY(binding.topRightTextView, randomOffset)
+
+ randomX(binding.middleRightTextView, randomOffset)
+ randomY(binding.middleRightTextView, randomOffset)
+
+ randomX(binding.bottomRightTextView, randomOffset)
+ randomY(binding.bottomRightTextView, randomOffset)
+
+ setSupportActionBar(binding.toolbar)
+ binding.toolbar.initNavBack(this)
+ }
+
+ override fun initData() {
+ vpAdapter.personId = viewModel.personId
+
+ binding.vpContent.adapter = vpAdapter
+ binding.vpContent.offscreenPageLimit = vpAdapter.itemCount
+
+ tabLayoutMediator.attach()
+ }
+
+
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ item.initNavBack(this)
+ return super.onOptionsItemSelected(item)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonAdapter.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonAdapter.kt
new file mode 100644
index 00000000..73098f46
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonAdapter.kt
@@ -0,0 +1,51 @@
+package com.xiaoyv.bangumi.ui.feature.person
+
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.lifecycle.Lifecycle
+import androidx.viewpager2.adapter.FragmentStateAdapter
+import com.xiaoyv.bangumi.ui.feature.empty.EmptyFragment
+import com.xiaoyv.bangumi.ui.feature.person.character.PersonCharacterFragment
+import com.xiaoyv.bangumi.ui.feature.person.collect.PersonCollectFragment
+import com.xiaoyv.bangumi.ui.feature.person.cooperate.PersonCooperateFragment
+import com.xiaoyv.bangumi.ui.feature.person.opus.PersonOpusFragment
+import com.xiaoyv.bangumi.ui.feature.person.overview.PersonOverviewFragment
+import com.xiaoyv.common.config.annotation.PersonTabType
+import com.xiaoyv.common.config.bean.PersonTab
+
+/**
+ * Class: [PersonAdapter]
+ *
+ * @author why
+ * @since 11/24/23
+ */
+class PersonAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
+ FragmentStateAdapter(fragmentManager, lifecycle) {
+
+ internal var personId = ""
+
+ internal val tabs = listOf(
+ PersonTab("概览", PersonTabType.TYPE_OVERVIEW),
+ PersonTab("角色", PersonTabType.TYPE_CHARACTER),
+ PersonTab("作品", PersonTabType.TYPE_OPUS),
+ PersonTab("合作", PersonTabType.TYPE_COOPERATE),
+ PersonTab("收藏", PersonTabType.TYPE_SAVE)
+ )
+
+ override fun createFragment(position: Int): Fragment {
+ val profileTab = tabs[position]
+ val type = profileTab.type
+ return when (type) {
+ PersonTabType.TYPE_OVERVIEW -> PersonOverviewFragment.newInstance(personId)
+ PersonTabType.TYPE_CHARACTER -> PersonCharacterFragment.newInstance(personId)
+ PersonTabType.TYPE_OPUS -> PersonOpusFragment.newInstance(personId)
+ PersonTabType.TYPE_COOPERATE -> PersonCooperateFragment.newInstance(personId)
+ PersonTabType.TYPE_SAVE -> PersonCollectFragment.newInstance(personId)
+ else -> EmptyFragment.newInstance()
+ }
+ }
+
+ override fun getItemCount(): Int {
+ return tabs.size
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonViewModel.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonViewModel.kt
new file mode 100644
index 00000000..5d74b9d9
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/PersonViewModel.kt
@@ -0,0 +1,13 @@
+package com.xiaoyv.bangumi.ui.feature.person
+
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel
+
+/**
+ * Class: [PersonViewModel]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonViewModel : BaseViewModel() {
+ internal var personId = ""
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/character/PersonCharacterFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/character/PersonCharacterFragment.kt
new file mode 100644
index 00000000..677b9c80
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/character/PersonCharacterFragment.kt
@@ -0,0 +1,31 @@
+package com.xiaoyv.bangumi.ui.feature.person.character
+
+import androidx.core.os.bundleOf
+import com.xiaoyv.bangumi.databinding.FragmentPersionCharacterBinding
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModelFragment
+import com.xiaoyv.blueprint.constant.NavKey
+
+/**
+ * Class: [PersonCharacterFragment]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonCharacterFragment :
+ BaseViewModelFragment() {
+ override fun initView() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ companion object {
+ fun newInstance(personId: String): PersonCharacterFragment {
+ return PersonCharacterFragment().apply {
+ arguments = bundleOf(NavKey.KEY_STRING to personId)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/character/PersonCharacterViewModel.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/character/PersonCharacterViewModel.kt
new file mode 100644
index 00000000..e979ea15
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/character/PersonCharacterViewModel.kt
@@ -0,0 +1,13 @@
+package com.xiaoyv.bangumi.ui.feature.person.character
+
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel
+
+/**
+ * Class: [PersonCharacterViewModel]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonCharacterViewModel : BaseViewModel() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/collect/PersonCollectFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/collect/PersonCollectFragment.kt
new file mode 100644
index 00000000..48e970c5
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/collect/PersonCollectFragment.kt
@@ -0,0 +1,31 @@
+package com.xiaoyv.bangumi.ui.feature.person.collect
+
+import androidx.core.os.bundleOf
+import com.xiaoyv.bangumi.databinding.FragmentPersionCharacterBinding
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModelFragment
+import com.xiaoyv.blueprint.constant.NavKey
+
+/**
+ * Class: [PersonCollectFragment]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonCollectFragment :
+ BaseViewModelFragment() {
+ override fun initView() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ companion object {
+ fun newInstance(personId: String): PersonCollectFragment {
+ return PersonCollectFragment().apply {
+ arguments = bundleOf(NavKey.KEY_STRING to personId)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/collect/PersonCollectViewModel.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/collect/PersonCollectViewModel.kt
new file mode 100644
index 00000000..3c4281f0
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/collect/PersonCollectViewModel.kt
@@ -0,0 +1,13 @@
+package com.xiaoyv.bangumi.ui.feature.person.collect
+
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel
+
+/**
+ * Class: [PersonCollectViewModel]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonCollectViewModel : BaseViewModel() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/cooperate/PersonCooperateFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/cooperate/PersonCooperateFragment.kt
new file mode 100644
index 00000000..9197f4e3
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/cooperate/PersonCooperateFragment.kt
@@ -0,0 +1,31 @@
+package com.xiaoyv.bangumi.ui.feature.person.cooperate
+
+import androidx.core.os.bundleOf
+import com.xiaoyv.bangumi.databinding.FragmentPersionCharacterBinding
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModelFragment
+import com.xiaoyv.blueprint.constant.NavKey
+
+/**
+ * Class: [PersonCooperateFragment]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonCooperateFragment :
+ BaseViewModelFragment() {
+ override fun initView() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ companion object {
+ fun newInstance(personId: String): PersonCooperateFragment {
+ return PersonCooperateFragment().apply {
+ arguments = bundleOf(NavKey.KEY_STRING to personId)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/cooperate/PersonCooperateViewModel.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/cooperate/PersonCooperateViewModel.kt
new file mode 100644
index 00000000..487ab50a
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/cooperate/PersonCooperateViewModel.kt
@@ -0,0 +1,13 @@
+package com.xiaoyv.bangumi.ui.feature.person.cooperate
+
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel
+
+/**
+ * Class: [PersonCooperateViewModel]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonCooperateViewModel : BaseViewModel() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/opus/PersonOpusFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/opus/PersonOpusFragment.kt
new file mode 100644
index 00000000..c20e1da7
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/opus/PersonOpusFragment.kt
@@ -0,0 +1,31 @@
+package com.xiaoyv.bangumi.ui.feature.person.opus
+
+import androidx.core.os.bundleOf
+import com.xiaoyv.bangumi.databinding.FragmentPersionCharacterBinding
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModelFragment
+import com.xiaoyv.blueprint.constant.NavKey
+
+/**
+ * Class: [PersonOpusFragment]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonOpusFragment :
+ BaseViewModelFragment() {
+ override fun initView() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ companion object {
+ fun newInstance(personId: String): PersonOpusFragment {
+ return PersonOpusFragment().apply {
+ arguments = bundleOf(NavKey.KEY_STRING to personId)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/opus/PersonOpusViewModel.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/opus/PersonOpusViewModel.kt
new file mode 100644
index 00000000..a255c35c
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/opus/PersonOpusViewModel.kt
@@ -0,0 +1,13 @@
+package com.xiaoyv.bangumi.ui.feature.person.opus
+
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel
+
+/**
+ * Class: [PersonOpusViewModel]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonOpusViewModel : BaseViewModel() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/overview/PersonOverviewFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/overview/PersonOverviewFragment.kt
new file mode 100644
index 00000000..9dccf81a
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/overview/PersonOverviewFragment.kt
@@ -0,0 +1,31 @@
+package com.xiaoyv.bangumi.ui.feature.person.overview
+
+import androidx.core.os.bundleOf
+import com.xiaoyv.bangumi.databinding.FragmentPersionCharacterBinding
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModelFragment
+import com.xiaoyv.blueprint.constant.NavKey
+
+/**
+ * Class: [PersonOverviewFragment]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonOverviewFragment :
+ BaseViewModelFragment() {
+ override fun initView() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ companion object {
+ fun newInstance(personId: String): PersonOverviewFragment {
+ return PersonOverviewFragment().apply {
+ arguments = bundleOf(NavKey.KEY_STRING to personId)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/overview/PersonOverviewViewModel.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/overview/PersonOverviewViewModel.kt
new file mode 100644
index 00000000..3922b8ba
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/person/overview/PersonOverviewViewModel.kt
@@ -0,0 +1,13 @@
+package com.xiaoyv.bangumi.ui.feature.person.overview
+
+import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel
+
+/**
+ * Class: [PersonOverviewViewModel]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class PersonOverviewViewModel : BaseViewModel() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserActivity.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserActivity.kt
index 57771a2f..f679f494 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserActivity.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserActivity.kt
@@ -1,11 +1,8 @@
package com.xiaoyv.bangumi.ui.feature.user
-import android.animation.ObjectAnimator
import android.content.Intent
import android.os.Bundle
-import android.view.View
-import android.view.animation.AccelerateDecelerateInterpolator
-import androidx.core.animation.doOnEnd
+import android.view.MenuItem
import androidx.core.view.isVisible
import androidx.lifecycle.LifecycleOwner
import com.google.android.material.tabs.TabLayoutMediator
@@ -14,13 +11,15 @@ import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModelActivity
import com.xiaoyv.blueprint.constant.NavKey
import com.xiaoyv.blueprint.kts.toJson
import com.xiaoyv.common.kts.debugLog
+import com.xiaoyv.common.kts.initNavBack
import com.xiaoyv.common.kts.loadImageAnimate
import com.xiaoyv.common.kts.loadImageBlur
+import com.xiaoyv.common.kts.randomOffset
+import com.xiaoyv.common.kts.randomX
+import com.xiaoyv.common.kts.randomY
import com.xiaoyv.widget.callback.setOnFastLimitClickListener
-import com.xiaoyv.widget.kts.dpf
import com.xiaoyv.widget.kts.dpi
import kotlin.math.abs
-import kotlin.random.Random
/**
@@ -30,7 +29,6 @@ import kotlin.random.Random
* @since 12/3/23
*/
class UserActivity : BaseViewModelActivity() {
- private val breathDistance by lazy { 5.dpf }
private val vpAdapter by lazy {
UserAdapter(supportFragmentManager, this.lifecycle)
@@ -42,40 +40,40 @@ class UserActivity : BaseViewModelActivity()
}
}
- internal val appBarLayout
- get() = binding.appBar
-
override fun initIntentData(intent: Intent, bundle: Bundle, isNewIntent: Boolean) {
viewModel.userId = bundle.getString(NavKey.KEY_STRING).orEmpty()
}
override fun initView() {
- randomX(binding.topLeftTextView, getRandomOffsetX())
- randomY(binding.topLeftTextView, getRandomOffsetY())
-
- randomX(binding.middleLeftTextView, getRandomOffsetX())
- randomY(binding.middleLeftTextView, getRandomOffsetY())
+ randomX(binding.topLeftTextView, randomOffset)
+ randomY(binding.topLeftTextView, randomOffset)
- randomX(binding.bottomLeftTextView, getRandomOffsetX())
- randomY(binding.bottomLeftTextView, getRandomOffsetY())
+ randomX(binding.middleLeftTextView, randomOffset)
+ randomY(binding.middleLeftTextView, randomOffset)
- randomX(binding.topRightTextView, getRandomOffsetX())
- randomY(binding.topRightTextView, getRandomOffsetY())
+ randomX(binding.bottomLeftTextView, randomOffset)
+ randomY(binding.bottomLeftTextView, randomOffset)
- randomX(binding.middleRightTextView, getRandomOffsetX())
- randomY(binding.middleRightTextView, getRandomOffsetY())
+ randomX(binding.topRightTextView, randomOffset)
+ randomY(binding.topRightTextView, randomOffset)
- randomX(binding.bottomRightTextView, getRandomOffsetX())
- randomY(binding.bottomRightTextView, getRandomOffsetY())
+ randomX(binding.middleRightTextView, randomOffset)
+ randomY(binding.middleRightTextView, randomOffset)
- binding.vpContent.adapter = vpAdapter
- binding.vpContent.offscreenPageLimit = 5
+ randomX(binding.bottomRightTextView, randomOffset)
+ randomY(binding.bottomRightTextView, randomOffset)
- tabLayoutMediator.attach()
+ setSupportActionBar(binding.toolbar)
+ binding.toolbar.initNavBack(this)
}
override fun initData() {
+ vpAdapter.userId = viewModel.userId
+ binding.vpContent.adapter = vpAdapter
+ binding.vpContent.offscreenPageLimit = vpAdapter.itemCount
+
+ tabLayoutMediator.attach()
}
override fun initListener() {
@@ -107,40 +105,8 @@ class UserActivity : BaseViewModelActivity()
}
}
- /**
- * 设置无限循环的动画
- */
- private fun randomX(view: View, startX: Float) {
- val offsetX = getRandomOffsetX()
- val animatorX = ObjectAnimator.ofFloat(startX, offsetX)
- animatorX.interpolator = AccelerateDecelerateInterpolator()
- animatorX.repeatCount = 0
- animatorX.duration = 2000
- animatorX.addUpdateListener {
- view.translationX = it.animatedValue as Float
- }
- animatorX.doOnEnd { randomX(view, offsetX) }
- animatorX.start()
- }
-
- /**
- * 设置无限循环的动画
- */
- private fun randomY(view: View, startY: Float) {
- val offsetY = getRandomOffsetX()
- val animatorX = ObjectAnimator.ofFloat(view, "translationY", startY, offsetY)
- animatorX.interpolator = AccelerateDecelerateInterpolator()
- animatorX.repeatCount = 0
- animatorX.duration = 2000
- animatorX.doOnEnd { randomY(view, offsetY) }
- animatorX.start()
- }
-
- private fun getRandomOffsetX(): Float {
- return (Random.nextFloat() - 0.5f) * breathDistance
- }
-
- private fun getRandomOffsetY(): Float {
- return (Random.nextFloat() - 0.5f) * breathDistance
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ item.initNavBack(this)
+ return super.onOptionsItemSelected(item)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserAdapter.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserAdapter.kt
index f775eea2..80292124 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserAdapter.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/UserAdapter.kt
@@ -6,7 +6,9 @@ import androidx.lifecycle.Lifecycle
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.xiaoyv.bangumi.ui.feature.empty.EmptyFragment
import com.xiaoyv.bangumi.ui.feature.user.chart.ChartFragment
+import com.xiaoyv.bangumi.ui.feature.user.overview.SaveOverviewFragment
import com.xiaoyv.bangumi.ui.feature.user.sign.SignFragment
+import com.xiaoyv.bangumi.ui.profile.page.save.SaveListFragment
import com.xiaoyv.common.config.annotation.UserCenterType
import com.xiaoyv.common.config.bean.UserCenterTab
@@ -19,6 +21,8 @@ import com.xiaoyv.common.config.bean.UserCenterTab
class UserAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
FragmentStateAdapter(fragmentManager, lifecycle) {
+ internal var userId = ""
+
internal val tabs = listOf(
UserCenterTab("时光机", UserCenterType.TYPE_OVERVIEW),
UserCenterTab("收藏", UserCenterType.TYPE_SAVE),
@@ -32,6 +36,8 @@ class UserAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
val profileTab = tabs[position]
val type = profileTab.type
return when (type) {
+ UserCenterType.TYPE_OVERVIEW -> SaveOverviewFragment.newInstance()
+ UserCenterType.TYPE_SAVE -> SaveListFragment.newInstance(userId)
UserCenterType.TYPE_ABOUT -> SignFragment.newInstance()
UserCenterType.TYPE_CHART -> ChartFragment.newInstance()
else -> EmptyFragment.newInstance()
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/overview/SaveOverviewAdapter.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/overview/SaveOverviewAdapter.kt
new file mode 100644
index 00000000..4ac87b21
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/overview/SaveOverviewAdapter.kt
@@ -0,0 +1,107 @@
+package com.xiaoyv.bangumi.ui.feature.user.overview
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.ViewGroup
+import androidx.core.view.isInvisible
+import androidx.core.view.isVisible
+import com.chad.library.adapter.base.BaseMultiItemAdapter
+import com.xiaoyv.bangumi.databinding.FragmentUserOverviewItemBinding
+import com.xiaoyv.bangumi.databinding.FragmentUserOverviewTitleBinding
+import com.xiaoyv.common.api.parser.entity.MediaDetailEntity
+import com.xiaoyv.common.api.parser.entity.UserDetailEntity
+import com.xiaoyv.common.config.annotation.InterestType
+import com.xiaoyv.common.kts.clear
+import com.xiaoyv.common.kts.inflater
+import com.xiaoyv.common.kts.loadImageAnimate
+import com.xiaoyv.widget.binder.BaseQuickBindingHolder
+
+/**
+ * Class: [SaveOverviewAdapter]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class SaveOverviewAdapter : BaseMultiItemAdapter() {
+ init {
+ this.addItemType(TYPE_TITLE, ItemTitleBinder())
+ .addItemType(TYPE_GRID, ItemGridBinder())
+ .onItemViewType { position, list ->
+ when (list[position]) {
+ is UserDetailEntity.SaveOverview -> TYPE_TITLE
+ is MediaDetailEntity.MediaRelative -> TYPE_GRID
+ else -> throw IllegalArgumentException()
+ }
+ }
+ }
+
+ /**
+ * 收藏的媒体标题
+ */
+ private class ItemTitleBinder :
+ OnMultiItemAdapterListener> {
+ override fun onBind(
+ holder: BaseQuickBindingHolder,
+ position: Int,
+ item: Any?
+ ) {
+ val overview = item as? UserDetailEntity.SaveOverview
+ holder.binding.tvTitle.text = overview?.title
+ }
+
+ override fun onCreate(
+ context: Context,
+ parent: ViewGroup,
+ viewType: Int
+ ): BaseQuickBindingHolder {
+ return BaseQuickBindingHolder(
+ FragmentUserOverviewTitleBinding.inflate(context.inflater, parent, false)
+ )
+ }
+
+ override fun isFullSpanItem(itemType: Int): Boolean {
+ return true
+ }
+ }
+
+ /**
+ * 收藏的媒体表格
+ */
+ private class ItemGridBinder :
+ OnMultiItemAdapterListener> {
+ override fun onBind(
+ holder: BaseQuickBindingHolder,
+ position: Int,
+ item: Any?
+ ) {
+ val relative = item as? MediaDetailEntity.MediaRelative ?: return
+ if (relative.id.isBlank()) {
+ holder.binding.tvTip.isInvisible = true
+ holder.binding.ivCover.isInvisible = true
+ holder.binding.ivCover.clear()
+ } else {
+ holder.binding.tvTip.isVisible = true
+ holder.binding.ivCover.isVisible = true
+ holder.binding.ivCover.loadImageAnimate(relative.cover)
+ }
+
+ @SuppressLint("WrongConstant")
+ holder.binding.tvTip.text = InterestType.string(relative.type)
+ }
+
+ override fun onCreate(
+ context: Context,
+ parent: ViewGroup,
+ viewType: Int
+ ): BaseQuickBindingHolder {
+ return BaseQuickBindingHolder(
+ FragmentUserOverviewItemBinding.inflate(context.inflater, parent, false)
+ )
+ }
+ }
+
+ companion object {
+ const val TYPE_TITLE = 0
+ const val TYPE_GRID = 1
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/overview/SaveOverviewFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/overview/SaveOverviewFragment.kt
new file mode 100644
index 00000000..0c13d00a
--- /dev/null
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/feature/user/overview/SaveOverviewFragment.kt
@@ -0,0 +1,92 @@
+package com.xiaoyv.bangumi.ui.feature.user.overview
+
+import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.LifecycleOwner
+import com.xiaoyv.bangumi.R
+import com.xiaoyv.bangumi.databinding.FragmentUserOverviewBinding
+import com.xiaoyv.bangumi.helper.RouteHelper
+import com.xiaoyv.bangumi.ui.feature.user.UserViewModel
+import com.xiaoyv.blueprint.base.binding.BaseBindingFragment
+import com.xiaoyv.blueprint.kts.launchUI
+import com.xiaoyv.common.api.parser.entity.MediaDetailEntity
+import com.xiaoyv.common.kts.setOnDebouncedChildClickListener
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+
+/**
+ * Class: [SaveOverviewFragment]
+ *
+ * @author why
+ * @since 12/4/23
+ */
+class SaveOverviewFragment : BaseBindingFragment() {
+
+ private val itemAdapter by lazy { SaveOverviewAdapter() }
+ private val activityViewModel: UserViewModel by activityViewModels()
+
+ override fun initView() {
+ binding.rvContent.adapter = itemAdapter
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initListener() {
+ itemAdapter.setOnDebouncedChildClickListener(R.id.item_grid) {
+ if (it is MediaDetailEntity.MediaRelative && it.id.isNotBlank()) {
+ RouteHelper.jumpMediaDetail(it.id)
+ }
+ }
+ }
+
+ override fun LifecycleOwner.initViewObserver() {
+ activityViewModel.onUserInfoLiveData.observe(this) {
+ val entity = it ?: return@observe
+ launchUI {
+ itemAdapter.submitList(withContext(Dispatchers.IO) {
+ listOf(
+ entity.anime,
+ entity.book,
+ entity.music,
+ entity.game,
+ entity.real
+ ).filter { overview ->
+ overview.isEmpty.not()
+ }.flatMap { overview ->
+ val itemArr = arrayListOf()
+ itemArr.add(overview)
+ if (overview.doing.isNotEmpty()) {
+ itemArr.addAll(overview.doing.limitOrFill(6))
+ }
+ if (overview.collect.isNotEmpty()) {
+ itemArr.addAll(overview.collect.limitOrFill(6))
+ }
+ itemArr
+ }
+ })
+
+ binding.pbProgress.hide()
+ }
+ }
+ }
+
+ private fun List.limitOrFill(count: Int): List {
+ val relatives = toMutableList()
+ if (relatives.size > count) {
+ return relatives.subList(0, count)
+ }
+ if (relatives.size == count) return relatives
+ repeat(count - relatives.size) {
+ relatives.add(MediaDetailEntity.MediaRelative())
+ }
+ return relatives
+ }
+
+ companion object {
+ fun newInstance(): SaveOverviewFragment {
+ return SaveOverviewFragment()
+ }
+ }
+}
+
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/MediaDetailActivity.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/MediaDetailActivity.kt
index 5fb84ce8..25032eaa 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/MediaDetailActivity.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/MediaDetailActivity.kt
@@ -54,7 +54,7 @@ class MediaDetailActivity :
vpAdapter.mediaId = viewModel.mediaId
binding.vpContent.adapter = vpAdapter
- binding.vpContent.offscreenPageLimit = 5
+ binding.vpContent.offscreenPageLimit = vpAdapter.itemCount
tabLayoutMediator.attach()
}
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/character/MediaCharacterFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/character/MediaCharacterFragment.kt
index a87e1d66..b6845b61 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/character/MediaCharacterFragment.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/character/MediaCharacterFragment.kt
@@ -2,10 +2,13 @@ package com.xiaoyv.bangumi.ui.media.detail.character
import android.os.Bundle
import androidx.core.os.bundleOf
+import com.xiaoyv.bangumi.R
import com.xiaoyv.bangumi.base.BaseListFragment
+import com.xiaoyv.bangumi.helper.RouteHelper
import com.xiaoyv.blueprint.constant.NavKey
import com.xiaoyv.common.api.parser.entity.MediaCharacterEntity
import com.xiaoyv.common.api.parser.entity.MediaMakerEntity
+import com.xiaoyv.common.kts.setOnDebouncedChildClickListener
import com.xiaoyv.widget.binder.BaseQuickDiffBindingAdapter
/**
@@ -26,6 +29,14 @@ class MediaCharacterFragment : BaseListFragment() {
init {
- this.addItemType(TYPE_SAVE, OverviewSaveBinder{})
+ this.addItemType(TYPE_SAVE, OverviewSaveBinder {})
.addItemType(TYPE_EP, OverviewEpBinder(touchedListener) {})
.addItemType(TYPE_TAG, OverviewTagBinder {})
.addItemType(TYPE_SUMMARY, OverviewSummaryBinder())
@@ -37,12 +37,12 @@ class OverviewAdapter(touchedListener: RecyclerItemTouchedListener) :
.addItemType(TYPE_DETAIL, OverviewDetailBinder())
.addItemType(TYPE_RATING, OverviewRatingBinder())
.addItemType(TYPE_CHARACTER, OverviewCharacterBinder(touchedListener) {})
- .addItemType(TYPE_MAKER, OverviewMakerBinder())
+ .addItemType(TYPE_MAKER, OverviewMakerBinder {})
.addItemType(TYPE_RELATIVE, OverviewRelativeBinder(touchedListener) {})
.addItemType(TYPE_INDEX, OverviewIndexBinder(touchedListener) {})
- .addItemType(TYPE_REVIEW, OverviewReviewBinder(touchedListener) {})
+ .addItemType(TYPE_REVIEW, OverviewReviewBinder(touchedListener,{}) {})
.addItemType(TYPE_BOARD, OverviewBoardBinder(touchedListener) {})
- .addItemType(TYPE_COMMENT, OverviewCommentBinder(touchedListener) {})
+ .addItemType(TYPE_COMMENT, OverviewCommentBinder(touchedListener,{}) {})
.onItemViewType(OnItemViewTypeListener { position, list ->
return@OnItemViewTypeListener list[position].type
})
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/OverviewFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/OverviewFragment.kt
index ffc61214..3daa89a4 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/OverviewFragment.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/OverviewFragment.kt
@@ -20,7 +20,6 @@ import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewCommentBinder
import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewDetailBinder
import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewEpBinder
import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewIndexBinder
-import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewMakerBinder
import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewPreviewBinder
import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewRatingBinder
import com.xiaoyv.bangumi.ui.media.detail.overview.binder.OverviewRelativeBinder
@@ -81,17 +80,27 @@ class OverviewFragment : BaseViewModelFragment Unit
+ private val clickItemListener: (MediaCommentEntity) -> Unit,
+ private val clickUserListener: (MediaCommentEntity) -> Unit,
) : BaseMultiItemAdapter.OnMultiItemAdapterListener> {
private val itemAdapter by lazy { MediaCommentAdapter() }
@@ -36,6 +37,7 @@ class OverviewCommentBinder(
holder.binding.rvComment.setInitialPrefetchItemCount(item.mediaDetailEntity.comments.size)
itemAdapter.submitList(item.mediaDetailEntity.comments)
itemAdapter.setOnDebouncedChildClickListener(R.id.item_comment, block = clickItemListener)
+ itemAdapter.setOnDebouncedChildClickListener(R.id.iv_avatar, block = clickUserListener)
}
override fun onCreate(
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewDetailBinder.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewDetailBinder.kt
index fe30851f..317dfc58 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewDetailBinder.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewDetailBinder.kt
@@ -5,7 +5,6 @@ import android.view.ViewGroup
import com.chad.library.adapter.base.BaseMultiItemAdapter
import com.xiaoyv.bangumi.databinding.FragmentOverviewDetailBinding
import com.xiaoyv.bangumi.ui.media.detail.overview.OverviewAdapter
-import com.xiaoyv.common.api.parser.parseHtml
import com.xiaoyv.common.kts.inflater
import com.xiaoyv.widget.binder.BaseQuickBindingHolder
@@ -25,9 +24,10 @@ class OverviewDetailBinder :
item ?: return
holder.binding.tvDetailContent.text = null
item.mediaDetailEntity.infos.forEach {
- holder.binding.tvDetailContent.append(it.parseHtml())
+ holder.binding.tvDetailContent.append(it)
holder.binding.tvDetailContent.append("\n")
}
+ holder.binding.tvDetailContent.append("...")
}
override fun onCreate(
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewMakerBinder.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewMakerBinder.kt
index e4685e58..ee594856 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewMakerBinder.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewMakerBinder.kt
@@ -5,6 +5,7 @@ import android.view.ViewGroup
import com.chad.library.adapter.base.BaseMultiItemAdapter
import com.xiaoyv.bangumi.databinding.FragmentOverviewMakerBinding
import com.xiaoyv.bangumi.ui.media.detail.overview.OverviewAdapter
+import com.xiaoyv.common.api.parser.entity.MediaDetailEntity
import com.xiaoyv.common.kts.inflater
import com.xiaoyv.widget.binder.BaseQuickBindingHolder
@@ -14,14 +15,15 @@ import com.xiaoyv.widget.binder.BaseQuickBindingHolder
* @author why
* @since 11/30/23
*/
-class OverviewMakerBinder :
- BaseMultiItemAdapter.OnMultiItemAdapterListener> {
+class OverviewMakerBinder(
+ private val clickItemListener: (MediaDetailEntity.MediaCharacter) -> Unit
+) : BaseMultiItemAdapter.OnMultiItemAdapterListener> {
override fun onBind(
holder: BaseQuickBindingHolder,
position: Int,
item: OverviewAdapter.OverviewItem?
) {
-
+ item ?: return
}
override fun onCreate(
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewReviewBinder.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewReviewBinder.kt
index 3d0fc827..1b9860bc 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewReviewBinder.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/overview/binder/OverviewReviewBinder.kt
@@ -7,6 +7,7 @@ import com.xiaoyv.bangumi.R
import com.xiaoyv.bangumi.databinding.FragmentOverviewReviewBinding
import com.xiaoyv.bangumi.ui.media.detail.overview.OverviewAdapter
import com.xiaoyv.bangumi.ui.media.detail.review.MediaReviewAdapter
+import com.xiaoyv.common.api.parser.entity.MediaCommentEntity
import com.xiaoyv.common.api.parser.entity.MediaReviewEntity
import com.xiaoyv.common.helper.RecyclerItemTouchedListener
import com.xiaoyv.common.kts.inflater
@@ -21,9 +22,9 @@ import com.xiaoyv.widget.binder.BaseQuickBindingHolder
*/
class OverviewReviewBinder(
private val touchedListener: RecyclerItemTouchedListener,
- private val clickItemListener: (MediaReviewEntity) -> Unit
-) :
- BaseMultiItemAdapter.OnMultiItemAdapterListener> {
+ private val clickItemListener: (MediaReviewEntity) -> Unit,
+ private val clickUserListener: (MediaReviewEntity) -> Unit
+) : BaseMultiItemAdapter.OnMultiItemAdapterListener> {
private val itemAdapter by lazy { MediaReviewAdapter() }
@@ -38,6 +39,7 @@ class OverviewReviewBinder(
holder.binding.rvReview.setInitialPrefetchItemCount(item.mediaDetailEntity.reviews.size)
itemAdapter.submitList(item.mediaDetailEntity.reviews)
itemAdapter.setOnDebouncedChildClickListener(R.id.item_review, block = clickItemListener)
+ itemAdapter.setOnDebouncedChildClickListener(R.id.iv_avatar, block = clickUserListener)
}
override fun onCreate(
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/review/MediaReviewFragment.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/review/MediaReviewFragment.kt
index 05d0fca3..5b663730 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/review/MediaReviewFragment.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/review/MediaReviewFragment.kt
@@ -34,6 +34,10 @@ class MediaReviewFragment : BaseListFragment
val type = when (ints.firstOrNull()) {
- R.id.type_wish -> CollectType.TYPE_WISH
- R.id.type_collect -> CollectType.TYPE_COLLECT
- R.id.type_do -> CollectType.TYPE_DO
- R.id.type_on_hold -> CollectType.TYPE_ON_HOLD
- R.id.type_dropped -> CollectType.TYPE_DROPPED
+ R.id.type_wish -> InterestCollectType.TYPE_WISH
+ R.id.type_collect -> InterestCollectType.TYPE_COLLECT
+ R.id.type_do -> InterestCollectType.TYPE_DO
+ R.id.type_on_hold -> InterestCollectType.TYPE_ON_HOLD
+ R.id.type_dropped -> InterestCollectType.TYPE_DROPPED
else -> null
}
diff --git a/app/src/main/java/com/xiaoyv/bangumi/ui/profile/page/save/SaveListViewModel.kt b/app/src/main/java/com/xiaoyv/bangumi/ui/profile/page/save/SaveListViewModel.kt
index ac13302e..bd63dc1b 100644
--- a/app/src/main/java/com/xiaoyv/bangumi/ui/profile/page/save/SaveListViewModel.kt
+++ b/app/src/main/java/com/xiaoyv/bangumi/ui/profile/page/save/SaveListViewModel.kt
@@ -8,7 +8,7 @@ import com.xiaoyv.common.api.BgmApiManager
import com.xiaoyv.common.api.parser.entity.BrowserEntity
import com.xiaoyv.common.api.parser.impl.BrowserParser.parserBrowserPage
import com.xiaoyv.common.config.annotation.BrowserSortType
-import com.xiaoyv.common.config.annotation.CollectType
+import com.xiaoyv.common.config.annotation.InterestCollectType
import com.xiaoyv.common.config.annotation.MediaType
import com.xiaoyv.widget.kts.copyAddAll
import kotlinx.coroutines.Dispatchers
@@ -23,7 +23,7 @@ import kotlinx.coroutines.withContext
class SaveListViewModel : BaseViewModel() {
internal val onListLiveData = MutableLiveData?>()
- internal var listType = CollectType.TYPE_WISH
+ internal var listType = InterestCollectType.TYPE_WISH
internal var userId = ""
/**
diff --git a/app/src/main/res/layout/activity_person.xml b/app/src/main/res/layout/activity_person.xml
new file mode 100644
index 00000000..003efaaf
--- /dev/null
+++ b/app/src/main/res/layout/activity_person.xml
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_user.xml b/app/src/main/res/layout/activity_user.xml
index 46af23e2..003efaaf 100644
--- a/app/src/main/res/layout/activity_user.xml
+++ b/app/src/main/res/layout/activity_user.xml
@@ -82,7 +82,7 @@
android:shadowRadius="2"
android:text="0000-00-00 加入"
android:textAppearance="?attr/textAppearanceBodySmall"
- android:textColor="?attr/colorOnPrimary"
+ android:textColor="?attr/colorOnPrimarySurface"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/iv_avatar" />
@@ -100,7 +100,7 @@
android:shadowRadius="2"
android:text="同步率 -%"
android:textAppearance="?attr/textAppearanceBodySmall"
- android:textColor="?attr/colorOnPrimary"
+ android:textColor="?attr/colorOnPrimarySurface"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintEnd_toStartOf="@id/iv_avatar"
@@ -118,7 +118,7 @@
android:shadowRadius="2"
android:text="最近活跃"
android:textAppearance="?attr/textAppearanceBodySmall"
- android:textColor="?attr/colorOnPrimary"
+ android:textColor="?attr/colorOnPrimarySurface"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintEnd_toStartOf="@id/iv_avatar"
@@ -136,7 +136,7 @@
android:shadowRadius="2"
android:text="Ta 的人物"
android:textAppearance="?attr/textAppearanceBodySmall"
- android:textColor="?attr/colorOnPrimary"
+ android:textColor="?attr/colorOnPrimarySurface"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/iv_avatar" />
@@ -154,7 +154,7 @@
android:shadowRadius="2"
android:text="Ta 的日志"
android:textAppearance="?attr/textAppearanceBodySmall"
- android:textColor="?attr/colorOnPrimary"
+ android:textColor="?attr/colorOnPrimarySurface"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
@@ -172,7 +172,7 @@
android:shadowRadius="2"
android:text="Ta 的目录"
android:textAppearance="?attr/textAppearanceBodySmall"
- android:textColor="?attr/colorOnPrimary"
+ android:textColor="?attr/colorOnPrimarySurface"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintStart_toEndOf="@id/iv_avatar" />
diff --git a/app/src/main/res/layout/fragment_media_character_item.xml b/app/src/main/res/layout/fragment_media_character_item.xml
index dacbf045..1c2b196a 100644
--- a/app/src/main/res/layout/fragment_media_character_item.xml
+++ b/app/src/main/res/layout/fragment_media_character_item.xml
@@ -2,6 +2,7 @@
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_persion_character.xml b/app/src/main/res/layout/fragment_persion_character.xml
new file mode 100644
index 00000000..77d9ef65
--- /dev/null
+++ b/app/src/main/res/layout/fragment_persion_character.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_persion_collect.xml b/app/src/main/res/layout/fragment_persion_collect.xml
new file mode 100644
index 00000000..77d9ef65
--- /dev/null
+++ b/app/src/main/res/layout/fragment_persion_collect.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_persion_cooperate.xml b/app/src/main/res/layout/fragment_persion_cooperate.xml
new file mode 100644
index 00000000..77d9ef65
--- /dev/null
+++ b/app/src/main/res/layout/fragment_persion_cooperate.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_persion_opus.xml b/app/src/main/res/layout/fragment_persion_opus.xml
new file mode 100644
index 00000000..77d9ef65
--- /dev/null
+++ b/app/src/main/res/layout/fragment_persion_opus.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_persion_overview.xml b/app/src/main/res/layout/fragment_persion_overview.xml
new file mode 100644
index 00000000..77d9ef65
--- /dev/null
+++ b/app/src/main/res/layout/fragment_persion_overview.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_save_list.xml b/app/src/main/res/layout/fragment_save_list.xml
index 1f3f99a3..a6cfb85f 100644
--- a/app/src/main/res/layout/fragment_save_list.xml
+++ b/app/src/main/res/layout/fragment_save_list.xml
@@ -91,6 +91,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/ui_size_0"
android:background="?attr/colorSurface"
+ app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/list_type">
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_user_overview_item.xml b/app/src/main/res/layout/fragment_user_overview_item.xml
new file mode 100644
index 00000000..2a82d932
--- /dev/null
+++ b/app/src/main/res/layout/fragment_user_overview_item.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_user_overview_title.xml b/app/src/main/res/layout/fragment_user_overview_title.xml
new file mode 100644
index 00000000..3f6db9bf
--- /dev/null
+++ b/app/src/main/res/layout/fragment_user_overview_title.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 6ff42cbf..4ce40f46 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,6 +1,6 @@
[versions]
agp = "8.3.0-alpha16"
-blueprint = "1.1.38"
+blueprint = "1.1.39"
fragmentKtx = "1.6.2"
jsoup = "1.16.2"
kotlin = "1.9.0"
diff --git a/lib-common/src/main/java/com/xiaoyv/common/api/parser/Parser.kt b/lib-common/src/main/java/com/xiaoyv/common/api/parser/Parser.kt
index 34d7620c..2a655ce4 100644
--- a/lib-common/src/main/java/com/xiaoyv/common/api/parser/Parser.kt
+++ b/lib-common/src/main/java/com/xiaoyv/common/api/parser/Parser.kt
@@ -34,15 +34,16 @@ fun String.fetchStyleBackgroundUrl(): String {
* --->
* https://lain.bgm.tv/pic/photo/g/41/30/823739_i8sWx.jpg
*/
-fun String.optImageUrl(): String {
+fun String.optImageUrl(large: Boolean = true): String {
val imageUrl = when {
startsWith("//") -> "https:$this"
startsWith("/") -> "${BgmApiManager.URL_BASE_WEB}$this"
else -> this
}
+ val size = if (large) "l" else "m"
return imageUrl
.replace("/r/(.*?)/".toRegex(), "/r/600/")
- .replace("/pic/(.*?)/[gcsml]/".toRegex(), "/pic/\$1/l/")
+ .replace("/pic/(.*?)/[gcsml]/".toRegex(), "/pic/\$1/$size/")
}
fun String?.parseCount(): Int {
diff --git a/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/MediaDetailEntity.kt b/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/MediaDetailEntity.kt
index 2219f80d..26c942e8 100644
--- a/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/MediaDetailEntity.kt
+++ b/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/MediaDetailEntity.kt
@@ -26,7 +26,7 @@ data class MediaDetailEntity(
@SerializedName("subtype") var subtype: String = "",
@SerializedName("cover") var cover: String = "",
@SerializedName("collectState") var collectState: MediaCollectForm = MediaCollectForm(),
- @SerializedName("infos") var infos: List = emptyList(),
+ @SerializedName("infos") var infos: List = emptyList(),
@SerializedName("recommendIndex") var recommendIndex: List = emptyList(),
@SerializedName("whoSee") var whoSee: List = emptyList(),
@SerializedName("countWish") var countWish: Int = 0,
@@ -92,7 +92,7 @@ data class MediaDetailEntity(
@SerializedName("id") var id: String = "",
@SerializedName("titleCn") var titleCn: String = "",
@SerializedName("titleNative") var titleNative: String = "",
- @SerializedName("type") var type: String = ""
+ @SerializedName("type") var type: String = "",
) : Parcelable
@Parcelize
diff --git a/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/UserDetailEntity.kt b/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/UserDetailEntity.kt
index 52b89723..a36369c4 100644
--- a/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/UserDetailEntity.kt
+++ b/lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/UserDetailEntity.kt
@@ -24,6 +24,7 @@ data class UserDetailEntity(
var blog: List = emptyList()
) {
data class SaveOverview(
+ var isEmpty: Boolean = true,
var title: String = "",
var count: List = emptyList(),
var doing: List = emptyList(),
diff --git a/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/MediaDetailParser.kt b/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/MediaDetailParser.kt
index 69538c71..d71b2994 100644
--- a/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/MediaDetailParser.kt
+++ b/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/MediaDetailParser.kt
@@ -11,6 +11,7 @@ import com.xiaoyv.common.api.parser.entity.MediaReviewEntity
import com.xiaoyv.common.api.parser.fetchStyleBackgroundUrl
import com.xiaoyv.common.api.parser.optImageUrl
import com.xiaoyv.common.api.parser.parseCount
+import com.xiaoyv.common.api.parser.parseHtml
import com.xiaoyv.common.api.parser.parserTime
import com.xiaoyv.common.config.annotation.MediaType
import com.xiaoyv.common.kts.decodeUrl
@@ -141,7 +142,7 @@ fun Document.parserMediaDetail(): MediaDetailEntity {
}
entity.subtype = select(".nameSingle small").text()
entity.cover = select("img.cover").attr("src").optImageUrl()
- entity.infos = select("#infobox > li").map { it.html() }
+ entity.infos = select("#infobox > li").map { it.html().parseHtml() }
entity.time = select("#infobox").text().parserTime()
entity.collectState = select("#panelInterestWrapper").let { item ->
diff --git a/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/UserParser.kt b/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/UserParser.kt
index 0b577b94..c8776c15 100644
--- a/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/UserParser.kt
+++ b/lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/UserParser.kt
@@ -6,6 +6,7 @@ import com.xiaoyv.common.api.parser.fetchStyleBackgroundUrl
import com.xiaoyv.common.api.parser.optImageUrl
import com.xiaoyv.common.api.parser.parseCount
import com.xiaoyv.common.api.parser.replaceSmiles
+import com.xiaoyv.common.config.annotation.InterestType
import com.xiaoyv.widget.kts.useNotNull
import org.jsoup.nodes.Document
import org.jsoup.select.Elements
@@ -93,18 +94,29 @@ fun Document.parserUserInfo(userId: String): UserDetailEntity {
fun Elements.parserUserSaveOverview(): UserDetailEntity.SaveOverview {
val overview = UserDetailEntity.SaveOverview()
val horizontalOptions = select(".horizontalOptions li")
+ if (horizontalOptions.isEmpty()) return overview
+ overview.isEmpty = false
overview.title = horizontalOptions.select("li.title").remove().text()
overview.count = horizontalOptions.map { it.text() }
- useNotNull(select("div.clearit").getOrNull(0)?.select("ul > li a")) {
- overview.doing
+ useNotNull(select("div.clearit .coversSmall").getOrNull(0)?.select("ul > li a")) {
+ overview.doing = map { item ->
+ val relative = MediaDetailEntity.MediaRelative()
+ relative.titleCn = item.select(".name").text()
+ relative.titleNative = item.select(".name").text()
+ relative.id = item.attr("href").substringAfterLast("/")
+ relative.cover = item.select("img").attr("src").optImageUrl(false)
+ relative.type = InterestType.TYPE_DO
+ relative
+ }
}
- useNotNull(select("div.clearit").getOrNull(1)?.select("ul > li a")) {
+ useNotNull(select("div.clearit .coversSmall").getOrNull(1)?.select("ul > li a")) {
overview.collect = map { item ->
val relative = MediaDetailEntity.MediaRelative()
relative.titleCn = item.select(".name").text()
relative.titleNative = item.select(".name").text()
relative.id = item.attr("href").substringAfterLast("/")
- relative.cover = item.select("img").attr("src").optImageUrl()
+ relative.cover = item.select("img").attr("src").optImageUrl(false)
+ relative.type = InterestType.TYPE_COLLECT
relative
}
}
diff --git a/lib-common/src/main/java/com/xiaoyv/common/config/annotation/CollectType.kt b/lib-common/src/main/java/com/xiaoyv/common/config/annotation/InterestCollectType.kt
similarity index 62%
rename from lib-common/src/main/java/com/xiaoyv/common/config/annotation/CollectType.kt
rename to lib-common/src/main/java/com/xiaoyv/common/config/annotation/InterestCollectType.kt
index 74d27a33..3502503d 100644
--- a/lib-common/src/main/java/com/xiaoyv/common/config/annotation/CollectType.kt
+++ b/lib-common/src/main/java/com/xiaoyv/common/config/annotation/InterestCollectType.kt
@@ -3,20 +3,20 @@ package com.xiaoyv.common.config.annotation
import androidx.annotation.StringDef
/**
- * Class: [CollectType]
+ * Class: [InterestCollectType]
*
* @author why
* @since 11/25/23
*/
@StringDef(
- CollectType.TYPE_WISH,
- CollectType.TYPE_COLLECT,
- CollectType.TYPE_DO,
- CollectType.TYPE_ON_HOLD,
- CollectType.TYPE_DROPPED
+ InterestCollectType.TYPE_WISH,
+ InterestCollectType.TYPE_COLLECT,
+ InterestCollectType.TYPE_DO,
+ InterestCollectType.TYPE_ON_HOLD,
+ InterestCollectType.TYPE_DROPPED
)
@Retention(AnnotationRetention.SOURCE)
-annotation class CollectType {
+annotation class InterestCollectType {
companion object {
const val TYPE_WISH = "wish"
const val TYPE_COLLECT = "collect"
diff --git a/lib-common/src/main/java/com/xiaoyv/common/config/annotation/PersonTabType.kt b/lib-common/src/main/java/com/xiaoyv/common/config/annotation/PersonTabType.kt
new file mode 100644
index 00000000..ba615334
--- /dev/null
+++ b/lib-common/src/main/java/com/xiaoyv/common/config/annotation/PersonTabType.kt
@@ -0,0 +1,27 @@
+package com.xiaoyv.common.config.annotation
+
+import androidx.annotation.IntDef
+
+/**
+ * Class: [PersonTabType]
+ *
+ * @author why
+ * @since 11/25/23
+ */
+@IntDef(
+ PersonTabType.TYPE_OVERVIEW,
+ PersonTabType.TYPE_CHARACTER,
+ PersonTabType.TYPE_OPUS,
+ PersonTabType.TYPE_COOPERATE,
+ PersonTabType.TYPE_SAVE
+)
+@Retention(AnnotationRetention.SOURCE)
+annotation class PersonTabType {
+ companion object {
+ const val TYPE_OVERVIEW = 0
+ const val TYPE_CHARACTER = 1
+ const val TYPE_OPUS = 2
+ const val TYPE_COOPERATE = 3
+ const val TYPE_SAVE = 4
+ }
+}
diff --git a/lib-common/src/main/java/com/xiaoyv/common/config/bean/PersonTab.kt b/lib-common/src/main/java/com/xiaoyv/common/config/bean/PersonTab.kt
new file mode 100644
index 00000000..af249622
--- /dev/null
+++ b/lib-common/src/main/java/com/xiaoyv/common/config/bean/PersonTab.kt
@@ -0,0 +1,19 @@
+package com.xiaoyv.common.config.bean
+
+import android.os.Parcelable
+import com.xiaoyv.common.config.annotation.PersonTabType
+import kotlinx.parcelize.Parcelize
+
+/**
+ * Class: [PersonTab]
+ *
+ * @author why
+ * @since 11/25/23
+ */
+@Parcelize
+data class PersonTab(
+ var title: String,
+
+ @PersonTabType
+ var type: Int
+) : Parcelable
\ No newline at end of file
diff --git a/lib-common/src/main/java/com/xiaoyv/common/kts/AnimeKt.kt b/lib-common/src/main/java/com/xiaoyv/common/kts/AnimeKt.kt
new file mode 100644
index 00000000..e4b066bf
--- /dev/null
+++ b/lib-common/src/main/java/com/xiaoyv/common/kts/AnimeKt.kt
@@ -0,0 +1,43 @@
+package com.xiaoyv.common.kts
+
+import android.animation.ObjectAnimator
+import android.view.View
+import android.view.animation.AccelerateDecelerateInterpolator
+import androidx.core.animation.doOnEnd
+import com.xiaoyv.widget.kts.dpf
+import kotlin.random.Random
+
+private val breathDistance by lazy { 5.dpf }
+
+val randomOffset: Float
+ get() = (Random.nextFloat() - 0.5f) * breathDistance
+
+/**
+ * 设置无限循环的动画
+ */
+fun randomX(view: View, startX: Float) {
+ val offsetX = randomOffset
+ val animatorX = ObjectAnimator.ofFloat(startX, offsetX)
+ animatorX.interpolator = AccelerateDecelerateInterpolator()
+ animatorX.repeatCount = 0
+ animatorX.duration = 2000
+ animatorX.addUpdateListener {
+ view.translationX = it.animatedValue as Float
+ }
+ animatorX.doOnEnd { randomX(view, offsetX) }
+ animatorX.start()
+}
+
+/**
+ * 设置无限循环的动画
+ */
+fun randomY(view: View, startY: Float) {
+ val offsetY = randomOffset
+ val animatorX = ObjectAnimator.ofFloat(view, "translationY", startY, offsetY)
+ animatorX.interpolator = AccelerateDecelerateInterpolator()
+ animatorX.repeatCount = 0
+ animatorX.duration = 2000
+ animatorX.doOnEnd { randomY(view, offsetY) }
+ animatorX.start()
+}
+
diff --git a/lib-common/src/main/java/com/xiaoyv/common/kts/ImageViewKt.kt b/lib-common/src/main/java/com/xiaoyv/common/kts/ImageViewKt.kt
index b94f9b7e..1237f835 100644
--- a/lib-common/src/main/java/com/xiaoyv/common/kts/ImageViewKt.kt
+++ b/lib-common/src/main/java/com/xiaoyv/common/kts/ImageViewKt.kt
@@ -31,6 +31,11 @@ inline fun ImageView.loadImageAnimate(
.into(this)
}
+fun ImageView.clear() {
+ Glide.with(this).clear(this)
+ setImageResource(0)
+}
+
inline fun ImageView.loadImageBlur(
model: Any?, centerCrop: Boolean = true,
crossinline onReady: (Drawable) -> Unit = {},
diff --git a/lib-common/src/main/res/drawable/shape_state.xml b/lib-common/src/main/res/drawable/shape_state.xml
new file mode 100644
index 00000000..6e48aceb
--- /dev/null
+++ b/lib-common/src/main/res/drawable/shape_state.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file