From 59088cba81bdcf14626de3a9efa15d9b84086219 Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Mon, 5 Oct 2026 10:11:57 +0000 Subject: [PATCH] fix(deps): Fix npm audit Signed-off-by: GitHub --- ... ActivityCommentAction-DWdaVw2X.chunk.mjs} | 4 +- ...yCommentAction-DWdaVw2X.chunk.mjs.license} | 0 ...ivityCommentAction-DWdaVw2X.chunk.mjs.map} | 2 +- ...mentAction-DWdaVw2X.chunk.mjs.map.license} | 0 ...> ActivityCommentEntry-BhtrC8kL.chunk.mjs} | 4 +- ...tyCommentEntry-BhtrC8kL.chunk.mjs.license} | 0 ...tivityCommentEntry-BhtrC8kL.chunk.mjs.map} | 2 +- ...mmentEntry-BhtrC8kL.chunk.mjs.map.license} | 0 ...unk.mjs => CommentView-BhF0LoGw.chunk.mjs} | 4 +- ...=> CommentView-BhF0LoGw.chunk.mjs.license} | 0 ...map => CommentView-BhF0LoGw.chunk.mjs.map} | 2 +- ...ommentView-BhF0LoGw.chunk.mjs.map.license} | 0 ...mjs => FilesSidebarTab-DksFRHhR.chunk.mjs} | 4 +- ...ilesSidebarTab-DksFRHhR.chunk.mjs.license} | 0 ...=> FilesSidebarTab-DksFRHhR.chunk.mjs.map} | 2 +- ...SidebarTab-DksFRHhR.chunk.mjs.map.license} | 0 dist/GetComments-DJtGp6Zq.chunk.mjs | 11 + ...=> GetComments-DJtGp6Zq.chunk.mjs.license} | 2 +- dist/GetComments-DJtGp6Zq.chunk.mjs.map | 1 + ...etComments-DJtGp6Zq.chunk.mjs.map.license} | 2 +- dist/GetComments-DzpQCqQO.chunk.mjs | 11 - dist/GetComments-DzpQCqQO.chunk.mjs.map | 1 - dist/comments-comments-app.mjs | 2 +- dist/comments-comments-tab.mjs | 4 +- package-lock.json | 342 ++++++------------ 25 files changed, 145 insertions(+), 255 deletions(-) rename dist/{ActivityCommentAction-KqoFLlsS.chunk.mjs => ActivityCommentAction-DWdaVw2X.chunk.mjs} (90%) rename dist/{ActivityCommentAction-KqoFLlsS.chunk.mjs.license => ActivityCommentAction-DWdaVw2X.chunk.mjs.license} (100%) rename dist/{ActivityCommentAction-KqoFLlsS.chunk.mjs.map => ActivityCommentAction-DWdaVw2X.chunk.mjs.map} (96%) rename dist/{ActivityCommentAction-KqoFLlsS.chunk.mjs.map.license => ActivityCommentAction-DWdaVw2X.chunk.mjs.map.license} (100%) rename dist/{ActivityCommentEntry-Ci5R0sO4.chunk.mjs => ActivityCommentEntry-BhtrC8kL.chunk.mjs} (91%) rename dist/{ActivityCommentEntry-Ci5R0sO4.chunk.mjs.license => ActivityCommentEntry-BhtrC8kL.chunk.mjs.license} (100%) rename dist/{ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map => ActivityCommentEntry-BhtrC8kL.chunk.mjs.map} (97%) rename dist/{ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map.license => ActivityCommentEntry-BhtrC8kL.chunk.mjs.map.license} (100%) rename dist/{CommentView-D4oJ1b3g.chunk.mjs => CommentView-BhF0LoGw.chunk.mjs} (99%) rename dist/{CommentView-D4oJ1b3g.chunk.mjs.license => CommentView-BhF0LoGw.chunk.mjs.license} (100%) rename dist/{CommentView-D4oJ1b3g.chunk.mjs.map => CommentView-BhF0LoGw.chunk.mjs.map} (99%) rename dist/{CommentView-D4oJ1b3g.chunk.mjs.map.license => CommentView-BhF0LoGw.chunk.mjs.map.license} (100%) rename dist/{FilesSidebarTab-B-KOoDDF.chunk.mjs => FilesSidebarTab-DksFRHhR.chunk.mjs} (97%) rename dist/{FilesSidebarTab-B-KOoDDF.chunk.mjs.license => FilesSidebarTab-DksFRHhR.chunk.mjs.license} (100%) rename dist/{FilesSidebarTab-B-KOoDDF.chunk.mjs.map => FilesSidebarTab-DksFRHhR.chunk.mjs.map} (99%) rename dist/{FilesSidebarTab-B-KOoDDF.chunk.mjs.map.license => FilesSidebarTab-DksFRHhR.chunk.mjs.map.license} (100%) create mode 100644 dist/GetComments-DJtGp6Zq.chunk.mjs rename dist/{GetComments-DzpQCqQO.chunk.mjs.license => GetComments-DJtGp6Zq.chunk.mjs.license} (97%) create mode 100644 dist/GetComments-DJtGp6Zq.chunk.mjs.map rename dist/{GetComments-DzpQCqQO.chunk.mjs.map.license => GetComments-DJtGp6Zq.chunk.mjs.map.license} (97%) delete mode 100644 dist/GetComments-DzpQCqQO.chunk.mjs delete mode 100644 dist/GetComments-DzpQCqQO.chunk.mjs.map diff --git a/dist/ActivityCommentAction-KqoFLlsS.chunk.mjs b/dist/ActivityCommentAction-DWdaVw2X.chunk.mjs similarity index 90% rename from dist/ActivityCommentAction-KqoFLlsS.chunk.mjs rename to dist/ActivityCommentAction-DWdaVw2X.chunk.mjs index 06f97a2c67033..234ffddb5eade 100644 --- a/dist/ActivityCommentAction-KqoFLlsS.chunk.mjs +++ b/dist/ActivityCommentAction-DWdaVw2X.chunk.mjs @@ -1,2 +1,2 @@ -import{b as t}from"./index-CAjMXx18.chunk.mjs";import{t as m}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{C as e,a as p}from"./CommentView-D4oJ1b3g.chunk.mjs";import{l as i}from"./activity-C7pDSEJs.chunk.mjs";import{b as a,e as s,r as n,o as c,f as u,m as l}from"./Web-0o0ZsUfo.chunk.mjs";import"./mdi-DGcEJzSa.chunk.mjs";import"./ArrowRight-Bs7cnqGk.chunk.mjs";import"./MapMarkerOutline-BL-F_JRn.chunk.mjs";import"./NcIconSvgWrapper-BVQJsMAt.chunk.mjs";import"./Link-BG7j_u2w.chunk.mjs";import"./Check-QdDOQaCe.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./Plus-BvFExD7G.chunk.mjs";import"./NcModal-sd2PYzev.chunk.mjs";import"./index-DsbwZBFO.chunk.mjs";import"./NcActionButton-NiLnxAD4.chunk.mjs";import"./star-DcL0I5g8.chunk.mjs";import"./NcAvatar-BRdLWCVs.chunk.mjs";import"./PencilOutline-Cr5fPBe7.chunk.mjs";import"./autolink-BflwX-7S.chunk.mjs";import"./colors-Cc9RSgrJ.chunk.mjs";import"./NcUserStatusIcon-DRorX2P9.chunk.mjs";import"./NcActionLink-BZz5KtLo.chunk.mjs";import"./NcActionRouter-BRhYA82X.chunk.mjs";import"./MenuUp-BstQL5et.chunk.mjs";import"./history-dpxDOhiN.chunk.mjs";import"./GetComments-DzpQCqQO.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";const d=a({components:{CommentEntry:p},mixins:[e],props:{reloadCallback:{type:Function,required:!0}},methods:{onNewComment(){try{this.reloadCallback()}catch(o){t(m("comments","Could not reload comments")),i.error("Could not reload comments",{error:o})}}}});function C(o,f,y,b,w,N){const r=n("CommentEntry");return c(),u(r,l(o.editorData,{autoComplete:o.autoComplete,resourceType:o.resourceType,editor:!0,userData:o.userData,resourceId:o.resourceId,class:"comments-action",onNew:o.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"])}const X=s(d,[["render",C],["__scopeId","data-v-099b6b12"]]);export{X as default}; -//# sourceMappingURL=ActivityCommentAction-KqoFLlsS.chunk.mjs.map +import{b as t}from"./index-CAjMXx18.chunk.mjs";import{t as m}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{C as e,a as p}from"./CommentView-BhF0LoGw.chunk.mjs";import{l as i}from"./activity-C7pDSEJs.chunk.mjs";import{b as a,e as s,r as n,o as c,f as u,m as l}from"./Web-0o0ZsUfo.chunk.mjs";import"./mdi-DGcEJzSa.chunk.mjs";import"./ArrowRight-Bs7cnqGk.chunk.mjs";import"./MapMarkerOutline-BL-F_JRn.chunk.mjs";import"./NcIconSvgWrapper-BVQJsMAt.chunk.mjs";import"./Link-BG7j_u2w.chunk.mjs";import"./Check-QdDOQaCe.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./Plus-BvFExD7G.chunk.mjs";import"./NcModal-sd2PYzev.chunk.mjs";import"./index-DsbwZBFO.chunk.mjs";import"./NcActionButton-NiLnxAD4.chunk.mjs";import"./star-DcL0I5g8.chunk.mjs";import"./NcAvatar-BRdLWCVs.chunk.mjs";import"./PencilOutline-Cr5fPBe7.chunk.mjs";import"./autolink-BflwX-7S.chunk.mjs";import"./colors-Cc9RSgrJ.chunk.mjs";import"./NcUserStatusIcon-DRorX2P9.chunk.mjs";import"./NcActionLink-BZz5KtLo.chunk.mjs";import"./NcActionRouter-BRhYA82X.chunk.mjs";import"./MenuUp-BstQL5et.chunk.mjs";import"./history-dpxDOhiN.chunk.mjs";import"./GetComments-DJtGp6Zq.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";const d=a({components:{CommentEntry:p},mixins:[e],props:{reloadCallback:{type:Function,required:!0}},methods:{onNewComment(){try{this.reloadCallback()}catch(o){t(m("comments","Could not reload comments")),i.error("Could not reload comments",{error:o})}}}});function C(o,f,y,b,w,N){const r=n("CommentEntry");return c(),u(r,l(o.editorData,{autoComplete:o.autoComplete,resourceType:o.resourceType,editor:!0,userData:o.userData,resourceId:o.resourceId,class:"comments-action",onNew:o.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"])}const X=s(d,[["render",C],["__scopeId","data-v-099b6b12"]]);export{X as default}; +//# sourceMappingURL=ActivityCommentAction-DWdaVw2X.chunk.mjs.map diff --git a/dist/ActivityCommentAction-KqoFLlsS.chunk.mjs.license b/dist/ActivityCommentAction-DWdaVw2X.chunk.mjs.license similarity index 100% rename from dist/ActivityCommentAction-KqoFLlsS.chunk.mjs.license rename to dist/ActivityCommentAction-DWdaVw2X.chunk.mjs.license diff --git a/dist/ActivityCommentAction-KqoFLlsS.chunk.mjs.map b/dist/ActivityCommentAction-DWdaVw2X.chunk.mjs.map similarity index 96% rename from dist/ActivityCommentAction-KqoFLlsS.chunk.mjs.map rename to dist/ActivityCommentAction-DWdaVw2X.chunk.mjs.map index dec4ceb184dc1..780ff63456136 100644 --- a/dist/ActivityCommentAction-KqoFLlsS.chunk.mjs.map +++ b/dist/ActivityCommentAction-DWdaVw2X.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ActivityCommentAction-KqoFLlsS.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentAction.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","defineComponent","CommentEntry","CommentView","error","showError","t","logger","_createBlock","_component_CommentEntry","_mergeProps","_ctx"],"mappings":"0wCAyBA,MAAAA,EAAeC,EAAgB,CAC9B,WAAY,CACX,aAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,QAAS,CACR,cAAe,CACd,GAAI,CAEH,KAAK,eAAA,CACN,OAASC,EAAO,CACfC,EAAUC,EAAE,WAAY,2BAA2B,CAAC,EACpDC,EAAO,MAAM,4BAA6B,CAAE,MAAAH,CAAA,CAAO,CACpD,CACD,CAAA,CAEF,CAAC,+DA3CAI,EAQuBC,EARvBC,EAQuBC,EAPd,WAAU,CACjB,aAAcA,EAAA,aACd,aAAcA,EAAA,aACd,OAAQ,GACR,SAAUA,EAAA,SACV,WAAYA,EAAA,WACb,MAAM,kBACL,MAAKA,EAAA,YAAA,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,WAAA,aAAA,OAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"ActivityCommentAction-DWdaVw2X.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentAction.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","defineComponent","CommentEntry","CommentView","error","showError","t","logger","_createBlock","_component_CommentEntry","_mergeProps","_ctx"],"mappings":"0wCAyBA,MAAAA,EAAeC,EAAgB,CAC9B,WAAY,CACX,aAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,QAAS,CACR,cAAe,CACd,GAAI,CAEH,KAAK,eAAA,CACN,OAASC,EAAO,CACfC,EAAUC,EAAE,WAAY,2BAA2B,CAAC,EACpDC,EAAO,MAAM,4BAA6B,CAAE,MAAAH,CAAA,CAAO,CACpD,CACD,CAAA,CAEF,CAAC,+DA3CAI,EAQuBC,EARvBC,EAQuBC,EAPd,WAAU,CACjB,aAAcA,EAAA,aACd,aAAcA,EAAA,aACd,OAAQ,GACR,SAAUA,EAAA,SACV,WAAYA,EAAA,WACb,MAAM,kBACL,MAAKA,EAAA,YAAA,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,WAAA,aAAA,OAAA,CAAA"} \ No newline at end of file diff --git a/dist/ActivityCommentAction-KqoFLlsS.chunk.mjs.map.license b/dist/ActivityCommentAction-DWdaVw2X.chunk.mjs.map.license similarity index 100% rename from dist/ActivityCommentAction-KqoFLlsS.chunk.mjs.map.license rename to dist/ActivityCommentAction-DWdaVw2X.chunk.mjs.map.license diff --git a/dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs b/dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs similarity index 91% rename from dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs rename to dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs index 1ced7703fecff..50953f662075a 100644 --- a/dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs +++ b/dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs @@ -1,2 +1,2 @@ -import{t as s}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{C as p,a as i}from"./CommentView-D4oJ1b3g.chunk.mjs";import{e as a,r as n,o as c,f as u,m as d}from"./Web-0o0ZsUfo.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./NcActionButton-NiLnxAD4.chunk.mjs";import"./Check-QdDOQaCe.chunk.mjs";import"./NcIconSvgWrapper-BVQJsMAt.chunk.mjs";import"./Link-BG7j_u2w.chunk.mjs";import"./NcModal-sd2PYzev.chunk.mjs";import"./ArrowRight-Bs7cnqGk.chunk.mjs";import"./MapMarkerOutline-BL-F_JRn.chunk.mjs";import"./star-DcL0I5g8.chunk.mjs";import"./NcAvatar-BRdLWCVs.chunk.mjs";import"./PencilOutline-Cr5fPBe7.chunk.mjs";import"./autolink-BflwX-7S.chunk.mjs";import"./colors-Cc9RSgrJ.chunk.mjs";import"./NcUserStatusIcon-DRorX2P9.chunk.mjs";import"./NcActionLink-BZz5KtLo.chunk.mjs";import"./NcActionRouter-BRhYA82X.chunk.mjs";import"./MenuUp-BstQL5et.chunk.mjs";import"./Plus-BvFExD7G.chunk.mjs";import"./mdi-DGcEJzSa.chunk.mjs";import"./history-dpxDOhiN.chunk.mjs";import"./index-CAjMXx18.chunk.mjs";import"./index-DsbwZBFO.chunk.mjs";import"./activity-C7pDSEJs.chunk.mjs";import"./GetComments-DzpQCqQO.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";const l={name:"ActivityCommentEntry",components:{CommentEntry:i},mixins:[p],props:{comment:{type:Object,required:!0},reloadCallback:{type:Function,required:!0}},data(){return{commentMessage:""}},watch:{comment(){this.commentMessage=this.comment.props.message}},mounted(){this.commentMessage=this.comment.props.message},methods:{t:s}};function g(t,e,o,y,m,C){const r=n("CommentEntry");return c(),u(r,d({ref:"comment",tag:"li"},o.comment.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,message:m.commentMessage,resourceId:t.resourceId,userData:t.genMentionsData(o.comment.props.mentions),class:"comments-activity",onDelete:e[0]||(e[0]=f=>o.reloadCallback())}),null,16,["autoComplete","resourceType","message","resourceId","userData"])}const V=a(l,[["render",g],["__scopeId","data-v-2d51dbfd"]]);export{V as default}; -//# sourceMappingURL=ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map +import{t as s}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{C as p,a as i}from"./CommentView-BhF0LoGw.chunk.mjs";import{e as a,r as n,o as c,f as u,m as d}from"./Web-0o0ZsUfo.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./NcActionButton-NiLnxAD4.chunk.mjs";import"./Check-QdDOQaCe.chunk.mjs";import"./NcIconSvgWrapper-BVQJsMAt.chunk.mjs";import"./Link-BG7j_u2w.chunk.mjs";import"./NcModal-sd2PYzev.chunk.mjs";import"./ArrowRight-Bs7cnqGk.chunk.mjs";import"./MapMarkerOutline-BL-F_JRn.chunk.mjs";import"./star-DcL0I5g8.chunk.mjs";import"./NcAvatar-BRdLWCVs.chunk.mjs";import"./PencilOutline-Cr5fPBe7.chunk.mjs";import"./autolink-BflwX-7S.chunk.mjs";import"./colors-Cc9RSgrJ.chunk.mjs";import"./NcUserStatusIcon-DRorX2P9.chunk.mjs";import"./NcActionLink-BZz5KtLo.chunk.mjs";import"./NcActionRouter-BRhYA82X.chunk.mjs";import"./MenuUp-BstQL5et.chunk.mjs";import"./Plus-BvFExD7G.chunk.mjs";import"./mdi-DGcEJzSa.chunk.mjs";import"./history-dpxDOhiN.chunk.mjs";import"./index-CAjMXx18.chunk.mjs";import"./index-DsbwZBFO.chunk.mjs";import"./activity-C7pDSEJs.chunk.mjs";import"./GetComments-DJtGp6Zq.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";const l={name:"ActivityCommentEntry",components:{CommentEntry:i},mixins:[p],props:{comment:{type:Object,required:!0},reloadCallback:{type:Function,required:!0}},data(){return{commentMessage:""}},watch:{comment(){this.commentMessage=this.comment.props.message}},mounted(){this.commentMessage=this.comment.props.message},methods:{t:s}};function g(t,e,o,y,m,C){const r=n("CommentEntry");return c(),u(r,d({ref:"comment",tag:"li"},o.comment.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,message:m.commentMessage,resourceId:t.resourceId,userData:t.genMentionsData(o.comment.props.mentions),class:"comments-activity",onDelete:e[0]||(e[0]=f=>o.reloadCallback())}),null,16,["autoComplete","resourceType","message","resourceId","userData"])}const V=a(l,[["render",g],["__scopeId","data-v-2d51dbfd"]]);export{V as default}; +//# sourceMappingURL=ActivityCommentEntry-BhtrC8kL.chunk.mjs.map diff --git a/dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs.license b/dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs.license similarity index 100% rename from dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs.license rename to dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs.license diff --git a/dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map b/dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs.map similarity index 97% rename from dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map rename to dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs.map index 34fbb57d76726..3a4e718499c85 100644 --- a/dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map +++ b/dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ActivityCommentEntry-Ci5R0sO4.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentEntry.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","CommentEntry","CommentView","t","_openBlock","_createBlock","_component_CommentEntry","_mergeProps","$props","_ctx","$data","_cache"],"mappings":"2uCA0BA,MAAAA,EAAe,CACd,KAAM,uBAEN,WAAY,CACX,aAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,QAAS,CACR,KAAM,OACN,SAAU,EAAA,EAGX,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,MAAO,CACN,MAAO,CACN,eAAgB,EAAA,CAElB,EAEA,MAAO,CACN,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,CAAA,EAGD,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,EAEA,QAAS,CAAA,EACRC,CAAA,CAEF,oDA3DC,OAAAC,EAAA,EAAAC,EAU8BC,EAV9BC,EAU8B,CAT7B,IAAI,UACJ,IAAI,IAAA,EACIC,UAAQ,MAAK,CACpB,aAAcC,EAAA,aACd,aAAcA,EAAA,aACd,QAASC,EAAA,eACT,WAAYD,EAAA,WACZ,SAAUA,EAAA,gBAAgBD,EAAA,QAAQ,MAAM,QAAQ,EACjD,MAAM,oBACL,SAAMG,eAAEH,EAAA,eAAA,EAAc,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,UAAA,aAAA,UAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"ActivityCommentEntry-BhtrC8kL.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentEntry.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","CommentEntry","CommentView","t","_openBlock","_createBlock","_component_CommentEntry","_mergeProps","$props","_ctx","$data","_cache"],"mappings":"2uCA0BA,MAAAA,EAAe,CACd,KAAM,uBAEN,WAAY,CACX,aAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,QAAS,CACR,KAAM,OACN,SAAU,EAAA,EAGX,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,MAAO,CACN,MAAO,CACN,eAAgB,EAAA,CAElB,EAEA,MAAO,CACN,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,CAAA,EAGD,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,EAEA,QAAS,CAAA,EACRC,CAAA,CAEF,oDA3DC,OAAAC,EAAA,EAAAC,EAU8BC,EAV9BC,EAU8B,CAT7B,IAAI,UACJ,IAAI,IAAA,EACIC,UAAQ,MAAK,CACpB,aAAcC,EAAA,aACd,aAAcA,EAAA,aACd,QAASC,EAAA,eACT,WAAYD,EAAA,WACZ,SAAUA,EAAA,gBAAgBD,EAAA,QAAQ,MAAM,QAAQ,EACjD,MAAM,oBACL,SAAMG,eAAEH,EAAA,eAAA,EAAc,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,UAAA,aAAA,UAAA,CAAA"} \ No newline at end of file diff --git a/dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map.license b/dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs.map.license similarity index 100% rename from dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs.map.license rename to dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs.map.license diff --git a/dist/CommentView-D4oJ1b3g.chunk.mjs b/dist/CommentView-BhF0LoGw.chunk.mjs similarity index 99% rename from dist/CommentView-D4oJ1b3g.chunk.mjs rename to dist/CommentView-BhF0LoGw.chunk.mjs index ad4861aed34bc..9fdb7dc133eda 100644 --- a/dist/CommentView-D4oJ1b3g.chunk.mjs +++ b/dist/CommentView-BhF0LoGw.chunk.mjs @@ -1,5 +1,5 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-DMO_O46v.chunk.mjs'),window.OC.filePath('', '', 'dist/Link-BG7j_u2w.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-0o0ZsUfo.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DosHP9c_.chunk.mjs'),window.OC.filePath('', '', 'dist/_plugin-vue_export-helper-DPNLE7fV.chunk.mjs'),window.OC.filePath('', '', 'dist/star-outline-3oU1ox7V.chunk.mjs'),window.OC.filePath('', '', 'dist/NcAvatar-BRdLWCVs.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-Cr5fPBe7.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-sd2PYzev.chunk.mjs'),window.OC.filePath('', '', 'dist/Check-QdDOQaCe.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Check-3plNpBrB.chunk.css'),window.OC.filePath('', '', 'dist/ArrowRight-Bs7cnqGk.chunk.mjs'),window.OC.filePath('', '', 'dist/NcIconSvgWrapper-BVQJsMAt.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcIconSvgWrapper-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/MapMarkerOutline-BL-F_JRn.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-Cclh_O_-.chunk.css'),window.OC.filePath('', '', 'dist/autolink-BflwX-7S.chunk.mjs'),window.OC.filePath('', '', 'dist/common-autolink-B8CEsDGb.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cc9RSgrJ.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-DRorX2P9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcActionButton-NiLnxAD4.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionButton-BQBDvDX2.chunk.css'),window.OC.filePath('', '', 'dist/NcActionLink-BZz5KtLo.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionLink-iJnZg6ii.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-BRhYA82X.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionRouter-C1KErZDl.chunk.css'),window.OC.filePath('', '', 'dist/MenuUp-BstQL5et.chunk.mjs'),window.OC.filePath('', '', 'dist/common-MenuUp-BzbAkUEn.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BvFExD7G.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-o8Woel4F.chunk.css'),window.OC.filePath('', '', 'dist/emoji-CT5vTUpm.chunk.mjs'),window.OC.filePath('', '', 'dist/NcRichText-DYYEZNEt.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-BqB4BfYn.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-BAaFbykd.chunk.css'),window.OC.filePath('', '', 'dist/common-NcRichText-DVtX8ulO.chunk.css'),window.OC.filePath('', '', 'dist/index-B28D1CUs.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CHrcTZDr.chunk.mjs'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-NycF1YRW.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-CTHzsNT3.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-B5YBBomo.chunk.css'),window.OC.filePath('', '', 'dist/common-index-CRfKBhKV.chunk.css'),window.OC.filePath('', '', 'dist/Folder-BxcsshGI.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Folder-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/common-index-Bkq_iXjX.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DBjOe6uk.chunk.css')])))=>i.map(i=>d[i]); -import{e as A,o as c,j as y,g as p,t as g,k as C,m as F,V as W,a9 as S,Z as H,a as D,_ as L,r as n,S as K,U as Z,f as u,w as m,h as d,I as G,C as I,N as J,n as T,K as Q,b as X}from"./Web-0o0ZsUfo.chunk.mjs";import{a as f,c as Y}from"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import{t as ee}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{N as te}from"./NcActionButton-NiLnxAD4.chunk.mjs";import{a as oe}from"./NcModal-sd2PYzev.chunk.mjs";import{N as ie}from"./star-DcL0I5g8.chunk.mjs";import{N as se}from"./NcAvatar-BRdLWCVs.chunk.mjs";import{N as ae}from"./Check-QdDOQaCe.chunk.mjs";import{_ as re}from"./mdi-DGcEJzSa.chunk.mjs";import{N as ne}from"./Plus-BvFExD7G.chunk.mjs";import{N as ce}from"./history-dpxDOhiN.chunk.mjs";import{A as me}from"./ArrowRight-Bs7cnqGk.chunk.mjs";import{c as x,P as de}from"./PencilOutline-Cr5fPBe7.chunk.mjs";import{b as N,T as le,i as ue}from"./index-CAjMXx18.chunk.mjs";import{l as h}from"./activity-C7pDSEJs.chunk.mjs";import{c as k,a as pe}from"./GetComments-DzpQCqQO.chunk.mjs";import{l as he}from"./star-outline-3oU1ox7V.chunk.mjs";const ge={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ye=["aria-hidden","aria-label"],fe=["fill","width","height"],_e={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},be={key:0};function Ce(e,o,i,a,r,s){return c(),y("span",F(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon close-icon",role:"img",onClick:o[0]||(o[0]=_=>e.$emit("click",_))}),[(c(),y("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[p("path",_e,[i.title?(c(),y("title",be,g(i.title),1)):C("",!0)])],8,fe))],16,ye)}const Ie=A(ge,[["render",Ce]]);async function Ne(e,o,i){const a=["",e,o,i].join("/");await k.deleteFile(a)}async function De(e,o,i,a){const r=["",e,o,i].join("/");return await k.customRequest(r,{method:"PROPPATCH",data:` +import{e as A,o as c,j as y,g as p,t as g,k as C,m as F,V as W,a9 as S,Z as H,a as D,_ as L,r as n,S as K,U as Z,f as u,w as m,h as d,I as G,C as I,N as J,n as T,K as Q,b as X}from"./Web-0o0ZsUfo.chunk.mjs";import{a as f,c as Y}from"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import{t as ee}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{N as te}from"./NcActionButton-NiLnxAD4.chunk.mjs";import{a as oe}from"./NcModal-sd2PYzev.chunk.mjs";import{N as ie}from"./star-DcL0I5g8.chunk.mjs";import{N as se}from"./NcAvatar-BRdLWCVs.chunk.mjs";import{N as ae}from"./Check-QdDOQaCe.chunk.mjs";import{_ as re}from"./mdi-DGcEJzSa.chunk.mjs";import{N as ne}from"./Plus-BvFExD7G.chunk.mjs";import{N as ce}from"./history-dpxDOhiN.chunk.mjs";import{A as me}from"./ArrowRight-Bs7cnqGk.chunk.mjs";import{c as x,P as de}from"./PencilOutline-Cr5fPBe7.chunk.mjs";import{b as N,T as le,i as ue}from"./index-CAjMXx18.chunk.mjs";import{l as h}from"./activity-C7pDSEJs.chunk.mjs";import{c as k,a as pe}from"./GetComments-DJtGp6Zq.chunk.mjs";import{l as he}from"./star-outline-3oU1ox7V.chunk.mjs";const ge={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ye=["aria-hidden","aria-label"],fe=["fill","width","height"],_e={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},be={key:0};function Ce(e,o,i,a,r,s){return c(),y("span",F(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon close-icon",role:"img",onClick:o[0]||(o[0]=_=>e.$emit("click",_))}),[(c(),y("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[p("path",_e,[i.title?(c(),y("title",be,g(i.title),1)):C("",!0)])],8,fe))],16,ye)}const Ie=A(ge,[["render",Ce]]);async function Ne(e,o,i){const a=["",e,o,i].join("/");await k.deleteFile(a)}async function De(e,o,i,a){const r=["",e,o,i].join("/");return await k.customRequest(r,{method:"PROPPATCH",data:` @@ -9,4 +9,4 @@ import{e as A,o as c,j as y,g as p,t as g,k as C,m as F,V as W,a9 as S,Z as H,a `})}function v(e,o=1){const i=new DOMParser;let a=e;for(let r=0;r({idsInLimbo:[]}),actions:{addId(e){this.idsInLimbo.push(e)},removeId(e){const o=this.idsInLimbo.indexOf(e);o>-1&&this.idsInLimbo.splice(o,1)},checkForId(e){return this.idsInLimbo.includes(e)}}}),ke={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data(){return{deleted:!1,editing:!1,loading:!1}},computed:{...S(E)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await De(this.resourceType,this.resourceId,this.id,e),h.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(o){N(t("comments","An error occurred while trying to edit the comment")),h.error("An error occurred while trying to edit the comment",{error:o})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,le);ue(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await Ne(this.resourceType,this.resourceId,this.id),h.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){N(t("comments","An error occurred while trying to delete the comment")),h.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const o=await Le(this.resourceType,this.resourceId,e);h.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:o}),this.$emit("new",o),this.$emit("update:message",""),this.localMessage=""}catch(o){N(t("comments","An error occurred while trying to create the comment")),h.error("An error occurred while trying to create the comment",{error:o})}finally{this.loading=!1}}}},we=D(()=>L(()=>import("./index-DMO_O46v.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]),import.meta.url)),Te=D(()=>L(()=>import("./index-B28D1CUs.chunk.mjs"),__vite__mapDeps([37,33,2,1,3,4,5,34,12,13,29,30,14,35,7,11,9,10,16,17,36,38,8,15,39,40,41,42,43,44,45]),import.meta.url)),ve=D(()=>L(()=>import("./index-B28D1CUs.chunk.mjs"),__vite__mapDeps([37,33,2,1,3,4,5,34,12,13,29,30,14,35,7,11,9,10,16,17,36,38,8,15,39,40,41,42,43,44,45]),import.meta.url).then(e=>e.NcReferenceList)),Ae={name:"CommentEntry",components:{IconArrowRight:me,IconClose:Ie,IconTrashCanOutline:H,IconPencilOutline:de,NcActionButton:te,NcActions:oe,NcActionSeparator:ie,NcAvatar:se,NcButton:ae,NcDateTime:re,NcLoadingIcon:ne,NcReferenceList:ve,NcRichContenteditable:we,NcRichText:Te},mixins:[ke],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data(){return{expanded:!1,localMessage:"",submitted:!1}},computed:{...S(E),isOwnComment(){return f().uid===this.actorId},richContent(){const e={};let o=this.localMessage;return Object.keys(this.userData).forEach((i,a)=>{const r=`mention-${a}`,s=new RegExp(`@${i}|@"${i}"`,"g");o=o.replace(s,`{${r}}`),e[r]={component:ce,props:{user:i,displayName:this.userData[i].label,primary:this.userData[i].primary}}}),{mentions:e,message:o}},isEmptyMessage(){return!this.localMessage||this.localMessage.trim()===""},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(e){this.updateLocalMessage(e)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:ee,updateLocalMessage(e){this.localMessage=e.toString(),this.submitted=!1},onSubmit(){if(this.localMessage.trim()!==""){if(this.editor){this.onNewComment(this.localMessage.trim()),this.$nextTick(()=>{this.$refs.editor.$el.focus()});return}this.onEditComment(this.localMessage.trim())}},onExpand(){this.expanded=!0}}},Se={class:"comment__side"},xe={class:"comment__body"},Ee={class:"comment__header"},Me={class:"comment__author"},Re={key:1,class:"comment_loading icon-loading-small"},Oe={class:"comment__editor-group"},$e={class:"comment__submit"},Pe={id:"tab-comments__editor-description",class:"comment__editor-description"};function je(e,o,i,a,r,s){const _=n("NcAvatar"),b=n("IconPencilOutline"),l=n("NcActionButton"),M=n("NcActionSeparator"),R=n("IconTrashCanOutline"),O=n("IconClose"),$=n("NcActions"),P=n("NcDateTime"),j=n("NcRichContenteditable"),z=n("NcLoadingIcon"),V=n("IconArrowRight"),q=n("NcButton"),B=n("NcRichText"),U=n("NcReferenceList");return K((c(),u(Q(i.tag),{class:T([{"comment--loading":e.loading},"comment"])},{default:m(()=>[p("div",Se,[d(_,{class:"comment__avatar",displayName:i.actorDisplayName,user:i.actorId,size:32},null,8,["displayName","user"])]),p("div",xe,[p("div",Ee,[p("span",Me,g(i.actorDisplayName),1),s.isOwnComment&&e.id&&!e.loading?(c(),u($,{key:0,class:"comment__actions"},{default:m(()=>[e.editing?(c(),u(l,{key:1,onClick:e.onEditCancel},{icon:m(()=>[d(O,{size:20})]),default:m(()=>[I(" "+g(s.t("comments","Cancel edit")),1)]),_:1},8,["onClick"])):(c(),y(G,{key:0},[d(l,{closeAfterClick:"",onClick:e.onEdit},{icon:m(()=>[d(b,{size:20})]),default:m(()=>[I(" "+g(s.t("comments","Edit comment")),1)]),_:1},8,["onClick"]),d(M),d(l,{closeAfterClick:"",onClick:e.onDeleteWithUndo},{icon:m(()=>[d(R,{size:20})]),default:m(()=>[I(" "+g(s.t("comments","Delete comment")),1)]),_:1},8,["onClick"])],64))]),_:1})):C("",!0),e.id&&e.loading?(c(),y("div",Re)):i.creationDateTime?(c(),u(P,{key:2,class:"comment__timestamp",timestamp:s.timestamp,ignoreSeconds:!0},null,8,["timestamp"])):C("",!0)]),i.editor||e.editing?(c(),y("form",{key:0,class:"comment__editor",onSubmit:o[2]||(o[2]=J(()=>{},["prevent"]))},[p("div",Oe,[d(j,{ref:"editor",modelValue:r.localMessage,"onUpdate:modelValue":[o[0]||(o[0]=w=>r.localMessage=w),o[1]||(o[1]=w=>r.submitted=!1)],autoComplete:i.autoComplete,contenteditable:!e.loading,label:i.editor?s.t("comments","New comment"):s.t("comments","Edit comment"),placeholder:s.t("comments","Write a comment …"),userData:i.userData,"aria-describedby":"tab-comments__editor-description",onSubmit:s.onSubmit},null,8,["modelValue","autoComplete","contenteditable","label","placeholder","userData","onSubmit"]),p("div",$e,[d(q,{variant:"tertiary-no-background",type:"submit","aria-label":s.t("comments","Post comment"),disabled:s.isEmptyMessage,onClick:s.onSubmit},{icon:m(()=>[e.loading?(c(),u(z,{key:0})):(c(),u(V,{key:1,size:20}))]),_:1},8,["aria-label","disabled","onClick"])])]),p("div",Pe,g(s.t("comments","@ for mentions, : for emoji, / for smart picker")),1)],32)):(c(),u(B,{key:1,class:T(["comment__message",{"comment__message--expanded":r.expanded}]),text:s.richContent.message,arguments:s.richContent.mentions,useMarkdown:"",onClick:s.onExpand},null,8,["class","text","arguments","onClick"])),!i.editor&&!e.editing?(c(),u(U,{key:2,class:"comment__reference-list",text:s.richContent.message,interactiveOptIn:""},null,8,["text"])):C("",!0)])]),_:1},8,["class"])),[[Z,!e.deleted&&!s.isLimbo]])}const ot=A(Ae,[["render",je],["__scopeId","data-v-365fe8ac"]]),it=X({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:f().displayName,actorId:f().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(e,o){const{data:i}=await x.get(Y("core/autocomplete/get"),{params:{search:e,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:he("comments","maxAutoCompleteResults")}});return i.ocs.data.forEach(a=>{this.userData[a.id]=a}),o(Object.values(this.userData))},genMentionsData(e){return Object.values(e).flat().forEach(o=>{this.userData[o.mentionId]={icon:"icon-user",id:o.mentionId,label:o.mentionDisplayName,source:"users",primary:f()?.uid===o.mentionId}}),this.userData}}});export{it as C,ot as a}; -//# sourceMappingURL=CommentView-D4oJ1b3g.chunk.mjs.map +//# sourceMappingURL=CommentView-BhF0LoGw.chunk.mjs.map diff --git a/dist/CommentView-D4oJ1b3g.chunk.mjs.license b/dist/CommentView-BhF0LoGw.chunk.mjs.license similarity index 100% rename from dist/CommentView-D4oJ1b3g.chunk.mjs.license rename to dist/CommentView-BhF0LoGw.chunk.mjs.license diff --git a/dist/CommentView-D4oJ1b3g.chunk.mjs.map b/dist/CommentView-BhF0LoGw.chunk.mjs.map similarity index 99% rename from dist/CommentView-D4oJ1b3g.chunk.mjs.map rename to dist/CommentView-BhF0LoGw.chunk.mjs.map index 82f5d3fbd6dee..901309fa97cdc 100644 --- a/dist/CommentView-D4oJ1b3g.chunk.mjs.map +++ b/dist/CommentView-BhF0LoGw.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","DeleteComment","resourceType","resourceId","commentId","commentPath","client","EditComment","message","decodeHtmlEntities","value","passes","parser","decoded","i","NewComment","resourcePath","response","axios","getRootPath","getCurrentUser","comment","props","useDeletedCommentLimbo","defineStore","id","index","CommentMixin","mapStores","logger","error","showError","timeOutDelete","TOAST_UNDO_TIMEOUT","showUndo","newComment","NcRichContenteditable","defineAsyncComponent","NcRichText","NcReferenceList","__vitePreload","module","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","mentions","user","key","regex","NcUserBubble","t","_hoisted_1","_hoisted_2","_hoisted_4","_hoisted_6","_hoisted_7","_withDirectives","_createBlock","_resolveDynamicComponent","_normalizeClass","_createVNode","_component_NcAvatar","_toDisplayString","$options","_component_NcActions","_component_NcActionButton","_component_IconClose","_createTextVNode","_Fragment","_component_IconPencilOutline","_component_NcActionSeparator","_component_IconTrashCanOutline","_hoisted_5","_component_NcDateTime","_component_NcRichContenteditable","$data","_component_NcButton","_component_NcLoadingIcon","_component_IconArrowRight","_hoisted_8","_component_NcRichText","_component_NcReferenceList","_vShow","CommentView","defineComponent","search","callback","data","generateOcsUrl","loadState","mention"],"ignoreList":[0],"sources":["../node_modules/vue-material-design-icons/Close.vue","../build/frontend/apps/comments/src/services/DeleteComment.ts","../build/frontend/apps/comments/src/services/EditComment.ts","../build/frontend/apps/comments/src/utils/decodeHtmlEntities.ts","../build/frontend/apps/comments/src/services/NewComment.ts","../build/frontend/apps/comments/src/store/deletedCommentLimbo.ts","../build/frontend/apps/comments/src/mixins/CommentMixin.ts","../build/frontend/apps/comments/src/components/CommentEntry.vue","../build/frontend/apps/comments/src/mixins/CommentView.ts"],"sourcesContent":["\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Delete a comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Edit an existing comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n * @param message the message content\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number, message: string) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param value - the string to decode\n * @param passes - the number of times to decode the string, default is 1\n */\nexport function decodeHtmlEntities(value: string, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.ts'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'\nimport client from './DavClient.ts'\n\n/**\n * Retrieve the comments list\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param message the message\n * @return The new comment\n */\nexport default async function(resourceType: string, resourceId: number, message: string) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser()!.displayName,\n\t\tactorId: getCurrentUser()!.uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.ts'\nimport DeleteComment from '../services/DeleteComment.ts'\nimport EditComment from '../services/EditComment.ts'\nimport NewComment from '../services/NewComment.ts'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tprops: {\n\t\tresourceId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser()!.displayName as string,\n\t\t\t\tactorId: getCurrentUser()!.uid as string,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\t\t\tuserData: {},\n\t\t\tcurrentResourceId: this.resourceId,\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Autocomplete `@mentions`\n\t\t *\n\t\t * @param search the query\n\t\t * @param callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: this.resourceType,\n\t\t\t\t\titemId: this.currentResourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\t// Save user data so it can be used by the editor to replace mentions\n\t\t\tdata.ocs.data.forEach((user) => {\n\t\t\t\tthis.userData[user.id] = user\n\t\t\t})\n\t\t\treturn callback(Object.values(this.userData))\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param mentions the mentions list\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tgenMentionsData(mentions: any[]): Record {\n\t\t\tObject.values(mentions)\n\t\t\t\t.flat()\n\t\t\t\t.forEach((mention) => {\n\t\t\t\t\tthis.userData[mention.mentionId] = {\n\t\t\t\t\t\t// TODO: support groups\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: getCurrentUser()?.uid === mention.mentionId,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\treturn this.userData\n\t\t},\n\t},\n})\n"],"file":"CommentView-D4oJ1b3g.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","DeleteComment","resourceType","resourceId","commentId","commentPath","client","EditComment","message","decodeHtmlEntities","value","passes","parser","decoded","i","NewComment","resourcePath","response","axios","getRootPath","getCurrentUser","comment","props","useDeletedCommentLimbo","defineStore","id","index","CommentMixin","mapStores","logger","error","showError","timeOutDelete","TOAST_UNDO_TIMEOUT","showUndo","newComment","NcRichContenteditable","defineAsyncComponent","NcRichText","NcReferenceList","__vitePreload","module","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","mentions","user","key","regex","NcUserBubble","t","_hoisted_1","_hoisted_2","_hoisted_4","_hoisted_6","_hoisted_7","_withDirectives","_createBlock","_resolveDynamicComponent","_normalizeClass","_createVNode","_component_NcAvatar","_toDisplayString","$options","_component_NcActions","_component_NcActionButton","_component_IconClose","_createTextVNode","_Fragment","_component_IconPencilOutline","_component_NcActionSeparator","_component_IconTrashCanOutline","_hoisted_5","_component_NcDateTime","_component_NcRichContenteditable","$data","_component_NcButton","_component_NcLoadingIcon","_component_IconArrowRight","_hoisted_8","_component_NcRichText","_component_NcReferenceList","_vShow","CommentView","defineComponent","search","callback","data","generateOcsUrl","loadState","mention"],"ignoreList":[0],"sources":["../node_modules/vue-material-design-icons/Close.vue","../build/frontend/apps/comments/src/services/DeleteComment.ts","../build/frontend/apps/comments/src/services/EditComment.ts","../build/frontend/apps/comments/src/utils/decodeHtmlEntities.ts","../build/frontend/apps/comments/src/services/NewComment.ts","../build/frontend/apps/comments/src/store/deletedCommentLimbo.ts","../build/frontend/apps/comments/src/mixins/CommentMixin.ts","../build/frontend/apps/comments/src/components/CommentEntry.vue","../build/frontend/apps/comments/src/mixins/CommentView.ts"],"sourcesContent":["\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Delete a comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Edit an existing comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n * @param message the message content\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number, message: string) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param value - the string to decode\n * @param passes - the number of times to decode the string, default is 1\n */\nexport function decodeHtmlEntities(value: string, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.ts'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'\nimport client from './DavClient.ts'\n\n/**\n * Retrieve the comments list\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param message the message\n * @return The new comment\n */\nexport default async function(resourceType: string, resourceId: number, message: string) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser()!.displayName,\n\t\tactorId: getCurrentUser()!.uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.ts'\nimport DeleteComment from '../services/DeleteComment.ts'\nimport EditComment from '../services/EditComment.ts'\nimport NewComment from '../services/NewComment.ts'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tprops: {\n\t\tresourceId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser()!.displayName as string,\n\t\t\t\tactorId: getCurrentUser()!.uid as string,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\t\t\tuserData: {},\n\t\t\tcurrentResourceId: this.resourceId,\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Autocomplete `@mentions`\n\t\t *\n\t\t * @param search the query\n\t\t * @param callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: this.resourceType,\n\t\t\t\t\titemId: this.currentResourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\t// Save user data so it can be used by the editor to replace mentions\n\t\t\tdata.ocs.data.forEach((user) => {\n\t\t\t\tthis.userData[user.id] = user\n\t\t\t})\n\t\t\treturn callback(Object.values(this.userData))\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param mentions the mentions list\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tgenMentionsData(mentions: any[]): Record {\n\t\t\tObject.values(mentions)\n\t\t\t\t.flat()\n\t\t\t\t.forEach((mention) => {\n\t\t\t\t\tthis.userData[mention.mentionId] = {\n\t\t\t\t\t\t// TODO: support groups\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: getCurrentUser()?.uid === mention.mentionId,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\treturn this.userData\n\t\t},\n\t},\n})\n"],"file":"CommentView-BhF0LoGw.chunk.mjs"} \ No newline at end of file diff --git a/dist/CommentView-D4oJ1b3g.chunk.mjs.map.license b/dist/CommentView-BhF0LoGw.chunk.mjs.map.license similarity index 100% rename from dist/CommentView-D4oJ1b3g.chunk.mjs.map.license rename to dist/CommentView-BhF0LoGw.chunk.mjs.map.license diff --git a/dist/FilesSidebarTab-B-KOoDDF.chunk.mjs b/dist/FilesSidebarTab-DksFRHhR.chunk.mjs similarity index 97% rename from dist/FilesSidebarTab-B-KOoDDF.chunk.mjs rename to dist/FilesSidebarTab-DksFRHhR.chunk.mjs index 9ea0d02319f0c..dcf4aac51cee8 100644 --- a/dist/FilesSidebarTab-B-KOoDDF.chunk.mjs +++ b/dist/FilesSidebarTab-DksFRHhR.chunk.mjs @@ -1,4 +1,4 @@ -import{b as N}from"./index-CAjMXx18.chunk.mjs";import{t as g}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{v as S}from"./NcAvatar-BRdLWCVs.chunk.mjs";import{N as M}from"./Check-QdDOQaCe.chunk.mjs";import{N as H}from"./Folder-BxcsshGI.chunk.mjs";import{e as _,o,j as i,g as k,t as h,k as u,m as f,av as A,r as c,an as L,S as O,h as m,I as y,f as C,w as p,J as z,C as F,n as q,b as B,A as $}from"./Web-0o0ZsUfo.chunk.mjs";import{C as E,a as P}from"./CommentView-D4oJ1b3g.chunk.mjs";import{l as b}from"./activity-C7pDSEJs.chunk.mjs";import{c as j,g as U,D as v}from"./GetComments-DzpQCqQO.chunk.mjs";const Z={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},J=["aria-hidden","aria-label"],G=["fill","width","height"],K={d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"},Q={key:0};function W(e,s,t,a,r,n){return o(),i("span",f(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon message-reply-text-outline-icon",role:"img",onClick:s[0]||(s[0]=l=>e.$emit("click",l))}),[(o(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[k("path",K,[t.title?(o(),i("title",Q,h(t.title),1)):u("",!0)])],8,G))],16,J)}const X=_(Z,[["render",W]]),Y={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ee=["aria-hidden","aria-label"],te=["fill","width","height"],se={d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"},oe={key:0};function re(e,s,t,a,r,n){return o(),i("span",f(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon refresh-icon",role:"img",onClick:s[0]||(s[0]=l=>e.$emit("click",l))}),[(o(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[k("path",se,[t.title?(o(),i("title",oe,h(t.title),1)):u("",!0)])],8,te))],16,ee)}const ne=_(Y,[["render",re]]);function ie(e,s,t){const a=["",e,s].join("/"),r=t.toUTCString();return j.customRequest(a,{method:"PROPPATCH",data:` +import{b as N}from"./index-CAjMXx18.chunk.mjs";import{t as g}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{v as S}from"./NcAvatar-BRdLWCVs.chunk.mjs";import{N as M}from"./Check-QdDOQaCe.chunk.mjs";import{N as H}from"./Folder-BxcsshGI.chunk.mjs";import{e as _,o,j as i,g as k,t as h,k as u,m as f,av as A,r as c,an as L,S as O,h as m,I as y,f as C,w as p,J as z,C as F,n as q,b as B,A as $}from"./Web-0o0ZsUfo.chunk.mjs";import{C as E,a as P}from"./CommentView-BhF0LoGw.chunk.mjs";import{l as b}from"./activity-C7pDSEJs.chunk.mjs";import{c as j,g as U,D as v}from"./GetComments-DJtGp6Zq.chunk.mjs";const Z={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},J=["aria-hidden","aria-label"],G=["fill","width","height"],K={d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"},Q={key:0};function W(e,s,t,a,r,n){return o(),i("span",f(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon message-reply-text-outline-icon",role:"img",onClick:s[0]||(s[0]=l=>e.$emit("click",l))}),[(o(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[k("path",K,[t.title?(o(),i("title",Q,h(t.title),1)):u("",!0)])],8,G))],16,J)}const X=_(Z,[["render",W]]),Y={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ee=["aria-hidden","aria-label"],te=["fill","width","height"],se={d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"},oe={key:0};function re(e,s,t,a,r,n){return o(),i("span",f(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon refresh-icon",role:"img",onClick:s[0]||(s[0]=l=>e.$emit("click",l))}),[(o(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[k("path",se,[t.title?(o(),i("title",oe,h(t.title),1)):u("",!0)])],8,te))],16,ee)}const ne=_(Y,[["render",re]]);function ie(e,s,t){const a=["",e,s].join("/"),r=t.toUTCString();return j.customRequest(a,{method:"PROPPATCH",data:` @@ -8,4 +8,4 @@ import{b as N}from"./index-CAjMXx18.chunk.mjs";import{t as g}from"./translation- `})}function ae(e){const s=new AbortController,t=s.signal;return{request:async function(a,r){return await e(a,{signal:t,...r})},abort:()=>s.abort()}}const le={name:"CommentsApp",components:{CommentEntry:P,NcEmptyContent:H,NcButton:M,IconRefresh:ne,IconMessageReplyTextOutline:X,IconAlertCircleOutline:A},directives:{elementVisibility:S},mixins:[E],expose:["update"],data(){return{error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment,userData:{}}},computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&this.offset===0}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:g,async onVisibilityChange(e){if(e)try{await ie(this.resourceType,this.currentResourceId,new Date)}catch(s){N(s.message||g("comments","Failed to mark comments as read"))}},async update(e){this.currentResourceId=e,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:e,abort:s}=ae(U);this.cancelRequest=s;const{data:t}=await e({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${t.length} comments`,{comments:t}),t.lengtht.props.id===e);s>-1?this.comments.splice(s,1):b.error("Could not find the deleted comment in the list",{id:e})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},ce={key:1},me={key:2,class:"comments__info icon-loading"},de={key:3,class:"comments__info"};function ue(e,s,t,a,r,n){const l=c("CommentEntry"),w=c("IconMessageReplyTextOutline"),I=c("NcEmptyContent"),R=c("IconAlertCircleOutline"),T=c("IconRefresh"),V=c("NcButton"),D=L("element-visibility");return O((o(),i("div",{class:q(["comments",{"icon-loading":n.isFirstLoading}])},[m(l,f(e.editorData,{editor:"",autoComplete:e.autoComplete,resourceType:e.resourceType,userData:r.userData,resourceId:e.currentResourceId,class:"comments__writer",onNew:n.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"]),n.isFirstLoading?u("",!0):(o(),i(y,{key:0},[!n.hasComments&&r.done?(o(),C(I,{key:0,class:"comments__empty",name:n.t("comments","No comments yet, start the conversation!")},{icon:p(()=>[m(w)]),_:1},8,["name"])):(o(),i("ul",ce,[(o(!0),i(y,null,z(r.comments,d=>(o(),C(l,f({key:d.props.id,modelValue:d.props.message,"onUpdate:modelValue":x=>d.props.message=x,tag:"li"},{ref_for:!0},d.props,{autoComplete:e.autoComplete,resourceType:e.resourceType,resourceId:e.currentResourceId,userData:e.genMentionsData(d.props.mentions),class:"comments__list",onDelete:n.onDelete}),null,16,["modelValue","onUpdate:modelValue","autoComplete","resourceType","resourceId","userData","onDelete"]))),128))])),r.loading&&!n.isFirstLoading?(o(),i("div",me)):n.hasComments&&r.done?(o(),i("div",de,h(n.t("comments","No more messages")),1)):r.error?(o(),i(y,{key:4},[m(I,{class:"comments__error",name:r.error},{icon:p(()=>[m(R)]),_:1},8,["name"]),m(V,{class:"comments__retry",onClick:n.getComments},{icon:p(()=>[m(T)]),default:p(()=>[F(" "+h(n.t("comments","Retry")),1)]),_:1},8,["onClick"])],64)):u("",!0)],64))],2)),[[D,n.onVisibilityChange]])}const pe=_(le,[["render",ue],["__scopeId","data-v-bc1f62ad"]]),he=B({__name:"FilesSidebarTab",props:{node:{},active:{type:Boolean},folder:{},view:{}},setup(e){const s=e,t=$(()=>s.node?.fileid);return(a,r)=>t.value!==void 0?(o(),C(pe,{key:t.value,resourceId:t.value,resourceType:"files"},null,8,["resourceId"])):u("",!0)}}),we=Object.freeze(Object.defineProperty({__proto__:null,default:he},Symbol.toStringTag,{value:"Module"}));export{pe as C,we as F}; -//# sourceMappingURL=FilesSidebarTab-B-KOoDDF.chunk.mjs.map +//# sourceMappingURL=FilesSidebarTab-DksFRHhR.chunk.mjs.map diff --git a/dist/FilesSidebarTab-B-KOoDDF.chunk.mjs.license b/dist/FilesSidebarTab-DksFRHhR.chunk.mjs.license similarity index 100% rename from dist/FilesSidebarTab-B-KOoDDF.chunk.mjs.license rename to dist/FilesSidebarTab-DksFRHhR.chunk.mjs.license diff --git a/dist/FilesSidebarTab-B-KOoDDF.chunk.mjs.map b/dist/FilesSidebarTab-DksFRHhR.chunk.mjs.map similarity index 99% rename from dist/FilesSidebarTab-B-KOoDDF.chunk.mjs.map rename to dist/FilesSidebarTab-DksFRHhR.chunk.mjs.map index be2afe1899c55..59e298188e190 100644 --- a/dist/FilesSidebarTab-B-KOoDDF.chunk.mjs.map +++ b/dist/FilesSidebarTab-DksFRHhR.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilesSidebarTab-B-KOoDDF.chunk.mjs","sources":["../node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","../node_modules/vue-material-design-icons/Refresh.vue","../build/frontend/apps/comments/src/services/ReadComments.ts","../build/frontend/apps/comments/src/utils/cancelableRequest.ts","../build/frontend/apps/comments/src/views/CommentsApp.vue","../build/frontend/apps/comments/src/views/FilesSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Response } from 'webdav'\n\nimport client from './DavClient.ts'\n\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(\n\tresourceType: string,\n\tresourceId: number,\n\tdate: Date,\n): Promise {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst readMarker = date.toUTCString()\n\n\treturn client.customRequest(resourcePath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param request the axios promise request\n * @return\n */\nfunction cancelableRequest(request: (url: string, options?: Record) => Promise) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param url the url to send the request to\n\t * @param [options] optional config for the request\n\t */\n\tconst fetch = async function(url: string, options?: Record) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","markCommentsAsRead","resourceType","resourceId","date","resourcePath","readMarker","client","cancelableRequest","request","controller","signal","url","options","CommentEntry","NcEmptyContent","NcButton","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","t","isVisible","e","showError","abort","getComments","comments","DEFAULT_LIMIT","comment","error","logger","id","index","_normalizeClass","$options","_createVNode","_component_CommentEntry","$data","_Fragment","_createBlock","_component_NcEmptyContent","_component_IconMessageReplyTextOutline","_hoisted_1","_renderList","_hoisted_2","_toDisplayString","_component_IconAlertCircleOutline","_component_NcButton","_component_IconRefresh","_createTextVNode","props","__props","computed","CommentsApp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"FilesSidebarTab-DksFRHhR.chunk.mjs","sources":["../node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","../node_modules/vue-material-design-icons/Refresh.vue","../build/frontend/apps/comments/src/services/ReadComments.ts","../build/frontend/apps/comments/src/utils/cancelableRequest.ts","../build/frontend/apps/comments/src/views/CommentsApp.vue","../build/frontend/apps/comments/src/views/FilesSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Response } from 'webdav'\n\nimport client from './DavClient.ts'\n\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(\n\tresourceType: string,\n\tresourceId: number,\n\tdate: Date,\n): Promise {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst readMarker = date.toUTCString()\n\n\treturn client.customRequest(resourcePath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param request the axios promise request\n * @return\n */\nfunction cancelableRequest(request: (url: string, options?: Record) => Promise) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param url the url to send the request to\n\t * @param [options] optional config for the request\n\t */\n\tconst fetch = async function(url: string, options?: Record) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","markCommentsAsRead","resourceType","resourceId","date","resourcePath","readMarker","client","cancelableRequest","request","controller","signal","url","options","CommentEntry","NcEmptyContent","NcButton","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","t","isVisible","e","showError","abort","getComments","comments","DEFAULT_LIMIT","comment","error","logger","id","index","_normalizeClass","$options","_createVNode","_component_CommentEntry","$data","_Fragment","_createBlock","_component_NcEmptyContent","_component_IconMessageReplyTextOutline","_hoisted_1","_renderList","_hoisted_2","_toDisplayString","_component_IconAlertCircleOutline","_component_NcButton","_component_IconRefresh","_createTextVNode","props","__props","computed","CommentsApp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/FilesSidebarTab-B-KOoDDF.chunk.mjs.map.license b/dist/FilesSidebarTab-DksFRHhR.chunk.mjs.map.license similarity index 100% rename from dist/FilesSidebarTab-B-KOoDDF.chunk.mjs.map.license rename to dist/FilesSidebarTab-DksFRHhR.chunk.mjs.map.license diff --git a/dist/GetComments-DJtGp6Zq.chunk.mjs b/dist/GetComments-DJtGp6Zq.chunk.mjs new file mode 100644 index 0000000000000..bd4613e8075fb --- /dev/null +++ b/dist/GetComments-DJtGp6Zq.chunk.mjs @@ -0,0 +1,11 @@ +import{g as Nt,n as $t}from"./dav-ajmPPC2W.chunk.mjs";import{k as Lt,q as St,p as X}from"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import{r as Wt}from"./previewUtils-BiOsv7h1.chunk.mjs";function kt(){return Lt("dav/comments")}const zt=Nt(kt());var st,ft;function _t(){if(ft)return st;ft=1,st=o;function o(n,s,r){n instanceof RegExp&&(n=t(n,r)),s instanceof RegExp&&(s=t(s,r));var i=e(n,s,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+n.length,i[1]),post:r.slice(i[1]+s.length)}}function t(n,s){var r=s.match(n);return r?r[0]:null}o.range=e;function e(n,s,r){var i,h,l,a,c,p=r.indexOf(n),f=r.indexOf(s,p+1),y=p;if(p>=0&&f>0){if(n===s)return[p,f];for(i=[],l=r.length;y>=0&&!c;)y==p?(i.push(y),p=r.indexOf(n,y+1)):i.length==1?c=[i.pop(),f]:(h=i.pop(),h=0?p:f;i.length&&(c=[l,a])}return c}return st}var rt,gt;function Ct(){if(gt)return rt;gt=1;var o=_t();rt=v;var t="\0SLASH"+Math.random()+"\0",e="\0OPEN"+Math.random()+"\0",n="\0CLOSE"+Math.random()+"\0",s="\0COMMA"+Math.random()+"\0",r="\0PERIOD"+Math.random()+"\0",i=1e5,h=4e6,l=1e3,a=1e3;function c(u){return parseInt(u,10)==u?parseInt(u,10):u.charCodeAt(0)}function p(u){return u.split("\\\\").join(t).split("\\{").join(e).split("\\}").join(n).split("\\,").join(s).split("\\.").join(r)}function f(u){return u.split(t).join("\\").split(e).join("{").split(n).join("}").split(s).join(",").split(r).join(".")}function y(u,d){for(var w=0;w=d}function g(u,d,w,x,E,A){for(var N=[],R=0,$=0;$=x)return N;var _=u[$]+d+w[W];if(!(A&&!_)){if(R+_.length>E)return N;N.push(_),R+=_.length}}return N}function m(u,d,w,x){var E=u.split(/\.\./),A=[];if(E[0]===void 0||E[1]===void 0)return A;var N=c(E[0]),R=c(E[1]),$=Math.max(E[0].length,E[1].length),W=E.length===3&&E[2]!==void 0?Math.max(Math.abs(c(E[2])),1):1,_=S,q=R0){var Z=new Array(I+1).join("0");B<0?L="-"+Z+L.slice(1):L=Z+L}}if(G+L.length>x)break;A.push(L),G+=L.length}return A}function j(u,d,w,x,E,A,N){if(E>x)return[u];for(var R=[""],$=0,W=!1,_=!0;;){const P=o("{","}",u);if(!P)return g(R,u,[""],d,w,W);const F=P.pre;if(/\$$/.test(F)){if(R=g(R,F+"{"+P.body+"}",[""],d,w,W&&!P.post.length),_=!1,!P.post.length)break;u=P.post;continue}var q=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(P.body),V=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(P.body),G=q||V,B=P.body.indexOf(",")>=0;if(!G&&!B){if($=d||ut+K.length>w)break t;L.push(K),ut+=K.length}}}if(R=g(R,F,L,d,w,W&&!P.post.length),!P.post.length)break;u=P.post}return R}return rt}var Tt=Ct();const It=St(Tt),Dt=1024*64,Y=o=>{if(typeof o!="string")throw new TypeError("invalid pattern");if(o.length>Dt)throw new TypeError("pattern is too long")},Bt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},H=o=>o.replace(/[[\]\\-]/g,"\\$&"),Gt=o=>o.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),mt=o=>o.join(""),Zt=(o,t)=>{const e=t;if(o.charAt(e)!=="[")throw new Error("not in a brace expression");const n=[],s=[];let r=e+1,i=!1,h=!1,l=!1,a=!1,c=e,p="";t:for(;rp?n.push(H(p)+"-"+H(b)):b===p&&n.push(H(b)),p="",r++;continue}if(o.startsWith("-]",r+1)){n.push(H(b+"-")),r+=2;continue}if(o.startsWith("-",r+1)){p=b,r+=2;continue}n.push(H(b)),r++}if(ct?o.replace(/\[([^\/\\])\]/g,"$1"):o.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");var C;const Ft=new Set(["!","?","+","*","@"]),at=o=>Ft.has(o),dt=o=>at(o.type),Ht=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),Ut=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Vt=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),yt=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Kt="(?!(?:^|/)\\.\\.?(?:$|/))",Q="(?!\\.)",Qt=new Set(["[","."]),Xt=new Set(["..","."]),Yt=new Set("().*{}+?[]^$\\!"),Jt=o=>o.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),lt="[^/]",bt=lt+"*?",vt=lt+"+?";class ct{type;#n;#s;#r=!1;#t=[];#e;#h;#l;#a=!1;#i;#o;#c=!1;constructor(t,e,n={}){this.type=t,t&&(this.#s=!0),this.#e=e,this.#n=this.#e?this.#e.#n:this,this.#i=this.#n===this?n:this.#n.#i,this.#l=this.#n===this?[]:this.#n.#l,t==="!"&&!this.#n.#a&&this.#l.push(this),this.#h=this.#e?this.#e.#t.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(const t of this.#t)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#o!==void 0?this.#o:this.type?this.#o=this.type+"("+this.#t.map(t=>String(t)).join("|")+")":this.#o=this.#t.map(t=>String(t)).join("")}#y(){if(this!==this.#n)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let t;for(;t=this.#l.pop();){if(t.type!=="!")continue;let e=t,n=e.#e;for(;n;){for(let s=e.#h+1;!n.type&&stypeof e=="string"?e:e.toJSON()):[this.type,...this.#t.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#n||this.#n.#a&&this.#e?.type==="!")&&t.push({}),t}isStart(){if(this.#n===this)return!0;if(!this.#e?.isStart())return!1;if(this.#h===0)return!0;const t=this.#e;for(let e=0;e{const[y,b,v,M]=typeof f=="string"?C.#E(f,this.#s,l):f.toRegExpSource(t);return this.#s=this.#s||v,this.#r=this.#r||M,y}).join("");let c="";if(this.isStart()&&typeof this.#t[0]=="string"&&!(this.#t.length===1&&Xt.has(this.#t[0]))){const f=Qt,y=e&&f.has(a.charAt(0))||a.startsWith("\\.")&&f.has(a.charAt(2))||a.startsWith("\\.\\.")&&f.has(a.charAt(4)),b=!e&&!t&&f.has(a.charAt(0));c=y?Kt:b?Q:""}let p="";return this.isEnd()&&this.#n.#a&&this.#e?.type==="!"&&(p="(?:$|\\/)"),[c+a+p,U(a),this.#s=!!this.#s,this.#r]}const n=this.type==="*"||this.type==="+",s=this.type==="!"?"(?:(?!(?:":"(?:";let r=this.#d(e);if(this.isStart()&&this.isEnd()&&!r&&this.type!=="!"){const l=this.toString(),a=this;return a.#t=[l],a.type=null,a.#s=void 0,[l,U(this.toString()),!1,!1]}let i=!n||t||e||!Q?"":this.#d(!0);i===r&&(i=""),i&&(r=`(?:${r})(?:${i})*?`);let h="";if(this.type==="!"&&this.#c)h=(this.isStart()&&!e?Q:"")+vt;else{const l=this.type==="!"?"))"+(this.isStart()&&!e&&!t?Q:"")+bt+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&i?")":this.type==="*"&&i?")?":`)${this.type}`;h=s+r+l}return[h,U(r),this.#s=!!this.#s,this.#r]}#d(t){return this.#t.map(e=>{if(typeof e=="string")throw new Error("string type in extglob ast??");const[n,s,r,i]=e.toRegExpSource(t);return this.#r=this.#r||i,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static#E(t,e,n=!1){let s=!1,r="",i=!1,h=!1;for(let l=0;lt?o.replace(/[?*()[\]]/g,"[$&]"):o.replace(/[?*()[\]\\]/g,"\\$&");var it={};const z=(o,t,e={})=>(Y(t),!e.nocomment&&t.charAt(0)==="#"?!1:new J(t,e).match(o)),te=/^\*+([^+@!?\*\[\(]*)$/,ee=o=>t=>!t.startsWith(".")&&t.endsWith(o),ne=o=>t=>t.endsWith(o),se=o=>(o=o.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(o)),re=o=>(o=o.toLowerCase(),t=>t.toLowerCase().endsWith(o)),ie=/^\*+\.\*+$/,oe=o=>!o.startsWith(".")&&o.includes("."),he=o=>o!=="."&&o!==".."&&o.includes("."),ae=/^\.\*+$/,le=o=>o!=="."&&o!==".."&&o.startsWith("."),ce=/^\*+$/,ue=o=>o.length!==0&&!o.startsWith("."),pe=o=>o.length!==0&&o!=="."&&o!=="..",fe=/^\?+([^+@!?\*\[\(]*)?$/,ge=([o,t=""])=>{const e=At([o]);return t?(t=t.toLowerCase(),n=>e(n)&&n.toLowerCase().endsWith(t)):e},me=([o,t=""])=>{const e=Mt([o]);return t?(t=t.toLowerCase(),n=>e(n)&&n.toLowerCase().endsWith(t)):e},de=([o,t=""])=>{const e=Mt([o]);return t?n=>e(n)&&n.endsWith(t):e},ye=([o,t=""])=>{const e=At([o]);return t?n=>e(n)&&n.endsWith(t):e},At=([o])=>{const t=o.length;return e=>e.length===t&&!e.startsWith(".")},Mt=([o])=>{const t=o.length;return e=>e.length===t&&e!=="."&&e!==".."},Pt=typeof X=="object"&&X?typeof it=="object"&&it&&it.__MINIMATCH_TESTING_PLATFORM__||X.platform:"posix",wt={win32:{sep:"\\"},posix:{sep:"/"}},be=Pt==="win32"?wt.win32.sep:wt.posix.sep;z.sep=be;const k=Symbol("globstar **");z.GLOBSTAR=k;const ve="[^/]",we=ve+"*?",je="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",xe="(?:(?!(?:\\/|^)\\.).)*?",Ee=(o,t={})=>e=>z(e,o,t);z.filter=Ee;const T=(o,t={})=>Object.assign({},o,t),Oe=o=>{if(!o||typeof o!="object"||!Object.keys(o).length)return z;const t=z;return Object.assign((e,n,s={})=>t(e,n,T(o,s)),{Minimatch:class extends t.Minimatch{constructor(e,n={}){super(e,T(o,n))}static defaults(e){return t.defaults(T(o,e)).Minimatch}},AST:class extends t.AST{constructor(e,n,s={}){super(e,n,T(o,s))}static fromGlob(e,n={}){return t.AST.fromGlob(e,T(o,n))}},unescape:(e,n={})=>t.unescape(e,T(o,n)),escape:(e,n={})=>t.escape(e,T(o,n)),filter:(e,n={})=>t.filter(e,T(o,n)),defaults:e=>t.defaults(T(o,e)),makeRe:(e,n={})=>t.makeRe(e,T(o,n)),braceExpand:(e,n={})=>t.braceExpand(e,T(o,n)),match:(e,n,s={})=>t.match(e,n,T(o,s)),sep:t.sep,GLOBSTAR:k})};z.defaults=Oe;const Rt=(o,t={})=>(Y(o),t.nobrace||!/\{(?:(?!\{).)*\}/.test(o)?[o]:It(o));z.braceExpand=Rt;const Se=(o,t={})=>new J(o,t).makeRe();z.makeRe=Se;const Ae=(o,t,e={})=>{const n=new J(t,e);return o=o.filter(s=>n.match(s)),n.options.nonull&&!o.length&&o.push(t),o};z.match=Ae;const jt=/[?*]|[+@!]\(.*?\)|\[|\]/,Me=o=>o.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class J{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){Y(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||Pt,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);const n=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let s=this.globParts.map((r,i,h)=>{if(this.isWindows&&this.windowsNoMagicRoot){const l=r[0]===""&&r[1]===""&&(r[2]==="?"||!jt.test(r[2]))&&!jt.test(r[3]),a=/^[a-z]:/i.test(r[0]);if(l)return[...r.slice(0,4),...r.slice(4).map(c=>this.parse(c))];if(a)return[r[0],...r.slice(1).map(c=>this.parse(c))]}return r.map(l=>this.parse(l))});if(this.debug(this.pattern,s),this.set=s.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let n=-1;for(;(n=e.indexOf("**",n+1))!==-1;){let s=n;for(;e[s+1]==="**";)s++;s!==n&&e.splice(n,s-n)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((n,s)=>{const r=n[n.length-1];return s==="**"&&r==="**"?n:s===".."&&r&&r!==".."&&r!=="."&&r!=="**"?(n.pop(),n):(n.push(s),n)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let s=1;ss&&n.splice(s+1,i-s);let h=n[s+1];const l=n[s+2],a=n[s+3];if(h!==".."||!l||l==="."||l===".."||!a||a==="."||a==="..")continue;e=!0,n.splice(s,1);const c=n.slice(0);c[s]="**",t.push(c),s--}if(!this.preserveMultipleSlashes){for(let i=1;ie.length)}partsMatch(t,e,n=!1){let s=0,r=0,i=[],h="";for(;s=2&&(t=this.levelTwoFileOptimize(t)),e.includes(k)?this.#n(t,e,n,s,r):this.#r(t,e,n,s,r)}#n(t,e,n,s,r){const i=e.indexOf(k,r),h=e.lastIndexOf(k),[l,a,c]=n?[e.slice(r,i),e.slice(i+1),[]]:[e.slice(r,i),e.slice(i+1,h),e.slice(h+1)];if(l.length){const S=t.slice(s,s+l.length);if(!this.#r(S,l,n,0,0))return!1;s+=l.length}let p=0;if(c.length){if(c.length+s>t.length)return!1;let S=t.length-c.length;if(this.#r(t,c,n,S,0))p=c.length;else{if(t[t.length-1]!==""||s+c.length===t.length||(S--,!this.#r(t,c,n,S,0)))return!1;p=c.length+1}}if(!a.length){let S=!!p;for(let D=s;D{const a=l.map(c=>{if(c instanceof RegExp)for(const p of c.flags.split(""))s.add(p);return typeof c=="string"?Me(c):c===k?k:c._src});return a.forEach((c,p)=>{const f=a[p+1],y=a[p-1];c!==k||y===k||(y===void 0?f!==void 0&&f!==k?a[p+1]="(?:\\/|"+n+"\\/)?"+f:a[p]=n:f===void 0?a[p-1]=y+"(?:\\/|"+n+")?":f!==k&&(a[p-1]=y+"(?:\\/|\\/"+n+"\\/)"+f,a[p+1]=k))}),a.filter(c=>c!==k).join("/")}).join("|");const[i,h]=t.length>1?["(?:",")"]:["",""];r="^"+i+r+h+"$",this.negate&&(r="^(?!"+r+").+$");try{this.regexp=new RegExp(r,[...s].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;const n=this.options;this.isWindows&&(t=t.split("\\").join("/"));const s=this.slashSplit(t);this.debug(this.pattern,"split",s);const r=this.set;this.debug(this.pattern,"set",r);let i=s[s.length-1];if(!i)for(let h=s.length-2;!i&&h>=0;h--)i=s[h];for(let h=0;h{t[n]=e}),t}function Re(o,t,e=!1){return e?{data:t,headers:o.headers?Pe(o.headers):{},status:o.status,statusText:o.statusText}:t}var ot,xt;function Ne(){if(xt)return ot;xt=1;var o=Wt(),t=function(i){return typeof i=="string"};function e(i,h){for(var l=[],a=0;a=-1&&!h;l--){var a=l>=0?arguments[l]:X.cwd();if(t(a)){if(!a)continue}else throw new TypeError("Arguments to path.resolve must be strings");i=a+"/"+i,h=a.charAt(0)==="/"}return i=e(i.split("/"),!h).join("/"),(h?"/":"")+i||"."},s.normalize=function(i){var h=s.isAbsolute(i),l=i.substr(-1)==="/";return i=e(i.split("/"),!h).join("/"),!i&&!h&&(i="."),i&&l&&(i+="/"),(h?"/":"")+i},s.isAbsolute=function(i){return i.charAt(0)==="/"},s.join=function(){for(var i="",h=0;h=0&&v[O]==="";O--);return M>O?[]:v.slice(M,O+1)}for(var a=l(i.split("/")),c=l(h.split("/")),p=Math.min(a.length,c.length),f=p,y=0;y"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function l(g){return Function.toString.call(g).indexOf("[native code]")!==-1}function a(g,m){return a=Object.setPrototypeOf||function(j,u){return j.__proto__=u,j},a(g,m)}function c(g){return c=Object.setPrototypeOf?Object.getPrototypeOf:function(m){return m.__proto__||Object.getPrototypeOf(m)},c(g)}var p="+",f=".",y=(function(g){s(m,g);function m(j){var u;return t(this,m),u=e(this,c(m).call(this,j)),u.name="ObjectPrototypeMutationError",u}return m})(r(Error));ht={set:M,get:b,has:v,hasOwn:function(g,m,j){return this.has(g,m,j||{own:!0})},isIn:O,ObjectPrototypeMutationError:y};function b(g,m){if(o(g)!="object"||g===null||typeof m>"u")return g;if(typeof m=="number")return g[m];try{return S(g,m,function(j,u){return j[u]})}catch{return g}}function v(g,m){var j=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(o(g)!="object"||g===null||typeof m>"u")return!1;if(typeof m=="number")return m in g;try{var u=!1;return S(g,m,function(d,w,x,E){if(D(x,E))j.own?u=d.hasOwnProperty(w):u=w in d;else return d&&d[w]}),u}catch{return!1}}function M(g,m,j){if(o(g)!="object"||g===null||typeof m>"u")return g;if(typeof m=="number")return g[m]=j,g[m];try{return S(g,m,function(u,d,w,x){if(u===Reflect.getPrototypeOf({}))throw new y("Attempting to mutate Object.prototype");if(!u[d]){var E=Number.isInteger(Number(w[x+1])),A=w[x+1]===p;E||A?u[d]=[]:u[d]={}}return D(w,x)&&(u[d]=j),u[d]})}catch(u){if(u instanceof y)throw u;return g}}function O(g,m,j){var u=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(o(g)!="object"||g===null||typeof m>"u")return!1;try{var d=!1,w=!1;return S(g,m,function(x,E,A,N){return d=d||x===j||!!x&&x[E]===j,w=D(A,N)&&o(x)==="object"&&E in x,x&&x[E]}),u.validPath?d&&w:d}catch{return!1}}function S(g,m){for(var j=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},u=m.split(f),d=u.length,w=function(A){var N=u[A];if(!g)return{v:void 0};if(N===p){if(Array.isArray(g))return{v:g.map(function($,W){var _=u.slice(A+1);return _.length>0?S($,_.join(f),j):j(g,W,u,A)})};var R=u.slice(0,A).join(f);throw new Error("Object at wildcard (".concat(R,") is not an array"))}else g=j(g,N,u,A)},x=0;x${e.datetime.toISOString()}`:"",r=await zt.customRequest(n,{method:"REPORT",data:` + + ${e.limit??ze} + ${e.offset||0} + ${s} + `,...e}),i=await r.text(),h=await $t(i),l=_e(h,!0);return Re(r,l,!0)}function _e(o,t=!1){const{multistatus:{response:e}}=o;return e.map(n=>{const s=n.propstat.prop;return ke(s,s.id.toString(),t)})}export{ze as D,kt as a,zt as c,De as g}; +//# sourceMappingURL=GetComments-DJtGp6Zq.chunk.mjs.map diff --git a/dist/GetComments-DzpQCqQO.chunk.mjs.license b/dist/GetComments-DJtGp6Zq.chunk.mjs.license similarity index 97% rename from dist/GetComments-DzpQCqQO.chunk.mjs.license rename to dist/GetComments-DJtGp6Zq.chunk.mjs.license index da3d7800cd468..d4fc00191a0bb 100644 --- a/dist/GetComments-DzpQCqQO.chunk.mjs.license +++ b/dist/GetComments-DJtGp6Zq.chunk.mjs.license @@ -13,7 +13,7 @@ This file is generated from multiple sources. Included packages: - version: 1.0.2 - license: MIT - brace-expansion - - version: 2.1.4 + - version: 2.1.7 - license: MIT - minimatch - version: 9.0.9 diff --git a/dist/GetComments-DJtGp6Zq.chunk.mjs.map b/dist/GetComments-DJtGp6Zq.chunk.mjs.map new file mode 100644 index 0000000000000..272b295cb7ab3 --- /dev/null +++ b/dist/GetComments-DJtGp6Zq.chunk.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"GetComments-DJtGp6Zq.chunk.mjs","sources":["../build/frontend/apps/comments/src/utils/davUtils.ts","../build/frontend/apps/comments/src/services/DavClient.ts","../node_modules/balanced-match/index.js","../node_modules/webdav/node_modules/brace-expansion/index.js","../node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","../node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","../node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","../node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","../node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","../node_modules/webdav/node_modules/minimatch/dist/esm/index.js","../node_modules/webdav/dist/node/tools/headers.js","../node_modules/webdav/dist/node/response.js","../node_modules/path-posix/index.js","../node_modules/nested-property/dist/nested-property.js","../node_modules/webdav/dist/node/tools/dav.js","../build/frontend/apps/comments/src/services/GetComments.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getClient } from '@nextcloud/files/dav'\nimport { getRootPath } from '../utils/davUtils.ts'\n\nconst client = getClient(getRootPath())\n\nexport default client\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nvar EXPANSION_MAX = 100000\n\n// `EXPANSION_MAX` caps the *number* of expansions, but not their length. An\n// input like `'{a,b}'.repeat(1500)` stays under that count - its output is\n// truncated to 100k results - while making every result ~1500 characters\n// long. The result set, and the intermediate arrays built while combining\n// brace sets, then grow large enough to exhaust memory and crash the process\n// (CVE-2026-14257). `EXPANSION_MAX_LENGTH` bounds the total number of\n// characters the accumulator may hold at any point, so memory stays flat no\n// matter how many brace groups are chained. The limit sits well above any\n// realistic expansion (100k results hitting `EXPANSION_MAX` measure ~1M\n// characters) so legitimate input is unaffected.\nvar EXPANSION_MAX_LENGTH = 4000000\n\n// `expand` recurses once per level of brace *nesting* - both when expanding a\n// set's comma members and when re-wrapping a set whose body is a single part.\n// The CVE-2026-14257 fix made the *tail* iterative (recursion on `m.post`, one\n// level per chained group), which left nesting depth unbounded: about 3,100\n// levels of `{{{...a,b...}}}` - only ~6KB of input - exhausted the native stack\n// and crashed the process. `EXPANSION_MAX_DEPTH` bounds how deep the parser\n// will follow nesting. It sits far above any realistic pattern and well below\n// the depth at which the stack runs out.\nvar EXPANSION_MAX_DEPTH = 1000\n\n// Bash keeps a quirk where a brace group followed by a comma set still expands\n// (`{a},b}`). The parser implements it by rewriting the string and restarting\n// the scan, absorbing one `}` per pass. `n` trailing braces therefore cost `n`\n// full passes over a string that itself grows by one `escClose` sentinel each\n// time - quadratic in `n`, with a ~26x constant from the sentinel's length.\n// 128KB of `'{a}' + '}'.repeat(n) + ',z}'` blocked the event loop for 27\n// seconds to produce two results. `EXPANSION_MAX_REWRITES` bounds how many\n// times the scan may restart. Real `{a},b}` input needs a handful.\nvar EXPANSION_MAX_REWRITES = 1000\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Like `target.push(...items)` but doesn't overflow the stack\nfunction pushAll(target, items) {\n for (var i = 0; i < items.length; i++) {\n target.push(items[i]);\n }\n}\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n var parts = [];\n\n // Walk the brace groups iteratively. Recursing on `post` once per group let a\n // chain of them exhaust the stack - the parsing-side counterpart to\n // the `expand` overflow fixed for CVE-2026-14257, and not something `max` or\n // `maxLength` can bound, since it happens before expansion.\n //\n // The part the next chunk continues\n var carry = '';\n\n for (;;) {\n var m = balanced('{', '}', str);\n\n if (!m) {\n var tail = str.split(',');\n tail[0] = carry + tail[0];\n pushAll(parts, tail);\n return parts;\n }\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[0] = carry + p[0];\n p[p.length-1] += '{' + body + '}';\n\n if (!post.length) {\n pushAll(parts, p);\n return parts;\n }\n\n carry = p.pop();\n pushAll(parts, p);\n str = post;\n }\n}\n\nfunction expandTop(str, options) {\n if (!str)\n return [];\n\n options = options || {};\n var max = options.max == null ? EXPANSION_MAX : options.max;\n var maxLength = options.maxLength == null ? EXPANSION_MAX_LENGTH : options.maxLength;\n var maxDepth = options.maxDepth == null ? EXPANSION_MAX_DEPTH : options.maxDepth;\n var maxRewrites = options.maxRewrites == null ? EXPANSION_MAX_REWRITES : options.maxRewrites;\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), max, maxLength, maxDepth, 0, maxRewrites, true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\n// Build `{ acc[a] + pre + values[v] }` for every combination, capping the\n// number of results at `max` and the total number of characters at `maxLength`.\n// This is the one place output grows, so bounding it here keeps the single\n// accumulator - and therefore memory - flat regardless of how many brace groups\n// are combined (CVE-2026-14257).\nfunction combine(\n acc,\n pre,\n values,\n max,\n maxLength,\n dropEmpties\n) {\n var out = []\n var length = 0\n for (var a = 0; a < acc.length; a++) {\n for (var v = 0; v < values.length; v++) {\n if (out.length >= max) return out\n var expansion = acc[a] + pre + values[v]\n // Bash drops empty results at the top level. Skip them before they count\n // against `max`, so `max` bounds the number of *kept* results.\n if (dropEmpties && !expansion) continue\n if (length + expansion.length > maxLength) return out\n out.push(expansion)\n length += expansion.length\n }\n }\n return out\n}\n\n// The expansion values of a single numeric (`1..5`) or alphabetic (`a..e..2`)\n// sequence body.\nfunction expandSequence(\n body,\n isAlphaSequence,\n max,\n maxLength\n) {\n var n = body.split(/\\.\\./)\n var N = []\n // A sequence body always splits into two or three parts, but the compiler\n // can't know that.\n /* c8 ignore start */\n if (n[0] === undefined || n[1] === undefined) {\n return N\n }\n /* c8 ignore stop */\n var x = numeric(n[0])\n var y = numeric(n[1])\n var width = Math.max(n[0].length, n[1].length)\n var incr =\n n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1\n var test = lte\n var reverse = y < x\n if (reverse) {\n incr *= -1\n test = gte\n }\n var pad = n.some(isPadded)\n\n var length = 0\n for (var i = x; test(i, y) && N.length < max; i += incr) {\n var c\n if (isAlphaSequence) {\n c = String.fromCharCode(i)\n if (c === '\\\\') {\n c = ''\n }\n } else {\n c = String(i)\n if (pad) {\n var need = width - c.length\n if (need > 0) {\n var z = new Array(need + 1).join('0')\n if (i < 0) {\n c = '-' + z + c.slice(1)\n } else {\n c = z + c\n }\n }\n }\n }\n if (length + c.length > maxLength) break\n N.push(c)\n length += c.length\n }\n return N\n}\n\nfunction expand(\n str,\n max,\n maxLength,\n maxDepth,\n depth,\n maxRewrites,\n isTop\n) {\n // Too deeply nested to keep following: treat the rest as literal, the same\n // way a group that cannot expand is already handled. Truncating rather than\n // throwing keeps expansion total, matching `max` and `maxLength`.\n if (depth > maxDepth) {\n return [str];\n }\n\n // Consume the string's top-level brace groups left to right, threading a\n // running set of combined prefixes (`acc`). Expanding the tail iteratively -\n // rather than recursing on `m.post` once per group - keeps the native stack\n // depth constant, so deeply chained input (`'{a,b}'.repeat(3000)`) can no\n // longer overflow the stack, and leaves a single accumulator whose size\n // `maxLength` bounds directly (CVE-2026-14257).\n var acc = ['']\n\n // Bash drops empty results, but only when the *first* top-level group is a\n // comma set - a sequence like `{a..\\}` may legitimately yield ''. The drop\n // is on the final strings, so it is applied to whichever `combine` produces\n // them (the one with no brace set left in the tail).\n // How many times the `{a},b}` rewrite below has restarted the scan. Each pass\n // re-reads the whole string, so leaving this unbounded is quadratic.\n var rewrites = 0\n var dropEmpties = false\n var firstGroup = true\n\n for (;;) {\n const m = balanced('{', '}', str)\n\n // No brace set left: the rest of the string is literal.\n if (!m) {\n return combine(acc, str, [''], max, maxLength, dropEmpties)\n }\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre\n\n if (/\\$$/.test(pre)) {\n acc = combine(\n acc,\n pre + '{' + m.body + '}',\n [''],\n max,\n maxLength,\n dropEmpties && !m.post.length\n )\n firstGroup = false\n if (!m.post.length) break\n str = m.post\n continue\n }\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (rewrites < maxRewrites && m.post.match(/,(?!,).*\\}/)) {\n rewrites++;\n str = m.pre + '{' + m.body + escClose + m.post;\n isTop = true;\n continue;\n }\n // Nothing here expands, so the whole remaining string is literal.\n return combine(\n acc,\n pre + '{' + m.body + '}' + m.post,\n [''],\n max,\n maxLength,\n dropEmpties\n )\n }\n\n if (firstGroup) {\n dropEmpties = isTop && !isSequence\n firstGroup = false\n }\n\n var values;\n if (isSequence) {\n values = expandSequence(m.body, isAlphaSequence, max, maxLength);\n } else {\n var n = parseCommaParts(m.body);\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], max, maxLength, maxDepth, depth + 1, maxRewrites, false).map(embrace);\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n acc = combine(\n acc,\n pre + n[0],\n [''],\n max,\n maxLength,\n dropEmpties && !m.post.length\n )\n if (!m.post.length) break\n str = m.post\n continue\n }\n /* c8 ignore stop */\n }\n\n // Values that `combine` is going to drop as empty produce no result, so\n // they must not count against `max` - otherwise `{a,,b}` with `max: 2`\n // would stop at `['a', '']` and yield one result instead of two. Skipping\n // them outright keeps `values` bounded while leaving `max` a bound on\n // *kept* results.\n var dropsEmpties = dropEmpties && !m.post.length && !pre\n for (var d = 0; dropsEmpties && d < acc.length; d++) {\n if (acc[d]) {\n dropsEmpties = false\n }\n }\n\n values = []\n var valuesLength = 0\n outer: for (var j = 0; j < n.length; j++) {\n var expanded = expand(n[j], max, maxLength, maxDepth, depth + 1, maxRewrites, false)\n for (var k = 0; k < expanded.length; k++) {\n var v = expanded[k]\n if (dropsEmpties && !v) continue\n if (values.length >= max || valuesLength + v.length > maxLength) {\n break outer\n }\n values.push(v)\n valuesLength += v.length\n }\n }\n }\n\n acc = combine(acc, pre, values, max, maxLength, dropEmpties && !m.post.length)\n if (!m.post.length) break\n str = m.post\n }\n\n return acc\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes. For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n return windowsPathsNoEscape\n ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n]);\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n]);\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n]);\nconst usurpMap = new Map([\n ['!', new Map([['!', '@']])],\n ['?', new Map([['*', '*'], ['+', '*']])],\n ['@', new Map([['!', '!'], ['?', '?'], ['@', '@'], ['*', '*'], ['+', '+']])],\n ['+', new Map([['?', '*'], ['*', '*']])],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' && !(p instanceof _a && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null\n ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof _a && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new _a(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt, extDepth) {\n const maxDepth = opt.maxExtglobRecursion ?? 2;\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth;\n if (doRecurse) {\n ast.push(acc);\n acc = '';\n const ext = new _a(c, ast);\n i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new _a(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n part.push(acc);\n acc = '';\n const ext = new _a(c, part);\n part.push(ext);\n i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new _a(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n #canAdoptWithSpace(child) {\n return this.#canAdopt(child, adoptionWithSpaceMap);\n }\n #canAdopt(child, map = adoptionMap) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canAdoptType(gc.type, map);\n }\n #canAdoptType(c, map = adoptionAnyMap) {\n return !!map.get(this.type)?.includes(c);\n }\n #adoptWithSpace(child, index) {\n const gc = child.#parts[0];\n const blank = new _a(null, gc, this.options);\n blank.#parts.push('');\n gc.push(blank);\n this.#adopt(child, index);\n }\n #adopt(child, index) {\n const gc = child.#parts[0];\n this.#parts.splice(index, 1, ...gc.#parts);\n for (const p of gc.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.#toString = undefined;\n }\n #canUsurpType(c) {\n const m = usurpMap.get(this.type);\n return !!(m?.has(c));\n }\n #canUsurp(child) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canUsurpType(gc.type);\n }\n #usurp(child) {\n const m = usurpMap.get(this.type);\n const gc = child.#parts[0];\n const nt = m?.get(gc.type);\n /* c8 ignore start - impossible */\n if (!nt)\n return false;\n /* c8 ignore stop */\n this.#parts = gc.#parts;\n for (const p of this.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.type = nt;\n this.#toString = undefined;\n this.#emptyExt = false;\n }\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object')\n p.#flatten();\n }\n }\n else {\n let iterations = 0;\n let done = false;\n do {\n done = true;\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i];\n if (typeof c === 'object') {\n c.#flatten();\n if (this.#canAdopt(c)) {\n done = false;\n this.#adopt(c, i);\n }\n else if (this.#canAdoptWithSpace(c)) {\n done = false;\n this.#adoptWithSpace(c, i);\n }\n else if (this.#canUsurp(c)) {\n done = false;\n this.#usurp(c);\n }\n }\n }\n } while (!done && ++iterations < 10);\n }\n this.#toString = undefined;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new _a(null, undefined, options);\n _a.#parseAST(pattern, ast, 0, options, 0);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this) {\n this.#flatten();\n this.#fillNegs();\n }\n if (!isExtglobAST(this)) {\n const noEmpty = this.isStart() && this.isEnd();\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string'\n ? _a.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n const me = this;\n me.#parts = [s];\n me.type = null;\n me.#hasMagic = undefined;\n return [s, unescape(this.toString()), false, false];\n }\n // XXX abstract out this map method\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n ? ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!'\n ? // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@'\n ? ')'\n : this.type === '?'\n ? ')?'\n : this.type === '+' && bodyDotAllowed\n ? ')'\n : this.type === '*' && bodyDotAllowed\n ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n inStar = false;\n continue;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n inStar = false;\n continue;\n }\n }\n if (c === '*') {\n if (inStar)\n continue;\n inStar = true;\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n hasMagic = true;\n continue;\n }\n else {\n inStar = false;\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, unescape(glob), !!hasMagic, uflag];\n }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n return windowsPathsNoEscape\n ? s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n assertValidPattern(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch;\n }\n const orig = minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR,\n });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern);\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n maxGlobstarRecursion;\n regexp;\n constructor(pattern, options = {}) {\n assertValidPattern(pattern);\n options = options || {};\n this.options = options;\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n //
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(GLOBSTAR);\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0))\n                return false;\n            fileIndex += head.length;\n        }\n        let fileTailMatch = 0;\n        if (tail.length) {\n            if (tail.length + fileIndex > file.length)\n                return false;\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0))\n                    return false;\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return partial || sawSome;\n        }\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false)\n                    return sub;\n            }\n            const f = file[fileIndex];\n            if (f === '.' || f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex, pi = patternIndex,\n            fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            /* c8 ignore start */\n            if (p === false || p === GLOBSTAR)\n                return false;\n            /* c8 ignore stop */\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        if (fi === fl && pi === pl) {\n            return true;\n        }\n        else if (fi === fl) {\n            return partial;\n        }\n        else if (pi === pl) {\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","export function convertResponseHeaders(headers) {\n    const output = {};\n    headers.forEach((value, key) => {\n        output[key] = value;\n    });\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\n// @ts-expect-error Types declare default export but runtime provides named export\nimport { EntityDecoder } from \"@nodable/entities\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction stripPrefix(name) {\n    const colonIdx = name.indexOf(\":\");\n    return colonIdx === -1 ? name : name.slice(colonIdx + 1);\n}\nfunction isXmlnsAttribute(name) {\n    return name === \"xmlns\" || name.startsWith(\"xmlns:\");\n}\n// The parser only keeps namespace prefixes on tags in Clark mode, so without\n// this the jPaths would be `d:propstat.d:prop.d:displayname` there and bare\n// everywhere else. Strip per segment (rather than off the joined path) as\n// prefixes and local names may both contain dots.\nfunction toJPathString(jPath) {\n    if (typeof jPath === \"string\") {\n        return jPath;\n    }\n    return jPath.toArray().map(stripPrefix).join(\".\");\n}\nfunction getParser({ attributeNamePrefix, attributeParsers, clarkNotationProps, entityDecoder: entityDecoderOptions, tagParsers }) {\n    const parserOptions = {\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: !clarkNotationProps,\n        jPath: false,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(attrName, attrValue, jPath) {\n            // Clark mode keeps the namespace declarations, which the default\n            // mode discards. They are consumed by the walker and removed from\n            // the result, so parsers never get to see them in either mode.\n            if (attributeParsers.length === 0 || isXmlnsAttribute(attrName)) {\n                return attrValue;\n            }\n            const pathStr = toJPathString(jPath);\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(pathStr, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid processor\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            if (tagParsers.length === 0) {\n                return tagValue;\n            }\n            const pathStr = toJPathString(jPath);\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(pathStr, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid processor\n                }\n            }\n            return tagValue;\n        }\n    };\n    if (entityDecoderOptions) {\n        parserOptions.entityDecoder = new EntityDecoder({\n            limit: {\n                maxTotalExpansions: entityDecoderOptions.limit?.maxTotalExpansions ?? 0,\n                maxExpandedLength: entityDecoderOptions.limit?.maxExpandedLength ?? 0\n            }\n        });\n    }\n    return new XMLParser(parserOptions);\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n// Structural keys of the WebDAV multistatus envelope (RFC 4918). When\n// `clarkNotationProps` is enabled the parser keeps namespace prefixes on\n// every tag, so these structural keys arrive prefixed (e.g. `d:multistatus`)\n// and have to be renamed back to their bare local name so the existing\n// `normaliseResult` continues to work and `DAVResult` keeps its shape.\n//\n// Keep this list in sync with the structural fields exposed on `DAVResult`,\n// `DAVResultResponse`, `DAVResultPropstatResponse`, `DAVResultStatusResponse`\n// and `DAVPropStat` in `source/types.ts`. If a new structural field is added\n// to those interfaces, it must be added here too or the prefixed variant\n// will leak through into the result.\nconst STRUCTURAL_KEYS = new Set([\n    \"multistatus\",\n    \"response\",\n    \"propstat\",\n    \"prop\",\n    \"status\",\n    \"href\",\n    \"responsedescription\"\n]);\nfunction isPlainObject(value) {\n    return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n/**\n * Transform a parsed (prefix-preserving) tree in place to:\n *\n *  1. Rename structural keys (`multistatus`/`response`/...) back to their\n *     bare local names so `DAVResult`'s shape is preserved.\n *  2. Rewrite every key inside each `` to Clark notation\n *     `{namespaceURI}localName`, resolving the namespace against the xmlns\n *     scope built up along the way (declarations on any of the enclosing\n *     elements as well as on the property element itself). A property whose\n *     prefix has no URI in scope keeps its bare local name.\n *  3. Drop the xmlns declarations once they are resolved, so the result\n *     carries the same shape the default (prefix-stripping) mode produces.\n *\n * Only the direct children of `` are rewritten: the keys of any\n * nested elements below them are left alone and keep whichever prefix the\n * server serialised them with.\n */\nfunction applyClarkNotation(root, attrPrefix) {\n    if (!isPlainObject(root) && !Array.isArray(root))\n        return;\n    const xmlnsKey = `${attrPrefix}xmlns`;\n    const xmlnsPrefixedKey = `${xmlnsKey}:`;\n    const xmlnsPrefixedKeyLen = xmlnsPrefixedKey.length;\n    const TEXT_KEY = \"text\";\n    const EMPTY_SCOPE = new Map();\n    function isXmlnsAttr(key) {\n        return (key === xmlnsKey ||\n            (key.length > xmlnsPrefixedKeyLen && key.startsWith(xmlnsPrefixedKey)));\n    }\n    // Return an extended scope if `obj` declares any xmlns; otherwise reuse\n    // the parent scope to avoid allocating a Map for every node.\n    function extendScope(obj, parent) {\n        let scope = null;\n        for (const key of Object.keys(obj)) {\n            if (key === xmlnsKey) {\n                if (!scope)\n                    scope = new Map(parent);\n                scope.set(\"\", obj[key]);\n            }\n            else if (key.length > xmlnsPrefixedKeyLen && key.startsWith(xmlnsPrefixedKey)) {\n                if (!scope)\n                    scope = new Map(parent);\n                scope.set(key.slice(xmlnsPrefixedKeyLen), obj[key]);\n            }\n        }\n        return scope ?? parent;\n    }\n    // Drop the namespace declarations once they have been resolved, so a prop\n    // value ends up with the same shape it has in the default (prefix-\n    // stripping) mode: bare text for a simple element, an empty string for an\n    // empty one, and `{ text, \"@attr\" }` for one carrying other attributes.\n    // The keys of nested children are NOT rewritten to Clark notation, since\n    // the walker only resolves namespaces at the `` child level; those\n    // keep the prefix the server happened to serialise them with.\n    function cleanPropValue(raw) {\n        if (Array.isArray(raw))\n            return raw.map(cleanPropValue);\n        if (!isPlainObject(raw))\n            return raw;\n        const out = {};\n        for (const key of Object.keys(raw)) {\n            if (isXmlnsAttr(key))\n                continue;\n            out[key] = cleanPropValue(raw[key]);\n        }\n        const keys = Object.keys(out);\n        if (keys.length === 0)\n            return \"\";\n        if (keys.length === 1 && keys[0] === TEXT_KEY)\n            return out[TEXT_KEY];\n        return out;\n    }\n    function emitClarkForChild(rawKey, rawValue, scope, out) {\n        const colonIdx = rawKey.indexOf(\":\");\n        const prefix = colonIdx === -1 ? \"\" : rawKey.slice(0, colonIdx);\n        const local = colonIdx === -1 ? rawKey : rawKey.slice(colonIdx + 1);\n        // A property element may declare its own namespaces, either as a\n        // default `xmlns=\"...\"` or bound to the very prefix it uses, so its\n        // attributes have to be folded into the scope before resolving. A\n        // prefix with no URI in scope falls back to the null namespace; that\n        // yields a bare `local` key rather than throwing or losing the data.\n        const resolveNs = (value) => {\n            const ownScope = isPlainObject(value) ? extendScope(value, scope) : scope;\n            return ownScope.get(prefix) ?? \"\";\n        };\n        const assign = (ns, value) => {\n            const key = ns ? `{${ns}}${local}` : local;\n            const existing = out[key];\n            if (existing === undefined) {\n                out[key] = value;\n            }\n            else if (Array.isArray(existing)) {\n                existing.push(value);\n            }\n            else {\n                out[key] = [existing, value];\n            }\n        };\n        if (Array.isArray(rawValue)) {\n            for (const item of rawValue) {\n                assign(resolveNs(item), cleanPropValue(item));\n            }\n            return;\n        }\n        assign(resolveNs(rawValue), cleanPropValue(rawValue));\n    }\n    function rewritePropToClark(propObj, parentScope) {\n        const scope = extendScope(propObj, parentScope);\n        const out = {};\n        for (const key of Object.keys(propObj)) {\n            if (isXmlnsAttr(key))\n                continue;\n            emitClarkForChild(key, propObj[key], scope, out);\n        }\n        return out;\n    }\n    function rewriteProp(value, parentScope) {\n        if (!isPlainObject(value))\n            return value;\n        const rewritten = rewritePropToClark(value, parentScope);\n        return Object.keys(rewritten).length === 0 ? \"\" : rewritten;\n    }\n    // Returns the (possibly replaced) node, so that an element left empty by\n    // dropping its namespace declarations collapses to the empty string the\n    // default mode would have produced for it.\n    function walk(node, scope) {\n        if (Array.isArray(node)) {\n            for (let index = 0; index < node.length; index += 1) {\n                node[index] = walk(node[index], scope);\n            }\n            return node;\n        }\n        if (!isPlainObject(node))\n            return node;\n        const childScope = extendScope(node, scope);\n        for (const key of Object.keys(node)) {\n            // The declarations have been folded into the scope above and are\n            // of no further use; the default mode discards them as well.\n            if (isXmlnsAttr(key)) {\n                delete node[key];\n                continue;\n            }\n            const colonIdx = key.indexOf(\":\");\n            const ln = colonIdx === -1 ? key : key.slice(colonIdx + 1);\n            const value = node[key];\n            // Rename structural keys to bare local name.\n            let actualKey = key;\n            if (STRUCTURAL_KEYS.has(ln) && ln !== key) {\n                delete node[key];\n                node[ln] = value;\n                actualKey = ln;\n            }\n            if (ln === \"prop\") {\n                node[actualKey] = Array.isArray(value)\n                    ? value.map(item => rewriteProp(item, childScope))\n                    : rewriteProp(value, childScope);\n                // Stop here; the prop content was rewritten in one shot.\n            }\n            else {\n                node[actualKey] = walk(value, childScope);\n            }\n        }\n        return Object.keys(node).length === 0 ? \"\" : node;\n    }\n    walk(root, EMPTY_SCOPE);\n}\n/**\n * Parse an XML response from a WebDAV service, converting it to an internal\n * DAV result.\n *\n * When `context.clarkNotationProps` is `true`, every property key inside\n * each `propstat.prop` is rewritten to Clark notation\n * `{namespaceURI}localName`. This lets consumers disambiguate properties\n * that share a local name across different XML namespaces (RFC 4918) and\n * uses a single canonical key per property regardless of how the server\n * serialised the namespace (prefix or inline default xmlns).\n *\n * The structural shape of `DAVResult` (`multistatus`/`response`/`propstat`/\n * `prop`/`status`/`href`) is unaffected by this option; only the keys\n * inside each `propstat.prop` change, and only for the direct children of\n * `` (nested elements keep the prefix the server used). Downstream\n * helpers like `prepareFileFromProps`, `parseStat` and `parseSearch` assume\n * bare prop keys and will not work with Clark-notation ones; consumers that\n * opt in are expected to address the Clark keys on their side.\n *\n * `context.tagParsers` and `context.attributeParsers` are unaffected as\n * well: they are handed the same jPaths, without namespace prefixes, and\n * are not invoked for the xmlns declarations in either mode.\n *\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        if (context.clarkNotationProps) {\n            applyClarkNotation(result, context.attributeNamePrefix ?? \"@\");\n        }\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { DAVResult, FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { parseXML } from 'webdav'\nimport { processResponsePayload } from 'webdav/dist/node/response.js'\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js'\nimport client from './DavClient.ts'\n\nexport const DEFAULT_LIMIT = 20\n\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options: { offset: number, limit?: number, datetime?: Date }) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst datetime = options.datetime ? `${options.datetime.toISOString()}` : ''\n\tconst response = await client.customRequest(resourcePath, {\n\t\tmethod: 'REPORT',\n\t\tdata: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n\t\t...options,\n\t})\n\n\tconst responseData = await response.text()\n\tconst result = await parseXML(responseData)\n\tconst stat = getDirectoryFiles(result, true)\n\t// https://github.com/perry-mitchell/webdav-client/issues/339\n\treturn processResponsePayload(response, stat, true) as ResponseDataDetailed\n}\n\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result - the DAV response result\n * @param isDetailed - whether to return detailed file information\n */\nfunction getDirectoryFiles(\n\tresult: DAVResult,\n\tisDetailed = false,\n): Array {\n\t// Extract the response items (directory contents)\n\tconst {\n\t\tmultistatus: { response: responseItems },\n\t} = result\n\n\t// Map all items to a consistent output structure (results)\n\treturn responseItems.map((item) => {\n\t\t// Each item should contain a stat object\n\t\tconst props = item.propstat!.prop!\n\n\t\treturn prepareFileFromProps(props, props.id!.toString(), isDetailed)\n\t})\n}\n"],"names":["getRootPath","generateRemoteUrl","client","getClient","balancedMatch","balanced","a","b","str","maybeMatch","r","range","reg","m","begs","beg","left","right","result","ai","bi","i","require$$0","braceExpansion","expandTop","escSlash","escOpen","escClose","escComma","escPeriod","EXPANSION_MAX","EXPANSION_MAX_LENGTH","EXPANSION_MAX_DEPTH","EXPANSION_MAX_REWRITES","numeric","escapeBraces","unescapeBraces","pushAll","target","items","parseCommaParts","parts","carry","tail","pre","body","post","p","options","max","maxLength","maxDepth","maxRewrites","expand","embrace","isPadded","el","lte","y","gte","combine","acc","values","dropEmpties","out","length","v","expansion","expandSequence","isAlphaSequence","n","N","x","width","incr","test","reverse","pad","c","need","z","depth","isTop","rewrites","firstGroup","isNumericSequence","isSequence","isOptions","dropsEmpties","d","valuesLength","outer","j","expanded","k","MAX_PATTERN_LENGTH","assertValidPattern","pattern","posixClasses","braceEscape","s","regexpEscape","rangesToString","ranges","parseClass","glob","position","pos","negs","sawStart","uflag","escaping","negate","endPos","rangeStart","WHILE","cls","unip","u","neg","sranges","snegs","unescape","windowsPathsNoEscape","_a","types","isExtglobType","isExtglobAST","adoptionMap","adoptionWithSpaceMap","adoptionAnyMap","usurpMap","startNoTraversal","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","#root","#hasMagic","#uflag","#parts","#parent","#parentIndex","#negs","#filledNegs","#options","#toString","#emptyExt","type","parent","#fillNegs","pp","part","ret","pl","#parseAST","ast","opt","extDepth","inBrace","braceStart","braceNeg","ext","#canAdoptType","depthAdd","#canAdoptWithSpace","child","#canAdopt","map","gc","#adoptWithSpace","index","blank","#adopt","#canUsurpType","#canUsurp","#usurp","nt","#flatten","iterations","done","re","hasMagic","flags","allowDot","dot","noEmpty","src","_","#parseGlob","start","aps","needNoTrav","needNoDot","end","repeated","#partsToRegExp","me","bodyDotAllowed","final","close","_hasMagic","inStar","needUflag","consumed","magic","escape","minimatch","Minimatch","starDotExtRE","starDotExtTest","f","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","$0","noext","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","len","defaultPlatform","process","define_process_env_default","path","sep","GLOBSTAR","twoStarDot","twoStarNoDot","filter","defaults","def","orig","list","braceExpand","makeRe","match","mm","globMagic","args","rawGlobParts","set","__","isUNC","isDrive","ss","globParts","optimizationLevel","gs","prev","didSomething","dd","gss","next","p2","other","splin","matched","emptyGSMatch","which","negateOffset","file","partial","fileStartIndex","patternStartIndex","fileDrive","fileUNC","patternDrive","patternUNC","fdi","pdi","fd","pd","#matchGlobstar","#matchOne","fileIndex","patternIndex","firstgs","lastgs","head","fileHead","fileTailMatch","tailStart","sawSome","bodySegments","currentBody","nonGsParts","nonGsPartsSums","fileLength","#matchGlobStarBodySections","bodyIndex","globStarDepth","sawTail","bs","after","sub","fi","pi","fl","hit","fastTest","twoStar","open","ff","filename","convertResponseHeaders","headers","output","value","key","processResponsePayload","response","data","isDetailed","util","isString","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","segment","from","to","trim","arr","fromParts","toParts","samePartsLength","outputParts","root","dir","pathObject","base","pathString","allParts","pathPosix","_typeof","obj","_classCallCheck","instance","Constructor","_possibleConstructorReturn","self","call","_assertThisInitialized","_inherits","subClass","superClass","_setPrototypeOf","_wrapNativeSuper","Class","_cache","_isNativeFunction","Wrapper","_construct","_getPrototypeOf","Parent","_isNativeReflectConstruct","fn","o","ARRAY_WILDCARD","PATH_DELIMITER","ObjectPrototypeMutationError","_Error","params","_this","nestedProperty","setNestedProperty","getNestedProperty","hasNestedProperty","object","property","isInNestedProperty","traverse","currentObject","currentProperty","has","segments","isLastSegment","nextPropIsNumber","nextPropIsArrayWildcard","err","objectInPath","isIn","pathExists","callback","_loop","idx","currentSegment","remainingSegments","pathToHere","_ret","PropertyType","prepareFileFromProps","props","lastMod","rawSize","resourceType","mimeType","etag","stat","DEFAULT_LIMIT","getComments","resourceId","resourcePath","datetime","responseData","parseXML","getDirectoryFiles","responseItems","item"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14]}
\ No newline at end of file
diff --git a/dist/GetComments-DzpQCqQO.chunk.mjs.map.license b/dist/GetComments-DJtGp6Zq.chunk.mjs.map.license
similarity index 97%
rename from dist/GetComments-DzpQCqQO.chunk.mjs.map.license
rename to dist/GetComments-DJtGp6Zq.chunk.mjs.map.license
index da3d7800cd468..d4fc00191a0bb 100644
--- a/dist/GetComments-DzpQCqQO.chunk.mjs.map.license
+++ b/dist/GetComments-DJtGp6Zq.chunk.mjs.map.license
@@ -13,7 +13,7 @@ This file is generated from multiple sources. Included packages:
 	- version: 1.0.2
 	- license: MIT
 - brace-expansion
-	- version: 2.1.4
+	- version: 2.1.7
 	- license: MIT
 - minimatch
 	- version: 9.0.9
diff --git a/dist/GetComments-DzpQCqQO.chunk.mjs b/dist/GetComments-DzpQCqQO.chunk.mjs
deleted file mode 100644
index 72969162aa3de..0000000000000
--- a/dist/GetComments-DzpQCqQO.chunk.mjs
+++ /dev/null
@@ -1,11 +0,0 @@
-import{g as St,n as jt}from"./dav-ajmPPC2W.chunk.mjs";import{k as Et,q as bt,p as K}from"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import{r as Mt}from"./previewUtils-BiOsv7h1.chunk.mjs";function Pt(){return Et("dav/comments")}const Rt=St(Pt());var H,ot;function Nt(){if(ot)return H;ot=1,H=o;function o(n,s,r){n instanceof RegExp&&(n=t(n,r)),s instanceof RegExp&&(s=t(s,r));var i=e(n,s,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+n.length,i[1]),post:r.slice(i[1]+s.length)}}function t(n,s){var r=s.match(n);return r?r[0]:null}o.range=e;function e(n,s,r){var i,h,a,l,u,f=r.indexOf(n),g=r.indexOf(s,f+1),b=f;if(f>=0&&g>0){if(n===s)return[f,g];for(i=[],a=r.length;b>=0&&!u;)b==f?(i.push(b),f=r.indexOf(n,b+1)):i.length==1?u=[i.pop(),g]:(h=i.pop(),h=0?f:g;i.length&&(u=[a,l])}return u}return H}var Y,ht;function At(){if(ht)return Y;ht=1;var o=Nt();Y=g;var t="\0SLASH"+Math.random()+"\0",e="\0OPEN"+Math.random()+"\0",n="\0CLOSE"+Math.random()+"\0",s="\0COMMA"+Math.random()+"\0",r="\0PERIOD"+Math.random()+"\0",i=1e5,h=4e6;function a(c){return parseInt(c,10)==c?parseInt(c,10):c.charCodeAt(0)}function l(c){return c.split("\\\\").join(t).split("\\{").join(e).split("\\}").join(n).split("\\,").join(s).split("\\.").join(r)}function u(c){return c.split(t).join("\\").split(e).join("{").split(n).join("}").split(s).join(",").split(r).join(".")}function f(c){if(!c)return[""];var p=[],d=o("{","}",c);if(!d)return c.split(",");var m=d.pre,y=d.body,O=d.post,x=m.split(",");x[x.length-1]+="{"+y+"}";var P=f(O);return O.length&&(x[x.length-1]+=P.shift(),x.push.apply(x,P)),p.push.apply(p,x),p}function g(c,p){if(!c)return[];p=p||{};var d=p.max==null?i:p.max,m=p.maxLength==null?h:p.maxLength;return c.substr(0,2)==="{}"&&(c="\\{\\}"+c.substr(2)),L(l(c),d,m,!0).map(u)}function b(c){return"{"+c+"}"}function w(c){return/^-?0\d/.test(c)}function v(c,p){return c<=p}function E(c,p){return c>=p}function S(c,p,d,m,y,O){for(var x=[],P=0,R=0;R=m)return x;var k=c[R]+p+d[A];if(!(O&&!k)){if(P+k.length>y)return x;x.push(k),P+=k.length}}return x}function j(c,p,d,m){var y=c.split(/\.\./),O=[];if(y[0]===void 0||y[1]===void 0)return O;var x=a(y[0]),P=a(y[1]),R=Math.max(y[0].length,y[1].length),A=y.length===3&&y[2]!==void 0?Math.max(Math.abs(a(y[2])),1):1,k=v,I=P0){var B=new Array(D+1).join("0");G<0?$="-"+B+$.slice(1):$=B+$}}if(z+$.length>m)break;O.push($),z+=$.length}return O}function L(c,p,d,m){for(var y=[""],O=!1,x=!0;;){const M=o("{","}",c);if(!M)return S(y,c,[""],p,d,O);const Z=M.pre;if(/\$$/.test(Z)){if(y=S(y,Z+"{"+M.body+"}",[""],p,d,O&&!M.post.length),x=!1,!M.post.length)break;c=M.post;continue}var P=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(M.body),R=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(M.body),A=P||R,k=M.body.indexOf(",")>=0;if(!A&&!k){if(M.post.match(/,(?!,).*\}/)){c=M.pre+"{"+M.body+n+M.post,m=!0;continue}return S(y,Z+"{"+M.body+"}"+M.post,[""],p,d,O)}x&&(O=m&&!A,x=!1);var I;if(A)I=j(M.body,R,p,d);else{var _=f(M.body);if(_.length===1&&_[0]!==void 0&&(_=L(_[0],p,d,!1).map(b),_.length===1)){if(y=S(y,Z+_[0],[""],p,d,O&&!M.post.length),!M.post.length)break;c=M.post;continue}for(var z=O&&!M.post.length&&!Z,G=0;z&&G=p||$+U.length>d)break t;I.push(U),$+=U.length}}}if(y=S(y,Z,I,p,d,O&&!M.post.length),!M.post.length)break;c=M.post}return y}return Y}var $t=At();const Wt=bt($t),Tt=1024*64,Q=o=>{if(typeof o!="string")throw new TypeError("invalid pattern");if(o.length>Tt)throw new TypeError("pattern is too long")},_t={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},F=o=>o.replace(/[[\]\\-]/g,"\\$&"),Ct=o=>o.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),at=o=>o.join(""),Lt=(o,t)=>{const e=t;if(o.charAt(e)!=="[")throw new Error("not in a brace expression");const n=[],s=[];let r=e+1,i=!1,h=!1,a=!1,l=!1,u=e,f="";t:for(;rf?n.push(F(f)+"-"+F(w)):w===f&&n.push(F(w)),f="",r++;continue}if(o.startsWith("-]",r+1)){n.push(F(w+"-")),r+=2;continue}if(o.startsWith("-",r+1)){f=w,r+=2;continue}n.push(F(w)),r++}if(ut?o.replace(/\[([^\/\\])\]/g,"$1"):o.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");var T;const kt=new Set(["!","?","+","*","@"]),st=o=>kt.has(o),lt=o=>st(o.type),It=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),zt=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Gt=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),ct=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Dt="(?!(?:^|/)\\.\\.?(?:$|/))",V="(?!\\.)",Zt=new Set(["[","."]),Bt=new Set(["..","."]),Ft=new Set("().*{}+?[]^$\\!"),Jt=o=>o.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),rt="[^/]",pt=rt+"*?",ut=rt+"+?";class it{type;#n;#s;#r=!1;#t=[];#e;#h;#l;#a=!1;#i;#o;#c=!1;constructor(t,e,n={}){this.type=t,t&&(this.#s=!0),this.#e=e,this.#n=this.#e?this.#e.#n:this,this.#i=this.#n===this?n:this.#n.#i,this.#l=this.#n===this?[]:this.#n.#l,t==="!"&&!this.#n.#a&&this.#l.push(this),this.#h=this.#e?this.#e.#t.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(const t of this.#t)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#o!==void 0?this.#o:this.type?this.#o=this.type+"("+this.#t.map(t=>String(t)).join("|")+")":this.#o=this.#t.map(t=>String(t)).join("")}#y(){if(this!==this.#n)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let t;for(;t=this.#l.pop();){if(t.type!=="!")continue;let e=t,n=e.#e;for(;n;){for(let s=e.#h+1;!n.type&&stypeof e=="string"?e:e.toJSON()):[this.type,...this.#t.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#n||this.#n.#a&&this.#e?.type==="!")&&t.push({}),t}isStart(){if(this.#n===this)return!0;if(!this.#e?.isStart())return!1;if(this.#h===0)return!0;const t=this.#e;for(let e=0;e{const[b,w,v,E]=typeof g=="string"?T.#S(g,this.#s,a):g.toRegExpSource(t);return this.#s=this.#s||v,this.#r=this.#r||E,b}).join("");let u="";if(this.isStart()&&typeof this.#t[0]=="string"&&!(this.#t.length===1&&Bt.has(this.#t[0]))){const g=Zt,b=e&&g.has(l.charAt(0))||l.startsWith("\\.")&&g.has(l.charAt(2))||l.startsWith("\\.\\.")&&g.has(l.charAt(4)),w=!e&&!t&&g.has(l.charAt(0));u=b?Dt:w?V:""}let f="";return this.isEnd()&&this.#n.#a&&this.#e?.type==="!"&&(f="(?:$|\\/)"),[u+l+f,J(l),this.#s=!!this.#s,this.#r]}const n=this.type==="*"||this.type==="+",s=this.type==="!"?"(?:(?!(?:":"(?:";let r=this.#m(e);if(this.isStart()&&this.isEnd()&&!r&&this.type!=="!"){const a=this.toString(),l=this;return l.#t=[a],l.type=null,l.#s=void 0,[a,J(this.toString()),!1,!1]}let i=!n||t||e||!V?"":this.#m(!0);i===r&&(i=""),i&&(r=`(?:${r})(?:${i})*?`);let h="";if(this.type==="!"&&this.#c)h=(this.isStart()&&!e?V:"")+ut;else{const a=this.type==="!"?"))"+(this.isStart()&&!e&&!t?V:"")+pt+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&i?")":this.type==="*"&&i?")?":`)${this.type}`;h=s+r+a}return[h,J(r),this.#s=!!this.#s,this.#r]}#m(t){return this.#t.map(e=>{if(typeof e=="string")throw new Error("string type in extglob ast??");const[n,s,r,i]=e.toRegExpSource(t);return this.#r=this.#r||i,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static#S(t,e,n=!1){let s=!1,r="",i=!1,h=!1;for(let a=0;at?o.replace(/[?*()[\]]/g,"[$&]"):o.replace(/[?*()[\]\\]/g,"\\$&");var tt={};const W=(o,t,e={})=>(Q(t),!e.nocomment&&t.charAt(0)==="#"?!1:new X(t,e).match(o)),Vt=/^\*+([^+@!?\*\[\(]*)$/,Kt=o=>t=>!t.startsWith(".")&&t.endsWith(o),Qt=o=>t=>t.endsWith(o),Xt=o=>(o=o.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(o)),qt=o=>(o=o.toLowerCase(),t=>t.toLowerCase().endsWith(o)),Ht=/^\*+\.\*+$/,Yt=o=>!o.startsWith(".")&&o.includes("."),te=o=>o!=="."&&o!==".."&&o.includes("."),ee=/^\.\*+$/,ne=o=>o!=="."&&o!==".."&&o.startsWith("."),se=/^\*+$/,re=o=>o.length!==0&&!o.startsWith("."),ie=o=>o.length!==0&&o!=="."&&o!=="..",oe=/^\?+([^+@!?\*\[\(]*)?$/,he=([o,t=""])=>{const e=wt([o]);return t?(t=t.toLowerCase(),n=>e(n)&&n.toLowerCase().endsWith(t)):e},ae=([o,t=""])=>{const e=vt([o]);return t?(t=t.toLowerCase(),n=>e(n)&&n.toLowerCase().endsWith(t)):e},le=([o,t=""])=>{const e=vt([o]);return t?n=>e(n)&&n.endsWith(t):e},ce=([o,t=""])=>{const e=wt([o]);return t?n=>e(n)&&n.endsWith(t):e},wt=([o])=>{const t=o.length;return e=>e.length===t&&!e.startsWith(".")},vt=([o])=>{const t=o.length;return e=>e.length===t&&e!=="."&&e!==".."},xt=typeof K=="object"&&K?typeof tt=="object"&&tt&&tt.__MINIMATCH_TESTING_PLATFORM__||K.platform:"posix",ft={win32:{sep:"\\"},posix:{sep:"/"}},pe=xt==="win32"?ft.win32.sep:ft.posix.sep;W.sep=pe;const N=Symbol("globstar **");W.GLOBSTAR=N;const ue="[^/]",fe=ue+"*?",ge="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",de="(?:(?!(?:\\/|^)\\.).)*?",me=(o,t={})=>e=>W(e,o,t);W.filter=me;const C=(o,t={})=>Object.assign({},o,t),ye=o=>{if(!o||typeof o!="object"||!Object.keys(o).length)return W;const t=W;return Object.assign((e,n,s={})=>t(e,n,C(o,s)),{Minimatch:class extends t.Minimatch{constructor(e,n={}){super(e,C(o,n))}static defaults(e){return t.defaults(C(o,e)).Minimatch}},AST:class extends t.AST{constructor(e,n,s={}){super(e,n,C(o,s))}static fromGlob(e,n={}){return t.AST.fromGlob(e,C(o,n))}},unescape:(e,n={})=>t.unescape(e,C(o,n)),escape:(e,n={})=>t.escape(e,C(o,n)),filter:(e,n={})=>t.filter(e,C(o,n)),defaults:e=>t.defaults(C(o,e)),makeRe:(e,n={})=>t.makeRe(e,C(o,n)),braceExpand:(e,n={})=>t.braceExpand(e,C(o,n)),match:(e,n,s={})=>t.match(e,n,C(o,s)),sep:t.sep,GLOBSTAR:N})};W.defaults=ye;const Ot=(o,t={})=>(Q(o),t.nobrace||!/\{(?:(?!\{).)*\}/.test(o)?[o]:Wt(o));W.braceExpand=Ot;const be=(o,t={})=>new X(o,t).makeRe();W.makeRe=be;const we=(o,t,e={})=>{const n=new X(t,e);return o=o.filter(s=>n.match(s)),n.options.nonull&&!o.length&&o.push(t),o};W.match=we;const gt=/[?*]|[+@!]\(.*?\)|\[|\]/,ve=o=>o.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class X{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){Q(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||xt,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);const n=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let s=this.globParts.map((r,i,h)=>{if(this.isWindows&&this.windowsNoMagicRoot){const a=r[0]===""&&r[1]===""&&(r[2]==="?"||!gt.test(r[2]))&&!gt.test(r[3]),l=/^[a-z]:/i.test(r[0]);if(a)return[...r.slice(0,4),...r.slice(4).map(u=>this.parse(u))];if(l)return[r[0],...r.slice(1).map(u=>this.parse(u))]}return r.map(a=>this.parse(a))});if(this.debug(this.pattern,s),this.set=s.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let n=-1;for(;(n=e.indexOf("**",n+1))!==-1;){let s=n;for(;e[s+1]==="**";)s++;s!==n&&e.splice(n,s-n)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((n,s)=>{const r=n[n.length-1];return s==="**"&&r==="**"?n:s===".."&&r&&r!==".."&&r!=="."&&r!=="**"?(n.pop(),n):(n.push(s),n)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let s=1;ss&&n.splice(s+1,i-s);let h=n[s+1];const a=n[s+2],l=n[s+3];if(h!==".."||!a||a==="."||a===".."||!l||l==="."||l==="..")continue;e=!0,n.splice(s,1);const u=n.slice(0);u[s]="**",t.push(u),s--}if(!this.preserveMultipleSlashes){for(let i=1;ie.length)}partsMatch(t,e,n=!1){let s=0,r=0,i=[],h="";for(;s=2&&(t=this.levelTwoFileOptimize(t)),e.includes(N)?this.#n(t,e,n,s,r):this.#r(t,e,n,s,r)}#n(t,e,n,s,r){const i=e.indexOf(N,r),h=e.lastIndexOf(N),[a,l,u]=n?[e.slice(r,i),e.slice(i+1),[]]:[e.slice(r,i),e.slice(i+1,h),e.slice(h+1)];if(a.length){const j=t.slice(s,s+a.length);if(!this.#r(j,a,n,0,0))return!1;s+=a.length}let f=0;if(u.length){if(u.length+s>t.length)return!1;let j=t.length-u.length;if(this.#r(t,u,n,j,0))f=u.length;else{if(t[t.length-1]!==""||s+u.length===t.length||(j--,!this.#r(t,u,n,j,0)))return!1;f=u.length+1}}if(!l.length){let j=!!f;for(let L=s;L{const l=a.map(u=>{if(u instanceof RegExp)for(const f of u.flags.split(""))s.add(f);return typeof u=="string"?ve(u):u===N?N:u._src});return l.forEach((u,f)=>{const g=l[f+1],b=l[f-1];u!==N||b===N||(b===void 0?g!==void 0&&g!==N?l[f+1]="(?:\\/|"+n+"\\/)?"+g:l[f]=n:g===void 0?l[f-1]=b+"(?:\\/|"+n+")?":g!==N&&(l[f-1]=b+"(?:\\/|\\/"+n+"\\/)"+g,l[f+1]=N))}),l.filter(u=>u!==N).join("/")}).join("|");const[i,h]=t.length>1?["(?:",")"]:["",""];r="^"+i+r+h+"$",this.negate&&(r="^(?!"+r+").+$");try{this.regexp=new RegExp(r,[...s].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;const n=this.options;this.isWindows&&(t=t.split("\\").join("/"));const s=this.slashSplit(t);this.debug(this.pattern,"split",s);const r=this.set;this.debug(this.pattern,"set",r);let i=s[s.length-1];if(!i)for(let h=s.length-2;!i&&h>=0;h--)i=s[h];for(let h=0;h{t[n]=e}),t}function Oe(o,t,e=!1){return e?{data:t,headers:o.headers?xe(o.headers):{},status:o.status,statusText:o.statusText}:t}var et,dt;function Se(){if(dt)return et;dt=1;var o=Mt(),t=function(i){return typeof i=="string"};function e(i,h){for(var a=[],l=0;l=-1&&!h;a--){var l=a>=0?arguments[a]:K.cwd();if(t(l)){if(!l)continue}else throw new TypeError("Arguments to path.resolve must be strings");i=l+"/"+i,h=l.charAt(0)==="/"}return i=e(i.split("/"),!h).join("/"),(h?"/":"")+i||"."},s.normalize=function(i){var h=s.isAbsolute(i),a=i.substr(-1)==="/";return i=e(i.split("/"),!h).join("/"),!i&&!h&&(i="."),i&&a&&(i+="/"),(h?"/":"")+i},s.isAbsolute=function(i){return i.charAt(0)==="/"},s.join=function(){for(var i="",h=0;h=0&&v[S]==="";S--);return E>S?[]:v.slice(E,S+1)}for(var l=a(i.split("/")),u=a(h.split("/")),f=Math.min(l.length,u.length),g=f,b=0;b"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function a(c){return Function.toString.call(c).indexOf("[native code]")!==-1}function l(c,p){return l=Object.setPrototypeOf||function(d,m){return d.__proto__=m,d},l(c,p)}function u(c){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},u(c)}var f="+",g=".",b=(function(c){s(p,c);function p(d){var m;return t(this,p),m=e(this,u(p).call(this,d)),m.name="ObjectPrototypeMutationError",m}return p})(r(Error));nt={set:E,get:w,has:v,hasOwn:function(c,p,d){return this.has(c,p,d||{own:!0})},isIn:S,ObjectPrototypeMutationError:b};function w(c,p){if(o(c)!="object"||c===null||typeof p>"u")return c;if(typeof p=="number")return c[p];try{return j(c,p,function(d,m){return d[m]})}catch{return c}}function v(c,p){var d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(o(c)!="object"||c===null||typeof p>"u")return!1;if(typeof p=="number")return p in c;try{var m=!1;return j(c,p,function(y,O,x,P){if(L(x,P))d.own?m=y.hasOwnProperty(O):m=O in y;else return y&&y[O]}),m}catch{return!1}}function E(c,p,d){if(o(c)!="object"||c===null||typeof p>"u")return c;if(typeof p=="number")return c[p]=d,c[p];try{return j(c,p,function(m,y,O,x){if(m===Reflect.getPrototypeOf({}))throw new b("Attempting to mutate Object.prototype");if(!m[y]){var P=Number.isInteger(Number(O[x+1])),R=O[x+1]===f;P||R?m[y]=[]:m[y]={}}return L(O,x)&&(m[y]=d),m[y]})}catch(m){if(m instanceof b)throw m;return c}}function S(c,p,d){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(o(c)!="object"||c===null||typeof p>"u")return!1;try{var y=!1,O=!1;return j(c,p,function(x,P,R,A){return y=y||x===d||!!x&&x[P]===d,O=L(R,A)&&o(x)==="object"&&P in x,x&&x[P]}),m.validPath?y&&O:y}catch{return!1}}function j(c,p){for(var d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},m=p.split(g),y=m.length,O=function(R){var A=m[R];if(!c)return{v:void 0};if(A===f){if(Array.isArray(c))return{v:c.map(function(I,_){var z=m.slice(R+1);return z.length>0?j(I,z.join(g),d):d(c,_,m,R)})};var k=m.slice(0,R).join(g);throw new Error("Object at wildcard (".concat(k,") is not an array"))}else c=d(c,A,m,R)},x=0;x${e.datetime.toISOString()}`:"",r=await Rt.customRequest(n,{method:"REPORT",data:`
-			
-				${e.limit??Re}
-				${e.offset||0}
-				${s}
-			`,...e}),i=await r.text(),h=await jt(i),a=Ne(h,!0);return Oe(r,a,!0)}function Ne(o,t=!1){const{multistatus:{response:e}}=o;return e.map(n=>{const s=n.propstat.prop;return Pe(s,s.id.toString(),t)})}export{Re as D,Pt as a,Rt as c,Te as g};
-//# sourceMappingURL=GetComments-DzpQCqQO.chunk.mjs.map
diff --git a/dist/GetComments-DzpQCqQO.chunk.mjs.map b/dist/GetComments-DzpQCqQO.chunk.mjs.map
deleted file mode 100644
index 270118aa8a0b1..0000000000000
--- a/dist/GetComments-DzpQCqQO.chunk.mjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"GetComments-DzpQCqQO.chunk.mjs","sources":["../build/frontend/apps/comments/src/utils/davUtils.ts","../build/frontend/apps/comments/src/services/DavClient.ts","../node_modules/balanced-match/index.js","../node_modules/webdav/node_modules/brace-expansion/index.js","../node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","../node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","../node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","../node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","../node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","../node_modules/webdav/node_modules/minimatch/dist/esm/index.js","../node_modules/webdav/dist/node/tools/headers.js","../node_modules/webdav/dist/node/response.js","../node_modules/path-posix/index.js","../node_modules/nested-property/dist/nested-property.js","../node_modules/webdav/dist/node/tools/dav.js","../build/frontend/apps/comments/src/services/GetComments.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getClient } from '@nextcloud/files/dav'\nimport { getRootPath } from '../utils/davUtils.ts'\n\nconst client = getClient(getRootPath())\n\nexport default client\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nvar EXPANSION_MAX = 100000\n\n// `EXPANSION_MAX` caps the *number* of expansions, but not their length. An\n// input like `'{a,b}'.repeat(1500)` stays under that count - its output is\n// truncated to 100k results - while making every result ~1500 characters\n// long. The result set, and the intermediate arrays built while combining\n// brace sets, then grow large enough to exhaust memory and crash the process\n// (CVE-2026-14257). `EXPANSION_MAX_LENGTH` bounds the total number of\n// characters the accumulator may hold at any point, so memory stays flat no\n// matter how many brace groups are chained. The limit sits well above any\n// realistic expansion (100k results hitting `EXPANSION_MAX` measure ~1M\n// characters) so legitimate input is unaffected.\nvar EXPANSION_MAX_LENGTH = 4000000\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str, options) {\n  if (!str)\n    return [];\n\n  options = options || {};\n  var max = options.max == null ? EXPANSION_MAX : options.max;\n  var maxLength = options.maxLength == null ? EXPANSION_MAX_LENGTH : options.maxLength;\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), max, maxLength, true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\n// Build `{ acc[a] + pre + values[v] }` for every combination, capping the\n// number of results at `max` and the total number of characters at `maxLength`.\n// This is the one place output grows, so bounding it here keeps the single\n// accumulator - and therefore memory - flat regardless of how many brace groups\n// are combined (CVE-2026-14257).\nfunction combine(\n  acc,\n  pre,\n  values,\n  max,\n  maxLength,\n  dropEmpties\n) {\n  var out = []\n  var length = 0\n  for (var a = 0; a < acc.length; a++) {\n    for (var v = 0; v < values.length; v++) {\n      if (out.length >= max) return out\n      var expansion = acc[a] + pre + values[v]\n      // Bash drops empty results at the top level. Skip them before they count\n      // against `max`, so `max` bounds the number of *kept* results.\n      if (dropEmpties && !expansion) continue\n      if (length + expansion.length > maxLength) return out\n      out.push(expansion)\n      length += expansion.length\n    }\n  }\n  return out\n}\n\n// The expansion values of a single numeric (`1..5`) or alphabetic (`a..e..2`)\n// sequence body.\nfunction expandSequence(\n  body,\n  isAlphaSequence,\n  max,\n  maxLength\n) {\n  var n = body.split(/\\.\\./)\n  var N = []\n  // A sequence body always splits into two or three parts, but the compiler\n  // can't know that.\n  /* c8 ignore start */\n  if (n[0] === undefined || n[1] === undefined) {\n    return N\n  }\n  /* c8 ignore stop */\n  var x = numeric(n[0])\n  var y = numeric(n[1])\n  var width = Math.max(n[0].length, n[1].length)\n  var incr =\n    n.length === 3 && n[2] !== undefined ?\n      Math.max(Math.abs(numeric(n[2])), 1)\n    : 1\n  var test = lte\n  var reverse = y < x\n  if (reverse) {\n    incr *= -1\n    test = gte\n  }\n  var pad = n.some(isPadded)\n\n  var length = 0\n  for (var i = x; test(i, y) && N.length < max; i += incr) {\n    var c\n    if (isAlphaSequence) {\n      c = String.fromCharCode(i)\n      if (c === '\\\\') {\n        c = ''\n      }\n    } else {\n      c = String(i)\n      if (pad) {\n        var need = width - c.length\n        if (need > 0) {\n          var z = new Array(need + 1).join('0')\n          if (i < 0) {\n            c = '-' + z + c.slice(1)\n          } else {\n            c = z + c\n          }\n        }\n      }\n    }\n    if (length + c.length > maxLength) break\n    N.push(c)\n    length += c.length\n  }\n  return N\n}\n\nfunction expand(\n  str,\n  max,\n  maxLength,\n  isTop\n) {\n  // Consume the string's top-level brace groups left to right, threading a\n  // running set of combined prefixes (`acc`). Expanding the tail iteratively -\n  // rather than recursing on `m.post` once per group - keeps the native stack\n  // depth constant, so deeply chained input (`'{a,b}'.repeat(3000)`) can no\n  // longer overflow the stack, and leaves a single accumulator whose size\n  // `maxLength` bounds directly (CVE-2026-14257).\n  var acc = ['']\n\n  // Bash drops empty results, but only when the *first* top-level group is a\n  // comma set - a sequence like `{a..\\}` may legitimately yield ''. The drop\n  // is on the final strings, so it is applied to whichever `combine` produces\n  // them (the one with no brace set left in the tail).\n  var dropEmpties = false\n  var firstGroup = true\n\n  for (;;) {\n    const m = balanced('{', '}', str)\n\n    // No brace set left: the rest of the string is literal.\n    if (!m) {\n      return combine(acc, str, [''], max, maxLength, dropEmpties)\n    }\n\n    // no need to expand pre, since it is guaranteed to be free of brace-sets\n    const pre = m.pre\n\n    if (/\\$$/.test(pre)) {\n      acc = combine(\n        acc,\n        pre + '{' + m.body + '}',\n        [''],\n        max,\n        maxLength,\n        dropEmpties && !m.post.length\n      )\n      firstGroup = false\n      if (!m.post.length) break\n      str = m.post\n      continue\n    }\n\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        isTop = true;\n        continue;\n      }\n      // Nothing here expands, so the whole remaining string is literal.\n      return combine(\n        acc,\n        pre + '{' + m.body + '}' + m.post,\n        [''],\n        max,\n        maxLength,\n        dropEmpties\n      )\n    }\n\n    if (firstGroup) {\n      dropEmpties = isTop && !isSequence\n      firstGroup = false\n    }\n\n    var values;\n    if (isSequence) {\n      values = expandSequence(m.body, isAlphaSequence, max, maxLength);\n    } else {\n      var n = parseCommaParts(m.body);\n      if (n.length === 1 && n[0] !== undefined) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], max, maxLength, false).map(embrace);\n        //XXX is this necessary? Can't seem to hit it in tests.\n        /* c8 ignore start */\n        if (n.length === 1) {\n          acc = combine(\n            acc,\n            pre + n[0],\n            [''],\n            max,\n            maxLength,\n            dropEmpties && !m.post.length\n          )\n          if (!m.post.length) break\n          str = m.post\n          continue\n        }\n        /* c8 ignore stop */\n      }\n\n      // Values that `combine` is going to drop as empty produce no result, so\n      // they must not count against `max` - otherwise `{a,,b}` with `max: 2`\n      // would stop at `['a', '']` and yield one result instead of two. Skipping\n      // them outright keeps `values` bounded while leaving `max` a bound on\n      // *kept* results.\n      var dropsEmpties = dropEmpties && !m.post.length && !pre\n      for (var d = 0; dropsEmpties && d < acc.length; d++) {\n        if (acc[d]) {\n          dropsEmpties = false\n        }\n      }\n\n      values = []\n      var valuesLength = 0\n      outer: for (var j = 0; j < n.length; j++) {\n        var expanded = expand(n[j], max, maxLength, false)\n        for (var k = 0; k < expanded.length; k++) {\n          var v = expanded[k]\n          if (dropsEmpties && !v) continue\n          if (values.length >= max || valuesLength + v.length > maxLength) {\n            break outer\n          }\n          values.push(v)\n          valuesLength += v.length\n        }\n      }\n    }\n\n    acc = combine(acc, pre, values, max, maxLength, dropEmpties && !m.post.length)\n    if (!m.post.length) break\n    str = m.post\n  }\n\n  return acc\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\nconst adoptionMap = new Map([\n    ['!', ['@']],\n    ['?', ['?', '@']],\n    ['@', ['@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@']],\n]);\nconst adoptionWithSpaceMap = new Map([\n    ['!', ['?']],\n    ['@', ['?']],\n    ['+', ['?', '*']],\n]);\nconst adoptionAnyMap = new Map([\n    ['!', ['?', '@']],\n    ['?', ['?', '@']],\n    ['@', ['?', '@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@', '?', '*']],\n]);\nconst usurpMap = new Map([\n    ['!', new Map([['!', '@']])],\n    ['?', new Map([['*', '*'], ['+', '*']])],\n    ['@', new Map([['!', '!'], ['?', '?'], ['@', '@'], ['*', '*'], ['+', '+']])],\n    ['+', new Map([['?', '*'], ['*', '*']])],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof _a && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof _a && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new _a(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt, extDepth) {\n        const maxDepth = opt.maxExtglobRecursion ?? 2;\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                const doRecurse = !opt.noext &&\n                    isExtglobType(c) &&\n                    str.charAt(i) === '(' &&\n                    extDepth <= maxDepth;\n                if (doRecurse) {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new _a(c, ast);\n                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new _a(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            const doRecurse = isExtglobType(c) &&\n                str.charAt(i) === '(' &&\n                /* c8 ignore start - the maxDepth is sufficient here */\n                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n            /* c8 ignore stop */\n            if (doRecurse) {\n                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n                part.push(acc);\n                acc = '';\n                const ext = new _a(c, part);\n                part.push(ext);\n                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new _a(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    #canAdoptWithSpace(child) {\n        return this.#canAdopt(child, adoptionWithSpaceMap);\n    }\n    #canAdopt(child, map = adoptionMap) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canAdoptType(gc.type, map);\n    }\n    #canAdoptType(c, map = adoptionAnyMap) {\n        return !!map.get(this.type)?.includes(c);\n    }\n    #adoptWithSpace(child, index) {\n        const gc = child.#parts[0];\n        const blank = new _a(null, gc, this.options);\n        blank.#parts.push('');\n        gc.push(blank);\n        this.#adopt(child, index);\n    }\n    #adopt(child, index) {\n        const gc = child.#parts[0];\n        this.#parts.splice(index, 1, ...gc.#parts);\n        for (const p of gc.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.#toString = undefined;\n    }\n    #canUsurpType(c) {\n        const m = usurpMap.get(this.type);\n        return !!(m?.has(c));\n    }\n    #canUsurp(child) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null ||\n            this.#parts.length !== 1) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canUsurpType(gc.type);\n    }\n    #usurp(child) {\n        const m = usurpMap.get(this.type);\n        const gc = child.#parts[0];\n        const nt = m?.get(gc.type);\n        /* c8 ignore start - impossible */\n        if (!nt)\n            return false;\n        /* c8 ignore stop */\n        this.#parts = gc.#parts;\n        for (const p of this.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.type = nt;\n        this.#toString = undefined;\n        this.#emptyExt = false;\n    }\n    #flatten() {\n        if (!isExtglobAST(this)) {\n            for (const p of this.#parts) {\n                if (typeof p === 'object')\n                    p.#flatten();\n            }\n        }\n        else {\n            let iterations = 0;\n            let done = false;\n            do {\n                done = true;\n                for (let i = 0; i < this.#parts.length; i++) {\n                    const c = this.#parts[i];\n                    if (typeof c === 'object') {\n                        c.#flatten();\n                        if (this.#canAdopt(c)) {\n                            done = false;\n                            this.#adopt(c, i);\n                        }\n                        else if (this.#canAdoptWithSpace(c)) {\n                            done = false;\n                            this.#adoptWithSpace(c, i);\n                        }\n                        else if (this.#canUsurp(c)) {\n                            done = false;\n                            this.#usurp(c);\n                        }\n                    }\n                }\n            } while (!done && ++iterations < 10);\n        }\n        this.#toString = undefined;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new _a(null, undefined, options);\n        _a.#parseAST(pattern, ast, 0, options, 0);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this) {\n            this.#flatten();\n            this.#fillNegs();\n        }\n        if (!isExtglobAST(this)) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? _a.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            const me = this;\n            me.#parts = [s];\n            me.type = null;\n            me.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        // multiple stars that aren't globstars coalesce into one *\n        let inStar = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                inStar = false;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    inStar = false;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (inStar)\n                    continue;\n                inStar = true;\n                re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n                hasMagic = true;\n                continue;\n            }\n            else {\n                inStar = false;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    maxGlobstarRecursion;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(GLOBSTAR);\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0))\n                return false;\n            fileIndex += head.length;\n        }\n        let fileTailMatch = 0;\n        if (tail.length) {\n            if (tail.length + fileIndex > file.length)\n                return false;\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0))\n                    return false;\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return partial || sawSome;\n        }\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false)\n                    return sub;\n            }\n            const f = file[fileIndex];\n            if (f === '.' || f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex, pi = patternIndex,\n            fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            /* c8 ignore start */\n            if (p === false || p === GLOBSTAR)\n                return false;\n            /* c8 ignore stop */\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        if (fi === fl && pi === pl) {\n            return true;\n        }\n        else if (fi === fl) {\n            return partial;\n        }\n        else if (pi === pl) {\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","export function convertResponseHeaders(headers) {\n    const output = {};\n    headers.forEach((value, key) => {\n        output[key] = value;\n    });\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\n// @ts-expect-error Types declare default export but runtime provides named export\nimport { EntityDecoder } from \"@nodable/entities\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction stripPrefix(name) {\n    const colonIdx = name.indexOf(\":\");\n    return colonIdx === -1 ? name : name.slice(colonIdx + 1);\n}\nfunction isXmlnsAttribute(name) {\n    return name === \"xmlns\" || name.startsWith(\"xmlns:\");\n}\n// The parser only keeps namespace prefixes on tags in Clark mode, so without\n// this the jPaths would be `d:propstat.d:prop.d:displayname` there and bare\n// everywhere else. Strip per segment (rather than off the joined path) as\n// prefixes and local names may both contain dots.\nfunction toJPathString(jPath) {\n    if (typeof jPath === \"string\") {\n        return jPath;\n    }\n    return jPath.toArray().map(stripPrefix).join(\".\");\n}\nfunction getParser({ attributeNamePrefix, attributeParsers, clarkNotationProps, entityDecoder: entityDecoderOptions, tagParsers }) {\n    const parserOptions = {\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: !clarkNotationProps,\n        jPath: false,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(attrName, attrValue, jPath) {\n            // Clark mode keeps the namespace declarations, which the default\n            // mode discards. They are consumed by the walker and removed from\n            // the result, so parsers never get to see them in either mode.\n            if (attributeParsers.length === 0 || isXmlnsAttribute(attrName)) {\n                return attrValue;\n            }\n            const pathStr = toJPathString(jPath);\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(pathStr, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid processor\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            if (tagParsers.length === 0) {\n                return tagValue;\n            }\n            const pathStr = toJPathString(jPath);\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(pathStr, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid processor\n                }\n            }\n            return tagValue;\n        }\n    };\n    if (entityDecoderOptions) {\n        parserOptions.entityDecoder = new EntityDecoder({\n            limit: {\n                maxTotalExpansions: entityDecoderOptions.limit?.maxTotalExpansions ?? 0,\n                maxExpandedLength: entityDecoderOptions.limit?.maxExpandedLength ?? 0\n            }\n        });\n    }\n    return new XMLParser(parserOptions);\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n// Structural keys of the WebDAV multistatus envelope (RFC 4918). When\n// `clarkNotationProps` is enabled the parser keeps namespace prefixes on\n// every tag, so these structural keys arrive prefixed (e.g. `d:multistatus`)\n// and have to be renamed back to their bare local name so the existing\n// `normaliseResult` continues to work and `DAVResult` keeps its shape.\n//\n// Keep this list in sync with the structural fields exposed on `DAVResult`,\n// `DAVResultResponse`, `DAVResultPropstatResponse`, `DAVResultStatusResponse`\n// and `DAVPropStat` in `source/types.ts`. If a new structural field is added\n// to those interfaces, it must be added here too or the prefixed variant\n// will leak through into the result.\nconst STRUCTURAL_KEYS = new Set([\n    \"multistatus\",\n    \"response\",\n    \"propstat\",\n    \"prop\",\n    \"status\",\n    \"href\",\n    \"responsedescription\"\n]);\nfunction isPlainObject(value) {\n    return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n/**\n * Transform a parsed (prefix-preserving) tree in place to:\n *\n *  1. Rename structural keys (`multistatus`/`response`/...) back to their\n *     bare local names so `DAVResult`'s shape is preserved.\n *  2. Rewrite every key inside each `` to Clark notation\n *     `{namespaceURI}localName`, resolving the namespace against the xmlns\n *     scope built up along the way (declarations on any of the enclosing\n *     elements as well as on the property element itself). A property whose\n *     prefix has no URI in scope keeps its bare local name.\n *  3. Drop the xmlns declarations once they are resolved, so the result\n *     carries the same shape the default (prefix-stripping) mode produces.\n *\n * Only the direct children of `` are rewritten: the keys of any\n * nested elements below them are left alone and keep whichever prefix the\n * server serialised them with.\n */\nfunction applyClarkNotation(root, attrPrefix) {\n    if (!isPlainObject(root) && !Array.isArray(root))\n        return;\n    const xmlnsKey = `${attrPrefix}xmlns`;\n    const xmlnsPrefixedKey = `${xmlnsKey}:`;\n    const xmlnsPrefixedKeyLen = xmlnsPrefixedKey.length;\n    const TEXT_KEY = \"text\";\n    const EMPTY_SCOPE = new Map();\n    function isXmlnsAttr(key) {\n        return (key === xmlnsKey ||\n            (key.length > xmlnsPrefixedKeyLen && key.startsWith(xmlnsPrefixedKey)));\n    }\n    // Return an extended scope if `obj` declares any xmlns; otherwise reuse\n    // the parent scope to avoid allocating a Map for every node.\n    function extendScope(obj, parent) {\n        let scope = null;\n        for (const key of Object.keys(obj)) {\n            if (key === xmlnsKey) {\n                if (!scope)\n                    scope = new Map(parent);\n                scope.set(\"\", obj[key]);\n            }\n            else if (key.length > xmlnsPrefixedKeyLen && key.startsWith(xmlnsPrefixedKey)) {\n                if (!scope)\n                    scope = new Map(parent);\n                scope.set(key.slice(xmlnsPrefixedKeyLen), obj[key]);\n            }\n        }\n        return scope ?? parent;\n    }\n    // Drop the namespace declarations once they have been resolved, so a prop\n    // value ends up with the same shape it has in the default (prefix-\n    // stripping) mode: bare text for a simple element, an empty string for an\n    // empty one, and `{ text, \"@attr\" }` for one carrying other attributes.\n    // The keys of nested children are NOT rewritten to Clark notation, since\n    // the walker only resolves namespaces at the `` child level; those\n    // keep the prefix the server happened to serialise them with.\n    function cleanPropValue(raw) {\n        if (Array.isArray(raw))\n            return raw.map(cleanPropValue);\n        if (!isPlainObject(raw))\n            return raw;\n        const out = {};\n        for (const key of Object.keys(raw)) {\n            if (isXmlnsAttr(key))\n                continue;\n            out[key] = cleanPropValue(raw[key]);\n        }\n        const keys = Object.keys(out);\n        if (keys.length === 0)\n            return \"\";\n        if (keys.length === 1 && keys[0] === TEXT_KEY)\n            return out[TEXT_KEY];\n        return out;\n    }\n    function emitClarkForChild(rawKey, rawValue, scope, out) {\n        const colonIdx = rawKey.indexOf(\":\");\n        const prefix = colonIdx === -1 ? \"\" : rawKey.slice(0, colonIdx);\n        const local = colonIdx === -1 ? rawKey : rawKey.slice(colonIdx + 1);\n        // A property element may declare its own namespaces, either as a\n        // default `xmlns=\"...\"` or bound to the very prefix it uses, so its\n        // attributes have to be folded into the scope before resolving. A\n        // prefix with no URI in scope falls back to the null namespace; that\n        // yields a bare `local` key rather than throwing or losing the data.\n        const resolveNs = (value) => {\n            const ownScope = isPlainObject(value) ? extendScope(value, scope) : scope;\n            return ownScope.get(prefix) ?? \"\";\n        };\n        const assign = (ns, value) => {\n            const key = ns ? `{${ns}}${local}` : local;\n            const existing = out[key];\n            if (existing === undefined) {\n                out[key] = value;\n            }\n            else if (Array.isArray(existing)) {\n                existing.push(value);\n            }\n            else {\n                out[key] = [existing, value];\n            }\n        };\n        if (Array.isArray(rawValue)) {\n            for (const item of rawValue) {\n                assign(resolveNs(item), cleanPropValue(item));\n            }\n            return;\n        }\n        assign(resolveNs(rawValue), cleanPropValue(rawValue));\n    }\n    function rewritePropToClark(propObj, parentScope) {\n        const scope = extendScope(propObj, parentScope);\n        const out = {};\n        for (const key of Object.keys(propObj)) {\n            if (isXmlnsAttr(key))\n                continue;\n            emitClarkForChild(key, propObj[key], scope, out);\n        }\n        return out;\n    }\n    function rewriteProp(value, parentScope) {\n        if (!isPlainObject(value))\n            return value;\n        const rewritten = rewritePropToClark(value, parentScope);\n        return Object.keys(rewritten).length === 0 ? \"\" : rewritten;\n    }\n    // Returns the (possibly replaced) node, so that an element left empty by\n    // dropping its namespace declarations collapses to the empty string the\n    // default mode would have produced for it.\n    function walk(node, scope) {\n        if (Array.isArray(node)) {\n            for (let index = 0; index < node.length; index += 1) {\n                node[index] = walk(node[index], scope);\n            }\n            return node;\n        }\n        if (!isPlainObject(node))\n            return node;\n        const childScope = extendScope(node, scope);\n        for (const key of Object.keys(node)) {\n            // The declarations have been folded into the scope above and are\n            // of no further use; the default mode discards them as well.\n            if (isXmlnsAttr(key)) {\n                delete node[key];\n                continue;\n            }\n            const colonIdx = key.indexOf(\":\");\n            const ln = colonIdx === -1 ? key : key.slice(colonIdx + 1);\n            const value = node[key];\n            // Rename structural keys to bare local name.\n            let actualKey = key;\n            if (STRUCTURAL_KEYS.has(ln) && ln !== key) {\n                delete node[key];\n                node[ln] = value;\n                actualKey = ln;\n            }\n            if (ln === \"prop\") {\n                node[actualKey] = Array.isArray(value)\n                    ? value.map(item => rewriteProp(item, childScope))\n                    : rewriteProp(value, childScope);\n                // Stop here; the prop content was rewritten in one shot.\n            }\n            else {\n                node[actualKey] = walk(value, childScope);\n            }\n        }\n        return Object.keys(node).length === 0 ? \"\" : node;\n    }\n    walk(root, EMPTY_SCOPE);\n}\n/**\n * Parse an XML response from a WebDAV service, converting it to an internal\n * DAV result.\n *\n * When `context.clarkNotationProps` is `true`, every property key inside\n * each `propstat.prop` is rewritten to Clark notation\n * `{namespaceURI}localName`. This lets consumers disambiguate properties\n * that share a local name across different XML namespaces (RFC 4918) and\n * uses a single canonical key per property regardless of how the server\n * serialised the namespace (prefix or inline default xmlns).\n *\n * The structural shape of `DAVResult` (`multistatus`/`response`/`propstat`/\n * `prop`/`status`/`href`) is unaffected by this option; only the keys\n * inside each `propstat.prop` change, and only for the direct children of\n * `` (nested elements keep the prefix the server used). Downstream\n * helpers like `prepareFileFromProps`, `parseStat` and `parseSearch` assume\n * bare prop keys and will not work with Clark-notation ones; consumers that\n * opt in are expected to address the Clark keys on their side.\n *\n * `context.tagParsers` and `context.attributeParsers` are unaffected as\n * well: they are handed the same jPaths, without namespace prefixes, and\n * are not invoked for the xmlns declarations in either mode.\n *\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        if (context.clarkNotationProps) {\n            applyClarkNotation(result, context.attributeNamePrefix ?? \"@\");\n        }\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { DAVResult, FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { parseXML } from 'webdav'\nimport { processResponsePayload } from 'webdav/dist/node/response.js'\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js'\nimport client from './DavClient.ts'\n\nexport const DEFAULT_LIMIT = 20\n\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options: { offset: number, limit?: number, datetime?: Date }) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst datetime = options.datetime ? `${options.datetime.toISOString()}` : ''\n\tconst response = await client.customRequest(resourcePath, {\n\t\tmethod: 'REPORT',\n\t\tdata: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n\t\t...options,\n\t})\n\n\tconst responseData = await response.text()\n\tconst result = await parseXML(responseData)\n\tconst stat = getDirectoryFiles(result, true)\n\t// https://github.com/perry-mitchell/webdav-client/issues/339\n\treturn processResponsePayload(response, stat, true) as ResponseDataDetailed\n}\n\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result - the DAV response result\n * @param isDetailed - whether to return detailed file information\n */\nfunction getDirectoryFiles(\n\tresult: DAVResult,\n\tisDetailed = false,\n): Array {\n\t// Extract the response items (directory contents)\n\tconst {\n\t\tmultistatus: { response: responseItems },\n\t} = result\n\n\t// Map all items to a consistent output structure (results)\n\treturn responseItems.map((item) => {\n\t\t// Each item should contain a stat object\n\t\tconst props = item.propstat!.prop!\n\n\t\treturn prepareFileFromProps(props, props.id!.toString(), isDetailed)\n\t})\n}\n"],"names":["getRootPath","generateRemoteUrl","client","getClient","balancedMatch","balanced","a","b","str","maybeMatch","r","range","reg","m","begs","beg","left","right","result","ai","bi","i","require$$0","braceExpansion","expandTop","escSlash","escOpen","escClose","escComma","escPeriod","EXPANSION_MAX","EXPANSION_MAX_LENGTH","numeric","escapeBraces","unescapeBraces","parseCommaParts","parts","pre","body","post","p","postParts","options","max","maxLength","expand","embrace","isPadded","el","lte","y","gte","combine","acc","values","dropEmpties","out","length","v","expansion","expandSequence","isAlphaSequence","n","N","x","width","incr","test","reverse","pad","c","need","z","isTop","firstGroup","isNumericSequence","isSequence","isOptions","dropsEmpties","d","valuesLength","outer","j","expanded","k","MAX_PATTERN_LENGTH","assertValidPattern","pattern","posixClasses","braceEscape","s","regexpEscape","rangesToString","ranges","parseClass","glob","position","pos","negs","sawStart","uflag","escaping","negate","endPos","rangeStart","WHILE","cls","unip","u","neg","sranges","snegs","unescape","windowsPathsNoEscape","_a","types","isExtglobType","isExtglobAST","adoptionMap","adoptionWithSpaceMap","adoptionAnyMap","usurpMap","startNoTraversal","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","#root","#hasMagic","#uflag","#parts","#parent","#parentIndex","#negs","#filledNegs","#options","#toString","#emptyExt","type","parent","#fillNegs","pp","part","ret","pl","#parseAST","ast","opt","extDepth","maxDepth","inBrace","braceStart","braceNeg","ext","#canAdoptType","depthAdd","#canAdoptWithSpace","child","#canAdopt","map","gc","#adoptWithSpace","index","blank","#adopt","#canUsurpType","#canUsurp","#usurp","nt","#flatten","iterations","done","re","hasMagic","flags","allowDot","dot","noEmpty","src","_","#parseGlob","start","aps","needNoTrav","needNoDot","end","repeated","#partsToRegExp","me","bodyDotAllowed","final","close","_hasMagic","inStar","needUflag","consumed","magic","escape","minimatch","Minimatch","starDotExtRE","starDotExtTest","f","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","$0","noext","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","len","defaultPlatform","process","define_process_env_default","path","sep","GLOBSTAR","twoStarDot","twoStarNoDot","filter","defaults","def","orig","list","braceExpand","makeRe","match","mm","globMagic","args","rawGlobParts","set","__","isUNC","isDrive","ss","globParts","optimizationLevel","gs","prev","didSomething","dd","gss","next","p2","other","splin","matched","emptyGSMatch","which","negateOffset","file","partial","fileStartIndex","patternStartIndex","fileDrive","fileUNC","patternDrive","patternUNC","fdi","pdi","fd","pd","#matchGlobstar","#matchOne","fileIndex","patternIndex","firstgs","lastgs","head","tail","fileHead","fileTailMatch","tailStart","sawSome","bodySegments","currentBody","nonGsParts","nonGsPartsSums","fileLength","#matchGlobStarBodySections","bodyIndex","globStarDepth","sawTail","bs","after","sub","fi","pi","fl","hit","fastTest","twoStar","open","ff","filename","convertResponseHeaders","headers","output","value","key","processResponsePayload","response","data","isDetailed","util","isString","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","segment","from","to","trim","arr","fromParts","toParts","samePartsLength","outputParts","root","dir","pathObject","base","pathString","allParts","pathPosix","_typeof","obj","_classCallCheck","instance","Constructor","_possibleConstructorReturn","self","call","_assertThisInitialized","_inherits","subClass","superClass","_setPrototypeOf","_wrapNativeSuper","Class","_cache","_isNativeFunction","Wrapper","_construct","_getPrototypeOf","Parent","_isNativeReflectConstruct","fn","o","ARRAY_WILDCARD","PATH_DELIMITER","ObjectPrototypeMutationError","_Error","params","_this","nestedProperty","setNestedProperty","getNestedProperty","hasNestedProperty","object","property","isInNestedProperty","traverse","currentObject","currentProperty","has","segments","isLastSegment","nextPropIsNumber","nextPropIsArrayWildcard","err","objectInPath","isIn","pathExists","callback","_loop","idx","currentSegment","remainingSegments","pathToHere","_ret","PropertyType","prepareFileFromProps","props","lastMod","rawSize","resourceType","mimeType","etag","stat","DEFAULT_LIMIT","getComments","resourceId","resourcePath","datetime","responseData","parseXML","getDirectoryFiles","responseItems","item"],"mappings":"gMAUA,SAASA,IAAc,CACtB,OAAOC,GAAkB,cAAc,CACxC,CCJA,MAAMC,GAASC,GAAUH,GAAA,CAAa,6CCPtCI,EAAiBC,EACjB,SAASA,EAASC,EAAGC,EAAGC,EAAK,CACvBF,aAAa,SAAQA,EAAIG,EAAWH,EAAGE,CAAG,GAC1CD,aAAa,SAAQA,EAAIE,EAAWF,EAAGC,CAAG,GAE9C,IAAIE,EAAIC,EAAML,EAAGC,EAAGC,CAAG,EAEvB,OAAOE,GAAK,CACV,MAAOA,EAAE,CAAC,EACV,IAAKA,EAAE,CAAC,EACR,IAAKF,EAAI,MAAM,EAAGE,EAAE,CAAC,CAAC,EACtB,KAAMF,EAAI,MAAME,EAAE,CAAC,EAAIJ,EAAE,OAAQI,EAAE,CAAC,CAAC,EACrC,KAAMF,EAAI,MAAME,EAAE,CAAC,EAAIH,EAAE,MAAM,EAEnC,CAEA,SAASE,EAAWG,EAAKJ,EAAK,CAC5B,IAAIK,EAAIL,EAAI,MAAMI,CAAG,EACrB,OAAOC,EAAIA,EAAE,CAAC,EAAI,IACpB,CAEAR,EAAS,MAAQM,EACjB,SAASA,EAAML,EAAGC,EAAGC,EAAK,CACxB,IAAIM,EAAMC,EAAKC,EAAMC,EAAOC,EACxBC,EAAKX,EAAI,QAAQF,CAAC,EAClBc,EAAKZ,EAAI,QAAQD,EAAGY,EAAK,CAAC,EAC1BE,EAAIF,EAER,GAAIA,GAAM,GAAKC,EAAK,EAAG,CACrB,GAAGd,IAAIC,EACL,MAAO,CAACY,EAAIC,CAAE,EAKhB,IAHAN,EAAO,CAAA,EACPE,EAAOR,EAAI,OAEJa,GAAK,GAAK,CAACH,GACZG,GAAKF,GACPL,EAAK,KAAKO,CAAC,EACXF,EAAKX,EAAI,QAAQF,EAAGe,EAAI,CAAC,GAChBP,EAAK,QAAU,EACxBI,EAAS,CAAEJ,EAAK,IAAG,EAAIM,CAAE,GAEzBL,EAAMD,EAAK,IAAG,EACVC,EAAMC,IACRA,EAAOD,EACPE,EAAQG,GAGVA,EAAKZ,EAAI,QAAQD,EAAGc,EAAI,CAAC,GAG3BA,EAAIF,EAAKC,GAAMD,GAAM,EAAIA,EAAKC,EAG5BN,EAAK,SACPI,EAAS,CAAEF,EAAMC,CAAK,EAE5B,CAEE,OAAOC,CACT,qDC7DA,IAAIb,EAAWiB,GAAA,EAEfC,EAAiBC,EAEjB,IAAIC,EAAW,UAAU,KAAK,OAAM,EAAG,KACnCC,EAAU,SAAS,KAAK,OAAM,EAAG,KACjCC,EAAW,UAAU,KAAK,OAAM,EAAG,KACnCC,EAAW,UAAU,KAAK,OAAM,EAAG,KACnCC,EAAY,WAAW,KAAK,OAAM,EAAG,KAErCC,EAAgB,IAYhBC,EAAuB,IAE3B,SAASC,EAAQxB,EAAK,CACpB,OAAO,SAASA,EAAK,EAAE,GAAKA,EACxB,SAASA,EAAK,EAAE,EAChBA,EAAI,WAAW,CAAC,CACtB,CAEA,SAASyB,EAAazB,EAAK,CACzB,OAAOA,EAAI,MAAM,MAAM,EAAE,KAAKiB,CAAQ,EAC3B,MAAM,KAAK,EAAE,KAAKC,CAAO,EACzB,MAAM,KAAK,EAAE,KAAKC,CAAQ,EAC1B,MAAM,KAAK,EAAE,KAAKC,CAAQ,EAC1B,MAAM,KAAK,EAAE,KAAKC,CAAS,CACxC,CAEA,SAASK,EAAe1B,EAAK,CAC3B,OAAOA,EAAI,MAAMiB,CAAQ,EAAE,KAAK,IAAI,EACzB,MAAMC,CAAO,EAAE,KAAK,GAAG,EACvB,MAAMC,CAAQ,EAAE,KAAK,GAAG,EACxB,MAAMC,CAAQ,EAAE,KAAK,GAAG,EACxB,MAAMC,CAAS,EAAE,KAAK,GAAG,CACtC,CAMA,SAASM,EAAgB3B,EAAK,CAC5B,GAAI,CAACA,EACH,MAAO,CAAC,EAAE,EAEZ,IAAI4B,EAAQ,CAAA,EACRvB,EAAIR,EAAS,IAAK,IAAKG,CAAG,EAE9B,GAAI,CAACK,EACH,OAAOL,EAAI,MAAM,GAAG,EAEtB,IAAI6B,EAAMxB,EAAE,IACRyB,EAAOzB,EAAE,KACT0B,EAAO1B,EAAE,KACT2B,EAAIH,EAAI,MAAM,GAAG,EAErBG,EAAEA,EAAE,OAAO,CAAC,GAAK,IAAMF,EAAO,IAC9B,IAAIG,EAAYN,EAAgBI,CAAI,EACpC,OAAIA,EAAK,SACPC,EAAEA,EAAE,OAAO,CAAC,GAAKC,EAAU,MAAK,EAChCD,EAAE,KAAK,MAAMA,EAAGC,CAAS,GAG3BL,EAAM,KAAK,MAAMA,EAAOI,CAAC,EAElBJ,CACT,CAEA,SAASZ,EAAUhB,EAAKkC,EAAS,CAC/B,GAAI,CAAClC,EACH,MAAO,CAAA,EAETkC,EAAUA,GAAW,CAAA,EACrB,IAAIC,EAAMD,EAAQ,KAAO,KAAOZ,EAAgBY,EAAQ,IACpDE,EAAYF,EAAQ,WAAa,KAAOX,EAAuBW,EAAQ,UAQ3E,OAAIlC,EAAI,OAAO,EAAG,CAAC,IAAM,OACvBA,EAAM,SAAWA,EAAI,OAAO,CAAC,GAGxBqC,EAAOZ,EAAazB,CAAG,EAAGmC,EAAKC,EAAW,EAAI,EAAE,IAAIV,CAAc,CAC3E,CAEA,SAASY,EAAQtC,EAAK,CACpB,MAAO,IAAMA,EAAM,GACrB,CACA,SAASuC,EAASC,EAAI,CACpB,MAAO,SAAS,KAAKA,CAAE,CACzB,CAEA,SAASC,EAAI5B,EAAG6B,EAAG,CACjB,OAAO7B,GAAK6B,CACd,CACA,SAASC,EAAI9B,EAAG6B,EAAG,CACjB,OAAO7B,GAAK6B,CACd,CAOA,SAASE,EACPC,EACAhB,EACAiB,EACAX,EACAC,EACAW,EACA,CAGA,QAFIC,EAAM,CAAA,EACNC,EAAS,EACJnD,EAAI,EAAGA,EAAI+C,EAAI,OAAQ/C,IAC9B,QAASoD,EAAI,EAAGA,EAAIJ,EAAO,OAAQI,IAAK,CACtC,GAAIF,EAAI,QAAUb,EAAK,OAAOa,EAC9B,IAAIG,EAAYN,EAAI/C,CAAC,EAAI+B,EAAMiB,EAAOI,CAAC,EAGvC,GAAI,EAAAH,GAAe,CAACI,GACpB,CAAA,GAAIF,EAASE,EAAU,OAASf,EAAW,OAAOY,EAClDA,EAAI,KAAKG,CAAS,EAClBF,GAAUE,EAAU,MAAA,CAC1B,CAEE,OAAOH,CACT,CAIA,SAASI,EACPtB,EACAuB,EACAlB,EACAC,EACA,CACA,IAAIkB,EAAIxB,EAAK,MAAM,MAAM,EACrByB,EAAI,CAAA,EAIR,GAAID,EAAE,CAAC,IAAM,QAAaA,EAAE,CAAC,IAAM,OACjC,OAAOC,EAGT,IAAIC,EAAIhC,EAAQ8B,EAAE,CAAC,CAAC,EAChBZ,EAAIlB,EAAQ8B,EAAE,CAAC,CAAC,EAChBG,EAAQ,KAAK,IAAIH,EAAE,CAAC,EAAE,OAAQA,EAAE,CAAC,EAAE,MAAM,EACzCI,EACFJ,EAAE,SAAW,GAAKA,EAAE,CAAC,IAAM,OACzB,KAAK,IAAI,KAAK,IAAI9B,EAAQ8B,EAAE,CAAC,CAAC,CAAC,EAAG,CAAC,EACnC,EACAK,EAAOlB,EACPmB,EAAUlB,EAAIc,EACdI,IACFF,GAAQ,GACRC,EAAOhB,GAKT,QAHIkB,EAAMP,EAAE,KAAKf,CAAQ,EAErBU,EAAS,EACJpC,EAAI2C,EAAGG,EAAK9C,EAAG6B,CAAC,GAAKa,EAAE,OAASpB,EAAKtB,GAAK6C,EAAM,CACvD,IAAII,EACJ,GAAIT,EACFS,EAAI,OAAO,aAAajD,CAAC,EACrBiD,IAAM,OACRA,EAAI,YAGNA,EAAI,OAAOjD,CAAC,EACRgD,EAAK,CACP,IAAIE,EAAON,EAAQK,EAAE,OACrB,GAAIC,EAAO,EAAG,CACZ,IAAIC,EAAI,IAAI,MAAMD,EAAO,CAAC,EAAE,KAAK,GAAG,EAChClD,EAAI,EACNiD,EAAI,IAAME,EAAIF,EAAE,MAAM,CAAC,EAEvBA,EAAIE,EAAIF,CAEpB,CACA,CAEI,GAAIb,EAASa,EAAE,OAAS1B,EAAW,MACnCmB,EAAE,KAAKO,CAAC,EACRb,GAAUa,EAAE,MAChB,CACE,OAAOP,CACT,CAEA,SAASlB,EACPrC,EACAmC,EACAC,EACA6B,EACA,CAgBA,QATIpB,EAAM,CAAC,EAAE,EAMTE,EAAc,GACdmB,EAAa,KAER,CACP,MAAM7D,EAAIR,EAAS,IAAK,IAAKG,CAAG,EAGhC,GAAI,CAACK,EACH,OAAOuC,EAAQC,EAAK7C,EAAK,CAAC,EAAE,EAAGmC,EAAKC,EAAWW,CAAW,EAI5D,MAAMlB,EAAMxB,EAAE,IAEd,GAAI,MAAM,KAAKwB,CAAG,EAAG,CAUnB,GATAgB,EAAMD,EACJC,EACAhB,EAAM,IAAMxB,EAAE,KAAO,IACrB,CAAC,EAAE,EACH8B,EACAC,EACAW,GAAe,CAAC1C,EAAE,KAAK,MAC/B,EACM6D,EAAa,GACT,CAAC7D,EAAE,KAAK,OAAQ,MACpBL,EAAMK,EAAE,KACR,QACN,CAEI,IAAI8D,EAAoB,iCAAiC,KAAK9D,EAAE,IAAI,EAChEgD,EAAkB,uCAAuC,KAAKhD,EAAE,IAAI,EACpE+D,EAAaD,GAAqBd,EAClCgB,EAAYhE,EAAE,KAAK,QAAQ,GAAG,GAAK,EACvC,GAAI,CAAC+D,GAAc,CAACC,EAAW,CAE7B,GAAIhE,EAAE,KAAK,MAAM,YAAY,EAAG,CAC9BL,EAAMK,EAAE,IAAM,IAAMA,EAAE,KAAOc,EAAWd,EAAE,KAC1C4D,EAAQ,GACR,QACR,CAEM,OAAOrB,EACLC,EACAhB,EAAM,IAAMxB,EAAE,KAAO,IAAMA,EAAE,KAC7B,CAAC,EAAE,EACH8B,EACAC,EACAW,CACR,CACA,CAEQmB,IACFnB,EAAckB,GAAS,CAACG,EACxBF,EAAa,IAGf,IAAIpB,EACJ,GAAIsB,EACFtB,EAASM,EAAe/C,EAAE,KAAMgD,EAAiBlB,EAAKC,CAAS,MAC1D,CACL,IAAIkB,EAAI3B,EAAgBtB,EAAE,IAAI,EAC9B,GAAIiD,EAAE,SAAW,GAAKA,EAAE,CAAC,IAAM,SAE7BA,EAAIjB,EAAOiB,EAAE,CAAC,EAAGnB,EAAKC,EAAW,EAAK,EAAE,IAAIE,CAAO,EAG/CgB,EAAE,SAAW,GAAG,CASlB,GARAT,EAAMD,EACJC,EACAhB,EAAMyB,EAAE,CAAC,EACT,CAAC,EAAE,EACHnB,EACAC,EACAW,GAAe,CAAC1C,EAAE,KAAK,MACnC,EACc,CAACA,EAAE,KAAK,OAAQ,MACpBL,EAAMK,EAAE,KACR,QACV,CAUM,QADIiE,EAAevB,GAAe,CAAC1C,EAAE,KAAK,QAAU,CAACwB,EAC5C0C,EAAI,EAAGD,GAAgBC,EAAI1B,EAAI,OAAQ0B,IAC1C1B,EAAI0B,CAAC,IACPD,EAAe,IAInBxB,EAAS,CAAA,EACT,IAAI0B,EAAe,EACnBC,EAAO,QAASC,EAAI,EAAGA,EAAIpB,EAAE,OAAQoB,IAEnC,QADIC,EAAWtC,EAAOiB,EAAEoB,CAAC,EAAGvC,EAAKC,EAAW,EAAK,EACxCwC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IAAK,CACxC,IAAI1B,EAAIyB,EAASC,CAAC,EAClB,GAAI,EAAAN,GAAgB,CAACpB,GACrB,CAAA,GAAIJ,EAAO,QAAUX,GAAOqC,EAAetB,EAAE,OAASd,EACpD,MAAMqC,EAER3B,EAAO,KAAKI,CAAC,EACbsB,GAAgBtB,EAAE,MAAA,CAC5B,CAEA,CAGI,GADAL,EAAMD,EAAQC,EAAKhB,EAAKiB,EAAQX,EAAKC,EAAWW,GAAe,CAAC1C,EAAE,KAAK,MAAM,EACzE,CAACA,EAAE,KAAK,OAAQ,MACpBL,EAAMK,EAAE,IACZ,CAEE,OAAOwC,CACT,sCCjVMgC,GAAqB,KAAO,GACrBC,EAAsBC,GAAY,CAC3C,GAAI,OAAOA,GAAY,SACnB,MAAM,IAAI,UAAU,iBAAiB,EAEzC,GAAIA,EAAQ,OAASF,GACjB,MAAM,IAAI,UAAU,qBAAqB,CAEjD,ECLMG,GAAe,CACjB,YAAa,CAAC,uBAAwB,EAAI,EAC1C,YAAa,CAAC,gBAAiB,EAAI,EACnC,YAAa,CAAC,cAAyB,EAAK,EAC5C,YAAa,CAAC,aAAc,EAAI,EAChC,YAAa,CAAC,UAAW,EAAI,EAC7B,YAAa,CAAC,UAAW,EAAI,EAC7B,YAAa,CAAC,eAAgB,GAAM,EAAI,EACxC,YAAa,CAAC,UAAW,EAAI,EAC7B,YAAa,CAAC,SAAU,EAAI,EAC5B,YAAa,CAAC,SAAU,EAAI,EAC5B,YAAa,CAAC,wBAAyB,EAAI,EAC3C,YAAa,CAAC,UAAW,EAAI,EAC7B,WAAY,CAAC,8BAA+B,EAAI,EAChD,aAAc,CAAC,YAAa,EAAK,CACrC,EAGMC,EAAeC,GAAMA,EAAE,QAAQ,YAAa,MAAM,EAElDC,GAAgBD,GAAMA,EAAE,QAAQ,2BAA4B,MAAM,EAElEE,GAAkBC,GAAWA,EAAO,KAAK,EAAE,EAOpCC,GAAa,CAACC,EAAMC,IAAa,CAC1C,MAAMC,EAAMD,EAEZ,GAAID,EAAK,OAAOE,CAAG,IAAM,IACrB,MAAM,IAAI,MAAM,2BAA2B,EAG/C,MAAMJ,EAAS,CAAA,EACTK,EAAO,CAAA,EACb,IAAI7E,EAAI4E,EAAM,EACVE,EAAW,GACXC,EAAQ,GACRC,EAAW,GACXC,EAAS,GACTC,EAASN,EACTO,EAAa,GACjBC,EAAO,KAAOpF,EAAI0E,EAAK,QAAQ,CAC3B,MAAMzB,EAAIyB,EAAK,OAAO1E,CAAC,EACvB,IAAKiD,IAAM,KAAOA,IAAM,MAAQjD,IAAM4E,EAAM,EAAG,CAC3CK,EAAS,GACTjF,IACA,QACJ,CACA,GAAIiD,IAAM,KAAO6B,GAAY,CAACE,EAAU,CACpCE,EAASlF,EAAI,EACb,KACJ,CAEA,GADA8E,EAAW,GACP7B,IAAM,MACF,CAAC+B,EAAU,CACXA,EAAW,GACXhF,IACA,QACJ,CAGJ,GAAIiD,IAAM,KAAO,CAAC+B,GAEd,SAAW,CAACK,EAAK,CAACC,EAAMC,EAAGC,CAAG,CAAC,IAAK,OAAO,QAAQrB,EAAY,EAC3D,GAAIO,EAAK,WAAWW,EAAKrF,CAAC,EAAG,CAEzB,GAAImF,EACA,MAAO,CAAC,KAAM,GAAOT,EAAK,OAASE,EAAK,EAAI,EAEhD5E,GAAKqF,EAAI,OACLG,EACAX,EAAK,KAAKS,CAAI,EAEdd,EAAO,KAAKc,CAAI,EACpBP,EAAQA,GAASQ,EACjB,SAASH,CACb,EAKR,GADAJ,EAAW,GACPG,EAAY,CAGRlC,EAAIkC,EACJX,EAAO,KAAKJ,EAAYe,CAAU,EAAI,IAAMf,EAAYnB,CAAC,CAAC,EAErDA,IAAMkC,GACXX,EAAO,KAAKJ,EAAYnB,CAAC,CAAC,EAE9BkC,EAAa,GACbnF,IACA,QACJ,CAGA,GAAI0E,EAAK,WAAW,KAAM1E,EAAI,CAAC,EAAG,CAC9BwE,EAAO,KAAKJ,EAAYnB,EAAI,GAAG,CAAC,EAChCjD,GAAK,EACL,QACJ,CACA,GAAI0E,EAAK,WAAW,IAAK1E,EAAI,CAAC,EAAG,CAC7BmF,EAAalC,EACbjD,GAAK,EACL,QACJ,CAEAwE,EAAO,KAAKJ,EAAYnB,CAAC,CAAC,EAC1BjD,GACJ,CACA,GAAIkF,EAASlF,EAGT,MAAO,CAAC,GAAI,GAAO,EAAG,EAAK,EAI/B,GAAI,CAACwE,EAAO,QAAU,CAACK,EAAK,OACxB,MAAO,CAAC,KAAM,GAAOH,EAAK,OAASE,EAAK,EAAI,EAMhD,GAAIC,EAAK,SAAW,GAChBL,EAAO,SAAW,GAClB,SAAS,KAAKA,EAAO,CAAC,CAAC,GACvB,CAACS,EAAQ,CACT,MAAM5F,EAAImF,EAAO,CAAC,EAAE,SAAW,EAAIA,EAAO,CAAC,EAAE,MAAM,EAAE,EAAIA,EAAO,CAAC,EACjE,MAAO,CAACF,GAAajF,CAAC,EAAG,GAAO6F,EAASN,EAAK,EAAK,CACvD,CACA,MAAMa,EAAU,KAAOR,EAAS,IAAM,IAAMV,GAAeC,CAAM,EAAI,IAC/DkB,EAAQ,KAAOT,EAAS,GAAK,KAAOV,GAAeM,CAAI,EAAI,IAMjE,MAAO,CALML,EAAO,QAAUK,EAAK,OAC7B,IAAMY,EAAU,IAAMC,EAAQ,IAC9BlB,EAAO,OACHiB,EACAC,EACIX,EAAOG,EAASN,EAAK,EAAI,CAC3C,ECpIae,EAAW,CAACtB,EAAG,CAAE,qBAAAuB,EAAuB,EAAK,EAAM,CAAA,IACrDA,EACDvB,EAAE,QAAQ,iBAAkB,IAAI,EAChCA,EAAE,QAAQ,4BAA6B,MAAM,EAAE,QAAQ,aAAc,IAAI,EChBnF,IAAIwB,EAGJ,MAAMC,GAAQ,IAAI,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,CAAC,EACzCC,GAAiB9C,GAAM6C,GAAM,IAAI7C,CAAC,EAClC+C,GAAgB/C,GAAM8C,GAAc9C,EAAE,IAAI,EAC1CgD,GAAc,IAAI,IAAI,CACxB,CAAC,IAAK,CAAC,GAAG,CAAC,EACX,CAAC,IAAK,CAAC,IAAK,GAAG,CAAC,EAChB,CAAC,IAAK,CAAC,GAAG,CAAC,EACX,CAAC,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,EAC1B,CAAC,IAAK,CAAC,IAAK,GAAG,CAAC,CACpB,CAAC,EACKC,GAAuB,IAAI,IAAI,CACjC,CAAC,IAAK,CAAC,GAAG,CAAC,EACX,CAAC,IAAK,CAAC,GAAG,CAAC,EACX,CAAC,IAAK,CAAC,IAAK,GAAG,CAAC,CACpB,CAAC,EACKC,GAAiB,IAAI,IAAI,CAC3B,CAAC,IAAK,CAAC,IAAK,GAAG,CAAC,EAChB,CAAC,IAAK,CAAC,IAAK,GAAG,CAAC,EAChB,CAAC,IAAK,CAAC,IAAK,GAAG,CAAC,EAChB,CAAC,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,EAC1B,CAAC,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,CAC9B,CAAC,EACKC,GAAW,IAAI,IAAI,CACrB,CAAC,IAAK,IAAI,IAAI,CAAC,CAAC,IAAK,GAAG,CAAC,CAAC,CAAC,EAC3B,CAAC,IAAK,IAAI,IAAI,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,CAAC,CAAC,CAAC,EACvC,CAAC,IAAK,IAAI,IAAI,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,CAAC,CAAC,CAAC,EAC3E,CAAC,IAAK,IAAI,IAAI,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,CAAC,CAAC,CAAC,CAC3C,CAAC,EAKKC,GAAmB,4BACnBC,EAAa,UAIbC,GAAkB,IAAI,IAAI,CAAC,IAAK,GAAG,CAAC,EAEpCC,GAAW,IAAI,IAAI,CAAC,KAAM,GAAG,CAAC,EAC9BC,GAAa,IAAI,IAAI,iBAAiB,EACtCC,GAAgBrC,GAAMA,EAAE,QAAQ,2BAA4B,MAAM,EAElEsC,GAAQ,OAERC,GAAOD,GAAQ,KAGfE,GAAcF,GAAQ,KAGrB,MAAMG,EAAI,CACb,KACAC,GACAC,GACAC,GAAS,GACTC,GAAS,CAAA,EACTC,GACAC,GACAC,GACAC,GAAc,GACdC,GACAC,GAGAC,GAAY,GACZ,YAAYC,EAAMC,EAAQtG,EAAU,CAAA,EAAI,CACpC,KAAK,KAAOqG,EAERA,IACA,KAAKV,GAAY,IACrB,KAAKG,GAAUQ,EACf,KAAKZ,GAAQ,KAAKI,GAAU,KAAKA,GAAQJ,GAAQ,KACjD,KAAKQ,GAAW,KAAKR,KAAU,KAAO1F,EAAU,KAAK0F,GAAMQ,GAC3D,KAAKF,GAAQ,KAAKN,KAAU,KAAO,GAAK,KAAKA,GAAMM,GAC/CK,IAAS,KAAO,CAAC,KAAKX,GAAMO,IAC5B,KAAKD,GAAM,KAAK,IAAI,EACxB,KAAKD,GAAe,KAAKD,GAAU,KAAKA,GAAQD,GAAO,OAAS,CACpE,CACA,IAAI,UAAW,CAEX,GAAI,KAAKF,KAAc,OACnB,OAAO,KAAKA,GAEhB,UAAW7F,KAAK,KAAK+F,GACjB,GAAI,OAAO/F,GAAM,WAEbA,EAAE,MAAQA,EAAE,UACZ,OAAQ,KAAK6F,GAAY,GAGjC,OAAO,KAAKA,EAChB,CAEA,UAAW,CACP,OAAI,KAAKQ,KAAc,OACZ,KAAKA,GACX,KAAK,KAIE,KAAKA,GACT,KAAK,KAAO,IAAM,KAAKN,GAAO,IAAI/F,GAAK,OAAOA,CAAC,CAAC,EAAE,KAAK,GAAG,EAAI,IAJ1D,KAAKqG,GAAY,KAAKN,GAAO,IAAI/F,GAAK,OAAOA,CAAC,CAAC,EAAE,KAAK,EAAE,CAMxE,CACAyG,IAAY,CAER,GAAI,OAAS,KAAKb,GACd,MAAM,IAAI,MAAM,0BAA0B,EAC9C,GAAI,KAAKO,GACL,OAAO,KAGX,KAAK,SAAQ,EACb,KAAKA,GAAc,GACnB,IAAI7E,EACJ,KAAQA,EAAI,KAAK4E,GAAM,IAAG,GAAK,CAC3B,GAAI5E,EAAE,OAAS,IACX,SAEJ,IAAItB,EAAIsB,EACJoF,EAAK1G,EAAEgG,GACX,KAAOU,GAAI,CACP,QAAS7H,EAAImB,EAAEiG,GAAe,EAAG,CAACS,EAAG,MAAQ7H,EAAI6H,EAAGX,GAAO,OAAQlH,IAC/D,UAAW8H,KAAQrF,EAAEyE,GAAQ,CAEzB,GAAI,OAAOY,GAAS,SAChB,MAAM,IAAI,MAAM,8BAA8B,EAGlDA,EAAK,OAAOD,EAAGX,GAAOlH,CAAC,CAAC,CAC5B,CAEJmB,EAAI0G,EACJA,EAAK1G,EAAEgG,EACX,CACJ,CACA,OAAO,IACX,CACA,QAAQpG,EAAO,CACX,UAAWI,KAAKJ,EACZ,GAAII,IAAM,GAGV,CAAA,GAAI,OAAOA,GAAM,UAAY,EAAEA,aAAa0E,GAAM1E,EAAEgG,KAAY,MAC5D,MAAM,IAAI,MAAM,iBAAmBhG,CAAC,EAGxC,KAAK+F,GAAO,KAAK/F,CAAC,CAAA,CAE1B,CACA,QAAS,CACL,MAAM4G,EAAM,KAAK,OAAS,KACpB,KAAKb,GAAO,MAAK,EAAG,IAAI/F,GAAM,OAAOA,GAAM,SAAWA,EAAIA,EAAE,OAAM,CAAG,EACrE,CAAC,KAAK,KAAM,GAAG,KAAK+F,GAAO,IAAI/F,GAAKA,EAAE,OAAM,CAAE,CAAC,EACrD,OAAI,KAAK,WAAa,CAAC,KAAK,MACxB4G,EAAI,QAAQ,EAAE,EACd,KAAK,MAAK,IACT,OAAS,KAAKhB,IACV,KAAKA,GAAMO,IAAe,KAAKH,IAAS,OAAS,MACtDY,EAAI,KAAK,EAAE,EAERA,CACX,CACA,SAAU,CACN,GAAI,KAAKhB,KAAU,KACf,MAAO,GAEX,GAAI,CAAC,KAAKI,IAAS,QAAO,EACtB,MAAO,GACX,GAAI,KAAKC,KAAiB,EACtB,MAAO,GAEX,MAAMjG,EAAI,KAAKgG,GACf,QAASnH,EAAI,EAAGA,EAAI,KAAKoH,GAAcpH,IAAK,CACxC,MAAM6H,EAAK1G,EAAE+F,GAAOlH,CAAC,EACrB,GAAI,EAAE6H,aAAchC,GAAMgC,EAAG,OAAS,KAClC,MAAO,EAEf,CACA,MAAO,EACX,CACA,OAAQ,CAGJ,GAFI,KAAKd,KAAU,MAEf,KAAKI,IAAS,OAAS,IACvB,MAAO,GACX,GAAI,CAAC,KAAKA,IAAS,MAAK,EACpB,MAAO,GACX,GAAI,CAAC,KAAK,KACN,OAAO,KAAKA,IAAS,MAAK,EAG9B,MAAMa,EAAK,KAAKb,GAAU,KAAKA,GAAQD,GAAO,OAAS,EAEvD,OAAO,KAAKE,KAAiBY,EAAK,CACtC,CACA,OAAOF,EAAM,CACL,OAAOA,GAAS,SAChB,KAAK,KAAKA,CAAI,EAEd,KAAK,KAAKA,EAAK,MAAM,IAAI,CAAC,CAClC,CACA,MAAMH,EAAQ,CACV,MAAM1E,EAAI,IAAI4C,EAAG,KAAK,KAAM8B,CAAM,EAClC,UAAWxG,KAAK,KAAK+F,GACjBjE,EAAE,OAAO9B,CAAC,EAEd,OAAO8B,CACX,CACA,MAAOgF,GAAU9I,EAAK+I,EAAKtD,EAAKuD,EAAKC,EAAU,CAC3C,MAAMC,EAAWF,EAAI,qBAAuB,EAC5C,IAAInD,EAAW,GACXsD,EAAU,GACVC,EAAa,GACbC,EAAW,GACf,GAAIN,EAAI,OAAS,KAAM,CAEnB,IAAIlI,EAAI4E,EACJ5C,EAAM,GACV,KAAOhC,EAAIb,EAAI,QAAQ,CACnB,MAAM8D,EAAI9D,EAAI,OAAOa,GAAG,EAGxB,GAAIgF,GAAY/B,IAAM,KAAM,CACxB+B,EAAW,CAACA,EACZhD,GAAOiB,EACP,QACJ,CACA,GAAIqF,EAAS,CACLtI,IAAMuI,EAAa,GACftF,IAAM,KAAOA,IAAM,OACnBuF,EAAW,IAGVvF,IAAM,KAAO,EAAEjD,IAAMuI,EAAa,GAAKC,KAC5CF,EAAU,IAEdtG,GAAOiB,EACP,QACJ,SACSA,IAAM,IAAK,CAChBqF,EAAU,GACVC,EAAavI,EACbwI,EAAW,GACXxG,GAAOiB,EACP,QACJ,CAKA,GAJkB,CAACkF,EAAI,OACnBpC,GAAc9C,CAAC,GACf9D,EAAI,OAAOa,CAAC,IAAM,KAClBoI,GAAYC,EACD,CACXH,EAAI,KAAKlG,CAAG,EACZA,EAAM,GACN,MAAMyG,EAAM,IAAI5C,EAAG5C,EAAGiF,CAAG,EACzBlI,EAAI6F,EAAGoC,GAAU9I,EAAKsJ,EAAKzI,EAAGmI,EAAKC,EAAW,CAAC,EAC/CF,EAAI,KAAKO,CAAG,EACZ,QACJ,CACAzG,GAAOiB,CACX,CACA,OAAAiF,EAAI,KAAKlG,CAAG,EACLhC,CACX,CAGA,IAAIA,EAAI4E,EAAM,EACVkD,EAAO,IAAIjC,EAAG,KAAMqC,CAAG,EAC3B,MAAMnH,EAAQ,CAAA,EACd,IAAIiB,EAAM,GACV,KAAOhC,EAAIb,EAAI,QAAQ,CACnB,MAAM8D,EAAI9D,EAAI,OAAOa,GAAG,EAGxB,GAAIgF,GAAY/B,IAAM,KAAM,CACxB+B,EAAW,CAACA,EACZhD,GAAOiB,EACP,QACJ,CACA,GAAIqF,EAAS,CACLtI,IAAMuI,EAAa,GACftF,IAAM,KAAOA,IAAM,OACnBuF,EAAW,IAGVvF,IAAM,KAAO,EAAEjD,IAAMuI,EAAa,GAAKC,KAC5CF,EAAU,IAEdtG,GAAOiB,EACP,QACJ,SACSA,IAAM,IAAK,CAChBqF,EAAU,GACVC,EAAavI,EACbwI,EAAW,GACXxG,GAAOiB,EACP,QACJ,CAMA,GALkB8C,GAAc9C,CAAC,GAC7B9D,EAAI,OAAOa,CAAC,IAAM,MAEjBoI,GAAYC,GAAaH,GAAOA,EAAIQ,GAAczF,CAAC,GAEzC,CACX,MAAM0F,EAAWT,GAAOA,EAAIQ,GAAczF,CAAC,EAAI,EAAI,EACnD6E,EAAK,KAAK9F,CAAG,EACbA,EAAM,GACN,MAAMyG,EAAM,IAAI5C,EAAG5C,EAAG6E,CAAI,EAC1BA,EAAK,KAAKW,CAAG,EACbzI,EAAI6F,EAAGoC,GAAU9I,EAAKsJ,EAAKzI,EAAGmI,EAAKC,EAAWO,CAAQ,EACtD,QACJ,CACA,GAAI1F,IAAM,IAAK,CACX6E,EAAK,KAAK9F,CAAG,EACbA,EAAM,GACNjB,EAAM,KAAK+G,CAAI,EACfA,EAAO,IAAIjC,EAAG,KAAMqC,CAAG,EACvB,QACJ,CACA,GAAIjF,IAAM,IACN,OAAIjB,IAAQ,IAAMkG,EAAIhB,GAAO,SAAW,IACpCgB,EAAIT,GAAY,IAEpBK,EAAK,KAAK9F,CAAG,EACbA,EAAM,GACNkG,EAAI,KAAK,GAAGnH,EAAO+G,CAAI,EAChB9H,EAEXgC,GAAOiB,CACX,CAIA,OAAAiF,EAAI,KAAO,KACXA,EAAIlB,GAAY,OAChBkB,EAAIhB,GAAS,CAAC/H,EAAI,UAAUyF,EAAM,CAAC,CAAC,EAC7B5E,CACX,CACA4I,GAAmBC,EAAO,CACtB,OAAO,KAAKC,GAAUD,EAAO3C,EAAoB,CACrD,CACA4C,GAAUD,EAAOE,EAAM9C,GAAa,CAChC,GAAI,CAAC4C,GACD,OAAOA,GAAU,UACjBA,EAAM,OAAS,MACfA,EAAM3B,GAAO,SAAW,GACxB,KAAK,OAAS,KACd,MAAO,GAEX,MAAM8B,EAAKH,EAAM3B,GAAO,CAAC,EACzB,MAAI,CAAC8B,GAAM,OAAOA,GAAO,UAAYA,EAAG,OAAS,KACtC,GAEJ,KAAKN,GAAcM,EAAG,KAAMD,CAAG,CAC1C,CACAL,GAAczF,EAAG8F,EAAM5C,GAAgB,CACnC,MAAO,CAAC,CAAC4C,EAAI,IAAI,KAAK,IAAI,GAAG,SAAS9F,CAAC,CAC3C,CACAgG,GAAgBJ,EAAOK,EAAO,CAC1B,MAAMF,EAAKH,EAAM3B,GAAO,CAAC,EACnBiC,EAAQ,IAAItD,EAAG,KAAMmD,EAAI,KAAK,OAAO,EAC3CG,EAAMjC,GAAO,KAAK,EAAE,EACpB8B,EAAG,KAAKG,CAAK,EACb,KAAKC,GAAOP,EAAOK,CAAK,CAC5B,CACAE,GAAOP,EAAOK,EAAO,CACjB,MAAMF,EAAKH,EAAM3B,GAAO,CAAC,EACzB,KAAKA,GAAO,OAAOgC,EAAO,EAAG,GAAGF,EAAG9B,EAAM,EACzC,UAAW/F,KAAK6H,EAAG9B,GACX,OAAO/F,GAAM,WACbA,EAAEgG,GAAU,MAEpB,KAAKK,GAAY,MACrB,CACA6B,GAAcpG,EAAG,CAEb,MAAO,CAAC,CADEmD,GAAS,IAAI,KAAK,IAAI,GACnB,IAAInD,CAAC,CACtB,CACAqG,GAAUT,EAAO,CACb,GAAI,CAACA,GACD,OAAOA,GAAU,UACjBA,EAAM,OAAS,MACfA,EAAM3B,GAAO,SAAW,GACxB,KAAK,OAAS,MACd,KAAKA,GAAO,SAAW,EACvB,MAAO,GAEX,MAAM8B,EAAKH,EAAM3B,GAAO,CAAC,EACzB,MAAI,CAAC8B,GAAM,OAAOA,GAAO,UAAYA,EAAG,OAAS,KACtC,GAEJ,KAAKK,GAAcL,EAAG,IAAI,CACrC,CACAO,GAAOV,EAAO,CACV,MAAMrJ,EAAI4G,GAAS,IAAI,KAAK,IAAI,EAC1B4C,EAAKH,EAAM3B,GAAO,CAAC,EACnBsC,EAAKhK,GAAG,IAAIwJ,EAAG,IAAI,EAEzB,GAAI,CAACQ,EACD,MAAO,GAEX,KAAKtC,GAAS8B,EAAG9B,GACjB,UAAW/F,KAAK,KAAK+F,GACb,OAAO/F,GAAM,WACbA,EAAEgG,GAAU,MAEpB,KAAK,KAAOqC,EACZ,KAAKhC,GAAY,OACjB,KAAKC,GAAY,EACrB,CACAgC,IAAW,CACP,GAAKzD,GAAa,IAAI,EAMjB,CACD,IAAI0D,EAAa,EACbC,EAAO,GACX,EAAG,CACCA,EAAO,GACP,QAAS3J,EAAI,EAAGA,EAAI,KAAKkH,GAAO,OAAQlH,IAAK,CACzC,MAAMiD,EAAI,KAAKiE,GAAOlH,CAAC,EACnB,OAAOiD,GAAM,WACbA,EAAEwG,GAAQ,EACN,KAAKX,GAAU7F,CAAC,GAChB0G,EAAO,GACP,KAAKP,GAAOnG,EAAGjD,CAAC,GAEX,KAAK4I,GAAmB3F,CAAC,GAC9B0G,EAAO,GACP,KAAKV,GAAgBhG,EAAGjD,CAAC,GAEpB,KAAKsJ,GAAUrG,CAAC,IACrB0G,EAAO,GACP,KAAKJ,GAAOtG,CAAC,GAGzB,CACJ,OAAS,CAAC0G,GAAQ,EAAED,EAAa,GACrC,KA7BI,WAAWvI,KAAK,KAAK+F,GACb,OAAO/F,GAAM,UACbA,EAAEsI,GAAQ,EA4BtB,KAAKjC,GAAY,MACrB,CACA,OAAO,SAAStD,EAAS7C,EAAU,GAAI,CACnC,MAAM6G,EAAM,IAAIrC,EAAG,KAAM,OAAWxE,CAAO,EAC3C,OAAAwE,EAAGoC,GAAU/D,EAASgE,EAAK,EAAG7G,EAAS,CAAC,EACjC6G,CACX,CAGA,aAAc,CAGV,GAAI,OAAS,KAAKnB,GACd,OAAO,KAAKA,GAAM,YAAW,EAEjC,MAAMrC,EAAO,KAAK,SAAQ,EACpB,CAACkF,EAAI3I,EAAM4I,EAAU9E,CAAK,EAAI,KAAK,eAAc,EASvD,GAAI,EALa8E,GACb,KAAK7C,IACJ,KAAKO,GAAS,QACX,CAAC,KAAKA,GAAS,iBACf7C,EAAK,YAAW,IAAOA,EAAK,YAAW,GAE3C,OAAOzD,EAEX,MAAM6I,GAAS,KAAKvC,GAAS,OAAS,IAAM,KAAOxC,EAAQ,IAAM,IACjE,OAAO,OAAO,OAAO,IAAI,OAAO,IAAI6E,CAAE,IAAKE,CAAK,EAAG,CAC/C,KAAMF,EACN,MAAOlF,CACnB,CAAS,CACL,CACA,IAAI,SAAU,CACV,OAAO,KAAK6C,EAChB,CAsEA,eAAewC,EAAU,CACrB,MAAMC,EAAMD,GAAY,CAAC,CAAC,KAAKxC,GAAS,IAKxC,GAJI,KAAKR,KAAU,OACf,KAAK0C,GAAQ,EACb,KAAK7B,GAAS,GAEd,CAAC5B,GAAa,IAAI,EAAG,CACrB,MAAMiE,EAAU,KAAK,QAAO,GAAM,KAAK,MAAK,EACtCC,EAAM,KAAKhD,GACZ,IAAI/F,GAAK,CACV,KAAM,CAACyI,EAAIO,EAAGN,EAAU9E,CAAK,EAAI,OAAO5D,GAAM,SACxC0E,EAAGuE,GAAWjJ,EAAG,KAAK6F,GAAWiD,CAAO,EACxC9I,EAAE,eAAe4I,CAAQ,EAC/B,OAAA,KAAK/C,GAAY,KAAKA,IAAa6C,EACnC,KAAK5C,GAAS,KAAKA,IAAUlC,EACtB6E,CACX,CAAC,EACI,KAAK,EAAE,EACZ,IAAIS,EAAQ,GACZ,GAAI,KAAK,WACD,OAAO,KAAKnD,GAAO,CAAC,GAAM,UAMtB,EADmB,KAAKA,GAAO,SAAW,GAAKV,GAAS,IAAI,KAAKU,GAAO,CAAC,CAAC,GACzD,CACjB,MAAMoD,EAAM/D,GAGNgE,EAELP,GAAOM,EAAI,IAAIJ,EAAI,OAAO,CAAC,CAAC,GAExBA,EAAI,WAAW,KAAK,GAAKI,EAAI,IAAIJ,EAAI,OAAO,CAAC,CAAC,GAE9CA,EAAI,WAAW,QAAQ,GAAKI,EAAI,IAAIJ,EAAI,OAAO,CAAC,CAAC,EAGhDM,EAAY,CAACR,GAAO,CAACD,GAAYO,EAAI,IAAIJ,EAAI,OAAO,CAAC,CAAC,EAC5DG,EAAQE,EAAalE,GAAmBmE,EAAYlE,EAAa,EACrE,CAIR,IAAImE,EAAM,GACV,OAAI,KAAK,MAAK,GACV,KAAK1D,GAAMO,IACX,KAAKH,IAAS,OAAS,MACvBsD,EAAM,aAGH,CADOJ,EAAQH,EAAMO,EAGxB9E,EAASuE,CAAG,EACX,KAAKlD,GAAY,CAAC,CAAC,KAAKA,GACzB,KAAKC,EACrB,CACQ,CAIA,MAAMyD,EAAW,KAAK,OAAS,KAAO,KAAK,OAAS,IAE9CL,EAAQ,KAAK,OAAS,IAAM,YAAc,MAChD,IAAIpJ,EAAO,KAAK0J,GAAeX,CAAG,EAClC,GAAI,KAAK,QAAO,GAAM,KAAK,SAAW,CAAC/I,GAAQ,KAAK,OAAS,IAAK,CAG9D,MAAMoD,EAAI,KAAK,SAAQ,EACjBuG,EAAK,KACX,OAAAA,EAAG1D,GAAS,CAAC7C,CAAC,EACduG,EAAG,KAAO,KACVA,EAAG5D,GAAY,OACR,CAAC3C,EAAGsB,EAAS,KAAK,UAAU,EAAG,GAAO,EAAK,CACtD,CAEA,IAAIkF,EAAiB,CAACH,GAAYX,GAAYC,GAAO,CAAC1D,EAChD,GACA,KAAKqE,GAAe,EAAI,EAC1BE,IAAmB5J,IACnB4J,EAAiB,IAEjBA,IACA5J,EAAO,MAAMA,CAAI,OAAO4J,CAAc,OAG1C,IAAIC,EAAQ,GACZ,GAAI,KAAK,OAAS,KAAO,KAAKrD,GAC1BqD,GAAS,KAAK,QAAO,GAAM,CAACd,EAAM1D,EAAa,IAAMO,OAEpD,CACD,MAAMkE,EAAQ,KAAK,OAAS,IAEpB,MACK,KAAK,QAAO,GAAM,CAACf,GAAO,CAACD,EAAWzD,EAAa,IACpDM,GACA,IACN,KAAK,OAAS,IACV,IACA,KAAK,OAAS,IACV,KACA,KAAK,OAAS,KAAOiE,EACjB,IACA,KAAK,OAAS,KAAOA,EACjB,KACA,IAAI,KAAK,IAAI,GACnCC,EAAQT,EAAQpJ,EAAO8J,CAC3B,CACA,MAAO,CACHD,EACAnF,EAAS1E,CAAI,EACZ,KAAK+F,GAAY,CAAC,CAAC,KAAKA,GACzB,KAAKC,EACjB,CACI,CACA0D,GAAeX,EAAK,CAChB,OAAO,KAAK9C,GACP,IAAI/F,GAAK,CAGV,GAAI,OAAOA,GAAM,SACb,MAAM,IAAI,MAAM,8BAA8B,EAIlD,KAAM,CAACyI,EAAIO,EAAGa,EAAWjG,CAAK,EAAI5D,EAAE,eAAe6I,CAAG,EACtD,YAAK/C,GAAS,KAAKA,IAAUlC,EACtB6E,CACX,CAAC,EACI,OAAOzI,GAAK,EAAE,KAAK,QAAO,GAAM,KAAK,MAAK,IAAO,CAAC,CAACA,CAAC,EACpD,KAAK,GAAG,CACjB,CACA,MAAOiJ,GAAW1F,EAAMmF,EAAUI,EAAU,GAAO,CAC/C,IAAIjF,EAAW,GACX4E,EAAK,GACL7E,EAAQ,GAERkG,EAAS,GACb,QAASjL,EAAI,EAAGA,EAAI0E,EAAK,OAAQ1E,IAAK,CAClC,MAAMiD,EAAIyB,EAAK,OAAO1E,CAAC,EACvB,GAAIgF,EAAU,CACVA,EAAW,GACX4E,IAAOnD,GAAW,IAAIxD,CAAC,EAAI,KAAO,IAAMA,EACxCgI,EAAS,GACT,QACJ,CACA,GAAIhI,IAAM,KAAM,CACRjD,IAAM0E,EAAK,OAAS,EACpBkF,GAAM,OAGN5E,EAAW,GAEf,QACJ,CACA,GAAI/B,IAAM,IAAK,CACX,KAAM,CAACiH,EAAKgB,EAAWC,EAAUC,CAAK,EAAI3G,GAAWC,EAAM1E,CAAC,EAC5D,GAAImL,EAAU,CACVvB,GAAMM,EACNnF,EAAQA,GAASmG,EACjBlL,GAAKmL,EAAW,EAChBtB,EAAWA,GAAYuB,EACvBH,EAAS,GACT,QACJ,CACJ,CACA,GAAIhI,IAAM,IAAK,CACX,GAAIgI,EACA,SACJA,EAAS,GACTrB,GAAMK,GAAW,SAAS,KAAKvF,CAAI,EAAImC,GAAcD,GACrDiD,EAAW,GACX,QACJ,MAEIoB,EAAS,GAEb,GAAIhI,IAAM,IAAK,CACX2G,GAAMjD,GACNkD,EAAW,GACX,QACJ,CACAD,GAAMlD,GAAazD,CAAC,CACxB,CACA,MAAO,CAAC2G,EAAIjE,EAASjB,CAAI,EAAG,CAAC,CAACmF,EAAU9E,CAAK,CACjD,CACJ,CACAc,EAAKiB,GC5tBE,MAAMuE,GAAS,CAAChH,EAAG,CAAE,qBAAAuB,EAAuB,EAAK,EAAM,CAAA,IAInDA,EACDvB,EAAE,QAAQ,aAAc,MAAM,EAC9BA,EAAE,QAAQ,eAAgB,MAAM,YCVnC,MAAMiH,EAAY,CAACnK,EAAG+C,EAAS7C,EAAU,CAAA,KAC5C4C,EAAmBC,CAAO,EAEtB,CAAC7C,EAAQ,WAAa6C,EAAQ,OAAO,CAAC,IAAM,IACrC,GAEJ,IAAIqH,EAAUrH,EAAS7C,CAAO,EAAE,MAAMF,CAAC,GAG5CqK,GAAe,wBACfC,GAAkBhD,GAASiD,GAAM,CAACA,EAAE,WAAW,GAAG,GAAKA,EAAE,SAASjD,CAAG,EACrEkD,GAAqBlD,GAASiD,GAAMA,EAAE,SAASjD,CAAG,EAClDmD,GAAwBnD,IAC1BA,EAAMA,EAAI,YAAA,EACFiD,GAAM,CAACA,EAAE,WAAW,GAAG,GAAKA,EAAE,YAAA,EAAc,SAASjD,CAAG,GAE9DoD,GAA2BpD,IAC7BA,EAAMA,EAAI,YAAA,EACFiD,GAAMA,EAAE,YAAA,EAAc,SAASjD,CAAG,GAExCqD,GAAgB,aAChBC,GAAmBL,GAAM,CAACA,EAAE,WAAW,GAAG,GAAKA,EAAE,SAAS,GAAG,EAC7DM,GAAsBN,GAAMA,IAAM,KAAOA,IAAM,MAAQA,EAAE,SAAS,GAAG,EACrEO,GAAY,UACZC,GAAeR,GAAMA,IAAM,KAAOA,IAAM,MAAQA,EAAE,WAAW,GAAG,EAChES,GAAS,QACTC,GAAYV,GAAMA,EAAE,SAAW,GAAK,CAACA,EAAE,WAAW,GAAG,EACrDW,GAAeX,GAAMA,EAAE,SAAW,GAAKA,IAAM,KAAOA,IAAM,KAC1DY,GAAW,yBACXC,GAAmB,CAAC,CAACC,EAAI/D,EAAM,EAAE,IAAM,CACzC,MAAMgE,EAAQC,GAAgB,CAACF,CAAE,CAAC,EAClC,OAAK/D,GAELA,EAAMA,EAAI,YAAA,EACFiD,GAAMe,EAAMf,CAAC,GAAKA,EAAE,YAAA,EAAc,SAASjD,CAAG,GAF3CgE,CAGf,EACME,GAAsB,CAAC,CAACH,EAAI/D,EAAM,EAAE,IAAM,CAC5C,MAAMgE,EAAQG,GAAmB,CAACJ,CAAE,CAAC,EACrC,OAAK/D,GAELA,EAAMA,EAAI,YAAA,EACFiD,GAAMe,EAAMf,CAAC,GAAKA,EAAE,YAAA,EAAc,SAASjD,CAAG,GAF3CgE,CAGf,EACMI,GAAgB,CAAC,CAACL,EAAI/D,EAAM,EAAE,IAAM,CACtC,MAAMgE,EAAQG,GAAmB,CAACJ,CAAE,CAAC,EACrC,OAAQ/D,EAAeiD,GAAMe,EAAMf,CAAC,GAAKA,EAAE,SAASjD,CAAG,EAAzCgE,CAClB,EACMK,GAAa,CAAC,CAACN,EAAI/D,EAAM,EAAE,IAAM,CACnC,MAAMgE,EAAQC,GAAgB,CAACF,CAAE,CAAC,EAClC,OAAQ/D,EAAeiD,GAAMe,EAAMf,CAAC,GAAKA,EAAE,SAASjD,CAAG,EAAzCgE,CAClB,EACMC,GAAkB,CAAC,CAACF,CAAE,IAAM,CAC9B,MAAMO,EAAMP,EAAG,OACf,OAAQd,GAAMA,EAAE,SAAWqB,GAAO,CAACrB,EAAE,WAAW,GAAG,CACvD,EACMkB,GAAqB,CAAC,CAACJ,CAAE,IAAM,CACjC,MAAMO,EAAMP,EAAG,OACf,OAAQd,GAAMA,EAAE,SAAWqB,GAAOrB,IAAM,KAAOA,IAAM,IACzD,EAEMsB,GAAmB,OAAOC,GAAY,UAAYA,EACjD,OAAOC,IAAgB,UACtBA,IACAA,GAAY,gCACZD,EAAQ,SACV,QACAE,GAAO,CACT,MAAO,CAAE,IAAK,IAAA,EACd,MAAO,CAAE,IAAK,GAAA,CAClB,EAEaC,GAAMJ,KAAoB,QAAUG,GAAK,MAAM,IAAMA,GAAK,MAAM,IAC7E7B,EAAU,IAAM8B,GACT,MAAMC,SAAkB,aAAa,EAC5C/B,EAAU,SAAW+B,EAGrB,MAAM1G,GAAQ,OAERC,GAAOD,GAAQ,KAIf2G,GAAa,0CAGbC,GAAe,0BACRC,GAAS,CAACtJ,EAAS7C,EAAU,CAAA,IAAQF,GAAMmK,EAAUnK,EAAG+C,EAAS7C,CAAO,EACrFiK,EAAU,OAASkC,GACnB,MAAM/E,EAAM,CAACxJ,EAAGC,EAAI,CAAA,IAAO,OAAO,OAAO,CAAA,EAAID,EAAGC,CAAC,EACpCuO,GAAYC,GAAQ,CAC7B,GAAI,CAACA,GAAO,OAAOA,GAAQ,UAAY,CAAC,OAAO,KAAKA,CAAG,EAAE,OACrD,OAAOpC,EAEX,MAAMqC,EAAOrC,EAEb,OAAO,OAAO,OADJ,CAACnK,EAAG+C,EAAS7C,EAAU,CAAA,IAAOsM,EAAKxM,EAAG+C,EAASuE,EAAIiF,EAAKrM,CAAO,CAAC,EAClD,CACpB,UAAW,cAAwBsM,EAAK,SAAU,CAC9C,YAAYzJ,EAAS7C,EAAU,GAAI,CAC/B,MAAM6C,EAASuE,EAAIiF,EAAKrM,CAAO,CAAC,CACpC,CACA,OAAO,SAASA,EAAS,CACrB,OAAOsM,EAAK,SAASlF,EAAIiF,EAAKrM,CAAO,CAAC,EAAE,SAC5C,CAAA,EAEJ,IAAK,cAAkBsM,EAAK,GAAI,CAE5B,YAAYjG,EAAMC,EAAQtG,EAAU,CAAA,EAAI,CACpC,MAAMqG,EAAMC,EAAQc,EAAIiF,EAAKrM,CAAO,CAAC,CACzC,CAEA,OAAO,SAAS6C,EAAS7C,EAAU,GAAI,CACnC,OAAOsM,EAAK,IAAI,SAASzJ,EAASuE,EAAIiF,EAAKrM,CAAO,CAAC,CACvD,CAAA,EAEJ,SAAU,CAACgD,EAAGhD,EAAU,KAAOsM,EAAK,SAAStJ,EAAGoE,EAAIiF,EAAKrM,CAAO,CAAC,EACjE,OAAQ,CAACgD,EAAGhD,EAAU,KAAOsM,EAAK,OAAOtJ,EAAGoE,EAAIiF,EAAKrM,CAAO,CAAC,EAC7D,OAAQ,CAAC6C,EAAS7C,EAAU,KAAOsM,EAAK,OAAOzJ,EAASuE,EAAIiF,EAAKrM,CAAO,CAAC,EACzE,SAAWA,GAAYsM,EAAK,SAASlF,EAAIiF,EAAKrM,CAAO,CAAC,EACtD,OAAQ,CAAC6C,EAAS7C,EAAU,KAAOsM,EAAK,OAAOzJ,EAASuE,EAAIiF,EAAKrM,CAAO,CAAC,EACzE,YAAa,CAAC6C,EAAS7C,EAAU,KAAOsM,EAAK,YAAYzJ,EAASuE,EAAIiF,EAAKrM,CAAO,CAAC,EACnF,MAAO,CAACuM,EAAM1J,EAAS7C,EAAU,CAAA,IAAOsM,EAAK,MAAMC,EAAM1J,EAASuE,EAAIiF,EAAKrM,CAAO,CAAC,EACnF,IAAKsM,EAAK,IACV,SAAAN,CAAA,CACH,CACL,EACA/B,EAAU,SAAWmC,GAWd,MAAMI,GAAc,CAAC3J,EAAS7C,EAAU,MAC3C4C,EAAmBC,CAAO,EAGtB7C,EAAQ,SAAW,CAAC,mBAAmB,KAAK6C,CAAO,EAE5C,CAACA,CAAO,EAEZ1C,GAAO0C,CAAO,GAEzBoH,EAAU,YAAcuC,GAYjB,MAAMC,GAAS,CAAC5J,EAAS7C,EAAU,CAAA,IAAO,IAAIkK,EAAUrH,EAAS7C,CAAO,EAAE,OAAA,EACjFiK,EAAU,OAASwC,GACZ,MAAMC,GAAQ,CAACH,EAAM1J,EAAS7C,EAAU,CAAA,IAAO,CAClD,MAAM2M,EAAK,IAAIzC,EAAUrH,EAAS7C,CAAO,EACzC,OAAAuM,EAAOA,EAAK,OAAOlC,GAAKsC,EAAG,MAAMtC,CAAC,CAAC,EAC/BsC,EAAG,QAAQ,QAAU,CAACJ,EAAK,QAC3BA,EAAK,KAAK1J,CAAO,EAEd0J,CACX,EACAtC,EAAU,MAAQyC,GAElB,MAAME,GAAY,0BACZvH,GAAgBrC,GAAMA,EAAE,QAAQ,2BAA4B,MAAM,EACjE,MAAMkH,CAAU,CACnB,QACA,IACA,QACA,qBACA,SACA,OACA,QACA,MACA,wBACA,QACA,QACA,UACA,OACA,UACA,SACA,mBACA,qBACA,OACA,YAAYrH,EAAS7C,EAAU,GAAI,CAC/B4C,EAAmBC,CAAO,EAC1B7C,EAAUA,GAAW,CAAA,EACrB,KAAK,QAAUA,EACf,KAAK,qBAAuBA,EAAQ,sBAAwB,IAC5D,KAAK,QAAU6C,EACf,KAAK,SAAW7C,EAAQ,UAAY2L,GACpC,KAAK,UAAY,KAAK,WAAa,QACnC,KAAK,qBACD,CAAC,CAAC3L,EAAQ,sBAAwBA,EAAQ,qBAAuB,GACjE,KAAK,uBACL,KAAK,QAAU,KAAK,QAAQ,QAAQ,MAAO,GAAG,GAElD,KAAK,wBAA0B,CAAC,CAACA,EAAQ,wBACzC,KAAK,OAAS,KACd,KAAK,OAAS,GACd,KAAK,SAAW,CAAC,CAACA,EAAQ,SAC1B,KAAK,QAAU,GACf,KAAK,MAAQ,GACb,KAAK,QAAU,CAAC,CAACA,EAAQ,QACzB,KAAK,OAAS,CAAC,CAAC,KAAK,QAAQ,OAC7B,KAAK,mBACDA,EAAQ,qBAAuB,OACzBA,EAAQ,mBACR,CAAC,EAAE,KAAK,WAAa,KAAK,QACpC,KAAK,QAAU,CAAA,EACf,KAAK,UAAY,CAAA,EACjB,KAAK,IAAM,CAAA,EAEX,KAAK,KAAA,CACT,CACA,UAAW,CACP,GAAI,KAAK,QAAQ,eAAiB,KAAK,IAAI,OAAS,EAChD,MAAO,GAEX,UAAW6C,KAAW,KAAK,IACvB,UAAW4D,KAAQ5D,EACf,GAAI,OAAO4D,GAAS,SAChB,MAAO,GAGnB,MAAO,EACX,CACA,SAASqC,EAAG,CAAE,CACd,MAAO,CACH,MAAMjG,EAAU,KAAK,QACf7C,EAAU,KAAK,QAErB,GAAI,CAACA,EAAQ,WAAa6C,EAAQ,OAAO,CAAC,IAAM,IAAK,CACjD,KAAK,QAAU,GACf,MACJ,CACA,GAAI,CAACA,EAAS,CACV,KAAK,MAAQ,GACb,MACJ,CAEA,KAAK,YAAA,EAEL,KAAK,QAAU,CAAC,GAAG,IAAI,IAAI,KAAK,YAAA,CAAa,CAAC,EAC1C7C,EAAQ,QACR,KAAK,MAAQ,IAAI6M,IAAS,QAAQ,MAAM,GAAGA,CAAI,GAEnD,KAAK,MAAM,KAAK,QAAS,KAAK,OAAO,EAUrC,MAAMC,EAAe,KAAK,QAAQ,OAAS,KAAK,WAAW9J,CAAC,CAAC,EAC7D,KAAK,UAAY,KAAK,WAAW8J,CAAY,EAC7C,KAAK,MAAM,KAAK,QAAS,KAAK,SAAS,EAEvC,IAAIC,EAAM,KAAK,UAAU,IAAI,CAAC/J,EAAG8F,EAAGkE,IAAO,CACvC,GAAI,KAAK,WAAa,KAAK,mBAAoB,CAE3C,MAAMC,EAAQjK,EAAE,CAAC,IAAM,IACnBA,EAAE,CAAC,IAAM,KACRA,EAAE,CAAC,IAAM,KAAO,CAAC4J,GAAU,KAAK5J,EAAE,CAAC,CAAC,IACrC,CAAC4J,GAAU,KAAK5J,EAAE,CAAC,CAAC,EAClBkK,EAAU,WAAW,KAAKlK,EAAE,CAAC,CAAC,EACpC,GAAIiK,EACA,MAAO,CAAC,GAAGjK,EAAE,MAAM,EAAG,CAAC,EAAG,GAAGA,EAAE,MAAM,CAAC,EAAE,IAAImK,GAAM,KAAK,MAAMA,CAAE,CAAC,CAAC,KAE5DD,EACL,MAAO,CAAClK,EAAE,CAAC,EAAG,GAAGA,EAAE,MAAM,CAAC,EAAE,IAAImK,GAAM,KAAK,MAAMA,CAAE,CAAC,CAAC,CAE7D,CACA,OAAOnK,EAAE,IAAImK,GAAM,KAAK,MAAMA,CAAE,CAAC,CACrC,CAAC,EAKD,GAJA,KAAK,MAAM,KAAK,QAASJ,CAAG,EAE5B,KAAK,IAAMA,EAAI,OAAO/J,GAAKA,EAAE,QAAQ,EAAK,IAAM,EAAE,EAE9C,KAAK,UACL,QAASrE,EAAI,EAAGA,EAAI,KAAK,IAAI,OAAQA,IAAK,CACtC,MAAMmB,EAAI,KAAK,IAAInB,CAAC,EAChBmB,EAAE,CAAC,IAAM,IACTA,EAAE,CAAC,IAAM,IACT,KAAK,UAAUnB,CAAC,EAAE,CAAC,IAAM,KACzB,OAAOmB,EAAE,CAAC,GAAM,UAChB,YAAY,KAAKA,EAAE,CAAC,CAAC,IACrBA,EAAE,CAAC,EAAI,IAEf,CAEJ,KAAK,MAAM,KAAK,QAAS,KAAK,GAAG,CACrC,CAMA,WAAWsN,EAAW,CAElB,GAAI,KAAK,QAAQ,WACb,QAASzO,EAAI,EAAGA,EAAIyO,EAAU,OAAQzO,IAClC,QAAS6D,EAAI,EAAGA,EAAI4K,EAAUzO,CAAC,EAAE,OAAQ6D,IACjC4K,EAAUzO,CAAC,EAAE6D,CAAC,IAAM,OACpB4K,EAAUzO,CAAC,EAAE6D,CAAC,EAAI,KAKlC,KAAM,CAAE,kBAAA6K,EAAoB,CAAA,EAAM,KAAK,QACvC,OAAIA,GAAqB,GAErBD,EAAY,KAAK,qBAAqBA,CAAS,EAC/CA,EAAY,KAAK,sBAAsBA,CAAS,GAE3CC,GAAqB,EAE1BD,EAAY,KAAK,iBAAiBA,CAAS,EAI3CA,EAAY,KAAK,0BAA0BA,CAAS,EAEjDA,CACX,CAEA,0BAA0BA,EAAW,CACjC,OAAOA,EAAU,IAAI1N,GAAS,CAC1B,IAAI4N,EAAK,GACT,MAAeA,EAAK5N,EAAM,QAAQ,KAAM4N,EAAK,CAAC,KAAvC,IAA2C,CAC9C,IAAI3O,EAAI2O,EACR,KAAO5N,EAAMf,EAAI,CAAC,IAAM,MACpBA,IAEAA,IAAM2O,GACN5N,EAAM,OAAO4N,EAAI3O,EAAI2O,CAAE,CAE/B,CACA,OAAO5N,CACX,CAAC,CACL,CAEA,iBAAiB0N,EAAW,CACxB,OAAOA,EAAU,IAAI1N,IACjBA,EAAQA,EAAM,OAAO,CAACqN,EAAKtG,IAAS,CAChC,MAAM8G,EAAOR,EAAIA,EAAI,OAAS,CAAC,EAC/B,OAAItG,IAAS,MAAQ8G,IAAS,KACnBR,EAEPtG,IAAS,MACL8G,GAAQA,IAAS,MAAQA,IAAS,KAAOA,IAAS,MAClDR,EAAI,IAAA,EACGA,IAGfA,EAAI,KAAKtG,CAAI,EACNsG,EACX,EAAG,CAAA,CAAE,EACErN,EAAM,SAAW,EAAI,CAAC,EAAE,EAAIA,EACtC,CACL,CACA,qBAAqBA,EAAO,CACnB,MAAM,QAAQA,CAAK,IACpBA,EAAQ,KAAK,WAAWA,CAAK,GAEjC,IAAI8N,EAAe,GACnB,EAAG,CAGC,GAFAA,EAAe,GAEX,CAAC,KAAK,wBAAyB,CAC/B,QAAS7O,EAAI,EAAGA,EAAIe,EAAM,OAAS,EAAGf,IAAK,CACvC,MAAMmB,EAAIJ,EAAMf,CAAC,EAEbA,IAAM,GAAKmB,IAAM,IAAMJ,EAAM,CAAC,IAAM,KAEpCI,IAAM,KAAOA,IAAM,MACnB0N,EAAe,GACf9N,EAAM,OAAOf,EAAG,CAAC,EACjBA,IAER,CACIe,EAAM,CAAC,IAAM,KACbA,EAAM,SAAW,IAChBA,EAAM,CAAC,IAAM,KAAOA,EAAM,CAAC,IAAM,MAClC8N,EAAe,GACf9N,EAAM,IAAA,EAEd,CAEA,IAAI+N,EAAK,EACT,MAAeA,EAAK/N,EAAM,QAAQ,KAAM+N,EAAK,CAAC,KAAvC,IAA2C,CAC9C,MAAM3N,EAAIJ,EAAM+N,EAAK,CAAC,EAClB3N,GAAKA,IAAM,KAAOA,IAAM,MAAQA,IAAM,OACtC0N,EAAe,GACf9N,EAAM,OAAO+N,EAAK,EAAG,CAAC,EACtBA,GAAM,EAEd,CACJ,OAASD,GACT,OAAO9N,EAAM,SAAW,EAAI,CAAC,EAAE,EAAIA,CACvC,CAmBA,qBAAqB0N,EAAW,CAC5B,IAAII,EAAe,GACnB,EAAG,CACCA,EAAe,GAEf,QAAS9N,KAAS0N,EAAW,CACzB,IAAIE,EAAK,GACT,MAAeA,EAAK5N,EAAM,QAAQ,KAAM4N,EAAK,CAAC,KAAvC,IAA2C,CAC9C,IAAII,EAAMJ,EACV,KAAO5N,EAAMgO,EAAM,CAAC,IAAM,MAEtBA,IAIAA,EAAMJ,GACN5N,EAAM,OAAO4N,EAAK,EAAGI,EAAMJ,CAAE,EAEjC,IAAIK,EAAOjO,EAAM4N,EAAK,CAAC,EACvB,MAAMxN,EAAIJ,EAAM4N,EAAK,CAAC,EAChBM,EAAKlO,EAAM4N,EAAK,CAAC,EAGvB,GAFIK,IAAS,MAET,CAAC7N,GACDA,IAAM,KACNA,IAAM,MACN,CAAC8N,GACDA,IAAO,KACPA,IAAO,KACP,SAEJJ,EAAe,GAEf9N,EAAM,OAAO4N,EAAI,CAAC,EAClB,MAAMO,EAAQnO,EAAM,MAAM,CAAC,EAC3BmO,EAAMP,CAAE,EAAI,KACZF,EAAU,KAAKS,CAAK,EACpBP,GACJ,CAEA,GAAI,CAAC,KAAK,wBAAyB,CAC/B,QAAS,EAAI,EAAG,EAAI5N,EAAM,OAAS,EAAG,IAAK,CACvC,MAAMI,EAAIJ,EAAM,CAAC,EAEb,IAAM,GAAKI,IAAM,IAAMJ,EAAM,CAAC,IAAM,KAEpCI,IAAM,KAAOA,IAAM,MACnB0N,EAAe,GACf9N,EAAM,OAAO,EAAG,CAAC,EACjB,IAER,CACIA,EAAM,CAAC,IAAM,KACbA,EAAM,SAAW,IAChBA,EAAM,CAAC,IAAM,KAAOA,EAAM,CAAC,IAAM,MAClC8N,EAAe,GACf9N,EAAM,IAAA,EAEd,CAEA,IAAI+N,EAAK,EACT,MAAeA,EAAK/N,EAAM,QAAQ,KAAM+N,EAAK,CAAC,KAAvC,IAA2C,CAC9C,MAAM3N,EAAIJ,EAAM+N,EAAK,CAAC,EACtB,GAAI3N,GAAKA,IAAM,KAAOA,IAAM,MAAQA,IAAM,KAAM,CAC5C0N,EAAe,GAEf,MAAMM,EADUL,IAAO,GAAK/N,EAAM+N,EAAK,CAAC,IAAM,KACtB,CAAC,GAAG,EAAI,CAAA,EAChC/N,EAAM,OAAO+N,EAAK,EAAG,EAAG,GAAGK,CAAK,EAC5BpO,EAAM,SAAW,GACjBA,EAAM,KAAK,EAAE,EACjB+N,GAAM,CACV,CACJ,CACJ,CACJ,OAASD,GACT,OAAOJ,CACX,CAQA,sBAAsBA,EAAW,CAC7B,QAASzO,EAAI,EAAGA,EAAIyO,EAAU,OAAS,EAAGzO,IACtC,QAAS6D,EAAI7D,EAAI,EAAG6D,EAAI4K,EAAU,OAAQ5K,IAAK,CAC3C,MAAMuL,EAAU,KAAK,WAAWX,EAAUzO,CAAC,EAAGyO,EAAU5K,CAAC,EAAG,CAAC,KAAK,uBAAuB,EACzF,GAAIuL,EAAS,CACTX,EAAUzO,CAAC,EAAI,CAAA,EACfyO,EAAU5K,CAAC,EAAIuL,EACf,KACJ,CACJ,CAEJ,OAAOX,EAAU,OAAOE,GAAMA,EAAG,MAAM,CAC3C,CACA,WAAW1P,EAAGC,EAAGmQ,EAAe,GAAO,CACnC,IAAIvP,EAAK,EACLC,EAAK,EACLF,EAAS,CAAA,EACTyP,EAAQ,GACZ,KAAOxP,EAAKb,EAAE,QAAUc,EAAKb,EAAE,QAC3B,GAAID,EAAEa,CAAE,IAAMZ,EAAEa,CAAE,EACdF,EAAO,KAAKyP,IAAU,IAAMpQ,EAAEa,CAAE,EAAId,EAAEa,CAAE,CAAC,EACzCA,IACAC,YAEKsP,GAAgBpQ,EAAEa,CAAE,IAAM,MAAQZ,EAAEa,CAAE,IAAMd,EAAEa,EAAK,CAAC,EACzDD,EAAO,KAAKZ,EAAEa,CAAE,CAAC,EACjBA,YAEKuP,GAAgBnQ,EAAEa,CAAE,IAAM,MAAQd,EAAEa,CAAE,IAAMZ,EAAEa,EAAK,CAAC,EACzDF,EAAO,KAAKX,EAAEa,CAAE,CAAC,EACjBA,YAEKd,EAAEa,CAAE,IAAM,KACfZ,EAAEa,CAAE,IACH,KAAK,QAAQ,KAAO,CAACb,EAAEa,CAAE,EAAE,WAAW,GAAG,IAC1Cb,EAAEa,CAAE,IAAM,KAAM,CAChB,GAAIuP,IAAU,IACV,MAAO,GACXA,EAAQ,IACRzP,EAAO,KAAKZ,EAAEa,CAAE,CAAC,EACjBA,IACAC,GACJ,SACSb,EAAEa,CAAE,IAAM,KACfd,EAAEa,CAAE,IACH,KAAK,QAAQ,KAAO,CAACb,EAAEa,CAAE,EAAE,WAAW,GAAG,IAC1Cb,EAAEa,CAAE,IAAM,KAAM,CAChB,GAAIwP,IAAU,IACV,MAAO,GACXA,EAAQ,IACRzP,EAAO,KAAKX,EAAEa,CAAE,CAAC,EACjBD,IACAC,GACJ,KAEI,OAAO,GAKf,OAAOd,EAAE,SAAWC,EAAE,QAAUW,CACpC,CACA,aAAc,CACV,GAAI,KAAK,SACL,OACJ,MAAMqE,EAAU,KAAK,QACrB,IAAIe,EAAS,GACTsK,EAAe,EACnB,QAASvP,EAAI,EAAGA,EAAIkE,EAAQ,QAAUA,EAAQ,OAAOlE,CAAC,IAAM,IAAKA,IAC7DiF,EAAS,CAACA,EACVsK,IAEAA,IACA,KAAK,QAAUrL,EAAQ,MAAMqL,CAAY,GAC7C,KAAK,OAAStK,CAClB,CAMA,SAASuK,EAAMtL,EAASuL,EAAU,GAAO,CACrC,IAAIC,EAAiB,EACjBC,EAAoB,EAIxB,GAAI,KAAK,UAAW,CAChB,MAAMC,EAAY,OAAOJ,EAAK,CAAC,GAAM,UAAY,YAAY,KAAKA,EAAK,CAAC,CAAC,EACnEK,EAAU,CAACD,GACbJ,EAAK,CAAC,IAAM,IACZA,EAAK,CAAC,IAAM,IACZA,EAAK,CAAC,IAAM,KACZ,YAAY,KAAKA,EAAK,CAAC,CAAC,EACtBM,EAAe,OAAO5L,EAAQ,CAAC,GAAM,UAAY,YAAY,KAAKA,EAAQ,CAAC,CAAC,EAC5E6L,EAAa,CAACD,GAChB5L,EAAQ,CAAC,IAAM,IACfA,EAAQ,CAAC,IAAM,IACfA,EAAQ,CAAC,IAAM,KACf,OAAOA,EAAQ,CAAC,GAAM,UACtB,YAAY,KAAKA,EAAQ,CAAC,CAAC,EACzB8L,EAAMH,EAAU,EAAID,EAAY,EAAI,OACpCK,EAAMF,EAAa,EAAID,EAAe,EAAI,OAChD,GAAI,OAAOE,GAAQ,UAAY,OAAOC,GAAQ,SAAU,CACpD,KAAM,CAACC,EAAIC,CAAE,EAAI,CACbX,EAAKQ,CAAG,EACR9L,EAAQ+L,CAAG,CAAA,EAEXC,EAAG,YAAA,IAAkBC,EAAG,gBACxBjM,EAAQ+L,CAAG,EAAIC,EACfP,EAAoBM,EACpBP,EAAiBM,EAEzB,CACJ,CAGA,KAAM,CAAE,kBAAAtB,EAAoB,CAAA,EAAM,KAAK,QAIvC,OAHIA,GAAqB,IACrBc,EAAO,KAAK,qBAAqBA,CAAI,GAErCtL,EAAQ,SAASmJ,CAAQ,EAClB,KAAK+C,GAAeZ,EAAMtL,EAASuL,EAASC,EAAgBC,CAAiB,EAEjF,KAAKU,GAAUb,EAAMtL,EAASuL,EAASC,EAAgBC,CAAiB,CACnF,CACAS,GAAeZ,EAAMtL,EAASuL,EAASa,EAAWC,EAAc,CAC5D,MAAMC,EAAUtM,EAAQ,QAAQmJ,EAAUkD,CAAY,EAChDE,EAASvM,EAAQ,YAAYmJ,CAAQ,EACrC,CAACqD,EAAMzP,EAAM0P,CAAI,EAAIlB,EAAU,CACjCvL,EAAQ,MAAMqM,EAAcC,CAAO,EACnCtM,EAAQ,MAAMsM,EAAU,CAAC,EACzB,CAAA,CAAC,EACD,CACAtM,EAAQ,MAAMqM,EAAcC,CAAO,EACnCtM,EAAQ,MAAMsM,EAAU,EAAGC,CAAM,EACjCvM,EAAQ,MAAMuM,EAAS,CAAC,CAAA,EAE5B,GAAIC,EAAK,OAAQ,CACb,MAAME,EAAWpB,EAAK,MAAMc,EAAWA,EAAYI,EAAK,MAAM,EAC9D,GAAI,CAAC,KAAKL,GAAUO,EAAUF,EAAMjB,EAAS,EAAG,CAAC,EAC7C,MAAO,GACXa,GAAaI,EAAK,MACtB,CACA,IAAIG,EAAgB,EACpB,GAAIF,EAAK,OAAQ,CACb,GAAIA,EAAK,OAASL,EAAYd,EAAK,OAC/B,MAAO,GACX,IAAIsB,EAAYtB,EAAK,OAASmB,EAAK,OACnC,GAAI,KAAKN,GAAUb,EAAMmB,EAAMlB,EAASqB,EAAW,CAAC,EAChDD,EAAgBF,EAAK,WAEpB,CAMD,GALInB,EAAKA,EAAK,OAAS,CAAC,IAAM,IAC1Bc,EAAYK,EAAK,SAAWnB,EAAK,SAGrCsB,IACI,CAAC,KAAKT,GAAUb,EAAMmB,EAAMlB,EAASqB,EAAW,CAAC,GACjD,MAAO,GACXD,EAAgBF,EAAK,OAAS,CAClC,CACJ,CACA,GAAI,CAAC1P,EAAK,OAAQ,CACd,IAAI8P,EAAU,CAAC,CAACF,EAChB,QAAS7Q,EAAIsQ,EAAWtQ,EAAIwP,EAAK,OAASqB,EAAe7Q,IAAK,CAC1D,MAAM0L,EAAI,OAAO8D,EAAKxP,CAAC,CAAC,EAExB,GADA+Q,EAAU,GACNrF,IAAM,KAAOA,IAAM,MAClB,CAAC,KAAK,QAAQ,KAAOA,EAAE,WAAW,GAAG,EACtC,MAAO,EAEf,CACA,OAAO+D,GAAWsB,CACtB,CACA,MAAMC,EAAe,CAAC,CAAC,CAAA,EAAI,CAAC,CAAC,EAC7B,IAAIC,EAAcD,EAAa,CAAC,EAC5BE,EAAa,EACjB,MAAMC,EAAiB,CAAC,CAAC,EACzB,UAAWjS,KAAK+B,EACR/B,IAAMmO,GACN8D,EAAe,KAAKD,CAAU,EAC9BD,EAAc,CAAC,CAAA,EAAI,CAAC,EACpBD,EAAa,KAAKC,CAAW,IAG7BA,EAAY,CAAC,EAAE,KAAK/R,CAAC,EACrBgS,KAGR,IAAIlR,EAAIgR,EAAa,OAAS,EAC9B,MAAMI,EAAa5B,EAAK,OAASqB,EACjC,UAAW3R,KAAK8R,EACZ9R,EAAE,CAAC,EAAIkS,GAAcD,EAAenR,GAAG,EAAId,EAAE,CAAC,EAAE,QAEpD,MAAO,CAAC,CAAC,KAAKmS,GAA2B7B,EAAMwB,EAAcV,EAAW,EAAGb,EAAS,EAAG,CAAC,CAACoB,CAAa,CAC1G,CACAQ,GAA2B7B,EAAMwB,EAAcV,EAAWgB,EAAW7B,EAAS8B,EAAeC,EAAS,CAClG,MAAMC,EAAKT,EAAaM,CAAS,EACjC,GAAI,CAACG,EAAI,CACL,QAASzR,EAAIsQ,EAAWtQ,EAAIwP,EAAK,OAAQxP,IAAK,CAC1CwR,EAAU,GACV,MAAM9F,EAAI8D,EAAKxP,CAAC,EAChB,GAAI0L,IAAM,KAAOA,IAAM,MAClB,CAAC,KAAK,QAAQ,KAAOA,EAAE,WAAW,GAAG,EACtC,MAAO,EAEf,CACA,OAAO8F,CACX,CACA,KAAM,CAACvQ,EAAMyQ,CAAK,EAAID,EACtB,KAAOnB,GAAaoB,GAAO,CAEvB,GADU,KAAKrB,GAAUb,EAAK,MAAM,EAAGc,EAAYrP,EAAK,MAAM,EAAGA,EAAMwO,EAASa,EAAW,CAAC,GACnFiB,EAAgB,KAAK,qBAAsB,CAChD,MAAMI,EAAM,KAAKN,GAA2B7B,EAAMwB,EAAcV,EAAYrP,EAAK,OAAQqQ,EAAY,EAAG7B,EAAS8B,EAAgB,EAAGC,CAAO,EAC3I,GAAIG,IAAQ,GACR,OAAOA,CACf,CACA,MAAMjG,EAAI8D,EAAKc,CAAS,EACxB,GAAI5E,IAAM,KAAOA,IAAM,MAClB,CAAC,KAAK,QAAQ,KAAOA,EAAE,WAAW,GAAG,EACtC,MAAO,GAEX4E,GACJ,CACA,OAAOb,GAAW,IACtB,CACAY,GAAUb,EAAMtL,EAASuL,EAASa,EAAWC,EAAc,CACvD,IAAIqB,EACAC,EACA7J,EACA8J,EACJ,IAAKF,EAAKtB,EAAWuB,EAAKtB,EACtBuB,EAAKtC,EAAK,OAAQxH,EAAK9D,EAAQ,OAAQ0N,EAAKE,GAAMD,EAAK7J,EAAI4J,IAAMC,IAAM,CACvE,KAAK,MAAM,eAAe,EAC1B,IAAI1Q,EAAI+C,EAAQ2N,CAAE,EACdnG,EAAI8D,EAAKoC,CAAE,EAGf,GAFA,KAAK,MAAM1N,EAAS/C,EAAGuK,CAAC,EAEpBvK,IAAM,IAASA,IAAMkM,EACrB,MAAO,GAEX,IAAI0E,EASJ,GARI,OAAO5Q,GAAM,UACb4Q,EAAMrG,IAAMvK,EACZ,KAAK,MAAM,eAAgBA,EAAGuK,EAAGqG,CAAG,IAGpCA,EAAM5Q,EAAE,KAAKuK,CAAC,EACd,KAAK,MAAM,gBAAiBvK,EAAGuK,EAAGqG,CAAG,GAErC,CAACA,EACD,MAAO,EACf,CACA,GAAIH,IAAOE,GAAMD,IAAO7J,EACpB,MAAO,GACX,GACS4J,IAAOE,EACZ,OAAOrC,EACX,GACSoC,IAAO7J,EACZ,OAAO4J,IAAOE,EAAK,GAAKtC,EAAKoC,CAAE,IAAM,GAIrC,MAAM,IAAI,MAAM,MAAM,CAG9B,CACA,aAAc,CACV,OAAO/D,GAAY,KAAK,QAAS,KAAK,OAAO,CACjD,CACA,MAAM3J,EAAS,CACXD,EAAmBC,CAAO,EAC1B,MAAM7C,EAAU,KAAK,QAErB,GAAI6C,IAAY,KACZ,OAAOmJ,EACX,GAAInJ,IAAY,GACZ,MAAO,GAGX,IAAI1E,EACAwS,EAAW,MACVxS,EAAI0E,EAAQ,MAAMiI,EAAM,GACzB6F,EAAW3Q,EAAQ,IAAMgL,GAAcD,IAEjC5M,EAAI0E,EAAQ,MAAMsH,EAAY,GACpCwG,GAAY3Q,EAAQ,OACdA,EAAQ,IACJwK,GACAD,GACJvK,EAAQ,IACJsK,GACAF,IAAgBjM,EAAE,CAAC,CAAC,GAExBA,EAAI0E,EAAQ,MAAMoI,EAAQ,GAChC0F,GAAY3Q,EAAQ,OACdA,EAAQ,IACJsL,GACAJ,GACJlL,EAAQ,IACJwL,GACAC,IAAYtN,CAAC,GAEjBA,EAAI0E,EAAQ,MAAM4H,EAAa,GACrCkG,EAAW3Q,EAAQ,IAAM2K,GAAqBD,IAExCvM,EAAI0E,EAAQ,MAAM+H,EAAS,KACjC+F,EAAW9F,IAEf,MAAMtC,EAAK9C,GAAI,SAAS5C,EAAS,KAAK,OAAO,EAAE,YAAA,EAC/C,OAAI8N,GAAY,OAAOpI,GAAO,UAE1B,QAAQ,eAAeA,EAAI,OAAQ,CAAE,MAAOoI,EAAU,EAEnDpI,CACX,CACA,QAAS,CACL,GAAI,KAAK,QAAU,KAAK,SAAW,GAC/B,OAAO,KAAK,OAOhB,MAAMwE,EAAM,KAAK,IACjB,GAAI,CAACA,EAAI,OACL,OAAA,KAAK,OAAS,GACP,KAAK,OAEhB,MAAM/M,EAAU,KAAK,QACf4Q,EAAU5Q,EAAQ,WAClBuF,GACAvF,EAAQ,IACJiM,GACAC,GACJzD,EAAQ,IAAI,IAAIzI,EAAQ,OAAS,CAAC,GAAG,EAAI,EAAE,EAOjD,IAAIuI,EAAKwE,EACJ,IAAIlK,GAAW,CAChB,MAAM2D,EAAK3D,EAAQ,IAAI/C,GAAK,CACxB,GAAIA,aAAa,OACb,UAAWuK,KAAKvK,EAAE,MAAM,MAAM,EAAE,EAC5B2I,EAAM,IAAI4B,CAAC,EAEnB,OAAO,OAAOvK,GAAM,SACduF,GAAavF,CAAC,EACdA,IAAMkM,EACFA,EACAlM,EAAE,IAChB,CAAC,EACD,OAAA0G,EAAG,QAAQ,CAAC1G,EAAGnB,IAAM,CACjB,MAAMgP,EAAOnH,EAAG7H,EAAI,CAAC,EACf4O,EAAO/G,EAAG7H,EAAI,CAAC,EACjBmB,IAAMkM,GAAYuB,IAASvB,IAG3BuB,IAAS,OACLI,IAAS,QAAaA,IAAS3B,EAC/BxF,EAAG7H,EAAI,CAAC,EAAI,UAAYiS,EAAU,QAAUjD,EAG5CnH,EAAG7H,CAAC,EAAIiS,EAGPjD,IAAS,OACdnH,EAAG7H,EAAI,CAAC,EAAI4O,EAAO,UAAYqD,EAAU,KAEpCjD,IAAS3B,IACdxF,EAAG7H,EAAI,CAAC,EAAI4O,EAAO,aAAeqD,EAAU,OAASjD,EACrDnH,EAAG7H,EAAI,CAAC,EAAIqN,GAEpB,CAAC,EACMxF,EAAG,OAAO1G,GAAKA,IAAMkM,CAAQ,EAAE,KAAK,GAAG,CAClD,CAAC,EACI,KAAK,GAAG,EAGb,KAAM,CAAC6E,EAAMnH,CAAK,EAAIqD,EAAI,OAAS,EAAI,CAAC,MAAO,GAAG,EAAI,CAAC,GAAI,EAAE,EAG7DxE,EAAK,IAAMsI,EAAOtI,EAAKmB,EAAQ,IAE3B,KAAK,SACLnB,EAAK,OAASA,EAAK,QACvB,GAAI,CACA,KAAK,OAAS,IAAI,OAAOA,EAAI,CAAC,GAAGE,CAAK,EAAE,KAAK,EAAE,CAAC,CAEpD,MACW,CAEP,KAAK,OAAS,EAClB,CAEA,OAAO,KAAK,MAChB,CACA,WAAW3I,EAAG,CAKV,OAAI,KAAK,wBACEA,EAAE,MAAM,GAAG,EAEb,KAAK,WAAa,cAAc,KAAKA,CAAC,EAEpC,CAAC,GAAI,GAAGA,EAAE,MAAM,KAAK,CAAC,EAGtBA,EAAE,MAAM,KAAK,CAE5B,CACA,MAAMuK,EAAG+D,EAAU,KAAK,QAAS,CAI7B,GAHA,KAAK,MAAM,QAAS/D,EAAG,KAAK,OAAO,EAG/B,KAAK,QACL,MAAO,GAEX,GAAI,KAAK,MACL,OAAOA,IAAM,GAEjB,GAAIA,IAAM,KAAO+D,EACb,MAAO,GAEX,MAAMpO,EAAU,KAAK,QAEjB,KAAK,YACLqK,EAAIA,EAAE,MAAM,IAAI,EAAE,KAAK,GAAG,GAG9B,MAAMyG,EAAK,KAAK,WAAWzG,CAAC,EAC5B,KAAK,MAAM,KAAK,QAAS,QAASyG,CAAE,EAKpC,MAAM/D,EAAM,KAAK,IACjB,KAAK,MAAM,KAAK,QAAS,MAAOA,CAAG,EAEnC,IAAIgE,EAAWD,EAAGA,EAAG,OAAS,CAAC,EAC/B,GAAI,CAACC,EACD,QAASpS,EAAImS,EAAG,OAAS,EAAG,CAACC,GAAYpS,GAAK,EAAGA,IAC7CoS,EAAWD,EAAGnS,CAAC,EAGvB,QAASA,EAAI,EAAGA,EAAIoO,EAAI,OAAQpO,IAAK,CACjC,MAAMkE,EAAUkK,EAAIpO,CAAC,EACrB,IAAIwP,EAAO2C,EAKX,GAJI9Q,EAAQ,WAAa6C,EAAQ,SAAW,IACxCsL,EAAO,CAAC4C,CAAQ,GAER,KAAK,SAAS5C,EAAMtL,EAASuL,CAAO,EAE5C,OAAIpO,EAAQ,WACD,GAEJ,CAAC,KAAK,MAErB,CAGA,OAAIA,EAAQ,WACD,GAEJ,KAAK,MAChB,CACA,OAAO,SAASqM,EAAK,CACjB,OAAOpC,EAAU,SAASoC,CAAG,EAAE,SACnC,CACJ,CAMApC,EAAU,IAAMxE,GAChBwE,EAAU,UAAYC,EACtBD,EAAU,OAASD,GACnBC,EAAU,SAAW3F,EC7+Bd,SAAS0M,GAAuBC,EAAS,CAC5C,MAAMC,EAAS,CAAA,EACf,OAAAD,EAAQ,QAAQ,CAACE,EAAOC,IAAQ,CAC5BF,EAAOE,CAAG,EAAID,CAClB,CAAC,EACMD,CACX,CC0BO,SAASG,GAAuBC,EAAUC,EAAMC,EAAa,GAAO,CACvE,OAAOA,EACD,CACE,KAAAD,EACA,QAASD,EAAS,QAAUN,GAAuBM,EAAS,OAAO,EAAI,CAAA,EACvE,OAAQA,EAAS,OACjB,WAAYA,EAAS,UACjC,EACUC,CACV,8CCnBA,IAAIE,EAAO7S,GAAA,EACP8S,EAAW,SAAUpQ,EAAG,CAC1B,OAAO,OAAOA,GAAM,QACtB,EAOA,SAASqQ,EAAejS,EAAOkS,EAAgB,CAE7C,QADIC,EAAM,CAAA,EACDlT,EAAI,EAAGA,EAAIe,EAAM,OAAQf,IAAK,CACrC,IAAImB,EAAIJ,EAAMf,CAAC,EAGX,CAACmB,GAAKA,IAAM,MAGZA,IAAM,KACJ+R,EAAI,QAAUA,EAAIA,EAAI,OAAS,CAAC,IAAM,KACxCA,EAAI,IAAG,EACED,GACTC,EAAI,KAAK,IAAI,EAGfA,EAAI,KAAK/R,CAAC,EAEhB,CAEE,OAAO+R,CACT,CAIA,IAAIC,EACA,gEACAC,EAAQ,CAAA,EAGZ,SAASC,EAAejB,EAAU,CAChC,OAAOe,EAAY,KAAKf,CAAQ,EAAE,MAAM,CAAC,CAC3C,CAKA,OAAAgB,EAAM,QAAU,UAAW,CAIzB,QAHIE,EAAe,GACfC,EAAmB,GAEdvT,EAAI,UAAU,OAAS,EAAGA,GAAK,IAAM,CAACuT,EAAkBvT,IAAK,CACpE,IAAImN,EAAQnN,GAAK,EAAK,UAAUA,CAAC,EAAIiN,EAAQ,IAAG,EAGhD,GAAK8F,EAAS5F,CAAI,GAEX,GAAI,CAACA,EACV,aAFA,OAAM,IAAI,UAAU,2CAA2C,EAKjEmG,EAAenG,EAAO,IAAMmG,EAC5BC,EAAmBpG,EAAK,OAAO,CAAC,IAAM,GAC1C,CAME,OAAAmG,EAAeN,EAAeM,EAAa,MAAM,GAAG,EACtB,CAACC,CAAgB,EAAE,KAAK,GAAG,GAEhDA,EAAmB,IAAM,IAAMD,GAAiB,GAC3D,EAIAF,EAAM,UAAY,SAASjG,EAAM,CAC/B,IAAIqG,EAAaJ,EAAM,WAAWjG,CAAI,EAClCsG,EAAgBtG,EAAK,OAAO,EAAE,IAAM,IAGxC,OAAAA,EAAO6F,EAAe7F,EAAK,MAAM,GAAG,EAAG,CAACqG,CAAU,EAAE,KAAK,GAAG,EAExD,CAACrG,GAAQ,CAACqG,IACZrG,EAAO,KAELA,GAAQsG,IACVtG,GAAQ,MAGFqG,EAAa,IAAM,IAAMrG,CACnC,EAGAiG,EAAM,WAAa,SAASjG,EAAM,CAChC,OAAOA,EAAK,OAAO,CAAC,IAAM,GAC5B,EAGAiG,EAAM,KAAO,UAAW,CAEtB,QADIjG,EAAO,GACFnN,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAI0T,EAAU,UAAU1T,CAAC,EACzB,GAAI,CAAC+S,EAASW,CAAO,EACnB,MAAM,IAAI,UAAU,wCAAwC,EAE1DA,IACGvG,EAGHA,GAAQ,IAAMuG,EAFdvG,GAAQuG,EAKhB,CACE,OAAON,EAAM,UAAUjG,CAAI,CAC7B,EAKAiG,EAAM,SAAW,SAASO,EAAMC,EAAI,CAClCD,EAAOP,EAAM,QAAQO,CAAI,EAAE,OAAO,CAAC,EACnCC,EAAKR,EAAM,QAAQQ,CAAE,EAAE,OAAO,CAAC,EAE/B,SAASC,EAAKC,EAAK,CAEjB,QADIzJ,EAAQ,EACLA,EAAQyJ,EAAI,QACbA,EAAIzJ,CAAK,IAAM,GADMA,IACzB,CAIF,QADII,EAAMqJ,EAAI,OAAS,EAChBrJ,GAAO,GACRqJ,EAAIrJ,CAAG,IAAM,GADFA,IACf,CAGF,OAAIJ,EAAQI,EAAY,CAAA,EACjBqJ,EAAI,MAAMzJ,EAAOI,EAAM,CAAC,CACnC,CAOE,QALIsJ,EAAYF,EAAKF,EAAK,MAAM,GAAG,CAAC,EAChCK,EAAUH,EAAKD,EAAG,MAAM,GAAG,CAAC,EAE5BxR,EAAS,KAAK,IAAI2R,EAAU,OAAQC,EAAQ,MAAM,EAClDC,EAAkB7R,EACbpC,EAAI,EAAGA,EAAIoC,EAAQpC,IAC1B,GAAI+T,EAAU/T,CAAC,IAAMgU,EAAQhU,CAAC,EAAG,CAC/BiU,EAAkBjU,EAClB,KACN,CAIE,QADIkU,EAAc,CAAA,EACTlU,EAAIiU,EAAiBjU,EAAI+T,EAAU,OAAQ/T,IAClDkU,EAAY,KAAK,IAAI,EAGvB,OAAAA,EAAcA,EAAY,OAAOF,EAAQ,MAAMC,CAAe,CAAC,EAExDC,EAAY,KAAK,GAAG,CAC7B,EAGAd,EAAM,UAAY,SAASjG,EAAM,CAC/B,OAAOA,CACT,EAGAiG,EAAM,QAAU,SAASjG,EAAM,CAC7B,IAAItN,EAASwT,EAAelG,CAAI,EAC5BgH,EAAOtU,EAAO,CAAC,EACfuU,EAAMvU,EAAO,CAAC,EAElB,MAAI,CAACsU,GAAQ,CAACC,EAEL,KAGLA,IAEFA,EAAMA,EAAI,OAAO,EAAGA,EAAI,OAAS,CAAC,GAG7BD,EAAOC,EAChB,EAGAhB,EAAM,SAAW,SAASjG,EAAM1E,EAAK,CACnC,IAAIiD,EAAI2H,EAAelG,CAAI,EAAE,CAAC,EAE9B,OAAI1E,GAAOiD,EAAE,OAAO,GAAKjD,EAAI,MAAM,IAAMA,IACvCiD,EAAIA,EAAE,OAAO,EAAGA,EAAE,OAASjD,EAAI,MAAM,GAEhCiD,CACT,EAGA0H,EAAM,QAAU,SAASjG,EAAM,CAC7B,OAAOkG,EAAelG,CAAI,EAAE,CAAC,CAC/B,EAGAiG,EAAM,OAAS,SAASiB,EAAY,CAClC,GAAI,CAACvB,EAAK,SAASuB,CAAU,EAC3B,MAAM,IAAI,UACN,iDAAmD,OAAOA,GAIhE,IAAIF,EAAOE,EAAW,MAAQ,GAE9B,GAAI,CAACtB,EAASoB,CAAI,EAChB,MAAM,IAAI,UACN,wDACA,OAAOE,EAAW,MAIxB,IAAID,EAAMC,EAAW,IAAMA,EAAW,IAAMjB,EAAM,IAAM,GACpDkB,EAAOD,EAAW,MAAQ,GAC9B,OAAOD,EAAME,CACf,EAGAlB,EAAM,MAAQ,SAASmB,EAAY,CACjC,GAAI,CAACxB,EAASwB,CAAU,EACtB,MAAM,IAAI,UACN,gDAAkD,OAAOA,GAG/D,IAAIC,EAAWnB,EAAekB,CAAU,EACxC,GAAI,CAACC,GAAYA,EAAS,SAAW,EACnC,MAAM,IAAI,UAAU,iBAAmBD,EAAa,GAAG,EAEzD,OAAAC,EAAS,CAAC,EAAIA,EAAS,CAAC,GAAK,GAC7BA,EAAS,CAAC,EAAIA,EAAS,CAAC,GAAK,GAC7BA,EAAS,CAAC,EAAIA,EAAS,CAAC,GAAK,GAEtB,CACL,KAAMA,EAAS,CAAC,EAChB,IAAKA,EAAS,CAAC,EAAIA,EAAS,CAAC,EAAE,MAAM,EAAGA,EAAS,CAAC,EAAE,OAAS,CAAC,EAC9D,KAAMA,EAAS,CAAC,EAChB,IAAKA,EAAS,CAAC,EACf,KAAMA,EAAS,CAAC,EAAE,MAAM,EAAGA,EAAS,CAAC,EAAE,OAASA,EAAS,CAAC,EAAE,MAAM,EAEtE,EAGApB,EAAM,IAAM,IACZA,EAAM,UAAY,IAEhBqB,GAAiBrB,8ECxQnB,SAASsB,EAAQC,EAAK,CAAE,0BAA2B,OAAI,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAAYD,EAAU,SAAiBC,EAAK,CAAE,OAAO,OAAOA,GAAiBD,EAAU,SAAiBC,EAAK,CAAE,OAAOA,GAAO,OAAO,QAAW,YAAcA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAAI,EAAaD,EAAQC,CAAG,CAAE,CAExX,SAASC,EAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAI,CAEvJ,SAASC,EAA2BC,EAAMC,EAAM,CAAE,OAAIA,IAASP,EAAQO,CAAI,IAAM,UAAY,OAAOA,GAAS,YAAsBA,EAAeC,EAAuBF,CAAI,CAAE,CAE/K,SAASE,EAAuBF,EAAM,CAAE,GAAIA,IAAS,OAAU,MAAM,IAAI,eAAe,2DAA2D,EAAK,OAAOA,CAAK,CAEpK,SAASG,EAAUC,EAAUC,EAAY,CAAE,GAAI,OAAOA,GAAe,YAAcA,IAAe,KAAQ,MAAM,IAAI,UAAU,oDAAoD,EAAKD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CAAE,YAAa,CAAE,MAAOD,EAAU,SAAU,GAAM,aAAc,EAAI,CAAE,CAAE,EAAOC,GAAYC,EAAgBF,EAAUC,CAAU,CAAE,CAE/X,SAASE,EAAiBC,EAAO,CAAE,IAAIC,EAAS,OAAO,KAAQ,WAAa,IAAI,IAAQ,OAAW,OAAAF,EAAmB,SAA0BC,EAAO,CAAE,GAAIA,IAAU,MAAQ,CAACE,EAAkBF,CAAK,EAAG,OAAOA,EAAO,GAAI,OAAOA,GAAU,WAAc,MAAM,IAAI,UAAU,oDAAoD,EAAK,GAAI,OAAOC,EAAW,IAAa,CAAE,GAAIA,EAAO,IAAID,CAAK,EAAG,OAAOC,EAAO,IAAID,CAAK,EAAGC,EAAO,IAAID,EAAOG,CAAO,CAAE,CAAG,SAASA,GAAU,CAAE,OAAOC,EAAWJ,EAAO,UAAWK,EAAgB,IAAI,EAAE,WAAW,CAAE,CAAG,OAAAF,EAAQ,UAAY,OAAO,OAAOH,EAAM,UAAW,CAAE,YAAa,CAAE,MAAOG,EAAS,WAAY,GAAO,SAAU,GAAM,aAAc,EAAI,CAAE,CAAE,EAAUL,EAAgBK,EAASH,CAAK,CAAE,EAAWD,EAAiBC,CAAK,CAAE,CAErvB,SAASI,EAAWE,EAAQ5H,EAAMsH,EAAO,CAAE,OAAIO,IAA+BH,EAAa,QAAQ,UAAoBA,EAAa,SAAoBE,EAAQ5H,EAAMsH,EAAO,CAAE,IAAIvW,EAAI,CAAC,IAAI,EAAGA,EAAE,KAAK,MAAMA,EAAGiP,CAAI,EAAG,IAAI4G,EAAc,SAAS,KAAK,MAAMgB,EAAQ7W,CAAC,EAAO4V,EAAW,IAAIC,EAAe,OAAIU,GAAOF,EAAgBT,EAAUW,EAAM,SAAS,EAAUX,CAAS,EAAae,EAAW,MAAM,KAAM,SAAS,CAAE,CAEha,SAASG,GAA4B,CAA0E,GAApE,OAAO,QAAY,KAAe,CAAC,QAAQ,WAA6B,QAAQ,UAAU,KAAM,MAAO,GAAO,GAAI,OAAO,OAAU,WAAY,MAAO,GAAM,GAAI,CAAE,OAAA,KAAK,UAAU,SAAS,KAAK,QAAQ,UAAU,KAAM,CAAA,EAAI,UAAY,CAAA,CAAE,CAAC,EAAU,EAAK,MAAa,CAAE,MAAO,EAAM,CAAE,CAElU,SAASL,EAAkBM,EAAI,CAAE,OAAO,SAAS,SAAS,KAAKA,CAAE,EAAE,QAAQ,eAAe,IAAM,EAAG,CAEnG,SAASV,EAAgBW,EAAG9U,EAAG,CAAE,OAAAmU,EAAkB,OAAO,gBAAkB,SAAyBW,EAAG9U,EAAG,CAAE,OAAA8U,EAAE,UAAY9U,EAAU8U,GAAaX,EAAgBW,EAAG9U,CAAC,CAAE,CAExK,SAAS0U,EAAgBI,EAAG,CAAE,OAAAJ,EAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyBI,EAAG,CAAE,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAAE,EAAWJ,EAAgBI,CAAC,CAAE,CAE3M,IAAIC,EAAiB,IACjBC,EAAiB,IAEjBC,GAA4C,SAAUC,EAAQ,CAChElB,EAAUiB,EAA8BC,CAAM,EAE9C,SAASD,EAA6BE,EAAQ,CAC5C,IAAIC,EAEJ,OAAA3B,EAAgB,KAAMwB,CAA4B,EAElDG,EAAQxB,EAA2B,KAAMc,EAAgBO,CAA4B,EAAE,KAAK,KAAME,CAAM,CAAC,EACzGC,EAAM,KAAO,+BACNA,CACX,CAEE,OAAOH,CACT,GAAEb,EAAiB,KAAK,CAAC,EAEzBiB,GAAiB,CACf,IAAKC,EACL,IAAKC,EACL,IAAKC,EACL,OAAQ,SAAgBC,EAAQC,EAAUxV,EAAS,CACjD,OAAO,KAAK,IAAIuV,EAAQC,EAAUxV,GAAW,CAC3C,IAAK,EACX,CAAK,CACL,EACE,KAAMyV,EACN,6BAA8BV,GAahC,SAASM,EAAkBE,EAAQC,EAAU,CAK3C,GAJInC,EAAQkC,CAAM,GAAK,UAAYA,IAAW,MAI1C,OAAOC,EAAY,IACrB,OAAOD,EAGT,GAAI,OAAOC,GAAY,SACrB,OAAOD,EAAOC,CAAQ,EAGxB,GAAI,CACF,OAAOE,EAASH,EAAQC,EAAU,SAA4BG,EAAeC,EAAiB,CAC5F,OAAOD,EAAcC,CAAe,CAC1C,CAAK,CACL,MAAgB,CACZ,OAAOL,CACX,CACA,CAaA,SAASD,EAAkBC,EAAQC,EAAU,CAC3C,IAAIxV,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAMlF,GAJIqT,EAAQkC,CAAM,GAAK,UAAYA,IAAW,MAI1C,OAAOC,EAAY,IACrB,MAAO,GAGT,GAAI,OAAOA,GAAY,SACrB,OAAOA,KAAYD,EAGrB,GAAI,CACF,IAAIM,EAAM,GACV,OAAAH,EAASH,EAAQC,EAAU,SAA4BG,EAAeC,EAAiBE,EAAUjO,EAAO,CACtG,GAAIkO,EAAcD,EAAUjO,CAAK,EAC3B7H,EAAQ,IACV6V,EAAMF,EAAc,eAAeC,CAAe,EAElDC,EAAMD,KAAmBD,MAG3B,QAAOA,GAAiBA,EAAcC,CAAe,CAE7D,CAAK,EACMC,CACX,MAAgB,CACZ,MAAO,EACX,CACA,CAWA,SAAST,EAAkBG,EAAQC,EAAUrE,EAAO,CAKlD,GAJIkC,EAAQkC,CAAM,GAAK,UAAYA,IAAW,MAI1C,OAAOC,EAAY,IACrB,OAAOD,EAGT,GAAI,OAAOC,GAAY,SACrB,OAAAD,EAAOC,CAAQ,EAAIrE,EACZoE,EAAOC,CAAQ,EAGxB,GAAI,CACF,OAAOE,EAASH,EAAQC,EAAU,SAA4BG,EAAeC,EAAiBE,EAAUjO,EAAO,CAC7G,GAAI8N,IAAkB,QAAQ,eAAe,CAAA,CAAE,EAC7C,MAAM,IAAIZ,EAA6B,uCAAuC,EAGhF,GAAI,CAACY,EAAcC,CAAe,EAAG,CACnC,IAAII,EAAmB,OAAO,UAAU,OAAOF,EAASjO,EAAQ,CAAC,CAAC,CAAC,EAC/DoO,EAA0BH,EAASjO,EAAQ,CAAC,IAAMgN,EAElDmB,GAAoBC,EACtBN,EAAcC,CAAe,EAAI,CAAA,EAEjCD,EAAcC,CAAe,EAAI,CAAA,CAE3C,CAEM,OAAIG,EAAcD,EAAUjO,CAAK,IAC/B8N,EAAcC,CAAe,EAAIzE,GAG5BwE,EAAcC,CAAe,CAC1C,CAAK,CACL,OAAWM,EAAK,CACZ,GAAIA,aAAenB,EAEjB,MAAMmB,EAEN,OAAOX,CAEb,CACA,CAaA,SAASE,EAAmBF,EAAQC,EAAUW,EAAc,CAC1D,IAAInW,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAMlF,GAJIqT,EAAQkC,CAAM,GAAK,UAAYA,IAAW,MAI1C,OAAOC,EAAY,IACrB,MAAO,GAGT,GAAI,CACF,IAAIY,EAAO,GACPC,EAAa,GAOjB,OANAX,EAASH,EAAQC,EAAU,SAA6BG,EAAeC,EAAiBE,EAAUjO,EAAO,CACvG,OAAAuO,EAAOA,GAAQT,IAAkBQ,GAAgB,CAAC,CAACR,GAAiBA,EAAcC,CAAe,IAAMO,EACvGE,EAAaN,EAAcD,EAAUjO,CAAK,GAAKwL,EAAQsC,CAAa,IAAM,UAAYC,KAAmBD,EAClGA,GAAiBA,EAAcC,CAAe,CAC3D,CAAK,EAEG5V,EAAQ,UACHoW,GAAQC,EAERD,CAEb,MAAgB,CACZ,MAAO,EACX,CACA,CAEA,SAASV,EAASH,EAAQzJ,EAAM,CAoC9B,QAnCIwK,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,UAAY,CAAA,EAC3FR,EAAWhK,EAAK,MAAMgJ,CAAc,EACpC/T,EAAS+U,EAAS,OAElBS,EAAQ,SAAeC,EAAK,CAC9B,IAAIC,EAAiBX,EAASU,CAAG,EAEjC,GAAI,CAACjB,EACH,MAAO,CACL,EAAG,QAIP,GAAIkB,IAAmB5B,EAAgB,CACrC,GAAI,MAAM,QAAQU,CAAM,EACtB,MAAO,CACL,EAAGA,EAAO,IAAI,SAAUpE,EAAOtJ,EAAO,CACpC,IAAI6O,EAAoBZ,EAAS,MAAMU,EAAM,CAAC,EAE9C,OAAIE,EAAkB,OAAS,EACtBhB,EAASvE,EAAOuF,EAAkB,KAAK5B,CAAc,EAAGwB,CAAQ,EAEhEA,EAASf,EAAQ1N,EAAOiO,EAAUU,CAAG,CAE1D,CAAW,GAGH,IAAIG,EAAab,EAAS,MAAM,EAAGU,CAAG,EAAE,KAAK1B,CAAc,EAC3D,MAAM,IAAI,MAAM,uBAAuB,OAAO6B,EAAY,mBAAmB,CAAC,CAEtF,MACMpB,EAASe,EAASf,EAAQkB,EAAgBX,EAAUU,CAAG,CAE7D,EAEWA,EAAM,EAAGA,EAAMzV,EAAQyV,IAAO,CACrC,IAAII,EAAOL,EAAMC,CAAG,EAEpB,GAAInD,EAAQuD,CAAI,IAAM,SAAU,OAAOA,EAAK,CAChD,CAEE,OAAOrB,CACT,CAEA,SAASQ,EAAcD,EAAUjO,EAAO,CACtC,OAAOiO,EAAS,SAAWjO,EAAQ,CACrC,gBCtRA,IAAIgP,IACH,SAAUA,EAAc,CACrBA,EAAa,MAAW,QACxBA,EAAa,OAAY,SACzBA,EAAa,SAAc,UAC/B,GAAGA,KAAiBA,GAAe,CAAA,EAAG,EAoX/B,SAASC,GAAqBC,EAAOhG,EAAUS,EAAa,GAAO,CAEtE,KAAM,CAAE,gBAAiBwF,EAAU,KAAM,iBAAkBC,EAAU,IAAK,aAAcC,EAAe,KAAM,eAAgBC,EAAW,KAAM,QAASC,EAAO,IAAI,EAAKL,EACjK1Q,EAAO6Q,GACT,OAAOA,GAAiB,UACxB,OAAOA,EAAa,WAAe,IACjC,YACA,OACAG,EAAO,CACT,SAAAtG,EACA,SAAUjF,GAAK,SAASiF,CAAQ,EAChC,QAASiG,EACT,KAAM,SAASC,EAAS,EAAE,EAC1B,KAAA5Q,EACA,KAAM,OAAO+Q,GAAS,SAAWA,EAAK,QAAQ,KAAM,EAAE,EAAI,IAClE,EACI,OAAI/Q,IAAS,SACTgR,EAAK,KAAOF,GAAY,OAAOA,GAAa,SAAWA,EAAS,MAAM,GAAG,EAAE,CAAC,EAAI,IAEhF3F,IAEI,OAAOuF,EAAM,YAAgB,MAC7BA,EAAM,YAAc,OAAOA,EAAM,WAAW,GAEhDM,EAAK,MAAQN,GAEVM,CACX,CC9YO,MAAMC,GAAgB,GAc7B,eAAsBC,GAAY,CAAE,aAAAL,EAAc,WAAAM,CAAA,EAAcxX,EAA8D,CAC7H,MAAMyX,EAAe,CAAC,GAAIP,EAAcM,CAAU,EAAE,KAAK,GAAG,EACtDE,EAAW1X,EAAQ,SAAW,gBAAgBA,EAAQ,SAAS,YAAA,CAAa,iBAAmB,GAC/FsR,EAAW,MAAM9T,GAAO,cAAcia,EAAc,CACzD,OAAQ,SACR,KAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAMQzX,EAAQ,OAASsX,EAAa;AAAA,iBAC7BtX,EAAQ,QAAU,CAAC;AAAA,MAC9B0X,CAAQ;AAAA,0BAEZ,GAAG1X,CAAA,CACH,EAEK2X,EAAe,MAAMrG,EAAS,KAAA,EAC9B9S,EAAS,MAAMoZ,GAASD,CAAY,EACpCN,EAAOQ,GAAkBrZ,EAAQ,EAAI,EAE3C,OAAO6S,GAAuBC,EAAU+F,EAAM,EAAI,CACnD,CAQA,SAASQ,GACRrZ,EACAgT,EAAa,GACK,CAElB,KAAM,CACL,YAAa,CAAE,SAAUsG,CAAA,CAAc,EACpCtZ,EAGJ,OAAOsZ,EAAc,IAAKC,GAAS,CAElC,MAAMhB,EAAQgB,EAAK,SAAU,KAE7B,OAAOjB,GAAqBC,EAAOA,EAAM,GAAI,SAAA,EAAYvF,CAAU,CACpE,CAAC,CACF","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14]}
\ No newline at end of file
diff --git a/dist/comments-comments-app.mjs b/dist/comments-comments-app.mjs
index ee05b627171b4..d247d0f2d851e 100644
--- a/dist/comments-comments-app.mjs
+++ b/dist/comments-comments-app.mjs
@@ -1,2 +1,2 @@
-import{l as o}from"./activity-C7pDSEJs.chunk.mjs";import{a as m,t as r}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{c as s,i as n}from"./Web-0o0ZsUfo.chunk.mjs";import{C as a}from"./FilesSidebarTab-B-KOoDDF.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./index-CAjMXx18.chunk.mjs";import"./mdi-DGcEJzSa.chunk.mjs";import"./ArrowRight-Bs7cnqGk.chunk.mjs";import"./MapMarkerOutline-BL-F_JRn.chunk.mjs";import"./NcIconSvgWrapper-BVQJsMAt.chunk.mjs";import"./Link-BG7j_u2w.chunk.mjs";import"./Check-QdDOQaCe.chunk.mjs";import"./Plus-BvFExD7G.chunk.mjs";import"./NcModal-sd2PYzev.chunk.mjs";import"./index-DsbwZBFO.chunk.mjs";import"./NcAvatar-BRdLWCVs.chunk.mjs";import"./PencilOutline-Cr5fPBe7.chunk.mjs";import"./autolink-BflwX-7S.chunk.mjs";import"./colors-Cc9RSgrJ.chunk.mjs";import"./NcUserStatusIcon-DRorX2P9.chunk.mjs";import"./NcActionButton-NiLnxAD4.chunk.mjs";import"./NcActionLink-BZz5KtLo.chunk.mjs";import"./NcActionRouter-BRhYA82X.chunk.mjs";import"./MenuUp-BstQL5et.chunk.mjs";import"./Folder-BxcsshGI.chunk.mjs";import"./CommentView-D4oJ1b3g.chunk.mjs";import"./star-DcL0I5g8.chunk.mjs";import"./history-dpxDOhiN.chunk.mjs";import"./GetComments-DzpQCqQO.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";class e{app;instance;constructor(t="files",i={}){const p=s();this.app=n(a,{...i.propsData??{},...i.props??{},resourceType:t}),this.app.mixin({data(){return{logger:o}},methods:{t:r,n:m}}),this.app.use(p),i.el&&(this.instance=this.app.mount(i.el))}$mount(t){this.instance&&this.app.unmount(),this.instance=this.app.mount(t)}$unmount(){this.app.unmount(),this.instance=void 0}update(t){this.instance&&this.instance.update(t)}}window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:e}),o.debug("OCA.Comments.View initialized");
+import{l as o}from"./activity-C7pDSEJs.chunk.mjs";import{a as m,t as r}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{c as s,i as n}from"./Web-0o0ZsUfo.chunk.mjs";import{C as a}from"./FilesSidebarTab-DksFRHhR.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./index-CAjMXx18.chunk.mjs";import"./mdi-DGcEJzSa.chunk.mjs";import"./ArrowRight-Bs7cnqGk.chunk.mjs";import"./MapMarkerOutline-BL-F_JRn.chunk.mjs";import"./NcIconSvgWrapper-BVQJsMAt.chunk.mjs";import"./Link-BG7j_u2w.chunk.mjs";import"./Check-QdDOQaCe.chunk.mjs";import"./Plus-BvFExD7G.chunk.mjs";import"./NcModal-sd2PYzev.chunk.mjs";import"./index-DsbwZBFO.chunk.mjs";import"./NcAvatar-BRdLWCVs.chunk.mjs";import"./PencilOutline-Cr5fPBe7.chunk.mjs";import"./autolink-BflwX-7S.chunk.mjs";import"./colors-Cc9RSgrJ.chunk.mjs";import"./NcUserStatusIcon-DRorX2P9.chunk.mjs";import"./NcActionButton-NiLnxAD4.chunk.mjs";import"./NcActionLink-BZz5KtLo.chunk.mjs";import"./NcActionRouter-BRhYA82X.chunk.mjs";import"./MenuUp-BstQL5et.chunk.mjs";import"./Folder-BxcsshGI.chunk.mjs";import"./CommentView-BhF0LoGw.chunk.mjs";import"./star-DcL0I5g8.chunk.mjs";import"./history-dpxDOhiN.chunk.mjs";import"./GetComments-DJtGp6Zq.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";class e{app;instance;constructor(t="files",i={}){const p=s();this.app=n(a,{...i.propsData??{},...i.props??{},resourceType:t}),this.app.mixin({data(){return{logger:o}},methods:{t:r,n:m}}),this.app.use(p),i.el&&(this.instance=this.app.mount(i.el))}$mount(t){this.instance&&this.app.unmount(),this.instance=this.app.mount(t)}$unmount(){this.app.unmount(),this.instance=void 0}update(t){this.instance&&this.instance.update(t)}}window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:e}),o.debug("OCA.Comments.View initialized");
 //# sourceMappingURL=comments-comments-app.mjs.map
diff --git a/dist/comments-comments-tab.mjs b/dist/comments-comments-tab.mjs
index 2851e2c8859b0..38a836486b401 100644
--- a/dist/comments-comments-tab.mjs
+++ b/dist/comments-comments-tab.mjs
@@ -1,3 +1,3 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/ActivityCommentAction-KqoFLlsS.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CAjMXx18.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-0o0ZsUfo.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-DGcEJzSa.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-Bs7cnqGk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DosHP9c_.chunk.mjs'),window.OC.filePath('', '', 'dist/_plugin-vue_export-helper-DPNLE7fV.chunk.mjs'),window.OC.filePath('', '', 'dist/star-outline-3oU1ox7V.chunk.mjs'),window.OC.filePath('', '', 'dist/MapMarkerOutline-BL-F_JRn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcIconSvgWrapper-BVQJsMAt.chunk.mjs'),window.OC.filePath('', '', 'dist/Link-BG7j_u2w.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcIconSvgWrapper-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/Check-QdDOQaCe.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Check-3plNpBrB.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BvFExD7G.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/NcModal-sd2PYzev.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-Cclh_O_-.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-B7Bbzm8f.chunk.css'),window.OC.filePath('', '', 'dist/index-DsbwZBFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/CommentView-D4oJ1b3g.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionButton-NiLnxAD4.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionButton-BQBDvDX2.chunk.css'),window.OC.filePath('', '', 'dist/star-DcL0I5g8.chunk.mjs'),window.OC.filePath('', '', 'dist/common-star-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-BRdLWCVs.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-Cr5fPBe7.chunk.mjs'),window.OC.filePath('', '', 'dist/autolink-BflwX-7S.chunk.mjs'),window.OC.filePath('', '', 'dist/common-autolink-B8CEsDGb.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cc9RSgrJ.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-DRorX2P9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcActionLink-BZz5KtLo.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionLink-iJnZg6ii.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-BRhYA82X.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionRouter-C1KErZDl.chunk.css'),window.OC.filePath('', '', 'dist/MenuUp-BstQL5et.chunk.mjs'),window.OC.filePath('', '', 'dist/common-MenuUp-BzbAkUEn.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-o8Woel4F.chunk.css'),window.OC.filePath('', '', 'dist/history-dpxDOhiN.chunk.mjs'),window.OC.filePath('', '', 'dist/common-history-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/activity-C7pDSEJs.chunk.mjs'),window.OC.filePath('', '', 'dist/GetComments-DzpQCqQO.chunk.mjs'),window.OC.filePath('', '', 'dist/dav-ajmPPC2W.chunk.mjs'),window.OC.filePath('', '', 'dist/previewUtils-BiOsv7h1.chunk.mjs'),window.OC.filePath('', '', 'dist/common-CommentView-Cs8qprYu.chunk.css'),window.OC.filePath('', '', 'dist/comments-ActivityCommentAction-BNcHFi_U.chunk.css'),window.OC.filePath('', '', 'dist/ActivityCommentEntry-Ci5R0sO4.chunk.mjs'),window.OC.filePath('', '', 'dist/comments-ActivityCommentEntry-DkLG8AtJ.chunk.css'),window.OC.filePath('', '', 'dist/FilesSidebarTab-B-KOoDDF.chunk.mjs'),window.OC.filePath('', '', 'dist/Folder-BxcsshGI.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Folder-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/common-FilesSidebarTab-Dk-ISsTg.chunk.css')])))=>i.map(i=>d[i]);
-import{c as l,_ as m,i as c,d as w}from"./Web-0o0ZsUfo.chunk.mjs";import{r as _}from"./index-BvPFWo9y.chunk.mjs";import{t as g}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{l as r,i as v}from"./activity-C7pDSEJs.chunk.mjs";import{g as A}from"./GetComments-DzpQCqQO.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";const y='';function V(){let e;window.OCA.Activity.registerSidebarAction({mount:async(t,{node:o,reload:i})=>{const a=l();if(!e){const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentAction-KqoFLlsS.chunk.mjs");return{default:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47]),import.meta.url);e=c(s,{reloadCallback:i,resourceId:o.fileid})}e.use(a),e.mount(t),r.info("Comments plugin mounted in Activity sidebar action",{node:o})},unmount:()=>{e?.unmount(),e=void 0}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:o,offset:i})=>{const{data:a}=await A({resourceType:"files",resourceId:t.fileid},{limit:o,offset:i??0});r.debug("Loaded comments",{node:t,comments:a});const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentEntry-Ci5R0sO4.chunk.mjs");return{default:n}},__vite__mapDeps([48,5,6,7,21,2,22,12,13,9,10,11,16,4,8,17,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,14,15,39,3,18,40,41,1,19,20,42,43,44,45,46,49]),import.meta.url);return a.map(n=>({_CommentsViewInstance:void 0,timestamp:Date.parse(n.props?.creationDateTime??""),mount(f,{reload:p}){const d=c(s,{comment:n,resourceId:t.fileid,reloadCallback:p});d.mount(f),this._CommentsViewInstance=d},unmount(){this._CommentsViewInstance?.unmount()}}))}),window.OCA.Activity.registerSidebarFilter(t=>t.type!=="comments"),r.info("Comments plugin registered for Activity sidebar action")}const u="comments_files-sidebar-tab";v()?window.addEventListener("DOMContentLoaded",function(){V()}):_({id:"comments",displayName:g("comments","Comments"),iconSvgInline:y,order:50,tagName:u,async onInit(){const{default:e}=await m(async()=>{const{default:o}=await import("./FilesSidebarTab-B-KOoDDF.chunk.mjs").then(i=>i.F);return{default:o}},__vite__mapDeps([50,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,26,27,28,29,30,31,32,22,23,33,34,35,36,37,38,39,51,52,21,24,25,40,41,42,43,44,45,46,53]),import.meta.url),t=w(e,{configureApp(o){const i=l();o.use(i)},shadowRoot:!1});window.customElements.define(u,t)}});
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/ActivityCommentAction-DWdaVw2X.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CAjMXx18.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-0o0ZsUfo.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-DGcEJzSa.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-Bs7cnqGk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DosHP9c_.chunk.mjs'),window.OC.filePath('', '', 'dist/_plugin-vue_export-helper-DPNLE7fV.chunk.mjs'),window.OC.filePath('', '', 'dist/star-outline-3oU1ox7V.chunk.mjs'),window.OC.filePath('', '', 'dist/MapMarkerOutline-BL-F_JRn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcIconSvgWrapper-BVQJsMAt.chunk.mjs'),window.OC.filePath('', '', 'dist/Link-BG7j_u2w.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcIconSvgWrapper-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/Check-QdDOQaCe.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Check-3plNpBrB.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BvFExD7G.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/NcModal-sd2PYzev.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-Cclh_O_-.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-B7Bbzm8f.chunk.css'),window.OC.filePath('', '', 'dist/index-DsbwZBFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/CommentView-BhF0LoGw.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionButton-NiLnxAD4.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionButton-BQBDvDX2.chunk.css'),window.OC.filePath('', '', 'dist/star-DcL0I5g8.chunk.mjs'),window.OC.filePath('', '', 'dist/common-star-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-BRdLWCVs.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-Cr5fPBe7.chunk.mjs'),window.OC.filePath('', '', 'dist/autolink-BflwX-7S.chunk.mjs'),window.OC.filePath('', '', 'dist/common-autolink-B8CEsDGb.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cc9RSgrJ.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-DRorX2P9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcActionLink-BZz5KtLo.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionLink-iJnZg6ii.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-BRhYA82X.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcActionRouter-C1KErZDl.chunk.css'),window.OC.filePath('', '', 'dist/MenuUp-BstQL5et.chunk.mjs'),window.OC.filePath('', '', 'dist/common-MenuUp-BzbAkUEn.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-o8Woel4F.chunk.css'),window.OC.filePath('', '', 'dist/history-dpxDOhiN.chunk.mjs'),window.OC.filePath('', '', 'dist/common-history-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/activity-C7pDSEJs.chunk.mjs'),window.OC.filePath('', '', 'dist/GetComments-DJtGp6Zq.chunk.mjs'),window.OC.filePath('', '', 'dist/dav-ajmPPC2W.chunk.mjs'),window.OC.filePath('', '', 'dist/previewUtils-BiOsv7h1.chunk.mjs'),window.OC.filePath('', '', 'dist/common-CommentView-Cs8qprYu.chunk.css'),window.OC.filePath('', '', 'dist/comments-ActivityCommentAction-BNcHFi_U.chunk.css'),window.OC.filePath('', '', 'dist/ActivityCommentEntry-BhtrC8kL.chunk.mjs'),window.OC.filePath('', '', 'dist/comments-ActivityCommentEntry-DkLG8AtJ.chunk.css'),window.OC.filePath('', '', 'dist/FilesSidebarTab-DksFRHhR.chunk.mjs'),window.OC.filePath('', '', 'dist/Folder-BxcsshGI.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Folder-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/common-FilesSidebarTab-Dk-ISsTg.chunk.css')])))=>i.map(i=>d[i]);
+import{c as l,_ as m,i as c,d as w}from"./Web-0o0ZsUfo.chunk.mjs";import{r as _}from"./index-BvPFWo9y.chunk.mjs";import{t as g}from"./translation-DoG5ZELJ-DosHP9c_.chunk.mjs";import{l as r,i as v}from"./activity-C7pDSEJs.chunk.mjs";import{g as A}from"./GetComments-DJtGp6Zq.chunk.mjs";import"./previewUtils-BiOsv7h1.chunk.mjs";import"./_plugin-vue_export-helper-DPNLE7fV.chunk.mjs";import"./star-outline-3oU1ox7V.chunk.mjs";import"./dav-ajmPPC2W.chunk.mjs";const y='';function V(){let e;window.OCA.Activity.registerSidebarAction({mount:async(t,{node:o,reload:i})=>{const a=l();if(!e){const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentAction-DWdaVw2X.chunk.mjs");return{default:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47]),import.meta.url);e=c(s,{reloadCallback:i,resourceId:o.fileid})}e.use(a),e.mount(t),r.info("Comments plugin mounted in Activity sidebar action",{node:o})},unmount:()=>{e?.unmount(),e=void 0}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:o,offset:i})=>{const{data:a}=await A({resourceType:"files",resourceId:t.fileid},{limit:o,offset:i??0});r.debug("Loaded comments",{node:t,comments:a});const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentEntry-BhtrC8kL.chunk.mjs");return{default:n}},__vite__mapDeps([48,5,6,7,21,2,22,12,13,9,10,11,16,4,8,17,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,14,15,39,3,18,40,41,1,19,20,42,43,44,45,46,49]),import.meta.url);return a.map(n=>({_CommentsViewInstance:void 0,timestamp:Date.parse(n.props?.creationDateTime??""),mount(f,{reload:p}){const d=c(s,{comment:n,resourceId:t.fileid,reloadCallback:p});d.mount(f),this._CommentsViewInstance=d},unmount(){this._CommentsViewInstance?.unmount()}}))}),window.OCA.Activity.registerSidebarFilter(t=>t.type!=="comments"),r.info("Comments plugin registered for Activity sidebar action")}const u="comments_files-sidebar-tab";v()?window.addEventListener("DOMContentLoaded",function(){V()}):_({id:"comments",displayName:g("comments","Comments"),iconSvgInline:y,order:50,tagName:u,async onInit(){const{default:e}=await m(async()=>{const{default:o}=await import("./FilesSidebarTab-DksFRHhR.chunk.mjs").then(i=>i.F);return{default:o}},__vite__mapDeps([50,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,26,27,28,29,30,31,32,22,23,33,34,35,36,37,38,39,51,52,21,24,25,40,41,42,43,44,45,46,53]),import.meta.url),t=w(e,{configureApp(o){const i=l();o.use(i)},shadowRoot:!1});window.customElements.define(u,t)}});
 //# sourceMappingURL=comments-comments-tab.mjs.map
diff --git a/package-lock.json b/package-lock.json
index 86d250bc2e6d8..f0f49c6bc1fd3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -479,7 +479,6 @@
       "cpu": [
         "ppc64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -496,7 +495,6 @@
       "cpu": [
         "arm"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -513,7 +511,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -530,7 +527,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -547,7 +543,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -564,7 +559,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -581,7 +575,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -598,7 +591,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -615,7 +607,6 @@
       "cpu": [
         "arm"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -632,7 +623,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -649,7 +639,6 @@
       "cpu": [
         "ia32"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -666,7 +655,6 @@
       "cpu": [
         "loong64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -683,7 +671,6 @@
       "cpu": [
         "mips64el"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -700,7 +687,6 @@
       "cpu": [
         "ppc64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -717,7 +703,6 @@
       "cpu": [
         "riscv64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -734,7 +719,6 @@
       "cpu": [
         "s390x"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -751,7 +735,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -768,7 +751,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -785,7 +767,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -802,7 +783,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -819,7 +799,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -836,7 +815,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -853,7 +831,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -870,7 +847,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -887,7 +863,6 @@
       "cpu": [
         "ia32"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -904,7 +879,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2494,18 +2468,17 @@
       "license": "MIT"
     },
     "node_modules/@parcel/watcher": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
-      "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
-      "dev": true,
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz",
+      "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==",
       "hasInstallScript": true,
       "license": "MIT",
       "optional": true,
       "dependencies": {
-        "detect-libc": "^1.0.3",
+        "detect-libc": "^2.0.3",
         "is-glob": "^4.0.3",
-        "micromatch": "^4.0.5",
-        "node-addon-api": "^7.0.0"
+        "node-addon-api": "^7.0.0",
+        "picomatch": "^4.0.4"
       },
       "engines": {
         "node": ">= 10.0.0"
@@ -2515,29 +2488,27 @@
         "url": "https://opencollective.com/parcel"
       },
       "optionalDependencies": {
-        "@parcel/watcher-android-arm64": "2.5.1",
-        "@parcel/watcher-darwin-arm64": "2.5.1",
-        "@parcel/watcher-darwin-x64": "2.5.1",
-        "@parcel/watcher-freebsd-x64": "2.5.1",
-        "@parcel/watcher-linux-arm-glibc": "2.5.1",
-        "@parcel/watcher-linux-arm-musl": "2.5.1",
-        "@parcel/watcher-linux-arm64-glibc": "2.5.1",
-        "@parcel/watcher-linux-arm64-musl": "2.5.1",
-        "@parcel/watcher-linux-x64-glibc": "2.5.1",
-        "@parcel/watcher-linux-x64-musl": "2.5.1",
-        "@parcel/watcher-win32-arm64": "2.5.1",
-        "@parcel/watcher-win32-ia32": "2.5.1",
-        "@parcel/watcher-win32-x64": "2.5.1"
+        "@parcel/watcher-android-arm64": "2.6.0",
+        "@parcel/watcher-darwin-arm64": "2.6.0",
+        "@parcel/watcher-darwin-x64": "2.6.0",
+        "@parcel/watcher-freebsd-x64": "2.6.0",
+        "@parcel/watcher-linux-arm-glibc": "2.6.0",
+        "@parcel/watcher-linux-arm-musl": "2.6.0",
+        "@parcel/watcher-linux-arm64-glibc": "2.6.0",
+        "@parcel/watcher-linux-arm64-musl": "2.6.0",
+        "@parcel/watcher-linux-x64-glibc": "2.6.0",
+        "@parcel/watcher-linux-x64-musl": "2.6.0",
+        "@parcel/watcher-win32-arm64": "2.6.0",
+        "@parcel/watcher-win32-x64": "2.6.0"
       }
     },
     "node_modules/@parcel/watcher-android-arm64": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
-      "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz",
+      "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==",
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2552,13 +2523,12 @@
       }
     },
     "node_modules/@parcel/watcher-darwin-arm64": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
-      "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz",
+      "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==",
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2573,13 +2543,12 @@
       }
     },
     "node_modules/@parcel/watcher-darwin-x64": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
-      "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz",
+      "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==",
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2594,13 +2563,12 @@
       }
     },
     "node_modules/@parcel/watcher-freebsd-x64": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
-      "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz",
+      "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==",
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2615,13 +2583,15 @@
       }
     },
     "node_modules/@parcel/watcher-linux-arm-glibc": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
-      "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz",
+      "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==",
       "cpu": [
         "arm"
       ],
-      "dev": true,
+      "libc": [
+        "glibc"
+      ],
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2636,13 +2606,15 @@
       }
     },
     "node_modules/@parcel/watcher-linux-arm-musl": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
-      "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz",
+      "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==",
       "cpu": [
         "arm"
       ],
-      "dev": true,
+      "libc": [
+        "musl"
+      ],
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2657,13 +2629,15 @@
       }
     },
     "node_modules/@parcel/watcher-linux-arm64-glibc": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
-      "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz",
+      "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==",
       "cpu": [
         "arm64"
       ],
-      "dev": true,
+      "libc": [
+        "glibc"
+      ],
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2678,13 +2652,15 @@
       }
     },
     "node_modules/@parcel/watcher-linux-arm64-musl": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
-      "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz",
+      "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==",
       "cpu": [
         "arm64"
       ],
-      "dev": true,
+      "libc": [
+        "musl"
+      ],
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2699,13 +2675,15 @@
       }
     },
     "node_modules/@parcel/watcher-linux-x64-glibc": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
-      "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz",
+      "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==",
       "cpu": [
         "x64"
       ],
-      "dev": true,
+      "libc": [
+        "glibc"
+      ],
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2720,13 +2698,15 @@
       }
     },
     "node_modules/@parcel/watcher-linux-x64-musl": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
-      "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz",
+      "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==",
       "cpu": [
         "x64"
       ],
-      "dev": true,
+      "libc": [
+        "musl"
+      ],
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2741,34 +2721,12 @@
       }
     },
     "node_modules/@parcel/watcher-win32-arm64": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
-      "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz",
+      "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==",
       "cpu": [
         "arm64"
       ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">= 10.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/parcel"
-      }
-    },
-    "node_modules/@parcel/watcher-win32-ia32": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
-      "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2783,13 +2741,12 @@
       }
     },
     "node_modules/@parcel/watcher-win32-x64": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
-      "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz",
+      "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==",
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -2994,7 +2951,6 @@
       "cpu": [
         "arm"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3008,7 +2964,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3022,7 +2977,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3036,7 +2990,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3050,7 +3003,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3064,7 +3016,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3078,7 +3029,6 @@
       "cpu": [
         "arm"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3092,7 +3042,6 @@
       "cpu": [
         "arm"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3106,7 +3055,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3120,7 +3068,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3134,7 +3081,6 @@
       "cpu": [
         "loong64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3148,7 +3094,6 @@
       "cpu": [
         "loong64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3162,7 +3107,6 @@
       "cpu": [
         "ppc64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3176,7 +3120,6 @@
       "cpu": [
         "ppc64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3190,7 +3133,6 @@
       "cpu": [
         "riscv64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3204,7 +3146,6 @@
       "cpu": [
         "riscv64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3218,7 +3159,6 @@
       "cpu": [
         "s390x"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3232,7 +3172,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3246,7 +3185,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3260,7 +3198,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3274,7 +3211,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3288,7 +3224,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3302,7 +3237,6 @@
       "cpu": [
         "ia32"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3316,7 +3250,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3330,7 +3263,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -3842,7 +3774,7 @@
       "version": "26.1.0",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz",
       "integrity": "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==",
-      "dev": true,
+      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "undici-types": "~8.3.0"
@@ -4487,9 +4419,9 @@
       }
     },
     "node_modules/@vue/language-core/node_modules/brace-expansion": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
-      "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
+      "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -6785,17 +6717,13 @@
       }
     },
     "node_modules/detect-libc": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
-      "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
-      "dev": true,
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+      "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
       "license": "Apache-2.0",
       "optional": true,
-      "bin": {
-        "detect-libc": "bin/detect-libc.js"
-      },
       "engines": {
-        "node": ">=0.10"
+        "node": ">=8"
       }
     },
     "node_modules/detect-newline": {
@@ -7034,9 +6962,9 @@
       }
     },
     "node_modules/editorconfig/node_modules/brace-expansion": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
-      "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
+      "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -7829,9 +7757,9 @@
       }
     },
     "node_modules/fast-uri": {
-      "version": "3.1.7",
-      "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz",
-      "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==",
+      "version": "3.1.8",
+      "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz",
+      "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==",
       "dev": true,
       "funding": [
         {
@@ -8168,7 +8096,6 @@
       "version": "2.3.3",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-      "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
       "optional": true,
@@ -8340,9 +8267,9 @@
       }
     },
     "node_modules/glob/node_modules/brace-expansion": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
-      "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
+      "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -8891,7 +8818,7 @@
       "version": "5.1.9",
       "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz",
       "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==",
-      "dev": true,
+      "devOptional": true,
       "license": "MIT"
     },
     "node_modules/import-fresh": {
@@ -9163,7 +9090,7 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "dev": true,
+      "devOptional": true,
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -9203,7 +9130,7 @@
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "dev": true,
+      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "is-extglob": "^2.1.1"
@@ -9312,9 +9239,9 @@
       }
     },
     "node_modules/is-plain-object": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
-      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.1.0.tgz",
+      "integrity": "sha512-bUi/yjmtKYcRVUtWRGr0UA6xEFh2I6zWUwMrUXB3s7bmYCaZ8a+0ZsTRkrawh/mzlSD1Y0Ph8bp/U+TvBpWDNw==",
       "dev": true,
       "license": "MIT",
       "peer": true,
@@ -11160,7 +11087,6 @@
       "version": "7.1.1",
       "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
       "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
-      "dev": true,
       "license": "MIT",
       "optional": true
     },
@@ -12132,16 +12058,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/prebuild-install/node_modules/detect-libc": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
-      "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
-      "license": "Apache-2.0",
-      "optional": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/prelude-ls": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -12997,7 +12913,7 @@
       "version": "1.105.0",
       "resolved": "https://registry.npmjs.org/sass/-/sass-1.105.0.tgz",
       "integrity": "sha512-4EjSuRTyG8M4yRXXY1PT9OUV5zz23xBxJkbIAprohKHqf6HOU4MCpE3U3vAC+iO1gxobBjESNbcj8rYAQZWnyA==",
-      "dev": true,
+      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "chokidar": "^5.0.0",
@@ -13765,9 +13681,9 @@
       }
     },
     "node_modules/stylelint": {
-      "version": "17.15.0",
-      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.15.0.tgz",
-      "integrity": "sha512-mWIkesYQvQjf4Kvdeu9ns0IL8/K/wtjaGxPqsPd6DlLZvaQxGysJsocxUDrBcyHQ5VleAk4uSMat4yMrVED7PA==",
+      "version": "17.16.0",
+      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.16.0.tgz",
+      "integrity": "sha512-ejlWnbJ13x1GU32+zZXa6sYQJsKKkwSdv2B4rAdO3OWdEmvhSJKcXi5pOphQYSzyaj1kXpuGJr7pcMBNfDIuPw==",
       "dev": true,
       "funding": [
         {
@@ -13825,21 +13741,21 @@
       }
     },
     "node_modules/stylelint-config-html": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz",
-      "integrity": "sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/stylelint-config-html/-/stylelint-config-html-2.0.0.tgz",
+      "integrity": "sha512-Lk1NPEdUxzHkPv3ehktjpiOk4MPaqQ3H8fkvhxdWlQpaZCm9ze0SoMbRQLqkUxEMfPE1G9/x968uxm/+d2njoA==",
       "dev": true,
       "license": "MIT",
       "peer": true,
       "engines": {
-        "node": "^12 || >=14"
+        "node": "^22.12 || >=24"
       },
       "funding": {
         "url": "https://github.com/sponsors/ota-meshi"
       },
       "peerDependencies": {
-        "postcss-html": "^1.0.0",
-        "stylelint": ">=14.0.0"
+        "postcss-html": "^2.0.0",
+        "stylelint": ">=16.0.0"
       }
     },
     "node_modules/stylelint-config-recommended": {
@@ -13915,23 +13831,23 @@
       }
     },
     "node_modules/stylelint-scss": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-7.1.1.tgz",
-      "integrity": "sha512-pLPXJZ7RtAFNLXe8gqarf3B56ScVTd1vPiL9IFgcJkIZsYPzAgLJPh2h9NHrp3BFeKrtAkIgwQ08QSmhvlv1gA==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-7.3.0.tgz",
+      "integrity": "sha512-FBz075AUFoEJ1WQKsgsRr6EJKcjy7jxQjV8xsAqbPcnhNiXnJ7C489vqUyDZccBy1GorewlshERkaMuCyOKXaw==",
       "dev": true,
       "license": "MIT",
       "peer": true,
       "dependencies": {
-        "@csstools/css-calc": "^3.2.0",
+        "@csstools/css-calc": "^3.3.0",
         "@csstools/css-parser-algorithms": "^4.0.0",
-        "@csstools/css-syntax-patches-for-csstree": "^1.1.3",
+        "@csstools/css-syntax-patches-for-csstree": "^1.1.8",
         "@csstools/css-tokenizer": "^4.0.0",
         "css-tree": "^3.2.1",
-        "is-plain-object": "^5.0.0",
+        "is-plain-object": "^5.1.0",
         "known-css-properties": "^0.37.0",
         "postcss-media-query-parser": "^0.2.3",
         "postcss-resolve-nested-selector": "^0.1.6",
-        "postcss-selector-parser": "^7.1.1",
+        "postcss-selector-parser": "^7.1.6",
         "postcss-value-parser": "^4.2.0"
       },
       "engines": {
@@ -14720,7 +14636,7 @@
       "version": "8.3.0",
       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
       "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
-      "dev": true,
+      "devOptional": true,
       "license": "MIT"
     },
     "node_modules/unicorn-magic": {
@@ -15230,7 +15146,6 @@
       "cpu": [
         "ppc64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15247,7 +15162,6 @@
       "cpu": [
         "arm"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15264,7 +15178,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15281,7 +15194,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15298,7 +15210,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15315,7 +15226,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15332,7 +15242,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15349,7 +15258,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15366,7 +15274,6 @@
       "cpu": [
         "arm"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15383,7 +15290,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15400,7 +15306,6 @@
       "cpu": [
         "ia32"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15417,7 +15322,6 @@
       "cpu": [
         "loong64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15434,7 +15338,6 @@
       "cpu": [
         "mips64el"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15451,7 +15354,6 @@
       "cpu": [
         "ppc64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15468,7 +15370,6 @@
       "cpu": [
         "riscv64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15485,7 +15386,6 @@
       "cpu": [
         "s390x"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15502,7 +15402,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15519,7 +15418,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15536,7 +15434,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15553,7 +15450,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15570,7 +15466,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15587,7 +15482,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15604,7 +15498,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15621,7 +15514,6 @@
       "cpu": [
         "arm64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15638,7 +15530,6 @@
       "cpu": [
         "ia32"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -15655,7 +15546,6 @@
       "cpu": [
         "x64"
       ],
-      "dev": true,
       "license": "MIT",
       "optional": true,
       "os": [
@@ -16035,9 +15925,9 @@
       }
     },
     "node_modules/webdav/node_modules/brace-expansion": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
-      "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
+      "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
       "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0"