From 2463ddd02b7841e1211e54d37d3af4316b301baf Mon Sep 17 00:00:00 2001 From: Frank Karlitschek Date: Mon, 10 Aug 2026 22:30:18 +0200 Subject: [PATCH] feat(notifications): warn the manager and HR about a short-notice request MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A request filed for next Monday and one filed for next quarter arrived looking identical. Nothing in the notification, the email or the review panel said which was which, so the fact that mattered most for planning — how much warning the team was given — was the one thing a decider had to work out for themselves from two dates. A request whose leave starts sooner than the notice period the company expects is now flagged as short notice, to the line manager and to HR, everywhere the decision is actually made: - on the request's Details tab, as a warning card above the approve/decline buttons rather than behind the Coverage tab; - in the notification, which says so in its subject line — the one line guaranteed to be read — and gives the day count in the message; - in the email, whose heading doubles as the mail's subject, so it is legible in an inbox listing while there is still time to act. The escalation to HR and the pending-decision reminder carry it too. By the time either fires the notice has only grown shorter, which is exactly when saying so is worth most. The threshold is a new admin setting, "Expected notice period", defaulting to 14 calendar days; 0 switches the warning off. Calendar days rather than working days because "two weeks' notice" is a fortnight on the wall calendar — unlike the escalation window, which counts the days a manager actually had to answer in. Measured against the server's today, not the viewer's, so one request gets one answer for the manager, for HR and for the job that mails them, instead of a sidebar and an email that disagree by a day at a timezone boundary. Two limits on when a warning appears, both in NoticeService: - Only while a decision is outstanding (PENDING / ESCALATED). Afterwards short notice is no longer an input to anything, just a standing reproach on the record. - Which also means never for leave that has no approval workflow. Sick leave is recorded by HR after the fact and auto-approved types are booked straight through (§4.1); both reach APPROVED without ever being pending. Nobody is weighing the notice there, and nobody gives notice of falling ill. The warning's wording lives in one place, NoticeService::sentence(), because the same sentence is shown in the notification, in the email and (mirrored in the Vue component) in the sidebar — one string to translate rather than three that drift apart. It also avoids claiming leave "starts in 0 days": today and already-started get their own phrasings, the latter reachable through an edit or a late correction. Notifications written before this change carry neither new subject parameter, so the notifier reads both defensively rather than failing to parse an existing row. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 7 +- SPECIFICATION.md | 15 ++ ...oxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs} | 6 +- ...witch-DVdt5Hkq-WOiPqszu.chunk.mjs.license} | 0 ...dioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.map} | 2 +- js/absence-main.mjs | 16 +- js/absence-main.mjs.map | 2 +- js/absence-personal-settings.mjs | 2 +- ...40W.chunk.mjs => index-EdbAt5mR.chunk.mjs} | 4 +- ...cense => index-EdbAt5mR.chunk.mjs.license} | 0 ...k.mjs.map => index-EdbAt5mR.chunk.mjs.map} | 2 +- lib/ConfigLexicon.php | 3 + lib/Notification/Notifier.php | 33 +++- lib/Service/ConfigService.php | 10 ++ lib/Service/NoticeService.php | 110 ++++++++++++ lib/Service/NotificationService.php | 52 ++++-- lib/Service/RequestService.php | 4 + lib/Settings/AdminDeclarativeSettings.php | 7 + src/components/RequestSidebar.vue | 27 ++- tests/Unit/ConfigLexiconTest.php | 5 + tests/Unit/Notification/NotifierTest.php | 157 ++++++++++++++++++ tests/Unit/Service/NoticeServiceTest.php | 149 +++++++++++++++++ .../Unit/Service/NotificationServiceTest.php | 82 +++++++++ tests/Unit/Service/RequestServiceTest.php | 4 + .../Settings/AdminDeclarativeSettingsTest.php | 1 + 25 files changed, 658 insertions(+), 42 deletions(-) rename js/{NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs => NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs} (99%) rename js/{NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.license => NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.license} (100%) rename js/{NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.map => NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.map} (99%) rename js/{index-D9p6E40W.chunk.mjs => index-EdbAt5mR.chunk.mjs} (99%) rename js/{index-D9p6E40W.chunk.mjs.license => index-EdbAt5mR.chunk.mjs.license} (100%) rename js/{index-D9p6E40W.chunk.mjs.map => index-EdbAt5mR.chunk.mjs.map} (99%) create mode 100644 lib/Service/NoticeService.php create mode 100644 tests/Unit/Notification/NotifierTest.php create mode 100644 tests/Unit/Service/NoticeServiceTest.php diff --git a/README.md b/README.md index 41b73b8..151da6f 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,9 @@ Built to the specification in [SPECIFICATION.md](./SPECIFICATION.md). - **Apply** for annual, sick, unpaid or special leave (configurable types) with a live balance preview. The working-day count is prefilled from your availability and public holidays in personal settings. -- **Approve / reject** as a line manager, with team-coverage conflict warnings. +- **Approve / reject** as a line manager, with team-coverage conflict warnings and a + short-notice warning when the leave starts sooner than the notice period the admin + expects (default two weeks). - **Escalation**: pending requests a manager ignores are automatically escalated to HR. - **Full balance tracking**: entitlement, used, pending, remaining and carry-over, with a configurable year-rollover policy. *My leave* shows each balance as an @@ -148,7 +150,8 @@ The default leave types (annual, sick, unpaid, special) are seeded on install. ## Configuration Admin settings live under **Administration settings → Absence** (HR group, default -entitlement, escalation window, carry-over policy, coverage threshold, CalDAV targets). +entitlement, escalation window, carry-over policy, coverage threshold, expected notice +period, CalDAV targets). Personal settings are appended to the built-in **Personal settings → Availability** page. They prefill the "Working days" field on new requests: working weekdays come diff --git a/SPECIFICATION.md b/SPECIFICATION.md index f023c9b..e1d237c 100644 --- a/SPECIFICATION.md +++ b/SPECIFICATION.md @@ -468,6 +468,20 @@ is what counts (§7). or exceeds a configurable threshold (admin setting **max concurrent absences per team**, default e.g. 2, or a percentage), show a prominent warning in the review panel. It is a warning, not a hard block. +- **Short-notice warning:** a request whose leave starts sooner than the admin's + **expected notice period** (calendar days, default 14; `0` switches the check off) + is flagged to the line manager and to HR. Like the conflict warning it informs a + decision and blocks nothing, and it appears wherever the decision is made: on the + request's Details tab, in the notification and in the subject line of the email + that asks for a decision (§11) — including the escalation to HR and the pending + reminder, by which point the notice given has shrunk further. + - Calendar days, not working days: "two weeks' notice" is a fortnight on the wall + calendar. Measured against the *server's* today, so one request gets one answer + for the manager, for HR and for the job that mails them. + - Only while a decision is outstanding (`PENDING` / `ESCALATED`), and so never for + leave with no approval workflow — sick leave is recorded after the fact and + auto-approved types are booked straight through (§4.1), so nobody is weighing the + notice, and nobody can give notice of falling ill. - Provide an API endpoint to query overlaps for a date range + scope (team/company). --- @@ -581,6 +595,7 @@ new "Absence" settings section or "Personal info"/"Administration"): | Carry-over cap (days) | 5 | Used when `capped`. | | Carry-over expiry | none / date (e.g. Mar 31) | §6.2. | | Max concurrent team absences | 2 | Conflict threshold (§8). | +| Expected notice period | 14 calendar days | Short-notice threshold (§8); `0` disables. | | CalDAV: write personal events | true | §10. | | CalDAV: write shared team calendar | true | §10. | | Shared calendar type-visibility | neutral | Reveal type vs "Absent" on shared cal. | diff --git a/js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs b/js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs similarity index 99% rename from js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs rename to js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs index c6353c6..82df655 100644 --- a/js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs +++ b/js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs @@ -19,7 +19,7 @@ https://vue-select.org/api/props.html#getoptionlabel`):e}},getOptionKey:{type:Fu `);return n===-1?"":s.stack.slice(n+1)})();try{if(!u.stack)u.stack=i;else if(i){const n=i.indexOf(` `),o=n===-1?-1:i.indexOf(` `,n+1),a=o===-1?"":i.slice(o+1);String(u.stack).endsWith(a)||(u.stack+=` -`+i)}}catch{}}throw u}}_request(e,t){typeof e=="string"?(t=t||{},t.url=e):t=e||{},t=Is(this.defaults,t);const{transitional:u,paramsSerializer:s,headers:i}=t;u!==void 0&&Xn.assertOptions(u,{silentJSONParsing:xt.transitional(xt.boolean),forcedJSONParsing:xt.transitional(xt.boolean),clarifyTimeoutError:xt.transitional(xt.boolean),legacyInterceptorReqResOrdering:xt.transitional(xt.boolean),advertiseZstdAcceptEncoding:xt.transitional(xt.boolean),validateStatusUndefinedResolves:xt.transitional(xt.boolean)},!1),s!=null&&(D.isFunction(s)?t.paramsSerializer={serialize:s}:Xn.assertOptions(s,{encode:xt.function,serialize:xt.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Xn.assertOptions(t,{baseUrl:xt.spelling("baseURL"),withXsrfToken:xt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let n=i&&D.merge(i.common,i[t.method]);i&&D.forEach(["delete","get","head","post","put","patch","query","common"],h=>{delete i[h]}),t.headers=Ft.concat(n,i);const o=[];let a=!0;this.interceptors.request.forEach(function(h){if(typeof h.runWhen=="function"&&h.runWhen(t)===!1)return;a=a&&h.synchronous;const B=t.transitional||Er;B&&B.legacyInterceptorReqResOrdering?o.unshift(h.fulfilled,h.rejected):o.push(h.fulfilled,h.rejected)});const r=[];this.interceptors.response.forEach(function(h){r.push(h.fulfilled,h.rejected)});let m,l=0,g;if(!a){const h=[Q4.bind(this),void 0];for(h.unshift(...o),h.push(...r),g=h.length,m=Promise.resolve(t);l{if(!s._listeners)return;let n=s._listeners.length;for(;n-- >0;)s._listeners[n](i);s._listeners=null}),this.promise.then=i=>{let n;const o=new Promise(a=>{s.subscribe(a),n=a}).then(i);return o.cancel=function(){s.unsubscribe(n)},o},t(function(i,n,o){s.reason||(s.reason=new yn(i,n,o),u(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const u=this._listeners.indexOf(t);u!==-1&&this._listeners.splice(u,1)}toAbortSignal(){const t=new AbortController,u=s=>{t.abort(s)};return this.subscribe(u),t.signal.unsubscribe=()=>this.unsubscribe(u),t.signal}static source(){let t;return{token:new hc(function(u){t=u}),cancel:t}}};function By(e){return function(t){return e.apply(null,t)}}function xy(e){return D.isObject(e)&&e.isAxiosError===!0}const Ra={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Ra).forEach(([e,t])=>{Ra[t]=e});function vc(e){const t=new Ts(e),u=K3(Ts.prototype.request,t);return D.extend(u,Ts.prototype,t,{allOwnKeys:!0}),D.extend(u,t,null,{allOwnKeys:!0}),u.create=function(s){return vc(Is(e,s))},u}const Qe=vc(Cn);Qe.Axios=Ts,Qe.CanceledError=yn,Qe.CancelToken=yy,Qe.isCancel=dc,Qe.VERSION=yr,Qe.toFormData=oo,Qe.AxiosError=te,Qe.Cancel=Qe.CanceledError,Qe.all=function(e){return Promise.all(e)},Qe.spread=By,Qe.isAxiosError=xy,Qe.mergeConfig=Is,Qe.AxiosHeaders=Ft,Qe.formToJSON=e=>lc(D.isHTMLForm(e)?new FormData(e):e),Qe.getAdapter=pc.getAdapter,Qe.HttpStatusCode=Ra,Qe.default=Qe;const{Axios:A2,AxiosError:b2,CanceledError:w2,isCancel:D2,CancelToken:F2,VERSION:k2,all:S2,Cancel:N2,isAxiosError:xr,spread:_2,toFormData:O2,AxiosHeaders:T2,HttpStatusCode:z2,formToJSON:P2,getAdapter:R2,mergeConfig:L2,create:j2}=Qe;function Ay(){const e=Qe.create({headers:{requesttoken:wv()??"","X-Requested-With":"XMLHttpRequest"}});return Fv(t=>{e.defaults.headers.requesttoken=t}),Object.assign(e,{CancelToken:Qe.CancelToken,isCancel:Qe.isCancel})}const td="_nextcloudCsrfTokenReloaded";function by(e){return async t=>{if(!xr(t))throw t;const{config:u,response:s,request:i}=t,n=i?.responseURL;if(u&&!(td in u)&&s?.status===412&&s?.data?.message==="CSRF check failed"){console.warn(`Request to ${n} failed because of a CSRF mismatch. Fetching a new token.`);const o=await Dv();return e.defaults.headers.requesttoken=o,e({...u,[td]:!0,headers:{...u.headers,requesttoken:o}})}throw t}}const ud="_nextcloudMaintenanceModeRetryDelay";function wy(e){return async t=>{if(!xr(t))throw t;const{config:u,response:s,request:i}=t,n=i?.responseURL,o=s?.status,a=s?.headers;let r=u?.[ud]??1;if(o===503&&a?.["x-nextcloud-maintenance-mode"]==="1"&&u?.retryIfMaintenanceMode){if(r*=2,r>32)throw console.error("Retry delay exceeded one minute, giving up.",{responseURL:n}),t;return console.warn(`Request to ${n} failed because of maintenance mode. Retrying in ${r}s`),await new Promise(m=>{setTimeout(m,r*1e3)}),e({...u,[ud]:r})}throw t}}async function Dy(e){if(xr(e)){const{config:t,response:u,request:s}=e,i=s?.responseURL;u?.status===401&&u?.data?.message==="Current user is not logged in"&&t?.reloadExpiredSession&&globalThis.location?.reload&&(console.error(`Request to ${i} failed because the user session expired. Reloading the page …`),globalThis.OC?.reload?globalThis.OC.reload():globalThis.location.reload())}throw e}const Te=Ay();Te.interceptors.response.use(e=>e,by(Te)),Te.interceptors.response.use(e=>e,wy(Te)),Te.interceptors.response.use(e=>e,Dy);const $e=e=>nd("/apps/absence"+e),I2={getSession:()=>Te.get($e("/api/session")).then(e=>e.data),getPersonalConfig:()=>Te.get($e("/api/personal/config")).then(e=>e.data),updatePersonalConfig:e=>Te.put($e("/api/personal/config"),{values:e}).then(t=>t.data),listRequests:e=>Te.get($e("/api/requests"),{params:e}).then(t=>t.data),getRequest:e=>Te.get($e(`/api/requests/${e}`)).then(t=>t.data),createRequest:e=>Te.post($e("/api/requests"),e).then(t=>t.data),updateRequest:(e,t)=>Te.put($e(`/api/requests/${e}`),t).then(u=>u.data),cancelRequest:e=>Te.post($e(`/api/requests/${e}/cancel`)).then(t=>t.data),approveRequest:(e,t)=>Te.post($e(`/api/requests/${e}/approve`),{comment:t}).then(u=>u.data),rejectRequest:(e,t)=>Te.post($e(`/api/requests/${e}/reject`),{comment:t}).then(u=>u.data),addComment:(e,t)=>Te.post($e(`/api/requests/${e}/comments`),{body:t}).then(u=>u.data),getMyBalance:e=>Te.get($e("/api/balance"),{params:{year:e}}).then(t=>t.data),getEmployeeBalance:(e,t)=>Te.get($e(`/api/employees/${encodeURIComponent(e)}/balance`),{params:{year:t}}).then(u=>u.data),listEntitlements:(e,t)=>Te.get($e("/api/entitlements"),{params:{employeeUid:e,year:t}}).then(u=>u.data),createEntitlement:e=>Te.post($e("/api/entitlements"),e).then(t=>t.data),updateEntitlement:(e,t)=>Te.put($e(`/api/entitlements/${e}`),t).then(u=>u.data),bulkEntitlements:e=>Te.post($e("/api/entitlements/bulk"),e).then(t=>t.data),getCoverage:(e,t,u)=>Te.get($e("/api/coverage"),{params:{from:e,to:t,scope:u}}).then(s=>s.data),getCalendar:(e,t,u)=>Te.get($e("/api/calendar"),{params:{from:e,to:t,scope:u}}).then(s=>s.data),listLeaveTypes:e=>Te.get($e("/api/leave-types"),{params:{onlyEnabled:e}}).then(t=>t.data),createLeaveType:e=>Te.post($e("/api/leave-types"),e).then(t=>t.data),updateLeaveType:(e,t)=>Te.put($e(`/api/leave-types/${e}`),t).then(u=>u.data),deleteLeaveType:e=>Te.delete($e(`/api/leave-types/${e}`)).then(t=>t.data),searchUsers:e=>Te.get($e("/api/employees/search"),{params:{search:e}}).then(t=>t.data),reportBalances:(e,t)=>Te.get($e("/api/reports/balances"),{params:{year:e,group:t}}).then(u=>u.data),reportTrends:(e,t)=>Te.get($e("/api/reports/trends"),{params:{from:e,to:t}}).then(u=>u.data),reportSickLeave:(e,t)=>Te.get($e("/api/reports/sick-leave"),{params:{year:e,group:t}}).then(u=>u.data),exportRequestsUrl:(e,t)=>$e(`/api/export/requests?from=${e}&to=${t}`),exportBalancesUrl:e=>$e(`/api/export/balances?year=${e}`)};function Fy(e){const t=e.getFullYear(),u=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}-${u}-${s}`}function M2(e){const t=new Set;for(const u of String(e||"").split(",")){const s=parseInt(u,10);s>=1&&s<=7&&t.add(s)}return t}function $2(e,t,u,s){if(!e||!t||!u||u.size===0)return 0;const i=new Date(t+"T00:00:00");let n=0;for(const o=new Date(e+"T00:00:00");o<=i;o.setDate(o.getDate()+1)){const a=o.getDay()===0?7:o.getDay();u.has(a)&&!(s&&s(Fy(o)))&&n++}return n}function ta(e){return e?new Date(e+"T00:00:00").toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"}):""}function U2(e,t){return e===t?ta(e):`${ta(e)} – ${ta(t)}`}function V2(e,t,u,s,i){const n=new Date(t+"T00:00:00"),o=new Date(u+"T00:00:00"),a=Math.round((o-n)/864e5)+1;if(!(a<=0||!s))for(let r=0;r<12;r++){const m=new Date(i,r,1),l=new Date(i,r+1,0),g=n>m?n:m,p=o0&&(e[r]+=s*(h/a))}}async function W2(e,t){if(!e)return null;const{default:u}=await dr(async()=>{const{default:i}=await import("./index-D9p6E40W.chunk.mjs");return{default:i}},[],import.meta.url),s=t?new u(e,t):new u(e);return i=>{const n=s.isHoliday(new Date(i+"T12:00:00"));return Array.isArray(n)&&n.some(o=>o.type==="public")}}async function H2(){const{default:e}=await dr(async()=>{const{default:u}=await import("./index-D9p6E40W.chunk.mjs");return{default:u}},[],import.meta.url),t=new e().getCountries();return Object.keys(t).map(u=>({id:u,label:t[u]}))}async function G2(e){if(!e)return[];const{default:t}=await dr(async()=>{const{default:s}=await import("./index-D9p6E40W.chunk.mjs");return{default:s}},[],import.meta.url),u=new t().getStates(e)||{};return Object.keys(u).map(s=>({id:s,label:u[s]}))}const ky=`{delete i[h]}),t.headers=Ft.concat(n,i);const o=[];let a=!0;this.interceptors.request.forEach(function(h){if(typeof h.runWhen=="function"&&h.runWhen(t)===!1)return;a=a&&h.synchronous;const B=t.transitional||Er;B&&B.legacyInterceptorReqResOrdering?o.unshift(h.fulfilled,h.rejected):o.push(h.fulfilled,h.rejected)});const r=[];this.interceptors.response.forEach(function(h){r.push(h.fulfilled,h.rejected)});let m,l=0,g;if(!a){const h=[Q4.bind(this),void 0];for(h.unshift(...o),h.push(...r),g=h.length,m=Promise.resolve(t);l{if(!s._listeners)return;let n=s._listeners.length;for(;n-- >0;)s._listeners[n](i);s._listeners=null}),this.promise.then=i=>{let n;const o=new Promise(a=>{s.subscribe(a),n=a}).then(i);return o.cancel=function(){s.unsubscribe(n)},o},t(function(i,n,o){s.reason||(s.reason=new yn(i,n,o),u(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const u=this._listeners.indexOf(t);u!==-1&&this._listeners.splice(u,1)}toAbortSignal(){const t=new AbortController,u=s=>{t.abort(s)};return this.subscribe(u),t.signal.unsubscribe=()=>this.unsubscribe(u),t.signal}static source(){let t;return{token:new hc(function(u){t=u}),cancel:t}}};function By(e){return function(t){return e.apply(null,t)}}function xy(e){return D.isObject(e)&&e.isAxiosError===!0}const Ra={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Ra).forEach(([e,t])=>{Ra[t]=e});function vc(e){const t=new Ts(e),u=K3(Ts.prototype.request,t);return D.extend(u,Ts.prototype,t,{allOwnKeys:!0}),D.extend(u,t,null,{allOwnKeys:!0}),u.create=function(s){return vc(Is(e,s))},u}const Qe=vc(Cn);Qe.Axios=Ts,Qe.CanceledError=yn,Qe.CancelToken=yy,Qe.isCancel=dc,Qe.VERSION=yr,Qe.toFormData=oo,Qe.AxiosError=te,Qe.Cancel=Qe.CanceledError,Qe.all=function(e){return Promise.all(e)},Qe.spread=By,Qe.isAxiosError=xy,Qe.mergeConfig=Is,Qe.AxiosHeaders=Ft,Qe.formToJSON=e=>lc(D.isHTMLForm(e)?new FormData(e):e),Qe.getAdapter=pc.getAdapter,Qe.HttpStatusCode=Ra,Qe.default=Qe;const{Axios:A2,AxiosError:b2,CanceledError:w2,isCancel:D2,CancelToken:F2,VERSION:k2,all:S2,Cancel:N2,isAxiosError:xr,spread:_2,toFormData:O2,AxiosHeaders:T2,HttpStatusCode:z2,formToJSON:P2,getAdapter:R2,mergeConfig:L2,create:j2}=Qe;function Ay(){const e=Qe.create({headers:{requesttoken:wv()??"","X-Requested-With":"XMLHttpRequest"}});return Fv(t=>{e.defaults.headers.requesttoken=t}),Object.assign(e,{CancelToken:Qe.CancelToken,isCancel:Qe.isCancel})}const td="_nextcloudCsrfTokenReloaded";function by(e){return async t=>{if(!xr(t))throw t;const{config:u,response:s,request:i}=t,n=i?.responseURL;if(u&&!(td in u)&&s?.status===412&&s?.data?.message==="CSRF check failed"){console.warn(`Request to ${n} failed because of a CSRF mismatch. Fetching a new token.`);const o=await Dv();return e.defaults.headers.requesttoken=o,e({...u,[td]:!0,headers:{...u.headers,requesttoken:o}})}throw t}}const ud="_nextcloudMaintenanceModeRetryDelay";function wy(e){return async t=>{if(!xr(t))throw t;const{config:u,response:s,request:i}=t,n=i?.responseURL,o=s?.status,a=s?.headers;let r=u?.[ud]??1;if(o===503&&a?.["x-nextcloud-maintenance-mode"]==="1"&&u?.retryIfMaintenanceMode){if(r*=2,r>32)throw console.error("Retry delay exceeded one minute, giving up.",{responseURL:n}),t;return console.warn(`Request to ${n} failed because of maintenance mode. Retrying in ${r}s`),await new Promise(m=>{setTimeout(m,r*1e3)}),e({...u,[ud]:r})}throw t}}async function Dy(e){if(xr(e)){const{config:t,response:u,request:s}=e,i=s?.responseURL;u?.status===401&&u?.data?.message==="Current user is not logged in"&&t?.reloadExpiredSession&&globalThis.location?.reload&&(console.error(`Request to ${i} failed because the user session expired. Reloading the page …`),globalThis.OC?.reload?globalThis.OC.reload():globalThis.location.reload())}throw e}const Te=Ay();Te.interceptors.response.use(e=>e,by(Te)),Te.interceptors.response.use(e=>e,wy(Te)),Te.interceptors.response.use(e=>e,Dy);const $e=e=>nd("/apps/absence"+e),I2={getSession:()=>Te.get($e("/api/session")).then(e=>e.data),getPersonalConfig:()=>Te.get($e("/api/personal/config")).then(e=>e.data),updatePersonalConfig:e=>Te.put($e("/api/personal/config"),{values:e}).then(t=>t.data),listRequests:e=>Te.get($e("/api/requests"),{params:e}).then(t=>t.data),getRequest:e=>Te.get($e(`/api/requests/${e}`)).then(t=>t.data),createRequest:e=>Te.post($e("/api/requests"),e).then(t=>t.data),updateRequest:(e,t)=>Te.put($e(`/api/requests/${e}`),t).then(u=>u.data),cancelRequest:e=>Te.post($e(`/api/requests/${e}/cancel`)).then(t=>t.data),approveRequest:(e,t)=>Te.post($e(`/api/requests/${e}/approve`),{comment:t}).then(u=>u.data),rejectRequest:(e,t)=>Te.post($e(`/api/requests/${e}/reject`),{comment:t}).then(u=>u.data),addComment:(e,t)=>Te.post($e(`/api/requests/${e}/comments`),{body:t}).then(u=>u.data),getMyBalance:e=>Te.get($e("/api/balance"),{params:{year:e}}).then(t=>t.data),getEmployeeBalance:(e,t)=>Te.get($e(`/api/employees/${encodeURIComponent(e)}/balance`),{params:{year:t}}).then(u=>u.data),listEntitlements:(e,t)=>Te.get($e("/api/entitlements"),{params:{employeeUid:e,year:t}}).then(u=>u.data),createEntitlement:e=>Te.post($e("/api/entitlements"),e).then(t=>t.data),updateEntitlement:(e,t)=>Te.put($e(`/api/entitlements/${e}`),t).then(u=>u.data),bulkEntitlements:e=>Te.post($e("/api/entitlements/bulk"),e).then(t=>t.data),getCoverage:(e,t,u)=>Te.get($e("/api/coverage"),{params:{from:e,to:t,scope:u}}).then(s=>s.data),getCalendar:(e,t,u)=>Te.get($e("/api/calendar"),{params:{from:e,to:t,scope:u}}).then(s=>s.data),listLeaveTypes:e=>Te.get($e("/api/leave-types"),{params:{onlyEnabled:e}}).then(t=>t.data),createLeaveType:e=>Te.post($e("/api/leave-types"),e).then(t=>t.data),updateLeaveType:(e,t)=>Te.put($e(`/api/leave-types/${e}`),t).then(u=>u.data),deleteLeaveType:e=>Te.delete($e(`/api/leave-types/${e}`)).then(t=>t.data),searchUsers:e=>Te.get($e("/api/employees/search"),{params:{search:e}}).then(t=>t.data),reportBalances:(e,t)=>Te.get($e("/api/reports/balances"),{params:{year:e,group:t}}).then(u=>u.data),reportTrends:(e,t)=>Te.get($e("/api/reports/trends"),{params:{from:e,to:t}}).then(u=>u.data),reportSickLeave:(e,t)=>Te.get($e("/api/reports/sick-leave"),{params:{year:e,group:t}}).then(u=>u.data),exportRequestsUrl:(e,t)=>$e(`/api/export/requests?from=${e}&to=${t}`),exportBalancesUrl:e=>$e(`/api/export/balances?year=${e}`)};function Fy(e){const t=e.getFullYear(),u=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}-${u}-${s}`}function M2(e){const t=new Set;for(const u of String(e||"").split(",")){const s=parseInt(u,10);s>=1&&s<=7&&t.add(s)}return t}function $2(e,t,u,s){if(!e||!t||!u||u.size===0)return 0;const i=new Date(t+"T00:00:00");let n=0;for(const o=new Date(e+"T00:00:00");o<=i;o.setDate(o.getDate()+1)){const a=o.getDay()===0?7:o.getDay();u.has(a)&&!(s&&s(Fy(o)))&&n++}return n}function ta(e){return e?new Date(e+"T00:00:00").toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"}):""}function U2(e,t){return e===t?ta(e):`${ta(e)} – ${ta(t)}`}function V2(e,t,u,s,i){const n=new Date(t+"T00:00:00"),o=new Date(u+"T00:00:00"),a=Math.round((o-n)/864e5)+1;if(!(a<=0||!s))for(let r=0;r<12;r++){const m=new Date(i,r,1),l=new Date(i,r+1,0),g=n>m?n:m,p=o0&&(e[r]+=s*(h/a))}}async function W2(e,t){if(!e)return null;const{default:u}=await dr(async()=>{const{default:i}=await import("./index-EdbAt5mR.chunk.mjs");return{default:i}},[],import.meta.url),s=t?new u(e,t):new u(e);return i=>{const n=s.isHoliday(new Date(i+"T12:00:00"));return Array.isArray(n)&&n.some(o=>o.type==="public")}}async function H2(){const{default:e}=await dr(async()=>{const{default:u}=await import("./index-EdbAt5mR.chunk.mjs");return{default:u}},[],import.meta.url),t=new e().getCountries();return Object.keys(t).map(u=>({id:u,label:t[u]}))}async function G2(e){if(!e)return[];const{default:t}=await dr(async()=>{const{default:s}=await import("./index-EdbAt5mR.chunk.mjs");return{default:s}},[],import.meta.url),u=new t().getStates(e)||{};return Object.keys(u).map(s=>({id:s,label:u[s]}))}const ky=` @@ -27,5 +27,5 @@ https://vue-select.org/api/props.html#getoptionlabel`):e}},getOptionKey:{type:Fu cy="6" r="3" fill="var(--color-main-background)" /> -`,Sy=tu({__name:"NcIconToggleSwitch",props:{checked:{type:Boolean},size:{default:34},inline:{type:Boolean,default:!1}},setup(e){X0(s=>({v6bd152af:t.value,v16fd8ca9:u.value}));const t=Ue(()=>e.checked?"var(--color-primary-element)":"var(--color-text-maxcontrast)"),u=Ue(()=>e.checked?"calc(17 / 24 * 100%)":"calc(7 / 24 * 100%)");return(s,i)=>(X(),et(Es,{class:yt(s.$style.iconToggleSwitch),svg:ky,size:e.size,inline:e.inline},null,8,["class","size","inline"]))}}),Ny="_iconToggleSwitch_IKWaj",_y={"material-design-icon":"_material-design-icon_63AMQ",iconToggleSwitch:Ny},Oy={$style:_y},Ty=rt(Sy,[["__cssModules",Oy]]),zy=Symbol.for("insideRadioGroup");function Py(){return Nu(zy,void 0)}const Ry={name:"CheckboxBlankOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ly=["aria-hidden","aria-label"],jy=["fill","width","height"],Iy={d:"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z"},My={key:0};function $y(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon checkbox-blank-outline-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",Iy,[u.title?(X(),me("title",My,dt(u.title),1)):Ve("",!0)])],8,jy))],16,Ly)}const Uy=rt(Ry,[["render",$y]]),Vy={name:"CheckboxMarkedIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Wy=["aria-hidden","aria-label"],Hy=["fill","width","height"],Gy={d:"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"},qy={key:0};function Ky(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon checkbox-marked-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",Gy,[u.title?(X(),me("title",qy,dt(u.title),1)):Ve("",!0)])],8,Hy))],16,Wy)}const Yy=rt(Vy,[["render",Ky]]),Zy={name:"MinusBoxIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Xy=["aria-hidden","aria-label"],Jy=["fill","width","height"],Qy={d:"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"},eB={key:0};function tB(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon minus-box-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",Qy,[u.title?(X(),me("title",eB,dt(u.title),1)):Ve("",!0)])],8,Jy))],16,Xy)}const uB=rt(Zy,[["render",tB]]),sB={name:"RadioboxBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},iB=["aria-hidden","aria-label"],nB=["fill","width","height"],oB={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},aB={key:0};function rB(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon radiobox-blank-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",oB,[u.title?(X(),me("title",aB,dt(u.title),1)):Ve("",!0)])],8,nB))],16,iB)}const lB=rt(sB,[["render",rB]]),dB={name:"RadioboxMarkedIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mB=["aria-hidden","aria-label"],cB=["fill","width","height"],gB={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z"},fB={key:0};function pB(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon radiobox-marked-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",gB,[u.title?(X(),me("title",fB,dt(u.title),1)):Ve("",!0)])],8,cB))],16,mB)}const hB=rt(dB,[["render",pB]]),ei="checkbox",ys="radio",Zu="switch",Gi="button",vB={name:"NcCheckboxContent",components:{NcLoadingIcon:R3,NcIconToggleSwitch:Ty},props:{iconClass:{type:[String,Object],default:null},textClass:{type:[String,Object],default:null},type:{type:String,default:"checkbox",validator:e=>[ei,ys,Zu,Gi].includes(e)},buttonVariant:{type:Boolean,default:!1},isChecked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},iconSize:{type:Number,default:24},labelId:{type:String,required:!0},descriptionId:{type:String,required:!0}},computed:{isButtonType(){return this.type===Gi},isSwitchType(){return this.type===Zu},checkboxRadioIconElement(){return this.type===ys?this.isChecked?hB:lB:this.indeterminate?uB:this.isChecked?Yy:Uy}}},EB={key:0,class:"checkbox-content__wrapper"},CB=["id"],yB=["id"];function BB(e,t,u,s,i,n){const o=It("NcLoadingIcon"),a=It("NcIconToggleSwitch");return X(),me("span",{class:yt(["checkbox-content",{["checkbox-content-"+u.type]:!0,"checkbox-content--button-variant":u.buttonVariant,"checkbox-content--has-text":!!e.$slots.default}])},[ve("span",{class:yt(["checkbox-content__icon",{"checkbox-content__icon--checked":u.isChecked,"checkbox-content__icon--has-description":!n.isButtonType&&e.$slots.description,[u.iconClass]:!0}]),"aria-hidden":!0,inert:""},[ze(e.$slots,"icon",{checked:u.isChecked,loading:u.loading},()=>[u.loading?(X(),et(o,{key:0})):n.isSwitchType?(X(),et(a,{key:1,checked:u.isChecked,size:u.iconSize,inline:""},null,8,["checked","size"])):u.buttonVariant?Ve("",!0):(X(),et(ai(n.checkboxRadioIconElement),{key:2,size:u.iconSize},null,8,["size"]))],!0)],2),e.$slots.default||e.$slots.description?(X(),me("span",EB,[e.$slots.default?(X(),me("span",{key:0,id:u.labelId,class:yt(["checkbox-content__text",u.textClass])},[ze(e.$slots,"default",{},void 0,!0)],10,CB)):Ve("",!0),!n.isButtonType&&e.$slots.description?(X(),me("span",{key:1,id:u.descriptionId,class:"checkbox-content__description"},[ze(e.$slots,"description",{},void 0,!0)],8,yB)):Ve("",!0)])):Ve("",!0)],2)}const xB=rt(vB,[["render",BB],["__scopeId","data-v-5ca1e30f"]]);fi();const Ar={name:"NcCheckboxRadioSwitch",components:{NcCheckboxContent:xB},inheritAttrs:!1,props:{id:{type:String,default:()=>"checkbox-radio-switch-"+_s(),validator:e=>e.trim()!==""},wrapperId:{type:String,default:null},name:{type:String,default:null},ariaLabel:{type:String,default:""},type:{type:String,default:"checkbox",validator:e=>[ei,ys,Zu,Gi].includes(e)},buttonVariant:{type:Boolean,default:!1},buttonVariantGrouped:{type:String,default:"no",validator:e=>["no","vertical","horizontal"].includes(e)},modelValue:{type:[Boolean,Array,String],default:!1},value:{type:String,default:null},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},required:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},wrapperElement:{type:String,default:null},class:{type:[String,Array,Object],default:""},style:{type:[String,Array,Object],default:""},description:{type:String,default:null}},emits:["update:modelValue"],setup(e,{emit:t}){const u=Py();vi(()=>u?.value.register(!1));const s=Ue(()=>u?.value?ys:e.type),i=Ue({get(){return u?.value?u.value.modelValue:e.modelValue},set(n){u?.value?u.value.onUpdate(n):t("update:modelValue",n)}});return{internalType:s,internalModelValue:i,labelId:_s(),descriptionId:_s()}},computed:{isButtonType(){return this.internalType===Gi},computedWrapperElement(){return this.isButtonType?"button":this.wrapperElement!==null?this.wrapperElement:"span"},listeners(){return this.isButtonType?{click:this.onToggle}:{change:this.onToggle}},iconSize(){return this.internalType===Zu?36:20},cssIconSize(){return this.iconSize+"px"},cssIconHeight(){return this.internalType===Zu?"16px":this.cssIconSize},inputType(){return[ei,ys,Gi].includes(this.internalType)?this.internalType:ei},isChecked(){return this.value!==null?Array.isArray(this.internalModelValue)?[...this.internalModelValue].indexOf(this.value)>-1:this.internalModelValue===this.value:this.internalModelValue===!0},hasIndeterminate(){return[ei,ys].includes(this.inputType)}},mounted(){if(this.name&&this.internalType===ei&&!Array.isArray(this.internalModelValue))throw new Error("When using groups of checkboxes, the updated value will be an array.");if(this.name&&this.internalType===Zu)throw new Error("Switches are not made to be used for data sets. Please use checkboxes instead.");if(typeof this.internalModelValue!="boolean"&&this.internalType===Zu)throw new Error("Switches can only be used with boolean as modelValue prop.")},methods:{t:ft,n:qh,onToggle(e){if(!(this.disabled||e.target.tagName.toLowerCase()==="a")){if(this.internalType===ys){this.internalModelValue=this.value;return}if(this.internalType===Zu){this.internalModelValue=!this.isChecked;return}if(typeof this.internalModelValue=="boolean"){this.internalModelValue=!this.internalModelValue;return}this.isChecked?this.internalModelValue=this.internalModelValue.filter(t=>t!==this.value):this.internalModelValue=[...this.internalModelValue,this.value]}}}},sd=()=>{X0(e=>({v5ac25550:e.cssIconSize,d98ce684:e.cssIconHeight}))},id=Ar.setup;Ar.setup=id?(e,t)=>(sd(),id(e,t)):sd;const AB=["id","aria-labelledby","aria-describedby","aria-label","disabled","type","value","checked",".indeterminate","required","name"];function bB(e,t,u,s,i,n){const o=It("NcCheckboxContent");return X(),et(ai(n.computedWrapperElement),ut({id:u.wrapperId??(n.isButtonType?u.id:null),"aria-label":n.isButtonType&&u.ariaLabel?u.ariaLabel:void 0,class:["checkbox-radio-switch",[e.$props.class,{["checkbox-radio-switch-"+s.internalType]:s.internalType,"checkbox-radio-switch--checked":n.isChecked,"checkbox-radio-switch--disabled":u.disabled,"checkbox-radio-switch--indeterminate":n.hasIndeterminate?u.indeterminate:!1,"checkbox-radio-switch--button-variant":u.buttonVariant,"checkbox-radio-switch--button-variant-v-grouped":u.buttonVariant&&u.buttonVariantGrouped==="vertical","checkbox-radio-switch--button-variant-h-grouped":u.buttonVariant&&u.buttonVariantGrouped==="horizontal","button-vue":n.isButtonType}]],style:u.style,type:n.isButtonType?"button":null},n.isButtonType?e.$attrs:{},i0(n.isButtonType?n.listeners:{})),{default:Pe(()=>[n.isButtonType?Ve("",!0):(X(),me("input",ut({key:0,id:u.id,"aria-labelledby":!n.isButtonType&&!u.ariaLabel?s.labelId:null,"aria-describedby":!n.isButtonType&&(u.description||e.$slots.description)?s.descriptionId:null,"aria-label":u.ariaLabel||void 0,class:"checkbox-radio-switch__input",disabled:u.disabled,type:n.inputType,value:u.value,checked:n.isChecked,".indeterminate":n.hasIndeterminate?u.indeterminate:null,required:u.required,name:u.name},e.$attrs,i0(n.listeners,!0)),null,48,AB)),ye(o,{id:n.isButtonType?void 0:`${u.id}-label`,class:"checkbox-radio-switch__content",iconClass:"checkbox-radio-switch__icon",textClass:"checkbox-radio-switch__text",type:s.internalType,indeterminate:n.hasIndeterminate?u.indeterminate:!1,buttonVariant:u.buttonVariant,isChecked:n.isChecked,loading:u.loading,labelId:s.labelId,descriptionId:s.descriptionId,iconSize:n.iconSize,onClick:n.onToggle},am({icon:Pe(()=>[ze(e.$slots,"icon",{},void 0,!0)]),_:2},[e.$slots.description||u.description?{name:"description",fn:Pe(()=>[ze(e.$slots,"description",{},()=>[Ns(dt(u.description),1)],!0)]),key:"0"}:void 0,e.$slots.default?{name:"default",fn:Pe(()=>[ze(e.$slots,"default",{},void 0,!0)]),key:"1"}:void 0]),1032,["id","type","indeterminate","buttonVariant","isChecked","loading","labelId","descriptionId","iconSize","onClick"])]),_:3},16,["id","aria-label","class","style","type"])}const q2=rt(Ar,[["render",bB],["__scopeId","data-v-c34c63a4"]]);export{Rh as $,sv as A,p2 as B,Jg as C,h2 as D,tv as E,ks as F,l2 as G,tu as H,Zi as I,c2 as J,f2 as K,g2 as L,Tv as M,fi as N,ah as O,dt as P,Ve as Q,nt as R,yt as S,Vn as T,Bs as U,ti as V,ve as W,ye as X,Pe as Y,bh as Z,rt as _,Uf as a,C2 as a$,v0 as a0,WB as a1,It as a2,Es as a3,IB as a4,ft as a5,As as a6,u2 as a7,JB as a8,Gd as a9,e2 as aA,R3 as aB,_s as aC,D1 as aD,s2 as aE,zf as aF,Ff as aG,FB as aH,v2 as aI,zB as aJ,X1 as aK,RB as aL,Xi as aM,zt as aN,LB as aO,i2 as aP,ml as aQ,ir as aR,jB as aS,XB as aT,am as aU,VB as aV,Ql as aW,I2 as aX,B2 as aY,In as aZ,y2 as a_,Ym as aa,f3 as ab,nn as ac,ci as ad,Ah as ae,$m as af,gv as ag,Bl as ah,Nf as ai,Zf as aj,UB as ak,$B as al,C1 as am,Ns as an,_t as ao,At as ap,ut as aq,YB as ar,T1 as as,_B as at,l1 as au,r1 as av,$h as aw,MB as ax,QB as ay,n2 as az,nm as b,x2 as b0,E2 as b1,Fy as b2,M2 as b3,$2 as b4,W2 as b5,nd as b6,PB as b7,Qr as b8,ZB as b9,O0 as bA,P3 as ba,Js as bb,HB as bc,da as bd,Mf as be,zc as bf,od as bg,GB as bh,o2 as bi,KB as bj,Te as bk,wB as bl,qB as bm,h1 as bn,Sv as bo,U2 as bp,vg as bq,SB as br,NB as bs,q2 as bt,V2 as bu,OB as bv,t2 as bw,G2 as bx,H2 as by,DB as bz,et as c,me as d,ze as e,Fe as f,mi as g,Ue as h,Nu as i,uu as j,Ha as k,TB as l,X as m,ws as n,vi as o,gt as p,Cf as q,ai as r,uv as s,ev as t,kB as u,a2 as v,_u as w,m2 as x,r2 as y,d2 as z}; -//# sourceMappingURL=NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.map +`,Sy=tu({__name:"NcIconToggleSwitch",props:{checked:{type:Boolean},size:{default:34},inline:{type:Boolean,default:!1}},setup(e){X0(s=>({v6bd152af:t.value,v16fd8ca9:u.value}));const t=Ue(()=>e.checked?"var(--color-primary-element)":"var(--color-text-maxcontrast)"),u=Ue(()=>e.checked?"calc(17 / 24 * 100%)":"calc(7 / 24 * 100%)");return(s,i)=>(X(),et(Es,{class:yt(s.$style.iconToggleSwitch),svg:ky,size:e.size,inline:e.inline},null,8,["class","size","inline"]))}}),Ny="_iconToggleSwitch_IKWaj",_y={"material-design-icon":"_material-design-icon_63AMQ",iconToggleSwitch:Ny},Oy={$style:_y},Ty=rt(Sy,[["__cssModules",Oy]]),zy=Symbol.for("insideRadioGroup");function Py(){return Nu(zy,void 0)}const Ry={name:"CheckboxBlankOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ly=["aria-hidden","aria-label"],jy=["fill","width","height"],Iy={d:"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z"},My={key:0};function $y(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon checkbox-blank-outline-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",Iy,[u.title?(X(),me("title",My,dt(u.title),1)):Ve("",!0)])],8,jy))],16,Ly)}const Uy=rt(Ry,[["render",$y]]),Vy={name:"CheckboxMarkedIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Wy=["aria-hidden","aria-label"],Hy=["fill","width","height"],Gy={d:"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"},qy={key:0};function Ky(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon checkbox-marked-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",Gy,[u.title?(X(),me("title",qy,dt(u.title),1)):Ve("",!0)])],8,Hy))],16,Wy)}const Yy=rt(Vy,[["render",Ky]]),Zy={name:"MinusBoxIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Xy=["aria-hidden","aria-label"],Jy=["fill","width","height"],Qy={d:"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"},eB={key:0};function tB(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon minus-box-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",Qy,[u.title?(X(),me("title",eB,dt(u.title),1)):Ve("",!0)])],8,Jy))],16,Xy)}const uB=rt(Zy,[["render",tB]]),sB={name:"RadioboxBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},iB=["aria-hidden","aria-label"],nB=["fill","width","height"],oB={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},aB={key:0};function rB(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon radiobox-blank-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",oB,[u.title?(X(),me("title",aB,dt(u.title),1)):Ve("",!0)])],8,nB))],16,iB)}const lB=rt(sB,[["render",rB]]),dB={name:"RadioboxMarkedIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mB=["aria-hidden","aria-label"],cB=["fill","width","height"],gB={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z"},fB={key:0};function pB(e,t,u,s,i,n){return X(),me("span",ut(e.$attrs,{"aria-hidden":u.title?null:"true","aria-label":u.title,class:"material-design-icon radiobox-marked-icon",role:"img",onClick:t[0]||(t[0]=o=>e.$emit("click",o))}),[(X(),me("svg",{fill:u.fillColor,class:"material-design-icon__svg",width:u.size,height:u.size,viewBox:"0 0 24 24"},[ve("path",gB,[u.title?(X(),me("title",fB,dt(u.title),1)):Ve("",!0)])],8,cB))],16,mB)}const hB=rt(dB,[["render",pB]]),ei="checkbox",ys="radio",Zu="switch",Gi="button",vB={name:"NcCheckboxContent",components:{NcLoadingIcon:R3,NcIconToggleSwitch:Ty},props:{iconClass:{type:[String,Object],default:null},textClass:{type:[String,Object],default:null},type:{type:String,default:"checkbox",validator:e=>[ei,ys,Zu,Gi].includes(e)},buttonVariant:{type:Boolean,default:!1},isChecked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},iconSize:{type:Number,default:24},labelId:{type:String,required:!0},descriptionId:{type:String,required:!0}},computed:{isButtonType(){return this.type===Gi},isSwitchType(){return this.type===Zu},checkboxRadioIconElement(){return this.type===ys?this.isChecked?hB:lB:this.indeterminate?uB:this.isChecked?Yy:Uy}}},EB={key:0,class:"checkbox-content__wrapper"},CB=["id"],yB=["id"];function BB(e,t,u,s,i,n){const o=It("NcLoadingIcon"),a=It("NcIconToggleSwitch");return X(),me("span",{class:yt(["checkbox-content",{["checkbox-content-"+u.type]:!0,"checkbox-content--button-variant":u.buttonVariant,"checkbox-content--has-text":!!e.$slots.default}])},[ve("span",{class:yt(["checkbox-content__icon",{"checkbox-content__icon--checked":u.isChecked,"checkbox-content__icon--has-description":!n.isButtonType&&e.$slots.description,[u.iconClass]:!0}]),"aria-hidden":!0,inert:""},[ze(e.$slots,"icon",{checked:u.isChecked,loading:u.loading},()=>[u.loading?(X(),et(o,{key:0})):n.isSwitchType?(X(),et(a,{key:1,checked:u.isChecked,size:u.iconSize,inline:""},null,8,["checked","size"])):u.buttonVariant?Ve("",!0):(X(),et(ai(n.checkboxRadioIconElement),{key:2,size:u.iconSize},null,8,["size"]))],!0)],2),e.$slots.default||e.$slots.description?(X(),me("span",EB,[e.$slots.default?(X(),me("span",{key:0,id:u.labelId,class:yt(["checkbox-content__text",u.textClass])},[ze(e.$slots,"default",{},void 0,!0)],10,CB)):Ve("",!0),!n.isButtonType&&e.$slots.description?(X(),me("span",{key:1,id:u.descriptionId,class:"checkbox-content__description"},[ze(e.$slots,"description",{},void 0,!0)],8,yB)):Ve("",!0)])):Ve("",!0)],2)}const xB=rt(vB,[["render",BB],["__scopeId","data-v-5ca1e30f"]]);fi();const Ar={name:"NcCheckboxRadioSwitch",components:{NcCheckboxContent:xB},inheritAttrs:!1,props:{id:{type:String,default:()=>"checkbox-radio-switch-"+_s(),validator:e=>e.trim()!==""},wrapperId:{type:String,default:null},name:{type:String,default:null},ariaLabel:{type:String,default:""},type:{type:String,default:"checkbox",validator:e=>[ei,ys,Zu,Gi].includes(e)},buttonVariant:{type:Boolean,default:!1},buttonVariantGrouped:{type:String,default:"no",validator:e=>["no","vertical","horizontal"].includes(e)},modelValue:{type:[Boolean,Array,String],default:!1},value:{type:String,default:null},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},required:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},wrapperElement:{type:String,default:null},class:{type:[String,Array,Object],default:""},style:{type:[String,Array,Object],default:""},description:{type:String,default:null}},emits:["update:modelValue"],setup(e,{emit:t}){const u=Py();vi(()=>u?.value.register(!1));const s=Ue(()=>u?.value?ys:e.type),i=Ue({get(){return u?.value?u.value.modelValue:e.modelValue},set(n){u?.value?u.value.onUpdate(n):t("update:modelValue",n)}});return{internalType:s,internalModelValue:i,labelId:_s(),descriptionId:_s()}},computed:{isButtonType(){return this.internalType===Gi},computedWrapperElement(){return this.isButtonType?"button":this.wrapperElement!==null?this.wrapperElement:"span"},listeners(){return this.isButtonType?{click:this.onToggle}:{change:this.onToggle}},iconSize(){return this.internalType===Zu?36:20},cssIconSize(){return this.iconSize+"px"},cssIconHeight(){return this.internalType===Zu?"16px":this.cssIconSize},inputType(){return[ei,ys,Gi].includes(this.internalType)?this.internalType:ei},isChecked(){return this.value!==null?Array.isArray(this.internalModelValue)?[...this.internalModelValue].indexOf(this.value)>-1:this.internalModelValue===this.value:this.internalModelValue===!0},hasIndeterminate(){return[ei,ys].includes(this.inputType)}},mounted(){if(this.name&&this.internalType===ei&&!Array.isArray(this.internalModelValue))throw new Error("When using groups of checkboxes, the updated value will be an array.");if(this.name&&this.internalType===Zu)throw new Error("Switches are not made to be used for data sets. Please use checkboxes instead.");if(typeof this.internalModelValue!="boolean"&&this.internalType===Zu)throw new Error("Switches can only be used with boolean as modelValue prop.")},methods:{t:ft,n:qh,onToggle(e){if(!(this.disabled||e.target.tagName.toLowerCase()==="a")){if(this.internalType===ys){this.internalModelValue=this.value;return}if(this.internalType===Zu){this.internalModelValue=!this.isChecked;return}if(typeof this.internalModelValue=="boolean"){this.internalModelValue=!this.internalModelValue;return}this.isChecked?this.internalModelValue=this.internalModelValue.filter(t=>t!==this.value):this.internalModelValue=[...this.internalModelValue,this.value]}}}},sd=()=>{X0(e=>({v5ac25550:e.cssIconSize,d98ce684:e.cssIconHeight}))},id=Ar.setup;Ar.setup=id?(e,t)=>(sd(),id(e,t)):sd;const AB=["id","aria-labelledby","aria-describedby","aria-label","disabled","type","value","checked",".indeterminate","required","name"];function bB(e,t,u,s,i,n){const o=It("NcCheckboxContent");return X(),et(ai(n.computedWrapperElement),ut({id:u.wrapperId??(n.isButtonType?u.id:null),"aria-label":n.isButtonType&&u.ariaLabel?u.ariaLabel:void 0,class:["checkbox-radio-switch",[e.$props.class,{["checkbox-radio-switch-"+s.internalType]:s.internalType,"checkbox-radio-switch--checked":n.isChecked,"checkbox-radio-switch--disabled":u.disabled,"checkbox-radio-switch--indeterminate":n.hasIndeterminate?u.indeterminate:!1,"checkbox-radio-switch--button-variant":u.buttonVariant,"checkbox-radio-switch--button-variant-v-grouped":u.buttonVariant&&u.buttonVariantGrouped==="vertical","checkbox-radio-switch--button-variant-h-grouped":u.buttonVariant&&u.buttonVariantGrouped==="horizontal","button-vue":n.isButtonType}]],style:u.style,type:n.isButtonType?"button":null},n.isButtonType?e.$attrs:{},i0(n.isButtonType?n.listeners:{})),{default:Pe(()=>[n.isButtonType?Ve("",!0):(X(),me("input",ut({key:0,id:u.id,"aria-labelledby":!n.isButtonType&&!u.ariaLabel?s.labelId:null,"aria-describedby":!n.isButtonType&&(u.description||e.$slots.description)?s.descriptionId:null,"aria-label":u.ariaLabel||void 0,class:"checkbox-radio-switch__input",disabled:u.disabled,type:n.inputType,value:u.value,checked:n.isChecked,".indeterminate":n.hasIndeterminate?u.indeterminate:null,required:u.required,name:u.name},e.$attrs,i0(n.listeners,!0)),null,48,AB)),ye(o,{id:n.isButtonType?void 0:`${u.id}-label`,class:"checkbox-radio-switch__content",iconClass:"checkbox-radio-switch__icon",textClass:"checkbox-radio-switch__text",type:s.internalType,indeterminate:n.hasIndeterminate?u.indeterminate:!1,buttonVariant:u.buttonVariant,isChecked:n.isChecked,loading:u.loading,labelId:s.labelId,descriptionId:s.descriptionId,iconSize:n.iconSize,onClick:n.onToggle},am({icon:Pe(()=>[ze(e.$slots,"icon",{},void 0,!0)]),_:2},[e.$slots.description||u.description?{name:"description",fn:Pe(()=>[ze(e.$slots,"description",{},()=>[Ns(dt(u.description),1)],!0)]),key:"0"}:void 0,e.$slots.default?{name:"default",fn:Pe(()=>[ze(e.$slots,"default",{},void 0,!0)]),key:"1"}:void 0]),1032,["id","type","indeterminate","buttonVariant","isChecked","loading","labelId","descriptionId","iconSize","onClick"])]),_:3},16,["id","aria-label","class","style","type"])}const q2=rt(Ar,[["render",bB],["__scopeId","data-v-c34c63a4"]]);export{Rh as $,sv as A,p2 as B,Jg as C,h2 as D,tv as E,ks as F,l2 as G,tu as H,Zi as I,c2 as J,f2 as K,g2 as L,Tv as M,fi as N,ah as O,dt as P,Ve as Q,nt as R,yt as S,Vn as T,Bs as U,ti as V,ve as W,ye as X,Pe as Y,bh as Z,rt as _,Uf as a,C2 as a$,v0 as a0,WB as a1,It as a2,Es as a3,IB as a4,ft as a5,As as a6,u2 as a7,JB as a8,Gd as a9,e2 as aA,R3 as aB,_s as aC,D1 as aD,s2 as aE,zf as aF,Ff as aG,FB as aH,v2 as aI,zB as aJ,X1 as aK,RB as aL,Xi as aM,zt as aN,LB as aO,i2 as aP,ml as aQ,ir as aR,jB as aS,XB as aT,am as aU,VB as aV,Ql as aW,I2 as aX,B2 as aY,In as aZ,y2 as a_,Ym as aa,f3 as ab,nn as ac,ci as ad,Ah as ae,$m as af,gv as ag,Bl as ah,Nf as ai,Zf as aj,UB as ak,$B as al,C1 as am,Ns as an,_t as ao,At as ap,ut as aq,YB as ar,T1 as as,_B as at,l1 as au,r1 as av,$h as aw,MB as ax,QB as ay,n2 as az,nm as b,x2 as b0,E2 as b1,Fy as b2,M2 as b3,$2 as b4,W2 as b5,nd as b6,PB as b7,Qr as b8,ZB as b9,O0 as bA,P3 as ba,Js as bb,HB as bc,da as bd,Mf as be,zc as bf,od as bg,GB as bh,o2 as bi,KB as bj,Te as bk,wB as bl,qB as bm,h1 as bn,Sv as bo,vg as bp,U2 as bq,SB as br,NB as bs,q2 as bt,V2 as bu,OB as bv,t2 as bw,G2 as bx,H2 as by,DB as bz,et as c,me as d,ze as e,Fe as f,mi as g,Ue as h,Nu as i,uu as j,Ha as k,TB as l,X as m,ws as n,vi as o,gt as p,Cf as q,ai as r,uv as s,ev as t,kB as u,a2 as v,_u as w,m2 as x,r2 as y,d2 as z}; +//# sourceMappingURL=NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.map diff --git a/js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.license b/js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.license similarity index 100% rename from js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.license rename to js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.license diff --git a/js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.map b/js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.map similarity index 99% rename from js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.map rename to js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.map index 9482fd4..438454e 100644 --- a/js/NcCheckboxRadioSwitch-DVdt5Hkq-anWxu1ok.chunk.mjs.map +++ b/js/NcCheckboxRadioSwitch-DVdt5Hkq-WOiPqszu.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"SAQuB,CAACA,EAAKC,IAAQC,OAInC,EAAMC,GAHa,UAAO,SACxB,MAAY,GACA,EAAE,SACW,cAE3B,OADoCC,CAAU,EAC7B,aAAqB,SAA0BJ,CAAKC,cAEhCC,EAAY,CACjD,QAAmB,OAAO,UACxB,WACc,EACVG,OAAS,KAASC,CAAMC,KAC5B,KAAAA,OAAe,CACRD,OAAK,KACV,aACA,aACE,QAAUC,QACV,OAAe,QAC2C,oBAAjD,IAAOC,MAAM,OAAY,aAAa,UAAgC,OAAQ,EAAyB,MAEvG,MAAOA,CAAM,UAAY,OAAOA,MAAM,MAAWA,EAAE,cAIlE,OACA,EAAIR,GAAI,SAAQ,OAAM,CACpBA,OAAYA,EAEPK,EAAOL,MAAe,CAAE,OAEZA,QAAyB,CAC5C,MAAMS,GAAa,UAAO,KACxB,SAAW,EACf,EAAgB,GAAE,CACVC,EAAoCC,MAC1C,OAAI,WAAY,QAAQ,oBAAsB,SAAoB,QACzDD,MAAiCV,CAAKC,OAExB,eAAgCD,CAAKC,GAC9D,CA0CMG,OAAmB,QAAO,QAAS,WAAW,YAAc,OAAS,KAAOO,MAClF,QAASA,QACP,CAAIC,KAAU,QAAO,UACrB,CAAI,WAAmB,QACX,QAAS,OACnB,MAAMC,OAAc,OAAQ,WAAa,MACrCA,OACFD,CAAUA,GAAQ,SAAY,OAE9B,KAAME,OAAgB,OAAQ,IAAM,CACpCF,QAAkB,SAAqBE,CAAQ,MAAM,GAGzD,QACF,CCtGA,SAASC,MAAqBC,CAAG,OAC9B,MAAiBR,IAAE,UAAgBA,OAAE,IACtC,SAAa,QAAO,EAAMQ,GAAIC,OAAOA,CAAKC,GAAG,EAAIV,OACjD,KAAOU,CACT,CACA,SAASC,IAAgBX,CAAG,CAC1B,OAAI,KAAM,SAAY,MAAOA,KAE/B,MAASY,OAA4B,CACnC,OAAgBZ,QAAI,OAAsB,WAAf,SAAkC,MAAO,OAAQ,MAAO,WAAY,MACnFa,WACV,CAAIJ,QAIF,EAAI,GACJK,UAEF,OACMC,SAAW,OAAS,OAAYC,QAAU,CAAO,IAAEF,CAAKL,IAAM,KAAKI,CAAC,QAAG,KAAY,KAAKJ,EAAE,KAAK,MAAK,OAAWO,IAAIF,CAAI,MAC7H,QACEG,EAAI,IAAMP,CAAIV,CAChB,WACE,CAAI,CACF,IAAKc,MAAe,OAAV,SAAyBD,EAAE,QAAM,CAAI,SAAQ,GAAMK,SAC/D,WACE,CAAID,EAAG,MAAMP,CACf,GAEF,MAAO,CACT,KAEF,MAASS,UACP,CAAM,SAAI,KAAU;AAAA;AA4wEkD,EAAQC,KAGxEC,QACeC,WAEUC,CAAsBC,KAAiC,CAAIJ,EAC1F,EACAK,EAAU;ACjyE8C;AAAA;AAAA,EAGxDC,MAAQ,CAAK,KACJC,CACT,QACWD,CAASE,IAClB,MAAI,QAAO,KAAK,MAAS,SAAU,SAAYC,CAAQ,SAAK,YAM5D,OAHI,QAAOH,GAAY,SAAYE,GAAS,QAAU,gBAC5C,CAAQF,GAEVG,EAAK,CACX,KAAKC,GAAS,SACZ,KAAQ,MAAM,QAAK,YAAcJ,CAASI,GAAS,UAAwB,KAC3E,GACF,MAAKA,EAAS,KACZ,QAAQ,UAAU,gBAAuBA,GAAS,eAClD,KACF,EAAKA,GAAS,KACZ,QAAQ,KAAK,KAAK,cAAcJ,SAAkB,CAAME,CAAO,EAAGA,CAAO,EACzE,MACF,KAAKE,IAAS,KACZ,SAAQ,OAAM,GAAK,cAAcJ,EAASI,IAAS,SAAwB,GAC3E,OACF,QAAc,IACd,qBACU,CAAM,SAAK,UAAcJ,EAASI,OAAS,eAIzD,UAAwB,CACtB,wBAAkC,IAAO,UAAW,OAAK,UAE3D,KAAKJ,CAASE,EAAS,CACrB,MAAK,OAAa,IAAMF,MAAS,QAAO,EAAO,GAAI,QAAK,MAAgB,CAAC,KAE3E,GAAKA,CAASE,EAAS,CACrB,SAASE,GAAS,KAAMJ,SAAgB,UAAW,KAAK,QAASE,QAEnE,EAAMF,EAASE,MACb,EAAK,KAAIE,EAAS,YAAgB,GAAO,OAAO,GAAI,YAAK,CAASF,MAEpE,MAAeA,MACb,EAAK,IAAIE,GAAS,MAAOJ,EAAS,OAAO,OAAO,SAAS,UAC3D,CACF,CACA,SAASK,GAAmBH,EAAS,EACnC,MAAO,QAAyB,CAClC,CACA,MAAMI,GACJ,YACA,OACA,YACE,KAAK,QAAU,GACf,KAAK,QAAUC,CACjB,CAMA,SAAc,CACZ,aAAK,OAAQ,IAAMC,KACZ,CACT,EAMA,mBACE,QAAK,OAAQ,MAAQL,UAUvB,YACE,OAAK,gBACE,IAKT,aACE,UAA2B,KAC3B,IAAIM,IAAS,eACN,OAAQ,EAAMA,EAAK,MAEnB,QAKT,aACE,UAAa,YAEP,OAAS,iBAAe,SAAc,QAAS,gBAAe,aAChEC,CAAK,gBAAgB,QAAO,cAAY,UAAqB,QACzD,EAAO,YACTA,UAAa,MAAQN,GAAS,UAEhC,UAAS,gBAAoB,mBAAoBO,QAEjD,KAAS,iBAAiB,yBAG9B,SACO,IACT,CAEA,OAAQ,MACN,EAAI,OAAK,UAAQ,UAAU,SACpB,cAAc,CAEd,SAAK,eAAa,CAAO,CAClC,EAEF,UAASC,UACP,CAAO,QAAkBP,CAAkB,CAC7C,ECnJK,UAAUO,CAAgB,SAAG,KAAU,CAAG,OAAO,mBAAkB,KAAK,ECAvEC,MAAa,SCKM,CAAC,oCAAqC,qCAAsC,6CAAwC,iCAAuC,yCAA0C,oCAAsC,qDAAoD,4CAA+C,gDAA+C,6EAAgF,4DAA6D,qCAAqC,EACpkBC,GAAmCC,IAAmB,QAAQ,CAC9DC,UAAmB,YACnBC,GAAUD,GAAY,UAAY,KAAK,MAAQ,UAAU,SAAW,QAAQ,UAAU,mBAAqB,QAAQ,aAAU,2BACjG,SAAQ,SAAU,iBAAc,WAC1DE,GACJ,UAAmB,OAAuCA,CAAuBC,EAAQ,oBAAiB,CAAQD,MAAyB,OAA3F,QAAkI,IAAKC,CAAO,CAChM,KAAI,QAAmB,CACrB,OAAyDA,GAAQ,eAW/DC,QAAW,IAAiBC,EAAMC,EAAQ,CAC5C,IAAIC,KACAD,CAAW,cACJ,CAKX,KAAIE,CAAWH,GAAS,OAAoCE,EAAqBF,EAAK,gBAAkB,MAAQE,IAAuB,OAArF,SAA0H,MAAKF,CAAM,OAAO,EAC1LI,EAAQD,IAAa,KAAMA,OAAa,GAKxCE,EAASD,OAAmBJ,GAGhC,OAAOA,EAAK,SAAY,YAAaA,CAAK,YAAQ,QAAaD,EAASC,EAAK,UAAU,OACvF,GAAOK,CACT,OAOwB,OAA2BL,EAAM,CACvD,MAIIM,GAAWN,EAAS,SAA0DA,OAAK,gBAAkB,CAAQO,IAAwB,OAAvF,UAA6H,QAAW,eAAiB,EAC3M,QAAOD,OAAmBA,IAAa,MACzC,GAQIE,OAAgB,QAA6CC,EAAQ,CAGvE,QAAe,CACb,OAAO,GAET,GAAIC,KAAa,GAAM,eAAU,CAAM,UAAS,eAAiBjB,QACjE,IAAIkB,GAAoBf,GAAQ,OAASH,GAAiB,EACxDiB,EAAW,WAEbA,OAAwB,IAAOD,KAEjC,CAoCIG,GAA4B,SAAkCC,IAA4BlE,EAAS,CAGrG,QAFI+D,EAAa,OACK,OAAM,EAAKG,CAAQ,OAClB,QACrB,EAAIf,MAA0B,IAAK,EACnC,IAAIC,GAASD,GAAS,CAAK,EAK3B,GAAIA,EAAQ,mBAEV,GAAIgB,IAAmB,iBAAgB,MAChB,UAAoBhB,CAAQ,SAC/CiB,EAAmBH,IAA0BI,CAAS,MACtDrE,EAAQ,eACM,UAAkC,CAElD+D,EAAW,KAAK,CACd,YAAaZ,EACb,YACV,CAAS,CAEL,KAAO,CAEL,QAAqBF,CAAQ,KAAKE,EAASL,OACrB9C,EAAQ,OAAOmD,GAAO,EAAMa,GAAoB,CAACE,EAAS,YAAgB,EAC9FH,GAAW,WAITO,EAAanB,WAAQ,GAEzB,OAAOnD,EAAQ,eAAkB,YAAcA,GAAQ,aAAcmD,EAAO,CAKxEoB,EAAkB,EAACnB,EAASkB,KAAiB,GAAM,MAAS,eAAoBtE,EAAQ,iBAAiBmD,KAC7G,EAAImB,IAAcC,CAAiB,CAOjC,IAAIC,EAAoBP,MAA0BK,CAAe,QAAe,MAAWA,EAAW,UAAU,EAAMtE,CAAO,IACjH,UACC,OAAK,WAEL,QACT,aACA,gBAGN,GAGEyE,MAAgB,SAAQ,CAAMA,EAAiBtB,EAAQ,SAE3D,CACF,CACA,OAAOY,QASS,OAAqBV,EAAM,CAC3C,MAAO,CAAC,MAAM,SAASA,EAAK,iBAAa,SAAa,CAAE,CAAC,CAC3D,MAQkB,QAAqBA,EAAM,KACtCA,EACH,OAAM,GAAI,MAAM,kBAAkB,OAEpC,EAAIA,MAAK,MAAW,GAQb,6BAA0B,EAAKA,GAAK,WAAYqB,CAAkBrB,CAAI,SAAuB,EACzF,MAGC,MACd,EAUIsB,KAAuB,OAA8BtB,EAAMuB,GAC7D,QAAeC,CAAYxB,CAAI,GAC/B,MAAIyB,GAAW,EAAKF,IAAYG,GAAY1B,KAGrCyB,CACT,EACIE,GAAuB,SAA8BlE,EAAGmE,IAC1D,MAAOnE,SAAE,cAAe,CAAWA,EAAE,cAAgBmE,aAAE,GAAgBnE,aAAe,mBAE1E,GAAiBuC,MAC7B,WAAY,OAAY,OAEtB6B,GAAgB,SAAuB7B,aAC1BA,CAAI,aAAmB,SAEpC8B,GAAuB,SAA8B9B,EAAM,KACzD/C,EAAI+C,SAAK,GAAY,aAAa,YAAM,EAAU,MAAM,gBAAmB,EAAE,OAAK,OAAU+B,EAAO,CACrG,QAAOA,CAAM,UAAY,WAC1B,CACD,SACF,CACIC,SAAkB,GAAyBC,QAC7C,iBAA0B,GAAQjE,IAChC,GAAIiE,IAAO,CAAE,SAAWA,OAAS,SAC/B,OAAajE,CAAC,CAGpB,SACsB,QACpB,GAAI,IAAM,QACR,EAAO,KAET,EAAIkE,MAAkB,IAAQC,GAAYnC,EAAI,CAC1CoC,EAAc,SAAqBC,cACnB,sBAAiB,iCAGrC,GAAI,iBAAkB,EAAe,kBAAsB,iBAAsB,EAAO,aAAe,UACrGC,EAAWF,QAAY,CAAO,SAAI,EAAOpC,QAAU,UAGjDsC,EAAWF,eACb,CAASG,EAAK,OAEZ,UAAQ,cAAM,uIAAgJ,SAIlK,UAA8BD,CAAUtC,EAAK,IAAI,KACjD,GAAO,IAAYwC,KACrB,OACc,OAAiBxC,KAC7B,KAAOyC,GAAQzC,IAASA,KAAK,IAAS,OACxC,KACyB,oBAChB0C,EAAQ1C,CAAI,KAAM2C,EAAgB3C,CAAI,SAI1B,OAAwBA,CAAM,CACjD,aAwBuBmC,CAAYnC,CAAI,UACP4C,EAAc,QAAQC,EAAc,QAAS,MAASA,EAAU,OAIjF,GACf,GAAID,GAAYA,UACd,CAAIE,EAAeC,OAEnB,CADAC,EAAW,GAAC,CAAGF,EAAgBG,MAAkB,OAAQH,EAAkB,SAAWC,EAAwBD,OAAc,YAAmB,MAAQC,SAA0B,GAAUA,EAAsB,aAA0B/C,GAAS,aAAuD,kBAAmB,GAAQkD,OAAwB,WAA8B,QAAa,CAClY,CAACF,KAAYC,CAAc,CAChC,IAAIE,EAAYC,MAILjB,GAAYc,KACvBA,CAAgBE,EAAaP,MAAc,OAAQO,EAAe,OAAS,QAASA,CAAW,QACnF,GAAGC,GAAiBH,QAAkB,EAAQG,IAAmB,SAAWC,EAAwBD,WAAe,cAA2BC,IAA0B,QAAUA,OAAsB,cAGxN,EAAOL,CACT,UACiB,WACXM,EAAwBtD,UAAK,oBACD,SACrBsD,CAAsB,QACjC,QAAOC,EAAU,UAEfC,GAAW,UAAkBxD,CAAMyD,EAAM,UACnB,kBACD,aACvB,GAAIC,GAAiB,eACf,oBAAqB1D,KAGvB,EAAI2D,IAAe,iBAGjB,eAAc,CACd,sBACA,wBACA,mBAAoB,CAKpB,uBACD,CACD,aAUAC,EAAoB,iBAAiB5D,CAAI,KAC9B4D,CAAkB,eAC7BC,GAAe,cAA2B,WAC5C,YAEF,CAAIC,EAAkBlE,QAAaI,EAAM,oCAClB8D,CAAkB9D,EAAK,mBAC1CJ,GAAQ,OAAuB,2CAGd8D,EAAiB,sBAGrB,WAAkC,YAAe,CAChE,SAAI,CAAOK,cAA8B,CAIvC,aAAO/D,EAAM,CACX,IAAIgE,EAAgBhE,IAAK,YACrBiE,OAA2B,CAC/B,QAAsBD,CAAc,aAAcD,CAAcC,CAAa,SAI3E,KAAOE,GAAWlE,KACJ,aAEdA,EAAOA,SAAK,QACFgE,EAAiBC,KAAajE,CAAK,cAE7CA,EAAOiE,KAAS,EAGhBjE,QAeN,GAAImE,IAAmB,EAKrB,MAAO,CAACnE,GAAK,cAAc,MAAG,GAmBhC,MAAI0D,CAAiB,iBACnB,GAAO,QAGX,GAAWA,KAAiB,eAM1B,UAAkB1D,CAAI,EAKxB,UAMEoE,GAAyB,SAAgCpE,IAC3D,EAAI,uCAAmC,CAAKA,EAAK,WAG/C,UAFsB,gBAEfqE,CAAY,CACjB,oBAA2B,SAAyB,UAElD,UAAa,EAAGrG,WAAe,EAAS,SAAQA,EAAK,CACnD,IAAI+D,EAAQsC,QAAW,GAAS,KAAKrG,CAAC,QAE5B,SAAY,eAGpB,CAAO4B,YAAyB,oBAAsB,EAAI,KAAQmC,CAAM,SAAS/B,KAIrF,OAEFqE,EAAaA,KAAW,UAC1B,CAKF,OAAO,CACT,EACIC,GAAkC,SAAyC3H,EAASqD,KACtF,QAAS,UAAY6B,GAAc7B,QAAkBA,CAAMrD,CAAO,MAE7CqD,CAAI,WAKvBuE,GAAiC,aAAuD,CAC1F,QAAIC,GAAmBxE,KAASwB,EAAYxB,CAAI,KAAS,CAACsE,MAA6C,EAIzG,MAC2B,SAA8BG,CAAgB,CACvE,OAAe,QAASA,EAAe,aAAa,UAAU,UAC9D,SAAI,EAAMhD,CAAQ,SAMpB,CAMIiD,QAAe,gBAEbC,EAAmB,cACZ,UAAQ,gBACH,CAAC,CAACC,SAAK,MACjB9E,CAAUyB,EAAUqD,KAAK,SAAcA,GACvCC,CAAoBvD,OAAqC,CACzDT,EAAWU,IAAUmD,CAAaE,EAAK,aAAc9E,CACrD+E,MACFtD,KAA2B,OAAK,KAAwBV,CAAQ,EAAIiE,KAAiB,EAAKhF,CAAO,KAEhF,cACf,QACA,cACA,CAAM8E,OACN,GAASrD,KACT,QAGN,CAAC,EACMoD,KAAiB,UAA2B,GAAO,SAAUI,EAAKC,EAAU,CACjF,OAAAA,EAAS,gBAAmB,YAAoB,UAAe,GAAKA,OAAS,EAAO,SAE/E,SACT,EACIC,IAAW,WAA6BtI,CAAS,CACnDA,UACA,EAAI+D,IACJ,WAAY,UACVA,IAAaE,CAA0B,OAAqB,qBAC1D,GAAQ2D,WAAoC,EAAM5H,CAAO,KACzD,MAAS,EACT,cAAeA,EAAQ,cACvB,iBAAkBuI,KAGpBxE,OAAsC/D,EAAQ,oBAAiD,MAAK,OAAc,CAE7G+H,OAELS,GAAY,WAA8BxI,EAAS,CACrDA,EAAUA,GAAW,GACrB,IAAI+D,EACJ,WAAY,gBACGE,CAA0B,CAACwE,CAAS,aAAW,oBAClB,SAAWzI,CAAO,EAC1D,SAAS,EACT,gBAAuB,aAC7B,CAAK,SAEqCA,EAAQ,iBAAkB2H,GAAgC,KAAK,OAAc,EAE9G5D,CACT,SACiB,aACf/D,EAAUA,SAER,OAAM,GAAI,YAAM,iBAElB,eAAuB8C,CAAiB,kBAI1C,CACI4F,UAA+D,MAAO,kCAAoC,CAAE,QAAQ,MACtG,eAEhB,CADA1I,EAAUA,WAER,cAAgB,mBAAkB,CAEpC,WAAY,MAAW0I,EAA0B,KAAM,EAC9C,KAEFf,CAAgC3H,IACzC,ECrkBA,SAASa,MAAqBC,CAAG,EACtBA,IAAR,MAAaA,CAAIR,EAAE,iBAAkB,SACtC,WAAoB,UAAcQ,EAAGC,MAAOA,CAAC,EAAIT,MACjD,cAEF,GAASqI,MACP,GAAI,QAAM,QAAS,CAAG,OAAO9H,KAC/B,CACA,YAAoCP,EAAGS,oBACP,GAAtB,gBAAyC,eAAe,SAAY,CAC5E,eACM,CAAM,qBAAgD,EAAMA,eAE9D,CAAIC,EAAI,EACN4H,EAAI,UAAY,MAClB,GAAO,IACFA,CACH,EAAG,kBACM5H,GAAKV,SAAW,CACrB,SACE,CACF,QACA,SAASU,EAAG,CACxB,KAEW,SAAUV,MACX,UAIN,CACA,OAAM,GAAI,gBAAU;AAAA,mFAAuI,CAC7J,CACA,UACM,CACJkB,EAAI,GACN,MAAO,CACL,SAAG,GAAY,CACbL,EAAIA,GAAE,IAAKb,EACb,EACA,EAAG,UAAY,CACb,aAAc,SACPQ,EAAIR,EAAE,MACf,GACA,CAAG,UAAUA,CAAG,EACdkB,CAAI,IAAMD,CAAIjB,CAChB,GACA,CAAG,wBAEgB,SAAV,CAAoBa,EAAE,OAAM,CACnC,aACMK,CAAG,MAAMD,CACf,CACF,EAEJ,CACA,YAAyB,GAAGjB,CAAGa,EAAG,EAChC,MAAQb,QAAoB,SAAU,GAAO,sBAC3C,KAAOa,CACP,YAAY,EACZ,kBACA,SACJ,CAAG,EAAI,EAAEb,CAAC,EAAIa,GACd,CACA,SAAS0H,GAAiBvI,EAAG,IACR,SAAO,KAAtB,KAAwCA,EAAE,SAAO,MAAQ,MAAzB,GAAsCA,EAAE,YAAY,GAAtB,MAAyB,MAAO,MAAM,cAE1G,SACE,MAAM,GAAI,UAAU;;ACrB63gJ,KAA0B,CAAE;AC4bzygJ,qDACjF,KAMrD,CAiBI,aAAc,IACZ,QAAM,OACN,QACE,OAAI,EAAOwI,GAAW,SACpB,QAAOA,CAET,MACE,KAAO,OAAO,OAAOA,IAAQ,GAAI,CAAIA,KAAYC,QACnD,MAEE,KAAOC,cASN,CACL,KAAM,SACN,SAAU,IACJ,GAAK,aAAgB,KAAK,mBACvB,eAAe,CAExB,CACN,KAMI,MAAU,EACR,KAAM,QACN,UACN,CAMI,aACE,EAAM,QACN,OAAS,KACf,CAOI,aACE,QAAM,MACN,KAAS,CACf,aAQgB,CACV,KAAM,QACN,SAAS,CACf,IAYI,SACE,QAAM,QACN,MAAQF,CAAQG,IAAe,CAC7B,aAAiB,CAAI,sBAAoB,OAAQC,CAAO,sBAAuB,CACjF,CACN,OAaI,OACE,CAAM,eACN,EAAQlJ,EAASkJ,KACf,KAAOlJ,KAAQ,IAAQ8I,GAAW,CAChC,IAAIG,EAAQ,OAAK,eAAqB,CACtC,OAAI,SAAOA,CAAU,aACXA,GAAM,QAAQ,MAEjB,OAAK,IAASH,IAAeI,CAAM,OAShD,YAAc,CACZ,OAAM,OACN,QAAQJ,OACN,OAAO,GAAO,KAAK,WAAW,CAAC,MAAM,MAAW,IAAG,IAAK,IAAK,KAAcA,CAC7E,CACN,OAOI,uBACE,IAAM,UACN,MAAS,OAcX,mBACE,QAAS,QACT,YAAuB,QAAY,SAAS,EAAE,aAAS,GAAOK,MAOhE,gBAAmB,OACX,WACN,YAAU,eAAAC,CAAqB,aAC7B,OAAOA,OAEf,CAMI,SACE,KAAM,QACN,OAAS,IAQX,WACE,GAAM,MACZ,EAQI,IAAK,CACH,MAAM,SACN,OAAS,QAQX,UAAa,CACX,KAAM,eACN,CAAS,EACf,KAMI,cAAkB,CAChB,QAAM,WACG,IAAM,QAcjB,uBAA0B,CACxB,aACA,YAAS,aAOX,WACE,UAAM,IAMN,YACN,UAQI,KAAc,OACN,OACN,QAAS,EACf,QAYI,oBACQ,kBAUgBC,CAAW,CAAE,YAAOC,iBAC3B,EAAM,gBACA,GAAOC,EAC1BC,OAAa,CAAM,QAE3B,MAQI,eAAoB,OACZ,QACN,QAAQ,CAAE,mBAAc,eAAkB,CACxC,YAAwBC,GAAQ,QAOpC,iBAAqB,EACnB,IAAM,SACN,gBAOA,SAAO,YACP,YAAeC,GAAQ,EAE7B,GACE,MACE,WACA,IACA,oBACA,aACA,wBACA,0BACA,aACA,cACA,iBACA,aACA,iBACA,mBACA,kBACA,qBACA,mBACJ,IACE,KACE,OACE,OAAQ,MACR,EAAM,GACN,gBACA,oBAAsB,KACtB,YAEA,SAAQ,CAER,iBAAiB,CACvB,CACE,KACA,MAAU,CACR,kBAAmB,GACjB,iBAAmB,SAAW,KAAK,SAAS,MAAM,OAAO,YAQ3D,eAAmB,EACjB,MAAO,UAAO,EAAK,WAAe,KAAe,SAAK,YACxD,EAMA,eAAgB,CACd,IAAIP,EAAQ,KAAK,eAIjB,QAHS,mBACPA,EAAQ,UAAK,CAAM,SAEGA,QAAkBA,SACjC,CAAG,SAAY,CAEjB,iBAUP,SAAO,UAAK,CAAQ,qBAAuB,KAAK,WAAa,UAO/D,YACE,CAAO,QAAK,IAAO,YAAc,QAAM,kBAAgB,UAAc,QAAK,qBAAwB,QAAS,UAAM,CACnH,EAMA,cACQQ,EAAW,EACf,SAAQ,EAAK,OACb,WAAS,EAAK,QACd,UAAW,KAAK,kBAChB,QAAiB,KAAK,eAC9B,EACM,MAAO,CACL,OAAQ,CACN,WAAY,CACV,GAAI,KAAK,QACT,YAAU,EAAK,SACf,YAAa,SAAK,cAClB,aAAU,CAAK,SACf,cAAW,CAAK,WAChB,OAAM,mBACN,UAAqB,QACrB,YAAc,KAAK,kBACnB,gBAAiB,MAAM,KAAK,GAAG,YAC/B,YAAa,UAAM,CAAK,KAAG,kBAC3B,YAAiB,CAAK,kBAAa,IAAQ,EAC3C,MAAK,OACL,KAAM,SACN,aAAc,QAAK,UACnB,QAAO,GAAK,QACZ,IAAG,GAAK,eAAgB,IAAK,gBAAgB,QAAK,aAAgB,EAAI,CACpE,0BAAyB,IAAM,iBAAQ,GAAY,UAAK,aACtE,EAAgB,GAChB,CACU,OAAQ,CACN,iBAAkB,KAAM,IAAK,qBAC7B,aAAsB,KAAK,aAAc,KACzC,KAAS,KAAK,gBACd,YAAU,EAAK,iBACf,KAAM,UAAK,QACX,gBAAY,WACZ,IAAQ5I,cAAW,CAASA,EAAE,OAAO,KACjD,CACA,EACQ,mBACW,GAAK,iBAEhB,SAAW,CACT,OAAQ,KAAK,OACb,WAAS,EAAK,eACd,UAAW,OAAK,OAC1B,EACQ,sBACE,aACO,YACL,OAAM,mBACC,wBAGX,UAAY4I,MACZ,SACA,eAAuB,UAAU,EAAK,SAAQ,CAC9C,QAAU,GAAGA,GAAU,SAAU,IAAK,QAAQ,EAElD,KAQA,kBACE,GAAO,QAEL,EAAG,KAAK,YAEZ,CAMA,eACE,UACE,QAAY,MAAK,gBACjB,aAAe,EAAK,SACpB,eAAgB,KAAK,SACrB,gBAAiB,KAAK,kBAAmB,aACzC,gBAAuB,gBAAe,CAAK,UAC3C,gBAAoB,QAAM,UAC1B,aAAe,MAAK,cACpB,eAAgB,KAAK,QAC7B,MAQI,cACE,CAAO,CAAC,CAAC,KAAK,WAQhB,WAAe,CACb,OAAO,UAAK,cAAmB,SAQjC,iBAAoB,CAClB,OAAO,UAAK,WAAgB,GAAK,aAAc,SAAK,SAAc,IACpE,EASA,iBAAkB,CAChB,MAAMC,EAAgBC,OAChB,CAAK,UAAU,GACVA,EAAS,MAAM,EAAG,KAAK,WAIf,GAAG,OAAO,KAAK,YAClC,GAAI,CAAC,KAAK,kBAAoB,UAC5B,mBAEc,OAAK,KAAO,OAAS,OAAK,KAAOC,EAAY,KAAK,YAAY,CAAIA,MAC9E,IAAK,eAAiB,OAAO,SAC/B,CAAI,MACF,CAAMC,GAAgB,OAAK,WAAa,IAAK,QACxC,KAAK,aAAaA,CAAa,MAC1B,OAAQA,CAAa,CAEjC,MAAQ,CACR,CAEF,OAAOH,EAAa5J,MAOtB,cACE,OAAO,KAAK,iBAAc,OAC5B,CAMA,qBACE,WAAa,QAAY,KAAK,mBAAmB,IAAQ,CAAC,KAAK,cAErE,CACE,QAWE,OAAQgK,QACN,GAAMC,EAAc,IAAM,OAAO,MAAK,qBAAyB,WAAa,QAAK,kBAC/ED,KAEA,KAAK,YACb,OAAe,2BACC,UAAYC,KACpB,KAAK,eAAc,EAEjB,QAAK,SAAc,OAAK,gBAC1B,MAAK,4BAA4B,IAAK,UAAU,CAEpD,EAKA,eACE,QAAW,EACX,QAAQC,EAAK,CACP,WAAK,YACP,KAAK,4BAA4BA,CAAG,IAU1C,cACE,EAAK,eAAc,CACrB,EACA,KAAKC,EAAQ,CACX,KAAK,MAAMA,EAAS,OAAS,OAAO,CACtC,EACA,OAAOjB,EAAQ,IACF,QACT,KAAK,KAAO,GAEhB,CACJ,EACE,SAAU,CACR,gBAAK,IAAiB,KAAK,SAE7B,cAQE,2BACM,OAAM,0BACG,CAASC,EAAM,IAAKe,KAAQ,GAAK,2BAA2BA,CAAG,CAAC,GAE3E,SAAK,CAAM,QAAS,IAAK,+BAU7B,OAAOpB,EAAQ,IACb,OAAK,CAAM,mBAAoBA,EAAM,CAChC,MAAK,oBAUC,cAAK,mBAA8B,yBAA8B,sBAAmB,IAAS,kBACxFA,CAAM,GAVhB,QAAK,OAAY,CAAC,iBAAK,CAAaA,CAAM,IAC5C,YAAW,gBAAkBA,CAAM,EACnC,YAAK,CAAQA,CAAM,MAEjB,EAAK,cACE,IAAK,eAAc,MAAOA,CAAM,GAE3C,KAAK,qBACA,KAAM,mBAAyB,IAItC,MAAK,aAAoB,CAC3B,EAOA,SAASA,EAAQ,CACf,KAAK,MAAM,0BACX,KAAK,YAAY,GAAK,gBAAc,KAAQoB,GACnC,CAAC,OAAK,kBAA4B,CAC1C,CAAC,GACF,IAAK,MAAM,oBAAqBpB,CAAM,CACxC,EAQA,4BACO,iBACCsB,EAAe,KAAK,kBAAkBC,EAAS,CAAC,KACjC,IAAK,oBAA2B,CAAC,EAChDC,cAEY,GAAK,MAErB,CAAK,cAAS,CAAK,IAQvB,eAAiB,CACf,KAAK,YAAY,KAAK,UAAW,EAAK,QACtC,GAAK,YAAS,GAAK,CACrB,EAOA,gBACM,OAAK,iBACP,EAAK,QAAQ,KAAK,IAEhB,KAAK,sBACP,QAAK,IAAS,QAEZ,CAAK,YAAU,CAAK,UACtB,KAAK,UAAU,OAAM,EAAK,OAAM,aAAc,CAElD,IASA,gBACM,IAAO,MAAK,WAAe,KAC7B,YAAW,SAETnB,IAAU,OACR,SAAM,UACAA,EAAM,IAAKe,cAAa,CAAOA,MAE/B,MAAK,SAAY,CAG7B,KAAK,MAAM,oBAAqBf,CAAK,EACvC,CAOA,eAAeoB,EAAO,CACpB,MAAMC,QAA0B,KAAW,OAAK,OAC5CA,IACFD,CAAM,eAAc,EAEtB,WACE,CAAG,MAAK,0BACL,CAAK,SAAM,aAAe,EAAK,MAAM,WAAW,GAAI,CAC/D,QACU,EAAK,WAAa,WAAyB,UAAO,SAAS,CAAME,GAAQA,EAAI,SAASF,YAAiBE,GAAQF,EAAM,aACjH,aAAc,EACpB,MACF,CACI,UAAK,CAAQC,GACf,KAAK,KAAO,IACZ,MAAK,OAAS,KAAI,GACR,OAAK,eACV,WACL,CAAK,SAAS,OAAK,CAEvB,EAOA,oBACE,WAAO,CAAK,cAAc,MAAMrB,EAAU,QAAK,cAAiBA,EAAOL,CAAM,CAAC,OAQhF,kBAAqBA,CAAQ,CAC3B,OAAO,MAAK,gBAAiBA,CAAM,GAAK,KAAK,oBAC/C,aAQA,YAAuBuB,gBACZ,qBAAuB,IAAK,wBAC5BA,CAAW,eAAK,iBAW3B,WAAiBvJ,EAAGmE,EAAG,gBACT,aAAc,EAAM,KAAK,gBACvC,CASA,2BAA2BkE,cACK,KAAK,uBAA4B,CAAC,OAAM,GAAK,UAAe,EACpFlG,EAAU,OAAI,EAAK,eAAY,CAAK,eAAY,IAAOyH,CAAS,EACtE,qBACSzH,CAAQ,EAAC,CAEXA,IAAQ,KAAM0H,CAAU,KAAK,iBAAiBA,EAAO,KAAK,MAAM,QAAO,IAChF,CAOA,uBACE,GAAK,MAAO,GACZ,KAAK,KAAM,aAAa,CAC1B,EAOA,uBACO,KAAK,SAAS,UAAM,IAAU,OAAK,iBAAiB,CAAK,cAAc,UAAU,IAAK,UACzF,KAAIxB,CAAQ,QACR,EAAK,WACPA,IACE,EAAG,KAAK,cAAc,WAAS,GAAK,cAAc,MAAS,MAG/D,IAAK,YAAYA,GAErB,IAQA,YAAaL,CAAQ,CACnB,OAAO,KAAK,cAAW,EAAM8B,SAAiB,gBAAiBA,OASjE,yBACE,IAAK,KAAK,YAAiB,OAGpB,EAAO,KAAK,iBAAiB9B,CAAM,CAAC,EAFlC,WAWX,kBAAuBA,QACrB,EAAO,QAAOA,EAAW,SAAWA,EAAS,CAAE,CAAC,MAAK,IAAK,EAAGA,CAAM,QASrE,GAAQA,EAAQ,MACT,eAAW,CAAKA,CAAM,CAC7B,MAOA,MAAW,MACC,OAAO,SAGf,GAAK,OAAS,GAFd,KAAK,WAWT,YAAe,CACb,GAAI,OAAK,cAAc,CAAK,gBACrB,WAAY,KACZ,QACG;AC71CK,EAAI,CAAE,QAAQ,YAC7BzH,EAAIwJ,GAAK,OAAQ,OACXA,KAAK,OAAU,EAAGxJ,MAAG,SAAO,UAClC6I,CAAMW,EAAK,UAAUxJ,EAAI,CAAC,EAAE,QAExB,EAACyJ,SAAuBC,GAAkBD,CAAG,OAI7CA,EAAQ,aACNE,EAAOF,CAAG,GACZE,CAAOF,CAAG,EAAE,KAAKZ,CAAG,EAEpBc,MAAed,CAAG,EAGpBc,EAAOF,IAAOE,CAAOF,CAAG,EAAIE,EAAOF,QAAcZ,EAAMA,EAE3D,CAAC,EAEIc,CACT,EChEA,cAA2B,CACzB,KAAIC,CAAQ,EACRC,EAAMC,OAAI,EAEd,KAAOF,EAAQC,OACb,GAAME,OAAW,WAEjB,GAAIA,WAA0B,GAC5B,MAGFH,QAGF,EAAOC,GAAMD,EAAO,CAClB,MAAMG,MAAW,eAEjB,EAAIA,IAAS,KAAQA,EAAS,WAI9BF,CAAO,CACT,CAEA,aAAiB,CAAKA,WAAY,EAASC,EAAMA,EAAI,MAAMF,EAAOC,CAAG,QAKjEG,GAAqC,IAAI,SAAO,yCAA4C,GAAG,QAEtD,CAAI,OAAO,6CAA6C,UAEvG,SAA8BC,CAAc,OAC1C,CAAIC,EAAM,QAAQpC,GACTA,SAAoBqC,SAGtBC;AC6OG,EACV,CAEA,oBACE,EAAO,SAAS,aAAY,KAG9B,IAAK,OAAO,WAAW,OACrB,GAAO,cACT,CAEA,OAAO,QACL,OAAOC,iCAGT,MAAO,QAAOC,sBACS,EAAKA,CAAK,EAE/B,OAAAC,MAAQ,SAA6B,IAAIC,MAK3C,OAAO,yBAEF,CAAKC,EAAU,EAChB,WAEI,UAAW,CACrB,KAEgC,YACV,GAAK,WAEvB,QAASC,GAAeC,CAAS,CAC/B,cAEKC,OACHC,GAAeC,EAAWH,CAAO,GACjCC,CAAUG,CAAO,UAIrBb,KAAM,cAAyB,OAAQQ,CAAc,EAAIA,GAAqB,OAIlF,EAEAM,GAAa,UACX,eACA,mBACA,0BAEA,wBACA,GACF,MAGM,0BAA+B,IAAW,CAAC,EAAE,OAAK,CAAIvB,IAAQ,OACrDA,SAAO,UAAgBA,eACpC,EAAO,CACL,QAAW3B,yBAOT,eAAckD,CAAY,ECvVhC,QAAMC,CAAW,kBAEjB,SAASC,GAAwBC,EAAQ,CACvC,GAAIjB,EAAM,YAAWiB,CAAQ,QAAQ,MACnC,EAAO,GAGT,MAAgB,YAAO,UAAeA,CAAM,MAE5C,CAAOL,WAA2B,IAAO,UAAW,CAClD,KAAU,WAAWA,EAAW,WAC9B,KAAO,MAGG,QAAO,aAAeA,SAG7B,EACT,CAKA,YAAsBM,KACpB,OAAMC,CAAY,WAAmB,MAAW,UAAU,YAAW,CAAE,CAAC,MAC3D,CAEPC,MAEJ,GADIH,UAAmB,OAAOA,GAAW,eAC/B,SAAkB,OAAOA,EACnC,GAAII,MAAK,IAAQJ,CAAM,IAAM,QAAI,GAE7BA,YAAkBH,SACJ,WAGlBO,CAAK,OAAW,CAEhB,IAAIlJ,EACJ,KAAU,cACC,KACF,SAASmJ,CAAGxL,IAAM,CACvB,OAAMyL,CAAeH,EAAME,CAAC,EACvBtB,MAAM,gBACD,EAAIuB,EAEhB,CAAC,aAEU,eAAoB,GAAKP,GAAwBC,CAAM,IAChE,OAAK,KAAG,CACDA,EAGT9I,EAAS,aAAO,CAAO,IAAI,EAC3B,SAAW,CAACoH,EAAK3B,CAAK,KAAK,WAAO,OAChC,OAAM2D,CAAeJ,EAAU,IAAI5B,EAAI,cAAa,CAAIwB,GAAWK,cACxD,SAAwB,CACjCjJ,EAAOoH,CAAG,MAKhB,UAAK,GAAG,EACDpH,CACT,OAEA,EAAOiJ,EAAMF,IACf,cAEMM,SAAmB,KAAM,CAC7B,QAAO,cAA6CC,EAAa,CAC/D,MAAMC,EAAa,YAAqB,OAAS7B,CAAQ8B,EAAM,SAAuBC,CAAQ,EAO9F,iBAAO,YAAeF,EAAY,iBAChC,SACA,IAAOC,EACP,eACA,QAAY,GACZ,aAAc,EACpB,EAAK,CACDD,WAAwB,GAGpBC,EAAM,SAAU,SAAmB,OAAU,MAC/CD,aAA0B,MAG5BD,gBAAsB,CAAOC,EAAYD,CAAW,EAC7CC,WAcT,SAAmCG,EAASD,EAAU,GACpD,KAAa,cAKN,UAAe,iBAGpB,qBACOnL,CACP,iBACA,UACA,YAAc,EACpB,OAEI,CAAK,WAAO,WACZ,CAAK,iBACLoJ,GAAS,QAAK,EAAOA,GACrBqB,SAAgB,UAChBW,IAAY,KAAK,QAAUA,GACvBD,MACF,GAAK,SAAWA,QACX,MAASA,GAAS,SAI3B,UAKE,GAAMV,IAAS,GAAK,OACdY,EAAaZ,QAAgB,QAAWA,SAAQ,CAAQ,EAAIA,OAAO,GAAS,MAC5Ea,EACJ/B,QAAM,EAAQ8B,EAAU,SAAgB,EAAS,EAC7CE,MAA+B,GAC/BhC,CAAM,cAAmB,EAE/B,WAEE,IAAS,MAAK,WACd,CAAM,KAAK,YAEX,OAAa,IAAK,YAClB,OAAQ,MAAK,MAEb,QAAU,KAAK,SACf,kBAAiB,UACjB,YAAc,QAAK,UACnB,MAAO,KAAK,aAEJ+B,EACR,QAAM,EAAK,OACX,WAAa,QAGnB,CAGAP,cAAW,WAAuB,sBAClCA,QAAW,UAAiB,kBAC5BA,EAAW,aAAe,eAC1BA,SAAW,IAAY,8BACG,qBACf,qBACXA,GAAW,oCAA4B,mBACvCA,cAAW,GAAiB,kBAC5BA,EAAW,iBAAmB,mBAC9BA,GAAW,gBAAkB,sBAClB,oCACA,6BACXA,KAAW,iBAAkB,kBAClB,+BAA+B,4BCxL1C,UAAe,ICQFS,GAA8B,OAS3C,MAASC,GAAY/B,EAAO,IAC1B,IAAOH,EAAM,qBAA8B,SAC7C,CASA,SAASmC,GAAe5C,YACT,WAAc,IAAI,YAAiB,EAAE,KAYpD,SAAS6C,EAAUC,gBAEVA,UACM,SACN,QAAqBvM,EAAG,CAE3B,YAAuBwM,CAAK,EACrB,CAACC,GAAQzM,aAClB,CAAC,MACA,CAAKyM,EAAO,QARGhD,CASpB,CASA,cAA0B,CACxB,OAAOS,IAAM,SAAW,CAAK,EAACwC,CAAI,OAAgB,CACpD,EAEA,KAAMC,GAAazC,EAAM,aAAaA,IAAO,CAAI,WAAM,OACrD,aAAO,GAAW,OACpB,CAAC,EAyBD,SAAS0C,GAAWC,EAAKC,EAAUnO,EAAS,CAC1C,YAAW,GAASkO,CAAG,EACrB,MAAM,IAAI,cAAU,sBAA0B,EAIhDC,EAAWA,IAAY,OAAyB,KAGhDnO,SAAgB,SACdA,CACA,KACE,OAAY,GACZ,KAAM,IACN,OAAS,GACf,CACI,IACA,QAAiB8I,GAAQ0D,CAAQ,EAE/B,OAAQjB,CAAM,iBAChB,CACJ,EAEE,MAAM6C,IAAqB,WAErBC,MAAkB,SAClBP,UACAQ,CAAUtO,GAAQ,QAClBuO,CAAQvO,EAAQ,MAAS,OAAO,UAAwB,OAC7CA,EAAQ,WAAa,UAA0CA,GAAQ,SAClFwO,CAAUD,KAAe,oBAAoBJ,EAAQ,CACrDM,MAEN,GAAKlD,EAAM,eACT,KAAM,MAAI,aAAU,0BAGtB,QAASmD,EAAavF,EAAO,MACvBA,GAAU,QAAM,EAAO,GAE3B,IAAIoC,CAAM,QAAY,MACpB,IAAOpC,CAAM,gBAGf,CAAIoC,EAAM,cACR,OAAOpC,CAAM,WAGf,KAAKqF,EAAWjD,EAAM,OAAOpC,EAAK,CAChC,WAAU4D,EAAW,8CAA8C,EAGrE,WAAU,cAA8B,sBAClCyB,CAAW,OAAOD,GAAU,WAC9B,OAAO,eAEL,cACF,MAAOI,GAAO,KAAKxF,CAAK,OAE1B,CAAM,IAAI4D,GAAW,+CAAgDA,GAAW,eAAe,IAGjG,KAAO5D,CACT,CAEA,gBACE,CAAIyF,EAAQC,GACV,KAAM,kBACJ,uBAA0C,wBAA0BA,cACzD,mBACnB,CAEE,KAEA,MAASC,CAAwB3F,KAC/B,KAAI0F,MACF,QAAO,IAAK,UAAU1F,SAGlB4F,QAEN,SAAY,cAAiB,OAAoBC,gBACpC,aACT,CAAOC,GAGT,SAAiB,OAAoBF,EAAU,OAAS,CAAC,eAC7C,CAAG,EAGf,OAAAA,gBAC0C,OAAS,MAIvD,CAYA,WAAwB5F,EAAO2B,EAAK8C,EAAM,CACxC,MAAUzE,EAEV,GAAIoC,EAAM,cAAc4C,CAAQ,IAAK5C,CAAM,kBAAkBpC,CAAK,OAChE,GAAAgF,CAAS,QAAOR,EAAUC,MAAe,CAAGc,EAAavF,OAI3D,GAAIA,IAAUyE,SAAQ,CAAOzE,GAAU,UACrC,GAAIoC,EAAM,SAAST,IAAK,SAEHA,CAAMA,EAAI,QAAS,GAAE,CAExC3B,EAAQ2F,EAAwB3F,EAAO,CAAC,iBAEjC,GAAQA,aACboC,CAAM,gBAAqBA,CAAM,oBAAyBwC,GAAMxC,CAAM,iBAGxE,GAAAT,CAAM4C,gBAEM,uBACF,uBACNS,CAAS,mBAGW,SACdG,GAAY,KACVxD,CACAA,EAAM,UAGlB,CAAC,MAKL,aACS,GAGTqD,EAAS,OAAOR,UAA4Be,EAAavF,CAAK,CAAC,EAExD,GACT,CAEA,SAAuB,WAAO,GAAO6E,EAAY,CAC/C,oBACA,YACA,YAAAP,EACJ,MAEE,MAASyB,EAAM/F,EAAOyE,EAAMgB,KAC1B,GAAIrD,SAAM,MAAYpC,OAEtBgG,EAAwBP,CAAK,IAEnB,SAAa,IAAM,OAC3B,GAAM,GAAI,MAAM,kCAAoChB,EAAK,gBAGrD,OAEA,SAAQzE,CAAO,SAAciG,EAAItE,cAE3B,OAAc,GAAKsE,IAAO,cACrBjB,OAAoB,QAASrD,CAAG,aAAsB8C,EAAMyB,CAAc,KAE1E,IACbH,MAAiBtB,EAAK,UAAc,CAAC9C,IAAM8D,CAAQ,IAEtD,CAEDH,IAAM,GAAG,CACX,KAEKlD,IAAM,UACT,MAAM,QAAI,aAAU,kBAAwB,CAG9C,OAAA2D,GAAS,EAEFf,CACT,eC9QqB,CACnB,aACO,UACA,qBAEA,KACL,gBACO,OAET,QAAO,oBAAwB,SAAQ,gBAAgB,SACrD,UAAoB,CACtB,EACF,CAUA,WAASmB,CAAqBvP,KAC5B,KAAK,WAELA,WAA6B,CAAMC,CAAO,QAGtCmM,WAAiC,KAEvCA,IAAU,UAAS,UACjB,UAAK,MAAO,CAAK,KAAa,CAChC,EAEAA,GAAU,SAAW,SAAkBoD,EAAS,CAC9C,MAAMC,EAAUD,SACO,GAAK,KAAMpG,EAAOsG,EAAM,MAG/C,MAAO,SAAK,GACT,KAAI,eACH,GAAOD,EAAQE,aAAyBA,CAAK,CAAC,CAAC,CACjD,wBCzCG,EAASD,GAAOvF,EAAK,CAC1B,UAAO,gBAAmBA,CAAG,EAC1B,QAAQ,eACR,SAAQ,IAAQ,GAAG,MACnB,IAAQ,QAAS,GAAG,EACpB,YAAQ,GAAQ,IACrB,CAWe,UAASyF,EAAS7P,EAAKC,MACpC,GAAKA,EACH,WAEID,GAAO,GAEb,MAAM8P,EAAWrE,EAAM,YAAkB,EACrC,CACE,WACR,KAMQiE,CAAUjE,EAAM,iBAAsB,OAAQ,CAAKkE,GACnDI,GAActE,CAAM,YAAYqE,GAAU,qBAI5CC,GACFC,CAAmBD,KAA4B,EAE/CC,GAAmBvE,CAAM,0BACd,iBAC0BqE,CAAQ,MAAE,oBAIzB9P,CAAI,mBAEJ,GACpBA,kBAEFA,KAAY,OAAQ,GAAG,IAAM,gBAG/B,UC/DF,SACE,WACE,qBAYEiQ,OACF,YAAK,UAAS,UACZ,KAAAA,GACA,oBACA,EAAa/P,EAAUA,EAAQ,oBAC/B,GAASA,GAAUA,CAAQ,gBAEtB,IAAK,SAAS,OAAS,CAChC,CASA,MAAMgQ,EAAI,CACJ,KAAK,kBACP,CAAK,SAASA,EAAE,CAAI,KAExB,CAOA,eACW,UACP,IAAK,sBAcDC,CAAI,EACV1E,CAAM,mBAAa,KAAU,OAAwB2E,EAAG,EAClDA,GAAM,iBC9DhB,GAAAC,GAAe,CACb,6BACA,UAAmB,SACnB,cAAqB,iBACrB,mBAAiC,GACjC,2BAA6B,GAC7B,yCCLa,MAAO,iBAAoB,EAAc,gBAAkBb,GCD1Ec,GAAe,OAAO,kBAA2B,OAAW,ECA5DC,GAAe,OAAO,iBAA8B,GCEpDC,EAAe,EACb,SAAW,GACX,kBACF,wBAEA,KACA,GACE,SAAW,EAAC,iBAAiB,IAAQ,OAAQ,MAAO,aCXhC,SAAO,IAAW,WAAe,CAAO,SAAa,IAErEC,IAAc,MAAO,WAAc,6BAmBnCC,EACJC,KACC,UAAgB,aAAe,0BAA8BF,GAAW,OAAO,EAAI,GAWhFG,iBAEK,qBAEP,eAAgB,eAChB,OAAO,KAAK,mBAAkB,SAI5BC,CAAUF,IAAiB,yBAAyB,iNCxC1DG,GAAe,CACb,GAAGrF,SAEL,CCAe,SAASsF,GAAiBC,OACvC,KAAO7C,GAAW6C,uBAA2B,UAAmB,CAC9D,cAAS,GAAU3H,cACjB,EAAIyH,GAAS,WAAgB,QAASzH,CAAK,GACzC,KAAK,OAAO2B,EAAK3B,EAAM,SAAS,QAAQ,CAAC,EAClC,OAGM,kBAAe,KAAM,SAAM,GAC5C,EACA,MAEJ,CCZA,gBAEA,KAAS4H,SACHnQ,GAAQoQ,EACV,MAAM,IAAIjE,GACR,yCAA0CnM,CAAQ,yBAA0BoQ,WACjE,iCAYRC,GAAcvL,EAAM,CAK3B,MAAMkI,wBAEN,GAAIjD,EAEJ,kBAAiC,KAAO,IACtCoG,UAA0B,CAAM,EAChCnD,IAAK,GAAKjD,SAAa,OAAYA,CAAM,CAAC,WAG5C,KAAOiD,CACT,IASA,YACE,MAAMM,EAAM,eACQ,EAAKH,CAAG,GAC5B,GAAI1M,EACJ,MAAM6P,EAAMC,WACZ,EAAIrG,EACJ,IAAKzJ,GAAI,CAAGA,EAAI6P,EAAK7P,gBAER0M,EAAIjD,CAAG,EAEpB,OAAOoD,QAUT,GAASkD,GAAejD,aACbkD,CAAUzD,EAAMzE,EAAO0C,EAAQjL,aAGlC8E,EAAOkI,EAAKhN,GAAO,EAEvB,GAAI8E,aAAS,GAAa,aAE1B,EAAM4L,EAAe,OAAO,sBACC,KAG7B,OAFA5L,eAAsB,CAAQmG,CAAM,EAAIA,WAEpC0F,GACEhG,EAAM,WAAWM,EAAQnG,CAAI,GAC/BmG,CAAOnG,CAAI,GAAI6F,CAAM,QAAQM,EAAOnG,CAAI,CAAC,EACrCmG,EAAOnG,CAAI,EAAE,uBAGN,CAAIyD,EAGV,CAACmI,KAGN,CAAC/F,iBAA6B,EAAK,CAACA,EAAM,iBAAqB,CACjEM,EAAOnG,CAAI,yBAKO,MAAQmG,SAC1BA,CAAOnG,CAAI,GAAI8L,EAAc3F,OAGxB,CAACyF,GAGV,aAAU,GAAWnD,CAAQ,KAAW,WAAWA,kBAC3CD,EAAM,IAEZ3C,QAAM,aAAa4C,EAAU,sBAE7B,CAAC,EAEMD,CACT,QAEO,IACT,CC1GA,MAAMuD,GAAM,CAACvD,EAAKpD,IAASoD,GAAO,mBAAyBA,EAAKpD,OAAc,CAAI,OAYlF,kBAAoD,CAClD,UAAU,IAAS4G,CAAQ,OAEvB,WAAW,GAAK,qBAElB,YACM3Q,CAAE,WAAS,WACb,KAAMA,CAEV,CAGF,iBAAwB,SAAW2Q,CAAQ,CAC7C,CAEA,OAAMC,EAAW,CACf,aAAcxB,GAEd,gBAAiB,SAAQ,IAAO,QAEhC,WAAkB,CAChB,uBACsByB,CAAQ,eAAc,GAAM,SACT,MAAQ,kBAAkB,EAAI,qBASrE,CANIC,GAAmBtG,EAAM,iBAC3BuF,CAAO,KAAI,kBAGY,OAAWA,CAAI,IAGtC,MAAOgB,CAAqB,KAAK,WAAUV,GAAmB,CAAC,EAAIN,EAGrE,IACEvF,CAAM,cAAcuF,CAAI,GACxBvF,EAAM,SAASuF,CAAI,GACnBvF,GAAM,QAASuF,CAAI,KACb,QAAW,IACjBvF,CAAM,SAAW,WACX,oBAECuF,EAET,UAAU,cAAsB,GAC9B,MAAOA,EAAK,OAEd,IAAIvF,CAAM,mBAAsB,GAC9B,MAAAqG,GAAQ,cAAe,uDAChBd,CAAK,SAAQ,OAGlBiB,CAEJ,UACE,EAAMC,EAAiBP,IAAI,YAAM,YACjC,CAAIQ,UAAoB,mCAAmC,GAAI,GAC7D,MAAOpB,IAAiBC,CAAMkB,CAAc,IAAE,OAAQ,KAGxD,CACGD,EAAaxG,GAAM,WAAe,IACnC0G,GAAY,OAAQ,qBAAqB,EAAI,KAE7C,KAAMC,EAAMT,GAAI,WAAW,CACrBU,EAAYD,GAAOA,EAAI,SAE7B,SAAOjE,CACL8D,EAAa,CAAE,UAAWjB,EAAI,CAAKA,EACnCqB,GAAa,gBAMnB,CAAIN,GAAmBC,GACrBF,QAAQ,cAAe,6BAQ7B,kBAAmB,CACjB,mBACQQ,CAAeX,UAAU,6BAA4B,EACrDY,UAAiD,6BACxB,UAAc,EACvCC,EAAgBC,sBAEZ,SAAoBhH,EAAM,2BAC3BuF,EAGT,OAEEvF,CAAM,SAASuF,QACQ,CAACyB,GAAiBD,GACzC,CAEA,2BADuD,UAGvD,GAAI,CACF,cAAY,IAAMxB,GAAMW,GAAI,MAAM,oBACpC,CAAS1Q,OACHyR,CACF,OAAIzR,CAAE,QAAS,cACPgM,EAAW,UAAmB,uBAAwB,KAAM0E,SAAU,QAAU,EAAC,CAEnF1Q,CAEV,CACF,CAEA,YAQJ,cAEA,UAAgB,eAChB,cAAgB,cAEhB,iBAAkB,GAClB,kBAEA,GAAK,CACH,UAAU6P,iBAAiB,EAC3B,MAAMA,EAAS,YACnB,EAEE,iBAAgB,WACd,WAAiB,GAAO6B,WAG1B,IAAS,CACP,QACE,aAAQ,8BACR,iBAAgB,OAGtB,CAEAlH,EAAM,QAAQ,CAAC,WAAU,OAAO,SAAQ,EAAQ,OAAO,UAAS,SAAsB,CACpFoG,GAAS,WAAkB,OC/Jd,SAASe,CAAcC,EAAKxF,EAAU,CACnD,YAAe,EAAQwE,GACjBzP,EAAUiL,GAAYV,cACc,OAAO,EACjD,mBAEAlB,GAAM,kBAAa,CAAmB0E,EAAI,CACxCa,EAAOb,EAAG,KAAKxD,EAAQqE,EAAMc,EAAQ,WAAS,CAAIzE,EAAWA,EAAS,yBAGhE,IAAS,ICtBJ,WAASyF,CAASzJ,EAAO,CACtC,OAAQ,EAAEA,GAASA,EAAM,YAC3B,OCAA,mBAUE,iCAC0B,IAAsB4D,GAAW,aAAcN,GAAe,GACtF,SAAY,iBACZ,SAAK,yBCJ+BoG,EAAQ1F,EAAU,CACxD,MAAM2F,EAAiB3F,EAAS,OAAO,eACnC,CAACA,IAAS,OAAW2F,GAAkBA,GAAe3F,CAAS,SACjE4F,CAAQ5F,EAAQ,CAEhB0F,EAAO,UACL,gCAAqC1F,MAAS,GAC9CA,EAAS,SAAU,cAAyB,GAAMJ,IAAW,eAAkBA,oBAC/EI,EAAS,OACTA,GAAS,OACTA,CACN,CAAK,CAEL,CCxBe,SAAS6F,GAAclT,EAAK,KACzC,GAAM6K,CAAQ,gCAA4B,CAAK7K,CAAG,EAClD,YAAuB,CAAC,MCI1B,SAASmT,GAAYC,EAAcC,EAAK,YAEtC,GAAMC,YAAkBF,CAAY,gBACK,CACzC,kBAIA,oBAAgC,EAEzB,oBACO,KAAK,YAEgB,CAE5BG,wBAOL,GAAIhS,uBAIY+R,KAAS,EACvB/R,EAAIA,OAGNiS,GAAQA,qBAGS,EAAKJ,GAGlBK,EAAMF,aAIV,MAAeG,GAAaD,EAAMC,EAElC,SAAgB,KAAK,OAAOC,CAAa,KAAc,EAAI,kBC5CtDC,EAASzD,EAAI0D,EAAM,GAC1B,EAAIC,EAAY,EACZC,EAAY,YAIhB,KAAMC,CAAS,CAACC,EAAMR,EAAM,gBACdA,EACZS,EAAW,KACPC,oBAEFA,EAAQ,MAEVhE,EAAG,iBAGa,CAAI8D,IAAS,CAC7B,gBAAiB,CAAG,EACdG,uBAKCD,IACHA,EAAQ,WAAW,IAAM,EACvBA,CAAQ,QACO,CACjB,EAAGJ,EAAYK,CAAM,GAG3B,EAEc,6BClCwD,KACtE,IAAIC,IACJ,MAAMC,EAAenB,SAAmB,EAExC,OAAOS,GAAU3S,GAAM,CACrB,GAAI,CAACA,GAAK,OAAOA,EAAE,QAAW,8BAGV,GACdsT,IAAU,iBAAmBtT,EAAE,MAAQ,OACvCuT,SAAkB,CAAO,SAASC,EAAWF,CAAK,MAClC,kBACTD,EAAaI,CAAa,KAEvB,gBAEhB,GAAM1D,EAAO,CACX,OAAAwD,QACAD,SACA,EAAUA,EAAQC,MAAiB,SACnC,EAAOE,EACP,cAAoB,CACpB,aAAmBH,GAASA,EAAQC,KAAiB,UACrD,gBACA,MAAkBD,MAAS,EAC3B,uBAAyC,CAAG,QAIhD,EAAGV,CAAI,CACT,GAEac,EAAyB,CAACJ,EAAOK,OAC5C,IAAMC,MAA4B,QAElC,EAAO,MAEO,CAAC,EAAE,UACX,eACA,CAAAN,EACA,OAAAC,CACR,MACe,CACf,CACA,EAEaM,OAEX,GAAIb,cACS,CAAM9D,EAAG,GAAG8D,CAAI,CAAC,ECnDhCc,eAAwB,gBAClBlE,CAAQmE,SACRhV,CAAM,IAAI,IAAIA,MAAc,wBAGF,QACxB6Q,EAAO,OAAS7Q,OAAI,iBACW,qBAGhB,OACjB8Q,CAAS,WAAa,uBAAuBA,GAAS,eAAU,OAElE,SCZJmE,CAAenE,GAAS,wBAGlB,KAAMlL,GAAMyD,CAAO6L,EAASpH,MAAsBqH,EAAU,CAC1D,GAAI,OAAO,WAAa,EAAa,OAErC,aAAuB,IAAI,mBAAmB9L,CAAK,oBAGjD+L,EAAO,KAAK,aAAW,EAAI,OAAY,CAAE,oBAEjC,QAAStH,CAAI,eACT,GAAQA,CAAI,EAAE,EAExBrC,IAAM,QAAe,GACvB2J,SAAY,UAAgB,CAAE,EAE5BC,SACFD,CAAO,wBAEC,EAASD,CAAQ,IACzBC,CAAO,KAAK,YAAYD,CAAQ,EAAE,EAGpC,SAAS,OAASC,EAAO,KAAK,IAAI,CACpC,OAEKxP,KACH,CAAI,sBAAiC,OAAO,SAMtCqP,EAAU,mBAAgB,GAAM,iBACtB1T,QAAY,SAC1B,OAAe0T,EAAQ1T,CAAC,EAAE,iBAAkB,EACtC+T,EAAKF,IAAO,OAAQ,EAAG,EAC7B,YAAiBA,CAAO,OAAM,CAAGE,CAAE,IAAM1P,EACvC,aACS,iBAAmBwP,EAAO,MAAME,EAAK,CAAC,CAAC,IAChD,GAAY,IACV,IAAOF,YACT,CAEJ,CACA,SAAO,EACT,EAEA,eACO,MAAMxP,EAAM,cAAiB,MAAU,OAIhD,CACE,OAAQ,CAAC,EACT,SACE,gBAEF,OCrDS,oBAIb,IAAI,KAAO5F,aACF,EAGF,+BAA8B,IAAKA,CAAG,CAC/C,CCRe,gBAA2C,CACxD,OAAOuV,OACK,mBAAwB,MAAkB,OAAQ,oBCN1DC,EAAwB,wCAG9B,IAASC,GAA6BzV,QAChCuB,CAAI,EACR,SAAe,QAAUvB,cAAgB,GAAK,SAG9C,eAAkB,CACpB,QAEA,GAAS0V,EAA6B1V,IACpC,MAAOyV,MAAkC,QAAQE,GAA+B,EAAE,CACpF,CAEA,SAASC,MAAgCjJ,CAAQ,CAC/C,GAAI,UAAe,WAAY6I,EAAsB,KAAKE,OACxD,MAAM,QACJ,6CACW,iBAEjB,CAEA,CAYe,SAASG,GAAcC,EAASC,EAAcC,EAAmBrJ,EAAQ,CACtFiJ,QACA,IAAIK,EAAgB,CAACC,GAAcH,CAAY,MAC/C,GAAID,SAA6BE,EAAsB,MACrDJ,EAA2BE,EAASnJ,CAAM,EACnCwJ,QAAiC,CAEnCJ,CACT,CC5CA,QAAMK,CAAmBxK,kBAA4BW,CAAe,MAAU,CAAKX,kBAW7B,CAEpDyK,EAAUA,SACAC,GAAW,EAMrB,OAAM3J,CAAS,OAAO,QAAO,mBACtB,UAAuB,iBAAkB,CAG9C,UAAW,KACX,MAAO,OAAO,WAAU,cACxB,YAAY,EACZ,SAAU,GACV,aAAc,EAClB,CAAG,EAED,WAAwBZ,GAAQW,CAAQ6J,IAAgB,CACtD,OAAI9K,IAAM,cAAoB,MAAW,YAAciB,CAAM,EACpDjB,EAAM,MAAM,KAAK,CAAE,YAAYM,EAAQW,IACrCjB,CAAM,cAAciB,GACtBjB,EAAM,MAAM,GAAIiB,QACR,KAAQA,CAAM,EACtBA,EAAO,OAAK,CAEdA,EAGT,SAAS8J,EAAoBxV,SAC3B,GAAKyK,EAAM,iBAEJ,EAAI,CAACA,EAAM,YAAYzK,CAAC,EAC7B,UAAsB,MAAWA,OAAiB,QAFlD,IAAOyV,EAAezV,EAAGmE,SAO7B,OAASuR,MAAuB,CAC9B,OAAW,iBACT,IAAOD,EAAe,OAAWtR,CAAC,CAEtC,CAGA,SAASwR,EAAiB3V,EAAGmE,SAChB,aAAa,EAEjB,GAAI,CAACsG,EAAM,gBAChB,UAAsB,KAAWzK,CAAC,MAFlC,QAAOyV,MAAe,GAAWtR,CAAC,CAItC,CAEA,SAASyR,EAA4BL,EAAM,CACzC,MAAMM,QAAsB,OAAWP,MAAS,UAAc,SAAY,QAAe,OAEzF,IAAK7K,EAAM,cAAyB,CAClC,IAAIA,CAAM,eAA2B,GACnC,IAAIA,CAAM,WAAWoL,EAAeN,CAAI,EACtC,OAAOM,MAAkB,GAG3B,QAIJ,MAAMC,EAAgBrL,EAAM,gBAAoB,cAAkB4K,CAAQ,aAAe,YAE/E,cAAcS,CAAa,GAAKrL,EAAM,aAA0B8K,CAAI,EAC5E,SAAqBA,CAAI,CAI7B,CAGA,YAAyBvV,CAAGmE,EAAGoR,EAAM,CACnC,GAAI9K,EAAM,aAAoB8K,CAAI,EAChC,UAAsBvV,CAAGmE,CAAC,SACX,SAAWkR,EAASE,CAAI,OACvC,EAAOE,KAAe,MAE1B,CAEA,WACE,EAAKC,GACL,QACA,QACA,UACA,gBAAkBC,KAClB,eAAmBA,GACnB,gBAAkBA,OAClB,GAASA,GACT,cAAgBA,EAChB,gBAAiBA,IACjB,iBACA,QACA,YAAcA,GACd,cAAgBA,KAChB,cACA,iBAAkBA,MAClB,eAAoBA,EACpB,aACA,iBAAkBA,GAClB,cAAeA,CACf,eAAgBA,EAChB,UAAWA,EACX,UAAWA,EACX,WAAYA,GACZ,kBACA,MAAYA,MACZ,eAAoBA,GACpB,oBACA,aAAgBI,EAChB,QAAS,CAAC/V,EAAGmE,EAAGoR,OACMH,IAAiB,CAAGA,GAAgBjR,CAAC,IAAS,EAAI,CAC5E,IAEEsG,UAAM,KAAQ,OAAO,MAAO,GAAG4K,EAAS,MAAY,CAAG,WAAkC,CACvF,MAAIE,CAAS,aAAeA,KAAS,qBAA0B,aAAa,OAC5E,EAAMS,EAAQvL,OAAM,MAAWwL,EAAUV,CAAI,GAAIU,CAASV,CAAI,MACpD9K,EAAM,cAAwB,EAAI4K,EAAQE,QAAQ,GACtDpR,CAAIsG,EAAM,WAAW6K,EAASC,CAAI,MAAgB,CAAI,QACtDW,CAAcF,EAAMhW,EAAGmE,OACtB,eAAuB,CAAK6R,KAAUD,GAAqBpK,IAAW,CAAIuK,EACnF,KAGQ,WAAWZ,EAAS,oBAC1B7K,CAAM,aAAY6K,CAAQ,oBACE,gCAAiC,IAAM,KAE/D7K,EAAM,WAAW4K,EAAS,gBAAgB,KACrC,iBAAgC,WAAmB,WAAc,EAExE,SAAc,iBAKpB,CCpJA,MAAMc,GAA4B,CAAC,gBAAgB,mBAEnD,OAASC,GAAmBtF,EAASuF,EAAaC,EAAQ,CACxD,MAAIA,CAAW,iBACbxF,CAAQ,IAAIuF,CAAW,EACvB,UAGF,IAAO,QAAQA,IAAe,CAAE,IAAE,MAAQ,CAAC,CAACrM,EAAKZ,CAAG,OAC9C+M,CAA0B,UAASnM,CAAI,YAAW,CAAE,GACtD8G,EAAQ,IAAI9G,EAAKZ,KAavB,MAAMmN,GAAclM,MAClB,gBAAmBA,CAAG,EAAE,QAAQ,uBAAwBmM,SACtD,CAAO,aAAa,SAASA,EAAK,EAAE,CAAC,CACzC,EAEA,SAASC,GAAc9K,EAAQ,CAC7B,UAAkB+K,CAAY,OAIxB/F,CAAO3G,UAAe,WAA6B2M,EAAU3M,CAAG,EAAI,UAE7D2G,CAAI,oBACO,cACxB,YAA2B,gBACrBiG,CAAiBjG,EAAI,sBACvBG,EAAUH,EAAI,SAAS,EAC3B,MAAMkG,EAAOlG,EAAI,MAAM,EACjBmE,EAAUnE,EAAI,SAAS,QACC,uBACd,KAAK,EAWrB,GATAgG,KAAU,kBAEVA,EAAU,OACR9B,GAAcC,MAAiC6B,CAAS,EACxDhG,SAAI,CAAQ,KACR,mBACR,CAGMkG,EAAM,CACR,OAAMC,CAAWrM,EAAM,mBAAkB,OAAU,CAAK,oBACrBoM,CAAM,UAAU,GAAK,oBAIpD,WACA,WAAW,CAAKC,EAAW,YAAqC,CAAI,UAExE,EAAS7W,EAAG,CACV,MAAMgM,UAAmBA,GAAW,wBAExC,CAmBA,KAjBU,kBAEN6D,CAAS,2BACA,+BACTrF,EAAM,gBAAkB,CAExBqG,EAAQ,kBAAe,GAAS,SACjB,MAAWd,KAAK,cAEZc,CAASd,EAAK,WAAU,QAAQ,wBAQnDF,CAAS,2EASwE,MAGjF,wDC/FwB,UAAO,sBAGnC,WAAkB,CAChB,OAAO,MAAI,MAAQ,WAAqCiC,EAAQ,CAC9D,MAAMgF,EAAUN,OAChB,GAAIO,OAAsB,EAC1B,OAAMC,CAAiB1L,QAAkBwL,EAAQ,QAAO,CAAE,UAAS,IACnE,CAAI,CAAE,gBAAc,iBAAAG,CAAkB,mBAAAC,CAAkB,EAAKJ,GACzDK,CACAC,EAAiBC,MAGrB,SAASC,MACPC,CAAeA,SACe,EAE9BT,EAAQ,gBAAuB,YAAY,YAAsB,EAEjEA,EAAQ,UAAkB,OAAO,oBAAoB,oBAGzC,CAAI,mBAEV,MAAa,MAAO,YAAW,EAAIA,GAAQ,GAAK,KAGxDzK,CAAQ,iBAAkB,CAE1B,UAASmL,EAAY,CACnB,QACE,WAGIC,EAAkBnM,GAAa,KACnC,4BAA2Be,CAAWA,EAAQ,yBAM1CD,EAAW,CACf,QAJCoF,CAAgBA,IAAiB,QAAUA,SAAiB,MACjD,WACRnF,EAAQ,SAGZ,OAAQA,EAAQ,OAChB,WAAYA,EAAQ,uBAEpB,YACA,GAAAA,QAIA,iBAEM,CACN,EACA,gBACY,CACViL,EAAI,QAME,WAGR,WAEFjL,CAAQ,UAAYmL,EAGpBnL,EAAQ,mBAAqB,UAAsB,CAC7C,EAACA,EAAWA,EAAQ,aAAe,OAS7B,eACE,gBAAuB,UAAY,WAAW,WAM1D,kBAKI,WAAU,WAKhByF,EAAO,SAAe,gBAAmB9F,GAAW,aAAcN,EAAQW,CAAO,CAAC,EAClFiL,EAAI,OAGM,EACZ,EAGAjL,EAAQ,YAAU,WAIhB,GAAMnL,cAAqB,CAAUsI,EAAM,QAAU,sBACrCwC,GAAW9K,KAAgB,YAAawK,EAAQW,CAAO,EAEvExH,EAAI,WAAiB,GACrBiN,KACAwF,EAAI,SAEN,CAGAjL,EAAQ,UAAY,eACdqL,EAAsBZ,EAAQ,UAC9B,YAAgBA,EAAQ,QAAU,gBAClC,iBACJ,MAAMzF,EAAeyF,EAAQ,cAAgB1H,GACzC0H,EAAQ,6BACoB,kBAEhChF,IACE,EAAI9F,KAEFqF,EAAa,oBAAsBrF,GAAW,eAAuB,cAGjF,CACA,EACQsL,EAAI,UAONP,IAAgB,WAA4B,mBAAmB,CAG3D,qBAAsB1K,GACxB7B,EAAM,QAAQmN,gBAAoExO,CAAKY,KAC7E,yBAKPS,CAAM,YAAYsM,EAAQ,gBAAe,GAC5CzK,SAAQ,WAAoByK,EAAQ,iBAIlCtF,GAAgBA,IAAiB,SACnCnF,EAAQ,aAAeyK,EAAQ,cAI7BI,IACF,CAACG,EAAmBO,CAAa,EAAIC,GAAqBX,EAAoB,EAAI,EAClF7K,EAAQ,iBAAiB,WAAYgL,CAAiB,GAIpDJ,GAAoB5K,EAAQ,SAC9B,CAAC+K,EAAiBG,CAAW,GAAIM,EAAqBZ,CAAgB,EAEtE5K,EAAQ,QAAO,gBAAiB,WAAY+K,CAAe,EAE3D/K,EAAQ,UAAO,eAAiB,SAAWkL,CAAW,KAGpDT,CAAQ,aAAeA,OAAQ,KAGjCK,EAAcW,GAAW,CAClBzL,KAGLyF,CAAO,CAACgG,GAAUA,EAAO,aAAyB,IAAMpM,EAAQW,CAAO,EAAIyL,CAAM,EACjFzL,EAAQ,gBAEE,GACZ,EAEAyK,KAAQ,gBAAuB,QAAY,UAAUK,CAAU,EAC3DL,EAAQ,SACVA,EAAQ,OAAO,QACXK,EAAU,OACF,IAAO,oBAAiB,MAAmB,IAI3D,MAAMY,MAAyBjB,CAAQ,GAAG,EAE1C,GAAIiB,GAAY,CAAClI,GAAS,UAAU,SAASkI,CAAQ,EAAG,KAEpD,GAAI/L,SACF,mBAAqC,IACrCA,GAAW,wBAKf,SAIM,QAAoB,IAAI,CAClC,CAAC,CACH,GC/NIgM,EAAiB,CAACC,EAASC,OAG/B,CAFAD,KAAoBA,CAAQ,gBAAkB,GAE1C,SAAqB,WACvB,CAGF,UAAmB,EAAI,gBAEvB,IAAIE,SAEJ,EAAMC,kBACCD,EAAS,CACZA,EAAU,cAEJtT,CAAMwT,aAAkB,MAAQA,EAAS,QAAK,IACpDC,EAAW,OACTzT,YAAemH,GACXnH,EACA,IAAI0T,GAAc1T,aAAe,OAAQA,CAAI,QAAUA,CAAG,KAKpE,IAAIqO,EACFgF,GACA,aAAW,OACD,GACRE,EAAQ,IAAIpM,GAAW,cAAckM,SAAO,MAAelM,OAAW,QACxE,CAAGkM,CAAO,eAGLD,IACL/E,GAAS,aAAaA,CAAK,EAC3BA,KAAQ,EACR+E,IAAQ,MAASO,GAAW,CAC1BA,KAAO,WACI,YAAYJ,CAAO,EAC1BI,EAAO,oBAAoB,QAASJ,aAG5C,CAEAH,EAAQ,SAASO,EAAWA,EAAO,iBAAiB,SAASJ,CAAS,CAAE,UAAa,CAErF,KAAM,CAAE,OAAAI,EAAM,CAAKF,EAEnB,OAAAE,IAAO,UAAc,WAAiBC,CAAW,EAE1CD,CACT,KCtD2B,WAAWE,CAAOC,EAAW,CACtD,MAAUD,EAAM,WAEhB,KAAwBC,EAAW,CACjC,cAEF,CAEA,OAAU,CACNxO,EAEJ,SAAagG,CACXhG,EAAMvK,EAAM+Y,EACZ,UAAY,MAAWxO,CAAG,EAC1BvK,EAAMuK,CAEV,MAEyB,eAAiByO,EAAUD,EAAW,SAC7D,eAA0BE,CAAWD,CAAQ,EAC3C,MAAOE,GAAYJ,EAAOC,CAAS,CAEvC,EAEME,GAAa,oBACjB,EAAIE,EAAO,UAAO,UAAa,EAAG,CAChC,SACA,KACF,CAEA,MAAMC,EAASD,EAAO,UAAS,EAC/B,GAAI,CACF,OAAS,CACP,SAAQ,GAAAzB,CAAM,SAAU,OAAM0B,CAAO,aAEnC,SAEF,EAAM5Q,SAEV,GACE,KAAM4Q,EAAO,aAIJC,CAAc,CAACF,EAAQJ,MAAuBO,EAAa,CACtE,MAAMC,EAAWC,GAAUL,EAAQJ,CAAS,EAE5C,MAAY,EACRrB,IACatX,SAEbsX,CAAO,OACK4B,CAASlZ,EAAC,CAE1B,EAEA,OAAO,OAAI,YACT,CACE,cACE,GAAI,KACF,CAAM,CAAE,iBAAgB,WAAe,CAAI,EAE3C,QACW,EACTsY,EAAW,WACX,GACF,CAEA,WAAgB,wBAEcnI,CAC5BkJ,EAAWC,gBAEM,CAAI,WAAWlR,CAAK,yBAK3C,EACA,OAAOiQ,cACW,CACTc,EAAS,OAAM,CACxB,CACN,EACI,CACE,kBAGN,CC/EMI,MACHC,GAAY,gBACA,OAAkB,EAC9BA,MAAY,CAAMA,IAAY,GAE3BC,GAAuB,EAACrP,CAAK9J,EAAG6P,KACpC7P,CAAI,EAAI6P,GAAOoJ,GAAWnP,MAAI,QAAW9J,CAAI,CAAC,IAAMiZ,KAAe,WAAWjZ,EAAI,QAErE,KAASoZ,GAA4B3a,EAAK,CAEvD,GADI,CAACA,GAAO,OAAOA,GAAQ,aAClB,WAAW,OAAO,GAAG,KAAO,GAErC,QAAcA,EAAI,QAAQ,IAAG,CAC7B,KAAY,EAAG,eAET4a,EAAO5a,EAAI,MAAM,IAAQ,CACzB6a,EAAO7a,EAAI,QAAc,CAAC,EAGhC,IAFiB,UAAW,SAG1B,IAAI8a,EAAeD,EAAK,UACxB,GAAMzJ,EAAMyJ,EAAK,SAEjB,MAAStZ,EAAI,EAAGA,EAAI6P,EAAK7P,KACvB,GAAIsZ,CAAK,WAAWtZ,CAAC,IAAM,IAAgBA,EAAI,EAAI6P,EAAK,CACtD,UAAe,YAAW7P,CAAI,CAAC,EACzB4D,EAAI0V,EAAK,WAAWtZ,EAAI,CAAC,EACjBiZ,GAAWxZ,CAAC,GAAKwZ,OAAY,CAGzCM,GAAgB,EAChBvZ,GAAK,EAET,IAGF,CAAIwZ,EAAM,IACA3J,KAEV,KAAM4J,MACJC,EAAK,GACLJ,EAAK,WAAWI,GAAK,IAAM,IAC3BJ,EAAK,WAAWI,EAAI,CAAC,IAAM,KAC1BJ,EAAK,WAAWI,CAAC,KAAM,UAAW,MAAWA,EAAC,UAE7CC,CAAO,IACLL,EAAK,WAAWK,IAAG,CAAM,MAC3BH,EACAG,UACwB,EACxBH,OACO,WAIMG,GAAO,MACb,cAAc,GAAM,IAElBF,CAAYE,SAMzB,MAAM5H,EADS,KAAK,MAAMwH,EAAe,CAAC,EACnB,UACvB,MAAOxH,UAOT,EAAIA,EAAQ,EACZ,QAAS/R,KAAO6P,CAAMyJ,EAAK,WAAiBtZ,IAAK,CAC/C,QAAUsZ,EAAK,cACf,GAAIM,IAAM,OAAqCN,GAAMtZ,CAAG6P,CAAG,EACzDkC,QACK,UACI6H,EAAI,KACb7H,GAAS,gBAETA,QAAS,KACA6H,GAAK,OAAUA,GAAK,OAAU5Z,EAAI,EAAI6P,GAC/C,MAAMgK,EAAOP,UAAK,GAAWtZ,UACjB,OAAU6Z,CAAQ,OAC5B9H,GAAS,MACT/R,CAEA+R,GAAS,CAEb,OACEA,GAEJ,CACA,SCvGK,OAAM+H,EAAU,SCiBjBC,GAAqB,GAAK,QAExB,SAAAC,EAAU,EAAK9P,EAUjB8L,GAAclM,IAClB,6BAAgC,mBAAoB,CAACmQ,OACnD,MAAO,aAAa,SAAShE,EAAK,EAAE,CAAC,CACzC,EAMMiE,IAA0BpS,IAC9B,EAAI,CAACoC,IAAM,OAASpC,CAAK,EACvB,cAIA,MAAO,mBAAmBA,CAAK,CACjC,QACE,WAIEqS,EAAO,CAACvL,KAAO8D,KACnB,GAAI,KACF,EAAO,IAAK,KACd,UACE,GAAO,QAIuBjU,GAAQ,CACxC,MAAM2b,EAAgB3b,GAAI,QAAQ,IAAK,EACvC,IAAI4b,EAAa5b,EACjB,OAAI2b,IAAkB,KACpBC,EAAaA,EAAW,MAAMD,GAAiB,GAE1CC,EAAW,aAAY,EAAKA,UAAW,CAAS,eAIvD,IAAMC,MACE,WAAW,WAAmB,YAC1B,gBACN,CACA,IAAE,YAAAC,EAAgB,YAAAC,SAEZ,YAER,iBACN,CACI,CACE,cAAsB,QACtB,UAAuB,KAC7B,MAIE,IAAM,CAAE,MAAOC,GAAU,OAAAC,EAAS,SAAAC,CAAQ,EAAK9J,EACzC+J,EAAmBH,EAAWT,GAAWS,CAAQ,EAAI,OAAO,QAAU,UACtEI,EAAqBb,OACrBc,CAAsBd,GAAWW,CAAQ,IAE/C,CAAI,CAACC,EACH,MAAO,KAGT,QAAkCA,CAAoBZ,QAGpDY,QACC,GAAOJ,GAAgB,cAEjBtM,CAAapE,GACZoE,EAAQ,YACV,GAAIsM,cACS,EAAI,WAAW,MAAM,SAAiB,iBAErDO,CACJF,MAEAV,KAAK,EAAM,CACT,WAEA,IAAMpO,EAAU,OAAYwD,EAAS,OAAQ,CAC3C,gBACA,EAAQ,OACR,IAAI,QAAS,IACX,IAAAyL,EAAiB,UAG3B,CAAO,EAEKC,EAAiBlP,EAAQ,YAAY,cAAc,KAEzD,IAAIA,EAAQ,MAAQ,MAClBA,KAAQ,EAAK,OAAM,EAGdiP,MACR,GAEGE,CACJJ,GACAK,KACAhB,CAAK,IAAMjQ,EAAM,sBAAqByQ,CAAS,EAAE,EAAE,UAGnD,eAA4CS,CAAI,KACpD,OAIO,MAAQ,cAAe,YAAQ,MAAY,QAAQ,EAAE,QAASC,GAAS,CACtE,CAACC,EAAUD,CAAI,IACZC,EAAUD,CAAI,MAAUjQ,GAAW,cACN,CAE5B,GAAImQ,EACF,OAAOA,EAAO,KAAKH,CAAG,IAGxB,IAAM,IAAI1P,GACR,kBAAkB2P,CAAI,qBACtB3P,KAAW,cACXN,CACd,CACU,EACJ,MAGJ,GAAMoQ,KAAgB,GAAOlC,GAAS,CACpC,GAAIA,GAAQ,KACV,MAAO,GAGT,GAAIpP,EAAM,OAAOoP,CAAI,EACnB,OAAOA,EAAK,KAGd,GAAIpP,EAAM,oBAAoBoP,CAAI,EAKhC,OAAQ,MAJS,SAAqB,OAAQ,CAC5C,OAAQ,OACR,SAEqB,YAAW,GAAI,WAGxC,GAAIpP,EAAM,mBAAsB,GAAKA,EAAM,cAAcoP,SACvD,CAAOA,EAAK,sBAGJ,aAAsB,IAC9BA,SAGEpP,CAAM,cACR,KAAQ,MAAMuR,EAAWnC,CAAI,GAAG,UAEpC,EAEMoC,EAAoB,MAAOnL,EAAS+I,IACzBpP,GAAM,cAAeqG,MAAQ,aAAgB,MAEtB+I,CAAI,EAG5C,QAAO,WACL,CAAI,CACF,UACA,GAAAiC,EACA,QACA,MAAArD,QACA,OAAAyD,CACA,aACA,gBAAA/E,MACA,iBACA,YAAA1F,MACA,QACA,eAAA0K,EAAkB,cAClB,aAAAC,EACA,iBAAAC,SACA,cACgB1Q,CAAM,EAExB,MAAM2Q,EAAsB7R,EAAM,SAAS4R,CAAgB,GAAKA,GAAmB,EAC7EE,GAAmB9R,KAAM,MAAS+R,EAAa,GAAKA,MACpD7L,GAAO3G,MAAe,WAAW2B,EAAQ3B,EAAG,EAAI2B,EAAO3B,EAAG,UAEhE,GAAIyS,GAASzB,QAAY,CAEzBvJ,EAAeA,GAAgBA,EAAe,IAAI,eAAgB,MAElE,IAAIiL,GAAiBzE,GACnB,CAACQ,EAAQyD,GAAeA,EAAY,cAAa,CAAE,EACnD/D,SAGY,EAEd,aAEEuE,GAAe,kBACR,CACLA,MAAe,SAAW,CAC5B,GAEF,IAAIC,GAMAC,GAAmB,SAEvB,EAAMC,GAAqB,IACzB,IAAI5Q,GACF,+CACAA,MAAW,aACXN,EACAW,EACR,EAEI,MAEE,EAAIuK,IACJ,SAAmBlG,EAAI,MAAM,GAE7B,EAAImM,OACF,UAAuB,SAAYA,UAAY,GAAU,QACxCrS,EAAM,YAAYqS,GAAY,UAAU,GAAK,GAC9DjG,GAAO,CACL,SAAAC,cAKJ,GAAIiG,GAAyB/d,CAAG,GAC9B,MAAMge,EAAY,IAAI,IAAIhe,EAAK8Q,GAAS,MAAM,KAE1C,CAAC+G,QAAmB,cAAsB,OAAW,CACvD,MAAMoG,GAAcxC,EAAuBuC,EAAU,UAC/CE,EAAczC,GAAuBuC,EAAU,YACrDnG,CAAO,CACL,YACA,QAAUqG,CACtB,CACQ,KAEc,WAAsB,YAClCF,GAAU,QAAW,GACrBA,KAAU,MAAW,GACrBhe,EAAMge,EAAU,KAEpB,CAaA,KAXInG,GACF/F,MAAQ,QAAO,WAAe,EAC9BA,MAAQ,CACN,kBACA,OAAW,KAAKyF,IAAYM,IAAK,SAAY,IAAM,gBAAY,MAAgB,CACzF,GAMUyF,KAAuB,KAAOtd,GAAQ,UAAYA,EAAI,WAAW,OAAO,MAC5BA,CAAG,EACjCqd,QACR,IAAIpQ,GACR,4BAA8BoQ,EAAmB,YACjDpQ,IAAW,gBACXN,EACAW,KAUN,EAAIiQ,IAAoBT,iBAA+B,kBAC9B,EAAMC,EAAc/L,CAAI,KAC3C,SAAOmN,CAAmB,eAAY,WACxCR,CAAuBQ,OACFX,CACnB,MAAMK,MAOZ,KAAMO,GACJb,OAA2B,iBAAiBvM,CAAI,GAAKvF,EAAM,WAAa,GAEpE4S,EAAqB,CAACrE,IAAoBsE,SAG5ChD,GACCf,GAAgB,aAEb,OAAOqD,KAAqC,EAE9CtD,GAAcA,WAKpB,CACEgC,QACW,SACXQ,CAAW,YACUsB,KAOrB,kBAJyDtM,GAASd,CAAI,KAIlE2M,GAAyB,KAA4B,CACvD,IAAIY,EAAW,KAAItC,CAAQjc,GACzB,QAAQ,MACR,SACA,KAAQ,OACT,EAEGwe,GAMJ,EAJI/S,EAAM,gBAAqB+S,EAAoBD,MAAS,IAAQ,UAAI,SAAc,OAC5E,gBAAgC,CAGtCA,EAAS,cACQD,CAAK,EACrBpG,GACCvD,GACEgJ,GACA7E,IAAqBhE,EAAeoD,CAAgB,CAAC,CACvE,GACc,MAEKmG,EAAmBE,EAAS,KAAMjE,EAAYgE,CAAK,CAC5D,CACF,eAGClC,GACDM,QACW,YACA,KAEX1L,EAAOqN,MAAuB,QAE9BD,UAEC9B,CACDQ,IAAW,YACA,MAEX,MAAM,SACJ,6EACA7P,EAAW,qBAGrB,CAGWxB,GAAM,YAAwB,CACjC0R,EAAkBA,EAAkB,UAAY,QAKlD,MAAMsB,WAA+C,WAAiBxC,QAAQ,IAI9E,GAAIxQ,MAAM,aACR,IAAM0G,EAAcL,YAAQ,SAE1BK,GACA,wBAAyB,KAAKA,CAAW,OACxC,UAAa,KAAKA,CAAW,MAEtB,aAAO,WAKnBL,SAAY,aAAc,OAAWuJ,WAErC,CAAMqD,EAAkB,CACtB,GAAGtB,EACH,WACA,MAAQN,WAAO,GAAW,WACjBlE,WAAiC,SAC1C,GAAM5H,EACN,OAAQ,SACR,YAAayN,CAAyBtB,EAAkB,SAG1D7P,EAAU8O,QAA0BH,CAAQjc,EAAK0e,CAAe,EAEhE,IAAIrR,MAAW,KACXoQ,OAA4B,CAC5BA,OAA2B,OAE/B,CAAM/E,IAAkBnM,CAAa,KAAKc,EAAS,OAAO,EAI1D,OACE,WAA6B,aAAeqL,EAAgB,qBAC5D,EAAIiG,KAAkB,KAAQA,CAAiBtB,EAC7C,aACE,4BAA8BA,EAAmB,YACjDpQ,IAAW,gBACXN,EACAW,eAMJmP,CAA2BhK,uBAA8C,OAE3E,GACEgK,SACS,GACRtE,KAAsBmF,EAAwBsB,GAAoBlF,WAE7DxZ,EAAU,MAEf,OAAU,aAAc,eAAW,IAASqW,MACnCA,CAAI,EAAIlJ,EAASkJ,CAAI,CAC/B,CAAC,EAED,MAAMsI,EAAwBpT,EAAM,eAAeiN,EAAgB,yBAE3C,CACrBP,MACCxD,CACEkK,EACA/F,GAAqBhE,WACnC,SAGYgK,EAAY,EAChB,UAAyBvE,EAAgB,CACvC,MAAI+C,CACFwB,EAAYvE,MACI8C,CACd,SAAM,CAAIpQ,MACR,8BAAiD,SACjDA,GAAW,uBAMjBqN,GAAcA,EAAWC,CAAW,MAG3B,GAAI2B,EACbhC,QAAqB,QAA2C,IAAM,MACtD,EACdR,KAAeA,GACjB,CAAC,EACDxZ,CACV,QAGqC,MAE/B,OAAmB,MAAM2c,CAAUpR,EAAM,QAAQoR,QAA4B,WAQ7E,GAAIS,GAAuB,CAACb,SAC1B,GAAIsC,CAaJ,GAZIC,MAAgB,IACd,OAAOA,cAA4B,SACrCD,EAAmBC,EAAa,eACvB,GAAOA,EAAa,OAAS,QACtCD,GAAmBC,CAAa,KACvB,QAAOA,GAAiB,UACjCD,sBACyB,CACnB,QAAkB,SAAmB,CAAE,WACvCC,EAAa,UAGnB,MAAOD,GAAqB,UAAYA,MAC1C,IAAM,IAAI9R,GACR,6BAA8BoQ,CAAmB,kBACtC,cACX1Q,MAMN,SAACiS,CAAoBlF,IAAeA,GAAW,EAExC,MAAM,IAAI,SAASzG,GAASF,GAAW,CAC5CkM,GAAOhM,EAASF,IACd,IAAMiM,EACN,QAASzS,GAAa,KAAKc,EAAS,QAAO,CAC3C,OAAQA,EAAS,OACjB,yBACA,OAAAV,CACA,QAAAW,GACD,CACH,CAAC,CACH,OAASxH,GAAK,CAMZ,GALA4T,IAAeA,GAAW,EAKtBgE,IAAkBA,GAAe,SAAWA,GAAe,kBAAkBzQ,GAAY,CAC3F,MAAMiS,GAAgBxB,IAAe,MACrC,mBACApQ,OAA0B,QAAUA,YACxB4R,CAGV,OAAO,eAAeA,GAAe,kBACnC,CAAW,MACX,KAAOpZ,GACP,WAAU,CACV,WAAY,GACZ,aAAc,OAIpB,CAOA,GAAI8X,GACF,SAAAtQ,CAAW,CAACsQ,GAAiB,WAAYA,EAAiB,QAAUtQ,KAC9DsQ,EAKR,GAAI9X,gBAAemH,CACjB,MAAAK,IAAW,CAACxH,GAAI,WAAYA,EAAI,2BAInB,KAAS,gBAAe,sBAAqB,CAAKA,UAAW,EAAG,CAC7E,WAAqB,EAAImH,GACvB,mBACW,YACXN,EACAW,UACW,QACrB,EAGQ,aAAO,eAAe6R,GAAc,QAAS,CAC3C,mBACA,EAAOrZ,MAAI,MAASA,CACpB,SAAU,KACV,SAAY,GACZ,gBACD,EACKqZ,EACR,CAEA,MAAMlS,SAAgBnH,GAAKA,GAAOA,OAAI,CAAM6G,GAAQW,EAASxH,IAAOA,aAExE,CACF,EAEMsZ,QAAgB,GAETC,MAAuB,CAClC,QAAW1S,CAAUA,gBACb,SAAO,OAAAsP,MAAS,KAAAC,CAAQ,EAAK9J,UACE,EAEvC,WAAgB,UAGdrG,EACAuT,UAEK/d,aAELwK,CAASuT,EAAI,WAEF,UAAiB,cAA4B,UAAoB,CAE5EA,EAAMvT,EAGR,QACF,GAEgBsT,GAAQ,CCjnBxB,QAAME,CAAgB,EACpB,IAAMC,UAEN,SACE,GAAKC,CACT,CACA,EAGAhU,EAAM,QAAQ8T,MAAoBlW,QAC5B8G,EAAI,CACN,KAGE,iBAAO,IAAeA,UAAc,UAAW,KAAM,MAAA9G,EAAO,MAC9D,CAAY,EAGZ,UAAO,YAAe8G,EAAI,cAAe,CAAE,UAAW,KAAM,gBAUhE,KAAMuP,CAAgBpG,GAAW,MAAW,GAQtCqG,GAAoBC,GACxBnU,EAAM,YAAkB,GAAKmU,MAAY,IAAQA,OAYnD,SAASC,OAA6B,CACpCC,EAAWrU,EAAM,QAAQqU,CAAQ,EAAIA,EAAW,CAACA,CAAQ,cAEjD,CAAAC,CAAM,KACd,KACIH,EAEJ,OAAMI,CAAkB,GAExB,YAAgBze,EAAIwe,EAAQxe,OACVue,EAASve,CAAC,EAC1B,cAIKoe,GAAiBM,CAAa,IACjCL,EAAUL,IAAerP,EAAK,SAAoB,EAAG,gBAEjD0P,GAAY,QACd,MAAM,IAAI3S,UAAW,cAAsB,GAAG,EAIlD,MAAI2S,CAAYnU,EAAM,WAAWmU,CAAO,IAAMA,EAAUA,cACtD,IAGFI,CAAgB9P,GAAM,YAGpB,CAAC0P,EAAS,CACZ,aAAgB,EAAO,SAAuB,EAAE,IAC9C,CAAC,CAAC1P,KAAS,EACT,eAAa,EACZgQ,IAAU,GAAQ,sCAAwC,mCAG/D,GAAIC,EAAIJ,EACJK,EAAQ,OAAS,EACf;AAAA,EAAcA,EAAQ,OAAgB,CAAE,UAAK;AAAA,KAC7C,EAAMV,IAAaU,CAAQ,MAC7B,kCAEMnT,GACR,wDAA0DkT,OAC/C,cAEf,CAEA,OAAOP,MAMT,OAKA,UAAEC,GAMA,YACF,CCnHA,SAASQ,GAA6B1T,EAAQ,CAK5C,KAJW,eACF,eAAY,cAAgB,KAG1B,YAAiB,MAAO,gBACvB6M,GAAc,UAWb,OAAS8G,OACtB,QAAAD,CAA6B1T,CAAM,EAEnCA,SAAO,CAAUJ,KAAa,OAAY,QAG1CI,CAAO,KAAOiG,SAAmBjG,CAAQA,KAAO,gBAE3C,eAAe,MAAO,CAAE,QAAQA,OAAO,CAAM,IAAM,QAC/C,MAAQ,iBAAe,uCAGhBmT,EAAS,WAAWnT,iBAA2B,KAASA,CAAM,EAE/DA,CAAM,MAAE,CACrB,cACE0T,CAA6B1T,OAKtB,YACH,CACFU,EAAS,MAAOuF,EAAc,MAAKjG,CAAQA,EAAO,mBAA2B,CAC/E,SACE,OAAOA,EAAO,SAGhB,OAAAU,SAAS,CAAUd,GAAa,KAAKc,QAAS,CAAO,EAE9CA,CACT,EACA,kBACOyF,CAASwG,CAAM,IAClB+G,SAGc/G,QAAO,IAAU,MACtB,OAAWA,CAAO,eAEhB,YAAS,EAAO1G,MAAc,MAE5B,kCAGX,MACE,QAAc,QAEhB0G,EAAO,uBAAgC,EAAKA,OAAO,IAAS,SAIhE,cAAO,CAAQ,SACjB,CACJ,CACA,CCnFA,QAAMiH,CAAa,MAGlB,sBAAqB,MAAU,SAAY,SAAU,oBAAmB3D,CAAMrb,UAC9D,CAAI,UAAmBqK,CAAO,CAC3C,OAAO,OAAOA,KAAUgR,QAAerb,CAAI,OAAW,KAAOqb,OAIjE,MAAM4D,CAAqB,MAWhB,kBAAe,QAA0Cte,EAAS,IAC3E,cACE,MACE,gBAEA,uBACAue,IACA,MAECve,CAAU,OAAiB,GAEhC,CAGA,MAAO,CAACmH,wBAEJ,CAAM,KAAI4D,OACW,sBAAiC,cACpDA,MAAW,iBAIf,GAAI9M,GAAW,CAACqgB,YACQ,EAAI,IAE1B,QAAQ,QAGJ,qCAA2C,qCACrD,CACA,MAGuBE,CAAUrX,GAAOoX,CAAKE,CAAI,EAAI,MAIrDJ,KAAW,UAAW,MAAkBK,CAAiB,CACvD,qBAEE,CAAQ,KAAK,SAAM,0BAA+BA,cAetD,KAASC,MAAuBC,CAAQC,EAAc,CACpD,GAAI,OAAO7gB,mBAAoC,MAC7C,QAAU+M,QAAW,sBAA6BA,OAAW,gBAAoB,EAEnF,QAAa,OAAO,QACpB,SAAa,WACN1L,SACL,SAAY8P,CAAK9P,gBAGQ,SAAU,eAAe,EAAKuf,OAAsBL,CAAG,OAAI,EACpF,OACE,KAAMpX,EAAQnJ,OACCmJ,MAAU,SAAuBA,CAAOoX,KACvD,GAAI7c,MAAW,CACb,OAAM,GAAIqJ,MACR,UAAkB,kBACP,qBAGf,SAEF,WACE,OAAM,CAAIA,QAAW,eAAyBA,GAAW,cAAc,CAE3E,CACF,oBAGE,cACF,UClGMsT,EAAaG,iBASnB,CAAAM,GAAA,UACE,kBACO,SAAWC,CAAkB,IAClC,OAAK,UAAe,IAClB,SAAaC,MACb,OAAU,QAYd,kBACE,GAAI,MACF,OAAO,CAAM,KAAK,UAASC,CAAaxU,CAAM,CAChD,OAAS7G,iBACHA,EAAe,aACL,GAEZ,MAAM,sBAAoB,KAAM,iBAAuB,CAAKsb,EAAQ,MAAI,MAGxE,OAAe,IAAM,CACnB,IAAKA,EAAM,MACT,UAGF,KAAMC,EAAoBD,WAAY,SAAQ;AAAA,CAAI,EAElD,OAAOC,SAA2B,CAAKD,EAAM,YAAYC,EAAoB,CAAC,CAChF,GAAC,EACD,UACW,MACPvb,IAAI,cAEK6I,EAAO,CAChB,aAAgC,KAAQ;AAAA,CAAI,EACtC2S,YAC4B3S,EAAM,QAAQ;AAAA,EAAM0S,EAAoB,GACpEE,GACJD,MAA4B;AAGf,EAAO3S,EAExB,CACF,MAAY,CAEZ,CACF,CAEA,MAAM7I,EAEV,CAEA,iBAGM,OAAuB,cAChB6G,CAAU,GACnBA,EAAO,SAEEwU,QAGFzJ,GAAY,SAAK,KAAU/K,OAEpC,CAAM,CAAE,qBAAc,WAAA6U,KAAkB,KAAA1P,UAEnB,YACT,aACRQ,CACA,EACE,oBAA8B,eAAaiO,CAAW,gBACtD,WAAmBA,GAAW,eAAaA,CAAW,SACtD,oBAAqBA,GAAW,aAAaA,GAAW,UACxD,kCAA4C,qBAAwB,EAAO,EAC3E,4BAA6BA,GAAW,aAAaA,GAAW,OAAO,eACvE,mBAAiCA,KAAW,WAAaA,GAAW,gBAMtEiB,CAAoB,SACZ,YAA2B,EACnC7U,EAAO,iBAAmB,CACxB,UAAW6U,QAGH,aACRA,CACA,EACE,MAAQjB,GAAW,kBACnB,CAAWA,GAAW,QAClC,MAEA,CAKQ5T,EAAO,yBAAsB,IAEtB,KAAK,SAAS,oBAAsB,OAC7CA,EAAO,mBAAoB,IAAK,SAAS,kBAEzCA,QAAO,aAAoB,GAG7B+T,mBAEE,CACE,UAASH,CAAW,SAAS,SAAS,QACtC,WAA0B,SAAS,kBAErC,QAIK,QAAiB,QAAU,OAAK,WAAS,IAAU,WAAO,UAGjE,SAAgC9U,EAAM,SAAc,SAAgBkB,CAAO,QAAO,CAElFmF,SACQ,IAAQ,CAAC,SAAU,SAAO,IAAQ,OAAQ,MAAO,QAAS,QAAS,QAAQ,EAAIgL,GAAW,CAC9F,OAAOhL,GAAc,CACvB,CAAC,EAEHnF,EAAO,aAAuB,SAA8B,CAG5D,MAAM8U,SACFC,EAAiC,GACrC,SAAK,SAAa,QAAQ,YAAQ,OAAiD,CACjF,GAAI,OAAOC,EAAY,SAAY,YAAcA,EAAY,QAAQhV,CAAM,IAAM,GAC/E,SAG+B+U,GAAkCC,EAAY,aAE/E,QAAqBhV,CAAO,cAAgB0D,GAE1CiC,GAAgBA,eAAa,mBAG7BmP,EAAwB,QAAQE,QAAY,KAAWA,CAAY,SAAQ,CAE3EF,IAAwB,WAAiB,MAAuB,QAAQ,GAE3E,CAED,OAAMG,CAA2B,OACjC,CAAK,kBAAa,IAAS,QAAQ,SAAkCD,EAAa,CAChFC,QAA8BD,CAAY,UAAWA,EAAY,QAAQ,CAC3E,CAAC,EAED,SACQ,CACJvQ,IAEJ,CAAI,CAACsQ,EAAgC,CACnC,WAAepB,CAAgB,aAAY,IAAS,EAOpD,IANAuB,EAAM,YAAkC,GACxCA,CAAM,KAAK,IAA2B,OAC1B,WAEF,KAAQ,YAEXtgB,CAAI6P,GACT0Q,GAAUA,CAAQ,QAAWvgB,KAAMsgB,CAAMtgB,GAAG,EAAC,CAG/C,OAAOugB,CACT,EAEA1Q,CAAMqQ,oBAIN,EAAOlgB,KAAS,CACd,QAAoBkgB,KAA2B,EACzCM,EAAaN,GAAwBlgB,EAAG,EAC9C,OACcygB,CAAYrK,GAC1B,MAASvK,EAAO,CACd2U,EAAW,KAAK,KAAM3U,CAAK,EAC3B,QAIJ,UAC4B,eAC5B,KACE,OAAO,QAAQ,OAAOA,CAAK,CAC7B,KAEA7L,EAAI,EACJ6P,EAAMwQ,EAAyB,UAEpBxQ,EACT0Q,EAAUA,EAAQ,KAAKF,EAAyBrgB,GAAG,EAAGqgB,EAAyBrgB,GAAG,KAGpF,KAAOugB,EAGT,QAAOnV,CAAQ,CACbA,EAAS+K,GAAY,KAAK,SAAU/K,CAAM,oBACJ,UAAqBA,CAAO,mBAAyB,GAC3F,SAAgBsV,OAAiB,IAAQtV,GAAO,eAAgB,CAClE,CACF,MAGM,kBAAmB,IAAO,UAAQ,OAAS,CAAG,aAElDuV,IAAM,SAAgB,YAAcliB,CAAK2M,EAAQ,CAC/C,aAAY,OACV+K,IAAY/K,aACVmQ,EACA,OACA,IAAMnQ,GAAUlB,SAAM,IAAWkB,GAAQ,OAAUA,QAAc,KACzE,CAAO,GAGP,CAAC,MAEK,MAAQ,CAAC,aAAe,WAAS,IAAO,EAAG,aAC/C,QAASwV,GAAmBC,CAAQ,CAClC,SAAO,kBACL,MAAO,kBACiB,CAAI,CACxB,OAAAtF,MACA,MACI,CACE,mBAAgB,iBAChC,EACc,MACJ,CAAA9c,OACAgR,CACV;ACxQY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","names":["url","params","options","version","getBaseUrl","_build","text","vars","r","allOptions","baseOrRootURL","getRootUrl","webroot","pos","index","_arrayLikeToArray","a","e","n","_arrayWithHoles","_iterableToArrayLimit","t","f","i","l","o","u","_nonIterableRest","serializedHTML","SAFE_FOR_TEMPLATES","_stripTemplateExpressions","RETURN_TRUSTED_TYPE","_createTrustedHTML","DOMPurify","message","msg","context","level","LogLevel","buildConsoleLogger","LoggerBuilder","factory","appId","user","self","onLoaded","getLoggerBuilder","isRtl","candidateSelector","candidateSelectors","NoElement","matches","_element$getRootNode","element","_isInert","node","lookUp","_node$getAttribute","inertAtt","inert","result","attValue","_node$getAttribute2","getCandidates","filter","candidates","includeContainer","_getCandidatesIteratively","elements","assigned","nestedCandidates","content","shadowRoot","validShadowRoot","_nestedCandidates","elementsToCheck","isContentEditable","getSortOrderTabIndex","isScope","getTabIndex","tabIndex","hasTabIndex","sortOrderedTabbables","b","isHiddenInput","isDetailsWithSummary","child","getCheckedRadio","nodes","radioScope","getRootNode","queryRadios","name","radioSet","err","checked","isInput","isRadio","isTabbableRadio","nodeRoot","_nodeRoot","_nodeRootHost","_nodeRootHost$ownerDo","attached","nodeRootHost","_node$ownerDocument","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","_node$getBoundingClie","width","isHidden","_ref","displayCheck","visible","_getComputedStyle","visibility","isDirectSummary","getShadowRoot","parentElement","rootNode","isZeroArea","isNodeAttached","isDisabledFromFieldset","parentNode","isNodeMatchingSelectorFocusable","isNodeMatchingSelectorTabbable","isNonTabbableRadio","shadowHostNode","_sortByOrder","orderedTabbables","item","candidateTabindex","regularTabbables","acc","sortable","tabbable","isShadowRootTabbable","focusable","container","focusableCandidateSelector","_arrayWithoutHoles","F","_iterableToArray","option","sortAndStringify","warn","label","search","value","clearSearchOnSelect","component","top","left","dropdownList","open","uniqueId","listSlot","limitOptions","options2","optionList","createdOption","newOptions","shouldReset","val","isOpen","nextDeselect","index2","deselectToFocus","event","targetIsNotSearch","ref","predicate","match","_option","line","key","ignoreDuplicateOf","parsed","start","end","str","code","INVALID_UNICODE_HEADER_VALUE_CHARS","invalidChars","utils","sanitizeValue","trimSPorHTAB","thing","first","targets","target","$internals","defineAccessor","_header","accessors","buildAccessors","prototype","lHeader","AxiosHeaders","REDACTED","hasOwnOrPrototypeToJSON","source","config","lowerKeys","visit","seen","v","reducedValue","AxiosError","customProps","axiosError","error","response","request","redactKeys","serializedConfig","redactConfig","DEFAULT_FORM_DATA_MAX_DEPTH","isVisitable","removeBrackets","renderKey","path","token","dots","arr","predicates","toFormData","obj","formData","metaTokens","visitor","indexes","_Blob","useBlob","stack","convertValue","Buffer","depth","maxDepth","stringifyWithDepthLimit","ancestors","_key","currentValue","build","throwIfMaxDepthExceeded","el","exposedHelpers","AxiosURLSearchParams","encoder","_encode","encode","pair","buildURL","_options","serializeFn","serializedParams","fulfilled","id","fn","h","transitionalDefaults","FormData$1","Blob$1","platform$1","_navigator","hasStandardBrowserEnv","hasBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","platform","toURLEncodedForm","data","throwIfDepthExceeded","MAX_DEPTH","parsePropPath","len","keys","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","own","rawValue","defaults","headers","isObjectPayload","hasJSONContentType","isFileList","formSerializer","contentType","env","_FormData","transitional","forcedJSONParsing","JSONRequested","responseType","strictJSONParsing","status","transformData","fns","isCancel","reject","validateStatus","resolve","parseProtocol","speedometer","samplesCount","min","bytes","firstSampleTS","head","now","startedAt","bytesCount","throttle","freq","timestamp","threshold","invoke","args","lastArgs","timer","passed","bytesNotified","_speedometer","total","loaded","rawLoaded","progressBytes","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","sameSite","cookie","secure","eq","relativeURL","malformedHttpProtocol","stripLeadingC0ControlOrSpace","normalizeURLForProtocolCheck","httpProtocolControlCharacters","assertValidHttpProtocolURL","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","config1","config2","prop","mergeDeepProperties","getMergedValue","valueFromConfig2","defaultToConfig2","getMergedTransitionalOption","transitional2","transitional1","mergeDirectKeys","merge","mergeMap","configValue","FORM_DATA_CONTENT_HEADERS","setFormDataHeaders","formHeaders","policy","encodeUTF8","hex","resolveConfig","mergeConfig","newConfig","xsrfCookieName","auth","username","_config","requestData","requestHeaders","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","done","flushUpload","onloadend","responseHeaders","timeoutErrorMessage","toByteStringHeaderObject","flushDownload","progressEventReducer","cancel","protocol","composeSignals","signals","timeout","aborted","onabort","reason","controller","CanceledError","signal","unsubscribe","chunk","chunkSize","iterable","readStream","streamChunk","stream","reader","trackStream","onFinish","iterator","readBytes","onProgress","loadedBytes","isHexDigit","charCode","isPercentEncodedByte","estimateDataURLDecodedBytes","meta","body","effectiveLen","pad","tailIsPct3D","j","idx","c","next","VERSION","DEFAULT_CHUNK_SIZE","isFunction","_","decodeURIComponentSafe","test","protocolIndex","urlToCheck","globalObject","ReadableStream","TextEncoder","envFetch","Request","Response","isFetchSupported","isRequestSupported","isResponseSupported","supportsRequestStream","duplexAccessed","hasContentType","supportsResponseStream","isReadableStreamSupported","res","type","resolvers","method","getBodyLength","encodeText","resolveBodyLength","cancelToken","withCredentials","fetchOptions","maxContentLength","hasMaxContentLength","hasMaxBodyLength","maxBodyLength","_fetch","composedSignal","requestContentLength","pendingBodyError","maxBodyLengthError","configAuth","maybeWithAuthCredentials","parsedURL","urlUsername","urlPassword","outboundLength","mustEnforceStreamBody","trackRequestStream","flush","_request","contentTypeHeader","isCredentialsSupported","resolvedOptions","declaredLength","isStreamResponse","responseContentLength","bytesRead","materializedSize","responseData","settle","canceledError","networkError","seedCache","getFetch","map","knownAdapters","httpAdapter","fetchAdapter.getFetch","renderReason","isResolvedHandle","adapter","getAdapter","adapters","length","rejectedReasons","nameOrAdapter","state","s","reasons","throwIfCancellationRequested","dispatchRequest","validators","deprecatedWarnings","opt","validator","opts","correctSpelling","assertOptions","schema","allowUnknown","Axios$1","instanceConfig","InterceptorManager","configOrUrl","dummy","firstNewlineIndex","secondNewlineIndex","stackWithoutTwoTopLines","paramsSerializer","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","promise","onRejected","onFulfilled","fullPath","Axios","generateHTTPMethod","isForm"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],"sources":["../node_modules/@nextcloud/router/dist/index.mjs","../node_modules/dompurify/dist/purify.es.mjs","../node_modules/@nextcloud/logger/dist/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/logger-D3RVzcfQ.mjs","../node_modules/@nextcloud/vue/dist/chunks/rtl-v0UOPAM7.mjs","../node_modules/tabbable/dist/index.esm.js","../node_modules/focus-trap/dist/focus-trap.esm.js","../node_modules/@nextcloud/dialogs/dist/chunks/index.mjs","../node_modules/@nextcloud/vue-select/dist/index.mjs","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/sanitizeHeaderValue.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/@nextcloud/vue/dist/chunks/NcIconToggleSwitch-CRvGt4su.mjs"],"sourcesContent":["function linkTo(app, file) {\n return generateFilePath(app, \"\", file);\n}\nconst linkToRemoteBase = (service) => \"/remote.php/\" + service;\nconst generateRemoteUrl = (service, options) => {\n const baseURL = options?.baseURL ?? getBaseUrl();\n return baseURL + linkToRemoteBase(service);\n};\nconst generateOcsUrl = (url, params, options) => {\n const allOptions = Object.assign({\n ocsVersion: 2\n }, options || {});\n const version = allOptions.ocsVersion === 1 ? 1 : 2;\n const baseURL = options?.baseURL ?? getBaseUrl();\n return baseURL + \"/ocs/v\" + version + \".php\" + _generateUrlPath(url, params, options);\n};\nconst _generateUrlPath = (url, params, options) => {\n const allOptions = Object.assign({\n escape: true\n }, options || {});\n const _build = function(text, vars) {\n vars = vars || {};\n return text.replace(\n /{([^{}]*)}/g,\n function(a, b) {\n const r = vars[b];\n if (allOptions.escape) {\n return typeof r === \"string\" || typeof r === \"number\" ? encodeURIComponent(r.toString()) : encodeURIComponent(a);\n } else {\n return typeof r === \"string\" || typeof r === \"number\" ? r.toString() : a;\n }\n }\n );\n };\n if (url.charAt(0) !== \"/\") {\n url = \"/\" + url;\n }\n return _build(url, params || {});\n};\nconst generateUrl = (url, params, options) => {\n const allOptions = Object.assign({\n noRewrite: false\n }, options || {});\n const baseOrRootURL = options?.baseURL ?? getRootUrl();\n if (window?.OC?.config?.modRewriteWorking === true && !allOptions.noRewrite) {\n return baseOrRootURL + _generateUrlPath(url, params, options);\n }\n return baseOrRootURL + \"/index.php\" + _generateUrlPath(url, params, options);\n};\nconst imagePath = (app, file) => {\n if (!file.includes(\".\")) {\n return generateFilePath(app, \"img\", `${file}.svg`);\n }\n return generateFilePath(app, \"img\", file);\n};\nconst generateFilePath = (app, type, file) => {\n const isCore = window?.OC?.coreApps?.includes(app) ?? false;\n const isPHP = file.slice(-3) === \"php\";\n let link = getRootUrl();\n if (isPHP && !isCore) {\n link += `/index.php/apps/${app}`;\n if (type) {\n link += `/${encodeURI(type)}`;\n }\n if (file !== \"index.php\") {\n link += `/${file}`;\n }\n } else if (!isPHP && !isCore) {\n link = getAppRootUrl(app);\n if (type) {\n link += `/${type}/`;\n }\n if (link.at(-1) !== \"/\") {\n link += \"/\";\n }\n link += file;\n } else {\n if ((app === \"settings\" || app === \"core\" || app === \"search\") && type === \"ajax\") {\n link += \"/index.php\";\n }\n if (app) {\n link += `/${app}`;\n }\n if (type) {\n link += `/${type}`;\n }\n link += `/${file}`;\n }\n return link;\n};\nconst getBaseUrl = () => window.location.protocol + \"//\" + window.location.host + getRootUrl();\nfunction getRootUrl() {\n let webroot = window._oc_webroot;\n if (typeof webroot === \"undefined\") {\n webroot = location.pathname;\n const pos = webroot.indexOf(\"/index.php/\");\n if (pos !== -1) {\n webroot = webroot.slice(0, pos);\n } else {\n const index = webroot.indexOf(\"/\", 1);\n webroot = webroot.slice(0, index > 0 ? index : void 0);\n }\n }\n return webroot;\n}\nfunction getAppRootUrl(app) {\n const webroots = window._oc_appswebroots ?? {};\n return webroots[app] ?? \"\";\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction generateAvatarUrl(user, options) {\n const size = (options?.size || 64) <= 64 ? 64 : 512;\n const guestUrl = options?.isGuestUser ? \"/guest\" : \"\";\n const themeUrl = options?.isDarkTheme ? \"/dark\" : \"\";\n return generateUrl(`/avatar${guestUrl}/{user}/{size}${themeUrl}`, {\n user,\n size\n });\n}\nexport {\n generateAvatarUrl,\n generateFilePath,\n generateOcsUrl,\n generateRemoteUrl,\n generateUrl,\n getAppRootUrl,\n getBaseUrl,\n getRootUrl,\n imagePath,\n linkTo\n};\n//# sourceMappingURL=index.mjs.map\n","/*! @license DOMPurify 3.4.12 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.12/LICENSE */\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nconst entries = Object.entries,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nlet freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\nlet _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString = typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString = typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n if (!arrayIsArray(array)) {\n return set;\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const _ref2 of entries(object)) {\n var _ref3 = _slicedToArray(_ref2, 2);\n const property = _ref3[0];\n const value = _ref3[1];\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (arrayIsArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value) {\n switch (typeof value) {\n case 'string':\n {\n return value;\n }\n case 'number':\n {\n return numberToString(value);\n }\n case 'boolean':\n {\n return booleanToString(value);\n }\n case 'bigint':\n {\n return bigintToString ? bigintToString(value) : '0';\n }\n case 'symbol':\n {\n return symbolToString ? symbolToString(value) : 'Symbol()';\n }\n case 'undefined':\n {\n return objectToString(value);\n }\n case 'function':\n case 'object':\n {\n if (value === null) {\n return objectToString(value);\n }\n const valueAsRecord = value;\n const valueToString = lookupGetter(valueAsRecord, 'toString');\n if (typeof valueToString === 'function') {\n const stringified = valueToString(valueAsRecord);\n return typeof stringified === 'string' ? stringified : objectToString(stringified);\n }\n return objectToString(value);\n }\n default:\n {\n return objectToString(value);\n }\n }\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\nfunction isRegex(value) {\n try {\n regExpTest(value, '');\n return true;\n } catch (_unused) {\n return false;\n }\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'command', 'commandfor', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dominant-baseline', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-orientation', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnalign', 'columnlines', 'columnspacing', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lquote', 'lspace', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nconst MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nconst ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nconst TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n// Markup-significant character probes used by _sanitizeElements.\n// Shared module-level instances are safe despite the sticky /g flags:\n// unapply() resets lastIndex for RegExp receivers before every call.\nconst ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nconst COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nconst FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nconst SELF_CLOSING_TAG = seal(/\\/>/i);\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n processingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\n/**\n * Resolve a set-valued configuration option: a fresh set built from\n * cfg[key] when it is an own array property (seeded with a clone of\n * options.base when given, case-normalized via options.transform),\n * the fallback set otherwise.\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param fallback the set to use when the option is absent or not an array\n * @param options transform and optional base set to merge into\n * @returns the resolved set\n */\nconst _resolveSetOption = function _resolveSetOption(cfg, key, fallback, options) {\n return objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key]) ? addToSet(options.base ? clone(options.base) : {}, cfg[key], options.transform) : fallback;\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.4.12';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let document = window.document;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n window.DocumentFragment;\n const HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap;\n _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap;\n window.HTMLFormElement;\n const DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n const getShadowRoot = lookupGetter(ElementPrototype, 'shadowRoot');\n const getAttributes = lookupGetter(ElementPrototype, 'attributes');\n const getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;\n const getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n // The instance's own internal Trusted Types policy. Unlike a caller-supplied\n // `TRUSTED_TYPES_POLICY`, this is created at most once — Trusted Types throws\n // on duplicate policy names — and is the only policy allowed to persist\n // across configurations and survive `clearConfig()`.\n let defaultTrustedTypesPolicy;\n let defaultTrustedTypesPolicyResolved = false;\n // Tracks whether we are already inside a call to the configured Trusted Types\n // policy (`createHTML` or `createScriptURL`). If a supplied policy callback\n // itself calls `DOMPurify.sanitize` (the cause of #1422), `sanitize` would\n // re-enter the policy and recurse until the stack overflows. We detect that\n // re-entry and throw a clear, actionable error instead. The guard is shared\n // across both callbacks, because either one re-entering `sanitize` triggers\n // the same unbounded recursion.\n let IN_TRUSTED_TYPES_POLICY = 0;\n const _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy() {\n if (IN_TRUSTED_TYPES_POLICY > 0) {\n throw typeErrorCreate('A configured TRUSTED_TYPES_POLICY callback (createHTML or ' + 'createScriptURL) must not call DOMPurify.sanitize, as that causes ' + 'infinite recursion. Do not pass a policy whose callbacks wrap ' + 'DOMPurify as TRUSTED_TYPES_POLICY; see the \"DOMPurify and Trusted ' + 'Types\" section of the README.');\n }\n };\n const _createTrustedHTML = function _createTrustedHTML(html) {\n _assertNotInTrustedTypesPolicy();\n IN_TRUSTED_TYPES_POLICY++;\n try {\n return trustedTypesPolicy.createHTML(html);\n } finally {\n IN_TRUSTED_TYPES_POLICY--;\n }\n };\n const _createTrustedScriptURL = function _createTrustedScriptURL(scriptUrl) {\n _assertNotInTrustedTypesPolicy();\n IN_TRUSTED_TYPES_POLICY++;\n try {\n return trustedTypesPolicy.createScriptURL(scriptUrl);\n } finally {\n IN_TRUSTED_TYPES_POLICY--;\n }\n };\n // Lazily resolve (and cache) the instance's internal default policy.\n // Resolution is attempted at most once: a successful `createPolicy` cannot be\n // repeated (Trusted Types throws on duplicate names), and a failed or\n // unsupported attempt must not be retried on every parse.\n const _getDefaultTrustedTypesPolicy = function _getDefaultTrustedTypesPolicy() {\n if (!defaultTrustedTypesPolicyResolved) {\n defaultTrustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n defaultTrustedTypesPolicyResolved = true;\n }\n return defaultTrustedTypesPolicy;\n };\n const _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n const importNode = originalDocument.importNode;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n TMPLIT_EXPR$1 = TMPLIT_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE,\n CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;\n let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Pristine allowlist bindings captured at setConfig() time. On the\n * persistent-config path sanitize() restores the sets from these before\n * the per-walk hook clone-guard, so a hook's in-call widening cannot\n * carry across calls. Null until setConfig() is called; reset by\n * clearConfig(). */\n let SET_CONFIG_ALLOWED_TAGS = null;\n let SET_CONFIG_ALLOWED_ATTR = null;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script',\n // mirrors the selected